@yamada-ui/react 2.2.3-dev-20260622141401 → 2.2.3

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.
Files changed (198) hide show
  1. package/dist/cjs/components/accordion/use-accordion.cjs.map +1 -1
  2. package/dist/cjs/components/autocomplete/use-autocomplete.cjs.map +1 -1
  3. package/dist/cjs/components/calendar/use-calendar.cjs +1 -1
  4. package/dist/cjs/components/calendar/use-calendar.cjs.map +1 -1
  5. package/dist/cjs/components/carousel/carousel.cjs.map +1 -1
  6. package/dist/cjs/components/chart/chart.cjs.map +1 -1
  7. package/dist/cjs/components/chart/use-polar-chart.cjs.map +1 -1
  8. package/dist/cjs/components/checkbox/checkbox.cjs.map +1 -1
  9. package/dist/cjs/components/checkbox/use-checkbox-group.cjs.map +1 -1
  10. package/dist/cjs/components/checkbox-card/checkbox-card.cjs.map +1 -1
  11. package/dist/cjs/components/collapse/collapse.cjs.map +1 -1
  12. package/dist/cjs/components/color-picker/use-color-picker.cjs.map +1 -1
  13. package/dist/cjs/components/color-swatch/color-swatch-group.cjs.map +1 -1
  14. package/dist/cjs/components/date-picker/date-picker.cjs.map +1 -1
  15. package/dist/cjs/components/date-picker/use-date-picker.cjs +1 -1
  16. package/dist/cjs/components/date-picker/use-date-picker.cjs.map +1 -1
  17. package/dist/cjs/components/editable/use-editable.cjs.map +1 -1
  18. package/dist/cjs/components/field/field.cjs.map +1 -1
  19. package/dist/cjs/components/file-input/file-input.cjs.map +1 -1
  20. package/dist/cjs/components/flip/flip.cjs.map +1 -1
  21. package/dist/cjs/components/highlight/highlight.cjs.map +1 -1
  22. package/dist/cjs/components/indicator/indicator.cjs.map +1 -1
  23. package/dist/cjs/components/infinite-scroll-area/use-infinite-scroll.cjs.map +1 -1
  24. package/dist/cjs/components/input/input-group.cjs.map +1 -1
  25. package/dist/cjs/components/list/list.cjs.map +1 -1
  26. package/dist/cjs/components/menu/use-menu.cjs.map +1 -1
  27. package/dist/cjs/components/native-select/use-native-select.cjs.map +1 -1
  28. package/dist/cjs/components/native-table/native-table.cjs.map +1 -1
  29. package/dist/cjs/components/notice/notice.cjs.map +1 -1
  30. package/dist/cjs/components/number-input/use-number-input.cjs.map +1 -1
  31. package/dist/cjs/components/pagination/pagination.cjs.map +1 -1
  32. package/dist/cjs/components/pagination/use-pagination.cjs.map +1 -1
  33. package/dist/cjs/components/picture/picture.cjs.map +1 -1
  34. package/dist/cjs/components/pin-input/pin-input.cjs.map +1 -1
  35. package/dist/cjs/components/pin-input/use-pin-input.cjs.map +1 -1
  36. package/dist/cjs/components/qr-code/use-qr-code.cjs.map +1 -1
  37. package/dist/cjs/components/radio/use-radio-group.cjs.map +1 -1
  38. package/dist/cjs/components/segmented-control/segmented-control.cjs.map +1 -1
  39. package/dist/cjs/components/select/use-select.cjs.map +1 -1
  40. package/dist/cjs/components/show/show.cjs.map +1 -1
  41. package/dist/cjs/components/sidebar/sidebar.cjs.map +1 -1
  42. package/dist/cjs/components/sidebar/use-sidebar.cjs.map +1 -1
  43. package/dist/cjs/components/simple-grid/simple-grid.cjs.map +1 -1
  44. package/dist/cjs/components/stack/z-stack.cjs.map +1 -1
  45. package/dist/cjs/components/steps/steps.cjs.map +1 -1
  46. package/dist/cjs/components/steps/use-steps.cjs.map +1 -1
  47. package/dist/cjs/components/table/table.cjs.map +1 -1
  48. package/dist/cjs/components/tabs/tabs.cjs.map +1 -1
  49. package/dist/cjs/components/toggle/use-toggle-group.cjs.map +1 -1
  50. package/dist/cjs/components/toggle/use-toggle.cjs.map +1 -1
  51. package/dist/cjs/components/tree/tree.cjs.map +1 -1
  52. package/dist/cjs/components/tree/use-tree.cjs.map +1 -1
  53. package/dist/cjs/core/components/create-component.cjs.map +1 -1
  54. package/dist/cjs/core/components/props.cjs.map +1 -1
  55. package/dist/cjs/core/components/use-component-style.cjs.map +1 -1
  56. package/dist/cjs/core/css/animation.cjs.map +1 -1
  57. package/dist/cjs/core/css/at-rule.cjs.map +1 -1
  58. package/dist/cjs/core/css/calc.cjs.map +1 -1
  59. package/dist/cjs/core/css/color-mix.cjs.map +1 -1
  60. package/dist/cjs/core/css/config.cjs.map +1 -1
  61. package/dist/cjs/core/css/css.cjs.map +1 -1
  62. package/dist/cjs/core/css/gradient.cjs.map +1 -1
  63. package/dist/cjs/core/css/grid.cjs.map +1 -1
  64. package/dist/cjs/core/css/transition.cjs.map +1 -1
  65. package/dist/cjs/core/css/utils.cjs.map +1 -1
  66. package/dist/cjs/core/system/breakpoint.cjs.map +1 -1
  67. package/dist/cjs/core/system/color-mode-provider.cjs.map +1 -1
  68. package/dist/cjs/core/system/create-system.cjs.map +1 -1
  69. package/dist/cjs/core/system/environment-provider.cjs.map +1 -1
  70. package/dist/cjs/core/system/storage-manager.cjs.map +1 -1
  71. package/dist/cjs/core/system/storage-script.cjs.map +1 -1
  72. package/dist/cjs/core/system/use-system-color-mode.cjs.map +1 -1
  73. package/dist/cjs/core/system/var.cjs.map +1 -1
  74. package/dist/cjs/hooks/use-animation/index.cjs.map +1 -1
  75. package/dist/cjs/hooks/use-breakpoint/use-breakpoint-value.cjs.map +1 -1
  76. package/dist/cjs/hooks/use-breakpoint/use-breakpoint.cjs.map +1 -1
  77. package/dist/cjs/hooks/use-clickable/index.cjs.map +1 -1
  78. package/dist/cjs/hooks/use-clipboard/index.cjs.map +1 -1
  79. package/dist/cjs/hooks/use-controllable-state/index.cjs.map +1 -1
  80. package/dist/cjs/hooks/use-counter/index.cjs.map +1 -1
  81. package/dist/cjs/hooks/use-descendants/index.cjs.map +1 -1
  82. package/dist/cjs/hooks/use-focus/index.cjs.map +1 -1
  83. package/dist/cjs/hooks/use-local-storage/index.cjs.map +1 -1
  84. package/dist/cjs/hooks/use-mounted/index.cjs.map +1 -1
  85. package/dist/cjs/hooks/use-outside-click/index.cjs.map +1 -1
  86. package/dist/cjs/providers/i18n-provider/i18n-provider.cjs.map +1 -1
  87. package/dist/cjs/utils/children.cjs.map +1 -1
  88. package/dist/cjs/utils/dom.cjs.map +1 -1
  89. package/dist/cjs/utils/store.cjs.map +1 -1
  90. package/dist/esm/components/accordion/use-accordion.js.map +1 -1
  91. package/dist/esm/components/autocomplete/use-autocomplete.js.map +1 -1
  92. package/dist/esm/components/calendar/use-calendar.js +1 -1
  93. package/dist/esm/components/calendar/use-calendar.js.map +1 -1
  94. package/dist/esm/components/carousel/carousel.js.map +1 -1
  95. package/dist/esm/components/chart/chart.js.map +1 -1
  96. package/dist/esm/components/chart/use-polar-chart.js.map +1 -1
  97. package/dist/esm/components/checkbox/checkbox.js.map +1 -1
  98. package/dist/esm/components/checkbox/use-checkbox-group.js.map +1 -1
  99. package/dist/esm/components/checkbox-card/checkbox-card.js.map +1 -1
  100. package/dist/esm/components/collapse/collapse.js.map +1 -1
  101. package/dist/esm/components/color-picker/use-color-picker.js.map +1 -1
  102. package/dist/esm/components/color-swatch/color-swatch-group.js.map +1 -1
  103. package/dist/esm/components/date-picker/date-picker.js.map +1 -1
  104. package/dist/esm/components/date-picker/use-date-picker.js +1 -1
  105. package/dist/esm/components/date-picker/use-date-picker.js.map +1 -1
  106. package/dist/esm/components/editable/use-editable.js.map +1 -1
  107. package/dist/esm/components/field/field.js.map +1 -1
  108. package/dist/esm/components/file-input/file-input.js.map +1 -1
  109. package/dist/esm/components/flip/flip.js.map +1 -1
  110. package/dist/esm/components/highlight/highlight.js.map +1 -1
  111. package/dist/esm/components/indicator/indicator.js.map +1 -1
  112. package/dist/esm/components/infinite-scroll-area/use-infinite-scroll.js.map +1 -1
  113. package/dist/esm/components/input/input-group.js.map +1 -1
  114. package/dist/esm/components/list/list.js.map +1 -1
  115. package/dist/esm/components/menu/use-menu.js.map +1 -1
  116. package/dist/esm/components/native-select/use-native-select.js.map +1 -1
  117. package/dist/esm/components/native-table/native-table.js.map +1 -1
  118. package/dist/esm/components/notice/notice.js.map +1 -1
  119. package/dist/esm/components/number-input/use-number-input.js.map +1 -1
  120. package/dist/esm/components/pagination/pagination.js.map +1 -1
  121. package/dist/esm/components/pagination/use-pagination.js.map +1 -1
  122. package/dist/esm/components/picture/picture.js.map +1 -1
  123. package/dist/esm/components/pin-input/pin-input.js.map +1 -1
  124. package/dist/esm/components/pin-input/use-pin-input.js.map +1 -1
  125. package/dist/esm/components/qr-code/use-qr-code.js.map +1 -1
  126. package/dist/esm/components/radio/use-radio-group.js.map +1 -1
  127. package/dist/esm/components/segmented-control/segmented-control.js.map +1 -1
  128. package/dist/esm/components/select/use-select.js.map +1 -1
  129. package/dist/esm/components/show/show.js.map +1 -1
  130. package/dist/esm/components/sidebar/sidebar.js.map +1 -1
  131. package/dist/esm/components/sidebar/use-sidebar.js.map +1 -1
  132. package/dist/esm/components/simple-grid/simple-grid.js.map +1 -1
  133. package/dist/esm/components/stack/z-stack.js.map +1 -1
  134. package/dist/esm/components/steps/steps.js.map +1 -1
  135. package/dist/esm/components/steps/use-steps.js.map +1 -1
  136. package/dist/esm/components/table/table.js.map +1 -1
  137. package/dist/esm/components/tabs/tabs.js.map +1 -1
  138. package/dist/esm/components/toggle/use-toggle-group.js.map +1 -1
  139. package/dist/esm/components/toggle/use-toggle.js.map +1 -1
  140. package/dist/esm/components/tree/tree.js.map +1 -1
  141. package/dist/esm/components/tree/use-tree.js.map +1 -1
  142. package/dist/esm/core/components/create-component.js.map +1 -1
  143. package/dist/esm/core/components/props.js.map +1 -1
  144. package/dist/esm/core/components/use-component-style.js.map +1 -1
  145. package/dist/esm/core/css/animation.js.map +1 -1
  146. package/dist/esm/core/css/at-rule.js.map +1 -1
  147. package/dist/esm/core/css/calc.js.map +1 -1
  148. package/dist/esm/core/css/color-mix.js.map +1 -1
  149. package/dist/esm/core/css/config.js.map +1 -1
  150. package/dist/esm/core/css/css.js.map +1 -1
  151. package/dist/esm/core/css/gradient.js.map +1 -1
  152. package/dist/esm/core/css/grid.js.map +1 -1
  153. package/dist/esm/core/css/transition.js.map +1 -1
  154. package/dist/esm/core/css/utils.js.map +1 -1
  155. package/dist/esm/core/system/breakpoint.js.map +1 -1
  156. package/dist/esm/core/system/color-mode-provider.js.map +1 -1
  157. package/dist/esm/core/system/create-system.js.map +1 -1
  158. package/dist/esm/core/system/environment-provider.js.map +1 -1
  159. package/dist/esm/core/system/storage-manager.js.map +1 -1
  160. package/dist/esm/core/system/storage-script.js.map +1 -1
  161. package/dist/esm/core/system/use-system-color-mode.js.map +1 -1
  162. package/dist/esm/core/system/var.js.map +1 -1
  163. package/dist/esm/hooks/use-animation/index.js.map +1 -1
  164. package/dist/esm/hooks/use-breakpoint/use-breakpoint-value.js.map +1 -1
  165. package/dist/esm/hooks/use-breakpoint/use-breakpoint.js.map +1 -1
  166. package/dist/esm/hooks/use-clickable/index.js.map +1 -1
  167. package/dist/esm/hooks/use-clipboard/index.js.map +1 -1
  168. package/dist/esm/hooks/use-controllable-state/index.js.map +1 -1
  169. package/dist/esm/hooks/use-counter/index.js.map +1 -1
  170. package/dist/esm/hooks/use-descendants/index.js.map +1 -1
  171. package/dist/esm/hooks/use-focus/index.js.map +1 -1
  172. package/dist/esm/hooks/use-local-storage/index.js.map +1 -1
  173. package/dist/esm/hooks/use-mounted/index.js.map +1 -1
  174. package/dist/esm/hooks/use-outside-click/index.js.map +1 -1
  175. package/dist/esm/providers/i18n-provider/i18n-provider.js.map +1 -1
  176. package/dist/esm/utils/children.js.map +1 -1
  177. package/dist/esm/utils/dom.js.map +1 -1
  178. package/dist/esm/utils/store.js.map +1 -1
  179. package/dist/types/components/autocomplete/autocomplete.style.d.ts +1 -1
  180. package/dist/types/components/breadcrumb/breadcrumb.style.d.ts +1 -1
  181. package/dist/types/components/calendar/calendar.style.d.ts +2 -2
  182. package/dist/types/components/carousel/carousel.style.d.ts +2 -2
  183. package/dist/types/components/chart/polar-chart.style.d.ts +1 -1
  184. package/dist/types/components/date-picker/date-picker.style.d.ts +1 -1
  185. package/dist/types/components/field/use-field-props.d.ts +1 -1
  186. package/dist/types/components/file-button/use-file-button.d.ts +2 -2
  187. package/dist/types/components/file-input/use-file-input.d.ts +2 -2
  188. package/dist/types/components/menu/menu.style.d.ts +2 -2
  189. package/dist/types/components/progress/use-progress.d.ts +6 -6
  190. package/dist/types/components/rating/rating.style.d.ts +2 -2
  191. package/dist/types/components/select/select.style.d.ts +1 -1
  192. package/dist/types/components/steps/steps.style.d.ts +1 -1
  193. package/dist/types/components/tabs/tabs.style.d.ts +1 -1
  194. package/dist/types/components/tree/tree.style.d.ts +1 -1
  195. package/dist/types/components/tree/use-tree.d.ts +2 -2
  196. package/dist/types/hooks/use-clickable/index.d.ts +2 -2
  197. package/dist/types/providers/i18n-provider/i18n-provider.d.ts +1 -1
  198. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"use-tree.cjs","names":["createDescendants","createContext","useControllableState","mergeProps","useIds","Children","useDisclosure","useAsyncCallback","mergeRefs"],"sources":["../../../../src/components/tree/use-tree.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n SetStateAction,\n} from \"react\"\nimport type { HTMLProps, PropGetter } from \"../../core\"\nimport type { Descendant, Descendants } from \"../../hooks/use-descendants\"\nimport type { UseDisclosureProps } from \"../../hooks/use-disclosure\"\nimport type { UseCheckboxProps } from \"../checkbox\"\nimport { Children, useCallback, useRef, useState } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useAsyncCallback } from \"../../hooks/use-async-callback\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport { useDisclosure } from \"../../hooks/use-disclosure\"\nimport {\n ariaAttr,\n assignRef,\n createContext,\n cx,\n dataAttr,\n filterEmpty,\n handlerAll,\n isArray,\n isInputElement,\n isUndefined,\n match,\n mergeRefs,\n runKeyAction,\n setAttribute,\n useIds,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nexport interface TreeControl {\n collapse: () => void\n expand: () => void\n}\n\ninterface TreeDescendantProps {\n expanded: boolean\n group: boolean\n id: string\n value: string\n query?: string\n}\n\nconst {\n DescendantsContext: TreeDescendantsContext,\n useDescendant: useTreeDescendant,\n useDescendants: useTreeDescendants,\n} = createDescendants<HTMLElement, TreeDescendantProps>()\n\nexport { TreeDescendantsContext, useTreeDescendant, useTreeDescendants }\n\ninterface TreeContext extends Omit<\n UseTreeReturn,\n \"descendants\" | \"getRootProps\"\n> {}\n\nconst [TreeContext, useTreeContext] = createContext<TreeContext>({\n name: \"TreeContext\",\n})\n\nexport { TreeContext, useTreeContext }\n\ninterface TreeItemContext extends Pick<\n UseTreeItemReturn,\n | \"branchOpen\"\n | \"groupOpen\"\n | \"level\"\n | \"onGroupClose\"\n | \"onGroupOpen\"\n | \"onGroupToggle\"\n | \"value\"\n> {}\n\nconst [TreeItemContext, useTreeItemContext] = createContext<TreeItemContext>({\n name: \"TreeItemContext\",\n strict: false,\n})\n\nexport { TreeItemContext, useTreeItemContext }\n\nexport interface UseTreeProps<\n Multiple extends boolean = false,\n> extends HTMLProps<\"ul\"> {\n /**\n * If `true`, the tree will allow checkable items.\n *\n * @default false\n */\n checkable?: boolean\n /**\n * The checked value of the tree.\n */\n checkedValue?: string[]\n /**\n * Ref of the tree callbacks.\n */\n controlRef?: RefObject<null | TreeControl>\n /**\n * The initial checked value of the tree.\n */\n defaultCheckedValue?: string[]\n /**\n * The initial expanded value of the tree.\n */\n defaultExpandedValue?: string[]\n /**\n * The initial selected value of the tree.\n */\n defaultSelectedValue?: Multiple extends true ? string[] : string\n /**\n * The expanded value of the tree.\n */\n expandedValue?: string[]\n /**\n * If `true`, the tree will allow multiple selection.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The selected value of the tree.\n */\n selectedValue?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when checked value changes.\n */\n onCheckedChange?: (value: string[]) => void\n /**\n * The callback invoked when expanded value changes.\n */\n onExpandedChange?: (value: string[]) => void\n /**\n * The callback invoked when selected value changes.\n */\n onSelectedChange?: (value: Multiple extends true ? string[] : string) => void\n}\n\nexport const useTree = <Multiple extends boolean = false>({\n checkable = false,\n checkedValue: checkedValueProp,\n children,\n controlRef,\n defaultCheckedValue = [],\n defaultExpandedValue = [],\n defaultSelectedValue,\n expandedValue: expandedValueProp,\n multiple,\n selectedValue: selectedValueProp,\n onCheckedChange: onCheckedChangeProp,\n onExpandedChange: onExpandedChangeProp,\n onSelectedChange: onSelectedChangeProp,\n ...rest\n}: UseTreeProps<Multiple> = {}) => {\n type MaybeSelectedValue = Multiple extends true ? string[] : string\n\n const [selectedValue, setSelectedValue] = useControllableState({\n defaultValue:\n defaultSelectedValue ?? ((multiple ? [] : \"\") as MaybeSelectedValue),\n value: selectedValueProp,\n onChange: onSelectedChangeProp,\n })\n const [checkedValue, onCheckedChange] = useControllableState({\n defaultValue: defaultCheckedValue,\n value: checkedValueProp,\n onChange: onCheckedChangeProp,\n })\n const [expandedValue, setExpandedValue] = useControllableState({\n defaultValue: defaultExpandedValue,\n value: expandedValueProp,\n onChange: onExpandedChangeProp,\n })\n const descendants = useTreeDescendants()\n const activeDescendant = useRef<Descendant<\n HTMLElement,\n TreeDescendantProps\n > | null>(null)\n const searchRef = useRef<{ value: string; omitValue?: string }>({\n omitValue: undefined,\n value: \"\",\n })\n const timeoutRef = useRef<any>(null)\n\n const onExpandAll = useCallback(() => {\n const values = descendants.enabledValues()\n const group = values.filter(({ group }) => group)\n const value = group.map(({ value }) => value)\n\n setExpandedValue(value)\n }, [descendants, setExpandedValue])\n\n const onCollapseAll = useCallback(() => {\n setExpandedValue([])\n }, [setExpandedValue])\n\n const onActiveDescendant = useCallback(\n (\n descendant?: Descendant<HTMLElement, TreeDescendantProps>,\n shouldFocus = true,\n ) => {\n if (!descendant) return\n\n descendants.values().forEach(({ node }) => {\n node.tabIndex = -1\n })\n\n activeDescendant.current = descendant\n descendant.node.tabIndex = 0\n\n if (shouldFocus) descendant.node.focus()\n },\n [descendants],\n )\n\n const onSearch = useCallback(\n (value: string, omitValue: string) => {\n clearTimeout(timeoutRef.current)\n\n searchRef.current.value += value\n\n if (!searchRef.current.omitValue) searchRef.current.omitValue = omitValue\n\n timeoutRef.current = setTimeout(() => {\n searchRef.current = { omitValue: undefined, value: \"\" }\n }, 400)\n\n const values = descendants\n .enabledValues({ expanded: true })\n .filter(\n (descendant) =>\n !isUndefined(descendant.value) &&\n descendant.value !== searchRef.current.omitValue,\n )\n const descendant = values.find(({ query, value }) =>\n match(query ?? value, searchRef.current.value, \"startsWith\"),\n )\n\n if (descendant) onActiveDescendant(descendant)\n },\n [descendants, onActiveDescendant],\n )\n\n const onSelectedChange = useCallback(\n (value: SetStateAction<string | string[]>) => {\n setSelectedValue(value as SetStateAction<MaybeSelectedValue>)\n },\n [setSelectedValue],\n )\n\n const onExpandedChange = useCallback(\n (value: string) => {\n setExpandedValue((prev) => {\n if (prev.includes(value)) {\n return prev.filter((prevValue) => prevValue !== value)\n } else {\n return [...prev, value]\n }\n })\n },\n [setExpandedValue],\n )\n\n useSafeLayoutEffect(() => {\n const value = isArray(selectedValue) ? selectedValue.at(0) : selectedValue\n const expandedDescendants = descendants.enabledValues({ expanded: true })\n\n if (value) {\n const descendant = expandedDescendants.find(\n (descendant) => value === descendant.value,\n )\n\n if (descendant) {\n onActiveDescendant(descendant, false)\n } else {\n onActiveDescendant(expandedDescendants.at(0), false)\n }\n } else {\n onActiveDescendant(expandedDescendants.at(0), false)\n }\n }, [children])\n\n assignRef(controlRef, { collapse: onCollapseAll, expand: onExpandAll })\n\n const getRootProps: PropGetter<\"ul\"> = useCallback(\n (props) =>\n mergeProps(\n {\n \"aria-multiselectable\": ariaAttr(multiple || checkable),\n children,\n role: \"tree\",\n },\n rest,\n props,\n )(),\n [multiple, checkable, rest, children],\n )\n\n return {\n activeDescendant,\n checkable,\n checkedValue,\n descendants,\n expandedValue,\n multiple,\n selectedValue,\n getRootProps,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n }\n}\n\nexport type UseTreeReturn = ReturnType<typeof useTree>\n\nconst getRootDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const rootValue = segments.at(0)\n\n return descendants.enabledValues().find(({ value }) => value === rootValue)\n }\n\nconst getParentDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const parentValue = segments.slice(0, -1).join(\"/\")\n\n return descendants\n .enabledValues()\n .find(({ value }) => value === parentValue)\n }\n\nconst getChildDescendants =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const children = descendants\n .enabledValues()\n .filter((descendant) => descendant.value.startsWith(value + \"/\"))\n const values = children\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n return { children, values }\n }\n\nconst getParentValues = (value: string) => {\n const segments = value.split(\"/\")\n\n return segments\n .reduce<string[]>((prev, current) => {\n const prevValue = prev.at(-1)\n return prevValue ? [...prev, [prevValue, current].join(\"/\")] : [current]\n }, [])\n .toReversed()\n}\n\nconst getCheckbox = (node?: HTMLElement) => {\n const el = node?.querySelector(\"input[type='checkbox']\")\n\n return isInputElement(el) ? el : null\n}\n\nconst getAllChecked = (\n descendants: Descendant<HTMLElement, TreeDescendantProps>[],\n trulyValues?: string[],\n falsyValues?: string[],\n) => {\n const checked = descendants.map(({ node, value }) => {\n if (value && trulyValues?.includes(value)) return true\n if (value && falsyValues?.includes(value)) return false\n\n const checkbox = getCheckbox(node)\n\n return !!checkbox?.checked\n })\n\n const allChecked = !!checked.length && checked.every(Boolean)\n const indeterminate = checked.some(Boolean) && !allChecked\n\n return { allChecked, checked, indeterminate }\n}\n\nconst getRangeValues =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (start: string, end: string) => {\n const values = descendants.enabledValues()\n const [startIndex, endIndex] = [\n values.findIndex((descendant) => descendant.value === start),\n values.findIndex((descendant) => descendant.value === end),\n ].sort((a, b) => a - b)\n\n return values\n .slice(startIndex, endIndex! + 1)\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n .sort((a, b) => {\n if (a === start && b !== start) return -1\n if (a !== start && b === start) return 1\n\n return 0\n })\n }\n\nexport interface UseTreeItemProps\n extends HTMLProps<\"div\">, Omit<UseDisclosureProps, \"timing\"> {\n /**\n * If `true`, the tree item will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The query to search for in the tree item.\n */\n query?: string\n /**\n * The value of the item.\n */\n value?: string\n /**\n * If provided, the tree item will be rendered as an async tree item.\n */\n asyncChildren?: () => Promise<ReactNode>\n}\n\nexport const useTreeItem = ({\n asyncChildren,\n children: childrenProp,\n defaultOpen,\n disabled = false,\n open: openProp,\n query,\n value: valueProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n}: UseTreeItemProps = {}) => {\n const context = useTreeItemContext()\n const {\n activeDescendant,\n checkable,\n checkedValue,\n expandedValue,\n multiple,\n selectedValue,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n } = useTreeContext()\n const [children, setChildren] = useState<ReactNode>(childrenProp)\n const [indeterminate, setIndeterminate] = useState(false)\n const [itemId, labelId, checkboxId] = useIds()\n const initialAsyncRef = useRef(false)\n const async = !!asyncChildren\n const group = async || Children.count(children) > 0\n const level: number = (context?.level ?? 0) + 1\n const value: string = filterEmpty([context?.value, valueProp]).join(\"/\")\n const nested = !!context?.value\n const selected = isArray(selectedValue)\n ? !!value && selectedValue.includes(value)\n : !!value && selectedValue === value\n const checked = !!value && checkedValue.includes(value)\n const defaultExpanded = !!value && expandedValue.includes(value)\n const {\n open: groupOpen,\n onClose,\n onOpen,\n } = useDisclosure({\n defaultOpen: defaultOpen ?? defaultExpanded,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const branchOpen: boolean[] = nested\n ? [...context.branchOpen, groupOpen]\n : [groupOpen]\n const { descendants, register } = useTreeDescendant({\n id: itemId!,\n disabled,\n expanded: branchOpen.slice(0, -1).every(Boolean),\n group,\n query,\n value,\n })\n\n const [groupLoading, onGroupChildren] = useAsyncCallback(async () => {\n const children = await asyncChildren?.()\n\n setChildren(children)\n }, [asyncChildren])\n\n const onSelect = useCallback(\n (\n ev: (\n | Partial<KeyboardEvent<HTMLElement>>\n | Partial<MouseEvent<HTMLElement>>\n ) & { value?: string } = {},\n ) => {\n const selectedValue = ev.value ?? value\n\n if (disabled || !selectedValue) return\n\n if (multiple) {\n onSelectedChange((prev) => {\n if (!isArray(prev)) return prev\n\n if (ev.ctrlKey || ev.metaKey) {\n if (prev.includes(selectedValue)) {\n return prev.filter((prevValue) => prevValue !== selectedValue)\n } else {\n return [...prev, selectedValue]\n }\n } else if (ev.shiftKey && prev[0]) {\n if (prev[0] === selectedValue) return prev\n\n return getRangeValues(descendants)(prev[0], selectedValue)\n } else {\n return [selectedValue]\n }\n })\n } else {\n onSelectedChange(selectedValue)\n }\n },\n [descendants, disabled, multiple, onSelectedChange, value],\n )\n\n const onGroupOpen = useCallback(() => {\n if (disabled || !value) return\n\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n onExpandedChange(value)\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n onExpandedChange(value)\n }\n }, [disabled, async, onGroupChildren, onOpen, onExpandedChange, value])\n\n const onGroupClose = useCallback(() => {\n if (disabled || !value) return\n\n onClose()\n onExpandedChange(value)\n }, [disabled, onClose, onExpandedChange, value])\n\n const onGroupToggle = useCallback(() => {\n if (groupOpen) {\n onGroupClose()\n } else {\n onGroupOpen()\n }\n }, [groupOpen, onGroupClose, onGroupOpen])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLElement>) => {\n if (disabled || !value) return\n\n runKeyAction(ev, {\n a: () => {\n if (!multiple || !(ev.ctrlKey || ev.metaKey)) return\n\n const values = descendants\n .enabledValues()\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n onSelectedChange(values)\n },\n ArrowDown: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onExpandAll()\n } else {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n ArrowLeft: () => {\n if (group && groupOpen) {\n onGroupClose()\n } else if (nested) {\n const descendant = getParentDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n }\n },\n ArrowRight: () => {\n if (!group) return\n\n if (groupOpen) {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n } else {\n if (!groupLoading) onGroupOpen()\n }\n },\n ArrowUp: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onCollapseAll()\n\n if (!nested) return\n\n const descendant = getRootDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n } else {\n const descendant = descendants.enabledPrevValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n End: () => {\n const descendant = descendants\n .enabledValues({ expanded: true })\n .at(-1)\n\n onActiveDescendant(descendant)\n },\n Enter: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n Home: () => {\n const descendant = descendants.enabledValues({ expanded: true }).at(0)\n\n onActiveDescendant(descendant)\n },\n Space: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n })\n\n if (ev.key.length !== 1) return\n if (ev.ctrlKey || ev.metaKey || ev.altKey) return\n\n ev.preventDefault()\n\n onSearch(ev.key, query ?? value)\n },\n [\n activeDescendant,\n descendants,\n disabled,\n group,\n groupLoading,\n groupOpen,\n multiple,\n nested,\n onActiveDescendant,\n onCollapseAll,\n onExpandAll,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n onSearch,\n onSelect,\n onSelectedChange,\n query,\n value,\n ],\n )\n\n const onItemClick = useCallback(\n (ev: MouseEvent<HTMLLIElement>) => {\n ev.stopPropagation()\n\n if (disabled || !value) return\n\n if (group && !groupLoading)\n if (!ev.ctrlKey && !ev.metaKey && !ev.shiftKey) onGroupToggle()\n\n onSelect(ev)\n },\n [disabled, group, groupLoading, onGroupToggle, onSelect, value],\n )\n\n const onCheckboxChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (disabled || !value) return\n\n ev.stopPropagation()\n\n if (group) setIndeterminate(false)\n\n onCheckedChange((prev) => {\n const target = [value]\n\n if (group) {\n const { values } = getChildDescendants(descendants)(value)\n\n target.push(...values)\n }\n\n if (nested) {\n const parentValues = getParentValues(context.value)\n const parentTarget: string[] = []\n\n parentValues.forEach((parentValue) => {\n const { children } = getChildDescendants(descendants)(parentValue)\n const { allChecked } = getAllChecked(\n children,\n [...parentTarget, ...(ev.target.checked ? target : [])],\n !ev.target.checked ? target : [],\n )\n\n if (allChecked) parentTarget.push(parentValue)\n })\n\n if (!ev.target.checked) parentTarget.push(...parentValues)\n\n target.push(...parentTarget)\n }\n\n if (ev.target.checked) {\n return [...new Set([...prev, ...target])]\n } else {\n return prev.filter((prevValue) => !target.includes(prevValue))\n }\n })\n },\n [disabled, group, onCheckedChange, value, nested, descendants, context],\n )\n\n useSafeLayoutEffect(() => {\n if (defaultExpanded) {\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n }\n } else {\n onClose()\n }\n }, [async, defaultExpanded, onClose, onGroupChildren, onOpen])\n\n useSafeLayoutEffect(() => {\n if (!group || !checkable) return\n\n const { children } = getChildDescendants(descendants)(value)\n const { indeterminate } = getAllChecked(children)\n\n setIndeterminate(indeterminate)\n }, [checkedValue])\n\n useSafeLayoutEffect(() => {\n if (!checkable) return\n\n const { node } = getParentDescendant(descendants)(value) ?? {}\n const checkbox = getCheckbox(node)\n\n if (!checkbox) return\n\n const cleanup = setAttribute(checkbox, \"aria-controls\", checkboxId)\n\n return cleanup\n }, [checkable, descendants])\n\n const getItemProps: PropGetter<\"li\"> = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: itemId,\n ref: mergeRefs(ref, register),\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"aria-level\": level,\n \"aria-selected\": ariaAttr(selected),\n \"data-disabled\": dataAttr(disabled),\n role: \"treeitem\",\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onItemClick),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [\n itemId,\n register,\n disabled,\n labelId,\n level,\n selected,\n onItemClick,\n onKeyDown,\n ],\n )\n\n const getGroupItemProps: PropGetter<\"li\"> = useCallback(\n (props = {}) => getItemProps({ \"aria-expanded\": groupOpen, ...props }),\n [getItemProps, groupOpen],\n )\n\n const getIndicatorProps: PropGetter<\"svg\"> = useCallback(\n (props) => ({\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-expanded\": groupOpen,\n \"aria-hidden\": true,\n \"data-disabled\": dataAttr(disabled),\n \"data-loading\": dataAttr(groupLoading),\n \"data-selected\": dataAttr(selected),\n role: \"presentation\",\n ...props,\n }),\n [disabled, groupOpen, selected, groupLoading],\n )\n\n const getCheckboxProps: PropGetter<UseCheckboxProps> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: checkboxId,\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-selected\": dataAttr(selected),\n checked,\n disabled,\n indeterminate,\n tabIndex: -1,\n ...props,\n onChange: handlerAll(props.onChange, onCheckboxChange),\n }),\n [\n checkboxId,\n labelId,\n selected,\n checked,\n disabled,\n indeterminate,\n onCheckboxChange,\n ],\n )\n\n const getGroupProps: PropGetter<\"ul\"> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n \"aria-busy\": ariaAttr(groupLoading),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-disabled\": dataAttr(disabled),\n role: \"group\",\n ...props,\n }),\n [labelId, disabled, groupLoading],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props = {}) => ({ id: labelId, ...props }),\n [labelId],\n )\n\n return {\n branchOpen,\n checked,\n children,\n disabled,\n group,\n groupLoading,\n groupOpen,\n indeterminate,\n level,\n props: rest,\n selected,\n value,\n getCheckboxProps,\n getGroupItemProps,\n getGroupProps,\n getIndicatorProps,\n getItemProps,\n getLabelProps,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n }\n}\n\nexport type UseTreeItemReturn = ReturnType<typeof useTreeItem>\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-tree.cjs","names":["createDescendants","createContext","useControllableState","mergeProps","useIds","Children","useDisclosure","useAsyncCallback","mergeRefs"],"sources":["../../../../src/components/tree/use-tree.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n RefObject,\n SetStateAction,\n} from \"react\"\nimport type { HTMLProps, PropGetter } from \"../../core\"\nimport type { Descendant, Descendants } from \"../../hooks/use-descendants\"\nimport type { UseDisclosureProps } from \"../../hooks/use-disclosure\"\nimport type { UseCheckboxProps } from \"../checkbox\"\nimport { Children, useCallback, useRef, useState } from \"react\"\nimport { mergeProps } from \"../../core\"\nimport { useAsyncCallback } from \"../../hooks/use-async-callback\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport { useDisclosure } from \"../../hooks/use-disclosure\"\nimport {\n ariaAttr,\n assignRef,\n createContext,\n cx,\n dataAttr,\n filterEmpty,\n handlerAll,\n isArray,\n isInputElement,\n isUndefined,\n match,\n mergeRefs,\n runKeyAction,\n setAttribute,\n useIds,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nexport interface TreeControl {\n collapse: () => void\n expand: () => void\n}\n\ninterface TreeDescendantProps {\n expanded: boolean\n group: boolean\n id: string\n value: string\n query?: string\n}\n\nconst {\n DescendantsContext: TreeDescendantsContext,\n useDescendant: useTreeDescendant,\n useDescendants: useTreeDescendants,\n} = createDescendants<HTMLElement, TreeDescendantProps>()\n\nexport { TreeDescendantsContext, useTreeDescendant, useTreeDescendants }\n\ninterface TreeContext extends Omit<\n UseTreeReturn,\n \"descendants\" | \"getRootProps\"\n> {}\n\nconst [TreeContext, useTreeContext] = createContext<TreeContext>({\n name: \"TreeContext\",\n})\n\nexport { TreeContext, useTreeContext }\n\ninterface TreeItemContext extends Pick<\n UseTreeItemReturn,\n | \"branchOpen\"\n | \"groupOpen\"\n | \"level\"\n | \"onGroupClose\"\n | \"onGroupOpen\"\n | \"onGroupToggle\"\n | \"value\"\n> {}\n\nconst [TreeItemContext, useTreeItemContext] = createContext<TreeItemContext>({\n name: \"TreeItemContext\",\n strict: false,\n})\n\nexport { TreeItemContext, useTreeItemContext }\n\nexport interface UseTreeProps<\n Multiple extends boolean = false,\n> extends HTMLProps<\"ul\"> {\n /**\n * If `true`, the tree will allow checkable items.\n *\n * @default false\n */\n checkable?: boolean\n /**\n * The checked value of the tree.\n */\n checkedValue?: string[]\n /**\n * Ref of the tree callbacks.\n */\n controlRef?: RefObject<null | TreeControl>\n /**\n * The initial checked value of the tree.\n */\n defaultCheckedValue?: string[]\n /**\n * The initial expanded value of the tree.\n */\n defaultExpandedValue?: string[]\n /**\n * The initial selected value of the tree.\n */\n defaultSelectedValue?: Multiple extends true ? string[] : string\n /**\n * The expanded value of the tree.\n */\n expandedValue?: string[]\n /**\n * If `true`, the tree will allow multiple selection.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The selected value of the tree.\n */\n selectedValue?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when checked value changes.\n */\n onCheckedChange?: (value: string[]) => void\n /**\n * The callback invoked when expanded value changes.\n */\n onExpandedChange?: (value: string[]) => void\n /**\n * The callback invoked when selected value changes.\n */\n onSelectedChange?: (value: Multiple extends true ? string[] : string) => void\n}\n\nexport const useTree = <Multiple extends boolean = false>({\n checkable = false,\n checkedValue: checkedValueProp,\n children,\n controlRef,\n defaultCheckedValue = [],\n defaultExpandedValue = [],\n defaultSelectedValue,\n expandedValue: expandedValueProp,\n multiple,\n selectedValue: selectedValueProp,\n onCheckedChange: onCheckedChangeProp,\n onExpandedChange: onExpandedChangeProp,\n onSelectedChange: onSelectedChangeProp,\n ...rest\n}: UseTreeProps<Multiple> = {}) => {\n type MaybeSelectedValue = Multiple extends true ? string[] : string\n\n const [selectedValue, setSelectedValue] = useControllableState({\n defaultValue:\n defaultSelectedValue ?? ((multiple ? [] : \"\") as MaybeSelectedValue),\n value: selectedValueProp,\n onChange: onSelectedChangeProp,\n })\n const [checkedValue, onCheckedChange] = useControllableState({\n defaultValue: defaultCheckedValue,\n value: checkedValueProp,\n onChange: onCheckedChangeProp,\n })\n const [expandedValue, setExpandedValue] = useControllableState({\n defaultValue: defaultExpandedValue,\n value: expandedValueProp,\n onChange: onExpandedChangeProp,\n })\n const descendants = useTreeDescendants()\n const activeDescendant = useRef<Descendant<\n HTMLElement,\n TreeDescendantProps\n > | null>(null)\n const searchRef = useRef<{ value: string; omitValue?: string }>({\n omitValue: undefined,\n value: \"\",\n })\n const timeoutRef = useRef<any>(null)\n\n const onExpandAll = useCallback(() => {\n const values = descendants.enabledValues()\n const group = values.filter(({ group }) => group)\n const value = group.map(({ value }) => value)\n\n setExpandedValue(value)\n }, [descendants, setExpandedValue])\n\n const onCollapseAll = useCallback(() => {\n setExpandedValue([])\n }, [setExpandedValue])\n\n const onActiveDescendant = useCallback(\n (\n descendant?: Descendant<HTMLElement, TreeDescendantProps>,\n shouldFocus = true,\n ) => {\n if (!descendant) return\n\n descendants.values().forEach(({ node }) => {\n node.tabIndex = -1\n })\n\n activeDescendant.current = descendant\n descendant.node.tabIndex = 0\n\n if (shouldFocus) descendant.node.focus()\n },\n [descendants],\n )\n\n const onSearch = useCallback(\n (value: string, omitValue: string) => {\n clearTimeout(timeoutRef.current)\n\n searchRef.current.value += value\n\n if (!searchRef.current.omitValue) searchRef.current.omitValue = omitValue\n\n timeoutRef.current = setTimeout(() => {\n searchRef.current = { omitValue: undefined, value: \"\" }\n }, 400)\n\n const values = descendants\n .enabledValues({ expanded: true })\n .filter(\n (descendant) =>\n !isUndefined(descendant.value) &&\n descendant.value !== searchRef.current.omitValue,\n )\n const descendant = values.find(({ query, value }) =>\n match(query ?? value, searchRef.current.value, \"startsWith\"),\n )\n\n if (descendant) onActiveDescendant(descendant)\n },\n [descendants, onActiveDescendant],\n )\n\n const onSelectedChange = useCallback(\n (value: SetStateAction<string | string[]>) => {\n setSelectedValue(value as SetStateAction<MaybeSelectedValue>)\n },\n [setSelectedValue],\n )\n\n const onExpandedChange = useCallback(\n (value: string) => {\n setExpandedValue((prev) => {\n if (prev.includes(value))\n return prev.filter((prevValue) => prevValue !== value)\n else return [...prev, value]\n })\n },\n [setExpandedValue],\n )\n\n useSafeLayoutEffect(() => {\n const value = isArray(selectedValue) ? selectedValue.at(0) : selectedValue\n const expandedDescendants = descendants.enabledValues({ expanded: true })\n\n if (value) {\n const descendant = expandedDescendants.find(\n (descendant) => value === descendant.value,\n )\n\n if (descendant) onActiveDescendant(descendant, false)\n else onActiveDescendant(expandedDescendants.at(0), false)\n } else {\n onActiveDescendant(expandedDescendants.at(0), false)\n }\n }, [children])\n\n assignRef(controlRef, { collapse: onCollapseAll, expand: onExpandAll })\n\n const getRootProps: PropGetter<\"ul\"> = useCallback(\n (props) =>\n mergeProps(\n {\n \"aria-multiselectable\": ariaAttr(multiple || checkable),\n children,\n role: \"tree\",\n },\n rest,\n props,\n )(),\n [multiple, checkable, rest, children],\n )\n\n return {\n activeDescendant,\n checkable,\n checkedValue,\n descendants,\n expandedValue,\n multiple,\n selectedValue,\n getRootProps,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n }\n}\n\nexport type UseTreeReturn = ReturnType<typeof useTree>\n\nconst getRootDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const rootValue = segments.at(0)\n\n return descendants.enabledValues().find(({ value }) => value === rootValue)\n }\n\nconst getParentDescendant =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const segments = value.split(\"/\")\n\n if (segments.length <= 1) return\n\n const parentValue = segments.slice(0, -1).join(\"/\")\n\n return descendants\n .enabledValues()\n .find(({ value }) => value === parentValue)\n }\n\nconst getChildDescendants =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (value: string) => {\n const children = descendants\n .enabledValues()\n .filter((descendant) => descendant.value.startsWith(value + \"/\"))\n const values = children\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n return { children, values }\n }\n\nconst getParentValues = (value: string) => {\n const segments = value.split(\"/\")\n\n return segments\n .reduce<string[]>((prev, current) => {\n const prevValue = prev.at(-1)\n return prevValue ? [...prev, [prevValue, current].join(\"/\")] : [current]\n }, [])\n .toReversed()\n}\n\nconst getCheckbox = (node?: HTMLElement) => {\n const el = node?.querySelector(\"input[type='checkbox']\")\n\n return isInputElement(el) ? el : null\n}\n\nconst getAllChecked = (\n descendants: Descendant<HTMLElement, TreeDescendantProps>[],\n trulyValues?: string[],\n falsyValues?: string[],\n) => {\n const checked = descendants.map(({ node, value }) => {\n if (value && trulyValues?.includes(value)) return true\n if (value && falsyValues?.includes(value)) return false\n\n const checkbox = getCheckbox(node)\n\n return !!checkbox?.checked\n })\n\n const allChecked = !!checked.length && checked.every(Boolean)\n const indeterminate = checked.some(Boolean) && !allChecked\n\n return { allChecked, checked, indeterminate }\n}\n\nconst getRangeValues =\n (descendants: Descendants<HTMLElement, TreeDescendantProps>) =>\n (start: string, end: string) => {\n const values = descendants.enabledValues()\n const [startIndex, endIndex] = [\n values.findIndex((descendant) => descendant.value === start),\n values.findIndex((descendant) => descendant.value === end),\n ].sort((a, b) => a - b)\n\n return values\n .slice(startIndex, endIndex! + 1)\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n .sort((a, b) => {\n if (a === start && b !== start) return -1\n if (a !== start && b === start) return 1\n\n return 0\n })\n }\n\nexport interface UseTreeItemProps\n extends HTMLProps<\"div\">, Omit<UseDisclosureProps, \"timing\"> {\n /**\n * If `true`, the tree item will be disabled.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The query to search for in the tree item.\n */\n query?: string\n /**\n * The value of the item.\n */\n value?: string\n /**\n * If provided, the tree item will be rendered as an async tree item.\n */\n asyncChildren?: () => Promise<ReactNode>\n}\n\nexport const useTreeItem = ({\n asyncChildren,\n children: childrenProp,\n defaultOpen,\n disabled = false,\n open: openProp,\n query,\n value: valueProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...rest\n}: UseTreeItemProps = {}) => {\n const context = useTreeItemContext()\n const {\n activeDescendant,\n checkable,\n checkedValue,\n expandedValue,\n multiple,\n selectedValue,\n onActiveDescendant,\n onCheckedChange,\n onCollapseAll,\n onExpandAll,\n onExpandedChange,\n onSearch,\n onSelectedChange,\n } = useTreeContext()\n const [children, setChildren] = useState<ReactNode>(childrenProp)\n const [indeterminate, setIndeterminate] = useState(false)\n const [itemId, labelId, checkboxId] = useIds()\n const initialAsyncRef = useRef(false)\n const async = !!asyncChildren\n const group = async || Children.count(children) > 0\n const level: number = (context?.level ?? 0) + 1\n const value: string = filterEmpty([context?.value, valueProp]).join(\"/\")\n const nested = !!context?.value\n const selected = isArray(selectedValue)\n ? !!value && selectedValue.includes(value)\n : !!value && selectedValue === value\n const checked = !!value && checkedValue.includes(value)\n const defaultExpanded = !!value && expandedValue.includes(value)\n const {\n open: groupOpen,\n onClose,\n onOpen,\n } = useDisclosure({\n defaultOpen: defaultOpen ?? defaultExpanded,\n open: openProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n const branchOpen: boolean[] = nested\n ? [...context.branchOpen, groupOpen]\n : [groupOpen]\n const { descendants, register } = useTreeDescendant({\n id: itemId!,\n disabled,\n expanded: branchOpen.slice(0, -1).every(Boolean),\n group,\n query,\n value,\n })\n\n const [groupLoading, onGroupChildren] = useAsyncCallback(async () => {\n const children = await asyncChildren?.()\n\n setChildren(children)\n }, [asyncChildren])\n\n const onSelect = useCallback(\n (\n ev: (\n | Partial<KeyboardEvent<HTMLElement>>\n | Partial<MouseEvent<HTMLElement>>\n ) & { value?: string } = {},\n ) => {\n const selectedValue = ev.value ?? value\n\n if (disabled || !selectedValue) return\n\n if (multiple)\n onSelectedChange((prev) => {\n if (!isArray(prev)) return prev\n\n if (ev.ctrlKey || ev.metaKey) {\n if (prev.includes(selectedValue))\n return prev.filter((prevValue) => prevValue !== selectedValue)\n else return [...prev, selectedValue]\n } else if (ev.shiftKey && prev[0]) {\n if (prev[0] === selectedValue) return prev\n\n return getRangeValues(descendants)(prev[0], selectedValue)\n } else {\n return [selectedValue]\n }\n })\n else onSelectedChange(selectedValue)\n },\n [descendants, disabled, multiple, onSelectedChange, value],\n )\n\n const onGroupOpen = useCallback(() => {\n if (disabled || !value) return\n\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n onExpandedChange(value)\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n onExpandedChange(value)\n }\n }, [disabled, async, onGroupChildren, onOpen, onExpandedChange, value])\n\n const onGroupClose = useCallback(() => {\n if (disabled || !value) return\n\n onClose()\n onExpandedChange(value)\n }, [disabled, onClose, onExpandedChange, value])\n\n const onGroupToggle = useCallback(() => {\n if (groupOpen) onGroupClose()\n else onGroupOpen()\n }, [groupOpen, onGroupClose, onGroupOpen])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLElement>) => {\n if (disabled || !value) return\n\n runKeyAction(ev, {\n a: () => {\n if (!multiple || !(ev.ctrlKey || ev.metaKey)) return\n\n const values = descendants\n .enabledValues()\n .map(({ value }) => value)\n .filter((value) => !isUndefined(value))\n\n onSelectedChange(values)\n },\n ArrowDown: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onExpandAll()\n } else {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n ArrowLeft: () => {\n if (group && groupOpen) {\n onGroupClose()\n } else if (nested) {\n const descendant = getParentDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n }\n },\n ArrowRight: () => {\n if (!group) return\n\n if (groupOpen) {\n const descendant = descendants.enabledNextValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n } else {\n if (!groupLoading) onGroupOpen()\n }\n },\n ArrowUp: () => {\n if ((ev.ctrlKey || ev.metaKey) && ev.shiftKey) {\n onCollapseAll()\n\n if (!nested) return\n\n const descendant = getRootDescendant(descendants)(value)\n\n onActiveDescendant(descendant)\n } else {\n const descendant = descendants.enabledPrevValue(\n activeDescendant.current,\n false,\n { expanded: true },\n )\n\n onActiveDescendant(descendant)\n\n if (descendant && ev.shiftKey && multiple)\n onSelect({ ctrlKey: true, value: descendant.value })\n }\n },\n End: () => {\n const descendant = descendants\n .enabledValues({ expanded: true })\n .at(-1)\n\n onActiveDescendant(descendant)\n },\n Enter: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n Home: () => {\n const descendant = descendants.enabledValues({ expanded: true }).at(0)\n\n onActiveDescendant(descendant)\n },\n Space: () => {\n if (group) onGroupToggle()\n\n onSelect(ev)\n },\n })\n\n if (ev.key.length !== 1) return\n if (ev.ctrlKey || ev.metaKey || ev.altKey) return\n\n ev.preventDefault()\n\n onSearch(ev.key, query ?? value)\n },\n [\n activeDescendant,\n descendants,\n disabled,\n group,\n groupLoading,\n groupOpen,\n multiple,\n nested,\n onActiveDescendant,\n onCollapseAll,\n onExpandAll,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n onSearch,\n onSelect,\n onSelectedChange,\n query,\n value,\n ],\n )\n\n const onItemClick = useCallback(\n (ev: MouseEvent<HTMLLIElement>) => {\n ev.stopPropagation()\n\n if (disabled || !value) return\n\n if (group && !groupLoading)\n if (!ev.ctrlKey && !ev.metaKey && !ev.shiftKey) onGroupToggle()\n\n onSelect(ev)\n },\n [disabled, group, groupLoading, onGroupToggle, onSelect, value],\n )\n\n const onCheckboxChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (disabled || !value) return\n\n ev.stopPropagation()\n\n if (group) setIndeterminate(false)\n\n onCheckedChange((prev) => {\n const target = [value]\n\n if (group) {\n const { values } = getChildDescendants(descendants)(value)\n\n target.push(...values)\n }\n\n if (nested) {\n const parentValues = getParentValues(context.value)\n const parentTarget: string[] = []\n\n parentValues.forEach((parentValue) => {\n const { children } = getChildDescendants(descendants)(parentValue)\n const { allChecked } = getAllChecked(\n children,\n [...parentTarget, ...(ev.target.checked ? target : [])],\n !ev.target.checked ? target : [],\n )\n\n if (allChecked) parentTarget.push(parentValue)\n })\n\n if (!ev.target.checked) parentTarget.push(...parentValues)\n\n target.push(...parentTarget)\n }\n\n if (ev.target.checked) return [...new Set([...prev, ...target])]\n else return prev.filter((prevValue) => !target.includes(prevValue))\n })\n },\n [disabled, group, onCheckedChange, value, nested, descendants, context],\n )\n\n useSafeLayoutEffect(() => {\n if (defaultExpanded)\n if (async && !initialAsyncRef.current) {\n initialAsyncRef.current = true\n\n onGroupChildren()\n .then(() => {\n onOpen()\n })\n .catch(() => {\n initialAsyncRef.current = false\n })\n } else {\n onOpen()\n }\n else onClose()\n }, [async, defaultExpanded, onClose, onGroupChildren, onOpen])\n\n useSafeLayoutEffect(() => {\n if (!group || !checkable) return\n\n const { children } = getChildDescendants(descendants)(value)\n const { indeterminate } = getAllChecked(children)\n\n setIndeterminate(indeterminate)\n }, [checkedValue])\n\n useSafeLayoutEffect(() => {\n if (!checkable) return\n\n const { node } = getParentDescendant(descendants)(value) ?? {}\n const checkbox = getCheckbox(node)\n\n if (!checkbox) return\n\n const cleanup = setAttribute(checkbox, \"aria-controls\", checkboxId)\n\n return cleanup\n }, [checkable, descendants])\n\n const getItemProps: PropGetter<\"li\"> = useCallback(\n ({ ref, \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: itemId,\n ref: mergeRefs(ref, register),\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"aria-level\": level,\n \"aria-selected\": ariaAttr(selected),\n \"data-disabled\": dataAttr(disabled),\n role: \"treeitem\",\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onItemClick),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [\n itemId,\n register,\n disabled,\n labelId,\n level,\n selected,\n onItemClick,\n onKeyDown,\n ],\n )\n\n const getGroupItemProps: PropGetter<\"li\"> = useCallback(\n (props = {}) => getItemProps({ \"aria-expanded\": groupOpen, ...props }),\n [getItemProps, groupOpen],\n )\n\n const getIndicatorProps: PropGetter<\"svg\"> = useCallback(\n (props) => ({\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-expanded\": groupOpen,\n \"aria-hidden\": true,\n \"data-disabled\": dataAttr(disabled),\n \"data-loading\": dataAttr(groupLoading),\n \"data-selected\": dataAttr(selected),\n role: \"presentation\",\n ...props,\n }),\n [disabled, groupOpen, selected, groupLoading],\n )\n\n const getCheckboxProps: PropGetter<UseCheckboxProps> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n id: checkboxId,\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-selected\": dataAttr(selected),\n checked,\n disabled,\n indeterminate,\n tabIndex: -1,\n ...props,\n onChange: handlerAll(props.onChange, onCheckboxChange),\n }),\n [\n checkboxId,\n labelId,\n selected,\n checked,\n disabled,\n indeterminate,\n onCheckboxChange,\n ],\n )\n\n const getGroupProps: PropGetter<\"ul\"> = useCallback(\n ({ \"aria-labelledby\": ariaLabelledby, ...props } = {}) => ({\n \"aria-busy\": ariaAttr(groupLoading),\n \"aria-labelledby\": cx(ariaLabelledby, labelId),\n \"data-disabled\": dataAttr(disabled),\n role: \"group\",\n ...props,\n }),\n [labelId, disabled, groupLoading],\n )\n\n const getLabelProps: PropGetter<\"span\"> = useCallback(\n (props = {}) => ({ id: labelId, ...props }),\n [labelId],\n )\n\n return {\n branchOpen,\n checked,\n children,\n disabled,\n group,\n groupLoading,\n groupOpen,\n indeterminate,\n level,\n props: rest,\n selected,\n value,\n getCheckboxProps,\n getGroupItemProps,\n getGroupProps,\n getIndicatorProps,\n getItemProps,\n getLabelProps,\n onGroupClose,\n onGroupOpen,\n onGroupToggle,\n }\n}\n\nexport type UseTreeItemReturn = ReturnType<typeof useTreeItem>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-component.cjs","names":["Fragment","styled","getDisplayName","createContext","useSystem","getClassName","useComponentStyle","mergeProps","chainProps","getSlotClassName","useComponentSlotStyle","mergeSlotCSS"],"sources":["../../../../src/core/components/create-component.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, FunctionComponent } from \"react\"\nimport type { AnyString, Dict, Merge } from \"../../utils\"\nimport type { CSSObject, CSSSlotObject } from \"../css\"\nimport type {\n ComponentSlotStyle,\n ComponentStyle,\n StyledOptions,\n System,\n WithoutThemeProps,\n} from \"../system\"\nimport type {\n As,\n DOMElement,\n HTMLStyledProps,\n Component as OriginalComponent,\n} from \"./index.types\"\nimport { Fragment } from \"react\"\nimport {\n createContext,\n cx,\n isArray,\n isFunction,\n isObject,\n isString,\n runIfFn,\n toArray,\n toCamelCase,\n toPascalCase,\n} from \"../../utils\"\nimport { styled, useSystem } from \"../system\"\nimport { chainProps, mergeProps } from \"./props\"\nimport {\n getSlotClassName,\n mergeSlotCSS,\n useComponentSlotStyle,\n useComponentStyle,\n} from \"./use-component-style\"\nimport { getClassName, getDisplayName } from \"./utils\"\n\ntype AsWithFragment = \"fragment\" | As\ntype ClassName = ((system: System) => string) | string\n\ntype Component<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n> = Y extends \"fragment\"\n ? FunctionComponent<M>\n : OriginalComponent<Exclude<Y, \"fragment\">, M>\n\nexport type ComponentSlotName<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentSlotStyle,\n> = AnyString | Extract<keyof NonNullable<Y[\"base\"]>, string>\n\nexport type ComponentSlot<Y extends string> =\n | [Y, Y]\n | Y\n | { name: string; slot: [Y, Y] | Y }\n\nexport type InitialProps<Y extends Dict = Dict> =\n | ((props: Y) => any)\n | Partial<Y>\nexport type SuperProps<Y extends Dict = Dict> = ((props: Y) => any) | Y\n\nexport type SuperWithoutThemeProps<\n Y extends Dict = Dict,\n M extends Dict = Dict,\n D extends keyof Y = keyof Y,\n> = ((props: WithoutThemeProps<Y, M, D>) => any) | WithoutThemeProps<Y, M, D>\n\nexport interface UseComponentPropsOptions<\n Y extends number | string | symbol = string,\n> {\n className?: ClassName\n withContext?: boolean\n transferProps?: Y[]\n}\n\nexport interface ComponentOptions extends Omit<StyledOptions, \"transferProps\"> {\n className?: ClassName\n shouldStyleProps?: boolean\n}\n\ninterface classNameOptions<Y extends string = string> {\n className?: ClassName\n slot?: ComponentSlot<Y>\n}\n\nexport interface ComponentWithContextOptions<\n Y extends number | string | symbol = string,\n>\n extends ComponentOptions, UseComponentPropsOptions<Y> {}\n\nfunction createProxyComponent<\n Y extends AsWithFragment = \"div\",\n M extends Dict = Dict,\n>(el: FC<M> | Y, { shouldStyleProps, ...options }: ComponentOptions = {}) {\n options.shouldForwardProp ??= isFunction(el)\n shouldStyleProps ??= !isFunction(el)\n\n if (el === \"fragment\") el = Fragment\n\n if (shouldStyleProps || isString(el)) {\n const ProxyComponent = styled(el as As, options)\n\n ProxyComponent.displayName = \"ProxyComponent\"\n\n return ProxyComponent\n } else {\n el.displayName ??= \"ProxyComponent\"\n\n return el as FC<M>\n }\n}\n\nfunction withDisplayName<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n>(Component: FC<M>, displayName: string) {\n Object.defineProperty(Component, \"name\", { value: displayName })\n Object.defineProperty(Component, \"displayName\", { value: displayName })\n\n return Component as Component<Y, M>\n}\n\nfunction getSlotKey<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"unknown\"\n\n if (isArray(slot) || !isObject(slot)) {\n return toCamelCase(toArray(slot).join(\"-\"))\n } else {\n return toCamelCase(slot.name)\n }\n}\n\nfunction getSlotName<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"\"\n\n if (isArray(slot)) {\n return slot.map((value) => toPascalCase(value as string)).join(\"\")\n } else if (isObject(slot)) {\n return toPascalCase(slot.name)\n } else {\n return toPascalCase(slot as string)\n }\n}\n\nexport function createComponent<\n Y extends object = {},\n M extends ComponentStyle = Dict,\n D extends Dict = Dict,\n>(name: string, style?: M) {\n const defaultClassName = style?.className\n const defaultDisplayName = getDisplayName(name)\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${defaultDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${defaultDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(name?: string, className?: ClassName) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getClassName(name, defaultClassName)(system)\n\n return className\n }\n\n function useComponentProps<H extends Y = Y, R extends keyof H = keyof H>(\n props: H,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= defaultClassName\n className ??= getClassName(name)(system)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as H)\n : props\n const [, rest] = useComponentStyle(mergedProps, {\n name,\n className,\n style,\n transferProps,\n })\n\n return rest\n }\n\n function component<D extends AsWithFragment = \"div\", H extends Dict = Y>(\n el: D | FC<H>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperProps<H>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps<any>(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withContext<\n D extends AsWithFragment = \"div\",\n H extends Y = Y,\n R extends keyof H = keyof H,\n >(\n el: D | FC<WithoutThemeProps<H, M, R>>,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<R> = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperWithoutThemeProps<H, M, R>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useComponentProps(computedProps, {\n className,\n withContext,\n transferProps,\n })\n const rest = chainProps<any>(...toArray(superProps))()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n useComponentContext,\n usePropsContext,\n withContext,\n useComponentProps,\n }\n}\n\nexport function createSlotComponent<\n Y extends object = {},\n M extends ComponentSlotStyle = Dict,\n D extends Dict = Dict,\n>(rootName: string, style?: M) {\n const rootClassName = style?.className\n const rootDisplayName = getDisplayName(rootName)\n const classNameMap = new Map<string, classNameOptions>()\n const [StyleContext, useStyleContext] = createContext<\n CSSSlotObject<ComponentSlotName<M>>\n >({\n name: `${rootDisplayName}StyleContext`,\n })\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${rootDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${rootDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(\n slot?: ComponentSlot<ComponentSlotName<M>>,\n className?: ClassName,\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return className\n }\n\n function useClassNames() {\n const system = useSystem()\n const entries = classNameMap.entries().map(([key, { className, slot }]) => {\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return [key, className]\n })\n\n return Object.fromEntries(\n entries.filter(([_, className]) => className),\n ) as { [key: string]: string }\n }\n\n function useRootComponentProps<\n Y extends Dict = {},\n R extends keyof Y = keyof Y,\n >(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ): [\n CSSSlotObject,\n Merge<WithoutThemeProps<Y, M, R>, { css?: CSSObject | CSSObject[] }>,\n ] {\n className = useClassName(slot, className)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as Y)\n : props\n const [css, rest] = useComponentSlotStyle(mergedProps, {\n name: rootName,\n className,\n style,\n slot,\n transferProps,\n })\n\n return [css, rest]\n }\n\n function useSlotComponentProps<Y extends Dict = {}>(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { className }: Omit<UseComponentPropsOptions, \"transferProps\"> = {},\n ) {\n className = useClassName(slot, className)\n\n const style = useStyleContext()\n\n return {\n ...props,\n className: cx(className, props.className),\n css: mergeSlotCSS(slot, style, props.css),\n }\n }\n\n function component<H extends AsWithFragment = \"div\", R extends Dict = Dict>(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n className = useClassName(slot, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withProvider<\n H extends AsWithFragment = \"div\",\n R extends Y = Y,\n T extends keyof R = keyof R,\n >(\n el: FC<WithoutThemeProps<R, M, T>> | H,\n slot: ComponentSlot<ComponentSlotName<M>> = \"root\" as ComponentSlot<\n ComponentSlotName<M>\n >,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<T> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperWithoutThemeProps<R, M, T>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const [context, mergedProps] = useRootComponentProps(\n computedProps,\n slot,\n {\n className,\n withContext,\n transferProps,\n },\n )\n const rest = chainProps<any>(...superProps)()(mergedProps)\n\n return (\n <StyleContext value={context}>\n <ProxyComponent {...rest} />\n </StyleContext>\n )\n }, displayName)\n }\n }\n\n function withContext<\n H extends AsWithFragment = \"div\",\n R extends Dict = H extends DOMElement ? HTMLStyledProps<H> : Dict,\n >(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n name,\n className,\n withContext,\n ...options\n }: Omit<ComponentWithContextOptions, \"transferProps\"> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useSlotComponentProps(computedProps, slot, {\n className,\n withContext,\n })\n const rest = chainProps(...superProps)()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n StyleContext,\n useClassNames,\n useComponentContext,\n usePropsContext,\n useStyleContext,\n withContext,\n withProvider,\n useRootComponentProps,\n useSlotComponentProps,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"create-component.cjs","names":["Fragment","styled","getDisplayName","createContext","useSystem","getClassName","useComponentStyle","mergeProps","chainProps","getSlotClassName","useComponentSlotStyle","mergeSlotCSS"],"sources":["../../../../src/core/components/create-component.tsx"],"sourcesContent":["\"use client\"\n\nimport type { FC, FunctionComponent } from \"react\"\nimport type { AnyString, Dict, Merge } from \"../../utils\"\nimport type { CSSObject, CSSSlotObject } from \"../css\"\nimport type {\n ComponentSlotStyle,\n ComponentStyle,\n StyledOptions,\n System,\n WithoutThemeProps,\n} from \"../system\"\nimport type {\n As,\n DOMElement,\n HTMLStyledProps,\n Component as OriginalComponent,\n} from \"./index.types\"\nimport { Fragment } from \"react\"\nimport {\n createContext,\n cx,\n isArray,\n isFunction,\n isObject,\n isString,\n runIfFn,\n toArray,\n toCamelCase,\n toPascalCase,\n} from \"../../utils\"\nimport { styled, useSystem } from \"../system\"\nimport { chainProps, mergeProps } from \"./props\"\nimport {\n getSlotClassName,\n mergeSlotCSS,\n useComponentSlotStyle,\n useComponentStyle,\n} from \"./use-component-style\"\nimport { getClassName, getDisplayName } from \"./utils\"\n\ntype AsWithFragment = \"fragment\" | As\ntype ClassName = ((system: System) => string) | string\n\ntype Component<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n> = Y extends \"fragment\"\n ? FunctionComponent<M>\n : OriginalComponent<Exclude<Y, \"fragment\">, M>\n\nexport type ComponentSlotName<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentSlotStyle,\n> = AnyString | Extract<keyof NonNullable<Y[\"base\"]>, string>\n\nexport type ComponentSlot<Y extends string> =\n | [Y, Y]\n | Y\n | { name: string; slot: [Y, Y] | Y }\n\nexport type InitialProps<Y extends Dict = Dict> =\n | ((props: Y) => any)\n | Partial<Y>\nexport type SuperProps<Y extends Dict = Dict> = ((props: Y) => any) | Y\n\nexport type SuperWithoutThemeProps<\n Y extends Dict = Dict,\n M extends Dict = Dict,\n D extends keyof Y = keyof Y,\n> = ((props: WithoutThemeProps<Y, M, D>) => any) | WithoutThemeProps<Y, M, D>\n\nexport interface UseComponentPropsOptions<\n Y extends number | string | symbol = string,\n> {\n className?: ClassName\n withContext?: boolean\n transferProps?: Y[]\n}\n\nexport interface ComponentOptions extends Omit<StyledOptions, \"transferProps\"> {\n className?: ClassName\n shouldStyleProps?: boolean\n}\n\ninterface classNameOptions<Y extends string = string> {\n className?: ClassName\n slot?: ComponentSlot<Y>\n}\n\nexport interface ComponentWithContextOptions<\n Y extends number | string | symbol = string,\n>\n extends ComponentOptions, UseComponentPropsOptions<Y> {}\n\nfunction createProxyComponent<\n Y extends AsWithFragment = \"div\",\n M extends Dict = Dict,\n>(el: FC<M> | Y, { shouldStyleProps, ...options }: ComponentOptions = {}) {\n options.shouldForwardProp ??= isFunction(el)\n shouldStyleProps ??= !isFunction(el)\n\n if (el === \"fragment\") el = Fragment\n\n if (shouldStyleProps || isString(el)) {\n const ProxyComponent = styled(el as As, options)\n\n ProxyComponent.displayName = \"ProxyComponent\"\n\n return ProxyComponent\n } else {\n el.displayName ??= \"ProxyComponent\"\n\n return el as FC<M>\n }\n}\n\nfunction withDisplayName<\n Y extends AsWithFragment = AsWithFragment,\n M extends object = {},\n>(Component: FC<M>, displayName: string) {\n Object.defineProperty(Component, \"name\", { value: displayName })\n Object.defineProperty(Component, \"displayName\", { value: displayName })\n\n return Component as Component<Y, M>\n}\n\nfunction getSlotKey<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"unknown\"\n\n if (isArray(slot) || !isObject(slot))\n return toCamelCase(toArray(slot).join(\"-\"))\n else return toCamelCase(slot.name)\n}\n\nfunction getSlotName<Y extends string>(slot?: ComponentSlot<Y>) {\n if (!slot) return \"\"\n\n if (isArray(slot))\n return slot.map((value) => toPascalCase(value as string)).join(\"\")\n else if (isObject(slot)) return toPascalCase(slot.name)\n else return toPascalCase(slot as string)\n}\n\nexport function createComponent<\n Y extends object = {},\n M extends ComponentStyle = Dict,\n D extends Dict = Dict,\n>(name: string, style?: M) {\n const defaultClassName = style?.className\n const defaultDisplayName = getDisplayName(name)\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${defaultDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${defaultDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(name?: string, className?: ClassName) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getClassName(name, defaultClassName)(system)\n\n return className\n }\n\n function useComponentProps<H extends Y = Y, R extends keyof H = keyof H>(\n props: H,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= defaultClassName\n className ??= getClassName(name)(system)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as H)\n : props\n const [, rest] = useComponentStyle(mergedProps, {\n name,\n className,\n style,\n transferProps,\n })\n\n return rest\n }\n\n function component<D extends AsWithFragment = \"div\", H extends Dict = Y>(\n el: D | FC<H>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperProps<H>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps<any>(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withContext<\n D extends AsWithFragment = \"div\",\n H extends Y = Y,\n R extends keyof H = keyof H,\n >(\n el: D | FC<WithoutThemeProps<H, M, R>>,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<R> = {},\n ) {\n const displayName = getDisplayName(name, defaultDisplayName)\n const ProxyComponent = createProxyComponent(el, options)\n\n return function (\n initialProps?: InitialProps<H>,\n ...superProps: SuperWithoutThemeProps<H, M, R>[]\n ) {\n return withDisplayName<D, H>((props) => {\n className = useClassName(name, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useComponentProps(computedProps, {\n className,\n withContext,\n transferProps,\n })\n const rest = chainProps<any>(...toArray(superProps))()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n useComponentContext,\n usePropsContext,\n withContext,\n useComponentProps,\n }\n}\n\nexport function createSlotComponent<\n Y extends object = {},\n M extends ComponentSlotStyle = Dict,\n D extends Dict = Dict,\n>(rootName: string, style?: M) {\n const rootClassName = style?.className\n const rootDisplayName = getDisplayName(rootName)\n const classNameMap = new Map<string, classNameOptions>()\n const [StyleContext, useStyleContext] = createContext<\n CSSSlotObject<ComponentSlotName<M>>\n >({\n name: `${rootDisplayName}StyleContext`,\n })\n const [ComponentContext, useComponentContext] = createContext<D>({\n name: `${rootDisplayName}Context`,\n })\n const [PropsContext, usePropsContext] = createContext<Partial<Y>>({\n name: `${rootDisplayName}PropsContext`,\n strict: false,\n })\n\n function useClassName(\n slot?: ComponentSlot<ComponentSlotName<M>>,\n className?: ClassName,\n ) {\n const system = useSystem()\n\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return className\n }\n\n function useClassNames() {\n const system = useSystem()\n const entries = classNameMap.entries().map(([key, { className, slot }]) => {\n className = runIfFn(className, system)\n className ??= getSlotClassName(\n rootClassName ?? getClassName(rootName)(system),\n slot,\n )\n\n return [key, className]\n })\n\n return Object.fromEntries(\n entries.filter(([_, className]) => className),\n ) as { [key: string]: string }\n }\n\n function useRootComponentProps<\n Y extends Dict = {},\n R extends keyof Y = keyof Y,\n >(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n className,\n withContext = true,\n transferProps,\n }: UseComponentPropsOptions<R> = {},\n ): [\n CSSSlotObject,\n Merge<WithoutThemeProps<Y, M, R>, { css?: CSSObject | CSSObject[] }>,\n ] {\n className = useClassName(slot, className)\n\n const contextProps = usePropsContext() ?? {}\n const mergedProps = withContext\n ? (mergeProps(contextProps, props)() as Y)\n : props\n const [css, rest] = useComponentSlotStyle(mergedProps, {\n name: rootName,\n className,\n style,\n slot,\n transferProps,\n })\n\n return [css, rest]\n }\n\n function useSlotComponentProps<Y extends Dict = {}>(\n props: Y,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { className }: Omit<UseComponentPropsOptions, \"transferProps\"> = {},\n ) {\n className = useClassName(slot, className)\n\n const style = useStyleContext()\n\n return {\n ...props,\n className: cx(className, props.className),\n css: mergeSlotCSS(slot, style, props.css),\n }\n }\n\n function component<H extends AsWithFragment = \"div\", R extends Dict = Dict>(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n { name, className, ...options }: ComponentOptions = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n className = useClassName(slot, className)\n\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = chainProps(...superProps)()(computedProps)\n\n return (\n <ProxyComponent\n {...mergedProps}\n className={cx(className, mergedProps.className)}\n />\n )\n }, displayName)\n }\n }\n\n function withProvider<\n H extends AsWithFragment = \"div\",\n R extends Y = Y,\n T extends keyof R = keyof R,\n >(\n el: FC<WithoutThemeProps<R, M, T>> | H,\n slot: ComponentSlot<ComponentSlotName<M>> = \"root\" as ComponentSlot<\n ComponentSlotName<M>\n >,\n {\n name,\n className,\n withContext,\n transferProps,\n ...options\n }: ComponentWithContextOptions<T> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperWithoutThemeProps<R, M, T>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const [context, mergedProps] = useRootComponentProps(\n computedProps,\n slot,\n {\n className,\n withContext,\n transferProps,\n },\n )\n const rest = chainProps<any>(...superProps)()(mergedProps)\n\n return (\n <StyleContext value={context}>\n <ProxyComponent {...rest} />\n </StyleContext>\n )\n }, displayName)\n }\n }\n\n function withContext<\n H extends AsWithFragment = \"div\",\n R extends Dict = H extends DOMElement ? HTMLStyledProps<H> : Dict,\n >(\n el: FC<R> | H,\n slot?: ComponentSlot<ComponentSlotName<M>>,\n {\n name,\n className,\n withContext,\n ...options\n }: Omit<ComponentWithContextOptions, \"transferProps\"> = {},\n ) {\n const ProxyComponent = createProxyComponent(el, options)\n const slotKey = getSlotKey(slot)\n const slotName = getSlotName(slot)\n const displayName = getDisplayName(name, `${rootDisplayName}${slotName}`)\n\n classNameMap.set(slotKey, { className, slot })\n\n return function (\n initialProps?: InitialProps<R>,\n ...superProps: SuperProps<R>[]\n ) {\n return withDisplayName<H, R>((props) => {\n const computedProps = isFunction(initialProps)\n ? initialProps(props)\n : mergeProps(initialProps ?? {}, props)()\n const mergedProps = useSlotComponentProps(computedProps, slot, {\n className,\n withContext,\n })\n const rest = chainProps(...superProps)()(mergedProps)\n\n return <ProxyComponent {...rest} />\n }, displayName)\n }\n }\n\n return {\n component,\n ComponentContext,\n PropsContext,\n StyleContext,\n useClassNames,\n useComponentContext,\n usePropsContext,\n useStyleContext,\n withContext,\n withProvider,\n useRootComponentProps,\n useSlotComponentProps,\n }\n}\n"],"mappings":";;;;;;;;;;;AA8FA,SAAS,qBAGP,IAAe,EAAE,kBAAkB,GAAG,YAA8B,CAAC,GAAG;CACxE,QAAQ,uBAAA,GAAA,oBAAA,cAAA,WAAA,CAAiC,EAAE;CAC3C,qBAAqB,EAAA,GAAA,oBAAA,cAAA,WAAA,CAAY,EAAE;CAEnC,IAAI,OAAO,YAAY,KAAKA,MAAAA;CAE5B,IAAI,qBAAA,GAAA,oBAAA,cAAA,SAAA,CAA6B,EAAE,GAAG;EACpC,MAAM,iBAAiBC,gBAAAA,OAAO,IAAU,OAAO;EAE/C,eAAe,cAAc;EAE7B,OAAO;CACT,OAAO;EACL,GAAG,gBAAgB;EAEnB,OAAO;CACT;AACF;AAEA,SAAS,gBAGP,WAAkB,aAAqB;CACvC,OAAO,eAAe,WAAW,QAAQ,EAAE,OAAO,YAAY,CAAC;CAC/D,OAAO,eAAe,WAAW,eAAe,EAAE,OAAO,YAAY,CAAC;CAEtE,OAAO;AACT;AAEA,SAAS,WAA6B,MAAyB;CAC7D,IAAI,CAAC,MAAM,OAAO;CAElB,KAAA,GAAA,oBAAA,cAAA,QAAA,CAAY,IAAI,KAAK,EAAA,GAAA,oBAAA,cAAA,SAAA,CAAU,IAAI,GACjC,QAAA,GAAA,oBAAA,cAAA,YAAA,EAAA,GAAA,oBAAA,cAAA,QAAA,CAA2B,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC;MACvC,QAAA,GAAA,oBAAA,cAAA,YAAA,CAAmB,KAAK,IAAI;AACnC;AAEA,SAAS,YAA8B,MAAyB;CAC9D,IAAI,CAAC,MAAM,OAAO;CAElB,KAAA,GAAA,oBAAA,cAAA,QAAA,CAAY,IAAI,GACd,OAAO,KAAK,KAAK,WAAA,GAAA,oBAAA,cAAA,aAAA,CAAuB,KAAe,CAAC,CAAC,CAAC,KAAK,EAAE;MAC9D,KAAA,GAAA,oBAAA,cAAA,SAAA,CAAa,IAAI,GAAG,QAAA,GAAA,oBAAA,cAAA,aAAA,CAAoB,KAAK,IAAI;MACjD,QAAA,GAAA,oBAAA,cAAA,aAAA,CAAoB,IAAc;AACzC;AAEA,SAAgB,gBAId,MAAc,OAAW;CACzB,MAAM,mBAAmB,OAAO;CAChC,MAAM,qBAAqBC,cAAAA,eAAe,IAAI;CAC9C,MAAM,CAAC,kBAAkB,uBAAuBC,gBAAAA,cAAiB,EAC/D,MAAM,GAAG,mBAAmB,SAC9B,CAAC;CACD,MAAM,CAAC,cAAc,mBAAmBA,gBAAAA,cAA0B;EAChE,MAAM,GAAG,mBAAmB;EAC5B,QAAQ;CACV,CAAC;CAED,SAAS,aAAa,MAAe,WAAuB;EAC1D,MAAM,SAASC,wBAAAA,UAAU;EAEzB,aAAA,GAAA,oBAAA,cAAA,QAAA,CAAoB,WAAW,MAAM;EACrC,cAAcC,cAAAA,aAAa,MAAM,gBAAgB,CAAC,CAAC,MAAM;EAEzD,OAAO;CACT;CAEA,SAAS,kBACP,OACA,EACE,WACA,cAAc,MACd,kBAC+B,CAAC,GAClC;EACA,MAAM,SAASD,wBAAAA,UAAU;EAEzB,aAAA,GAAA,oBAAA,cAAA,QAAA,CAAoB,WAAW,MAAM;EACrC,cAAc;EACd,cAAcC,cAAAA,aAAa,IAAI,CAAC,CAAC,MAAM;EAEvC,MAAM,eAAe,gBAAgB,KAAK,CAAC;EAI3C,MAAM,GAAG,QAAQC,4BAAAA,kBAHG,cACfC,cAAAA,WAAW,cAAc,KAAK,CAAC,CAAC,IACjC,OAC4C;GAC9C;GACA;GACA;GACA;EACF,CAAC;EAED,OAAO;CACT;CAEA,SAAS,UACP,IACA,EAAE,MAAM,WAAW,GAAG,YAA8B,CAAC,GACrD;EACA,MAAM,cAAcL,cAAAA,eAAe,MAAM,kBAAkB;EAC3D,MAAM,iBAAiB,qBAAqB,IAAI,OAAO;EAEvD,OAAO,SACL,cACA,GAAG,YACH;GACA,OAAO,iBAAuB,UAAU;IACtC,YAAY,aAAa,MAAM,SAAS;IAExC,MAAM,iBAAA,GAAA,oBAAA,cAAA,WAAA,CAA2B,YAAY,IACzC,aAAa,KAAK,IAClBK,cAAAA,WAAW,gBAAgB,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1C,MAAM,cAAcC,cAAAA,WAAgB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa;IAElE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,gBAAD;KACE,GAAI;KACJ,YAAA,GAAA,oBAAA,cAAA,GAAA,CAAc,WAAW,YAAY,SAAS;IAC/C,CAAA;GAEL,GAAG,WAAW;EAChB;CACF;CAEA,SAAS,YAKP,IACA,EACE,MACA,WACA,aACA,eACA,GAAG,YAC+B,CAAC,GACrC;EACA,MAAM,cAAcN,cAAAA,eAAe,MAAM,kBAAkB;EAC3D,MAAM,iBAAiB,qBAAqB,IAAI,OAAO;EAEvD,OAAO,SACL,cACA,GAAG,YACH;GACA,OAAO,iBAAuB,UAAU;IACtC,YAAY,aAAa,MAAM,SAAS;IAKxC,MAAM,cAAc,mBAAA,GAAA,oBAAA,cAAA,WAAA,CAHa,YAAY,IACzC,aAAa,KAAK,IAClBK,cAAAA,WAAW,gBAAgB,CAAC,GAAG,KAAK,CAAC,CAAC,GACW;KACnD;KACA;KACA;IACF,CAAC;IAGD,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,gBAAD,EAAgB,GAFVC,cAAAA,WAAgB,IAAA,GAAA,oBAAA,cAAA,QAAA,CAAW,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAEzB,EAAI,CAAA;GACpC,GAAG,WAAW;EAChB;CACF;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF;AAEA,SAAgB,oBAId,UAAkB,OAAW;CAC7B,MAAM,gBAAgB,OAAO;CAC7B,MAAM,kBAAkBN,cAAAA,eAAe,QAAQ;CAC/C,MAAM,+BAAe,IAAI,IAA8B;CACvD,MAAM,CAAC,cAAc,mBAAmBC,gBAAAA,cAEtC,EACA,MAAM,GAAG,gBAAgB,cAC3B,CAAC;CACD,MAAM,CAAC,kBAAkB,uBAAuBA,gBAAAA,cAAiB,EAC/D,MAAM,GAAG,gBAAgB,SAC3B,CAAC;CACD,MAAM,CAAC,cAAc,mBAAmBA,gBAAAA,cAA0B;EAChE,MAAM,GAAG,gBAAgB;EACzB,QAAQ;CACV,CAAC;CAED,SAAS,aACP,MACA,WACA;EACA,MAAM,SAASC,wBAAAA,UAAU;EAEzB,aAAA,GAAA,oBAAA,cAAA,QAAA,CAAoB,WAAW,MAAM;EACrC,cAAcK,4BAAAA,iBACZ,iBAAiBJ,cAAAA,aAAa,QAAQ,CAAC,CAAC,MAAM,GAC9C,IACF;EAEA,OAAO;CACT;CAEA,SAAS,gBAAgB;EACvB,MAAM,SAASD,wBAAAA,UAAU;EACzB,MAAM,UAAU,aAAa,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,YAAY;GACzE,aAAA,GAAA,oBAAA,cAAA,QAAA,CAAoB,WAAW,MAAM;GACrC,cAAcK,4BAAAA,iBACZ,iBAAiBJ,cAAAA,aAAa,QAAQ,CAAC,CAAC,MAAM,GAC9C,IACF;GAEA,OAAO,CAAC,KAAK,SAAS;EACxB,CAAC;EAED,OAAO,OAAO,YACZ,QAAQ,QAAQ,CAAC,GAAG,eAAe,SAAS,CAC9C;CACF;CAEA,SAAS,sBAIP,OACA,MACA,EACE,WACA,cAAc,MACd,kBAC+B,CAAC,GAIlC;EACA,YAAY,aAAa,MAAM,SAAS;EAExC,MAAM,eAAe,gBAAgB,KAAK,CAAC;EAI3C,MAAM,CAAC,KAAK,QAAQK,4BAAAA,sBAHA,cACfH,cAAAA,WAAW,cAAc,KAAK,CAAC,CAAC,IACjC,OACmD;GACrD,MAAM;GACN;GACA;GACA;GACA;EACF,CAAC;EAED,OAAO,CAAC,KAAK,IAAI;CACnB;CAEA,SAAS,sBACP,OACA,MACA,EAAE,cAA+D,CAAC,GAClE;EACA,YAAY,aAAa,MAAM,SAAS;EAExC,MAAM,QAAQ,gBAAgB;EAE9B,OAAO;GACL,GAAG;GACH,YAAA,GAAA,oBAAA,cAAA,GAAA,CAAc,WAAW,MAAM,SAAS;GACxC,KAAKI,4BAAAA,aAAa,MAAM,OAAO,MAAM,GAAG;EAC1C;CACF;CAEA,SAAS,UACP,IACA,MACA,EAAE,MAAM,WAAW,GAAG,YAA8B,CAAC,GACrD;EACA,MAAM,iBAAiB,qBAAqB,IAAI,OAAO;EACvD,MAAM,UAAU,WAAW,IAAI;EAE/B,MAAM,cAAcT,cAAAA,eAAe,MAAM,GAAG,kBAD3B,YAAY,IACwC,GAAG;EAExE,aAAa,IAAI,SAAS;GAAE;GAAW;EAAK,CAAC;EAE7C,OAAO,SACL,cACA,GAAG,YACH;GACA,OAAO,iBAAuB,UAAU;IACtC,YAAY,aAAa,MAAM,SAAS;IAExC,MAAM,iBAAA,GAAA,oBAAA,cAAA,WAAA,CAA2B,YAAY,IACzC,aAAa,KAAK,IAClBK,cAAAA,WAAW,gBAAgB,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1C,MAAM,cAAcC,cAAAA,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa;IAE7D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,gBAAD;KACE,GAAI;KACJ,YAAA,GAAA,oBAAA,cAAA,GAAA,CAAc,WAAW,YAAY,SAAS;IAC/C,CAAA;GAEL,GAAG,WAAW;EAChB;CACF;CAEA,SAAS,aAKP,IACA,OAA4C,QAG5C,EACE,MACA,WACA,aACA,eACA,GAAG,YAC+B,CAAC,GACrC;EACA,MAAM,iBAAiB,qBAAqB,IAAI,OAAO;EACvD,MAAM,UAAU,WAAW,IAAI;EAE/B,MAAM,cAAcN,cAAAA,eAAe,MAAM,GAAG,kBAD3B,YAAY,IACwC,GAAG;EAExE,aAAa,IAAI,SAAS;GAAE;GAAW;EAAK,CAAC;EAE7C,OAAO,SACL,cACA,GAAG,YACH;GACA,OAAO,iBAAuB,UAAU;IAItC,MAAM,CAAC,SAAS,eAAe,uBAAA,GAAA,oBAAA,cAAA,WAAA,CAHE,YAAY,IACzC,aAAa,KAAK,IAClBK,cAAAA,WAAW,gBAAgB,CAAC,GAAG,KAAK,CAAC,CAAC,GAGxC,MACA;KACE;KACA;KACA;IACF,CACF;IAGA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAD;KAAc,OAAO;eACnB,iBAAA,GAAA,kBAAA,IAAA,CAAC,gBAAD,EAAgB,GAJPC,cAAAA,WAAgB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAInB,EAAI,CAAA;IACf,CAAA;GAElB,GAAG,WAAW;EAChB;CACF;CAEA,SAAS,YAIP,IACA,MACA,EACE,MACA,WACA,aACA,GAAG,YACmD,CAAC,GACzD;EACA,MAAM,iBAAiB,qBAAqB,IAAI,OAAO;EACvD,MAAM,UAAU,WAAW,IAAI;EAE/B,MAAM,cAAcN,cAAAA,eAAe,MAAM,GAAG,kBAD3B,YAAY,IACwC,GAAG;EAExE,aAAa,IAAI,SAAS;GAAE;GAAW;EAAK,CAAC;EAE7C,OAAO,SACL,cACA,GAAG,YACH;GACA,OAAO,iBAAuB,UAAU;IAItC,MAAM,cAAc,uBAAA,GAAA,oBAAA,cAAA,WAAA,CAHa,YAAY,IACzC,aAAa,KAAK,IAClBK,cAAAA,WAAW,gBAAgB,CAAC,GAAG,KAAK,CAAC,CAAC,GACe,MAAM;KAC7D;KACA;IACF,CAAC;IAGD,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,gBAAD,EAAgB,GAFVC,cAAAA,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAEX,EAAI,CAAA;GACpC,GAAG,WAAW;EAChB;CACF;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"props.cjs","names":["conditionProperties","styleProperties","vendorProperties","mergeRefs"],"sources":["../../../../src/core/components/props.ts"],"sourcesContent":["import type { Dict, Merge } from \"../../utils\"\nimport { useMemo } from \"react\"\nimport isEqual from \"react-fast-compare\"\nimport {\n cx,\n handlerAll,\n isArray,\n isEmptyObject,\n isFunction,\n isObject,\n isUndefined,\n merge,\n mergeRefs,\n omitObject,\n splitObject,\n} from \"../../utils\"\nimport { conditionProperties, styleProperties, vendorProperties } from \"../css\"\n\ntype Optionalize<Y> = [Extract<Y, undefined>] extends [never]\n ? Y\n : Partial<Exclude<Y, undefined>>\n\ntype MergeAll<Y extends (Dict | undefined)[]> = Y extends [infer M]\n ? Optionalize<M>\n : Y extends [infer D, ...infer H]\n ? H extends (Dict | undefined)[]\n ? Merge<Optionalize<D>, MergeAll<H>>\n : Optionalize<D>\n : never\n\nfunction isEvent(key: string) {\n return /^on[A-Z]/.test(key)\n}\n\nexport const cssProps = new Set<string>([\n ...conditionProperties,\n ...styleProperties,\n ...vendorProperties,\n])\n\nexport type ShouldForwardProp = (prop: string) => boolean\n\nexport function createShouldForwardProp(\n forwardProps: string[] = [],\n): ShouldForwardProp {\n return function (prop: string): boolean {\n if (forwardProps.includes(prop)) return true\n\n if (prop.startsWith(\"--\")) return false\n\n return !cssProps.has(prop)\n }\n}\n\ninterface MergePropsOptions {\n mergeClassName?: boolean\n mergeCSS?: boolean\n mergeEvent?: boolean\n mergeRef?: boolean\n mergeStyle?: boolean\n}\n\nexport function mergeProps<Y extends Dict>(\n ...args: Y[]\n): (options?: MergePropsOptions) => Y\nexport function mergeProps<Y extends (Dict | undefined)[]>(\n ...args: Y\n): (options?: MergePropsOptions) => MergeAll<Y>\nexport function mergeProps(...args: (Dict | undefined)[]) {\n return function ({\n mergeClassName = true,\n mergeCSS = true,\n mergeEvent = true,\n mergeRef = true,\n mergeStyle = true,\n }: MergePropsOptions = {}) {\n let result: Dict = {}\n\n for (const props of args) {\n if (isUndefined(props)) continue\n\n for (const key in result) {\n if (mergeRef && key === \"ref\") {\n result[key] = mergeRefs(result[key], props[key])\n\n continue\n }\n\n if (\n mergeEvent &&\n isEvent(key) &&\n isFunction(result[key]) &&\n isFunction(props[key])\n ) {\n result[key] = handlerAll(result[key], props[key])\n\n continue\n }\n\n if (mergeClassName && (key === \"className\" || key === \"class\")) {\n result[key] = cx(result[key], props[key])\n\n continue\n }\n\n if (mergeStyle && key === \"style\") {\n result[key] = merge(result[key] ?? {}, props[key] ?? {})\n\n continue\n }\n\n if (mergeCSS && key === \"css\") {\n if (isArray(result[key])) {\n result[key].push(props[key])\n } else {\n result[key] ??= []\n\n result[key] = [result[key], props[key]]\n }\n\n continue\n }\n\n result[key] = !isUndefined(props[key]) ? props[key] : result[key]\n }\n\n for (const key in props) {\n if (isUndefined(result[key])) result[key] = props[key]\n }\n }\n\n return result as any\n }\n}\n\ntype CallbackProps<Y extends Dict = Dict> = (props: Y) => Y\n\ntype PropsOrCallback<Y extends Dict = Dict> = CallbackProps<Y> | Y\n\nexport function chainProps<Y extends Dict = Dict>(\n ...props: PropsOrCallback<Y>[]\n) {\n return function (options: MergePropsOptions = {}) {\n if (!props.length) return (a: Y) => a\n\n if (props.length === 1)\n return function (b: Y) {\n const a = props[0] ?? {}\n const c = isFunction(a) ? a(b) : mergeProps(a, b)(options)\n\n return c\n } as CallbackProps<Y>\n\n return props.reduce(function (a, b) {\n return function (c: Y = {} as Y) {\n const d = isFunction(a) ? a(c) : mergeProps(a, c)(options)\n const f = isFunction(b) ? b(d) : mergeProps(b, d)(options)\n\n return f\n }\n }) as CallbackProps<Y>\n }\n}\n\nexport function isEqualProps<\n Y extends Dict,\n M extends Dict,\n D extends keyof M | keyof Y,\n>(a: Y, b: M, omitKeys: D[] = []) {\n return isEqual(\n omitObject(a, omitKeys as (keyof Y)[]),\n omitObject(b, omitKeys as (keyof M)[]),\n )\n}\n\nexport function useSplitProps<Y extends Dict, M extends keyof Y>(\n props: Y,\n keys: M[] | readonly M[],\n) {\n return useMemo(() => splitObject<Y, M>(props, keys), [props, keys])\n}\n\nexport function extractProps(props: Dict, keys: readonly string[] | string[]) {\n let result: Dict = {}\n\n Object.entries(props).forEach(([key, value]) => {\n if (!cssProps.has(key)) return\n\n if (keys.includes(key)) {\n result = merge(result, { [key]: value })\n } else if (isObject(value)) {\n value = extractProps(value, keys)\n\n if (isEmptyObject(value)) return\n\n result = merge(result, { [key]: value })\n }\n })\n\n return result\n}\n\nexport function useExtractProps(\n props: Dict,\n keys: readonly string[] | string[],\n) {\n return useMemo(() => extractProps(props, keys), [props, keys])\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"props.cjs","names":["conditionProperties","styleProperties","vendorProperties","mergeRefs"],"sources":["../../../../src/core/components/props.ts"],"sourcesContent":["import type { Dict, Merge } from \"../../utils\"\nimport { useMemo } from \"react\"\nimport isEqual from \"react-fast-compare\"\nimport {\n cx,\n handlerAll,\n isArray,\n isEmptyObject,\n isFunction,\n isObject,\n isUndefined,\n merge,\n mergeRefs,\n omitObject,\n splitObject,\n} from \"../../utils\"\nimport { conditionProperties, styleProperties, vendorProperties } from \"../css\"\n\ntype Optionalize<Y> = [Extract<Y, undefined>] extends [never]\n ? Y\n : Partial<Exclude<Y, undefined>>\n\ntype MergeAll<Y extends (Dict | undefined)[]> = Y extends [infer M]\n ? Optionalize<M>\n : Y extends [infer D, ...infer H]\n ? H extends (Dict | undefined)[]\n ? Merge<Optionalize<D>, MergeAll<H>>\n : Optionalize<D>\n : never\n\nfunction isEvent(key: string) {\n return /^on[A-Z]/.test(key)\n}\n\nexport const cssProps = new Set<string>([\n ...conditionProperties,\n ...styleProperties,\n ...vendorProperties,\n])\n\nexport type ShouldForwardProp = (prop: string) => boolean\n\nexport function createShouldForwardProp(\n forwardProps: string[] = [],\n): ShouldForwardProp {\n return function (prop: string): boolean {\n if (forwardProps.includes(prop)) return true\n\n if (prop.startsWith(\"--\")) return false\n\n return !cssProps.has(prop)\n }\n}\n\ninterface MergePropsOptions {\n mergeClassName?: boolean\n mergeCSS?: boolean\n mergeEvent?: boolean\n mergeRef?: boolean\n mergeStyle?: boolean\n}\n\nexport function mergeProps<Y extends Dict>(\n ...args: Y[]\n): (options?: MergePropsOptions) => Y\nexport function mergeProps<Y extends (Dict | undefined)[]>(\n ...args: Y\n): (options?: MergePropsOptions) => MergeAll<Y>\nexport function mergeProps(...args: (Dict | undefined)[]) {\n return function ({\n mergeClassName = true,\n mergeCSS = true,\n mergeEvent = true,\n mergeRef = true,\n mergeStyle = true,\n }: MergePropsOptions = {}) {\n let result: Dict = {}\n\n for (const props of args) {\n if (isUndefined(props)) continue\n\n for (const key in result) {\n if (mergeRef && key === \"ref\") {\n result[key] = mergeRefs(result[key], props[key])\n\n continue\n }\n\n if (\n mergeEvent &&\n isEvent(key) &&\n isFunction(result[key]) &&\n isFunction(props[key])\n ) {\n result[key] = handlerAll(result[key], props[key])\n\n continue\n }\n\n if (mergeClassName && (key === \"className\" || key === \"class\")) {\n result[key] = cx(result[key], props[key])\n\n continue\n }\n\n if (mergeStyle && key === \"style\") {\n result[key] = merge(result[key] ?? {}, props[key] ?? {})\n\n continue\n }\n\n if (mergeCSS && key === \"css\") {\n if (isArray(result[key])) {\n result[key].push(props[key])\n } else {\n result[key] ??= []\n\n result[key] = [result[key], props[key]]\n }\n\n continue\n }\n\n result[key] = !isUndefined(props[key]) ? props[key] : result[key]\n }\n\n for (const key in props)\n if (isUndefined(result[key])) result[key] = props[key]\n }\n\n return result as any\n }\n}\n\ntype CallbackProps<Y extends Dict = Dict> = (props: Y) => Y\n\ntype PropsOrCallback<Y extends Dict = Dict> = CallbackProps<Y> | Y\n\nexport function chainProps<Y extends Dict = Dict>(\n ...props: PropsOrCallback<Y>[]\n) {\n return function (options: MergePropsOptions = {}) {\n if (!props.length) return (a: Y) => a\n\n if (props.length === 1)\n return function (b: Y) {\n const a = props[0] ?? {}\n const c = isFunction(a) ? a(b) : mergeProps(a, b)(options)\n\n return c\n } as CallbackProps<Y>\n\n return props.reduce(function (a, b) {\n return function (c: Y = {} as Y) {\n const d = isFunction(a) ? a(c) : mergeProps(a, c)(options)\n const f = isFunction(b) ? b(d) : mergeProps(b, d)(options)\n\n return f\n }\n }) as CallbackProps<Y>\n }\n}\n\nexport function isEqualProps<\n Y extends Dict,\n M extends Dict,\n D extends keyof M | keyof Y,\n>(a: Y, b: M, omitKeys: D[] = []) {\n return isEqual(\n omitObject(a, omitKeys as (keyof Y)[]),\n omitObject(b, omitKeys as (keyof M)[]),\n )\n}\n\nexport function useSplitProps<Y extends Dict, M extends keyof Y>(\n props: Y,\n keys: M[] | readonly M[],\n) {\n return useMemo(() => splitObject<Y, M>(props, keys), [props, keys])\n}\n\nexport function extractProps(props: Dict, keys: readonly string[] | string[]) {\n let result: Dict = {}\n\n Object.entries(props).forEach(([key, value]) => {\n if (!cssProps.has(key)) return\n\n if (keys.includes(key)) {\n result = merge(result, { [key]: value })\n } else if (isObject(value)) {\n value = extractProps(value, keys)\n\n if (isEmptyObject(value)) return\n\n result = merge(result, { [key]: value })\n }\n })\n\n return result\n}\n\nexport function useExtractProps(\n props: Dict,\n keys: readonly string[] | string[],\n) {\n return useMemo(() => extractProps(props, keys), [props, keys])\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-component-style.cjs","names":["conditions","getCondition","useSystem","useColorSchemeContext","isEqualProps","mergeCSS"],"sources":["../../../../src/core/components/use-component-style.ts"],"sourcesContent":["\"use client\"\n\nimport type { Dict } from \"../../utils\"\nimport type {\n ColorModeArray,\n CSSModifierObject,\n CSSObject,\n CSSPropObject,\n CSSSlotObject,\n ResponsiveWithConditionObject,\n StyleValueWithCondition,\n} from \"../css\"\nimport type {\n Breakpoints,\n ComponentCompound,\n ComponentSlotStyle,\n ComponentStyle,\n Layers,\n LayerScheme,\n ThemeProps,\n WithoutThemeProps,\n} from \"../system\"\nimport type { ComponentSlot, ComponentSlotName } from \"./create-component\"\nimport type { HTMLStyledProps } from \"./index.types\"\nimport { useRef } from \"react\"\nimport {\n bem,\n cx,\n filterEmpty,\n isArray,\n isBooleanish,\n isEmptyObject,\n isObject,\n isRegExp,\n isUndefined,\n merge,\n omitObject,\n toArray,\n toKebabCase,\n} from \"../../utils\"\nimport { conditions, getCondition, mergeCSS } from \"../css\"\nimport { useColorSchemeContext, useSystem } from \"../system\"\nimport { isEqualProps } from \"./props\"\n\ntype Style<Y extends boolean = false> = Y extends false\n ? CSSObject\n : CSSSlotObject\n\ntype MergedStyle = CSSModifierObject | CSSModifierObject<CSSSlotObject>\n\ninterface GetStyleOptions\n extends Partial<Breakpoints>, Pick<Partial<Layers>, \"wrap\"> {\n hasSlot?: boolean\n modifier?: string\n name?: string\n selectors?: (string | undefined)[]\n value?: string\n}\n\nfunction getSelectorStyle<Y extends Dict = Dict>(\n selectors: (string | undefined)[],\n style: Y,\n) {\n return selectors.reduceRight<Dict>(\n (prev, key) => (key ? { [key]: prev } : prev),\n style,\n ) as Y\n}\n\nfunction getStyle<Y extends boolean = false>(\n style: CSSObject | CSSSlotObject | undefined,\n) {\n return function ({\n name: rootName,\n hasSlot = false,\n modifier,\n selectors = [],\n value,\n }: GetStyleOptions): Style<Y> | undefined {\n if (!style || isEmptyObject(style)) return\n\n if (hasSlot) {\n return Object.fromEntries(\n Object.entries(style as CSSSlotObject).map(([name, style]) => {\n if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return [name, getSelectorStyle(selectors, style ?? {})]\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return [name, style]\n }\n }),\n ) as Style<Y>\n } else if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return getSelectorStyle(selectors, style) as Style<Y>\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return style as Style<Y>\n }\n }\n}\n\nfunction getColorModeStyle<Y extends boolean = false>(\n value: ColorModeArray<string>,\n mergedStyle: MergedStyle,\n) {\n return function ({ selectors = [], ...rest }: GetStyleOptions) {\n const [lightValue, darkValue] = value\n\n const lightStyle = getModifierStyle<Y>(\n lightValue,\n mergedStyle,\n )({ ...rest, selectors })\n\n const darkStyle = getModifierStyle<Y>(\n darkValue,\n mergedStyle,\n )({ ...rest, selectors: [...selectors, conditions._dark] })\n\n return merge(lightStyle, darkStyle)\n }\n}\n\nfunction getConditionStyle<Y extends boolean = false>(\n value: ResponsiveWithConditionObject<string>,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions) {\n const { isResponsiveKey, queries = [], selectors = [] } = options\n const conditionalKeys = Object.keys(value).filter(\n (key) => !isResponsiveKey?.(key),\n )\n\n const breakpointObj = queries.reduce<Style<Y>>(\n (prev, { breakpoint, query }) => {\n if (!isUndefined(value[breakpoint])) {\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[breakpoint],\n mergedStyle,\n )({ ...options, selectors: [...selectors, query] }),\n )\n }\n\n return prev\n },\n {},\n )\n\n const additionalObj = conditionalKeys.reduce<Style<Y>>((prev, key) => {\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[key as keyof typeof value],\n mergedStyle,\n )({ ...options, selectors: [...selectors, getCondition(key)] }),\n )\n\n return prev\n }, {})\n\n return merge(breakpointObj, additionalObj)\n }\n}\n\nfunction getModifierStyle<Y extends boolean = false>(\n value: StyleValueWithCondition<string> | undefined,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions): Style<Y> | undefined {\n let style: Style<Y> | undefined = undefined\n\n if (!value) return style\n\n if (isArray(value)) {\n style = getColorModeStyle<Y>(value, mergedStyle)(options)\n } else if (isObject(value)) {\n style = getConditionStyle<Y>(value, mergedStyle)(options)\n } else {\n style = getStyle<Y>(mergedStyle[value])({ ...options, value })\n }\n\n return style\n }\n}\n\nfunction getPropStyle<Y extends boolean = false>(\n props: Dict,\n propVariants: CSSPropObject | CSSPropObject<CSSSlotObject>,\n style: Style<Y> | undefined = {},\n) {\n const variants = Object.entries(propVariants)\n\n return function (options: GetStyleOptions) {\n if (!variants.length) return style\n\n variants.forEach(([modifier, variants]) => {\n const value = props[modifier as keyof typeof props]\n\n if (value) {\n const propStyle = getModifierStyle<Y>(\n value,\n variants,\n )({ modifier, value, ...options })\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n } else {\n const boolean = Object.keys(variants).every((key) => isBooleanish(key))\n\n if (boolean) {\n const propStyle = getModifierStyle<Y>(\n \"false\",\n variants,\n )({ modifier, value: \"true\", ...options })\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n }\n }\n })\n\n return style\n }\n}\n\nfunction getCompoundStyle<Y extends boolean = false>(\n props: Dict,\n compounds: ComponentCompound<CSSSlotObject>[] | ComponentCompound[],\n style: Style<Y> | undefined = {},\n) {\n return function (options: GetStyleOptions) {\n if (!compounds.length) return style\n\n compounds.forEach(({ css, layer, ...rest }) => {\n const conditions = Object.entries(rest)\n\n if (!conditions.length) return\n\n const apply = conditions.every(([key, value]) =>\n isArray(value)\n ? value.includes(props[key])\n : isRegExp(value)\n ? value.test(props[key])\n : props[key] === value,\n )\n\n if (!apply) return\n\n style = merge(\n style,\n wrapStyle<Y>(layer ?? \"compounds\", css as Style<Y>)(options),\n )\n })\n\n return style\n }\n}\n\nexport function getSlotClassName<Y extends string>(\n className?: string,\n slot?: ComponentSlot<Y>,\n) {\n if (!className || !slot) return className\n\n if (isArray(slot)) {\n const [element, modifier] = slot.map((value) =>\n toKebabCase(value as string),\n )\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else if (isObject(slot)) {\n const slotArray = toArray(slot.slot)\n const [element, modifier] = slotArray.map((value) =>\n toKebabCase(value as string),\n )\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else {\n return bem(className, toKebabCase(slot as string))\n }\n}\n\nexport function mergeSlotCSS<Y extends string>(\n slot?: ComponentSlot<Y>,\n style?: CSSSlotObject<Y>,\n css?: CSSObject | CSSObject[],\n): CSSObject | CSSObject[] | undefined {\n if (!style || !slot) return css\n\n const temp: (CSSObject | undefined)[] = []\n\n if (isArray(slot)) {\n temp.push(...slot.map((slot) => style[slot]))\n } else if (isObject(slot)) {\n if (isArray(slot.slot)) {\n temp.push(...slot.slot.map((slot) => style[slot]))\n } else {\n temp.push(style[slot.slot])\n }\n } else {\n temp.push(style[slot])\n }\n\n if (css) temp.push(...toArray(css))\n\n const result = filterEmpty(temp)\n\n return result.length ? result : undefined\n}\n\nfunction omitThemeProps<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, omitKeys: string[] = [], transferProps?: D[]) {\n if (transferProps)\n omitKeys = omitKeys.filter((key) => !transferProps.includes(key as D))\n\n return omitObject(props, omitKeys) as unknown as WithoutThemeProps<Y, M, D>\n}\n\nfunction wrapStyle<Y extends boolean = false>(\n layer: LayerScheme,\n style?: Style<Y>,\n) {\n return function ({ hasSlot, wrap }: GetStyleOptions) {\n if (hasSlot) {\n if (!style) return undefined\n\n return Object.fromEntries(\n Object.entries(style).map(([slot, style]) => [\n slot,\n wrap?.(layer, style) ?? style,\n ]),\n )\n } else {\n return wrap?.(layer, style) ?? style\n }\n }\n}\n\nfunction getHasAtRuleStyle(css?: CSSObject | CSSObject[]) {\n return (getAtRule?: Layers[\"getAtRule\"]) => {\n let hasVariant = false\n let hasSize = false\n\n if (!css || !getAtRule) return { hasSize, hasVariant }\n\n const variantAtRule = getAtRule(\"variant\")\n const sizeAtRule = getAtRule(\"size\")\n\n css = toArray(css)\n\n css.forEach((css) => {\n const keys = Object.keys(css)\n\n if (keys.includes(variantAtRule)) hasVariant = true\n if (keys.includes(sizeAtRule)) hasSize = true\n })\n\n return { hasSize, hasVariant }\n }\n}\n\nfunction mergeDefaultProps<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n M extends Dict = Dict,\n>(defaultProps: Y[\"defaultProps\"], props: M) {\n return Object.entries(defaultProps ?? {}).reduce<Dict>(\n (prev, [key, value]) => {\n prev[key] ??= value\n\n return prev\n },\n props,\n ) as M\n}\n\ninterface UseStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n> {\n className?: string\n hasSlot?: H\n name?: string\n slot?: ComponentSlot<ComponentSlotName<M>>\n style?: M\n transferProps?: D[]\n}\n\nfunction useStyle<\n Y extends HTMLStyledProps & ThemeProps<{}> = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n>(\n props: Y,\n {\n name,\n className: defaultClassName,\n style: componentStyle,\n hasSlot,\n slot,\n transferProps,\n }: UseStyleOptions<Y, M, D, H> = {},\n): [Style<H>, WithoutThemeProps<Y, M, D>] {\n const system = useSystem()\n const { getAtRule, wrap } = system.layers\n const rootColorScheme = useColorSchemeContext()\n const options = { ...system.breakpoints, name, hasSlot, wrap }\n\n const propsRef = useRef<Dict>({})\n const mergedPropsRef = useRef<Dict>({})\n const styleRef = useRef<Style<H> | undefined>(undefined)\n\n const hasComponentStyle =\n componentStyle && !!Object.keys(componentStyle).length\n\n if (hasComponentStyle) {\n const {\n className: customClassName,\n base,\n compounds,\n props: propVariants,\n sizes,\n variants,\n defaultProps: { colorScheme: defaultColorScheme, ...defaultProps } = {},\n } = componentStyle\n\n const colorScheme =\n props.colorScheme ?? rootColorScheme ?? defaultColorScheme\n\n const className = cx(defaultClassName ?? customClassName, props.className)\n const mergedProps = {\n ...mergeDefaultProps(defaultProps, props),\n className,\n colorScheme,\n }\n const omitProps = Object.keys(propVariants ?? {})\n const { size, variant } = mergedProps\n\n if (variants) omitProps.push(\"variant\")\n if (sizes) omitProps.push(\"size\")\n\n const computedProps = omitThemeProps(\n mergedProps,\n omitProps,\n transferProps,\n ) as Y\n\n if (\n !isEqualProps(mergedPropsRef.current, mergedProps, [\"css\", \"children\"])\n ) {\n const { hasSize, hasVariant } = getHasAtRuleStyle(props.css)(getAtRule)\n\n let style: Style<H> = {}\n\n if (base) {\n const baseStyle = getStyle<H>(base)(options)\n\n style = merge(style, wrapStyle<H>(\"base\", baseStyle)(options))\n }\n\n if (sizes && !hasSize) {\n const sizeStyle = merge(\n sizes.base,\n getModifierStyle<H>(size, sizes)({ modifier: \"size\", ...options }),\n )\n\n style = merge(style, wrapStyle<H>(\"size\", sizeStyle)(options))\n }\n\n if (variants && !hasVariant) {\n const variantStyle = merge(\n variants.base,\n getModifierStyle<H>(\n variant,\n variants,\n )({ modifier: \"variant\", ...options }),\n )\n\n style = merge(style, wrapStyle<H>(\"variant\", variantStyle)(options))\n }\n\n if (propVariants)\n style = getPropStyle<H>(mergedProps, propVariants, style)(options)\n\n if (compounds)\n style = getCompoundStyle<H>(mergedProps, compounds, style)(options)\n\n styleRef.current = style\n\n if (hasSlot) {\n computedProps.css = mergeSlotCSS<ComponentSlotName<M>>(\n slot,\n style as CSSSlotObject,\n computedProps.css,\n )\n } else {\n computedProps.css = mergeCSS(style as CSSObject, computedProps.css)\n }\n } else {\n computedProps.css = propsRef.current.css\n }\n\n mergedPropsRef.current = mergedProps\n\n if (!isEqualProps(propsRef.current, computedProps))\n propsRef.current = computedProps\n } else {\n const className = cx(defaultClassName, props.className)\n\n if (className) props.className = className\n\n if (!isEqualProps(propsRef.current, props))\n propsRef.current = props as unknown as WithoutThemeProps<Y, M, D>\n }\n\n return [\n styleRef.current ?? {},\n propsRef.current as WithoutThemeProps<Y, M, D>,\n ]\n}\n\nexport interface UseComponentStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D>, \"hasSlot\" | \"slot\"> {}\n\nexport function useComponentStyle<\n Y extends Dict = Dict,\n M extends ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D>(props, options)\n}\n\nexport interface UseComponentSlotStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D, true>, \"hasSlot\"> {}\n\nexport function useComponentSlotStyle<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle = ComponentSlotStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentSlotStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D, true>(props, { ...options, hasSlot: true })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-component-style.cjs","names":["conditions","getCondition","useSystem","useColorSchemeContext","isEqualProps","mergeCSS"],"sources":["../../../../src/core/components/use-component-style.ts"],"sourcesContent":["\"use client\"\n\nimport type { Dict } from \"../../utils\"\nimport type {\n ColorModeArray,\n CSSModifierObject,\n CSSObject,\n CSSPropObject,\n CSSSlotObject,\n ResponsiveWithConditionObject,\n StyleValueWithCondition,\n} from \"../css\"\nimport type {\n Breakpoints,\n ComponentCompound,\n ComponentSlotStyle,\n ComponentStyle,\n Layers,\n LayerScheme,\n ThemeProps,\n WithoutThemeProps,\n} from \"../system\"\nimport type { ComponentSlot, ComponentSlotName } from \"./create-component\"\nimport type { HTMLStyledProps } from \"./index.types\"\nimport { useRef } from \"react\"\nimport {\n bem,\n cx,\n filterEmpty,\n isArray,\n isBooleanish,\n isEmptyObject,\n isObject,\n isRegExp,\n isUndefined,\n merge,\n omitObject,\n toArray,\n toKebabCase,\n} from \"../../utils\"\nimport { conditions, getCondition, mergeCSS } from \"../css\"\nimport { useColorSchemeContext, useSystem } from \"../system\"\nimport { isEqualProps } from \"./props\"\n\ntype Style<Y extends boolean = false> = Y extends false\n ? CSSObject\n : CSSSlotObject\n\ntype MergedStyle = CSSModifierObject | CSSModifierObject<CSSSlotObject>\n\ninterface GetStyleOptions\n extends Partial<Breakpoints>, Pick<Partial<Layers>, \"wrap\"> {\n hasSlot?: boolean\n modifier?: string\n name?: string\n selectors?: (string | undefined)[]\n value?: string\n}\n\nfunction getSelectorStyle<Y extends Dict = Dict>(\n selectors: (string | undefined)[],\n style: Y,\n) {\n return selectors.reduceRight<Dict>(\n (prev, key) => (key ? { [key]: prev } : prev),\n style,\n ) as Y\n}\n\nfunction getStyle<Y extends boolean = false>(\n style: CSSObject | CSSSlotObject | undefined,\n) {\n return function ({\n name: rootName,\n hasSlot = false,\n modifier,\n selectors = [],\n value,\n }: GetStyleOptions): Style<Y> | undefined {\n if (!style || isEmptyObject(style)) return\n\n if (hasSlot) {\n return Object.fromEntries(\n Object.entries(style as CSSSlotObject).map(([name, style]) => {\n if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return [name, getSelectorStyle(selectors, style ?? {})]\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${name}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return [name, style]\n }\n }),\n ) as Style<Y>\n } else if (selectors.length) {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return getSelectorStyle(selectors, style) as Style<Y>\n } else {\n if (value && modifier)\n style = {\n [`--${rootName}-${modifier}`]: `\"${value}\"`,\n ...style,\n } as CSSObject\n\n return style as Style<Y>\n }\n }\n}\n\nfunction getColorModeStyle<Y extends boolean = false>(\n value: ColorModeArray<string>,\n mergedStyle: MergedStyle,\n) {\n return function ({ selectors = [], ...rest }: GetStyleOptions) {\n const [lightValue, darkValue] = value\n\n const lightStyle = getModifierStyle<Y>(\n lightValue,\n mergedStyle,\n )({ ...rest, selectors })\n\n const darkStyle = getModifierStyle<Y>(\n darkValue,\n mergedStyle,\n )({ ...rest, selectors: [...selectors, conditions._dark] })\n\n return merge(lightStyle, darkStyle)\n }\n}\n\nfunction getConditionStyle<Y extends boolean = false>(\n value: ResponsiveWithConditionObject<string>,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions) {\n const { isResponsiveKey, queries = [], selectors = [] } = options\n const conditionalKeys = Object.keys(value).filter(\n (key) => !isResponsiveKey?.(key),\n )\n\n const breakpointObj = queries.reduce<Style<Y>>(\n (prev, { breakpoint, query }) => {\n if (!isUndefined(value[breakpoint]))\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[breakpoint],\n mergedStyle,\n )({ ...options, selectors: [...selectors, query] }),\n )\n\n return prev\n },\n {},\n )\n\n const additionalObj = conditionalKeys.reduce<Style<Y>>((prev, key) => {\n prev = merge(\n prev,\n getModifierStyle<Y>(\n value[key as keyof typeof value],\n mergedStyle,\n )({ ...options, selectors: [...selectors, getCondition(key)] }),\n )\n\n return prev\n }, {})\n\n return merge(breakpointObj, additionalObj)\n }\n}\n\nfunction getModifierStyle<Y extends boolean = false>(\n value: StyleValueWithCondition<string> | undefined,\n mergedStyle: MergedStyle,\n) {\n return function (options: GetStyleOptions): Style<Y> | undefined {\n let style: Style<Y> | undefined = undefined\n\n if (!value) return style\n\n if (isArray(value))\n style = getColorModeStyle<Y>(value, mergedStyle)(options)\n else if (isObject(value))\n style = getConditionStyle<Y>(value, mergedStyle)(options)\n else style = getStyle<Y>(mergedStyle[value])({ ...options, value })\n\n return style\n }\n}\n\nfunction getPropStyle<Y extends boolean = false>(\n props: Dict,\n propVariants: CSSPropObject | CSSPropObject<CSSSlotObject>,\n style: Style<Y> | undefined = {},\n) {\n const variants = Object.entries(propVariants)\n\n return function (options: GetStyleOptions) {\n if (!variants.length) return style\n\n variants.forEach(([modifier, variants]) => {\n const value = props[modifier as keyof typeof props]\n\n if (value) {\n const propStyle = getModifierStyle<Y>(\n value,\n variants,\n )({ modifier, value, ...options })\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n } else {\n const boolean = Object.keys(variants).every((key) => isBooleanish(key))\n\n if (boolean) {\n const propStyle = getModifierStyle<Y>(\n \"false\",\n variants,\n )({ modifier, value: \"true\", ...options })\n\n if (propStyle)\n style = merge(style, wrapStyle<Y>(\"props\", propStyle)(options))\n }\n }\n })\n\n return style\n }\n}\n\nfunction getCompoundStyle<Y extends boolean = false>(\n props: Dict,\n compounds: ComponentCompound<CSSSlotObject>[] | ComponentCompound[],\n style: Style<Y> | undefined = {},\n) {\n return function (options: GetStyleOptions) {\n if (!compounds.length) return style\n\n compounds.forEach(({ css, layer, ...rest }) => {\n const conditions = Object.entries(rest)\n\n if (!conditions.length) return\n\n const apply = conditions.every(([key, value]) =>\n isArray(value)\n ? value.includes(props[key])\n : isRegExp(value)\n ? value.test(props[key])\n : props[key] === value,\n )\n\n if (!apply) return\n\n style = merge(\n style,\n wrapStyle<Y>(layer ?? \"compounds\", css as Style<Y>)(options),\n )\n })\n\n return style\n }\n}\n\nexport function getSlotClassName<Y extends string>(\n className?: string,\n slot?: ComponentSlot<Y>,\n) {\n if (!className || !slot) return className\n\n if (isArray(slot)) {\n const [element, modifier] = slot.map((value) =>\n toKebabCase(value as string),\n )\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else if (isObject(slot)) {\n const slotArray = toArray(slot.slot)\n const [element, modifier] = slotArray.map((value) =>\n toKebabCase(value as string),\n )\n\n return cx(bem(className, element), bem(className, element, modifier))\n } else {\n return bem(className, toKebabCase(slot as string))\n }\n}\n\nexport function mergeSlotCSS<Y extends string>(\n slot?: ComponentSlot<Y>,\n style?: CSSSlotObject<Y>,\n css?: CSSObject | CSSObject[],\n): CSSObject | CSSObject[] | undefined {\n if (!style || !slot) return css\n\n const temp: (CSSObject | undefined)[] = []\n\n if (isArray(slot)) temp.push(...slot.map((slot) => style[slot]))\n else if (isObject(slot))\n if (isArray(slot.slot)) temp.push(...slot.slot.map((slot) => style[slot]))\n else temp.push(style[slot.slot])\n else temp.push(style[slot])\n\n if (css) temp.push(...toArray(css))\n\n const result = filterEmpty(temp)\n\n return result.length ? result : undefined\n}\n\nfunction omitThemeProps<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, omitKeys: string[] = [], transferProps?: D[]) {\n if (transferProps)\n omitKeys = omitKeys.filter((key) => !transferProps.includes(key as D))\n\n return omitObject(props, omitKeys) as unknown as WithoutThemeProps<Y, M, D>\n}\n\nfunction wrapStyle<Y extends boolean = false>(\n layer: LayerScheme,\n style?: Style<Y>,\n) {\n return function ({ hasSlot, wrap }: GetStyleOptions) {\n if (hasSlot) {\n if (!style) return undefined\n\n return Object.fromEntries(\n Object.entries(style).map(([slot, style]) => [\n slot,\n wrap?.(layer, style) ?? style,\n ]),\n )\n } else {\n return wrap?.(layer, style) ?? style\n }\n }\n}\n\nfunction getHasAtRuleStyle(css?: CSSObject | CSSObject[]) {\n return (getAtRule?: Layers[\"getAtRule\"]) => {\n let hasVariant = false\n let hasSize = false\n\n if (!css || !getAtRule) return { hasSize, hasVariant }\n\n const variantAtRule = getAtRule(\"variant\")\n const sizeAtRule = getAtRule(\"size\")\n\n css = toArray(css)\n\n css.forEach((css) => {\n const keys = Object.keys(css)\n\n if (keys.includes(variantAtRule)) hasVariant = true\n if (keys.includes(sizeAtRule)) hasSize = true\n })\n\n return { hasSize, hasVariant }\n }\n}\n\nfunction mergeDefaultProps<\n Y extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n M extends Dict = Dict,\n>(defaultProps: Y[\"defaultProps\"], props: M) {\n return Object.entries(defaultProps ?? {}).reduce<Dict>(\n (prev, [key, value]) => {\n prev[key] ??= value\n\n return prev\n },\n props,\n ) as M\n}\n\ninterface UseStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n> {\n className?: string\n hasSlot?: H\n name?: string\n slot?: ComponentSlot<ComponentSlotName<M>>\n style?: M\n transferProps?: D[]\n}\n\nfunction useStyle<\n Y extends HTMLStyledProps & ThemeProps<{}> = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n H extends boolean = false,\n>(\n props: Y,\n {\n name,\n className: defaultClassName,\n style: componentStyle,\n hasSlot,\n slot,\n transferProps,\n }: UseStyleOptions<Y, M, D, H> = {},\n): [Style<H>, WithoutThemeProps<Y, M, D>] {\n const system = useSystem()\n const { getAtRule, wrap } = system.layers\n const rootColorScheme = useColorSchemeContext()\n const options = { ...system.breakpoints, name, hasSlot, wrap }\n\n const propsRef = useRef<Dict>({})\n const mergedPropsRef = useRef<Dict>({})\n const styleRef = useRef<Style<H> | undefined>(undefined)\n\n const hasComponentStyle =\n componentStyle && !!Object.keys(componentStyle).length\n\n if (hasComponentStyle) {\n const {\n className: customClassName,\n base,\n compounds,\n props: propVariants,\n sizes,\n variants,\n defaultProps: { colorScheme: defaultColorScheme, ...defaultProps } = {},\n } = componentStyle\n\n const colorScheme =\n props.colorScheme ?? rootColorScheme ?? defaultColorScheme\n\n const className = cx(defaultClassName ?? customClassName, props.className)\n const mergedProps = {\n ...mergeDefaultProps(defaultProps, props),\n className,\n colorScheme,\n }\n const omitProps = Object.keys(propVariants ?? {})\n const { size, variant } = mergedProps\n\n if (variants) omitProps.push(\"variant\")\n if (sizes) omitProps.push(\"size\")\n\n const computedProps = omitThemeProps(\n mergedProps,\n omitProps,\n transferProps,\n ) as Y\n\n if (\n !isEqualProps(mergedPropsRef.current, mergedProps, [\"css\", \"children\"])\n ) {\n const { hasSize, hasVariant } = getHasAtRuleStyle(props.css)(getAtRule)\n\n let style: Style<H> = {}\n\n if (base) {\n const baseStyle = getStyle<H>(base)(options)\n\n style = merge(style, wrapStyle<H>(\"base\", baseStyle)(options))\n }\n\n if (sizes && !hasSize) {\n const sizeStyle = merge(\n sizes.base,\n getModifierStyle<H>(size, sizes)({ modifier: \"size\", ...options }),\n )\n\n style = merge(style, wrapStyle<H>(\"size\", sizeStyle)(options))\n }\n\n if (variants && !hasVariant) {\n const variantStyle = merge(\n variants.base,\n getModifierStyle<H>(\n variant,\n variants,\n )({ modifier: \"variant\", ...options }),\n )\n\n style = merge(style, wrapStyle<H>(\"variant\", variantStyle)(options))\n }\n\n if (propVariants)\n style = getPropStyle<H>(mergedProps, propVariants, style)(options)\n\n if (compounds)\n style = getCompoundStyle<H>(mergedProps, compounds, style)(options)\n\n styleRef.current = style\n\n if (hasSlot)\n computedProps.css = mergeSlotCSS<ComponentSlotName<M>>(\n slot,\n style as CSSSlotObject,\n computedProps.css,\n )\n else computedProps.css = mergeCSS(style as CSSObject, computedProps.css)\n } else {\n computedProps.css = propsRef.current.css\n }\n\n mergedPropsRef.current = mergedProps\n\n if (!isEqualProps(propsRef.current, computedProps))\n propsRef.current = computedProps\n } else {\n const className = cx(defaultClassName, props.className)\n\n if (className) props.className = className\n\n if (!isEqualProps(propsRef.current, props))\n propsRef.current = props as unknown as WithoutThemeProps<Y, M, D>\n }\n\n return [\n styleRef.current ?? {},\n propsRef.current as WithoutThemeProps<Y, M, D>,\n ]\n}\n\nexport interface UseComponentStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D>, \"hasSlot\" | \"slot\"> {}\n\nexport function useComponentStyle<\n Y extends Dict = Dict,\n M extends ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D>(props, options)\n}\n\nexport interface UseComponentSlotStyleOptions<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle | ComponentStyle = ComponentStyle,\n D extends keyof Y = keyof Y,\n> extends Omit<UseStyleOptions<Y, M, D, true>, \"hasSlot\"> {}\n\nexport function useComponentSlotStyle<\n Y extends Dict = Dict,\n M extends ComponentSlotStyle = ComponentSlotStyle,\n D extends keyof Y = keyof Y,\n>(props: Y, options: UseComponentSlotStyleOptions<Y, M, D> = {}) {\n return useStyle<Y, M, D, true>(props, { ...options, hasSlot: true })\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"animation.cjs","names":["StyleSheet","globalValues","tokenToVar"],"sources":["../../../../src/core/css/animation.ts"],"sourcesContent":["\"use client\"\n\nimport type { Dict } from \"../../utils\"\nimport type { TransformOptions } from \"./utils\"\nimport { keyframes as emotionKeyframes } from \"@emotion/react\"\nimport { StyleSheet } from \"@emotion/sheet\"\nimport { createdDom, isObject } from \"../../utils\"\nimport { globalValues, tokenToVar } from \"./utils\"\n\nconst styleSheet = createdDom()\n ? new StyleSheet({ key: \"css\", container: document.head })\n : undefined\n\nfunction transformAnimationValue(value: Dict) {\n return Object.entries(value).reduce<Dict>((prev, [key, value]) => {\n if (key === \"keyframes\") {\n prev._keyframes = value\n } else if (key === \"duration\") {\n prev.animationDuration = value\n } else if (key === \"timingFunction\") {\n prev.animationTimingFunction = value\n } else {\n prev[key] = value\n }\n\n return prev\n }, {})\n}\n\nexport function injectKeyframes(value: any) {\n const { name, styles } = emotionKeyframes(value)\n\n styleSheet?.insert(styles)\n\n return name\n}\n\nexport function animation(\n value: any,\n { css, system, theme }: TransformOptions,\n) {\n if (value == null || globalValues.has(value)) return value\n\n if (isObject(value)) {\n const {\n animationDuration = \"0s\",\n animationName,\n animationTimingFunction = \"ease\",\n delay = \"0s\",\n direction = \"normal\",\n fillMode = \"none\",\n iterationCount = \"1\",\n playState = \"running\",\n } = css?.(system, theme)(transformAnimationValue(value)) ?? {}\n\n return `${animationName} ${animationDuration} ${animationTimingFunction} ${delay} ${iterationCount} ${direction} ${fillMode} ${playState}`\n } else if (value.includes(\",\")) {\n value = value\n .split(\",\")\n .map((value: string) => {\n value = value.trim()\n\n value = tokenToVar(system)(\"animations\", value)\n\n return value\n })\n .join(\",\")\n\n return value\n } else {\n value = tokenToVar(system)(\"animations\", value)\n\n return value\n }\n}\n\nexport function keyframes(\n value: any,\n { css, system, theme }: TransformOptions,\n) {\n if (value == null) return value\n\n if (isObject(value)) {\n value = css?.(system, theme)(value)\n\n const name = injectKeyframes(value)\n\n return name\n } else {\n return value\n }\n}\n"],"mappings":";;;;;;AASA,MAAM,cAAA,GAAA,oBAAA,cAAA,WAAA,CAAwB,IAC1B,IAAIA,eAAAA,WAAW;CAAE,KAAK;CAAO,WAAW,SAAS;AAAK,CAAC,IACvD,KAAA;AAEJ,SAAS,wBAAwB,OAAa;CAC5C,OAAO,OAAO,QAAQ,KAAK,CAAC,CAAC,QAAc,MAAM,CAAC,KAAK,WAAW;EAChE,IAAI,QAAQ,aACV,KAAK,aAAa;OACb,IAAI,QAAQ,YACjB,KAAK,oBAAoB;OACpB,IAAI,QAAQ,kBACjB,KAAK,0BAA0B;OAE/B,KAAK,OAAO;EAGd,OAAO;CACT,GAAG,CAAC,CAAC;AACP;AAEA,SAAgB,gBAAgB,OAAY;CAC1C,MAAM,EAAE,MAAM,YAAA,GAAA,eAAA,UAAA,CAA4B,KAAK;CAE/C,YAAY,OAAO,MAAM;CAEzB,OAAO;AACT;AAEA,SAAgB,UACd,OACA,EAAE,KAAK,QAAQ,SACf;CACA,IAAI,SAAS,QAAQC,cAAAA,aAAa,IAAI,KAAK,GAAG,OAAO;CAErD,KAAA,GAAA,oBAAA,cAAA,SAAA,CAAa,KAAK,GAAG;EACnB,MAAM,EACJ,oBAAoB,MACpB,eACA,0BAA0B,QAC1B,QAAQ,MACR,YAAY,UACZ,WAAW,QACX,iBAAiB,KACjB,YAAY,cACV,MAAM,QAAQ,KAAK,CAAC,CAAC,wBAAwB,KAAK,CAAC,KAAK,CAAC;EAE7D,OAAO,GAAG,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,MAAM,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG;CACjI,OAAO,IAAI,MAAM,SAAS,GAAG,GAAG;EAC9B,QAAQ,MACL,MAAM,GAAG,CAAC,CACV,KAAK,UAAkB;GACtB,QAAQ,MAAM,KAAK;GAEnB,QAAQC,cAAAA,WAAW,MAAM,CAAC,CAAC,cAAc,KAAK;GAE9C,OAAO;EACT,CAAC,CAAC,CACD,KAAK,GAAG;EAEX,OAAO;CACT,OAAO;EACL,QAAQA,cAAAA,WAAW,MAAM,CAAC,CAAC,cAAc,KAAK;EAE9C,OAAO;CACT;AACF;AAEA,SAAgB,UACd,OACA,EAAE,KAAK,QAAQ,SACf;CACA,IAAI,SAAS,MAAM,OAAO;CAE1B,KAAA,GAAA,oBAAA,cAAA,SAAA,CAAa,KAAK,GAAG;EACnB,QAAQ,MAAM,QAAQ,KAAK,CAAC,CAAC,KAAK;EAIlC,OAFa,gBAAgB,KAEnB;CACZ,OACE,OAAO;AAEX"}
1
+ {"version":3,"file":"animation.cjs","names":["StyleSheet","globalValues","tokenToVar"],"sources":["../../../../src/core/css/animation.ts"],"sourcesContent":["\"use client\"\n\nimport type { Dict } from \"../../utils\"\nimport type { TransformOptions } from \"./utils\"\nimport { keyframes as emotionKeyframes } from \"@emotion/react\"\nimport { StyleSheet } from \"@emotion/sheet\"\nimport { createdDom, isObject } from \"../../utils\"\nimport { globalValues, tokenToVar } from \"./utils\"\n\nconst styleSheet = createdDom()\n ? new StyleSheet({ key: \"css\", container: document.head })\n : undefined\n\nfunction transformAnimationValue(value: Dict) {\n return Object.entries(value).reduce<Dict>((prev, [key, value]) => {\n if (key === \"keyframes\") prev._keyframes = value\n else if (key === \"duration\") prev.animationDuration = value\n else if (key === \"timingFunction\") prev.animationTimingFunction = value\n else prev[key] = value\n\n return prev\n }, {})\n}\n\nexport function injectKeyframes(value: any) {\n const { name, styles } = emotionKeyframes(value)\n\n styleSheet?.insert(styles)\n\n return name\n}\n\nexport function animation(\n value: any,\n { css, system, theme }: TransformOptions,\n) {\n if (value == null || globalValues.has(value)) return value\n\n if (isObject(value)) {\n const {\n animationDuration = \"0s\",\n animationName,\n animationTimingFunction = \"ease\",\n delay = \"0s\",\n direction = \"normal\",\n fillMode = \"none\",\n iterationCount = \"1\",\n playState = \"running\",\n } = css?.(system, theme)(transformAnimationValue(value)) ?? {}\n\n return `${animationName} ${animationDuration} ${animationTimingFunction} ${delay} ${iterationCount} ${direction} ${fillMode} ${playState}`\n } else if (value.includes(\",\")) {\n value = value\n .split(\",\")\n .map((value: string) => {\n value = value.trim()\n\n value = tokenToVar(system)(\"animations\", value)\n\n return value\n })\n .join(\",\")\n\n return value\n } else {\n value = tokenToVar(system)(\"animations\", value)\n\n return value\n }\n}\n\nexport function keyframes(\n value: any,\n { css, system, theme }: TransformOptions,\n) {\n if (value == null) return value\n\n if (isObject(value)) {\n value = css?.(system, theme)(value)\n\n const name = injectKeyframes(value)\n\n return name\n } else {\n return value\n }\n}\n"],"mappings":";;;;;;AASA,MAAM,cAAA,GAAA,oBAAA,cAAA,WAAA,CAAwB,IAC1B,IAAIA,eAAAA,WAAW;CAAE,KAAK;CAAO,WAAW,SAAS;AAAK,CAAC,IACvD,KAAA;AAEJ,SAAS,wBAAwB,OAAa;CAC5C,OAAO,OAAO,QAAQ,KAAK,CAAC,CAAC,QAAc,MAAM,CAAC,KAAK,WAAW;EAChE,IAAI,QAAQ,aAAa,KAAK,aAAa;OACtC,IAAI,QAAQ,YAAY,KAAK,oBAAoB;OACjD,IAAI,QAAQ,kBAAkB,KAAK,0BAA0B;OAC7D,KAAK,OAAO;EAEjB,OAAO;CACT,GAAG,CAAC,CAAC;AACP;AAEA,SAAgB,gBAAgB,OAAY;CAC1C,MAAM,EAAE,MAAM,YAAA,GAAA,eAAA,UAAA,CAA4B,KAAK;CAE/C,YAAY,OAAO,MAAM;CAEzB,OAAO;AACT;AAEA,SAAgB,UACd,OACA,EAAE,KAAK,QAAQ,SACf;CACA,IAAI,SAAS,QAAQC,cAAAA,aAAa,IAAI,KAAK,GAAG,OAAO;CAErD,KAAA,GAAA,oBAAA,cAAA,SAAA,CAAa,KAAK,GAAG;EACnB,MAAM,EACJ,oBAAoB,MACpB,eACA,0BAA0B,QAC1B,QAAQ,MACR,YAAY,UACZ,WAAW,QACX,iBAAiB,KACjB,YAAY,cACV,MAAM,QAAQ,KAAK,CAAC,CAAC,wBAAwB,KAAK,CAAC,KAAK,CAAC;EAE7D,OAAO,GAAG,cAAc,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,MAAM,GAAG,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG;CACjI,OAAO,IAAI,MAAM,SAAS,GAAG,GAAG;EAC9B,QAAQ,MACL,MAAM,GAAG,CAAC,CACV,KAAK,UAAkB;GACtB,QAAQ,MAAM,KAAK;GAEnB,QAAQC,cAAAA,WAAW,MAAM,CAAC,CAAC,cAAc,KAAK;GAE9C,OAAO;EACT,CAAC,CAAC,CACD,KAAK,GAAG;EAEX,OAAO;CACT,OAAO;EACL,QAAQA,cAAAA,WAAW,MAAM,CAAC,CAAC,cAAc,KAAK;EAE9C,OAAO;CACT;AACF;AAEA,SAAgB,UACd,OACA,EAAE,KAAK,QAAQ,SACf;CACA,IAAI,SAAS,MAAM,OAAO;CAE1B,KAAA,GAAA,oBAAA,cAAA,SAAA,CAAa,KAAK,GAAG;EACnB,QAAQ,MAAM,QAAQ,KAAK,CAAC,CAAC,KAAK;EAIlC,OAFa,gBAAgB,KAEnB;CACZ,OACE,OAAO;AAEX"}
@@ -1 +1 @@
1
- {"version":3,"file":"at-rule.cjs","names":["tokenToVar"],"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\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,oBAAA,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,oBAAA,cAAA,QAAA,CAAgB,KAAK,CAAC,CACnB,KAAK,UAAU,SAAS,MAAM,EAAE,CAAC,CACjC,KAAK,OAAO;OACV;GACL,MAAM,gBAAA,GAAA,oBAAA,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,QAAQA,cAAAA,WAAW,MAAM,CAAC,CAAC,SAAS,KAAK;IAEzC,OAAO,KAAA,GAAA,oBAAA,cAAA,YAAA,CAAgB,GAAG,EAAE,IAAI,MAAM;GACxC,CAAC,CAAC,CACD,KAAK,OAAO;EACjB;EAGF,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
+ {"version":3,"file":"at-rule.cjs","names":["tokenToVar"],"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,oBAAA,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,oBAAA,cAAA,QAAA,CAAgB,KAAK,CAAC,CACnB,KAAK,UAAU,SAAS,MAAM,EAAE,CAAC,CACjC,KAAK,OAAO;OACV;GACL,MAAM,gBAAA,GAAA,oBAAA,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,QAAQA,cAAAA,WAAW,MAAM,CAAC,CAAC,SAAS,KAAK;IAEzC,OAAO,KAAA,GAAA,oBAAA,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.cjs","names":["isCSSFunction","isCSSToken","globalValues","getCSSFunction","splitValues"],"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 {\n return value\n }\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,IAFgBA,cAAAA,cAAc,KAEpB,GACR,OAAO,aAAa,KAAK,CAAC,CAAC,OAAO;GAAE;GAAQ,GAAG;EAAK,CAAC;OAChD;GACL,KAAA,GAAA,oBAAA,cAAA,UAAA,CAAc,KAAK,GAAG,OAAO;GAE7B,MAAM,gBAAgB,GAAG,MAAM,GAAG;GAElC,IAAIC,cAAAA,WAAW,MAAM,CAAC,CAAC,aAAa,GAClC,OAAO,OAAO,OAAO,cAAc,CAAE;QAErC,OAAO;EAEX;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,QAAQC,cAAAA,aAAa,IAAI,KAAK,GAAG,OAAO;EAIrD,IAAI,CAFYF,cAAAA,cAAc,KAEnB,GAAG,OAAO;EAErB,IAAI,EAAE,MAAM,WAAWG,cAAAA,eAAe,KAAK;EAE3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,OAAO;EAE7B,QAAQ,MAAR;GACE,KAAK,QAWH,OAAO,QAVgBC,cAAAA,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,eAAeA,cAAAA,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,OAAOA,cAAAA,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,OAAOA,cAAAA,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,SAASA,cAAAA,YAAY,MAAM;IAEhC,QAAQ,SAAS,KAAK,CAAC,CAAC,OAAO,OAAO;IAEtC,OAAO,eAAe,MAAM;GAC9B;GAEA,SACE,OAAO;EACX;CACF;AACF"}
1
+ {"version":3,"file":"calc.cjs","names":["isCSSFunction","isCSSToken","globalValues","getCSSFunction","splitValues"],"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,IAFgBA,cAAAA,cAAc,KAEpB,GACR,OAAO,aAAa,KAAK,CAAC,CAAC,OAAO;GAAE;GAAQ,GAAG;EAAK,CAAC;OAChD;GACL,KAAA,GAAA,oBAAA,cAAA,UAAA,CAAc,KAAK,GAAG,OAAO;GAE7B,MAAM,gBAAgB,GAAG,MAAM,GAAG;GAElC,IAAIC,cAAAA,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,QAAQC,cAAAA,aAAa,IAAI,KAAK,GAAG,OAAO;EAIrD,IAAI,CAFYF,cAAAA,cAAc,KAEnB,GAAG,OAAO;EAErB,IAAI,EAAE,MAAM,WAAWG,cAAAA,eAAe,KAAK;EAE3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,OAAO;EAE7B,QAAQ,MAAR;GACE,KAAK,QAWH,OAAO,QAVgBC,cAAAA,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,eAAeA,cAAAA,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,OAAOA,cAAAA,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,OAAOA,cAAAA,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,SAASA,cAAAA,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.cjs","names":["isColorScheme","getColorSchemeVar","tokenToVar","globalValues","getCSSFunction","splitValues"],"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)) {\n color = getColorSchemeVar(system)(color)\n } else {\n color = tokenToVar(system)(\"colors\", color, fallbackColor)\n }\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) {\n method = method in methods ? methods[method] : method\n } else {\n method = DEFAULT_METHOD\n }\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
+ {"version":3,"file":"color-mix.cjs","names":["isColorScheme","getColorSchemeVar","tokenToVar","globalValues","getCSSFunction","splitValues"],"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.cjs","names":["generateStyle","generateCalc","generateAtRule","isCSSVar","generateFilter","generateFocusRing","generateFunction","analyzeCSSValue","generateToken","generateTransition"],"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)) {\n return { content: \"''\", ...value }\n } else {\n return value\n }\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 },\n} satisfies { [key: string]: Transform }\n\nexport type Transforms = keyof typeof transforms\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkCA,MAAa,aAAa;CACxB,OAAOA,cAAAA;CACP,aAAA,qBAAA;CACA,WAAA,kBAAA;CACA,SAAS,OAAO,EAAE,WAAW;EAC3B,IAAI,UAAU,QAAQ;GACpB,SAAS,CAAC;GACV,KAAK,UAAU;GAEf,OAAO;EACT,OACE,OAAO;CAEX;CACA,MAAMC,aAAAA;CACN,UAAA,kBAAA;CACA,WAAWC,gBAAAA,eAAe,WAAW;CACrC,UAAU,UAAU;EAClB,KAAA,GAAA,oBAAA,cAAA,SAAA,CAAa,KAAK,GAChB,OAAO;GAAE,SAAS;GAAM,GAAG;EAAM;OAEjC,OAAO;CAEX;CACA,MAAM,UAAU;EACd,IAAIC,cAAAA,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,oBAAA,cAAA,SAAA,CAEO,KAAK,IAAI,GAAG,MAAM,OAAO;CACzD;CACA,SAAA,gBAAA;CACA,QAAQC,eAAAA;CACR,WAAWC,mBAAAA;CACX,WAAW,UAAU;EACnB,KAAA,GAAA,oBAAA,cAAA,SAAA,CAAa,KAAK,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,IAAI;EAE1D,OAAO;CACT;CACA,UAAUC,iBAAAA;CACV,UAAA,iBAAA;CACA,MAAA,aAAA;CACA,WAAA,kBAAA;CACA,OAAOJ,gBAAAA,eAAe,OAAO;CAC7B,KAAK,UAAU;EACb,IAAI,SAAS,MAAM,OAAO;EAE1B,MAAM,EAAE,aAAaK,cAAAA,gBAAgB,KAAK;EAE1C,OAAO,aAAA,GAAA,oBAAA,cAAA,SAAA,CAAqB,KAAK,IAAI,GAAG,MAAM,MAAM;CACtD;CACA,UAAUL,gBAAAA,eAAe,UAAU;CACnC,OAAOM,cAAAA;CACP,WAAA,kBAAA;CACA,YAAYC,mBAAAA;CACZ,YAAY,UAAmB;EAC7B,IAAI,OACF,OAAO;GACL,UAAU;GACV,cAAc;GACd,YAAY;EACd;CAEJ;AACF"}
1
+ {"version":3,"file":"config.cjs","names":["generateStyle","generateCalc","generateAtRule","isCSSVar","generateFilter","generateFocusRing","generateFunction","analyzeCSSValue","generateToken","generateTransition"],"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,OAAOA,cAAAA;CACP,aAAA,qBAAA;CACA,WAAA,kBAAA;CACA,SAAS,OAAO,EAAE,WAAW;EAC3B,IAAI,UAAU,QAAQ;GACpB,SAAS,CAAC;GACV,KAAK,UAAU;GAEf,OAAO;EACT,OACE,OAAO;CAEX;CACA,MAAMC,aAAAA;CACN,UAAA,kBAAA;CACA,WAAWC,gBAAAA,eAAe,WAAW;CACrC,UAAU,UAAU;EAClB,KAAA,GAAA,oBAAA,cAAA,SAAA,CAAa,KAAK,GAAG,OAAO;GAAE,SAAS;GAAM,GAAG;EAAM;OACjD,OAAO;CACd;CACA,MAAM,UAAU;EACd,IAAIC,cAAAA,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,oBAAA,cAAA,SAAA,CAEO,KAAK,IAAI,GAAG,MAAM,OAAO;CACzD;CACA,SAAA,gBAAA;CACA,QAAQC,eAAAA;CACR,WAAWC,mBAAAA;CACX,WAAW,UAAU;EACnB,KAAA,GAAA,oBAAA,cAAA,SAAA,CAAa,KAAK,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,IAAI;EAE1D,OAAO;CACT;CACA,UAAUC,iBAAAA;CACV,UAAA,iBAAA;CACA,MAAA,aAAA;CACA,WAAA,kBAAA;CACA,OAAOJ,gBAAAA,eAAe,OAAO;CAC7B,KAAK,UAAU;EACb,IAAI,SAAS,MAAM,OAAO;EAE1B,MAAM,EAAE,aAAaK,cAAAA,gBAAgB,KAAK;EAE1C,OAAO,aAAA,GAAA,oBAAA,cAAA,SAAA,CAAqB,KAAK,IAAI,GAAG,MAAM,MAAM;CACtD;CACA,UAAUL,gBAAAA,eAAe,UAAU;CACnC,OAAOM,cAAAA;CACP,WAAA,kBAAA;CACA,YAAYC,mBAAAA;CACZ,YAAY,UAAmB;EAC7B,IAAI,OACF,OAAO;GACL,UAAU;GACV,cAAc;GACd,YAAY;EACd;CACJ;AACF"}