Skip to content

pantoken / packages/utils/src / makeResolver

ฟังก์ชัน: makeResolver()

makeResolver(base, options?): (value) => string

เบต้า

สร้าง resolver ที่ขยายการอ้างอิง var(--x) ให้เป็นค่าต้นใบที่เฉพาะเจาะจงโดยเทียบกับ base (และ any overrides). กับ mode จะยุบ light-dark() ให้เป็นสาขานั้น; หากไม่มี จะปล่อย light-dark() ไว้ตามเดิม.

พารามิเตอร์

base

readonly Token[]

ชุดโทเค็นที่ใช้ในการแก้ไขการอ้างอิง

options?

ResolveOptions = {}

ResolveOptions.

คืนค่า

ฟังก์ชันที่แก้ไขสตริงค่า

(value) => string

ตัวอย่าง

ขยายสายอ้างอิงให้เป็นค่าปลายทางที่เฉพาะเจาะจง

ts
import { makeResolver } from "@pantoken/utils";
import type { Token } from "@pantoken/model";

const ir: Token[] = [
  { name: "--instui-leaf", syntax: "<color>", inherits: true, value: "#0374B5" },
  { name: "--instui-brand", syntax: "*", inherits: true, value: "var(--instui-leaf)" },
];

const resolve = makeResolver(ir);
resolve("var(--instui-brand)"); // → "#0374B5"

ยุบ light-dark() ด้วยโหมด หรือคงไว้หากไม่มีโหมด

ts
import { makeResolver } from "@pantoken/utils";
import type { Token } from "@pantoken/model";

const ir: Token[] = [
  { name: "--instui-bg", syntax: "*", inherits: true, value: "light-dark(#fff, #000)" },
];

makeResolver(ir)("var(--instui-bg)");                 // → "light-dark(#fff, #000)"
makeResolver(ir, { mode: "light" })("var(--instui-bg)"); // → "#fff"
makeResolver(ir, { mode: "dark" })("var(--instui-bg)");  // → "#000"

จัดชั้นการแทนที่ที่ชนะเมื่อเกิดการชนกันของชื่อ

ts
import { makeResolver } from "@pantoken/utils";
import type { Token } from "@pantoken/model";

const ir: Token[] = [
  { name: "--instui-leaf", syntax: "<color>", inherits: true, value: "#0374B5" },
  { name: "--instui-brand", syntax: "*", inherits: true, value: "var(--instui-leaf)" },
];
const overrides: Token[] = [
  { name: "--instui-leaf", syntax: "<color>", inherits: true, value: "#000" },
];

makeResolver(ir, { overrides })("var(--instui-brand)"); // → "#000"