@yamada-ui/react 2.2.3-dev-20260622141401 → 2.2.3-dev-20260624122859
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/accordion/use-accordion.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/use-autocomplete.cjs.map +1 -1
- package/dist/cjs/components/calendar/use-calendar.cjs +1 -1
- package/dist/cjs/components/calendar/use-calendar.cjs.map +1 -1
- package/dist/cjs/components/carousel/carousel.cjs.map +1 -1
- package/dist/cjs/components/chart/chart.cjs.map +1 -1
- package/dist/cjs/components/chart/use-polar-chart.cjs.map +1 -1
- package/dist/cjs/components/checkbox/checkbox.cjs.map +1 -1
- package/dist/cjs/components/checkbox/use-checkbox-group.cjs.map +1 -1
- package/dist/cjs/components/checkbox-card/checkbox-card.cjs.map +1 -1
- package/dist/cjs/components/collapse/collapse.cjs.map +1 -1
- package/dist/cjs/components/color-picker/use-color-picker.cjs.map +1 -1
- package/dist/cjs/components/color-swatch/color-swatch-group.cjs.map +1 -1
- package/dist/cjs/components/date-picker/date-picker.cjs.map +1 -1
- package/dist/cjs/components/date-picker/use-date-picker.cjs +1 -1
- package/dist/cjs/components/date-picker/use-date-picker.cjs.map +1 -1
- package/dist/cjs/components/editable/use-editable.cjs.map +1 -1
- package/dist/cjs/components/field/field.cjs.map +1 -1
- package/dist/cjs/components/file-input/file-input.cjs.map +1 -1
- package/dist/cjs/components/flip/flip.cjs.map +1 -1
- package/dist/cjs/components/highlight/highlight.cjs.map +1 -1
- package/dist/cjs/components/indicator/indicator.cjs.map +1 -1
- package/dist/cjs/components/infinite-scroll-area/use-infinite-scroll.cjs.map +1 -1
- package/dist/cjs/components/input/input-group.cjs.map +1 -1
- package/dist/cjs/components/list/list.cjs.map +1 -1
- package/dist/cjs/components/menu/use-menu.cjs.map +1 -1
- package/dist/cjs/components/native-select/use-native-select.cjs.map +1 -1
- package/dist/cjs/components/native-table/native-table.cjs.map +1 -1
- package/dist/cjs/components/notice/notice.cjs.map +1 -1
- package/dist/cjs/components/number-input/use-number-input.cjs.map +1 -1
- package/dist/cjs/components/pagination/pagination.cjs.map +1 -1
- package/dist/cjs/components/pagination/use-pagination.cjs.map +1 -1
- package/dist/cjs/components/picture/picture.cjs.map +1 -1
- package/dist/cjs/components/pin-input/pin-input.cjs.map +1 -1
- package/dist/cjs/components/pin-input/use-pin-input.cjs.map +1 -1
- package/dist/cjs/components/qr-code/use-qr-code.cjs.map +1 -1
- package/dist/cjs/components/radio/use-radio-group.cjs.map +1 -1
- package/dist/cjs/components/segmented-control/segmented-control.cjs.map +1 -1
- package/dist/cjs/components/select/use-select.cjs.map +1 -1
- package/dist/cjs/components/show/show.cjs.map +1 -1
- package/dist/cjs/components/sidebar/sidebar.cjs.map +1 -1
- package/dist/cjs/components/sidebar/use-sidebar.cjs.map +1 -1
- package/dist/cjs/components/simple-grid/simple-grid.cjs.map +1 -1
- package/dist/cjs/components/stack/z-stack.cjs.map +1 -1
- package/dist/cjs/components/steps/steps.cjs.map +1 -1
- package/dist/cjs/components/steps/use-steps.cjs.map +1 -1
- package/dist/cjs/components/table/table.cjs.map +1 -1
- package/dist/cjs/components/tabs/tabs.cjs.map +1 -1
- package/dist/cjs/components/toggle/use-toggle-group.cjs.map +1 -1
- package/dist/cjs/components/toggle/use-toggle.cjs.map +1 -1
- package/dist/cjs/components/tree/tree.cjs.map +1 -1
- package/dist/cjs/components/tree/use-tree.cjs.map +1 -1
- package/dist/cjs/core/components/create-component.cjs.map +1 -1
- package/dist/cjs/core/components/props.cjs.map +1 -1
- package/dist/cjs/core/components/use-component-style.cjs.map +1 -1
- package/dist/cjs/core/css/animation.cjs.map +1 -1
- package/dist/cjs/core/css/at-rule.cjs.map +1 -1
- package/dist/cjs/core/css/calc.cjs.map +1 -1
- package/dist/cjs/core/css/color-mix.cjs.map +1 -1
- package/dist/cjs/core/css/config.cjs.map +1 -1
- package/dist/cjs/core/css/css.cjs.map +1 -1
- package/dist/cjs/core/css/gradient.cjs.map +1 -1
- package/dist/cjs/core/css/grid.cjs.map +1 -1
- package/dist/cjs/core/css/transition.cjs.map +1 -1
- package/dist/cjs/core/css/utils.cjs.map +1 -1
- package/dist/cjs/core/system/breakpoint.cjs.map +1 -1
- package/dist/cjs/core/system/color-mode-provider.cjs.map +1 -1
- package/dist/cjs/core/system/create-system.cjs.map +1 -1
- package/dist/cjs/core/system/environment-provider.cjs.map +1 -1
- package/dist/cjs/core/system/storage-manager.cjs.map +1 -1
- package/dist/cjs/core/system/storage-script.cjs.map +1 -1
- package/dist/cjs/core/system/use-system-color-mode.cjs.map +1 -1
- package/dist/cjs/core/system/var.cjs.map +1 -1
- package/dist/cjs/hooks/use-animation/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-breakpoint/use-breakpoint-value.cjs.map +1 -1
- package/dist/cjs/hooks/use-breakpoint/use-breakpoint.cjs.map +1 -1
- package/dist/cjs/hooks/use-clickable/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-clipboard/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-controllable-state/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-counter/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-descendants/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-focus/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-local-storage/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-mounted/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-outside-click/index.cjs.map +1 -1
- package/dist/cjs/providers/i18n-provider/i18n-provider.cjs.map +1 -1
- package/dist/cjs/utils/children.cjs.map +1 -1
- package/dist/cjs/utils/dom.cjs.map +1 -1
- package/dist/cjs/utils/store.cjs.map +1 -1
- package/dist/esm/components/accordion/use-accordion.js.map +1 -1
- package/dist/esm/components/autocomplete/use-autocomplete.js.map +1 -1
- package/dist/esm/components/calendar/use-calendar.js +1 -1
- package/dist/esm/components/calendar/use-calendar.js.map +1 -1
- package/dist/esm/components/carousel/carousel.js.map +1 -1
- package/dist/esm/components/chart/chart.js.map +1 -1
- package/dist/esm/components/chart/use-polar-chart.js.map +1 -1
- package/dist/esm/components/checkbox/checkbox.js.map +1 -1
- package/dist/esm/components/checkbox/use-checkbox-group.js.map +1 -1
- package/dist/esm/components/checkbox-card/checkbox-card.js.map +1 -1
- package/dist/esm/components/collapse/collapse.js.map +1 -1
- package/dist/esm/components/color-picker/use-color-picker.js.map +1 -1
- package/dist/esm/components/color-swatch/color-swatch-group.js.map +1 -1
- package/dist/esm/components/date-picker/date-picker.js.map +1 -1
- package/dist/esm/components/date-picker/use-date-picker.js +1 -1
- package/dist/esm/components/date-picker/use-date-picker.js.map +1 -1
- package/dist/esm/components/editable/use-editable.js.map +1 -1
- package/dist/esm/components/field/field.js.map +1 -1
- package/dist/esm/components/file-input/file-input.js.map +1 -1
- package/dist/esm/components/flip/flip.js.map +1 -1
- package/dist/esm/components/highlight/highlight.js.map +1 -1
- package/dist/esm/components/indicator/indicator.js.map +1 -1
- package/dist/esm/components/infinite-scroll-area/use-infinite-scroll.js.map +1 -1
- package/dist/esm/components/input/input-group.js.map +1 -1
- package/dist/esm/components/list/list.js.map +1 -1
- package/dist/esm/components/menu/use-menu.js.map +1 -1
- package/dist/esm/components/native-select/use-native-select.js.map +1 -1
- package/dist/esm/components/native-table/native-table.js.map +1 -1
- package/dist/esm/components/notice/notice.js.map +1 -1
- package/dist/esm/components/number-input/use-number-input.js.map +1 -1
- package/dist/esm/components/pagination/pagination.js.map +1 -1
- package/dist/esm/components/pagination/use-pagination.js.map +1 -1
- package/dist/esm/components/picture/picture.js.map +1 -1
- package/dist/esm/components/pin-input/pin-input.js.map +1 -1
- package/dist/esm/components/pin-input/use-pin-input.js.map +1 -1
- package/dist/esm/components/qr-code/use-qr-code.js.map +1 -1
- package/dist/esm/components/radio/use-radio-group.js.map +1 -1
- package/dist/esm/components/segmented-control/segmented-control.js.map +1 -1
- package/dist/esm/components/select/use-select.js.map +1 -1
- package/dist/esm/components/show/show.js.map +1 -1
- package/dist/esm/components/sidebar/sidebar.js.map +1 -1
- package/dist/esm/components/sidebar/use-sidebar.js.map +1 -1
- package/dist/esm/components/simple-grid/simple-grid.js.map +1 -1
- package/dist/esm/components/stack/z-stack.js.map +1 -1
- package/dist/esm/components/steps/steps.js.map +1 -1
- package/dist/esm/components/steps/use-steps.js.map +1 -1
- package/dist/esm/components/table/table.js.map +1 -1
- package/dist/esm/components/tabs/tabs.js.map +1 -1
- package/dist/esm/components/toggle/use-toggle-group.js.map +1 -1
- package/dist/esm/components/toggle/use-toggle.js.map +1 -1
- package/dist/esm/components/tree/tree.js.map +1 -1
- package/dist/esm/components/tree/use-tree.js.map +1 -1
- package/dist/esm/core/components/create-component.js.map +1 -1
- package/dist/esm/core/components/props.js.map +1 -1
- package/dist/esm/core/components/use-component-style.js.map +1 -1
- package/dist/esm/core/css/animation.js.map +1 -1
- package/dist/esm/core/css/at-rule.js.map +1 -1
- package/dist/esm/core/css/calc.js.map +1 -1
- package/dist/esm/core/css/color-mix.js.map +1 -1
- package/dist/esm/core/css/config.js.map +1 -1
- package/dist/esm/core/css/css.js.map +1 -1
- package/dist/esm/core/css/gradient.js.map +1 -1
- package/dist/esm/core/css/grid.js.map +1 -1
- package/dist/esm/core/css/transition.js.map +1 -1
- package/dist/esm/core/css/utils.js.map +1 -1
- package/dist/esm/core/system/breakpoint.js.map +1 -1
- package/dist/esm/core/system/color-mode-provider.js.map +1 -1
- package/dist/esm/core/system/create-system.js.map +1 -1
- package/dist/esm/core/system/environment-provider.js.map +1 -1
- package/dist/esm/core/system/storage-manager.js.map +1 -1
- package/dist/esm/core/system/storage-script.js.map +1 -1
- package/dist/esm/core/system/use-system-color-mode.js.map +1 -1
- package/dist/esm/core/system/var.js.map +1 -1
- package/dist/esm/hooks/use-animation/index.js.map +1 -1
- package/dist/esm/hooks/use-breakpoint/use-breakpoint-value.js.map +1 -1
- package/dist/esm/hooks/use-breakpoint/use-breakpoint.js.map +1 -1
- package/dist/esm/hooks/use-clickable/index.js.map +1 -1
- package/dist/esm/hooks/use-clipboard/index.js.map +1 -1
- package/dist/esm/hooks/use-controllable-state/index.js.map +1 -1
- package/dist/esm/hooks/use-counter/index.js.map +1 -1
- package/dist/esm/hooks/use-descendants/index.js.map +1 -1
- package/dist/esm/hooks/use-focus/index.js.map +1 -1
- package/dist/esm/hooks/use-local-storage/index.js.map +1 -1
- package/dist/esm/hooks/use-mounted/index.js.map +1 -1
- package/dist/esm/hooks/use-outside-click/index.js.map +1 -1
- package/dist/esm/providers/i18n-provider/i18n-provider.js.map +1 -1
- package/dist/esm/utils/children.js.map +1 -1
- package/dist/esm/utils/dom.js.map +1 -1
- package/dist/esm/utils/store.js.map +1 -1
- package/dist/types/components/autocomplete/autocomplete.style.d.ts +1 -1
- package/dist/types/components/breadcrumb/breadcrumb.style.d.ts +1 -1
- package/dist/types/components/calendar/calendar.style.d.ts +2 -2
- package/dist/types/components/carousel/carousel.style.d.ts +2 -2
- package/dist/types/components/date-picker/date-picker.style.d.ts +1 -1
- package/dist/types/components/field/use-field-props.d.ts +1 -1
- package/dist/types/components/file-button/use-file-button.d.ts +2 -2
- package/dist/types/components/file-input/use-file-input.d.ts +2 -2
- package/dist/types/components/menu/menu.style.d.ts +2 -2
- package/dist/types/components/progress/use-progress.d.ts +6 -6
- package/dist/types/components/rating/rating.style.d.ts +2 -2
- package/dist/types/components/select/select.style.d.ts +1 -1
- package/dist/types/components/steps/steps.style.d.ts +1 -1
- package/dist/types/components/tabs/tabs.style.d.ts +1 -1
- package/dist/types/components/tree/tree.style.d.ts +1 -1
- package/dist/types/components/tree/use-tree.d.ts +2 -2
- package/dist/types/hooks/use-clickable/index.d.ts +2 -2
- package/dist/types/providers/i18n-provider/i18n-provider.d.ts +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"at-rule.js","names":[],"sources":["../../../../src/core/css/at-rule.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { Transform } from \"./utils\"\nimport { filterUndefined, isArray, toArray, toKebabCase } from \"../../utils\"\nimport { tokenToVar } from \"./utils\"\n\nexport const generateAtRule =\n (identifier: string): Transform =>\n (values, { system }) => {\n if (!isArray(values)) return values\n\n return values.reduce<Dict>(\n (\n prev,\n {\n type,\n name,\n css,\n style,\n h,\n height,\n maxH,\n maxHeight,\n maxW,\n maxWidth,\n minH,\n minHeight,\n minW,\n minWidth,\n prefersColorMode,\n query,\n w,\n width,\n ...rest\n },\n ) => {\n width ??= w\n minWidth ??= minW\n maxWidth ??= maxW\n height ??= h\n minHeight ??= minH\n maxHeight ??= maxH\n\n if (!query)
|
|
1
|
+
{"version":3,"file":"at-rule.js","names":[],"sources":["../../../../src/core/css/at-rule.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { Transform } from \"./utils\"\nimport { filterUndefined, isArray, toArray, toKebabCase } from \"../../utils\"\nimport { tokenToVar } from \"./utils\"\n\nexport const generateAtRule =\n (identifier: string): Transform =>\n (values, { system }) => {\n if (!isArray(values)) return values\n\n return values.reduce<Dict>(\n (\n prev,\n {\n type,\n name,\n css,\n style,\n h,\n height,\n maxH,\n maxHeight,\n maxW,\n maxWidth,\n minH,\n minHeight,\n minW,\n minWidth,\n prefersColorMode,\n query,\n w,\n width,\n ...rest\n },\n ) => {\n width ??= w\n minWidth ??= minW\n maxWidth ??= maxW\n height ??= h\n minHeight ??= minH\n maxHeight ??= maxH\n\n if (!query)\n if (style) {\n query = toArray(style)\n .map((style) => `style(${style})`)\n .join(\" and \")\n } else {\n const resolvedRest = filterUndefined<Dict>({\n height,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n prefersColorScheme: prefersColorMode,\n width,\n ...rest,\n })\n\n query = Object.entries(resolvedRest)\n .map(([key, value]) => {\n value = tokenToVar(system)(\"sizes\", value)\n\n return `(${toKebabCase(key)}: ${value})`\n })\n .join(\" and \")\n }\n\n const conditions = [`@${identifier}`]\n\n if (type) conditions.push(type)\n if (name) conditions.push(name)\n if (query) conditions.push(query)\n\n prev[conditions.join(\" \")] = css\n\n return prev\n },\n {},\n )\n }\n"],"mappings":";;;AAKA,MAAa,kBACV,gBACA,QAAQ,EAAE,aAAa;CACtB,IAAI,EAAA,GAAA,cAAA,QAAA,CAAS,MAAM,GAAG,OAAO;CAE7B,OAAO,OAAO,QAEV,MACA,EACE,MACA,MACA,KACA,OACA,GACA,QACA,MACA,WACA,MACA,UACA,MACA,WACA,MACA,UACA,kBACA,OACA,GACA,OACA,GAAG,WAEF;EACH,UAAU;EACV,aAAa;EACb,aAAa;EACb,WAAW;EACX,cAAc;EACd,cAAc;EAEd,IAAI,CAAC,OACH,IAAI,OACF,SAAA,GAAA,cAAA,QAAA,CAAgB,KAAK,CAAC,CACnB,KAAK,UAAU,SAAS,MAAM,EAAE,CAAC,CACjC,KAAK,OAAO;OACV;GACL,MAAM,gBAAA,GAAA,cAAA,gBAAA,CAAqC;IACzC;IACA;IACA;IACA;IACA;IACA,oBAAoB;IACpB;IACA,GAAG;GACL,CAAC;GAED,QAAQ,OAAO,QAAQ,YAAY,CAAC,CACjC,KAAK,CAAC,KAAK,WAAW;IACrB,QAAQ,WAAW,MAAM,CAAC,CAAC,SAAS,KAAK;IAEzC,OAAO,KAAA,GAAA,cAAA,YAAA,CAAgB,GAAG,EAAE,IAAI,MAAM;GACxC,CAAC,CAAC,CACD,KAAK,OAAO;EACjB;EAEF,MAAM,aAAa,CAAC,IAAI,YAAY;EAEpC,IAAI,MAAM,WAAW,KAAK,IAAI;EAC9B,IAAI,MAAM,WAAW,KAAK,IAAI;EAC9B,IAAI,OAAO,WAAW,KAAK,KAAK;EAEhC,KAAK,WAAW,KAAK,GAAG,KAAK;EAE7B,OAAO;CACT,GACA,CAAC,CACH;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calc.js","names":[],"sources":["../../../../src/core/css/calc.ts"],"sourcesContent":["import type { ThemeToken } from \"../system\"\nimport type { Transform } from \"./utils\"\nimport { isNumeric } from \"../../utils\"\nimport {\n getCSSFunction,\n globalValues,\n isCSSFunction,\n isCSSToken,\n splitValues,\n} from \"./utils\"\n\nconst OPERATORS = [\"+\", \"-\", \"*\", \"/\"]\n\nfunction getValue(value: string | undefined, fallbackValue = \"\"): Transform {\n return function (token, { system, ...rest }) {\n if (!value) return fallbackValue\n\n const prevent = isCSSFunction(value)\n\n if (prevent) {\n return generateCalc(token)(value, { system, ...rest })\n } else {\n if (isNumeric(value)) return value\n\n const resolvedToken = `${token}.${value}`\n\n if (isCSSToken(system)(resolvedToken))
|
|
1
|
+
{"version":3,"file":"calc.js","names":[],"sources":["../../../../src/core/css/calc.ts"],"sourcesContent":["import type { ThemeToken } from \"../system\"\nimport type { Transform } from \"./utils\"\nimport { isNumeric } from \"../../utils\"\nimport {\n getCSSFunction,\n globalValues,\n isCSSFunction,\n isCSSToken,\n splitValues,\n} from \"./utils\"\n\nconst OPERATORS = [\"+\", \"-\", \"*\", \"/\"]\n\nfunction getValue(value: string | undefined, fallbackValue = \"\"): Transform {\n return function (token, { system, ...rest }) {\n if (!value) return fallbackValue\n\n const prevent = isCSSFunction(value)\n\n if (prevent) {\n return generateCalc(token)(value, { system, ...rest })\n } else {\n if (isNumeric(value)) return value\n\n const resolvedToken = `${token}.${value}`\n\n if (isCSSToken(system)(resolvedToken))\n return system.cssMap[resolvedToken]!.ref\n else return value\n }\n }\n}\n\nfunction isOperator(value: string) {\n return new RegExp(`\\\\s[${OPERATORS.join(\"\\\\\")}]\\\\s`).test(value)\n}\n\nexport function generateCalc(token: ThemeToken): Transform {\n return function (value, options) {\n if (value == null || globalValues.has(value)) return value\n\n const prevent = isCSSFunction(value)\n\n if (!prevent) return value\n\n let { type, values } = getCSSFunction(value)\n\n if (!type || !values) return value\n\n switch (type) {\n case \"calc\": {\n const computedValues = splitValues(\n values,\n (char, prev, next) => isOperator(`${prev}${char}${next}`),\n true,\n ).map((value) => {\n if (value && OPERATORS.includes(value)) return value\n\n return getValue(value)(token, options)\n })\n\n return `calc(${computedValues.join(\" \")})`\n }\n\n case \"min\":\n case \"max\": {\n let [firstValue, secondValue, ...otherValues] = splitValues(values)\n\n firstValue = getValue(firstValue, \"100%\")(token, options)\n secondValue = getValue(secondValue, \"100%\")(token, options)\n otherValues = otherValues.map((value) =>\n getValue(value)(token, options),\n )\n\n return (\n `${type}(` +\n `${firstValue}, ${secondValue}` +\n (otherValues.length ? `, ${otherValues.join(\", \")}` : \"\") +\n \")\"\n )\n }\n\n case \"clamp\": {\n let [min, preferred, max] = splitValues(values)\n\n if (!max) {\n max = preferred\n preferred = \"\"\n }\n\n min = getValue(min)(token, options)\n preferred = getValue(preferred, \"100%\")(token, options)\n max = getValue(max)(token, options)\n\n return `clamp(${min}, ${preferred}, ${max})`\n }\n\n case \"minmax\": {\n let [min, max] = splitValues(values)\n\n min = getValue(min)(token, options)\n max = getValue(max)(token, options)\n\n return `minmax(${min}, ${max})`\n }\n\n case \"fit-content\": {\n let [value] = splitValues(values)\n\n value = getValue(value)(token, options)\n\n return `fit-content(${value})`\n }\n\n default:\n return value\n }\n }\n}\n"],"mappings":";;;AAWA,MAAM,YAAY;CAAC;CAAK;CAAK;CAAK;AAAG;AAErC,SAAS,SAAS,OAA2B,gBAAgB,IAAe;CAC1E,OAAO,SAAU,OAAO,EAAE,QAAQ,GAAG,QAAQ;EAC3C,IAAI,CAAC,OAAO,OAAO;EAInB,IAFgB,cAAc,KAEpB,GACR,OAAO,aAAa,KAAK,CAAC,CAAC,OAAO;GAAE;GAAQ,GAAG;EAAK,CAAC;OAChD;GACL,KAAA,GAAA,cAAA,UAAA,CAAc,KAAK,GAAG,OAAO;GAE7B,MAAM,gBAAgB,GAAG,MAAM,GAAG;GAElC,IAAI,WAAW,MAAM,CAAC,CAAC,aAAa,GAClC,OAAO,OAAO,OAAO,cAAc,CAAE;QAClC,OAAO;EACd;CACF;AACF;AAEA,SAAS,WAAW,OAAe;CACjC,OAAO,IAAI,OAAO,OAAO,UAAU,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,KAAK;AACjE;AAEA,SAAgB,aAAa,OAA8B;CACzD,OAAO,SAAU,OAAO,SAAS;EAC/B,IAAI,SAAS,QAAQ,aAAa,IAAI,KAAK,GAAG,OAAO;EAIrD,IAAI,CAFY,cAAc,KAEnB,GAAG,OAAO;EAErB,IAAI,EAAE,MAAM,WAAW,eAAe,KAAK;EAE3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,OAAO;EAE7B,QAAQ,MAAR;GACE,KAAK,QAWH,OAAO,QAVgB,YACrB,SACC,MAAM,MAAM,SAAS,WAAW,GAAG,OAAO,OAAO,MAAM,GACxD,IACF,CAAC,CAAC,KAAK,UAAU;IACf,IAAI,SAAS,UAAU,SAAS,KAAK,GAAG,OAAO;IAE/C,OAAO,SAAS,KAAK,CAAC,CAAC,OAAO,OAAO;GACvC,CAE4B,CAAC,CAAC,KAAK,GAAG,EAAE;GAG1C,KAAK;GACL,KAAK,OAAO;IACV,IAAI,CAAC,YAAY,aAAa,GAAG,eAAe,YAAY,MAAM;IAElE,aAAa,SAAS,YAAY,MAAM,CAAC,CAAC,OAAO,OAAO;IACxD,cAAc,SAAS,aAAa,MAAM,CAAC,CAAC,OAAO,OAAO;IAC1D,cAAc,YAAY,KAAK,UAC7B,SAAS,KAAK,CAAC,CAAC,OAAO,OAAO,CAChC;IAEA,OACE,GAAG,KAAK,GACL,WAAW,IAAI,iBACjB,YAAY,SAAS,KAAK,YAAY,KAAK,IAAI,MAAM,MACtD;GAEJ;GAEA,KAAK,SAAS;IACZ,IAAI,CAAC,KAAK,WAAW,OAAO,YAAY,MAAM;IAE9C,IAAI,CAAC,KAAK;KACR,MAAM;KACN,YAAY;IACd;IAEA,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,OAAO;IAClC,YAAY,SAAS,WAAW,MAAM,CAAC,CAAC,OAAO,OAAO;IACtD,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,OAAO;IAElC,OAAO,SAAS,IAAI,IAAI,UAAU,IAAI,IAAI;GAC5C;GAEA,KAAK,UAAU;IACb,IAAI,CAAC,KAAK,OAAO,YAAY,MAAM;IAEnC,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,OAAO;IAClC,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,OAAO;IAElC,OAAO,UAAU,IAAI,IAAI,IAAI;GAC/B;GAEA,KAAK,eAAe;IAClB,IAAI,CAAC,SAAS,YAAY,MAAM;IAEhC,QAAQ,SAAS,KAAK,CAAC,CAAC,OAAO,OAAO;IAEtC,OAAO,eAAe,MAAM;GAC9B;GAEA,SACE,OAAO;EACX;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-mix.js","names":[],"sources":["../../../../src/core/css/color-mix.ts"],"sourcesContent":["import type { System } from \"../system\"\nimport type { TransformOptions } from \"./utils\"\nimport { isArray, isString } from \"../../utils\"\nimport { getColorSchemeVar, isColorScheme } from \"../system\"\nimport { getCSSFunction, globalValues, splitValues, tokenToVar } from \"./utils\"\n\nconst DEFAULT_METHOD = \"in srgb\"\n\nconst methods: { [key: string]: string } = {\n \"a98-rgb\": \"in a98-rgb\",\n \"display-p3\": \"in display-p3\",\n lab: \"in lab\",\n oklab: \"in oklab\",\n \"prophoto-rgb\": \"in prophoto-rgb\",\n rec2020: \"in rec2020\",\n srgb: \"in srgb\",\n \"srgb-linear\": \"in srgb-linear\",\n xyz: \"in xyz\",\n \"xyz-d50\": \"in xyz-d50\",\n \"xyz-d65\": \"in xyz-d65\",\n}\n\nfunction getColor(system: System) {\n return function (value: string | undefined, fallbackColor?: string) {\n if (!isString(value) || !value) return \"\"\n\n let [color, percent, ...rest] = value.split(\" \").filter(Boolean)\n\n if (rest.length) return value\n\n if (color?.startsWith(\"colors.\")) color = color.replace(\"colors.\", \"\")\n\n if (isColorScheme(color))
|
|
1
|
+
{"version":3,"file":"color-mix.js","names":[],"sources":["../../../../src/core/css/color-mix.ts"],"sourcesContent":["import type { System } from \"../system\"\nimport type { TransformOptions } from \"./utils\"\nimport { isArray, isString } from \"../../utils\"\nimport { getColorSchemeVar, isColorScheme } from \"../system\"\nimport { getCSSFunction, globalValues, splitValues, tokenToVar } from \"./utils\"\n\nconst DEFAULT_METHOD = \"in srgb\"\n\nconst methods: { [key: string]: string } = {\n \"a98-rgb\": \"in a98-rgb\",\n \"display-p3\": \"in display-p3\",\n lab: \"in lab\",\n oklab: \"in oklab\",\n \"prophoto-rgb\": \"in prophoto-rgb\",\n rec2020: \"in rec2020\",\n srgb: \"in srgb\",\n \"srgb-linear\": \"in srgb-linear\",\n xyz: \"in xyz\",\n \"xyz-d50\": \"in xyz-d50\",\n \"xyz-d65\": \"in xyz-d65\",\n}\n\nfunction getColor(system: System) {\n return function (value: string | undefined, fallbackColor?: string) {\n if (!isString(value) || !value) return \"\"\n\n let [color, percent, ...rest] = value.split(\" \").filter(Boolean)\n\n if (rest.length) return value\n\n if (color?.startsWith(\"colors.\")) color = color.replace(\"colors.\", \"\")\n\n if (isColorScheme(color)) color = getColorSchemeVar(system)(color)\n else color = tokenToVar(system)(\"colors\", color, fallbackColor)\n\n if (percent && !percent.startsWith(\"var\") && !percent.endsWith(\"%\"))\n percent = `${percent}%`\n\n return !percent ? color : `${color} ${percent}`\n }\n}\n\nfunction omitPercent(value?: string) {\n if (!value) return value\n\n if (value.endsWith(\"%\")) return value.replace(/\\d{1,3}%$/, \"\").trim()\n\n const values = value.trim().match(/[a-z-]+\\([^)]*\\)|[^\\s]+/gi) ?? []\n\n if (values.length > 1) return values[0]\n\n return value\n}\n\nfunction createVariable(\n value: string,\n fallbackValue?: string,\n properties?: string[],\n) {\n if (!properties) return value\n\n const key =\n \"--mix-\" + (isArray(properties) ? properties.join(\"-\") : properties)\n\n const result = { [key]: value }\n\n properties.forEach((property) => {\n result[property] = fallbackValue\n ? `var(${key}, ${fallbackValue})`\n : `var(${key})`\n })\n\n return result\n}\n\nexport function colorMix(\n value: any,\n { fallback, properties, system }: TransformOptions,\n) {\n if (value == null || globalValues.has(value)) return value\n\n if (isString(value) && value.includes(\"/\")) {\n const [color, percent] = value.split(\"/\")\n\n value = `transparentize(${color}, ${percent})`\n }\n\n const { type, values } = getCSSFunction(value)\n\n if (!values) return getColor(system)(value, fallback)\n\n switch (type) {\n case \"mix\":\n case \"color-mix\": {\n let [color2, color1, method] = splitValues(values).reverse()\n\n if (method) method = method in methods ? methods[method] : method\n else method = DEFAULT_METHOD\n\n color1 = getColor(system)(color1, fallback)\n color2 = getColor(system)(color2, fallback)\n\n return createVariable(\n `color-mix(${method}` +\n (color1 ? `, ${color1}` : \"\") +\n (color2 ? `, ${color2}` : \"\") +\n \")\",\n omitPercent(color1),\n properties,\n )\n }\n\n case \"tint\":\n case \"shade\":\n case \"transparentize\": {\n const [color, percent] = splitValues(values)\n\n const color1 = getColor(system)(\n percent ? `${color} ${percent}` : color,\n fallback,\n )\n const color2 =\n type === \"transparentize\"\n ? \"transparent\"\n : type === \"tint\"\n ? \"#fff\"\n : \"#000\"\n\n return createVariable(\n `color-mix(${DEFAULT_METHOD}, ${color1}, ${color2})`,\n omitPercent(color1),\n properties,\n )\n }\n\n case \"tone\": {\n const [color, tone] = splitValues(values)\n\n const color1 = getColor(system)(color, fallback)\n\n if (!tone) return color1\n\n let ratio = parseInt(tone) || 500\n\n if (ratio < 50 || 950 < ratio) ratio = 500\n if (ratio === 500) return color1\n\n const color2 = ratio < 500 ? \"#fff\" : \"#000\"\n const percent = `${100 - (Math.abs(ratio - 500) * 2) / 10}%`\n\n return createVariable(\n `color-mix(${DEFAULT_METHOD}, ${color1} ${percent}, ${color2})`,\n omitPercent(color1),\n properties,\n )\n }\n\n default: {\n return value\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","names":[],"sources":["../../../../src/core/css/config.ts"],"sourcesContent":["import type { CSSObject } from \"@emotion/styled\"\nimport type { ThemeToken } from \"../system\"\nimport type { CSSProperties } from \"./index.types\"\nimport type { Transform } from \"./utils\"\nimport { isNumber, isObject } from \"../../utils\"\nimport { animation, keyframes } from \"./animation\"\nimport { generateAtRule } from \"./at-rule\"\nimport { generateCalc } from \"./calc\"\nimport { colorMix } from \"./color-mix\"\nimport { colorScheme } from \"./color-scheme\"\nimport { display } from \"./display\"\nimport { generateFilter } from \"./filter\"\nimport { generateFocusRing } from \"./focus-ring\"\nimport { generateFunction } from \"./function\"\nimport { gradient } from \"./gradient\"\nimport { grid } from \"./grid\"\nimport { generateStyle } from \"./style\"\nimport { generateToken } from \"./token\"\nimport { transform } from \"./transform\"\nimport { generateTransition } from \"./transition\"\nimport { analyzeCSSValue, isCSSVar } from \"./utils\"\n\nexport interface StyleConfig {\n important?: boolean\n properties?: CSSProperties[]\n static?: CSSObject\n token?: ThemeToken\n transform?: Transform\n}\n\nexport interface StyleConfigs {\n [key: string]: StyleConfig | true\n}\n\nexport const transforms = {\n style: generateStyle,\n colorScheme,\n animation,\n bgClip: (value, { prev }) => {\n if (value === \"text\") {\n prev ??= {}\n prev.color ??= \"transparent\"\n\n return value\n } else {\n return value\n }\n },\n calc: generateCalc,\n colorMix,\n container: generateAtRule(\"container\"),\n content: (value) => {\n if (isObject(value))
|
|
1
|
+
{"version":3,"file":"config.js","names":[],"sources":["../../../../src/core/css/config.ts"],"sourcesContent":["import type { CSSObject } from \"@emotion/styled\"\nimport type { ThemeToken } from \"../system\"\nimport type { CSSProperties } from \"./index.types\"\nimport type { Transform } from \"./utils\"\nimport { isNumber, isObject } from \"../../utils\"\nimport { animation, keyframes } from \"./animation\"\nimport { generateAtRule } from \"./at-rule\"\nimport { generateCalc } from \"./calc\"\nimport { colorMix } from \"./color-mix\"\nimport { colorScheme } from \"./color-scheme\"\nimport { display } from \"./display\"\nimport { generateFilter } from \"./filter\"\nimport { generateFocusRing } from \"./focus-ring\"\nimport { generateFunction } from \"./function\"\nimport { gradient } from \"./gradient\"\nimport { grid } from \"./grid\"\nimport { generateStyle } from \"./style\"\nimport { generateToken } from \"./token\"\nimport { transform } from \"./transform\"\nimport { generateTransition } from \"./transition\"\nimport { analyzeCSSValue, isCSSVar } from \"./utils\"\n\nexport interface StyleConfig {\n important?: boolean\n properties?: CSSProperties[]\n static?: CSSObject\n token?: ThemeToken\n transform?: Transform\n}\n\nexport interface StyleConfigs {\n [key: string]: StyleConfig | true\n}\n\nexport const transforms = {\n style: generateStyle,\n colorScheme,\n animation,\n bgClip: (value, { prev }) => {\n if (value === \"text\") {\n prev ??= {}\n prev.color ??= \"transparent\"\n\n return value\n } else {\n return value\n }\n },\n calc: generateCalc,\n colorMix,\n container: generateAtRule(\"container\"),\n content: (value) => {\n if (isObject(value)) return { content: \"''\", ...value }\n else return value\n },\n deg: (value) => {\n if (isCSSVar(value) || value == null) return value\n\n const isUnitless =\n typeof value === \"string\" &&\n !value.endsWith(\"deg\") &&\n !value.endsWith(\"grad\") &&\n !value.endsWith(\"turn\") &&\n !value.endsWith(\"rad\")\n\n return isUnitless || isNumber(value) ? `${value}deg` : value\n },\n display,\n filter: generateFilter,\n focusRing: generateFocusRing,\n fraction: (value) => {\n if (isNumber(value) && value <= 1) value = `${value * 100}%`\n\n return value\n },\n function: generateFunction,\n gradient,\n grid,\n keyframes,\n media: generateAtRule(\"media\"),\n px: (value) => {\n if (value == null) return value\n\n const { unitless } = analyzeCSSValue(value)\n\n return unitless || isNumber(value) ? `${value}px` : value\n },\n supports: generateAtRule(\"supports\"),\n token: generateToken,\n transform,\n transition: generateTransition,\n truncated: (value: boolean) => {\n if (value)\n return {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }\n },\n} satisfies { [key: string]: Transform }\n\nexport type Transforms = keyof typeof transforms\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkCA,MAAa,aAAa;CACxB,OAAO;CACP;CACA;CACA,SAAS,OAAO,EAAE,WAAW;EAC3B,IAAI,UAAU,QAAQ;GACpB,SAAS,CAAC;GACV,KAAK,UAAU;GAEf,OAAO;EACT,OACE,OAAO;CAEX;CACA,MAAM;CACN;CACA,WAAW,eAAe,WAAW;CACrC,UAAU,UAAU;EAClB,KAAA,GAAA,cAAA,SAAA,CAAa,KAAK,GAAG,OAAO;GAAE,SAAS;GAAM,GAAG;EAAM;OACjD,OAAO;CACd;CACA,MAAM,UAAU;EACd,IAAI,SAAS,KAAK,KAAK,SAAS,MAAM,OAAO;EAS7C,OANE,OAAO,UAAU,YACjB,CAAC,MAAM,SAAS,KAAK,KACrB,CAAC,MAAM,SAAS,MAAM,KACtB,CAAC,MAAM,SAAS,MAAM,KACtB,CAAC,MAAM,SAAS,KAAK,MAAA,GAAA,cAAA,SAAA,CAEO,KAAK,IAAI,GAAG,MAAM,OAAO;CACzD;CACA;CACA,QAAQ;CACR,WAAW;CACX,WAAW,UAAU;EACnB,KAAA,GAAA,cAAA,SAAA,CAAa,KAAK,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,IAAI;EAE1D,OAAO;CACT;CACA,UAAU;CACV;CACA;CACA;CACA,OAAO,eAAe,OAAO;CAC7B,KAAK,UAAU;EACb,IAAI,SAAS,MAAM,OAAO;EAE1B,MAAM,EAAE,aAAa,gBAAgB,KAAK;EAE1C,OAAO,aAAA,GAAA,cAAA,SAAA,CAAqB,KAAK,IAAI,GAAG,MAAM,MAAM;CACtD;CACA,UAAU,eAAe,UAAU;CACnC,OAAO;CACP;CACA,YAAY;CACZ,YAAY,UAAmB;EAC7B,IAAI,OACF,OAAO;GACL,UAAU;GACV,cAAc;GACd,YAAY;EACd;CACJ;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css.js","names":[],"sources":["../../../../src/core/css/css.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { Breakpoints, System, UsageTheme } from \"../system\"\nimport type { StyleConfig } from \"./config\"\nimport type { CSSObjectOrFunction } from \"./index.types\"\nimport type { StyleProperty, VariableLengthProperty } from \"./styles\"\nimport type { TransformOptions } from \"./utils\"\nimport {\n isArray,\n isObject,\n isString,\n isUndefined,\n merge,\n runIfFn,\n} from \"../../utils\"\nimport { getColorSchemeVar, getVar, transformInterpolation } from \"../system\"\nimport { colorMix } from \"./color-mix\"\nimport { conditions, getCondition } from \"./conditions\"\nimport { styles, variableLengthProperties } from \"./styles\"\nimport {\n insertImportant,\n isCSSToken,\n isImportant,\n omitImportant,\n} from \"./utils\"\n\nfunction isVariableLength(key: string): boolean {\n return variableLengthProperties.includes(key as VariableLengthProperty)\n}\n\nfunction isConditionalObject(breakpoints: Breakpoints) {\n return function (value: any): boolean {\n if (!isObject(value)) return false\n\n const keys = Object.keys(value)\n\n if (!keys.length) return false\n\n if (!keys.includes(\"base\")) return false\n\n return keys.every((key) => {\n return (\n breakpoints.isResponsiveKey(key) ||\n key.startsWith(\"@\") ||\n key.startsWith(\"_\")\n )\n })\n }\n}\n\nfunction transformColorModeArray(breakpoints: Breakpoints) {\n return function (key: string, [lightValue, darkValue]: any[]): Dict {\n let computedCSS: Dict = {}\n\n if (isConditionalObject(breakpoints)(lightValue)) {\n computedCSS = transformConditionalObject(breakpoints)(key, lightValue)\n } else {\n computedCSS[key] = lightValue\n }\n\n if (isConditionalObject(breakpoints)(darkValue)) {\n computedCSS[conditions._dark] = transformConditionalObject(breakpoints)(\n key,\n darkValue,\n )\n } else {\n computedCSS[conditions._dark] = { [key]: darkValue }\n }\n\n return computedCSS\n }\n}\n\nfunction transformConditionalObject(breakpoints: Breakpoints) {\n return function (key: string, value: Dict) {\n const conditionalKeys = Object.keys(value).filter(\n (key) => !breakpoints.isResponsiveKey(key),\n )\n\n const breakpointObj = breakpoints.queries.reduce<Dict>(\n (prev, { breakpoint, query }) => {\n const breakpointValue = value[breakpoint]\n\n if (!isUndefined(breakpointValue)) {\n if (isArray(breakpointValue)) {\n const colorModeValue = transformColorModeArray(breakpoints)(\n key,\n breakpointValue,\n )\n\n prev = merge(\n prev,\n query ? { [query]: colorModeValue } : colorModeValue,\n )\n } else if (isConditionalObject(breakpoints)(breakpointValue)) {\n const conditionalValue = transformConditionalObject(breakpoints)(\n key,\n breakpointValue,\n )\n\n prev = merge(\n prev,\n query ? { [query]: conditionalValue } : conditionalValue,\n )\n } else {\n prev = merge(\n prev,\n query\n ? { [query]: { [key]: breakpointValue } }\n : { [key]: breakpointValue },\n )\n }\n }\n\n return prev\n },\n {},\n )\n\n const additionalObj = conditionalKeys.reduce<Dict>(\n (prev, conditionalKey) => {\n const query = getCondition(conditionalKey)\n\n prev[query] = { [key]: value[conditionalKey] }\n\n return prev\n },\n {},\n )\n\n return merge(breakpointObj, additionalObj)\n }\n}\n\nexport function transformConditionalValue({ breakpoints }: System) {\n return function (key: string, value: any) {\n if (isArray(value)) {\n return transformColorModeArray(breakpoints)(key, value)\n } else if (isConditionalObject(breakpoints)(value)) {\n return transformConditionalObject(breakpoints)(key, value)\n } else {\n return { [key]: value }\n }\n }\n}\n\nfunction expandCSS(system: System) {\n return function (css: Dict): Dict {\n let computedCSS: Dict = {}\n\n for (let [key, value] of Object.entries(css)) {\n if (value == null) continue\n\n if (!isVariableLength(key)) {\n computedCSS = merge(\n computedCSS,\n transformConditionalValue(system)(key, value),\n )\n } else {\n computedCSS = merge(computedCSS, { [key]: value })\n }\n }\n\n return computedCSS\n }\n}\n\nfunction valueToVar(system: System) {\n return function (prop: string, value: any) {\n const result = transformInterpolation(\n value,\n function (value: string, fallbackValue?: string) {\n if (value.includes(\"colorScheme.\")) {\n return getColorSchemeVar(system)(value)\n } else if (value.includes(\"colors.\")) {\n return colorMix(value, { fallback: fallbackValue, system })\n } else if (isCSSToken(system)(value)) {\n return system.cssMap[value]!.ref\n } else if (fallbackValue) {\n fallbackValue = isCSSToken(system)(fallbackValue)\n ? system.cssMap[fallbackValue]!.ref\n : fallbackValue\n\n return getVar(value, fallbackValue)\n } else {\n return getVar(value)\n }\n },\n )\n\n if (prop.startsWith(\"--\") && isString(result)) {\n if (result.includes(\"colorScheme.\")) {\n return getColorSchemeVar(system)(result)\n } else if (result.includes(\"colors.\")) {\n return colorMix(result, { system })\n } else if (isCSSToken(system)(result)) {\n return system.cssMap[result]!.ref\n } else {\n return result\n }\n } else {\n return result\n }\n }\n}\n\nfunction mergeCSS(prev: Dict, value: any, prop: string, properties?: string[]) {\n if (properties) {\n for (const property of properties) {\n prev[property] = prev[property] ?? {}\n prev[property] = merge(prev[property], value)\n }\n } else {\n prev[prop] = prev[prop] ?? {}\n prev[prop] = merge(prev[prop], value)\n }\n\n return prev\n}\n\nfunction insertCSS(\n prev: Dict,\n value: any,\n prop: string,\n properties?: string[],\n) {\n if (properties) {\n for (const property of properties) {\n prev[property] = value\n }\n } else {\n prev[prop] = value\n }\n\n return prev\n}\n\nexport function getStyle(prop: string) {\n const style = styles[prop as StyleProperty] as StyleConfig | true | undefined\n\n return style === true ? { properties: [prop] } : style\n}\n\nexport function css(system: System, theme: UsageTheme = {}) {\n return function (cssOrFn: CSSObjectOrFunction) {\n function createCSS(cssOrFn: CSSObjectOrFunction): Dict {\n const cssObj = runIfFn(cssOrFn, system)\n const computedCSS = expandCSS(system)(cssObj)\n\n let prev: Dict = {}\n\n for (let [prop, value] of Object.entries(computedCSS)) {\n value = valueToVar(system)(prop, value)\n\n if (value == null) continue\n\n prop = getCondition(prop)\n\n const style = getStyle(prop)\n const options: TransformOptions = {\n css,\n prev,\n properties: style?.properties,\n system,\n theme,\n }\n\n if (isObject(value)) {\n value = style?.transform?.(value, options) ?? value\n\n if (isObject(value)) {\n prev = mergeCSS(prev, createCSS(value), prop, style?.properties)\n } else {\n prev = insertCSS(prev, value, prop, style?.properties)\n }\n\n continue\n }\n\n const important = isImportant(value)\n\n value = omitImportant(value)\n value = style?.transform?.(value, options) ?? value\n\n if (important) value = insertImportant(value, style)\n\n if (style?.static) prev = merge(prev, style.static)\n\n if (isObject(value)) {\n prev = merge(prev, createCSS(value))\n\n continue\n }\n\n prev = insertCSS(prev, value, prop, style?.properties)\n }\n\n return prev\n }\n\n return createCSS(cssOrFn)\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"css.js","names":[],"sources":["../../../../src/core/css/css.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { Breakpoints, System, UsageTheme } from \"../system\"\nimport type { StyleConfig } from \"./config\"\nimport type { CSSObjectOrFunction } from \"./index.types\"\nimport type { StyleProperty, VariableLengthProperty } from \"./styles\"\nimport type { TransformOptions } from \"./utils\"\nimport {\n isArray,\n isObject,\n isString,\n isUndefined,\n merge,\n runIfFn,\n} from \"../../utils\"\nimport { getColorSchemeVar, getVar, transformInterpolation } from \"../system\"\nimport { colorMix } from \"./color-mix\"\nimport { conditions, getCondition } from \"./conditions\"\nimport { styles, variableLengthProperties } from \"./styles\"\nimport {\n insertImportant,\n isCSSToken,\n isImportant,\n omitImportant,\n} from \"./utils\"\n\nfunction isVariableLength(key: string): boolean {\n return variableLengthProperties.includes(key as VariableLengthProperty)\n}\n\nfunction isConditionalObject(breakpoints: Breakpoints) {\n return function (value: any): boolean {\n if (!isObject(value)) return false\n\n const keys = Object.keys(value)\n\n if (!keys.length) return false\n\n if (!keys.includes(\"base\")) return false\n\n return keys.every((key) => {\n return (\n breakpoints.isResponsiveKey(key) ||\n key.startsWith(\"@\") ||\n key.startsWith(\"_\")\n )\n })\n }\n}\n\nfunction transformColorModeArray(breakpoints: Breakpoints) {\n return function (key: string, [lightValue, darkValue]: any[]): Dict {\n let computedCSS: Dict = {}\n\n if (isConditionalObject(breakpoints)(lightValue))\n computedCSS = transformConditionalObject(breakpoints)(key, lightValue)\n else computedCSS[key] = lightValue\n\n if (isConditionalObject(breakpoints)(darkValue))\n computedCSS[conditions._dark] = transformConditionalObject(breakpoints)(\n key,\n darkValue,\n )\n else computedCSS[conditions._dark] = { [key]: darkValue }\n\n return computedCSS\n }\n}\n\nfunction transformConditionalObject(breakpoints: Breakpoints) {\n return function (key: string, value: Dict) {\n const conditionalKeys = Object.keys(value).filter(\n (key) => !breakpoints.isResponsiveKey(key),\n )\n\n const breakpointObj = breakpoints.queries.reduce<Dict>(\n (prev, { breakpoint, query }) => {\n const breakpointValue = value[breakpoint]\n\n if (!isUndefined(breakpointValue))\n if (isArray(breakpointValue)) {\n const colorModeValue = transformColorModeArray(breakpoints)(\n key,\n breakpointValue,\n )\n\n prev = merge(\n prev,\n query ? { [query]: colorModeValue } : colorModeValue,\n )\n } else if (isConditionalObject(breakpoints)(breakpointValue)) {\n const conditionalValue = transformConditionalObject(breakpoints)(\n key,\n breakpointValue,\n )\n\n prev = merge(\n prev,\n query ? { [query]: conditionalValue } : conditionalValue,\n )\n } else {\n prev = merge(\n prev,\n query\n ? { [query]: { [key]: breakpointValue } }\n : { [key]: breakpointValue },\n )\n }\n\n return prev\n },\n {},\n )\n\n const additionalObj = conditionalKeys.reduce<Dict>(\n (prev, conditionalKey) => {\n const query = getCondition(conditionalKey)\n\n prev[query] = { [key]: value[conditionalKey] }\n\n return prev\n },\n {},\n )\n\n return merge(breakpointObj, additionalObj)\n }\n}\n\nexport function transformConditionalValue({ breakpoints }: System) {\n return function (key: string, value: any) {\n if (isArray(value)) return transformColorModeArray(breakpoints)(key, value)\n else if (isConditionalObject(breakpoints)(value))\n return transformConditionalObject(breakpoints)(key, value)\n else return { [key]: value }\n }\n}\n\nfunction expandCSS(system: System) {\n return function (css: Dict): Dict {\n let computedCSS: Dict = {}\n\n for (let [key, value] of Object.entries(css)) {\n if (value == null) continue\n\n if (!isVariableLength(key))\n computedCSS = merge(\n computedCSS,\n transformConditionalValue(system)(key, value),\n )\n else computedCSS = merge(computedCSS, { [key]: value })\n }\n\n return computedCSS\n }\n}\n\nfunction valueToVar(system: System) {\n return function (prop: string, value: any) {\n const result = transformInterpolation(\n value,\n function (value: string, fallbackValue?: string) {\n if (value.includes(\"colorScheme.\")) {\n return getColorSchemeVar(system)(value)\n } else if (value.includes(\"colors.\")) {\n return colorMix(value, { fallback: fallbackValue, system })\n } else if (isCSSToken(system)(value)) {\n return system.cssMap[value]!.ref\n } else if (fallbackValue) {\n fallbackValue = isCSSToken(system)(fallbackValue)\n ? system.cssMap[fallbackValue]!.ref\n : fallbackValue\n\n return getVar(value, fallbackValue)\n } else {\n return getVar(value)\n }\n },\n )\n\n if (prop.startsWith(\"--\") && isString(result))\n if (result.includes(\"colorScheme.\"))\n return getColorSchemeVar(system)(result)\n else if (result.includes(\"colors.\")) return colorMix(result, { system })\n else if (isCSSToken(system)(result)) return system.cssMap[result]!.ref\n else return result\n else return result\n }\n}\n\nfunction mergeCSS(prev: Dict, value: any, prop: string, properties?: string[]) {\n if (properties) {\n for (const property of properties) {\n prev[property] = prev[property] ?? {}\n prev[property] = merge(prev[property], value)\n }\n } else {\n prev[prop] = prev[prop] ?? {}\n prev[prop] = merge(prev[prop], value)\n }\n\n return prev\n}\n\nfunction insertCSS(\n prev: Dict,\n value: any,\n prop: string,\n properties?: string[],\n) {\n if (properties) for (const property of properties) prev[property] = value\n else prev[prop] = value\n\n return prev\n}\n\nexport function getStyle(prop: string) {\n const style = styles[prop as StyleProperty] as StyleConfig | true | undefined\n\n return style === true ? { properties: [prop] } : style\n}\n\nexport function css(system: System, theme: UsageTheme = {}) {\n return function (cssOrFn: CSSObjectOrFunction) {\n function createCSS(cssOrFn: CSSObjectOrFunction): Dict {\n const cssObj = runIfFn(cssOrFn, system)\n const computedCSS = expandCSS(system)(cssObj)\n\n let prev: Dict = {}\n\n for (let [prop, value] of Object.entries(computedCSS)) {\n value = valueToVar(system)(prop, value)\n\n if (value == null) continue\n\n prop = getCondition(prop)\n\n const style = getStyle(prop)\n const options: TransformOptions = {\n css,\n prev,\n properties: style?.properties,\n system,\n theme,\n }\n\n if (isObject(value)) {\n value = style?.transform?.(value, options) ?? value\n\n if (isObject(value))\n prev = mergeCSS(prev, createCSS(value), prop, style?.properties)\n else prev = insertCSS(prev, value, prop, style?.properties)\n\n continue\n }\n\n const important = isImportant(value)\n\n value = omitImportant(value)\n value = style?.transform?.(value, options) ?? value\n\n if (important) value = insertImportant(value, style)\n\n if (style?.static) prev = merge(prev, style.static)\n\n if (isObject(value)) {\n prev = merge(prev, createCSS(value))\n\n continue\n }\n\n prev = insertCSS(prev, value, prop, style?.properties)\n }\n\n return prev\n }\n\n return createCSS(cssOrFn)\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gradient.js","names":[],"sources":["../../../../src/core/css/gradient.ts"],"sourcesContent":["import type { TransformOptions } from \"./utils\"\nimport { isArray, isUndefined } from \"../../utils\"\nimport {\n getCSSFunction,\n globalValues,\n isCSSFunction,\n isCSSToken,\n splitValues,\n} from \"./utils\"\n\nconst directions: { [key: string]: string } = {\n \"to-b\": \"to bottom\",\n \"to-bl\": \"to bottom left\",\n \"to-br\": \"to bottom right\",\n \"to-l\": \"to left\",\n \"to-r\": \"to right\",\n \"to-t\": \"to top\",\n \"to-tl\": \"to top left\",\n \"to-tr\": \"to top right\",\n}\n\nconst directionValues = new Set(Object.values(directions))\n\nexport function gradient(value: any, { system }: TransformOptions) {\n if (value == null || globalValues.has(value)) return value\n\n const prevent = isCSSFunction(value)\n\n if (!prevent) return `url('${value}')`\n\n let { type, values } = getCSSFunction(value)\n\n if (!type || !values) return value\n\n type = type.includes(\"-gradient\") ? type : `${type}-gradient`\n\n const [maybeDirection, ...colors] = splitValues(values)\n\n if (!colors.length) return value\n\n const direction =\n maybeDirection && maybeDirection in directions\n ? directions[maybeDirection]\n : maybeDirection\n\n if (!isUndefined(direction)) colors.unshift(direction)\n\n const computedValues = colors.map((_color) => {\n if (isUndefined(_color)) return _color\n\n if (directionValues.has(_color)) return _color\n\n const i = _color.indexOf(\" \")\n\n let [color, _ratio] =\n i !== -1 ? [_color.slice(0, i), _color.slice(i + 1)] : [_color]\n\n const ratio = isCSSFunction(_ratio) ? _ratio : _ratio?.split(\" \")\n\n const token = `colors.${color}`\n\n color = isCSSToken(system)(token) ? system.cssMap[token]!.ref : color\n\n if (ratio)
|
|
1
|
+
{"version":3,"file":"gradient.js","names":[],"sources":["../../../../src/core/css/gradient.ts"],"sourcesContent":["import type { TransformOptions } from \"./utils\"\nimport { isArray, isUndefined } from \"../../utils\"\nimport {\n getCSSFunction,\n globalValues,\n isCSSFunction,\n isCSSToken,\n splitValues,\n} from \"./utils\"\n\nconst directions: { [key: string]: string } = {\n \"to-b\": \"to bottom\",\n \"to-bl\": \"to bottom left\",\n \"to-br\": \"to bottom right\",\n \"to-l\": \"to left\",\n \"to-r\": \"to right\",\n \"to-t\": \"to top\",\n \"to-tl\": \"to top left\",\n \"to-tr\": \"to top right\",\n}\n\nconst directionValues = new Set(Object.values(directions))\n\nexport function gradient(value: any, { system }: TransformOptions) {\n if (value == null || globalValues.has(value)) return value\n\n const prevent = isCSSFunction(value)\n\n if (!prevent) return `url('${value}')`\n\n let { type, values } = getCSSFunction(value)\n\n if (!type || !values) return value\n\n type = type.includes(\"-gradient\") ? type : `${type}-gradient`\n\n const [maybeDirection, ...colors] = splitValues(values)\n\n if (!colors.length) return value\n\n const direction =\n maybeDirection && maybeDirection in directions\n ? directions[maybeDirection]\n : maybeDirection\n\n if (!isUndefined(direction)) colors.unshift(direction)\n\n const computedValues = colors.map((_color) => {\n if (isUndefined(_color)) return _color\n\n if (directionValues.has(_color)) return _color\n\n const i = _color.indexOf(\" \")\n\n let [color, _ratio] =\n i !== -1 ? [_color.slice(0, i), _color.slice(i + 1)] : [_color]\n\n const ratio = isCSSFunction(_ratio) ? _ratio : _ratio?.split(\" \")\n\n const token = `colors.${color}`\n\n color = isCSSToken(system)(token) ? system.cssMap[token]!.ref : color\n\n if (ratio) return [color, ...(isArray(ratio) ? ratio : [ratio])].join(\" \")\n else return color\n })\n\n return `${type}(${computedValues.join(\", \")})`\n}\n"],"mappings":";;;AAUA,MAAM,aAAwC;CAC5C,QAAQ;CACR,SAAS;CACT,SAAS;CACT,QAAQ;CACR,QAAQ;CACR,QAAQ;CACR,SAAS;CACT,SAAS;AACX;AAEA,MAAM,kBAAkB,IAAI,IAAI,OAAO,OAAO,UAAU,CAAC;AAEzD,SAAgB,SAAS,OAAY,EAAE,UAA4B;CACjE,IAAI,SAAS,QAAQ,aAAa,IAAI,KAAK,GAAG,OAAO;CAIrD,IAAI,CAFY,cAAc,KAEnB,GAAG,OAAO,QAAQ,MAAM;CAEnC,IAAI,EAAE,MAAM,WAAW,eAAe,KAAK;CAE3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,OAAO;CAE7B,OAAO,KAAK,SAAS,WAAW,IAAI,OAAO,GAAG,KAAK;CAEnD,MAAM,CAAC,gBAAgB,GAAG,UAAU,YAAY,MAAM;CAEtD,IAAI,CAAC,OAAO,QAAQ,OAAO;CAE3B,MAAM,YACJ,kBAAkB,kBAAkB,aAChC,WAAW,kBACX;CAEN,IAAI,EAAA,GAAA,cAAA,YAAA,CAAa,SAAS,GAAG,OAAO,QAAQ,SAAS;CAErD,MAAM,iBAAiB,OAAO,KAAK,WAAW;EAC5C,KAAA,GAAA,cAAA,YAAA,CAAgB,MAAM,GAAG,OAAO;EAEhC,IAAI,gBAAgB,IAAI,MAAM,GAAG,OAAO;EAExC,MAAM,IAAI,OAAO,QAAQ,GAAG;EAE5B,IAAI,CAAC,OAAO,UACV,MAAM,KAAK,CAAC,OAAO,MAAM,GAAG,CAAC,GAAG,OAAO,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM;EAEhE,MAAM,QAAQ,cAAc,MAAM,IAAI,SAAS,QAAQ,MAAM,GAAG;EAEhE,MAAM,QAAQ,UAAU;EAExB,QAAQ,WAAW,MAAM,CAAC,CAAC,KAAK,IAAI,OAAO,OAAO,MAAM,CAAE,MAAM;EAEhE,IAAI,OAAO,OAAO,CAAC,OAAO,IAAA,GAAA,cAAA,QAAA,CAAY,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAE,CAAC,CAAC,KAAK,GAAG;OACpE,OAAO;CACd,CAAC;CAED,OAAO,GAAG,KAAK,GAAG,eAAe,KAAK,IAAI,EAAE;AAC9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.js","names":[],"sources":["../../../../src/core/css/grid.ts"],"sourcesContent":["import type { TransformOptions } from \"./utils\"\nimport { generateCalc } from \"./calc\"\nimport {\n getCSSFunction,\n globalValues,\n isCSSFunction,\n isCSSToken,\n splitValues,\n} from \"./utils\"\n\nconst repeats: { [key: string]: string } = {\n fill: \"auto-fill\",\n fit: \"auto-fit\",\n}\n\nexport function grid(value: any, { system, ...rest }: TransformOptions) {\n if (value == null || globalValues.has(value)) return value\n\n const values = splitValues(value, (current) => current === \" \")\n\n if (!values.length) return value\n\n const computedValues = values.map((value): string => {\n const prevent = isCSSFunction(value)\n\n if (!prevent) {\n const token = `sizes.${value}`\n\n if (isCSSToken(system)(token))
|
|
1
|
+
{"version":3,"file":"grid.js","names":[],"sources":["../../../../src/core/css/grid.ts"],"sourcesContent":["import type { TransformOptions } from \"./utils\"\nimport { generateCalc } from \"./calc\"\nimport {\n getCSSFunction,\n globalValues,\n isCSSFunction,\n isCSSToken,\n splitValues,\n} from \"./utils\"\n\nconst repeats: { [key: string]: string } = {\n fill: \"auto-fill\",\n fit: \"auto-fit\",\n}\n\nexport function grid(value: any, { system, ...rest }: TransformOptions) {\n if (value == null || globalValues.has(value)) return value\n\n const values = splitValues(value, (current) => current === \" \")\n\n if (!values.length) return value\n\n const computedValues = values.map((value): string => {\n const prevent = isCSSFunction(value)\n\n if (!prevent) {\n const token = `sizes.${value}`\n\n if (isCSSToken(system)(token)) return system.cssMap[token]!.ref\n else return value\n }\n\n const { type, values } = getCSSFunction(value)\n\n if (!type || !values) return value\n\n if (type === \"repeat\") {\n let [repeat, tracks] = splitValues(values)\n\n repeat = repeat && repeat in repeats ? repeats[repeat] : repeat\n tracks = grid(tracks, { system, ...rest })\n\n return `repeat(${repeat}, ${tracks})`\n } else {\n return generateCalc(\"sizes\")(value, { system, ...rest })\n }\n })\n\n return computedValues.join(\" \")\n}\n"],"mappings":";;;AAUA,MAAM,UAAqC;CACzC,MAAM;CACN,KAAK;AACP;AAEA,SAAgB,KAAK,OAAY,EAAE,QAAQ,GAAG,QAA0B;CACtE,IAAI,SAAS,QAAQ,aAAa,IAAI,KAAK,GAAG,OAAO;CAErD,MAAM,SAAS,YAAY,QAAQ,YAAY,YAAY,GAAG;CAE9D,IAAI,CAAC,OAAO,QAAQ,OAAO;CA4B3B,OA1BuB,OAAO,KAAK,UAAkB;EAGnD,IAAI,CAFY,cAAc,KAEnB,GAAG;GACZ,MAAM,QAAQ,SAAS;GAEvB,IAAI,WAAW,MAAM,CAAC,CAAC,KAAK,GAAG,OAAO,OAAO,OAAO,MAAM,CAAE;QACvD,OAAO;EACd;EAEA,MAAM,EAAE,MAAM,WAAW,eAAe,KAAK;EAE7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,OAAO;EAE7B,IAAI,SAAS,UAAU;GACrB,IAAI,CAAC,QAAQ,UAAU,YAAY,MAAM;GAEzC,SAAS,UAAU,UAAU,UAAU,QAAQ,UAAU;GACzD,SAAS,KAAK,QAAQ;IAAE;IAAQ,GAAG;GAAK,CAAC;GAEzC,OAAO,UAAU,OAAO,IAAI,OAAO;EACrC,OACE,OAAO,aAAa,OAAO,CAAC,CAAC,OAAO;GAAE;GAAQ,GAAG;EAAK,CAAC;CAE3D,CAEoB,CAAC,CAAC,KAAK,GAAG;AAChC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transition.js","names":[],"sources":["../../../../src/core/css/transition.ts"],"sourcesContent":["import type { Transform } from \"./utils\"\n\nconst properties: { [key: string]: string[] } = {\n size: [\"width\", \"height\"],\n all: [\"all\"],\n backgrounds: [\n \"background\",\n \"background-color\",\n \"background-image\",\n \"background-position\",\n ],\n colors: [\n \"color\",\n \"fill\",\n \"stroke\",\n \"background-color\",\n \"border-color\",\n \"outline-color\",\n \"text-decoration-color\",\n ],\n common: [\n \"color\",\n \"fill\",\n \"stroke\",\n \"background-color\",\n \"border-color\",\n \"outline-color\",\n \"text-decoration-color\",\n \"opacity\",\n \"box-shadow\",\n \"transform\",\n \"translate\",\n \"scale\",\n \"rotate\",\n \"filter\",\n \"backdrop-filter\",\n ],\n opacity: [\"opacity\"],\n position: [\"top\", \"right\", \"bottom\", \"left\", \"inset-inline\", \"inset-block\"],\n shadow: [\"box-shadow\"],\n}\n\nexport function generateTransition(\n type: \"property\" | \"transition\" = \"transition\",\n): Transform {\n return function (value, { prev }) {\n switch (type) {\n case \"transition\":\n if (value in properties)
|
|
1
|
+
{"version":3,"file":"transition.js","names":[],"sources":["../../../../src/core/css/transition.ts"],"sourcesContent":["import type { Transform } from \"./utils\"\n\nconst properties: { [key: string]: string[] } = {\n size: [\"width\", \"height\"],\n all: [\"all\"],\n backgrounds: [\n \"background\",\n \"background-color\",\n \"background-image\",\n \"background-position\",\n ],\n colors: [\n \"color\",\n \"fill\",\n \"stroke\",\n \"background-color\",\n \"border-color\",\n \"outline-color\",\n \"text-decoration-color\",\n ],\n common: [\n \"color\",\n \"fill\",\n \"stroke\",\n \"background-color\",\n \"border-color\",\n \"outline-color\",\n \"text-decoration-color\",\n \"opacity\",\n \"box-shadow\",\n \"transform\",\n \"translate\",\n \"scale\",\n \"rotate\",\n \"filter\",\n \"backdrop-filter\",\n ],\n opacity: [\"opacity\"],\n position: [\"top\", \"right\", \"bottom\", \"left\", \"inset-inline\", \"inset-block\"],\n shadow: [\"box-shadow\"],\n}\n\nexport function generateTransition(\n type: \"property\" | \"transition\" = \"transition\",\n): Transform {\n return function (value, { prev }) {\n switch (type) {\n case \"transition\":\n if (value in properties)\n return {\n transition: properties[value]?.join(\", \"),\n transitionDuration: prev?.transitionDuration ?? \"200ms\",\n transitionTimingFunction:\n prev?.transitionTimingFunction ??\n \"cubic-bezier(0.42, 0, 0.58, 1)\",\n }\n else return value\n\n case \"property\":\n if (value in properties) return properties[value]?.join(\", \")\n else return value\n }\n }\n}\n"],"mappings":";AAEA,MAAM,aAA0C;CAC9C,MAAM,CAAC,SAAS,QAAQ;CACxB,KAAK,CAAC,KAAK;CACX,aAAa;EACX;EACA;EACA;EACA;CACF;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,QAAQ;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,SAAS,CAAC,SAAS;CACnB,UAAU;EAAC;EAAO;EAAS;EAAU;EAAQ;EAAgB;CAAa;CAC1E,QAAQ,CAAC,YAAY;AACvB;AAEA,SAAgB,mBACd,OAAkC,cACvB;CACX,OAAO,SAAU,OAAO,EAAE,QAAQ;EAChC,QAAQ,MAAR;GACE,KAAK,cACH,IAAI,SAAS,YACX,OAAO;IACL,YAAY,WAAW,MAAM,EAAE,KAAK,IAAI;IACxC,oBAAoB,MAAM,sBAAsB;IAChD,0BACE,MAAM,4BACN;GACJ;QACG,OAAO;GAEd,KAAK,YACH,IAAI,SAAS,YAAY,OAAO,WAAW,MAAM,EAAE,KAAK,IAAI;QACvD,OAAO;EAChB;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":[],"sources":["../../../../src/core/css/utils.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { ColorMode, System, ThemeToken, UsageTheme } from \"../system\"\nimport type { StyleConfig } from \"./config\"\nimport type { CSSFunction, CSSProperties } from \"./index.types\"\nimport { isObject, isString, isUndefined } from \"../../utils\"\nimport { getColorSchemeVar, isColorScheme } from \"../system\"\n\nexport interface TransformOptions {\n system: System\n css?: CSSFunction\n fallback?: any\n prev?: Dict\n properties?: CSSProperties[]\n theme?: UsageTheme\n}\n\nexport interface Transform {\n (value: any, options: TransformOptions): any\n}\n\nexport const globalValues = new Set([\n \"inherit\",\n \"initial\",\n \"none\",\n \"revert\",\n \"unset\",\n])\n\nexport function isCSSFunction(value: any) {\n return isString(value) && value.includes(\"(\") && value.includes(\")\")\n}\n\nexport function getCSSFunction(value: any) {\n const regex = /(^[a-z-A-Z]+)\\((.*)\\)/g\n const [, type, values] = regex.exec(value) ?? []\n\n return { type, values }\n}\n\nexport function splitValues(\n values: string,\n cb: (\n current: string,\n prev: string | undefined,\n next: string | undefined,\n ) => boolean = (current) => current === \",\",\n addSeparator = false,\n) {\n const result = []\n\n let value = \"\"\n let depth = 0\n\n for (let i = 0; i < values.length; i++) {\n const current = values[i]\n const prev = values[i - 1]\n const next = values[i + 1]\n\n if (current === \"(\") depth++\n if (current === \")\") depth--\n\n if (!isUndefined(current) && cb(current, prev, next) && depth === 0) {\n if (value) result.push(value.trim())\n\n if (addSeparator) result.push(current)\n\n value = \"\"\n } else {\n value += current\n }\n }\n\n if (value) result.push(value.trim())\n\n return result.filter(Boolean)\n}\n\nexport function isCSSVar(value: string) {\n return /^var\\(--.+\\)$/.test(value)\n}\n\nexport function isInterpolation(value: string) {\n return /\\{.+\\}/.test(value)\n}\n\nexport function isCSSToken({ cssMap }: System) {\n return function (value: any) {\n return isObject(cssMap) && value in cssMap && !!cssMap[value]?.ref\n }\n}\n\nexport function isImportant(value: any): boolean {\n return (\n isString(value) && (/\\s*!important$/.test(value) || /\\s*!$/.test(value))\n )\n}\n\nexport function omitImportant(value: any): string {\n return isString(value) ? value.replace(/(!important|!)$/, \"\").trim() : value\n}\n\nexport function insertImportant(value: any, style?: StyleConfig): any {\n if (isString(value))
|
|
1
|
+
{"version":3,"file":"utils.js","names":[],"sources":["../../../../src/core/css/utils.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { ColorMode, System, ThemeToken, UsageTheme } from \"../system\"\nimport type { StyleConfig } from \"./config\"\nimport type { CSSFunction, CSSProperties } from \"./index.types\"\nimport { isObject, isString, isUndefined } from \"../../utils\"\nimport { getColorSchemeVar, isColorScheme } from \"../system\"\n\nexport interface TransformOptions {\n system: System\n css?: CSSFunction\n fallback?: any\n prev?: Dict\n properties?: CSSProperties[]\n theme?: UsageTheme\n}\n\nexport interface Transform {\n (value: any, options: TransformOptions): any\n}\n\nexport const globalValues = new Set([\n \"inherit\",\n \"initial\",\n \"none\",\n \"revert\",\n \"unset\",\n])\n\nexport function isCSSFunction(value: any) {\n return isString(value) && value.includes(\"(\") && value.includes(\")\")\n}\n\nexport function getCSSFunction(value: any) {\n const regex = /(^[a-z-A-Z]+)\\((.*)\\)/g\n const [, type, values] = regex.exec(value) ?? []\n\n return { type, values }\n}\n\nexport function splitValues(\n values: string,\n cb: (\n current: string,\n prev: string | undefined,\n next: string | undefined,\n ) => boolean = (current) => current === \",\",\n addSeparator = false,\n) {\n const result = []\n\n let value = \"\"\n let depth = 0\n\n for (let i = 0; i < values.length; i++) {\n const current = values[i]\n const prev = values[i - 1]\n const next = values[i + 1]\n\n if (current === \"(\") depth++\n if (current === \")\") depth--\n\n if (!isUndefined(current) && cb(current, prev, next) && depth === 0) {\n if (value) result.push(value.trim())\n\n if (addSeparator) result.push(current)\n\n value = \"\"\n } else {\n value += current\n }\n }\n\n if (value) result.push(value.trim())\n\n return result.filter(Boolean)\n}\n\nexport function isCSSVar(value: string) {\n return /^var\\(--.+\\)$/.test(value)\n}\n\nexport function isInterpolation(value: string) {\n return /\\{.+\\}/.test(value)\n}\n\nexport function isCSSToken({ cssMap }: System) {\n return function (value: any) {\n return isObject(cssMap) && value in cssMap && !!cssMap[value]?.ref\n }\n}\n\nexport function isImportant(value: any): boolean {\n return (\n isString(value) && (/\\s*!important$/.test(value) || /\\s*!$/.test(value))\n )\n}\n\nexport function omitImportant(value: any): string {\n return isString(value) ? value.replace(/(!important|!)$/, \"\").trim() : value\n}\n\nexport function insertImportant(value: any, style?: StyleConfig): any {\n if (isString(value)) return value + \" !important\"\n else if (isObject(value))\n if (style?.important) {\n return Object.fromEntries(\n Object.entries(value).map(([key, value]) => [\n key,\n value + \" !important\",\n ]),\n )\n } else {\n if (!style?.properties) return value\n\n for (const property of style.properties) value[property] += \" !important\"\n }\n\n return value\n}\n\nexport function analyzeCSSValue(value: any) {\n let n = parseFloat(value.toString())\n const unit = value.toString().replace(String(n), \"\")\n\n return { unit, unitless: !unit, value }\n}\n\nexport function tokenToVar(system: System) {\n return function (token: ThemeToken, value: any, fallbackValue?: any) {\n if (isColorScheme(value)) return getColorSchemeVar(system)(value)\n\n const resolvedToken = `${token}.${value}`\n\n if (isCSSToken(system)(resolvedToken))\n return system.cssMap[resolvedToken]!.ref\n else return fallbackValue || value\n }\n}\n\nexport function varToValue(system: System) {\n return function (variable: string): string {\n const value = system.cssVars[variable]\n\n if (isCSSVar(value))\n return varToValue(system)(value.replace(/^var\\(/, \"\").replace(/\\)$/, \"\"))\n else return value\n }\n}\n\nexport function tokenToValue(system: System) {\n return function (token: ThemeToken, value: any, fallbackValue?: any) {\n const resolvedToken = `${token}.${value}`\n\n if (isCSSToken(system)(resolvedToken)) {\n const variable = system.cssMap[resolvedToken]!.var\n\n return varToValue(system)(variable)\n } else {\n return fallbackValue || value\n }\n }\n}\n\nexport function mode<L, D>(light: L, dark: D) {\n return function (colorMode: ColorMode | undefined = \"light\"): D | L {\n return colorMode === \"light\" ? light : dark\n }\n}\n\nfunction combineFunctions(a: Transform, b: Transform): Transform {\n return function (value, ...args) {\n return b(a(value, ...args), ...args)\n }\n}\n\nexport function pipe(...transformers: Transform[]) {\n return transformers.reduce(combineFunctions)\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breakpoint.js","names":[],"sources":["../../../../src/core/system/breakpoint.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type {\n Breakpoint,\n BreakpointConfig,\n DefineThemeBreakpointTokens,\n} from \"./index.types\"\nimport { getPx, isObject } from \"../../utils\"\n\ninterface BreakpointQuery {\n breakpoint: Breakpoint\n maxW: number | undefined\n maxWQuery: string | undefined\n minMaxQuery: string | undefined\n minW: number | undefined\n minWQuery: string | undefined\n query: string | undefined\n}\n\nexport interface Breakpoints {\n keys: Breakpoint[]\n queries: BreakpointQuery[]\n queriesObj: { [key: string]: BreakpointQuery }\n getQuery: (key: string) => string | undefined\n isResponsive: (obj: any, strict?: boolean) => boolean\n isResponsiveKey: (key: string) => boolean\n}\n\nfunction createQuery(\n min: number | undefined,\n max: number | undefined,\n identifier = \"@media screen\",\n): string | undefined {\n const query = [identifier]\n\n if (min) query.push(\"and\", `(min-width: ${min}px)`)\n if (max) query.push(\"and\", `(max-width: ${max}px)`)\n\n return query.length > 1\n ? query.join(\" \").replace(/^@container(\\s+\\w*)?\\s+and/, `@container$1`)\n : undefined\n}\n\nfunction createQueries(breakpoints: Dict<number>, config: BreakpointConfig) {\n const { direction, identifier } = config\n const down = direction !== \"up\"\n\n const queryEntries = Object.entries(breakpoints)\n .map(([breakpoint, width], i, entry) => {\n const [, relatedWidth] = entry[i + 1] ?? []\n let minW = down ? relatedWidth : width\n let maxW = down ? width : relatedWidth\n\n if (breakpoint === \"base\")
|
|
1
|
+
{"version":3,"file":"breakpoint.js","names":[],"sources":["../../../../src/core/system/breakpoint.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type {\n Breakpoint,\n BreakpointConfig,\n DefineThemeBreakpointTokens,\n} from \"./index.types\"\nimport { getPx, isObject } from \"../../utils\"\n\ninterface BreakpointQuery {\n breakpoint: Breakpoint\n maxW: number | undefined\n maxWQuery: string | undefined\n minMaxQuery: string | undefined\n minW: number | undefined\n minWQuery: string | undefined\n query: string | undefined\n}\n\nexport interface Breakpoints {\n keys: Breakpoint[]\n queries: BreakpointQuery[]\n queriesObj: { [key: string]: BreakpointQuery }\n getQuery: (key: string) => string | undefined\n isResponsive: (obj: any, strict?: boolean) => boolean\n isResponsiveKey: (key: string) => boolean\n}\n\nfunction createQuery(\n min: number | undefined,\n max: number | undefined,\n identifier = \"@media screen\",\n): string | undefined {\n const query = [identifier]\n\n if (min) query.push(\"and\", `(min-width: ${min}px)`)\n if (max) query.push(\"and\", `(max-width: ${max}px)`)\n\n return query.length > 1\n ? query.join(\" \").replace(/^@container(\\s+\\w*)?\\s+and/, `@container$1`)\n : undefined\n}\n\nfunction createQueries(breakpoints: Dict<number>, config: BreakpointConfig) {\n const { direction, identifier } = config\n const down = direction !== \"up\"\n\n const queryEntries = Object.entries(breakpoints)\n .map(([breakpoint, width], i, entry) => {\n const [, relatedWidth] = entry[i + 1] ?? []\n let minW = down ? relatedWidth : width\n let maxW = down ? width : relatedWidth\n\n if (breakpoint === \"base\")\n if (down) maxW = undefined\n else minW = undefined\n\n if (down) {\n if (minW) minW += 1\n } else {\n if (maxW) maxW -= 1\n }\n\n const maxWQuery = createQuery(undefined, maxW, identifier)\n const minWQuery = createQuery(minW, undefined, identifier)\n const minMaxQuery = createQuery(minW, maxW, identifier)\n const query = down ? maxWQuery : minWQuery\n\n return [\n breakpoint,\n {\n breakpoint: breakpoint as Breakpoint,\n maxW,\n maxWQuery,\n minMaxQuery,\n minW,\n minWQuery,\n query,\n },\n ] as const\n })\n .sort((a, b) =>\n down\n ? (b[1].maxW ?? Infinity) - (a[1].maxW ?? Infinity)\n : (a[1].minW ?? 0) - (b[1].minW ?? 0),\n )\n\n const queries = queryEntries.map(([_, query]) => query)\n const queriesObj = Object.fromEntries(queryEntries)\n\n return { queries, queriesObj }\n}\n\nfunction transformBreakpoints(\n breakpoints: Dict,\n config: BreakpointConfig,\n): Dict {\n return Object.fromEntries(\n Object.entries(breakpoints)\n .map(([name, value]) => [name, getPx(value)] as const)\n .sort((a, b) => {\n if (config.direction !== \"up\") return b[1] - a[1]\n else return a[1] - b[1]\n }),\n )\n}\n\nexport function createBreakpoints(\n breakpoints: DefineThemeBreakpointTokens = {},\n config: BreakpointConfig = {},\n): Breakpoints {\n config.base ??= \"9999px\"\n config.direction ??= \"down\"\n\n breakpoints.base = config.direction !== \"up\" ? config.base : \"0px\"\n\n const transformedBreakpoints = transformBreakpoints(breakpoints, config)\n const { queries, queriesObj } = createQueries(transformedBreakpoints, config)\n const keys = Object.keys(queriesObj) as Breakpoint[]\n\n function isResponsive(obj: any, strict = false) {\n if (!isObject(obj)) return false\n\n const providedKeys = Object.keys(obj) as Breakpoint[]\n\n if (!providedKeys.length) return false\n\n if (strict && !providedKeys.includes(\"base\")) return false\n\n return providedKeys.every((key) => keys.includes(key))\n }\n\n function isResponsiveKey(key: string) {\n return key in queriesObj\n }\n\n function getQuery(key: string) {\n return key in queriesObj ? queriesObj[key]?.query : undefined\n }\n\n return {\n getQuery,\n isResponsive,\n isResponsiveKey,\n keys,\n queries,\n queriesObj,\n }\n}\n"],"mappings":";;AA2BA,SAAS,YACP,KACA,KACA,aAAa,iBACO;CACpB,MAAM,QAAQ,CAAC,UAAU;CAEzB,IAAI,KAAK,MAAM,KAAK,OAAO,eAAe,IAAI,IAAI;CAClD,IAAI,KAAK,MAAM,KAAK,OAAO,eAAe,IAAI,IAAI;CAElD,OAAO,MAAM,SAAS,IAClB,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,8BAA8B,cAAc,IACpE,KAAA;AACN;AAEA,SAAS,cAAc,aAA2B,QAA0B;CAC1E,MAAM,EAAE,WAAW,eAAe;CAClC,MAAM,OAAO,cAAc;CAE3B,MAAM,eAAe,OAAO,QAAQ,WAAW,CAAC,CAC7C,KAAK,CAAC,YAAY,QAAQ,GAAG,UAAU;EACtC,MAAM,GAAG,gBAAgB,MAAM,IAAI,MAAM,CAAC;EAC1C,IAAI,OAAO,OAAO,eAAe;EACjC,IAAI,OAAO,OAAO,QAAQ;EAE1B,IAAI,eAAe,QACjB,IAAI,MAAM,OAAO,KAAA;OACZ,OAAO,KAAA;EAEd,IAAI;OACE,MAAM,QAAQ;EAAA,OAElB,IAAI,MAAM,QAAQ;EAGpB,MAAM,YAAY,YAAY,KAAA,GAAW,MAAM,UAAU;EACzD,MAAM,YAAY,YAAY,MAAM,KAAA,GAAW,UAAU;EACzD,MAAM,cAAc,YAAY,MAAM,MAAM,UAAU;EAGtD,OAAO,CACL,YACA;GACc;GACZ;GACA;GACA;GACA;GACA;GACA,OAXU,OAAO,YAAY;EAY/B,CACF;CACF,CAAC,CAAC,CACD,MAAM,GAAG,MACR,QACK,EAAE,EAAE,CAAC,QAAQ,aAAa,EAAE,EAAE,CAAC,QAAQ,aACvC,EAAE,EAAE,CAAC,QAAQ,MAAM,EAAE,EAAE,CAAC,QAAQ,EACvC;CAKF,OAAO;EAAE,SAHO,aAAa,KAAK,CAAC,GAAG,WAAW,KAGlC;EAAG,YAFC,OAAO,YAAY,YAEX;CAAE;AAC/B;AAEA,SAAS,qBACP,aACA,QACM;CACN,OAAO,OAAO,YACZ,OAAO,QAAQ,WAAW,CAAC,CACxB,KAAK,CAAC,MAAM,WAAW,CAAC,OAAA,GAAA,cAAA,MAAA,CAAY,KAAK,CAAC,CAAU,CAAC,CACrD,MAAM,GAAG,MAAM;EACd,IAAI,OAAO,cAAc,MAAM,OAAO,EAAE,KAAK,EAAE;OAC1C,OAAO,EAAE,KAAK,EAAE;CACvB,CAAC,CACL;AACF;AAEA,SAAgB,kBACd,cAA2C,CAAC,GAC5C,SAA2B,CAAC,GACf;CACb,OAAO,SAAS;CAChB,OAAO,cAAc;CAErB,YAAY,OAAO,OAAO,cAAc,OAAO,OAAO,OAAO;CAG7D,MAAM,EAAE,SAAS,eAAe,cADD,qBAAqB,aAAa,MACE,GAAG,MAAM;CAC5E,MAAM,OAAO,OAAO,KAAK,UAAU;CAEnC,SAAS,aAAa,KAAU,SAAS,OAAO;EAC9C,IAAI,EAAA,GAAA,cAAA,SAAA,CAAU,GAAG,GAAG,OAAO;EAE3B,MAAM,eAAe,OAAO,KAAK,GAAG;EAEpC,IAAI,CAAC,aAAa,QAAQ,OAAO;EAEjC,IAAI,UAAU,CAAC,aAAa,SAAS,MAAM,GAAG,OAAO;EAErD,OAAO,aAAa,OAAO,QAAQ,KAAK,SAAS,GAAG,CAAC;CACvD;CAEA,SAAS,gBAAgB,KAAa;EACpC,OAAO,OAAO;CAChB;CAEA,SAAS,SAAS,KAAa;EAC7B,OAAO,OAAO,aAAa,WAAW,IAAI,EAAE,QAAQ,KAAA;CACtD;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-mode-provider.js","names":["noop"],"sources":["../../../../src/core/system/color-mode-provider.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, PropsWithChildren } from \"react\"\nimport type { ColorMode, ColorModeWithSystem, ThemeConfig } from \"./index.types\"\nimport type { Storage } from \"./storage-manager\"\nimport {\n createContext,\n use,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\"\nimport { isEmptyObject, noop } from \"../../utils\"\nimport { COLOR_MODE_STORAGE_KEY } from \"../constant\"\nimport { useEnvironment } from \"./environment-provider\"\nimport { createStorageManager } from \"./storage-manager\"\nimport { getPreventTransition } from \"./theme-provider\"\nimport { useSystemColorMode } from \"./use-system-color-mode\"\n\ninterface ColorModeContext {\n colorMode: ColorMode\n internalColorMode: ColorModeWithSystem\n changeColorMode: (colorMode: ColorModeWithSystem) => void\n toggleColorMode: () => void\n forced?: boolean\n}\n\nexport const ColorModeContext = createContext<ColorModeContext>({\n changeColorMode: noop,\n colorMode: \"light\",\n forced: false,\n internalColorMode: \"light\",\n toggleColorMode: noop,\n})\n\nexport interface ColorModeProviderProps extends PropsWithChildren {\n /**\n * The forced color mode.\n */\n colorMode?: ColorMode\n /**\n * The config of the yamada ui.\n */\n config?: ThemeConfig\n /**\n * If `storage` is `cookie`, the cookie to use.\n * If not provided, the cookie will be set to `document.cookie`.\n */\n cookie?: string\n /**\n * The storage to use.\n * If you are using a server-side rendering library, you should use `cookie`.\n *\n * @default 'localStorage'\n */\n storage?: Storage\n /**\n * The key of the value saved in storage.\n *\n * @default 'color-mode'\n */\n storageKey?: string\n}\n\nexport const ColorModeProvider: FC<ColorModeProviderProps> = ({\n children,\n colorMode: forcedColorMode,\n config: {\n defaultColorMode = \"light\" as ColorModeWithSystem,\n disableTransitionOnChange = true,\n } = {},\n cookie,\n storage = cookie ? \"cookie\" : \"localStorage\",\n storageKey = COLOR_MODE_STORAGE_KEY,\n}) => {\n const storageManager = useMemo(\n () =>\n createStorageManager<ColorModeWithSystem, ColorMode>(\n storage,\n storageKey,\n defaultColorMode,\n cookie,\n ),\n [cookie, defaultColorMode, storage, storageKey],\n )\n const environment = useEnvironment()\n const { getDocument } = environment\n const [internalColorMode, setInternalColorMode] =\n useState<ColorModeWithSystem>(storageManager.get())\n const { getSystemColorMode, systemColorMode } = useSystemColorMode({\n callback: (systemColorMode) => {\n if (internalColorMode !== \"system\") return\n\n setClassName(systemColorMode === \"dark\")\n setDataset(systemColorMode)\n },\n defaultColorMode: storageManager.default(\n defaultColorMode === \"dark\" ? \"dark\" : \"light\",\n ),\n })\n const colorMode =\n internalColorMode === \"system\" ? systemColorMode : internalColorMode\n\n const setDataset = useCallback(\n (colorMode: ColorMode) => {\n const doc = getDocument()\n\n if (!doc) return\n\n const cleanup = disableTransitionOnChange\n ? getPreventTransition(environment)\n : undefined\n\n doc.documentElement.dataset.mode = colorMode\n doc.documentElement.style.colorScheme = colorMode\n\n cleanup?.()\n },\n [disableTransitionOnChange, environment, getDocument],\n )\n\n const setClassName = useCallback(\n (isDark: boolean) => {\n const doc = getDocument()\n\n if (!doc) return\n\n doc.body.classList.add(isDark ? \"dark\" : \"light\")\n doc.body.classList.remove(isDark ? \"light\" : \"dark\")\n },\n [getDocument],\n )\n\n const changeColorMode = useCallback(\n (internalColorMode: ColorModeWithSystem) => {\n const colorMode =\n internalColorMode === \"system\"\n ? getSystemColorMode()\n : internalColorMode\n\n setInternalColorMode(internalColorMode)\n setClassName(colorMode === \"dark\")\n setDataset(colorMode)\n\n storageManager.set(internalColorMode)\n },\n [storageManager, getSystemColorMode, setClassName, setDataset],\n )\n\n const toggleColorMode = useCallback(() => {\n changeColorMode(colorMode === \"dark\" ? \"light\" : \"dark\")\n }, [changeColorMode, colorMode])\n\n useEffect(() => {\n const internalColorMode = storageManager.get()\n\n changeColorMode(internalColorMode)\n }, [changeColorMode, storageManager])\n\n const context = useMemo(\n () => ({\n changeColorMode: forcedColorMode ? noop : changeColorMode,\n colorMode: forcedColorMode ?? colorMode,\n forced: forcedColorMode !== undefined,\n internalColorMode,\n toggleColorMode: forcedColorMode ? noop : toggleColorMode,\n }),\n [\n forcedColorMode,\n colorMode,\n internalColorMode,\n changeColorMode,\n toggleColorMode,\n ],\n )\n\n return <ColorModeContext value={context}>{children}</ColorModeContext>\n}\n\n/**\n * `useColorMode` is a custom hook that returns the current color mode.\n *\n * @see https://yamada-ui.com/docs/hooks/use-color-mode\n */\nexport const useColorMode = (): ColorModeContext => {\n const context = use(ColorModeContext)\n\n if (isEmptyObject(context))
|
|
1
|
+
{"version":3,"file":"color-mode-provider.js","names":["noop"],"sources":["../../../../src/core/system/color-mode-provider.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, PropsWithChildren } from \"react\"\nimport type { ColorMode, ColorModeWithSystem, ThemeConfig } from \"./index.types\"\nimport type { Storage } from \"./storage-manager\"\nimport {\n createContext,\n use,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\"\nimport { isEmptyObject, noop } from \"../../utils\"\nimport { COLOR_MODE_STORAGE_KEY } from \"../constant\"\nimport { useEnvironment } from \"./environment-provider\"\nimport { createStorageManager } from \"./storage-manager\"\nimport { getPreventTransition } from \"./theme-provider\"\nimport { useSystemColorMode } from \"./use-system-color-mode\"\n\ninterface ColorModeContext {\n colorMode: ColorMode\n internalColorMode: ColorModeWithSystem\n changeColorMode: (colorMode: ColorModeWithSystem) => void\n toggleColorMode: () => void\n forced?: boolean\n}\n\nexport const ColorModeContext = createContext<ColorModeContext>({\n changeColorMode: noop,\n colorMode: \"light\",\n forced: false,\n internalColorMode: \"light\",\n toggleColorMode: noop,\n})\n\nexport interface ColorModeProviderProps extends PropsWithChildren {\n /**\n * The forced color mode.\n */\n colorMode?: ColorMode\n /**\n * The config of the yamada ui.\n */\n config?: ThemeConfig\n /**\n * If `storage` is `cookie`, the cookie to use.\n * If not provided, the cookie will be set to `document.cookie`.\n */\n cookie?: string\n /**\n * The storage to use.\n * If you are using a server-side rendering library, you should use `cookie`.\n *\n * @default 'localStorage'\n */\n storage?: Storage\n /**\n * The key of the value saved in storage.\n *\n * @default 'color-mode'\n */\n storageKey?: string\n}\n\nexport const ColorModeProvider: FC<ColorModeProviderProps> = ({\n children,\n colorMode: forcedColorMode,\n config: {\n defaultColorMode = \"light\" as ColorModeWithSystem,\n disableTransitionOnChange = true,\n } = {},\n cookie,\n storage = cookie ? \"cookie\" : \"localStorage\",\n storageKey = COLOR_MODE_STORAGE_KEY,\n}) => {\n const storageManager = useMemo(\n () =>\n createStorageManager<ColorModeWithSystem, ColorMode>(\n storage,\n storageKey,\n defaultColorMode,\n cookie,\n ),\n [cookie, defaultColorMode, storage, storageKey],\n )\n const environment = useEnvironment()\n const { getDocument } = environment\n const [internalColorMode, setInternalColorMode] =\n useState<ColorModeWithSystem>(storageManager.get())\n const { getSystemColorMode, systemColorMode } = useSystemColorMode({\n callback: (systemColorMode) => {\n if (internalColorMode !== \"system\") return\n\n setClassName(systemColorMode === \"dark\")\n setDataset(systemColorMode)\n },\n defaultColorMode: storageManager.default(\n defaultColorMode === \"dark\" ? \"dark\" : \"light\",\n ),\n })\n const colorMode =\n internalColorMode === \"system\" ? systemColorMode : internalColorMode\n\n const setDataset = useCallback(\n (colorMode: ColorMode) => {\n const doc = getDocument()\n\n if (!doc) return\n\n const cleanup = disableTransitionOnChange\n ? getPreventTransition(environment)\n : undefined\n\n doc.documentElement.dataset.mode = colorMode\n doc.documentElement.style.colorScheme = colorMode\n\n cleanup?.()\n },\n [disableTransitionOnChange, environment, getDocument],\n )\n\n const setClassName = useCallback(\n (isDark: boolean) => {\n const doc = getDocument()\n\n if (!doc) return\n\n doc.body.classList.add(isDark ? \"dark\" : \"light\")\n doc.body.classList.remove(isDark ? \"light\" : \"dark\")\n },\n [getDocument],\n )\n\n const changeColorMode = useCallback(\n (internalColorMode: ColorModeWithSystem) => {\n const colorMode =\n internalColorMode === \"system\"\n ? getSystemColorMode()\n : internalColorMode\n\n setInternalColorMode(internalColorMode)\n setClassName(colorMode === \"dark\")\n setDataset(colorMode)\n\n storageManager.set(internalColorMode)\n },\n [storageManager, getSystemColorMode, setClassName, setDataset],\n )\n\n const toggleColorMode = useCallback(() => {\n changeColorMode(colorMode === \"dark\" ? \"light\" : \"dark\")\n }, [changeColorMode, colorMode])\n\n useEffect(() => {\n const internalColorMode = storageManager.get()\n\n changeColorMode(internalColorMode)\n }, [changeColorMode, storageManager])\n\n const context = useMemo(\n () => ({\n changeColorMode: forcedColorMode ? noop : changeColorMode,\n colorMode: forcedColorMode ?? colorMode,\n forced: forcedColorMode !== undefined,\n internalColorMode,\n toggleColorMode: forcedColorMode ? noop : toggleColorMode,\n }),\n [\n forcedColorMode,\n colorMode,\n internalColorMode,\n changeColorMode,\n toggleColorMode,\n ],\n )\n\n return <ColorModeContext value={context}>{children}</ColorModeContext>\n}\n\n/**\n * `useColorMode` is a custom hook that returns the current color mode.\n *\n * @see https://yamada-ui.com/docs/hooks/use-color-mode\n */\nexport const useColorMode = (): ColorModeContext => {\n const context = use(ColorModeContext)\n\n if (isEmptyObject(context))\n return {\n changeColorMode: noop,\n colorMode: \"light\",\n forced: false,\n internalColorMode: \"light\",\n toggleColorMode: noop,\n }\n else return context\n}\n"],"mappings":";;;;;;;;;;AA4BA,MAAa,mBAAmB,cAAgC;CAC9D,iBAAiBA,cAAAA;CACjB,WAAW;CACX,QAAQ;CACR,mBAAmB;CACnB,iBAAiBA,cAAAA;AACnB,CAAC;AA+BD,MAAa,qBAAiD,EAC5D,UACA,WAAW,iBACX,QAAQ,EACN,mBAAmB,SACnB,4BAA4B,SAC1B,CAAC,GACL,QACA,UAAU,SAAS,WAAW,gBAC9B,aAAa,6BACT;CACJ,MAAM,iBAAiB,cAEnB,qBACE,SACA,YACA,kBACA,MACF,GACF;EAAC;EAAQ;EAAkB;EAAS;CAAU,CAChD;CACA,MAAM,cAAc,eAAe;CACnC,MAAM,EAAE,gBAAgB;CACxB,MAAM,CAAC,mBAAmB,wBACxB,SAA8B,eAAe,IAAI,CAAC;CACpD,MAAM,EAAE,oBAAoB,oBAAoB,mBAAmB;EACjE,WAAW,oBAAoB;GAC7B,IAAI,sBAAsB,UAAU;GAEpC,aAAa,oBAAoB,MAAM;GACvC,WAAW,eAAe;EAC5B;EACA,kBAAkB,eAAe,QAC/B,qBAAqB,SAAS,SAAS,OACzC;CACF,CAAC;CACD,MAAM,YACJ,sBAAsB,WAAW,kBAAkB;CAErD,MAAM,aAAa,aAChB,cAAyB;EACxB,MAAM,MAAM,YAAY;EAExB,IAAI,CAAC,KAAK;EAEV,MAAM,UAAU,4BACZ,qBAAqB,WAAW,IAChC,KAAA;EAEJ,IAAI,gBAAgB,QAAQ,OAAO;EACnC,IAAI,gBAAgB,MAAM,cAAc;EAExC,UAAU;CACZ,GACA;EAAC;EAA2B;EAAa;CAAW,CACtD;CAEA,MAAM,eAAe,aAClB,WAAoB;EACnB,MAAM,MAAM,YAAY;EAExB,IAAI,CAAC,KAAK;EAEV,IAAI,KAAK,UAAU,IAAI,SAAS,SAAS,OAAO;EAChD,IAAI,KAAK,UAAU,OAAO,SAAS,UAAU,MAAM;CACrD,GACA,CAAC,WAAW,CACd;CAEA,MAAM,kBAAkB,aACrB,sBAA2C;EAC1C,MAAM,YACJ,sBAAsB,WAClB,mBAAmB,IACnB;EAEN,qBAAqB,iBAAiB;EACtC,aAAa,cAAc,MAAM;EACjC,WAAW,SAAS;EAEpB,eAAe,IAAI,iBAAiB;CACtC,GACA;EAAC;EAAgB;EAAoB;EAAc;CAAU,CAC/D;CAEA,MAAM,kBAAkB,kBAAkB;EACxC,gBAAgB,cAAc,SAAS,UAAU,MAAM;CACzD,GAAG,CAAC,iBAAiB,SAAS,CAAC;CAE/B,gBAAgB;EAGd,gBAF0B,eAAe,IAET,CAAC;CACnC,GAAG,CAAC,iBAAiB,cAAc,CAAC;CAmBpC,OAAO,oBAAC,kBAAD;EAAkB,OAjBT,eACP;GACL,iBAAiB,kBAAkBA,cAAAA,OAAO;GAC1C,WAAW,mBAAmB;GAC9B,QAAQ,oBAAoB,KAAA;GAC5B;GACA,iBAAiB,kBAAkBA,cAAAA,OAAO;EAC5C,IACA;GACE;GACA;GACA;GACA;GACA;EACF,CAGoC;EAAI;CAA2B,CAAA;AACvE;;;;;;AAOA,MAAa,qBAAuC;CAClD,MAAM,UAAU,IAAI,gBAAgB;CAEpC,KAAA,GAAA,cAAA,cAAA,CAAkB,OAAO,GACvB,OAAO;EACL,iBAAiBA,cAAAA;EACjB,WAAW;EACX,QAAQ;EACR,mBAAmB;EACnB,iBAAiBA,cAAAA;CACnB;MACG,OAAO;AACd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-system.js","names":["bem"],"sources":["../../../../src/core/system/create-system.ts"],"sourcesContent":["import type { Dict, FlattenObjectOptions } from \"../../utils\"\nimport type { CSSAnimationObject, CSSModifierObject } from \"../css\"\nimport type {\n DefineThemeValue,\n System,\n ThemeConfig,\n UsageTheme,\n} from \"./index.types\"\nimport { bem, flattenObject, isArray, isObject, isUndefined } from \"../../utils\"\nimport { DEFAULT_VAR_PREFIX } from \"../constant\"\nimport { createBreakpoints } from \"./breakpoint\"\nimport { createLayers } from \"./layer\"\nimport { createVars, mergeVars } from \"./var\"\n\nexport type VariableResponsiveValue = Dict<\n [DefineThemeValue, DefineThemeValue] | DefineThemeValue\n>\n\nexport type VariableColorModeValue = [\n DefineThemeValue | Dict<DefineThemeValue>,\n DefineThemeValue | Dict<DefineThemeValue>,\n]\n\nexport type VariableKeyframeValue =\n | [\n CSSModifierObject | Dict<CSSModifierObject>,\n CSSModifierObject | Dict<CSSModifierObject>,\n ]\n | CSSModifierObject\n | Dict<CSSModifierObject>\n\nexport type VariableAnimationValue =\n | CSSAnimationObject\n | CSSAnimationObject[]\n | Dict<CSSAnimationObject>\n\nexport type VariableValue =\n | DefineThemeValue\n | VariableAnimationValue\n | VariableColorModeValue\n | VariableKeyframeValue\n | VariableResponsiveValue\n\ninterface VariableToken {\n semantic: boolean\n value: VariableValue\n}\n\nexport interface VariableTokens {\n [key: string]: VariableToken\n}\n\ninterface TokenOptions {\n [key: string]: FlattenObjectOptions\n}\n\nconst primaryTokens = {\n aspectRatios: {},\n blurs: {},\n borders: {},\n colors: {},\n durations: {},\n easings: {},\n fonts: {},\n fontSizes: {},\n fontWeights: {},\n letterSpacings: {},\n lineHeights: {},\n radii: {},\n sizes: {},\n spaces: {},\n zIndices: {},\n} satisfies TokenOptions\n\ntype PrimaryToken = keyof typeof primaryTokens\n\nconst secondaryTokens = {\n gradients: {},\n keyframes: { maxDepth: 1 },\n shadows: {},\n} satisfies TokenOptions\n\ntype SecondaryToken = keyof typeof secondaryTokens\n\nconst tertiaryTokens = {\n animations: { shouldProcess: (obj) => !obj.keyframes },\n} satisfies TokenOptions\n\ntype TertiaryToken = keyof typeof tertiaryTokens\n\nconst tokenMap: {\n [key in \"primary\" | \"secondary\" | \"tertiary\"]: TokenOptions\n} = {\n primary: primaryTokens,\n secondary: secondaryTokens,\n tertiary: tertiaryTokens,\n}\n\nexport type ThemeToken =\n | \"breakpoints\"\n | PrimaryToken\n | SecondaryToken\n | TertiaryToken\n\nexport const defaultSystem: System = {\n breakpoints: createBreakpoints(),\n config: {},\n cssMap: {},\n cssVars: {},\n layers: createLayers(),\n utils: { getClassName: bem },\n}\n\nexport function createSystem(\n theme: UsageTheme,\n config: ThemeConfig = {},\n): System {\n const prefix = config.css?.varPrefix ?? DEFAULT_VAR_PREFIX\n const breakpoints = createBreakpoints(theme.breakpoints, config.breakpoint)\n const layers = createLayers(config.css?.layers)\n const shouldProcess = config.theme?.responsive\n ? (obj: any) => !breakpoints.isResponsive(obj, true)\n : () => true\n\n const primaryTokens = {\n ...createTokens(theme, \"primary\", shouldProcess),\n ...createColorSchemeTokens(theme, undefined, shouldProcess),\n }\n const secondaryTokens = createTokens(theme, \"secondary\", shouldProcess)\n const tertiaryTokens = createTokens(theme, \"tertiary\", shouldProcess)\n\n const { cssMap, cssVars } = mergeVars(\n createVars(prefix, theme, breakpoints)(primaryTokens),\n createVars(prefix, theme, breakpoints)(secondaryTokens),\n createVars(prefix, theme, breakpoints)(tertiaryTokens),\n )()\n\n const getClassName = (\n block?: string,\n element?: string,\n modifier?: string,\n ) => {\n if (!block) return \"\"\n\n const className = bem(block, element, modifier)\n\n return `${prefix}-${className}`\n }\n\n if (theme.themeSchemes) {\n const themeSchemeEntries = Object.entries<Dict>(theme.themeSchemes)\n\n for (const [themeScheme, nestedTheme] of themeSchemeEntries) {\n const themeCondition = `[data-theme=${themeScheme}] &:not([data-theme]), &[data-theme=${themeScheme}]`\n\n const nestedPrimaryTokens = {\n ...createTokens(nestedTheme, \"primary\", shouldProcess),\n ...createColorSchemeTokens(theme, nestedTheme, shouldProcess),\n }\n const nestedSecondaryTokens = createTokens(\n nestedTheme,\n \"secondary\",\n shouldProcess,\n )\n const nestedTertiaryTokens = createTokens(\n nestedTheme,\n \"tertiary\",\n shouldProcess,\n )\n\n const { cssVars: nestedCSSVars } = mergeVars(\n createVars(prefix, theme, breakpoints)(nestedPrimaryTokens),\n createVars(prefix, theme, breakpoints)(nestedSecondaryTokens),\n createVars(prefix, theme, breakpoints)(nestedTertiaryTokens),\n )({ ...primaryTokens, ...secondaryTokens, ...tertiaryTokens })\n\n cssVars[themeCondition] = nestedCSSVars\n }\n }\n\n return {\n breakpoints,\n config,\n cssMap,\n cssVars,\n layers,\n utils: { getClassName },\n }\n}\n\nfunction createColorSchemeTokens(\n theme: Dict,\n nestedTheme: Dict | undefined,\n shouldProcess: FlattenObjectOptions[\"shouldProcess\"],\n) {\n const colors = { base: theme.colors ?? {}, nested: nestedTheme?.colors ?? {} }\n const semanticColors = {\n base: theme.semanticTokens?.colors ?? {},\n nested: nestedTheme?.semanticTokens?.colors ?? {},\n }\n const colorSchemeTokens = flattenObject(\n (nestedTheme ?? theme).semanticTokens?.colorSchemes ?? {},\n { shouldProcess },\n )\n\n const results: VariableTokens = {}\n\n function insertToken(\n primaryKey: string,\n secondaryKey: string | undefined,\n value: any,\n ) {\n if (isUndefined(value)) return\n\n if (!secondaryKey || secondaryKey === \"base\") {\n results[`colors.${primaryKey}`] = { semantic: true, value }\n } else {\n results[`colors.${primaryKey}.${secondaryKey}`] = {\n semantic: true,\n value,\n }\n }\n }\n\n function processValue(primaryKey: string, colors: any, keyOrValue: any) {\n const value = colors.nested[keyOrValue] ?? colors.base[keyOrValue]\n\n if (isObject(value)) {\n const tokens = flattenObject(value, { shouldProcess })\n\n Object.keys(tokens).forEach((secondaryKey) => {\n const value =\n secondaryKey === \"base\" ? keyOrValue : `${keyOrValue}.${secondaryKey}`\n\n insertToken(primaryKey, secondaryKey, value)\n })\n } else {\n insertToken(primaryKey, undefined, keyOrValue)\n }\n }\n\n function processColorModeValue(\n primaryKey: string,\n colors: any,\n keyOrValue: any[],\n ) {\n const [lightValue, darkValue] = keyOrValue\n const lightColors = colors.nested[lightValue] ?? colors.base[lightValue]\n const darkColors = colors.nested[darkValue] ?? colors.base[darkValue]\n\n if (isObject(lightColors) && isObject(darkColors)) {\n const tokens = flattenObject(lightColors, { shouldProcess })\n\n Object.keys(tokens).forEach((secondaryKey) => {\n const value = [\n secondaryKey === \"base\"\n ? lightValue\n : `${lightValue}.${secondaryKey}`,\n secondaryKey === \"base\" ? darkValue : `${darkValue}.${secondaryKey}`,\n ]\n\n insertToken(primaryKey, secondaryKey, value)\n })\n } else if (!isObject(lightValue) && !isObject(darkValue)) {\n insertToken(primaryKey, undefined, [lightValue, darkValue])\n }\n }\n\n Object.entries(colorSchemeTokens).forEach(([primaryKey, value]) => {\n if (isArray(value)) {\n processColorModeValue(primaryKey, colors, value)\n processColorModeValue(primaryKey, semanticColors, value)\n } else {\n processValue(primaryKey, colors, value)\n processValue(primaryKey, semanticColors, value)\n }\n })\n\n return results\n}\n\nfunction createTokens(\n theme: Dict,\n target: \"primary\" | \"secondary\" | \"tertiary\",\n shouldProcess: FlattenObjectOptions[\"shouldProcess\"] = () => true,\n) {\n const results: VariableTokens = {}\n\n Object.entries(tokenMap[target]).forEach(\n ([primaryKey, { shouldProcess: shouldProcessProp, ...rest }]) => {\n const options: FlattenObjectOptions = {\n ...rest,\n shouldProcess: (obj) =>\n shouldProcess(obj) && (!shouldProcessProp || shouldProcessProp(obj)),\n }\n\n const tokens = flattenObject(theme[primaryKey] ?? {}, options)\n const semanticTokens = flattenObject(\n theme.semanticTokens?.[primaryKey] ?? {},\n options,\n )\n\n Object.entries(tokens).forEach(([secondaryKey, value]) => {\n const token = `${primaryKey}.${secondaryKey}`\n\n results[token] = { semantic: false, value }\n })\n\n Object.entries(semanticTokens).forEach(([secondaryKey, value]) => {\n let token = `${primaryKey}.${secondaryKey}`\n\n if (token.endsWith(\".base\")) token = token.replace(\".base\", \"\")\n\n results[token] = { semantic: true, value }\n })\n },\n )\n\n return results\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create-system.js","names":["bem"],"sources":["../../../../src/core/system/create-system.ts"],"sourcesContent":["import type { Dict, FlattenObjectOptions } from \"../../utils\"\nimport type { CSSAnimationObject, CSSModifierObject } from \"../css\"\nimport type {\n DefineThemeValue,\n System,\n ThemeConfig,\n UsageTheme,\n} from \"./index.types\"\nimport { bem, flattenObject, isArray, isObject, isUndefined } from \"../../utils\"\nimport { DEFAULT_VAR_PREFIX } from \"../constant\"\nimport { createBreakpoints } from \"./breakpoint\"\nimport { createLayers } from \"./layer\"\nimport { createVars, mergeVars } from \"./var\"\n\nexport type VariableResponsiveValue = Dict<\n [DefineThemeValue, DefineThemeValue] | DefineThemeValue\n>\n\nexport type VariableColorModeValue = [\n DefineThemeValue | Dict<DefineThemeValue>,\n DefineThemeValue | Dict<DefineThemeValue>,\n]\n\nexport type VariableKeyframeValue =\n | [\n CSSModifierObject | Dict<CSSModifierObject>,\n CSSModifierObject | Dict<CSSModifierObject>,\n ]\n | CSSModifierObject\n | Dict<CSSModifierObject>\n\nexport type VariableAnimationValue =\n | CSSAnimationObject\n | CSSAnimationObject[]\n | Dict<CSSAnimationObject>\n\nexport type VariableValue =\n | DefineThemeValue\n | VariableAnimationValue\n | VariableColorModeValue\n | VariableKeyframeValue\n | VariableResponsiveValue\n\ninterface VariableToken {\n semantic: boolean\n value: VariableValue\n}\n\nexport interface VariableTokens {\n [key: string]: VariableToken\n}\n\ninterface TokenOptions {\n [key: string]: FlattenObjectOptions\n}\n\nconst primaryTokens = {\n aspectRatios: {},\n blurs: {},\n borders: {},\n colors: {},\n durations: {},\n easings: {},\n fonts: {},\n fontSizes: {},\n fontWeights: {},\n letterSpacings: {},\n lineHeights: {},\n radii: {},\n sizes: {},\n spaces: {},\n zIndices: {},\n} satisfies TokenOptions\n\ntype PrimaryToken = keyof typeof primaryTokens\n\nconst secondaryTokens = {\n gradients: {},\n keyframes: { maxDepth: 1 },\n shadows: {},\n} satisfies TokenOptions\n\ntype SecondaryToken = keyof typeof secondaryTokens\n\nconst tertiaryTokens = {\n animations: { shouldProcess: (obj) => !obj.keyframes },\n} satisfies TokenOptions\n\ntype TertiaryToken = keyof typeof tertiaryTokens\n\nconst tokenMap: {\n [key in \"primary\" | \"secondary\" | \"tertiary\"]: TokenOptions\n} = {\n primary: primaryTokens,\n secondary: secondaryTokens,\n tertiary: tertiaryTokens,\n}\n\nexport type ThemeToken =\n | \"breakpoints\"\n | PrimaryToken\n | SecondaryToken\n | TertiaryToken\n\nexport const defaultSystem: System = {\n breakpoints: createBreakpoints(),\n config: {},\n cssMap: {},\n cssVars: {},\n layers: createLayers(),\n utils: { getClassName: bem },\n}\n\nexport function createSystem(\n theme: UsageTheme,\n config: ThemeConfig = {},\n): System {\n const prefix = config.css?.varPrefix ?? DEFAULT_VAR_PREFIX\n const breakpoints = createBreakpoints(theme.breakpoints, config.breakpoint)\n const layers = createLayers(config.css?.layers)\n const shouldProcess = config.theme?.responsive\n ? (obj: any) => !breakpoints.isResponsive(obj, true)\n : () => true\n\n const primaryTokens = {\n ...createTokens(theme, \"primary\", shouldProcess),\n ...createColorSchemeTokens(theme, undefined, shouldProcess),\n }\n const secondaryTokens = createTokens(theme, \"secondary\", shouldProcess)\n const tertiaryTokens = createTokens(theme, \"tertiary\", shouldProcess)\n\n const { cssMap, cssVars } = mergeVars(\n createVars(prefix, theme, breakpoints)(primaryTokens),\n createVars(prefix, theme, breakpoints)(secondaryTokens),\n createVars(prefix, theme, breakpoints)(tertiaryTokens),\n )()\n\n const getClassName = (\n block?: string,\n element?: string,\n modifier?: string,\n ) => {\n if (!block) return \"\"\n\n const className = bem(block, element, modifier)\n\n return `${prefix}-${className}`\n }\n\n if (theme.themeSchemes) {\n const themeSchemeEntries = Object.entries<Dict>(theme.themeSchemes)\n\n for (const [themeScheme, nestedTheme] of themeSchemeEntries) {\n const themeCondition = `[data-theme=${themeScheme}] &:not([data-theme]), &[data-theme=${themeScheme}]`\n\n const nestedPrimaryTokens = {\n ...createTokens(nestedTheme, \"primary\", shouldProcess),\n ...createColorSchemeTokens(theme, nestedTheme, shouldProcess),\n }\n const nestedSecondaryTokens = createTokens(\n nestedTheme,\n \"secondary\",\n shouldProcess,\n )\n const nestedTertiaryTokens = createTokens(\n nestedTheme,\n \"tertiary\",\n shouldProcess,\n )\n\n const { cssVars: nestedCSSVars } = mergeVars(\n createVars(prefix, theme, breakpoints)(nestedPrimaryTokens),\n createVars(prefix, theme, breakpoints)(nestedSecondaryTokens),\n createVars(prefix, theme, breakpoints)(nestedTertiaryTokens),\n )({ ...primaryTokens, ...secondaryTokens, ...tertiaryTokens })\n\n cssVars[themeCondition] = nestedCSSVars\n }\n }\n\n return {\n breakpoints,\n config,\n cssMap,\n cssVars,\n layers,\n utils: { getClassName },\n }\n}\n\nfunction createColorSchemeTokens(\n theme: Dict,\n nestedTheme: Dict | undefined,\n shouldProcess: FlattenObjectOptions[\"shouldProcess\"],\n) {\n const colors = { base: theme.colors ?? {}, nested: nestedTheme?.colors ?? {} }\n const semanticColors = {\n base: theme.semanticTokens?.colors ?? {},\n nested: nestedTheme?.semanticTokens?.colors ?? {},\n }\n const colorSchemeTokens = flattenObject(\n (nestedTheme ?? theme).semanticTokens?.colorSchemes ?? {},\n { shouldProcess },\n )\n\n const results: VariableTokens = {}\n\n function insertToken(\n primaryKey: string,\n secondaryKey: string | undefined,\n value: any,\n ) {\n if (isUndefined(value)) return\n\n if (!secondaryKey || secondaryKey === \"base\")\n results[`colors.${primaryKey}`] = { semantic: true, value }\n else\n results[`colors.${primaryKey}.${secondaryKey}`] = {\n semantic: true,\n value,\n }\n }\n\n function processValue(primaryKey: string, colors: any, keyOrValue: any) {\n const value = colors.nested[keyOrValue] ?? colors.base[keyOrValue]\n\n if (isObject(value)) {\n const tokens = flattenObject(value, { shouldProcess })\n\n Object.keys(tokens).forEach((secondaryKey) => {\n const value =\n secondaryKey === \"base\" ? keyOrValue : `${keyOrValue}.${secondaryKey}`\n\n insertToken(primaryKey, secondaryKey, value)\n })\n } else {\n insertToken(primaryKey, undefined, keyOrValue)\n }\n }\n\n function processColorModeValue(\n primaryKey: string,\n colors: any,\n keyOrValue: any[],\n ) {\n const [lightValue, darkValue] = keyOrValue\n const lightColors = colors.nested[lightValue] ?? colors.base[lightValue]\n const darkColors = colors.nested[darkValue] ?? colors.base[darkValue]\n\n if (isObject(lightColors) && isObject(darkColors)) {\n const tokens = flattenObject(lightColors, { shouldProcess })\n\n Object.keys(tokens).forEach((secondaryKey) => {\n const value = [\n secondaryKey === \"base\"\n ? lightValue\n : `${lightValue}.${secondaryKey}`,\n secondaryKey === \"base\" ? darkValue : `${darkValue}.${secondaryKey}`,\n ]\n\n insertToken(primaryKey, secondaryKey, value)\n })\n } else if (!isObject(lightValue) && !isObject(darkValue)) {\n insertToken(primaryKey, undefined, [lightValue, darkValue])\n }\n }\n\n Object.entries(colorSchemeTokens).forEach(([primaryKey, value]) => {\n if (isArray(value)) {\n processColorModeValue(primaryKey, colors, value)\n processColorModeValue(primaryKey, semanticColors, value)\n } else {\n processValue(primaryKey, colors, value)\n processValue(primaryKey, semanticColors, value)\n }\n })\n\n return results\n}\n\nfunction createTokens(\n theme: Dict,\n target: \"primary\" | \"secondary\" | \"tertiary\",\n shouldProcess: FlattenObjectOptions[\"shouldProcess\"] = () => true,\n) {\n const results: VariableTokens = {}\n\n Object.entries(tokenMap[target]).forEach(\n ([primaryKey, { shouldProcess: shouldProcessProp, ...rest }]) => {\n const options: FlattenObjectOptions = {\n ...rest,\n shouldProcess: (obj) =>\n shouldProcess(obj) && (!shouldProcessProp || shouldProcessProp(obj)),\n }\n\n const tokens = flattenObject(theme[primaryKey] ?? {}, options)\n const semanticTokens = flattenObject(\n theme.semanticTokens?.[primaryKey] ?? {},\n options,\n )\n\n Object.entries(tokens).forEach(([secondaryKey, value]) => {\n const token = `${primaryKey}.${secondaryKey}`\n\n results[token] = { semantic: false, value }\n })\n\n Object.entries(semanticTokens).forEach(([secondaryKey, value]) => {\n let token = `${primaryKey}.${secondaryKey}`\n\n if (token.endsWith(\".base\")) token = token.replace(\".base\", \"\")\n\n results[token] = { semantic: true, value }\n })\n },\n )\n\n return results\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment-provider.js","names":[],"sources":["../../../../src/core/system/environment-provider.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, PropsWithChildren } from \"react\"\nimport { createContext, use, useCallback, useMemo, useRef } from \"react\"\nimport { createdDom, getDocument, getWindow, runIfFn } from \"../../utils\"\n\nexport type RootNode = Document | Node | ShadowRoot\n\nexport interface Environment {\n getDocument: () => Document | undefined\n getRootNode: () => RootNode | undefined\n getWindow: () => undefined | Window\n}\n\nexport const defaultEnvironment: Environment = {\n getDocument: () => document,\n getRootNode: () => document,\n getWindow: () => window,\n}\n\nconst EnvironmentContext = createContext<Environment>(defaultEnvironment)\n\nexport interface EnvironmentProviderProps extends PropsWithChildren {\n value?: (() => RootNode) | RootNode\n}\n\nexport const EnvironmentProvider: FC<EnvironmentProviderProps> = ({\n children,\n value,\n}) => {\n const ref = useRef<HTMLSpanElement>(null)\n\n const getRootNode = useCallback(() => {\n return runIfFn(value) ?? ref.current?.getRootNode() ?? document\n }, [value, ref])\n\n const context = useMemo<Environment>(() => {\n if (createdDom())
|
|
1
|
+
{"version":3,"file":"environment-provider.js","names":[],"sources":["../../../../src/core/system/environment-provider.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, PropsWithChildren } from \"react\"\nimport { createContext, use, useCallback, useMemo, useRef } from \"react\"\nimport { createdDom, getDocument, getWindow, runIfFn } from \"../../utils\"\n\nexport type RootNode = Document | Node | ShadowRoot\n\nexport interface Environment {\n getDocument: () => Document | undefined\n getRootNode: () => RootNode | undefined\n getWindow: () => undefined | Window\n}\n\nexport const defaultEnvironment: Environment = {\n getDocument: () => document,\n getRootNode: () => document,\n getWindow: () => window,\n}\n\nconst EnvironmentContext = createContext<Environment>(defaultEnvironment)\n\nexport interface EnvironmentProviderProps extends PropsWithChildren {\n value?: (() => RootNode) | RootNode\n}\n\nexport const EnvironmentProvider: FC<EnvironmentProviderProps> = ({\n children,\n value,\n}) => {\n const ref = useRef<HTMLSpanElement>(null)\n\n const getRootNode = useCallback(() => {\n return runIfFn(value) ?? ref.current?.getRootNode() ?? document\n }, [value, ref])\n\n const context = useMemo<Environment>(() => {\n if (createdDom())\n return {\n getDocument: () => getDocument(getRootNode()),\n getRootNode,\n getWindow: () => getWindow(getRootNode()),\n }\n else\n return {\n getDocument: () => undefined,\n getRootNode: () => undefined,\n getWindow: () => undefined,\n }\n }, [getRootNode])\n\n return (\n <EnvironmentContext value={context}>\n {children}\n\n {!value ? <span ref={ref} hidden /> : null}\n </EnvironmentContext>\n )\n}\n\nexport const useEnvironment = () => {\n return use(EnvironmentContext)\n}\n"],"mappings":";;;;;AAcA,MAAa,qBAAkC;CAC7C,mBAAmB;CACnB,mBAAmB;CACnB,iBAAiB;AACnB;AAEA,MAAM,qBAAqB,cAA2B,kBAAkB;AAMxE,MAAa,uBAAqD,EAChE,UACA,YACI;CACJ,MAAM,MAAM,OAAwB,IAAI;CAExC,MAAM,cAAc,kBAAkB;EACpC,QAAA,GAAA,cAAA,QAAA,CAAe,KAAK,KAAK,IAAI,SAAS,YAAY,KAAK;CACzD,GAAG,CAAC,OAAO,GAAG,CAAC;CAiBf,OACE,qBAAC,oBAAD;EAAoB,OAhBN,cAA2B;GACzC,KAAA,GAAA,cAAA,WAAA,CAAe,GACb,OAAO;IACL,oBAAA,GAAA,cAAA,YAAA,CAA+B,YAAY,CAAC;IAC5C;IACA,kBAAA,GAAA,cAAA,UAAA,CAA2B,YAAY,CAAC;GAC1C;QAEA,OAAO;IACL,mBAAmB,KAAA;IACnB,mBAAmB,KAAA;IACnB,iBAAiB,KAAA;GACnB;EACJ,GAAG,CAAC,WAAW,CAGoB;YAAjC,CACG,UAEA,CAAC,QAAQ,oBAAC,QAAD;GAAW;GAAK,QAAA;EAAQ,CAAA,IAAI,IACpB;;AAExB;AAEA,MAAa,uBAAuB;CAClC,OAAO,IAAI,kBAAkB;AAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-manager.js","names":[],"sources":["../../../../src/core/system/storage-manager.ts"],"sourcesContent":["\"use client\"\n\nexport type Storage = \"cookie\" | \"localStorage\"\n\nconst hasSupport = !!(globalThis.document as Document | undefined)\n\nfunction parseCookie<Y extends string>(\n cookie: string,\n key: string,\n): undefined | Y {\n const match = cookie.match(new RegExp(`(^| )${key}=([^;]+)`))\n\n return match?.[2] as undefined | Y\n}\n\nexport interface StorageManager<Y extends string, M extends Y = Y> {\n default(value: M): M\n get(value?: Y): Y\n set(value: Y): void\n}\n\nexport function createStorageManager<Y extends string, M extends Y = Y>(\n storage: Storage,\n storageKey: string,\n defaultValue: Y,\n cookie?: string,\n): StorageManager<Y, M> {\n return {\n default(value) {\n const defaultStorageKey = `default-${storageKey}`\n\n if (cookie) return parseCookie(cookie, defaultStorageKey) || value\n\n if (storage === \"localStorage\") {\n try {\n return (localStorage.getItem(defaultStorageKey) as M | null) || value\n } catch {\n return value\n }\n } else {\n if (!hasSupport) return value\n\n return parseCookie(document.cookie, defaultStorageKey) || value\n }\n },\n get(value = defaultValue) {\n if (cookie) return parseCookie(cookie, storageKey) || value\n\n if (storage === \"localStorage\") {\n try {\n return (localStorage.getItem(storageKey) as null | Y) || value\n } catch {\n return value\n }\n } else {\n if (!hasSupport) return value\n\n return parseCookie(document.cookie, storageKey) || value\n }\n },\n set(value: Y) {\n if (storage === \"localStorage\")
|
|
1
|
+
{"version":3,"file":"storage-manager.js","names":[],"sources":["../../../../src/core/system/storage-manager.ts"],"sourcesContent":["\"use client\"\n\nexport type Storage = \"cookie\" | \"localStorage\"\n\nconst hasSupport = !!(globalThis.document as Document | undefined)\n\nfunction parseCookie<Y extends string>(\n cookie: string,\n key: string,\n): undefined | Y {\n const match = cookie.match(new RegExp(`(^| )${key}=([^;]+)`))\n\n return match?.[2] as undefined | Y\n}\n\nexport interface StorageManager<Y extends string, M extends Y = Y> {\n default(value: M): M\n get(value?: Y): Y\n set(value: Y): void\n}\n\nexport function createStorageManager<Y extends string, M extends Y = Y>(\n storage: Storage,\n storageKey: string,\n defaultValue: Y,\n cookie?: string,\n): StorageManager<Y, M> {\n return {\n default(value) {\n const defaultStorageKey = `default-${storageKey}`\n\n if (cookie) return parseCookie(cookie, defaultStorageKey) || value\n\n if (storage === \"localStorage\") {\n try {\n return (localStorage.getItem(defaultStorageKey) as M | null) || value\n } catch {\n return value\n }\n } else {\n if (!hasSupport) return value\n\n return parseCookie(document.cookie, defaultStorageKey) || value\n }\n },\n get(value = defaultValue) {\n if (cookie) return parseCookie(cookie, storageKey) || value\n\n if (storage === \"localStorage\") {\n try {\n return (localStorage.getItem(storageKey) as null | Y) || value\n } catch {\n return value\n }\n } else {\n if (!hasSupport) return value\n\n return parseCookie(document.cookie, storageKey) || value\n }\n },\n set(value: Y) {\n if (storage === \"localStorage\") localStorage.setItem(storageKey, value)\n else document.cookie = `${storageKey}=${value}; max-age=31536000; path=/`\n },\n }\n}\n"],"mappings":";;AAIA,MAAM,aAAa,CAAC,CAAE,WAAW;AAEjC,SAAS,YACP,QACA,KACe;CAGf,OAFc,OAAO,MAAM,IAAI,OAAO,QAAQ,IAAI,SAAS,CAEhD,CAAC,GAAG;AACjB;AAQA,SAAgB,qBACd,SACA,YACA,cACA,QACsB;CACtB,OAAO;EACL,QAAQ,OAAO;GACb,MAAM,oBAAoB,WAAW;GAErC,IAAI,QAAQ,OAAO,YAAY,QAAQ,iBAAiB,KAAK;GAE7D,IAAI,YAAY,gBACd,IAAI;IACF,OAAQ,aAAa,QAAQ,iBAAiB,KAAkB;GAClE,QAAQ;IACN,OAAO;GACT;QACK;IACL,IAAI,CAAC,YAAY,OAAO;IAExB,OAAO,YAAY,SAAS,QAAQ,iBAAiB,KAAK;GAC5D;EACF;EACA,IAAI,QAAQ,cAAc;GACxB,IAAI,QAAQ,OAAO,YAAY,QAAQ,UAAU,KAAK;GAEtD,IAAI,YAAY,gBACd,IAAI;IACF,OAAQ,aAAa,QAAQ,UAAU,KAAkB;GAC3D,QAAQ;IACN,OAAO;GACT;QACK;IACL,IAAI,CAAC,YAAY,OAAO;IAExB,OAAO,YAAY,SAAS,QAAQ,UAAU,KAAK;GACrD;EACF;EACA,IAAI,OAAU;GACZ,IAAI,YAAY,gBAAgB,aAAa,QAAQ,YAAY,KAAK;QACjE,SAAS,SAAS,GAAG,WAAW,GAAG,MAAM;EAChD;CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-script.js","names":[],"sources":["../../../../src/core/system/storage-script.tsx"],"sourcesContent":["\"use client\"\n\nimport type { ColorModeWithSystem, ThemeScheme } from \"./index.types\"\nimport type { Storage } from \"./storage-manager\"\nimport { createdDom } from \"../../utils\"\nimport { COLOR_MODE_STORAGE_KEY, THEME_SCHEME_STORAGE_KEY } from \"../constant\"\n\nexport interface StorageScriptProps<Y extends string> {\n defaultValue?: Y\n key?: string\n nonce?: string\n type?: Storage\n}\n\nexport function getStorageScript<Y extends string>(\n type: \"colorMode\" | \"themeScheme\",\n defaultKey: string,\n) {\n return function ({\n key = defaultKey,\n type: storage = \"localStorage\",\n defaultValue,\n }: Omit<StorageScriptProps<Y>, \"nonce\"> = {}) {\n if (type === \"colorMode\")
|
|
1
|
+
{"version":3,"file":"storage-script.js","names":[],"sources":["../../../../src/core/system/storage-script.tsx"],"sourcesContent":["\"use client\"\n\nimport type { ColorModeWithSystem, ThemeScheme } from \"./index.types\"\nimport type { Storage } from \"./storage-manager\"\nimport { createdDom } from \"../../utils\"\nimport { COLOR_MODE_STORAGE_KEY, THEME_SCHEME_STORAGE_KEY } from \"../constant\"\n\nexport interface StorageScriptProps<Y extends string> {\n defaultValue?: Y\n key?: string\n nonce?: string\n type?: Storage\n}\n\nexport function getStorageScript<Y extends string>(\n type: \"colorMode\" | \"themeScheme\",\n defaultKey: string,\n) {\n return function ({\n key = defaultKey,\n type: storage = \"localStorage\",\n defaultValue,\n }: Omit<StorageScriptProps<Y>, \"nonce\"> = {}) {\n if (type === \"colorMode\")\n if (storage === \"localStorage\")\n return `!(function(){try{var a=function(c){var v=\"(prefers-color-scheme: dark)\",h=window.matchMedia(v).matches?\"dark\":\"light\",r=c===\"system\"?h:c,o=document.documentElement,s=document.body,l=\"light\",d=\"dark\",i=r===\"dark\";return s.classList.add(i?d:l),s.classList.remove(i?l:d),o.style.colorScheme=r,o.dataset.mode=r,r},m=\"${defaultValue}\",e=\"${key}\",t=localStorage.getItem(e);t?a(t):(localStorage.setItem(e,m),localStorage.setItem(\\`default-\\${e}\\`,a(m)))}catch{}})();`\n else\n return `!(function(){try{var a=function(o){var l=\"(prefers-color-scheme: dark)\",v=window.matchMedia(l).matches?\"dark\":\"light\",e=o===\"system\"?v:o,d=document.documentElement,m=document.body,i=\"light\",n=\"dark\",s=e===\"dark\";return m.classList.add(s?n:i),m.classList.remove(s?i:n),d.style.colorScheme=e,d.dataset.mode=e,e},h=\"${defaultValue}\",r=\"${key}\",t=document.cookie.match(new RegExp(\"(^| )\".concat(r,\"=([^;]+)\"))),c=t?t[2]:null;c?a(c):(document.cookie=\"\".concat(r,\"=\").concat(h,\"; max-age=31536000; path=/\"),document.cookie=\"\".concat(\\`default-\\${r}\\`,\"=\").concat(a(h),\"; max-age=31536000; path=/\"))}catch{}})();`\n else if (storage === \"localStorage\")\n return `!(function(){try{var a=function(c){var o=document.documentElement;return o.dataset.theme=c,c},m='${defaultValue}',e='${key}',t=localStorage.getItem(e);t?a(t):localStorage.setItem(e, a(m))}catch{}})();`\n else\n return `!(function(){try{var a=function(c){var o=document.documentElement;return o.dataset.theme=c,c},h='${defaultValue}',r='${key}',t=document.cookie.match(new RegExp('(^| )'.concat(r,'=([^;]+)'))),c=t?t[2]:null;c?a(c):(document.cookie=''.concat(r,'=').concat(a(h),'; max-age=31536000; path=/'))}catch{}})();`\n }\n}\n\nexport function ColorModeScript({\n nonce,\n ...rest\n}: StorageScriptProps<ColorModeWithSystem>) {\n const html = getStorageScript(\n \"colorMode\",\n COLOR_MODE_STORAGE_KEY,\n )({ defaultValue: \"light\", ...rest })\n\n if (createdDom()) return null\n\n return <script dangerouslySetInnerHTML={{ __html: html }} nonce={nonce} />\n}\n\nexport function ThemeSchemeScript({\n nonce,\n ...rest\n}: StorageScriptProps<ThemeScheme>) {\n const html = getStorageScript(\n \"themeScheme\",\n THEME_SCHEME_STORAGE_KEY,\n )({\n defaultValue: \"base\",\n ...rest,\n })\n\n if (createdDom()) return null\n\n return <script dangerouslySetInnerHTML={{ __html: html }} nonce={nonce} />\n}\n"],"mappings":";;;;;AAcA,SAAgB,iBACd,MACA,YACA;CACA,OAAO,SAAU,EACf,MAAM,YACN,MAAM,UAAU,gBAChB,iBACwC,CAAC,GAAG;EAC5C,IAAI,SAAS,aACX,IAAI,YAAY,gBACd,OAAO,4TAA4T,aAAa,OAAO,IAAI;OAE3V,OAAO,4TAA4T,aAAa,OAAO,IAAI;OAC1V,IAAI,YAAY,gBACnB,OAAO,oGAAoG,aAAa,OAAO,IAAI;OAEnI,OAAO,oGAAoG,aAAa,OAAO,IAAI;CACvI;AACF;AAEA,SAAgB,gBAAgB,EAC9B,OACA,GAAG,QACuC;CAC1C,MAAM,OAAO,iBACX,aACA,sBACF,CAAC,CAAC;EAAE,cAAc;EAAS,GAAG;CAAK,CAAC;CAEpC,KAAA,GAAA,cAAA,WAAA,CAAe,GAAG,OAAO;CAEzB,OAAO,oBAAC,UAAD;EAAQ,yBAAyB,EAAE,QAAQ,KAAK;EAAU;CAAQ,CAAA;AAC3E;AAEA,SAAgB,kBAAkB,EAChC,OACA,GAAG,QAC+B;CAClC,MAAM,OAAO,iBACX,eACA,wBACF,CAAC,CAAC;EACA,cAAc;EACd,GAAG;CACL,CAAC;CAED,KAAA,GAAA,cAAA,WAAA,CAAe,GAAG,OAAO;CAEzB,OAAO,oBAAC,UAAD;EAAQ,yBAAyB,EAAE,QAAQ,KAAK;EAAU;CAAQ,CAAA;AAC3E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-system-color-mode.js","names":[],"sources":["../../../../src/core/system/use-system-color-mode.ts"],"sourcesContent":["\"use client\"\n\nimport type { ColorMode } from \"./index.types\"\nimport { useCallback, useEffect, useState } from \"react\"\nimport { fnAll, useCallbackRef, useSafeLayoutEffect } from \"../../utils\"\nimport { useEnvironment } from \"./environment-provider\"\n\nexport interface UseSystemColorModeProps {\n defaultColorMode: ColorMode\n callback?: (colorMode: ColorMode) => void\n}\n\n/**\n * `useSystemColorMode` is a custom hook that returns the current system color mode.\n */\nexport const useSystemColorMode = ({\n callback,\n defaultColorMode,\n}: UseSystemColorModeProps) => {\n const { getWindow } = useEnvironment()\n const callbackRef = useCallbackRef(callback)\n const [systemColorMode, setSystemColorMode] =\n useState<ColorMode>(defaultColorMode)\n\n const getSystemColorMode = useCallback(\n (fallback?: ColorMode) => {\n const mql = getWindow()?.matchMedia(\"(prefers-color-scheme: dark)\")\n const dark = mql?.matches ?? fallback === \"dark\"\n\n return dark ? \"dark\" : \"light\"\n },\n [getWindow],\n )\n\n const systemColorModeObserver = useCallback(\n (func: (cm: ColorMode) => void) => {\n const mql = getWindow()?.matchMedia(\"(prefers-color-scheme: dark)\")\n\n const listener = (e: MediaQueryListEvent) => {\n func(e.matches ? \"dark\" : \"light\")\n }\n\n if (typeof mql?.addListener === \"function\")
|
|
1
|
+
{"version":3,"file":"use-system-color-mode.js","names":[],"sources":["../../../../src/core/system/use-system-color-mode.ts"],"sourcesContent":["\"use client\"\n\nimport type { ColorMode } from \"./index.types\"\nimport { useCallback, useEffect, useState } from \"react\"\nimport { fnAll, useCallbackRef, useSafeLayoutEffect } from \"../../utils\"\nimport { useEnvironment } from \"./environment-provider\"\n\nexport interface UseSystemColorModeProps {\n defaultColorMode: ColorMode\n callback?: (colorMode: ColorMode) => void\n}\n\n/**\n * `useSystemColorMode` is a custom hook that returns the current system color mode.\n */\nexport const useSystemColorMode = ({\n callback,\n defaultColorMode,\n}: UseSystemColorModeProps) => {\n const { getWindow } = useEnvironment()\n const callbackRef = useCallbackRef(callback)\n const [systemColorMode, setSystemColorMode] =\n useState<ColorMode>(defaultColorMode)\n\n const getSystemColorMode = useCallback(\n (fallback?: ColorMode) => {\n const mql = getWindow()?.matchMedia(\"(prefers-color-scheme: dark)\")\n const dark = mql?.matches ?? fallback === \"dark\"\n\n return dark ? \"dark\" : \"light\"\n },\n [getWindow],\n )\n\n const systemColorModeObserver = useCallback(\n (func: (cm: ColorMode) => void) => {\n const mql = getWindow()?.matchMedia(\"(prefers-color-scheme: dark)\")\n\n const listener = (e: MediaQueryListEvent) => {\n func(e.matches ? \"dark\" : \"light\")\n }\n\n if (typeof mql?.addListener === \"function\") mql.addListener(listener)\n else mql?.addEventListener(\"change\", listener)\n\n return () => {\n if (typeof mql?.removeListener === \"function\")\n mql.removeListener(listener)\n else mql?.removeEventListener(\"change\", listener)\n }\n },\n [getWindow],\n )\n\n useSafeLayoutEffect(() => {\n setSystemColorMode(getSystemColorMode())\n }, [getSystemColorMode])\n\n useEffect(() => {\n return systemColorModeObserver(fnAll(setSystemColorMode, callbackRef))\n }, [systemColorModeObserver, getSystemColorMode, callbackRef])\n\n return { getSystemColorMode, systemColorMode }\n}\n"],"mappings":";;;;;;;;;;AAeA,MAAa,sBAAsB,EACjC,UACA,uBAC6B;CAC7B,MAAM,EAAE,cAAc,eAAe;CACrC,MAAM,cAAc,eAAe,QAAQ;CAC3C,MAAM,CAAC,iBAAiB,sBACtB,SAAoB,gBAAgB;CAEtC,MAAM,qBAAqB,aACxB,aAAyB;EAIxB,QAHY,UAAU,CAAC,EAAE,WAAW,8BAA8B,CAAC,GACjD,WAAW,aAAa,SAE5B,SAAS;CACzB,GACA,CAAC,SAAS,CACZ;CAEA,MAAM,0BAA0B,aAC7B,SAAkC;EACjC,MAAM,MAAM,UAAU,CAAC,EAAE,WAAW,8BAA8B;EAElE,MAAM,YAAY,MAA2B;GAC3C,KAAK,EAAE,UAAU,SAAS,OAAO;EACnC;EAEA,IAAI,OAAO,KAAK,gBAAgB,YAAY,IAAI,YAAY,QAAQ;OAC/D,KAAK,iBAAiB,UAAU,QAAQ;EAE7C,aAAa;GACX,IAAI,OAAO,KAAK,mBAAmB,YACjC,IAAI,eAAe,QAAQ;QACxB,KAAK,oBAAoB,UAAU,QAAQ;EAClD;CACF,GACA,CAAC,SAAS,CACZ;CAEA,0BAA0B;EACxB,mBAAmB,mBAAmB,CAAC;CACzC,GAAG,CAAC,kBAAkB,CAAC;CAEvB,gBAAgB;EACd,OAAO,yBAAA,GAAA,cAAA,MAAA,CAA8B,oBAAoB,WAAW,CAAC;CACvE,GAAG;EAAC;EAAyB;EAAoB;CAAW,CAAC;CAE7D,OAAO;EAAE;EAAoB;CAAgB;AAC/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"var.js","names":["calc"],"sources":["../../../../src/core/system/var.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { CSSProperties, StyleValueWithCondition } from \"../css\"\nimport type {\n CSSMap,\n DefineThemeValue,\n System,\n ThemeToken,\n UsageTheme,\n VariableTokens,\n VariableValue,\n} from \"../system\"\nimport type { Breakpoints } from \"./breakpoint\"\nimport {\n calc,\n escape,\n isArray,\n isNull,\n isObject,\n isString,\n isUndefined,\n merge,\n replaceObject,\n} from \"../../utils\"\nimport { DEFAULT_VAR_PREFIX } from \"../constant\"\nimport {\n animation,\n colorMix,\n conditions,\n css,\n getStyle,\n gradient,\n injectKeyframes,\n isCSSFunction,\n isCSSVar,\n} from \"../css\"\nimport { isInterpolation } from \"../css/utils\"\nimport { defaultSystem } from \"../system\"\n\ntype ParsedValue = number | string | undefined\n\ninterface Variable {\n reference: string\n variable: string\n}\n\nexport function transformInterpolation(\n value: any,\n callback: (value: string, fallbackValue?: string) => string,\n) {\n if (isString(value)) {\n return value.replace(/\\{(.*?)\\}/g, (_, value) => {\n const [token, fallbackValue] = value.split(/,(.+)/)\n\n return callback(token.trim(), fallbackValue?.trim())\n })\n } else {\n return value\n }\n}\n\nexport function getVar(token: string, fallback?: string) {\n if (!token.startsWith(\"--\")) token = `--${token}`\n\n token = token.replace(/[^-_a-zA-Z0-9]/g, \"\")\n\n return fallback ? `var(${token}, ${fallback})` : `var(${token})`\n}\n\nexport function getVarName(system: System) {\n return function (token: string) {\n const prefix = system.config.css?.varPrefix ?? DEFAULT_VAR_PREFIX\n\n return `--${prefix}-${token}`\n }\n}\n\nexport function getColorSchemeVar(system: System) {\n return function (value: any, fallback?: string) {\n if (!isString(value)) return value\n\n const prefix = system.config.css?.varPrefix ?? DEFAULT_VAR_PREFIX\n\n const [, token] = value.split(\".\")\n\n return getVar(`${prefix}-colorScheme-${token}`, fallback)\n }\n}\n\nconst isGradient = (token: string) => token.startsWith(\"gradients.\")\nconst isKeyframes = (token: string) => token.startsWith(\"keyframes.\")\nconst isAnimation = (token: string) => token.startsWith(\"animations.\")\nconst isSpace = (token: string) => token.startsWith(\"spaces.\")\nconst isColor = (token: string) => token.startsWith(\"colors.\")\nexport const isColorScheme = (token: any) =>\n isString(token) && token.startsWith(\"colorScheme.\") && !token.includes(\"/\")\n\nexport function createVars(\n prefix: string = DEFAULT_VAR_PREFIX,\n theme: UsageTheme,\n breakpoints: Breakpoints,\n) {\n return function (tokens: VariableTokens) {\n const { getQuery, isResponsive } = breakpoints\n\n function tokenToVar(token: string): Variable {\n token = token.replace(/\\./g, \"-\")\n token = token.replace(/\\//g, \"\\\\/\")\n\n const variable = `--${[prefix, escape(token, \"-\")].filter(Boolean).join(\"-\")}`\n const reference = `var(${variable})`\n\n return { reference, variable }\n }\n\n return function (\n cssMap: CSSMap = {},\n cssVars: Dict = {},\n prevTokens?: VariableTokens,\n ): { cssMap: CSSMap; cssVars: Dict } {\n const system: System = { ...defaultSystem, cssMap }\n const options = { css, system, theme }\n\n function getRelatedReference(\n token: string,\n value: ParsedValue = \"\",\n ): [ParsedValue, Exclude<ParsedValue, undefined>] {\n const relatedToken = [token.split(\".\")[0], value].join(\".\")\n\n if (token === relatedToken) return [undefined, value]\n\n const targetToken = tokens[relatedToken] ?? prevTokens?.[relatedToken]\n\n if (!targetToken) return [undefined, value]\n\n const { reference, variable } = tokenToVar(relatedToken)\n\n return [variable, reference]\n }\n\n function valueToVar(value: any) {\n return transformInterpolation(value, (value, fallbackValue) => {\n if (value.includes(\"colors.\") || value.includes(\"colorScheme.\")) {\n if (isColorScheme(value)) return getColorSchemeVar(system)(value)\n\n return colorMix(value, { fallback: fallbackValue, system })\n } else {\n const token = tokens[value] ?? prevTokens?.[value]\n\n if (token) {\n return tokenToVar(value).reference\n } else if (value in cssMap && cssMap[value]?.ref) {\n return cssMap[value].ref\n } else if (fallbackValue) {\n fallbackValue =\n fallbackValue in cssMap && cssMap[fallbackValue]?.ref\n ? cssMap[fallbackValue]?.ref\n : fallbackValue\n\n return `var(--${prefix}-${value}, ${fallbackValue})`\n } else {\n return `var(--${prefix}-${value})`\n }\n }\n })\n }\n\n function createNegativeVar(token: string, reference: string) {\n const paths = token.split(\".\")\n const [start, ...rest] = paths\n\n const negativeToken = `${start}.-${rest.join(\".\")}`\n\n const negativeReference = calc.negate(reference)\n\n return { negativeReference, negativeToken }\n }\n\n function createAnimationVar(value: VariableValue) {\n if (isArray(value)) {\n return value.map((value) => animation(value, options)).join(\",\")\n } else {\n return animation(value, options)\n }\n }\n\n function createGradientVar(token: string, value: DefineThemeValue) {\n return function (semantic: boolean) {\n if (!semantic) {\n return gradient(value, options)\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable ? reference : gradient(value, options)\n }\n }\n }\n\n function createKeyframesVar(token: string, value: any) {\n return function (semantic: boolean) {\n if (!semantic) {\n return injectKeyframes(css(system, theme)(value))\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable\n ? reference\n : injectKeyframes(css(system, theme)(value))\n }\n }\n }\n\n function createColorVar(\n token: string,\n properties: string[],\n value: DefineThemeValue,\n ) {\n return function (semantic: boolean) {\n if (!semantic) {\n return colorMix(value, { ...options, properties })\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable\n ? reference\n : colorMix(value, { ...options, properties })\n }\n }\n }\n\n function createVar(\n token: string,\n value: VariableValue,\n variable: string,\n ) {\n return function (semantic: boolean, queries: string[] = []) {\n if (isAnimation(token)) value = createAnimationVar(value)\n\n if (isArray(value)) {\n const [lightValue, darkValue] = value\n\n createVar(token, lightValue, variable)(semantic, queries)\n createVar(\n token,\n darkValue,\n variable,\n )(semantic, [...queries, conditions._dark])\n } else if (isResponsive(value, true)) {\n Object.entries(value).forEach(([key, value]) => {\n if (key === \"base\") {\n createVar(token, value, variable)(semantic, queries)\n } else {\n const query = getQuery(key)\n\n if (!query) return\n\n createVar(token, value, variable)(semantic, [...queries, query])\n }\n })\n } else {\n const computedValue: DefineThemeValue = valueToVar(value)\n\n let resolvedValue: DefineThemeValue | Dict = computedValue\n\n if (isKeyframes(token)) {\n resolvedValue = createKeyframesVar(token, computedValue)(semantic)\n } else if (isGradient(token)) {\n resolvedValue = createGradientVar(token, computedValue)(semantic)\n } else if (isColor(token)) {\n resolvedValue = createColorVar(\n token,\n [variable],\n computedValue,\n )(semantic)\n } else if (semantic) {\n const [, reference] = getRelatedReference(token, computedValue)\n\n resolvedValue = reference\n }\n\n if (!isObject(resolvedValue))\n resolvedValue = { [variable]: resolvedValue }\n\n const resolvedCssVars = queries.reduceRight<Dict>(\n (prev, key) => ({ [key]: prev }),\n resolvedValue,\n )\n\n cssVars = merge(cssVars, resolvedCssVars)\n }\n }\n }\n\n for (let [token, { semantic, value }] of Object.entries(tokens)) {\n const { reference, variable } = tokenToVar(token)\n\n createVar(token, value, variable)(semantic)\n\n if (isSpace(token)) {\n const { negativeReference, negativeToken } = createNegativeVar(\n token,\n reference,\n )\n\n cssMap[negativeToken] = { ref: negativeReference, var: variable }\n }\n\n cssMap[token] = { ref: reference, var: variable }\n }\n\n return { cssMap, cssVars }\n }\n }\n}\n\nexport type CreateVars = ReturnType<ReturnType<typeof createVars>>\n\nexport function mergeVars(...fns: CreateVars[]) {\n return function (prevTokens?: VariableTokens) {\n let cssMap: CSSMap = {}\n let cssVars: Dict = {}\n\n for (const fn of fns) {\n const result = fn(cssMap, cssVars, prevTokens)\n\n cssMap = { ...cssMap, ...result.cssMap }\n cssVars = { ...cssVars, ...result.cssVars }\n }\n\n return { cssMap, cssVars }\n }\n}\n\nexport function varAttr<Y = StyleValueWithCondition<number | string>>(\n value: undefined | Y,\n token?: ThemeToken,\n fallbackValue?: string,\n): undefined | Y {\n if (isUndefined(value) || isNull(value) || isCSSFunction(value)) return value\n\n if (isObject(value) || isArray(value)) {\n return replaceObject(value, (value) => varAttr(value, token, fallbackValue))\n } else {\n return token\n ? (`{${token}.${value as number | string}, ${fallbackValue ?? (value as number | string)}}` as Y)\n : value\n }\n}\n\nexport function injectVars<Y extends Dict | Dict[] | undefined>(\n objOrArray: Y,\n targets: { [key in CSSProperties]?: string },\n isInvalidProp?: (prop: string) => boolean,\n): Y {\n if (!objOrArray) return objOrArray\n\n function callback(objOrArray: Dict) {\n return Object.fromEntries(\n Object.entries(objOrArray).flatMap(function ([prop, value]) {\n if (isInvalidProp?.(prop)) return [[prop, value]]\n\n const target = targets[prop]\n const result: [string, any][] = []\n\n if (target) {\n const { token } = getStyle(prop) ?? {}\n\n if (isCSSVar(value) || isInterpolation(value)) {\n result.push([`--${target}`, value])\n } else {\n result.push([\n `--${target}`,\n replaceObject(value, (value) =>\n token ? `{${token}.${value}, ${value}}` : value,\n ),\n ])\n }\n } else if (isObject(value)) {\n result.push([prop, injectVars(value, targets)])\n } else {\n result.push([prop, value])\n }\n\n return result\n }),\n )\n }\n\n if (isArray(objOrArray)) {\n return objOrArray.map(callback) as Y\n } else {\n return callback(objOrArray) as Y\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"var.js","names":["calc"],"sources":["../../../../src/core/system/var.ts"],"sourcesContent":["import type { Dict } from \"../../utils\"\nimport type { CSSProperties, StyleValueWithCondition } from \"../css\"\nimport type {\n CSSMap,\n DefineThemeValue,\n System,\n ThemeToken,\n UsageTheme,\n VariableTokens,\n VariableValue,\n} from \"../system\"\nimport type { Breakpoints } from \"./breakpoint\"\nimport {\n calc,\n escape,\n isArray,\n isNull,\n isObject,\n isString,\n isUndefined,\n merge,\n replaceObject,\n} from \"../../utils\"\nimport { DEFAULT_VAR_PREFIX } from \"../constant\"\nimport {\n animation,\n colorMix,\n conditions,\n css,\n getStyle,\n gradient,\n injectKeyframes,\n isCSSFunction,\n isCSSVar,\n} from \"../css\"\nimport { isInterpolation } from \"../css/utils\"\nimport { defaultSystem } from \"../system\"\n\ntype ParsedValue = number | string | undefined\n\ninterface Variable {\n reference: string\n variable: string\n}\n\nexport function transformInterpolation(\n value: any,\n callback: (value: string, fallbackValue?: string) => string,\n) {\n if (isString(value))\n return value.replace(/\\{(.*?)\\}/g, (_, value) => {\n const [token, fallbackValue] = value.split(/,(.+)/)\n\n return callback(token.trim(), fallbackValue?.trim())\n })\n else return value\n}\n\nexport function getVar(token: string, fallback?: string) {\n if (!token.startsWith(\"--\")) token = `--${token}`\n\n token = token.replace(/[^-_a-zA-Z0-9]/g, \"\")\n\n return fallback ? `var(${token}, ${fallback})` : `var(${token})`\n}\n\nexport function getVarName(system: System) {\n return function (token: string) {\n const prefix = system.config.css?.varPrefix ?? DEFAULT_VAR_PREFIX\n\n return `--${prefix}-${token}`\n }\n}\n\nexport function getColorSchemeVar(system: System) {\n return function (value: any, fallback?: string) {\n if (!isString(value)) return value\n\n const prefix = system.config.css?.varPrefix ?? DEFAULT_VAR_PREFIX\n\n const [, token] = value.split(\".\")\n\n return getVar(`${prefix}-colorScheme-${token}`, fallback)\n }\n}\n\nconst isGradient = (token: string) => token.startsWith(\"gradients.\")\nconst isKeyframes = (token: string) => token.startsWith(\"keyframes.\")\nconst isAnimation = (token: string) => token.startsWith(\"animations.\")\nconst isSpace = (token: string) => token.startsWith(\"spaces.\")\nconst isColor = (token: string) => token.startsWith(\"colors.\")\nexport const isColorScheme = (token: any) =>\n isString(token) && token.startsWith(\"colorScheme.\") && !token.includes(\"/\")\n\nexport function createVars(\n prefix: string = DEFAULT_VAR_PREFIX,\n theme: UsageTheme,\n breakpoints: Breakpoints,\n) {\n return function (tokens: VariableTokens) {\n const { getQuery, isResponsive } = breakpoints\n\n function tokenToVar(token: string): Variable {\n token = token.replace(/\\./g, \"-\")\n token = token.replace(/\\//g, \"\\\\/\")\n\n const variable = `--${[prefix, escape(token, \"-\")].filter(Boolean).join(\"-\")}`\n const reference = `var(${variable})`\n\n return { reference, variable }\n }\n\n return function (\n cssMap: CSSMap = {},\n cssVars: Dict = {},\n prevTokens?: VariableTokens,\n ): { cssMap: CSSMap; cssVars: Dict } {\n const system: System = { ...defaultSystem, cssMap }\n const options = { css, system, theme }\n\n function getRelatedReference(\n token: string,\n value: ParsedValue = \"\",\n ): [ParsedValue, Exclude<ParsedValue, undefined>] {\n const relatedToken = [token.split(\".\")[0], value].join(\".\")\n\n if (token === relatedToken) return [undefined, value]\n\n const targetToken = tokens[relatedToken] ?? prevTokens?.[relatedToken]\n\n if (!targetToken) return [undefined, value]\n\n const { reference, variable } = tokenToVar(relatedToken)\n\n return [variable, reference]\n }\n\n function valueToVar(value: any) {\n return transformInterpolation(value, (value, fallbackValue) => {\n if (value.includes(\"colors.\") || value.includes(\"colorScheme.\")) {\n if (isColorScheme(value)) return getColorSchemeVar(system)(value)\n\n return colorMix(value, { fallback: fallbackValue, system })\n } else {\n const token = tokens[value] ?? prevTokens?.[value]\n\n if (token) {\n return tokenToVar(value).reference\n } else if (value in cssMap && cssMap[value]?.ref) {\n return cssMap[value].ref\n } else if (fallbackValue) {\n fallbackValue =\n fallbackValue in cssMap && cssMap[fallbackValue]?.ref\n ? cssMap[fallbackValue]?.ref\n : fallbackValue\n\n return `var(--${prefix}-${value}, ${fallbackValue})`\n } else {\n return `var(--${prefix}-${value})`\n }\n }\n })\n }\n\n function createNegativeVar(token: string, reference: string) {\n const paths = token.split(\".\")\n const [start, ...rest] = paths\n\n const negativeToken = `${start}.-${rest.join(\".\")}`\n\n const negativeReference = calc.negate(reference)\n\n return { negativeReference, negativeToken }\n }\n\n function createAnimationVar(value: VariableValue) {\n if (isArray(value))\n return value.map((value) => animation(value, options)).join(\",\")\n else return animation(value, options)\n }\n\n function createGradientVar(token: string, value: DefineThemeValue) {\n return function (semantic: boolean) {\n if (!semantic) {\n return gradient(value, options)\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable ? reference : gradient(value, options)\n }\n }\n }\n\n function createKeyframesVar(token: string, value: any) {\n return function (semantic: boolean) {\n if (!semantic) {\n return injectKeyframes(css(system, theme)(value))\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable\n ? reference\n : injectKeyframes(css(system, theme)(value))\n }\n }\n }\n\n function createColorVar(\n token: string,\n properties: string[],\n value: DefineThemeValue,\n ) {\n return function (semantic: boolean) {\n if (!semantic) {\n return colorMix(value, { ...options, properties })\n } else {\n const [variable, reference] = getRelatedReference(token, value)\n\n return variable\n ? reference\n : colorMix(value, { ...options, properties })\n }\n }\n }\n\n function createVar(\n token: string,\n value: VariableValue,\n variable: string,\n ) {\n return function (semantic: boolean, queries: string[] = []) {\n if (isAnimation(token)) value = createAnimationVar(value)\n\n if (isArray(value)) {\n const [lightValue, darkValue] = value\n\n createVar(token, lightValue, variable)(semantic, queries)\n createVar(\n token,\n darkValue,\n variable,\n )(semantic, [...queries, conditions._dark])\n } else if (isResponsive(value, true)) {\n Object.entries(value).forEach(([key, value]) => {\n if (key === \"base\") {\n createVar(token, value, variable)(semantic, queries)\n } else {\n const query = getQuery(key)\n\n if (!query) return\n\n createVar(token, value, variable)(semantic, [...queries, query])\n }\n })\n } else {\n const computedValue: DefineThemeValue = valueToVar(value)\n\n let resolvedValue: DefineThemeValue | Dict = computedValue\n\n if (isKeyframes(token)) {\n resolvedValue = createKeyframesVar(token, computedValue)(semantic)\n } else if (isGradient(token)) {\n resolvedValue = createGradientVar(token, computedValue)(semantic)\n } else if (isColor(token)) {\n resolvedValue = createColorVar(\n token,\n [variable],\n computedValue,\n )(semantic)\n } else if (semantic) {\n const [, reference] = getRelatedReference(token, computedValue)\n\n resolvedValue = reference\n }\n\n if (!isObject(resolvedValue))\n resolvedValue = { [variable]: resolvedValue }\n\n const resolvedCssVars = queries.reduceRight<Dict>(\n (prev, key) => ({ [key]: prev }),\n resolvedValue,\n )\n\n cssVars = merge(cssVars, resolvedCssVars)\n }\n }\n }\n\n for (let [token, { semantic, value }] of Object.entries(tokens)) {\n const { reference, variable } = tokenToVar(token)\n\n createVar(token, value, variable)(semantic)\n\n if (isSpace(token)) {\n const { negativeReference, negativeToken } = createNegativeVar(\n token,\n reference,\n )\n\n cssMap[negativeToken] = { ref: negativeReference, var: variable }\n }\n\n cssMap[token] = { ref: reference, var: variable }\n }\n\n return { cssMap, cssVars }\n }\n }\n}\n\nexport type CreateVars = ReturnType<ReturnType<typeof createVars>>\n\nexport function mergeVars(...fns: CreateVars[]) {\n return function (prevTokens?: VariableTokens) {\n let cssMap: CSSMap = {}\n let cssVars: Dict = {}\n\n for (const fn of fns) {\n const result = fn(cssMap, cssVars, prevTokens)\n\n cssMap = { ...cssMap, ...result.cssMap }\n cssVars = { ...cssVars, ...result.cssVars }\n }\n\n return { cssMap, cssVars }\n }\n}\n\nexport function varAttr<Y = StyleValueWithCondition<number | string>>(\n value: undefined | Y,\n token?: ThemeToken,\n fallbackValue?: string,\n): undefined | Y {\n if (isUndefined(value) || isNull(value) || isCSSFunction(value)) return value\n\n if (isObject(value) || isArray(value))\n return replaceObject(value, (value) => varAttr(value, token, fallbackValue))\n else\n return token\n ? (`{${token}.${value as number | string}, ${fallbackValue ?? (value as number | string)}}` as Y)\n : value\n}\n\nexport function injectVars<Y extends Dict | Dict[] | undefined>(\n objOrArray: Y,\n targets: { [key in CSSProperties]?: string },\n isInvalidProp?: (prop: string) => boolean,\n): Y {\n if (!objOrArray) return objOrArray\n\n function callback(objOrArray: Dict) {\n return Object.fromEntries(\n Object.entries(objOrArray).flatMap(function ([prop, value]) {\n if (isInvalidProp?.(prop)) return [[prop, value]]\n\n const target = targets[prop]\n const result: [string, any][] = []\n\n if (target) {\n const { token } = getStyle(prop) ?? {}\n\n if (isCSSVar(value) || isInterpolation(value))\n result.push([`--${target}`, value])\n else\n result.push([\n `--${target}`,\n replaceObject(value, (value) =>\n token ? `{${token}.${value}, ${value}}` : value,\n ),\n ])\n } else if (isObject(value)) {\n result.push([prop, injectVars(value, targets)])\n } else {\n result.push([prop, value])\n }\n\n return result\n }),\n )\n }\n\n if (isArray(objOrArray)) return objOrArray.map(callback) as Y\n else return callback(objOrArray) as Y\n}\n"],"mappings":"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"}
|