@accelint/design-system 1.1.5 → 1.1.7

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 (56) hide show
  1. package/dist/components/button/button.css.d.ts +1 -0
  2. package/dist/components/button/index.d.ts +9 -40
  3. package/dist/components/button/index.js +23 -17
  4. package/dist/components/button/index.js.map +1 -1
  5. package/dist/components/button/types.d.ts +3 -2
  6. package/dist/components/collection/index.d.ts +2 -2
  7. package/dist/components/collection/index.js.map +1 -1
  8. package/dist/components/date-input/index.js +4 -1
  9. package/dist/components/date-input/index.js.map +1 -1
  10. package/dist/components/dialog/dialog.css.d.ts +1 -0
  11. package/dist/components/dialog/index.d.ts +1 -0
  12. package/dist/components/dialog/types.d.ts +1 -0
  13. package/dist/components/drawer/drawer.css.d.ts +1 -1
  14. package/dist/components/drawer/index.d.ts +1 -1
  15. package/dist/components/drawer/types.d.ts +1 -1
  16. package/dist/components/index.d.ts +2 -2
  17. package/dist/components/menu/index.d.ts +2 -2
  18. package/dist/components/menu/index.js +1 -1
  19. package/dist/components/menu/index.js.map +1 -1
  20. package/dist/components/merge-provider/index.js +15 -7
  21. package/dist/components/merge-provider/index.js.map +1 -1
  22. package/dist/components/number-field/index.d.ts +1 -1
  23. package/dist/components/number-field/number-field.css.d.ts +1 -1
  24. package/dist/components/number-field/types.d.ts +1 -1
  25. package/dist/components/options/index.js +1 -1
  26. package/dist/components/options/index.js.map +1 -1
  27. package/dist/components/picker/index.js.map +1 -1
  28. package/dist/components/text-field/index.d.ts +3 -128
  29. package/dist/components/text-field/index.js +3 -3
  30. package/dist/components/text-field/index.js.map +1 -1
  31. package/dist/components/tree/index.js +5 -2
  32. package/dist/components/tree/index.js.map +1 -1
  33. package/dist/hooks/index.d.ts +11 -11
  34. package/dist/hooks/use-collection-render/index.d.ts +1 -1
  35. package/dist/hooks/use-collection-render/index.js +2 -3
  36. package/dist/hooks/use-collection-render/index.js.map +1 -1
  37. package/dist/hooks/use-context-props/index.js.map +1 -1
  38. package/dist/hooks/use-defaults/index.d.ts +32 -80
  39. package/dist/hooks/use-defaults/index.js +1 -4
  40. package/dist/hooks/use-defaults/index.js.map +1 -1
  41. package/dist/hooks/use-defaults/types.d.ts +1 -1
  42. package/dist/hooks/use-theme/index.d.ts +1 -1
  43. package/dist/hooks/use-theme/types.d.ts +1 -1
  44. package/dist/hooks/use-tree/index.js +3 -2
  45. package/dist/hooks/use-tree/index.js.map +1 -1
  46. package/dist/hooks/use-tree/utils.js +6 -9
  47. package/dist/hooks/use-tree/utils.js.map +1 -1
  48. package/dist/hooks/use-update-effect/index.js.map +1 -1
  49. package/dist/index.css +32 -32
  50. package/dist/index.d.ts +5 -5
  51. package/dist/ladle/actions.js.map +1 -1
  52. package/dist/test/setup.js +634 -1254
  53. package/dist/test/setup.js.map +1 -1
  54. package/dist/utils/props/index.d.ts +1 -2
  55. package/dist/utils/props/index.js.map +1 -1
  56. package/package.json +39 -39
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/options/index.tsx"],"names":["Options"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n createContext,\n type ForwardedRef,\n forwardRef,\n type HTMLAttributes,\n type Ref,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n Collection,\n type CollectionRenderer,\n CollectionRendererContext,\n type ContextValue,\n ListBox,\n ListBoxItem,\n type ListBoxItemRenderProps,\n type ListBoxRenderProps,\n ListStateContext,\n Popover,\n type PopoverRenderProps,\n Provider,\n type SectionProps,\n type SeparatorProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useSlot } from '../../hooks/use-slot';\nimport { useTheme } from '../../hooks/use-theme';\nimport { bodies, headings } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n AriaHeaderContext,\n AriaKeyboardContext,\n AriaListBoxSection,\n AriaListBoxSectionContext,\n AriaSeparatorContext,\n AriaText,\n AriaTextContext,\n} from '../aria';\nimport { createCollectionRenderer } from '../collection';\nimport { IconContext } from '../icon';\nimport {\n optionsClassNames,\n optionsItemStateVars,\n optionsStateVars,\n} from './options.css';\nimport type { IconProps } from '../icon/types';\nimport type {\n OptionsItemProps,\n OptionsListProps,\n OptionsMapping,\n OptionsProps,\n} from './types';\n\nconst defaultMapping: OptionsMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n header: {\n sm: headings.v4,\n lg: headings.v5,\n },\n label: {\n sm: bodies.sm,\n lg: bodies.sm,\n },\n shortcut: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n};\n\nconst defaultSize = 'lg';\n\nexport const OptionsContext =\n createContext<ContextValue<OptionsProps, HTMLElement>>(null);\n\nexport const Options = forwardRef(function Options(\n props: OptionsProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'Options');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, theme.Options, classNamesProp, {\n options: {\n container: theme.className, // required to consume global theme within Popover\n },\n }),\n [theme.className, theme.Options, classNamesProp],\n );\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const style = useCallback(\n ({ ...renderProps }: PopoverRenderProps) => ({\n ...theme.style, // required to consume global styles within Popover\n ...inlineVars(optionsStateVars, {\n ...renderProps,\n size,\n }),\n }),\n [theme.style, size],\n );\n\n const values = useMemo<\n [\n [\n typeof OptionsListContext,\n ContextValue<OptionsListProps<object>, HTMLDivElement>,\n ],\n ]\n >(\n () => [[OptionsListContext, { classNames, mapping, size }]],\n [classNames, mapping, size],\n );\n\n const children = useCallback(\n (renderProps: PopoverRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.options?.options}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.options?.options, size, values],\n );\n\n return (\n <Popover\n {...rest}\n ref={resolvedRef}\n className={classNames?.options?.container}\n style={style}\n >\n {children}\n </Popover>\n );\n});\n\nexport const OptionsListContext =\n createContext<ContextValue<OptionsListProps<object>, HTMLDivElement>>(null);\n\ntype OptionsListContexts = [\n [\n typeof OptionsItemContext,\n ContextValue<OptionsItemProps<object>, HTMLDivElement>,\n ],\n [\n typeof AriaListBoxSectionContext,\n ContextValue<SectionProps<object>, HTMLElement>,\n ],\n [\n typeof AriaHeaderContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n [typeof AriaSeparatorContext, ContextValue<SeparatorProps, HTMLElement>],\n];\n\nexport const OptionsList = forwardRef(function OptionList<T extends object>(\n props: OptionsListProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsListContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'OptionsList');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n items,\n mapping: mappingProp,\n selectionMode = 'single',\n size = defaultSize,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, theme.Options, classNamesProp, {\n list: { header: mapping.header[size] },\n }),\n [theme.Options, classNamesProp, mapping, size],\n );\n\n const values = useMemo<OptionsListContexts>(\n () => [\n [OptionsItemContext, { classNames, size, mapping }],\n [AriaListBoxSectionContext, { className: classNames?.list?.section }],\n [AriaHeaderContext, { className: classNames?.list?.header }],\n [AriaSeparatorContext, { className: classNames?.list?.separator }],\n ],\n [classNames, size, mapping],\n );\n\n const style = useCallback(\n (renderProps: ListBoxRenderProps) =>\n inlineVars(optionsItemStateVars, { ...renderProps, size }),\n [size],\n );\n\n const children = useMemo(() => {\n if (!(childrenProp || items)) {\n return null;\n }\n\n return (\n <AriaListBoxSection className={classNames?.list?.list}>\n {typeof childrenProp === 'function' ? (\n <Collection items={items}>{childrenProp}</Collection>\n ) : (\n childrenProp\n )}\n </AriaListBoxSection>\n );\n }, [classNames?.list?.list, childrenProp, items]);\n\n const renderer = useMemo<CollectionRenderer>(\n // @ts-expect-error ts unnecessarily guarding against null state\n () => createCollectionRenderer(ListStateContext, values),\n [values],\n );\n\n return (\n <CollectionRendererContext.Provider value={renderer}>\n <Provider values={values}>\n <ListBox<T>\n {...rest}\n ref={resolvedRef}\n className={classNames?.list?.container}\n items={items}\n selectionMode={selectionMode}\n style={style}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {children}\n </ListBox>\n </Provider>\n </CollectionRendererContext.Provider>\n );\n});\n\nexport const OptionsItemContext =\n createContext<ContextValue<OptionsItemProps<object>, HTMLDivElement>>(null);\n\nexport const OptionsItem = forwardRef(function OptionItem<T extends object>(\n props: OptionsItemProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsItemContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'OptionsItem');\n\n const {\n id,\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n textValue = typeof childrenProp === 'string' ? childrenProp : undefined,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, classNamesProp, theme.Options, {\n item: {\n description: mapping.description[size],\n label: mapping.label[size],\n shortcut: mapping.shortcut[size],\n },\n }),\n [theme.Options, classNamesProp, mapping, size],\n );\n\n const [descriptionRef, hasDescription] = useSlot();\n\n const style = useCallback(\n (renderProps: ListBoxItemRenderProps) =>\n inlineVars(optionsItemStateVars, {\n ...renderProps,\n size,\n hasDescription,\n }),\n [hasDescription, size],\n );\n\n const values = useMemo<\n [\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof IconContext, ContextValue<IconProps, HTMLDivElement>],\n [\n typeof AriaKeyboardContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n ]\n >(\n () => [\n [\n AriaTextContext,\n {\n slots: {\n label: { className: classNames?.item?.label },\n description: {\n ref: descriptionRef,\n className: classNames?.item?.description,\n },\n },\n },\n ],\n [IconContext, { classNames: classNames?.item?.icon }],\n [AriaKeyboardContext, { className: classNames?.item?.shortcut }],\n ],\n [\n classNames?.item?.label,\n descriptionRef,\n classNames?.item?.description,\n classNames?.item?.icon,\n classNames?.item?.shortcut,\n ],\n );\n\n const children = useCallback(\n (renderProps: ListBoxItemRenderProps) => {\n const content = callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n });\n\n return (\n <Provider values={values}>\n <div className={classNames?.item?.item}>\n {typeof content === 'string' ? (\n <AriaText slot='label'>{content}</AriaText>\n ) : (\n content\n )}\n </div>\n </Provider>\n );\n },\n [childrenProp, classNames?.item?.item, size, values],\n );\n\n return (\n <ListBoxItem<T>\n {...rest}\n id={id ?? textValue}\n ref={resolvedRef as unknown as Ref<T>}\n className={classNames?.item?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </ListBoxItem>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/options/index.tsx"],"names":["Options"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n createContext,\n type ForwardedRef,\n forwardRef,\n type HTMLAttributes,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n Collection,\n type CollectionRenderer,\n CollectionRendererContext,\n type ContextValue,\n ListBox,\n ListBoxItem,\n type ListBoxItemRenderProps,\n type ListBoxRenderProps,\n ListStateContext,\n Popover,\n type PopoverRenderProps,\n Provider,\n type SectionProps,\n type SeparatorProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useSlot } from '../../hooks/use-slot';\nimport { useTheme } from '../../hooks/use-theme';\nimport { bodies, headings } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n AriaHeaderContext,\n AriaKeyboardContext,\n AriaListBoxSection,\n AriaListBoxSectionContext,\n AriaSeparatorContext,\n AriaText,\n AriaTextContext,\n} from '../aria';\nimport { createCollectionRenderer } from '../collection';\nimport { IconContext } from '../icon';\nimport {\n optionsClassNames,\n optionsItemStateVars,\n optionsStateVars,\n} from './options.css';\nimport type { IconProps } from '../icon/types';\nimport type {\n OptionsItemProps,\n OptionsListProps,\n OptionsMapping,\n OptionsProps,\n} from './types';\n\nconst defaultMapping: OptionsMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n header: {\n sm: headings.v4,\n lg: headings.v5,\n },\n label: {\n sm: bodies.sm,\n lg: bodies.sm,\n },\n shortcut: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n};\n\nconst defaultSize = 'lg';\n\nexport const OptionsContext =\n createContext<ContextValue<OptionsProps, HTMLElement>>(null);\n\nexport const Options = forwardRef(function Options(\n props: OptionsProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'Options');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, theme.Options, classNamesProp, {\n options: {\n container: theme.className, // required to consume global theme within Popover\n },\n }),\n [theme.className, theme.Options, classNamesProp],\n );\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const style = useCallback(\n ({ ...renderProps }: PopoverRenderProps) => ({\n ...theme.style, // required to consume global styles within Popover\n ...inlineVars(optionsStateVars, {\n ...renderProps,\n size,\n }),\n }),\n [theme.style, size],\n );\n\n const values = useMemo<\n [\n [\n typeof OptionsListContext,\n ContextValue<OptionsListProps<object>, HTMLDivElement>,\n ],\n ]\n >(\n () => [[OptionsListContext, { classNames, mapping, size }]],\n [classNames, mapping, size],\n );\n\n const children = useCallback(\n (renderProps: PopoverRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.options?.options}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.options?.options, size, values],\n );\n\n return (\n <Popover\n {...rest}\n ref={resolvedRef}\n className={classNames?.options?.container}\n style={style}\n >\n {children}\n </Popover>\n );\n});\n\nexport const OptionsListContext =\n createContext<ContextValue<OptionsListProps<object>, HTMLDivElement>>(null);\n\ntype OptionsListContexts = [\n [\n typeof OptionsItemContext,\n ContextValue<OptionsItemProps<object>, HTMLDivElement>,\n ],\n [\n typeof AriaListBoxSectionContext,\n ContextValue<SectionProps<object>, HTMLElement>,\n ],\n [\n typeof AriaHeaderContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n [typeof AriaSeparatorContext, ContextValue<SeparatorProps, HTMLElement>],\n];\n\nexport const OptionsList = forwardRef(function OptionList<T extends object>(\n props: OptionsListProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsListContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'OptionsList');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n items,\n mapping: mappingProp,\n selectionMode = 'single',\n size = defaultSize,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, theme.Options, classNamesProp, {\n list: { header: mapping.header[size] },\n }),\n [theme.Options, classNamesProp, mapping, size],\n );\n\n const values = useMemo<OptionsListContexts>(\n () => [\n [OptionsItemContext, { classNames, size, mapping }],\n [AriaListBoxSectionContext, { className: classNames?.list?.section }],\n [AriaHeaderContext, { className: classNames?.list?.header }],\n [AriaSeparatorContext, { className: classNames?.list?.separator }],\n ],\n [classNames, size, mapping],\n );\n\n const style = useCallback(\n (renderProps: ListBoxRenderProps) =>\n inlineVars(optionsItemStateVars, { ...renderProps, size }),\n [size],\n );\n\n const children = useMemo(() => {\n if (!(childrenProp || items)) {\n return null;\n }\n\n return (\n <AriaListBoxSection className={classNames?.list?.list}>\n {typeof childrenProp === 'function' ? (\n <Collection items={items}>{childrenProp}</Collection>\n ) : (\n childrenProp\n )}\n </AriaListBoxSection>\n );\n }, [classNames?.list?.list, childrenProp, items]);\n\n const renderer = useMemo<CollectionRenderer>(\n // @ts-expect-error Type '{ readonly collection: Collection<Node<object>>; }' is missing the following properties from type 'ListState<any>': disabledKeys, selectionManager\n () => createCollectionRenderer(ListStateContext, values),\n [values],\n );\n\n return (\n <CollectionRendererContext.Provider value={renderer}>\n <Provider values={values}>\n <ListBox<T>\n {...rest}\n ref={resolvedRef}\n className={classNames?.list?.container}\n items={items}\n selectionMode={selectionMode}\n style={style}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {children}\n </ListBox>\n </Provider>\n </CollectionRendererContext.Provider>\n );\n});\n\nexport const OptionsItemContext =\n createContext<ContextValue<OptionsItemProps<object>, HTMLDivElement>>(null);\n\nexport const OptionsItem = forwardRef(function OptionItem<T extends object>(\n props: OptionsItemProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n OptionsItemContext,\n );\n const finalProps = useDefaultProps(resolvedProps, 'OptionsItem');\n\n const {\n id,\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n textValue = typeof childrenProp === 'string' ? childrenProp : undefined,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(optionsClassNames, classNamesProp, theme.Options, {\n item: {\n description: mapping.description[size],\n label: mapping.label[size],\n shortcut: mapping.shortcut[size],\n },\n }),\n [theme.Options, classNamesProp, mapping, size],\n );\n\n const [descriptionRef, hasDescription] = useSlot();\n\n const style = useCallback(\n (renderProps: ListBoxItemRenderProps) =>\n inlineVars(optionsItemStateVars, {\n ...renderProps,\n size,\n hasDescription,\n }),\n [hasDescription, size],\n );\n\n const values = useMemo<\n [\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof IconContext, ContextValue<IconProps, HTMLDivElement>],\n [\n typeof AriaKeyboardContext,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLElement>,\n ],\n ]\n >(\n () => [\n [\n AriaTextContext,\n {\n slots: {\n label: { className: classNames?.item?.label },\n description: {\n ref: descriptionRef,\n className: classNames?.item?.description,\n },\n },\n },\n ],\n [IconContext, { classNames: classNames?.item?.icon }],\n [AriaKeyboardContext, { className: classNames?.item?.shortcut }],\n ],\n [\n classNames?.item?.label,\n descriptionRef,\n classNames?.item?.description,\n classNames?.item?.icon,\n classNames?.item?.shortcut,\n ],\n );\n\n const children = useCallback(\n (renderProps: ListBoxItemRenderProps) => {\n const content = callRenderProps(childrenProp, {\n ...renderProps,\n size,\n defaultChildren: null,\n });\n\n return (\n <Provider values={values}>\n <div className={classNames?.item?.item}>\n {typeof content === 'string' ? (\n <AriaText slot='label'>{content}</AriaText>\n ) : (\n content\n )}\n </div>\n </Provider>\n );\n },\n [childrenProp, classNames?.item?.item, size, values],\n );\n\n return (\n <ListBoxItem<T>\n {...rest}\n id={id ?? textValue}\n ref={resolvedRef as unknown as React.Ref<T>}\n className={classNames?.item?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </ListBoxItem>\n );\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/picker/index.tsx"],"names":["Picker","PickerItem"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n createContext,\n type ForwardedRef,\n forwardRef,\n type Ref,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n Collection,\n type ContextValue,\n ListBox,\n ListBoxItem,\n type ListBoxItemRenderProps,\n type ListBoxRenderProps,\n ListBoxSection,\n Provider,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useTheme } from '../../hooks/use-theme';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n pickerClassNames,\n pickerItemStateVars,\n pickerStateVars,\n} from './picker.css';\nimport type { PickerItemProps, PickerProps } from './types';\n\nexport const PickerContext =\n createContext<ContextValue<PickerProps<unknown>, HTMLDivElement>>(null);\n\nexport const PickerItemContext =\n createContext<ContextValue<PickerItemProps<unknown>, HTMLDivElement>>(null);\n\n/**\n * Generic stylable picker that supports the functionality (sans drag and drop) of\n * React Aria's ListBox: https://react-spectrum.adobe.com/react-aria/ListBox.html\n *\n * NOTE: The picker items does not support sections or separators\n */\nexport const Picker = forwardRef(function Picker<T extends object>(\n props: PickerProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n PickerContext,\n );\n\n const finalProps = useDefaultProps(resolvedProps, 'Picker');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n columns,\n items,\n layout = 'stack',\n orientation = 'horizontal',\n selectionMode = 'single',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(pickerClassNames, theme.Picker, classNamesProp),\n [theme.Picker, classNamesProp],\n );\n\n const values = useMemo<\n [\n [\n typeof PickerItemContext,\n ContextValue<PickerItemProps<unknown>, HTMLDivElement>,\n ],\n ]\n >(() => [[PickerItemContext, { classNames }]], [classNames]);\n\n const style = useCallback(\n ({ state, ...renderProps }: ListBoxRenderProps) =>\n inlineVars(pickerStateVars, {\n ...renderProps,\n columns,\n layout,\n orientation,\n }),\n [columns, layout, orientation],\n );\n\n const children = useMemo(() => {\n if (!(childrenProp || items)) {\n return null;\n }\n\n return (\n <ListBoxSection\n className={classNames?.list?.list}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {typeof childrenProp === 'function' ? (\n <Collection items={items}>{childrenProp}</Collection>\n ) : (\n childrenProp\n )}\n </ListBoxSection>\n );\n }, [childrenProp, items, classNames?.list?.list, ariaLabel, ariaLabelledBy]);\n\n return (\n <Provider values={values}>\n <ListBox<T>\n {...rest}\n ref={resolvedRef}\n className={classNames?.list?.container}\n items={items}\n layout={layout}\n orientation={orientation}\n selectionMode={selectionMode}\n style={style}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {children}\n </ListBox>\n </Provider>\n );\n});\n\nexport const PickerItem = forwardRef(function PickerItem<T extends object>(\n props: PickerItemProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n PickerItemContext,\n );\n\n const {\n children: childrenProp,\n id,\n classNames: classNamesProp,\n textValue = typeof childrenProp === 'string' ? childrenProp : undefined,\n ...rest\n } = resolvedProps;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(pickerClassNames, theme.Picker, classNamesProp),\n [theme.Picker, classNamesProp],\n );\n\n const style = useCallback(\n (renderProps: ListBoxItemRenderProps) =>\n inlineVars(pickerItemStateVars, renderProps),\n [],\n );\n\n const children = useCallback(\n (renderProps: ListBoxItemRenderProps) => (\n <div className={classNames?.item?.item}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n ),\n [childrenProp, classNames?.item?.item],\n );\n\n return (\n <ListBoxItem<T>\n {...rest}\n ref={resolvedRef as unknown as Ref<T>}\n id={id ?? textValue}\n className={classNames?.item?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </ListBoxItem>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/picker/index.tsx"],"names":["Picker","PickerItem"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n createContext,\n type ForwardedRef,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n Collection,\n type ContextValue,\n ListBox,\n ListBoxItem,\n type ListBoxItemRenderProps,\n type ListBoxRenderProps,\n ListBoxSection,\n Provider,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useTheme } from '../../hooks/use-theme';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n pickerClassNames,\n pickerItemStateVars,\n pickerStateVars,\n} from './picker.css';\nimport type { PickerItemProps, PickerProps } from './types';\n\nexport const PickerContext =\n createContext<ContextValue<PickerProps<unknown>, HTMLDivElement>>(null);\n\nexport const PickerItemContext =\n createContext<ContextValue<PickerItemProps<unknown>, HTMLDivElement>>(null);\n\n/**\n * Generic stylable picker that supports the functionality (sans drag and drop) of\n * React Aria's ListBox: https://react-spectrum.adobe.com/react-aria/ListBox.html\n *\n * NOTE: The picker items does not support sections or separators\n */\nexport const Picker = forwardRef(function Picker<T extends object>(\n props: PickerProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n PickerContext,\n );\n\n const finalProps = useDefaultProps(resolvedProps, 'Picker');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n columns,\n items,\n layout = 'stack',\n orientation = 'horizontal',\n selectionMode = 'single',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(pickerClassNames, theme.Picker, classNamesProp),\n [theme.Picker, classNamesProp],\n );\n\n const values = useMemo<\n [\n [\n typeof PickerItemContext,\n ContextValue<PickerItemProps<unknown>, HTMLDivElement>,\n ],\n ]\n >(() => [[PickerItemContext, { classNames }]], [classNames]);\n\n const style = useCallback(\n ({ state, ...renderProps }: ListBoxRenderProps) =>\n inlineVars(pickerStateVars, {\n ...renderProps,\n columns,\n layout,\n orientation,\n }),\n [columns, layout, orientation],\n );\n\n const children = useMemo(() => {\n if (!(childrenProp || items)) {\n return null;\n }\n\n return (\n <ListBoxSection\n className={classNames?.list?.list}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {typeof childrenProp === 'function' ? (\n <Collection items={items}>{childrenProp}</Collection>\n ) : (\n childrenProp\n )}\n </ListBoxSection>\n );\n }, [childrenProp, items, classNames?.list?.list, ariaLabel, ariaLabelledBy]);\n\n return (\n <Provider values={values}>\n <ListBox<T>\n {...rest}\n ref={resolvedRef}\n className={classNames?.list?.container}\n items={items}\n layout={layout}\n orientation={orientation}\n selectionMode={selectionMode}\n style={style}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {children}\n </ListBox>\n </Provider>\n );\n});\n\nexport const PickerItem = forwardRef(function PickerItem<T extends object>(\n props: PickerItemProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [resolvedProps, resolvedRef] = useContextProps(\n props,\n ref,\n PickerItemContext,\n );\n\n const {\n children: childrenProp,\n id,\n classNames: classNamesProp,\n textValue = typeof childrenProp === 'string' ? childrenProp : undefined,\n ...rest\n } = resolvedProps;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(pickerClassNames, theme.Picker, classNamesProp),\n [theme.Picker, classNamesProp],\n );\n\n const style = useCallback(\n (renderProps: ListBoxItemRenderProps) =>\n inlineVars(pickerItemStateVars, renderProps),\n [],\n );\n\n const children = useCallback(\n (renderProps: ListBoxItemRenderProps) => (\n <div className={classNames?.item?.item}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n ),\n [childrenProp, classNames?.item?.item],\n );\n\n return (\n <ListBoxItem<T>\n {...rest}\n ref={resolvedRef as unknown as React.Ref<T>}\n id={id ?? textValue}\n className={classNames?.item?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </ListBoxItem>\n );\n});\n"]}
@@ -1,136 +1,11 @@
1
- import { TextFieldClassNames, TextFieldMapping, TextFieldSizes, TextFieldProps } from './types.js';
2
- import * as _react_types_shared from '@react-types/shared';
3
1
  import * as react from 'react';
4
- import { TextFieldRenderProps, ContextValue } from 'react-aria-components';
2
+ import { ContextValue } from 'react-aria-components';
3
+ import { TextFieldProps } from './types.js';
5
4
  import 'type-fest';
6
5
  import '../../types/generic.js';
7
6
  import '../input/types.js';
8
7
 
9
8
  declare const TextFieldContext: react.Context<ContextValue<TextFieldProps, HTMLDivElement>>;
10
- declare const TextField: (props: {
11
- children?: react.ReactNode | ((values: TextFieldRenderProps & {
12
- defaultChildren: react.ReactNode | undefined;
13
- }) => react.ReactNode);
14
- slot?: string | null | undefined;
15
- defaultValue?: string | undefined;
16
- autoFocus?: boolean | undefined;
17
- dir?: string | undefined | undefined;
18
- enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
19
- hidden?: boolean | undefined | undefined;
20
- id?: string | undefined;
21
- lang?: string | undefined | undefined;
22
- spellCheck?: string | undefined;
23
- translate?: "yes" | "no" | undefined | undefined;
24
- autoCorrect?: string | undefined;
25
- inert?: boolean | undefined | undefined;
26
- inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
27
- 'aria-activedescendant'?: string | undefined;
28
- 'aria-autocomplete'?: "none" | "inline" | "list" | "both" | undefined;
29
- 'aria-controls'?: string | undefined;
30
- 'aria-describedby'?: string | undefined;
31
- 'aria-details'?: string | undefined;
32
- 'aria-errormessage'?: string | undefined;
33
- 'aria-haspopup'?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
34
- 'aria-label'?: string | undefined;
35
- 'aria-labelledby'?: string | undefined;
36
- onCopy?: react.ClipboardEventHandler<HTMLInputElement> | undefined;
37
- onCut?: react.ClipboardEventHandler<HTMLInputElement> | undefined;
38
- onPaste?: react.ClipboardEventHandler<HTMLInputElement> | undefined;
39
- onCompositionEnd?: react.CompositionEventHandler<HTMLInputElement> | undefined;
40
- onCompositionStart?: react.CompositionEventHandler<HTMLInputElement> | undefined;
41
- onCompositionUpdate?: react.CompositionEventHandler<HTMLInputElement> | undefined;
42
- onFocus?: ((e: react.FocusEvent<HTMLInputElement, Element>) => void) | undefined;
43
- onBlur?: ((e: react.FocusEvent<HTMLInputElement, Element>) => void) | undefined;
44
- onChange?: ((value: string) => void) | undefined;
45
- onBeforeInput?: react.FormEventHandler<HTMLInputElement> | undefined;
46
- onInput?: react.FormEventHandler<HTMLInputElement> | undefined;
47
- onKeyDown?: ((e: _react_types_shared.KeyboardEvent) => void) | undefined;
48
- onKeyUp?: ((e: _react_types_shared.KeyboardEvent) => void) | undefined;
49
- onAuxClick?: react.MouseEventHandler<HTMLDivElement> | undefined;
50
- onAuxClickCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
51
- onClick?: react.MouseEventHandler<HTMLDivElement> | undefined;
52
- onClickCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
53
- onContextMenu?: react.MouseEventHandler<HTMLDivElement> | undefined;
54
- onContextMenuCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
55
- onDoubleClick?: react.MouseEventHandler<HTMLDivElement> | undefined;
56
- onDoubleClickCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
57
- onMouseDown?: react.MouseEventHandler<HTMLDivElement> | undefined;
58
- onMouseDownCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
59
- onMouseEnter?: react.MouseEventHandler<HTMLDivElement> | undefined;
60
- onMouseLeave?: react.MouseEventHandler<HTMLDivElement> | undefined;
61
- onMouseMove?: react.MouseEventHandler<HTMLDivElement> | undefined;
62
- onMouseMoveCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
63
- onMouseOut?: react.MouseEventHandler<HTMLDivElement> | undefined;
64
- onMouseOutCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
65
- onMouseOver?: react.MouseEventHandler<HTMLDivElement> | undefined;
66
- onMouseOverCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
67
- onMouseUp?: react.MouseEventHandler<HTMLDivElement> | undefined;
68
- onMouseUpCapture?: react.MouseEventHandler<HTMLDivElement> | undefined;
69
- onSelect?: react.ReactEventHandler<HTMLInputElement> | undefined;
70
- onTouchCancel?: react.TouchEventHandler<HTMLDivElement> | undefined;
71
- onTouchCancelCapture?: react.TouchEventHandler<HTMLDivElement> | undefined;
72
- onTouchEnd?: react.TouchEventHandler<HTMLDivElement> | undefined;
73
- onTouchEndCapture?: react.TouchEventHandler<HTMLDivElement> | undefined;
74
- onTouchMove?: react.TouchEventHandler<HTMLDivElement> | undefined;
75
- onTouchMoveCapture?: react.TouchEventHandler<HTMLDivElement> | undefined;
76
- onTouchStart?: react.TouchEventHandler<HTMLDivElement> | undefined;
77
- onTouchStartCapture?: react.TouchEventHandler<HTMLDivElement> | undefined;
78
- onPointerDown?: react.PointerEventHandler<HTMLDivElement> | undefined;
79
- onPointerDownCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
80
- onPointerMove?: react.PointerEventHandler<HTMLDivElement> | undefined;
81
- onPointerMoveCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
82
- onPointerUp?: react.PointerEventHandler<HTMLDivElement> | undefined;
83
- onPointerUpCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
84
- onPointerCancel?: react.PointerEventHandler<HTMLDivElement> | undefined;
85
- onPointerCancelCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
86
- onPointerEnter?: react.PointerEventHandler<HTMLDivElement> | undefined;
87
- onPointerLeave?: react.PointerEventHandler<HTMLDivElement> | undefined;
88
- onPointerOver?: react.PointerEventHandler<HTMLDivElement> | undefined;
89
- onPointerOverCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
90
- onPointerOut?: react.PointerEventHandler<HTMLDivElement> | undefined;
91
- onPointerOutCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
92
- onGotPointerCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
93
- onGotPointerCaptureCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
94
- onLostPointerCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
95
- onLostPointerCaptureCapture?: react.PointerEventHandler<HTMLDivElement> | undefined;
96
- onScroll?: react.UIEventHandler<HTMLDivElement> | undefined;
97
- onScrollCapture?: react.UIEventHandler<HTMLDivElement> | undefined;
98
- onWheel?: react.WheelEventHandler<HTMLDivElement> | undefined;
99
- onWheelCapture?: react.WheelEventHandler<HTMLDivElement> | undefined;
100
- onAnimationStart?: react.AnimationEventHandler<HTMLDivElement> | undefined;
101
- onAnimationStartCapture?: react.AnimationEventHandler<HTMLDivElement> | undefined;
102
- onAnimationEnd?: react.AnimationEventHandler<HTMLDivElement> | undefined;
103
- onAnimationEndCapture?: react.AnimationEventHandler<HTMLDivElement> | undefined;
104
- onAnimationIteration?: react.AnimationEventHandler<HTMLDivElement> | undefined;
105
- onAnimationIterationCapture?: react.AnimationEventHandler<HTMLDivElement> | undefined;
106
- onTransitionCancel?: react.TransitionEventHandler<HTMLDivElement> | undefined;
107
- onTransitionCancelCapture?: react.TransitionEventHandler<HTMLDivElement> | undefined;
108
- onTransitionEnd?: react.TransitionEventHandler<HTMLDivElement> | undefined;
109
- onTransitionEndCapture?: react.TransitionEventHandler<HTMLDivElement> | undefined;
110
- onTransitionRun?: react.TransitionEventHandler<HTMLDivElement> | undefined;
111
- onTransitionRunCapture?: react.TransitionEventHandler<HTMLDivElement> | undefined;
112
- onTransitionStart?: react.TransitionEventHandler<HTMLDivElement> | undefined;
113
- onTransitionStartCapture?: react.TransitionEventHandler<HTMLDivElement> | undefined;
114
- form?: string | undefined;
115
- value?: string | undefined;
116
- type?: "text" | "search" | "url" | "tel" | "email" | "password" | (string & {}) | undefined;
117
- pattern?: string | undefined;
118
- isDisabled?: boolean | undefined;
119
- onFocusChange?: ((isFocused: boolean) => void) | undefined;
120
- name?: string | undefined;
121
- excludeFromTabOrder?: boolean | undefined;
122
- isReadOnly?: boolean | undefined;
123
- isInvalid?: boolean | undefined;
124
- isRequired?: boolean | undefined;
125
- validationBehavior?: "native" | "aria" | undefined;
126
- validate?: ((value: string) => _react_types_shared.ValidationError | true | null | undefined) | undefined;
127
- autoComplete?: string | undefined;
128
- maxLength?: number | undefined;
129
- minLength?: number | undefined;
130
- } & {
131
- classNames?: TextFieldClassNames;
132
- mapping?: Partial<TextFieldMapping>;
133
- size?: TextFieldSizes;
134
- } & react.RefAttributes<HTMLDivElement>) => react.ReactElement | null;
9
+ declare const TextField: (props: TextFieldProps, ref: React.Ref<HTMLDivElement>) => React.ReactElement;
135
10
 
136
11
  export { TextField, TextFieldContext };
@@ -1,5 +1,5 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
- import { createContext, forwardRef, useMemo, useCallback } from 'react';
2
+ import { createContext, useMemo, useCallback } from 'react';
3
3
  import { LabelContext, Provider, TextField as TextField$1 } from 'react-aria-components';
4
4
  import { useContextProps } from '../../hooks/use-context-props/index.js';
5
5
  import { useDefaultProps } from '../../hooks/use-defaults/index.js';
@@ -24,7 +24,7 @@ var defaultMapping = {
24
24
  };
25
25
  var defaultSize = "lg";
26
26
  var TextFieldContext = createContext(null);
27
- var TextField = forwardRef(function TextField2(props, ref) {
27
+ var TextField = (props, ref) => {
28
28
  const [contextProps, contextRef] = useContextProps(
29
29
  props,
30
30
  ref,
@@ -93,7 +93,7 @@ var TextField = forwardRef(function TextField2(props, ref) {
93
93
  children
94
94
  }
95
95
  );
96
- });
96
+ };
97
97
 
98
98
  export { TextField, TextFieldContext };
99
99
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/text-field/index.tsx"],"names":["TextField","RACTextField"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n createContext,\n type ForwardedRef,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ContextValue,\n type FieldErrorProps,\n LabelContext,\n type LabelProps,\n Provider,\n TextField as RACTextField,\n type TextFieldRenderProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useTheme } from '../../hooks/use-theme';\nimport { bodies } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n AriaFieldErrorContext,\n type AriaLabelContext,\n AriaTextContext,\n} from '../aria';\nimport { InputContext } from '../input';\nimport { textFieldClassNames, textFieldStateVars } from './text-field.css';\nimport type { InputProps } from '../input/types';\nimport type { TextFieldMapping, TextFieldProps } from './types';\n\nconst defaultMapping: TextFieldMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n error: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n};\n\nconst defaultSize = 'lg';\n\nexport const TextFieldContext =\n createContext<ContextValue<TextFieldProps, HTMLDivElement>>(null);\n\nexport const TextField = forwardRef(function TextField(\n props: TextFieldProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [contextProps, contextRef] = useContextProps(\n props,\n ref,\n TextFieldContext,\n );\n\n const finalProps = useDefaultProps(contextProps, 'TextField');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(textFieldClassNames, theme.TextField, classNamesProp, {\n description: mapping.description[size],\n error: mapping.error[size],\n }),\n [theme.TextField, classNamesProp, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: TextFieldRenderProps) =>\n inlineVars(textFieldStateVars, {\n ...renderProps,\n size,\n }),\n [size],\n );\n const values = useMemo<\n [\n [typeof InputContext, ContextValue<InputProps, HTMLInputElement>],\n [typeof AriaLabelContext, ContextValue<LabelProps, HTMLLabelElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [\n typeof AriaFieldErrorContext,\n ContextValue<FieldErrorProps, HTMLElement>,\n ],\n ]\n >(\n () => [\n [InputContext, { classNames: classNames?.input, size }],\n [LabelContext, { className: classNames?.label }],\n [\n AriaTextContext,\n {\n slots: {\n description: { className: classNames?.description },\n },\n },\n ],\n [AriaFieldErrorContext, { className: classNames?.error }],\n ],\n [classNames, size],\n );\n\n const children = useCallback(\n (renderProps: TextFieldRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.textField}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.textField, values],\n );\n return (\n <RACTextField\n {...rest}\n ref={contextRef}\n className={classNames?.container}\n style={style}\n >\n {children}\n </RACTextField>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/text-field/index.tsx"],"names":["RACTextField"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { createContext, useCallback, useMemo } from 'react';\nimport {\n type ContextValue,\n type FieldErrorProps,\n LabelContext,\n type LabelProps,\n Provider,\n TextField as RACTextField,\n type TextFieldRenderProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks/use-context-props';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useTheme } from '../../hooks/use-theme';\nimport { bodies } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport {\n AriaFieldErrorContext,\n type AriaLabelContext,\n AriaTextContext,\n} from '../aria';\nimport { InputContext } from '../input';\nimport { textFieldClassNames, textFieldStateVars } from './text-field.css';\nimport type { InputProps } from '../input/types';\nimport type { TextFieldMapping, TextFieldProps } from './types';\n\nconst defaultMapping: TextFieldMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n error: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n};\n\nconst defaultSize = 'lg';\n\nexport const TextFieldContext =\n createContext<ContextValue<TextFieldProps, HTMLDivElement>>(null);\n\nexport const TextField = (\n props: TextFieldProps,\n ref: React.Ref<HTMLDivElement>,\n): React.ReactElement => {\n const [contextProps, contextRef] = useContextProps(\n props,\n ref,\n TextFieldContext,\n );\n\n const finalProps = useDefaultProps(contextProps, 'TextField');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = defaultSize,\n ...rest\n } = finalProps;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(textFieldClassNames, theme.TextField, classNamesProp, {\n description: mapping.description[size],\n error: mapping.error[size],\n }),\n [theme.TextField, classNamesProp, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: TextFieldRenderProps) =>\n inlineVars(textFieldStateVars, {\n ...renderProps,\n size,\n }),\n [size],\n );\n const values = useMemo<\n [\n [typeof InputContext, ContextValue<InputProps, HTMLInputElement>],\n [typeof AriaLabelContext, ContextValue<LabelProps, HTMLLabelElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [\n typeof AriaFieldErrorContext,\n ContextValue<FieldErrorProps, HTMLElement>,\n ],\n ]\n >(\n () => [\n [InputContext, { classNames: classNames?.input, size }],\n [LabelContext, { className: classNames?.label }],\n [\n AriaTextContext,\n {\n slots: {\n description: { className: classNames?.description },\n },\n },\n ],\n [AriaFieldErrorContext, { className: classNames?.error }],\n ],\n [classNames, size],\n );\n\n const children = useCallback(\n (renderProps: TextFieldRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.textField}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.textField, values],\n );\n return (\n <RACTextField\n {...rest}\n ref={contextRef}\n className={classNames?.container}\n style={style}\n >\n {children}\n </RACTextField>\n );\n};\n"]}
@@ -82,7 +82,10 @@ function defaultRenderEmptyState({ isDropTarget }) {
82
82
  return isDropTarget ? "Add to this group" : "Nothing to see here";
83
83
  }
84
84
  function Tree(props) {
85
- props = useDefaultProps(props, "Tree");
85
+ const defaultedProps = useDefaultProps(
86
+ props,
87
+ "Tree"
88
+ );
86
89
  const {
87
90
  children: childrenProp,
88
91
  allowsDragging = false,
@@ -105,7 +108,7 @@ function Tree(props) {
105
108
  onSelectionChange,
106
109
  onUpdate,
107
110
  ...rest
108
- } = props;
111
+ } = defaultedProps;
109
112
  const state = useTree({
110
113
  allowsExpansion,
111
114
  allowsVisibility,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/tree/index.tsx"],"names":["RACButtonContext"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { noop } from '@accelint/core';\nimport { usePress } from '@react-aria/interactions';\nimport { createContext, useCallback, useContext, useMemo } from 'react';\nimport {\n type ContextValue,\n DEFAULT_SLOT,\n DropIndicator,\n type DropTarget,\n GridList,\n GridListItem,\n type GridListItemRenderProps,\n type GridListRenderProps,\n Provider,\n ButtonContext as RACButtonContext,\n type ButtonProps as RACButtonProps,\n type TextProps,\n useDragAndDrop,\n} from 'react-aria-components';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useTheme } from '../../hooks/use-theme';\nimport { useTree } from '../../hooks/use-tree';\nimport { bodies } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport { AriaTextContext } from '../aria';\nimport { Button, ButtonContext, ToggleButtonContext } from '../button';\nimport { CheckboxContext } from '../checkbox';\nimport { GroupContext } from '../group';\nimport { Icon } from '../icon';\nimport { MergeProvider } from '../merge-provider';\nimport {\n treeClassNames,\n treeGroupStateVars,\n treeIndicatorStateVars,\n treeItemStateVars,\n treeStateVars,\n} from './tree.css';\nimport { createDragAndDropHandlers } from './utils';\nimport type { Key } from '@react-types/shared';\nimport type { ButtonProps, ToggleButtonProps } from '../button/types';\nimport type { CheckboxProps } from '../checkbox/types';\nimport type { GroupProps } from '../group/types';\nimport type {\n TreeGroupProps,\n TreeIndicatorRenderProps,\n TreeItemProps,\n TreeMapping,\n TreeProps,\n TreeStateContextValue,\n} from './types';\n\nconst emptyTree = {\n key: '',\n parentKey: '',\n children: [],\n value: { id: '', label: '' },\n};\n\nconst defaultMapping: TreeMapping = {\n actions: {\n sm: {},\n lg: {},\n },\n button: {\n sm: { size: 'sm', variant: 'icon' },\n lg: { size: 'md', variant: 'icon' },\n },\n description: {\n sm: bodies.sm,\n lg: bodies.md,\n },\n drag: {\n sm: {},\n lg: {},\n },\n expansion: {\n sm: {},\n lg: {},\n },\n visibility: {\n sm: {},\n lg: {},\n },\n};\n\nconst defaultSize = 'lg';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const TreeStateContext = createContext<TreeStateContextValue<any>>({\n allowsDragging: true,\n allowsExpansion: true,\n allowsVisibility: false,\n lookup: {},\n selectedKeys: new Set(),\n selectionMode: 'none',\n tree: emptyTree,\n actions: {\n append: noop,\n getItem: () => emptyTree,\n insert: noop,\n insertAfter: noop,\n insertBefore: noop,\n move: noop,\n prepend: noop,\n remove: noop,\n removeSelectedItems: noop,\n revertIsExpanded: noop,\n setSelectedKeys: noop,\n toggleIsExpanded: noop,\n toggleIsSelected: noop,\n toggleIsViewable: noop,\n update: noop,\n },\n});\n\nfunction defaultRenderEmptyState({ isDropTarget }: GridListRenderProps) {\n return isDropTarget ? 'Add to this group' : 'Nothing to see here';\n}\n\n/**\n * By default Tree only works as an uncontrolled input. However, if you need to use the Tree\n * as a controlled input (passing state changes to the \"nodes\" props), you will need to add a\n * \"key\" prop that is a hash of the \"nodes\" prop to trigger a rerender of the component and\n * abandon it's previous state. Unfortunately, the underlying hooks don't provide a good way\n * to update the internal state of the Tree onces it's been initialized.\n */\nexport function Tree<T>(props: TreeProps<T>) {\n props = useDefaultProps(props as TreeProps<unknown>, 'Tree') as TreeProps<T>;\n\n const {\n children: childrenProp,\n allowsDragging = false,\n allowsExpansion = true,\n allowsVisibility = false,\n classNames: classNamesProps,\n disabledBehavior = 'all',\n keyboardNavigationBehavior = 'arrow',\n mapping: mappingProp,\n nodes,\n provider,\n renderDragPreview,\n renderEmptyState: renderEmptyStateProp = defaultRenderEmptyState,\n selectionBehavior = 'replace',\n selectionMode = 'none',\n showTreeLines = true,\n size = defaultSize,\n onAction,\n onScroll,\n onSelectionChange,\n onUpdate,\n ...rest\n } = props;\n\n const state = useTree({\n allowsExpansion,\n allowsVisibility,\n nodes,\n selectionMode,\n onSelectionChange,\n onUpdate,\n });\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(treeClassNames, theme.Tree, classNamesProps, {\n item: {\n description: mapping.description[size],\n },\n }) ?? {},\n [theme.Tree, classNamesProps, mapping, size],\n );\n\n const renderEmptyState = useCallback(\n (renderProps: GridListRenderProps) => (\n <div className={classNames?.empty}>\n {renderEmptyStateProp(renderProps)}\n </div>\n ),\n [classNames?.empty, renderEmptyStateProp],\n );\n\n const context = useMemo<\n [[typeof TreeStateContext, TreeStateContextValue<T>]]\n >(\n () => [\n [\n TreeStateContext,\n {\n ...state,\n allowsDragging,\n classNames,\n disabledBehavior,\n keyboardNavigationBehavior,\n renderDragPreview,\n renderEmptyState,\n selectionBehavior,\n selectionMode,\n showTreeLines,\n size,\n onAction,\n onScroll,\n },\n ],\n ],\n [\n state,\n allowsDragging,\n classNames,\n disabledBehavior,\n keyboardNavigationBehavior,\n renderDragPreview,\n renderEmptyState,\n selectionBehavior,\n selectionMode,\n showTreeLines,\n size,\n onAction,\n onScroll,\n ],\n );\n\n const style = useMemo(\n () =>\n inlineVars(treeStateVars, {\n allowsDragging,\n allowsExpansion: state.allowsExpansion,\n allowsVisibility: state.allowsVisibility,\n showTreeLines,\n size,\n }),\n [\n allowsDragging,\n state.allowsExpansion,\n state.allowsVisibility,\n showTreeLines,\n size,\n ],\n );\n\n const children = useMemo(() => {\n const treeGroupProps = {\n ...rest,\n id: state.tree.key,\n nodes: state.tree.children,\n };\n\n return provider ? (\n callRenderProps(childrenProp, { ...state, treeGroupProps })\n ) : (\n <TreeGroup {...treeGroupProps}>{childrenProp}</TreeGroup>\n );\n }, [rest, provider, childrenProp, state]);\n\n return (\n <Provider values={context}>\n <div className={classNames?.tree?.container} style={style}>\n <div className={classNames?.tree?.tree}>{children}</div>\n </div>\n </Provider>\n );\n}\n\nexport function TreeGroup<T>({\n id,\n children,\n nodes,\n types = ['all'],\n ...rest\n}: TreeGroupProps<T>) {\n const {\n actions,\n allowsDragging,\n classNames,\n disabledBehavior,\n keyboardNavigationBehavior,\n lookup,\n renderDragPreview,\n renderEmptyState,\n selectedKeys,\n selectionBehavior,\n selectionMode,\n onAction,\n onScroll,\n } = useContext(TreeStateContext);\n\n const acceptedDragTypes = useMemo(\n () => types.map((type) => `tree-${type}`),\n [types],\n );\n\n // This function cannot be treated as a component and will throw errors if implemented as one (with hooks)\n const renderDropIndicator = useCallback(\n (target: DropTarget) => (\n <DropIndicator\n className={classNames?.indicator?.container}\n // eslint-disable-next-line react-perf/jsx-no-new-function-as-prop, react/jsx-no-bind\n style={(renderProps: TreeIndicatorRenderProps) =>\n inlineVars(treeIndicatorStateVars, {\n ...renderProps,\n dropPosition:\n 'dropPosition' in target ? target.dropPosition : 'root',\n })\n }\n target={target}\n >\n <div className={classNames?.indicator?.indicator} />\n </DropIndicator>\n ),\n [classNames?.indicator?.container, classNames?.indicator?.indicator],\n );\n\n const { dragAndDropHooks } = useDragAndDrop({\n isDisabled: !allowsDragging,\n renderDragPreview,\n renderDropIndicator,\n ...createDragAndDropHandlers(id, acceptedDragTypes, lookup, actions),\n });\n\n const style = useCallback(\n (renderProps: GridListRenderProps) =>\n inlineVars(treeGroupStateVars, { ...renderProps, count: nodes.length }),\n [nodes.length],\n );\n\n const indices = useMemo(\n () =>\n nodes.reduce<Record<Key, number>>((acc, node, index) => {\n acc[node.key] = index;\n\n return acc;\n }, {}),\n [nodes],\n );\n\n return (\n <GridList\n {...rest}\n className={classNames?.group}\n disabledBehavior={disabledBehavior}\n dragAndDropHooks={dragAndDropHooks}\n items={nodes}\n keyboardNavigationBehavior={keyboardNavigationBehavior}\n renderEmptyState={renderEmptyState}\n selectedKeys={selectedKeys}\n selectionBehavior={selectionBehavior}\n selectionMode={selectionMode}\n style={style}\n onAction={onAction}\n onScroll={onScroll}\n >\n {(item) => (\n <TreeItem\n index={indices[item.key] ?? -1}\n node={item}\n isFirstChild={indices[item.key] === 0}\n isLastChild={indices[item.key] === nodes.length - 1}\n >\n {children}\n </TreeItem>\n )}\n </GridList>\n );\n}\n\ntype TreeItemContexts = [\n [\n typeof ToggleButtonContext,\n ContextValue<ToggleButtonProps, HTMLButtonElement>,\n ],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLSpanElement>],\n [\n typeof GroupContext,\n ContextValue<GroupProps<ButtonProps, HTMLButtonElement>, HTMLDivElement>,\n ],\n [typeof CheckboxContext, ContextValue<CheckboxProps, HTMLLabelElement>],\n [typeof ButtonContext, ContextValue<ButtonProps, HTMLButtonElement>],\n [typeof RACButtonContext, ContextValue<RACButtonProps, HTMLButtonElement>],\n];\n\nconst contextBlocker: TreeItemContexts = [\n [ToggleButtonContext, null],\n [AriaTextContext, null],\n [GroupContext, null],\n [CheckboxContext, null],\n [ButtonContext, null],\n [RACButtonContext, null],\n];\n\nexport function TreeItem<T>({\n children: childrenProp,\n index,\n mapping: mappingProp,\n node,\n isFirstChild,\n isLastChild,\n ...rest\n}: TreeItemProps<T>) {\n const {\n actions,\n allowsExpansion,\n classNames,\n size: sizeProp,\n } = useContext(TreeStateContext);\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const selection = useMemo(() => new Set([node.key]), [node.key]);\n\n const handleToggleExpansion = useCallback(\n () => actions.toggleIsExpanded(selection),\n [actions, selection],\n );\n\n const handleToggleSelection = useCallback(\n () => actions.toggleIsSelected(selection),\n [actions, selection],\n );\n\n const handleToggleVisibility = useCallback(\n () => actions.toggleIsViewable(selection),\n [actions, selection],\n );\n\n const { pressProps } = usePress({\n onPress: handleToggleExpansion,\n });\n\n const style = useCallback(\n (renderProps: GridListItemRenderProps) =>\n inlineVars(treeItemStateVars, {\n ...renderProps,\n count: node.children.length,\n index,\n isExpanded: 'nodes' in node.value ? !!node.value.isExpanded : false,\n isFirstChild,\n isGroup: 'nodes' in node.value,\n isLastChild,\n isViewable: !!node.value.isViewable,\n isVisible: !!node.value.isVisible,\n isReadOnly: !!node.value.isReadOnly,\n }),\n [node.children.length, node.value, index, isFirstChild, isLastChild],\n );\n\n const context = useMemo<TreeItemContexts>(() => {\n const size = sizeProp ?? defaultSize;\n const buttonProps = mapping.button[size] ?? {};\n\n return [\n [\n ToggleButtonContext,\n {\n slots: {\n [DEFAULT_SLOT]: buttonProps,\n expansion: {\n ...buttonProps,\n ...mapping.expansion[size],\n classNames: classNames?.item?.expansion,\n isSelected:\n 'nodes' in node.value ? !!node.value.isExpanded : undefined,\n onPress: handleToggleExpansion,\n },\n visibility: {\n ...buttonProps,\n ...mapping.visibility[size],\n classNames: classNames?.item?.visibility,\n isSelected: !!node.value.isViewable,\n isDisabled: !!node.value.isReadOnly,\n onPress: handleToggleVisibility,\n },\n },\n },\n ],\n [\n AriaTextContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n description: {\n ...('nodes' in node.value ? pressProps : {}),\n className: classNames?.item?.description,\n children: node.value.label,\n },\n },\n },\n ],\n [\n GroupContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n actions: {\n classNames: classNames?.item?.actions,\n context: ButtonContext,\n values: buttonProps,\n },\n },\n },\n ],\n [\n CheckboxContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n selection: {\n classNames: classNames?.item?.selection,\n onChange: handleToggleSelection,\n },\n },\n },\n ],\n [\n ButtonContext,\n {\n slots: {\n [DEFAULT_SLOT]: buttonProps,\n drag: {\n ...buttonProps,\n ...mapping.drag[size],\n classNames: classNames?.item?.drag,\n },\n // We use a non-interactive Button for the lines to try and simplify the\n // consistent use of space when rendered in alignment with other Buttons\n lines: {\n ...buttonProps,\n classNames: classNames?.item?.lines,\n isDisabled: true,\n },\n },\n },\n ],\n // Need to expand the RAC ButtonContext to allow for additional slots\n [RACButtonContext, { slots: { [DEFAULT_SLOT]: {}, lines: {} } }],\n ] as TreeItemContexts;\n }, [\n classNames?.item?.lines,\n classNames?.item?.expansion,\n classNames?.item?.visibility,\n classNames?.item?.description,\n classNames?.item?.actions,\n classNames?.item?.selection,\n classNames?.item?.drag,\n mapping,\n node,\n pressProps,\n sizeProp,\n handleToggleExpansion,\n handleToggleSelection,\n handleToggleVisibility,\n ]);\n\n /**\n * We need to block the above contexts from being passed into the TreeGroup\n * so that each TreeItem has a distinct context. We only use MergeProvider\n * for the above contexts because the GridListItem provides contexts that\n * we need to merge with\n */\n const children = useCallback(\n (renderProps: GridListItemRenderProps) => (\n <MergeProvider values={context}>\n <div className={classNames?.item?.item}>\n {node.parentKey && (\n <Button slot='lines'>\n <Icon />\n </Button>\n )}\n <div className={classNames?.item?.bar}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n node,\n })}\n </div>\n {'nodes' in node.value &&\n (!allowsExpansion || node.value.isExpanded) && (\n <Provider values={contextBlocker}>\n <TreeGroup\n id={node.key}\n nodes={node.children}\n types={node.value.types}\n aria-label={node.value.label}\n >\n {childrenProp}\n </TreeGroup>\n </Provider>\n )}\n </div>\n </MergeProvider>\n ),\n [\n context,\n classNames?.item?.item,\n classNames?.item?.bar,\n node,\n childrenProp,\n allowsExpansion,\n ],\n );\n\n return (\n <GridListItem\n {...rest}\n isDisabled={!!node.value.isReadOnly}\n className={classNames?.item?.container}\n style={style}\n textValue={node.value.label}\n >\n {children}\n </GridListItem>\n );\n}\n"]}
1
+ {"version":3,"sources":["../../../src/components/tree/index.tsx"],"names":["RACButtonContext"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { noop } from '@accelint/core';\nimport { usePress } from '@react-aria/interactions';\nimport { createContext, useCallback, useContext, useMemo } from 'react';\nimport {\n type ContextValue,\n DEFAULT_SLOT,\n DropIndicator,\n type DropTarget,\n GridList,\n GridListItem,\n type GridListItemRenderProps,\n type GridListRenderProps,\n Provider,\n ButtonContext as RACButtonContext,\n type ButtonProps as RACButtonProps,\n type TextProps,\n useDragAndDrop,\n} from 'react-aria-components';\nimport { useDefaultProps } from '../../hooks/use-defaults';\nimport { useTheme } from '../../hooks/use-theme';\nimport { useTree } from '../../hooks/use-tree';\nimport { bodies } from '../../styles/typography.css';\nimport { inlineVars } from '../../utils/css';\nimport { callRenderProps, mergeClassNames } from '../../utils/props';\nimport { AriaTextContext } from '../aria';\nimport { Button, ButtonContext, ToggleButtonContext } from '../button';\nimport { CheckboxContext } from '../checkbox';\nimport { GroupContext } from '../group';\nimport { Icon } from '../icon';\nimport { MergeProvider } from '../merge-provider';\nimport {\n treeClassNames,\n treeGroupStateVars,\n treeIndicatorStateVars,\n treeItemStateVars,\n treeStateVars,\n} from './tree.css';\nimport { createDragAndDropHandlers } from './utils';\nimport type { Key } from '@react-types/shared';\nimport type { ButtonProps, ToggleButtonProps } from '../button/types';\nimport type { CheckboxProps } from '../checkbox/types';\nimport type { GroupProps } from '../group/types';\nimport type {\n TreeGroupProps,\n TreeIndicatorRenderProps,\n TreeItemProps,\n TreeMapping,\n TreeProps,\n TreeStateContextValue,\n} from './types';\n\nconst emptyTree = {\n key: '',\n parentKey: '',\n children: [],\n value: { id: '', label: '' },\n};\n\nconst defaultMapping: TreeMapping = {\n actions: {\n sm: {},\n lg: {},\n },\n button: {\n sm: { size: 'sm', variant: 'icon' },\n lg: { size: 'md', variant: 'icon' },\n },\n description: {\n sm: bodies.sm,\n lg: bodies.md,\n },\n drag: {\n sm: {},\n lg: {},\n },\n expansion: {\n sm: {},\n lg: {},\n },\n visibility: {\n sm: {},\n lg: {},\n },\n};\n\nconst defaultSize = 'lg';\n\n// biome-ignore lint/suspicious/noExplicitAny: default TreeStateContext uses a generic item type\nexport const TreeStateContext = createContext<TreeStateContextValue<any>>({\n allowsDragging: true,\n allowsExpansion: true,\n allowsVisibility: false,\n lookup: {},\n selectedKeys: new Set(),\n selectionMode: 'none',\n tree: emptyTree,\n actions: {\n append: noop,\n getItem: () => emptyTree,\n insert: noop,\n insertAfter: noop,\n insertBefore: noop,\n move: noop,\n prepend: noop,\n remove: noop,\n removeSelectedItems: noop,\n revertIsExpanded: noop,\n setSelectedKeys: noop,\n toggleIsExpanded: noop,\n toggleIsSelected: noop,\n toggleIsViewable: noop,\n update: noop,\n },\n});\n\nfunction defaultRenderEmptyState({ isDropTarget }: GridListRenderProps) {\n return isDropTarget ? 'Add to this group' : 'Nothing to see here';\n}\n\n/**\n * By default Tree only works as an uncontrolled input. However, if you need to use the Tree\n * as a controlled input (passing state changes to the \"nodes\" props), you will need to add a\n * \"key\" prop that is a hash of the \"nodes\" prop to trigger a rerender of the component and\n * abandon it's previous state. Unfortunately, the underlying hooks don't provide a good way\n * to update the internal state of the Tree onces it's been initialized.\n */\nexport function Tree<T>(props: TreeProps<T>) {\n const defaultedProps = useDefaultProps(\n props as TreeProps<unknown>,\n 'Tree',\n ) as TreeProps<T>;\n\n const {\n children: childrenProp,\n allowsDragging = false,\n allowsExpansion = true,\n allowsVisibility = false,\n classNames: classNamesProps,\n disabledBehavior = 'all',\n keyboardNavigationBehavior = 'arrow',\n mapping: mappingProp,\n nodes,\n provider,\n renderDragPreview,\n renderEmptyState: renderEmptyStateProp = defaultRenderEmptyState,\n selectionBehavior = 'replace',\n selectionMode = 'none',\n showTreeLines = true,\n size = defaultSize,\n onAction,\n onScroll,\n onSelectionChange,\n onUpdate,\n ...rest\n } = defaultedProps;\n\n const state = useTree({\n allowsExpansion,\n allowsVisibility,\n nodes,\n selectionMode,\n onSelectionChange,\n onUpdate,\n });\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(treeClassNames, theme.Tree, classNamesProps, {\n item: {\n description: mapping.description[size],\n },\n }) ?? {},\n [theme.Tree, classNamesProps, mapping, size],\n );\n\n const renderEmptyState = useCallback(\n (renderProps: GridListRenderProps) => (\n <div className={classNames?.empty}>\n {renderEmptyStateProp(renderProps)}\n </div>\n ),\n [classNames?.empty, renderEmptyStateProp],\n );\n\n const context = useMemo<\n [[typeof TreeStateContext, TreeStateContextValue<T>]]\n >(\n () => [\n [\n TreeStateContext,\n {\n ...state,\n allowsDragging,\n classNames,\n disabledBehavior,\n keyboardNavigationBehavior,\n renderDragPreview,\n renderEmptyState,\n selectionBehavior,\n selectionMode,\n showTreeLines,\n size,\n onAction,\n onScroll,\n },\n ],\n ],\n [\n state,\n allowsDragging,\n classNames,\n disabledBehavior,\n keyboardNavigationBehavior,\n renderDragPreview,\n renderEmptyState,\n selectionBehavior,\n selectionMode,\n showTreeLines,\n size,\n onAction,\n onScroll,\n ],\n );\n\n const style = useMemo(\n () =>\n inlineVars(treeStateVars, {\n allowsDragging,\n allowsExpansion: state.allowsExpansion,\n allowsVisibility: state.allowsVisibility,\n showTreeLines,\n size,\n }),\n [\n allowsDragging,\n state.allowsExpansion,\n state.allowsVisibility,\n showTreeLines,\n size,\n ],\n );\n\n const children = useMemo(() => {\n const treeGroupProps = {\n ...rest,\n id: state.tree.key,\n nodes: state.tree.children,\n };\n\n return provider ? (\n callRenderProps(childrenProp, { ...state, treeGroupProps })\n ) : (\n <TreeGroup {...treeGroupProps}>{childrenProp}</TreeGroup>\n );\n // biome-ignore lint/correctness/useExhaustiveDependencies: `state` is intentionally included as a whole because it is spread into render props; listing all state fields would be brittle.\n }, [rest, provider, childrenProp, state]);\n\n return (\n <Provider values={context}>\n <div className={classNames?.tree?.container} style={style}>\n <div className={classNames?.tree?.tree}>{children}</div>\n </div>\n </Provider>\n );\n}\n\nexport function TreeGroup<T>({\n id,\n children,\n nodes,\n types = ['all'],\n ...rest\n}: TreeGroupProps<T>) {\n const {\n actions,\n allowsDragging,\n classNames,\n disabledBehavior,\n keyboardNavigationBehavior,\n lookup,\n renderDragPreview,\n renderEmptyState,\n selectedKeys,\n selectionBehavior,\n selectionMode,\n onAction,\n onScroll,\n } = useContext(TreeStateContext);\n\n const acceptedDragTypes = useMemo(\n () => types.map((type) => `tree-${type}`),\n [types],\n );\n\n // This function cannot be treated as a component and will throw errors if implemented as one (with hooks)\n const renderDropIndicator = useCallback(\n (target: DropTarget) => (\n <DropIndicator\n className={classNames?.indicator?.container}\n // eslint-disable-next-line react-perf/jsx-no-new-function-as-prop, react/jsx-no-bind\n style={(renderProps: TreeIndicatorRenderProps) =>\n inlineVars(treeIndicatorStateVars, {\n ...renderProps,\n dropPosition:\n 'dropPosition' in target ? target.dropPosition : 'root',\n })\n }\n target={target}\n >\n <div className={classNames?.indicator?.indicator} />\n </DropIndicator>\n ),\n [classNames?.indicator?.container, classNames?.indicator?.indicator],\n );\n\n const { dragAndDropHooks } = useDragAndDrop({\n isDisabled: !allowsDragging,\n renderDragPreview,\n renderDropIndicator,\n ...createDragAndDropHandlers(id, acceptedDragTypes, lookup, actions),\n });\n\n const style = useCallback(\n (renderProps: GridListRenderProps) =>\n inlineVars(treeGroupStateVars, { ...renderProps, count: nodes.length }),\n [nodes.length],\n );\n\n const indices = useMemo(\n () =>\n nodes.reduce<Record<Key, number>>((acc, node, index) => {\n acc[node.key] = index;\n\n return acc;\n }, {}),\n [nodes],\n );\n\n return (\n <GridList\n {...rest}\n className={classNames?.group}\n disabledBehavior={disabledBehavior}\n dragAndDropHooks={dragAndDropHooks}\n items={nodes}\n keyboardNavigationBehavior={keyboardNavigationBehavior}\n renderEmptyState={renderEmptyState}\n selectedKeys={selectedKeys}\n selectionBehavior={selectionBehavior}\n selectionMode={selectionMode}\n style={style}\n onAction={onAction}\n onScroll={onScroll}\n >\n {(item) => (\n <TreeItem\n index={indices[item.key] ?? -1}\n node={item}\n isFirstChild={indices[item.key] === 0}\n isLastChild={indices[item.key] === nodes.length - 1}\n >\n {children}\n </TreeItem>\n )}\n </GridList>\n );\n}\n\ntype TreeItemContexts = [\n [\n typeof ToggleButtonContext,\n ContextValue<ToggleButtonProps, HTMLButtonElement>,\n ],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLSpanElement>],\n [\n typeof GroupContext,\n ContextValue<GroupProps<ButtonProps, HTMLButtonElement>, HTMLDivElement>,\n ],\n [typeof CheckboxContext, ContextValue<CheckboxProps, HTMLLabelElement>],\n [typeof ButtonContext, ContextValue<ButtonProps, HTMLButtonElement>],\n [typeof RACButtonContext, ContextValue<RACButtonProps, HTMLButtonElement>],\n];\n\nconst contextBlocker: TreeItemContexts = [\n [ToggleButtonContext, null],\n [AriaTextContext, null],\n [GroupContext, null],\n [CheckboxContext, null],\n [ButtonContext, null],\n [RACButtonContext, null],\n];\n\nexport function TreeItem<T>({\n children: childrenProp,\n index,\n mapping: mappingProp,\n node,\n isFirstChild,\n isLastChild,\n ...rest\n}: TreeItemProps<T>) {\n const {\n actions,\n allowsExpansion,\n classNames,\n size: sizeProp,\n } = useContext(TreeStateContext);\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const selection = useMemo(() => new Set([node.key]), [node.key]);\n\n const handleToggleExpansion = useCallback(\n () => actions.toggleIsExpanded(selection),\n [actions, selection],\n );\n\n const handleToggleSelection = useCallback(\n () => actions.toggleIsSelected(selection),\n [actions, selection],\n );\n\n const handleToggleVisibility = useCallback(\n () => actions.toggleIsViewable(selection),\n [actions, selection],\n );\n\n const { pressProps } = usePress({\n onPress: handleToggleExpansion,\n });\n\n const style = useCallback(\n (renderProps: GridListItemRenderProps) =>\n inlineVars(treeItemStateVars, {\n ...renderProps,\n count: node.children.length,\n index,\n isExpanded: 'nodes' in node.value ? !!node.value.isExpanded : false,\n isFirstChild,\n isGroup: 'nodes' in node.value,\n isLastChild,\n isViewable: !!node.value.isViewable,\n isVisible: !!node.value.isVisible,\n isReadOnly: !!node.value.isReadOnly,\n }),\n [node.children.length, node.value, index, isFirstChild, isLastChild],\n );\n\n const context = useMemo<TreeItemContexts>(() => {\n const size = sizeProp ?? defaultSize;\n const buttonProps = mapping.button[size] ?? {};\n\n return [\n [\n ToggleButtonContext,\n {\n slots: {\n [DEFAULT_SLOT]: buttonProps,\n expansion: {\n ...buttonProps,\n ...mapping.expansion[size],\n classNames: classNames?.item?.expansion,\n isSelected:\n 'nodes' in node.value ? !!node.value.isExpanded : undefined,\n onPress: handleToggleExpansion,\n },\n visibility: {\n ...buttonProps,\n ...mapping.visibility[size],\n classNames: classNames?.item?.visibility,\n isSelected: !!node.value.isViewable,\n isDisabled: !!node.value.isReadOnly,\n onPress: handleToggleVisibility,\n },\n },\n },\n ],\n [\n AriaTextContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n description: {\n ...('nodes' in node.value ? pressProps : {}),\n className: classNames?.item?.description,\n children: node.value.label,\n },\n },\n },\n ],\n [\n GroupContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n actions: {\n classNames: classNames?.item?.actions,\n context: ButtonContext,\n values: buttonProps,\n },\n },\n },\n ],\n [\n CheckboxContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n selection: {\n classNames: classNames?.item?.selection,\n onChange: handleToggleSelection,\n },\n },\n },\n ],\n [\n ButtonContext,\n {\n slots: {\n [DEFAULT_SLOT]: buttonProps,\n drag: {\n ...buttonProps,\n ...mapping.drag[size],\n classNames: classNames?.item?.drag,\n },\n // We use a non-interactive Button for the lines to try and simplify the\n // consistent use of space when rendered in alignment with other Buttons\n lines: {\n ...buttonProps,\n classNames: classNames?.item?.lines,\n isDisabled: true,\n },\n },\n },\n ],\n // Need to expand the RAC ButtonContext to allow for additional slots\n [RACButtonContext, { slots: { [DEFAULT_SLOT]: {}, lines: {} } }],\n ] as TreeItemContexts;\n }, [\n classNames?.item?.lines,\n classNames?.item?.expansion,\n classNames?.item?.visibility,\n classNames?.item?.description,\n classNames?.item?.actions,\n classNames?.item?.selection,\n classNames?.item?.drag,\n mapping,\n node,\n pressProps,\n sizeProp,\n handleToggleExpansion,\n handleToggleSelection,\n handleToggleVisibility,\n ]);\n\n /**\n * We need to block the above contexts from being passed into the TreeGroup\n * so that each TreeItem has a distinct context. We only use MergeProvider\n * for the above contexts because the GridListItem provides contexts that\n * we need to merge with\n */\n const children = useCallback(\n (renderProps: GridListItemRenderProps) => (\n <MergeProvider values={context}>\n <div className={classNames?.item?.item}>\n {node.parentKey && (\n <Button slot='lines'>\n <Icon />\n </Button>\n )}\n <div className={classNames?.item?.bar}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n node,\n })}\n </div>\n {'nodes' in node.value &&\n (!allowsExpansion || node.value.isExpanded) && (\n <Provider values={contextBlocker}>\n <TreeGroup\n id={node.key}\n nodes={node.children}\n types={node.value.types}\n aria-label={node.value.label}\n >\n {childrenProp}\n </TreeGroup>\n </Provider>\n )}\n </div>\n </MergeProvider>\n ),\n [\n context,\n classNames?.item?.item,\n classNames?.item?.bar,\n node,\n childrenProp,\n allowsExpansion,\n ],\n );\n\n return (\n <GridListItem\n {...rest}\n isDisabled={!!node.value.isReadOnly}\n className={classNames?.item?.container}\n style={style}\n textValue={node.value.label}\n >\n {children}\n </GridListItem>\n );\n}\n"]}
@@ -12,6 +12,14 @@ import '@react-types/shared';
12
12
  import 'react';
13
13
  import 'react-aria-components';
14
14
  import 'react/jsx-runtime';
15
+ import '../types/generic.js';
16
+ import '@react-aria/interactions';
17
+ import '../utils/css/index.js';
18
+ import '@vanilla-extract/css';
19
+ import '../types/deckgl.js';
20
+ import '../types/vanilla-extract.js';
21
+ import '../types/use-tree.js';
22
+ import '@react-stately/data';
15
23
  import '../components/button/types.js';
16
24
  import '../types/props.js';
17
25
  import '../types/react-aria.js';
@@ -19,7 +27,6 @@ import '../components/icon/types.js';
19
27
  import '../components/checkbox/types.js';
20
28
  import 'type-fest';
21
29
  import '../components/chip/types.js';
22
- import '../types/generic.js';
23
30
  import '../components/combo-box/types.js';
24
31
  import '../components/input/types.js';
25
32
  import '../components/options/types.js';
@@ -37,21 +44,14 @@ import '../components/number-field/types.js';
37
44
  import '../components/picker/types.js';
38
45
  import '../components/popover/types.js';
39
46
  import '../components/radio/types.js';
40
- import '../components/select/types.js';
41
- import '../components/switch/types.js';
42
- import '../components/textarea/types.js';
43
47
  import '../components/search-field/types.js';
48
+ import '../components/select/types.js';
44
49
  import '../components/slider/types.js';
50
+ import '../components/switch/types.js';
45
51
  import '../components/text-field/types.js';
52
+ import '../components/textarea/types.js';
46
53
  import '../components/time-field/types.js';
47
54
  import '../components/tooltip/types.js';
48
55
  import '../components/tree/types.js';
49
- import '../types/use-tree.js';
50
- import '@react-stately/data';
51
- import '@react-aria/interactions';
52
- import '../utils/css/index.js';
53
- import '@vanilla-extract/css';
54
- import '../types/deckgl.js';
55
- import '../types/vanilla-extract.js';
56
56
  import '../components/query-builder/types.js';
57
57
  import 'react-querybuilder';
@@ -6,6 +6,6 @@ import { ReactNode } from 'react';
6
6
  *
7
7
  * Hook serves as the basis of the root and branch renderers for Collections: https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/src/Collection.tsx#L139
8
8
  */
9
- declare function useCollectionRender(collection: Collection<Node<unknown>>, parent: Node<unknown> | null, renderDropIndicator?: (target: ItemDropTarget) => ReactNode): ReactNode;
9
+ declare function useCollectionRender<T = object>(collection: Collection<Node<T>>, parent: Node<T> | null, renderDropIndicator?: (target: ItemDropTarget) => ReactNode): ReactNode;
10
10
 
11
11
  export { useCollectionRender };
@@ -4,11 +4,10 @@ import { jsxs, Fragment } from 'react/jsx-runtime';
4
4
 
5
5
  function useCollectionRender(collection, parent, renderDropIndicator) {
6
6
  return useCachedChildren({
7
- // biome-ignore lint/style/noNonNullAssertion: intentional
8
- items: parent ? collection.getChildren(parent.key) : collection,
7
+ items: parent ? collection.getChildren?.(parent.key) ?? [] : collection,
9
8
  dependencies: [renderDropIndicator],
10
9
  children(node) {
11
- const rendered = node.render(node);
10
+ const rendered = node.render?.(node);
12
11
  if (!renderDropIndicator || node.type !== "item") {
13
12
  return rendered;
14
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/use-collection-render/index.tsx"],"names":[],"mappings":";;;;AAqBO,SAAS,mBAAA,CACd,UAAA,EACA,MAAA,EACA,mBAAA,EACA;AACA,EAAA,OAAO,iBAAA,CAAkB;AAAA;AAAA,IAEvB,OAAO,MAAA,GAAS,UAAA,CAAW,WAAA,CAAa,MAAA,CAAO,GAAG,CAAA,GAAI,UAAA;AAAA,IACtD,YAAA,EAAc,CAAC,mBAAmB,CAAA;AAAA,IAClC,SAAS,IAAA,EAAM;AAEb,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAQ,IAAI,CAAA;AAElC,MAAA,IAAI,CAAC,mBAAA,IAAuB,IAAA,CAAK,IAAA,KAAS,MAAA,EAAQ;AAChD,QAAA,OAAO,QAAA;AAAA,MACT;AAEA,MAAA,MAAM,EAAE,KAAI,GAAI,IAAA;AAChB,MAAA,MAAM,QAAA,GAAW,UAAA,CAAW,WAAA,CAAY,GAAG,CAAA;AAE3C,MAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,mBAAA,CAAoB,EAAE,IAAA,EAAM,MAAA,EAAQ,GAAA,EAAK,YAAA,EAAc,UAAU,CAAA;AAAA,QACjE,QAAA;AAAA,QAAA,CACC,QAAA,IAAY,IAAA,IACZ,UAAA,CAAW,OAAA,CAAQ,QAAQ,CAAA,EAAG,IAAA,KAAS,MAAA,KACvC,mBAAA,CAAoB,EAAE,IAAA,EAAM,MAAA,EAAQ,GAAA,EAAK,YAAA,EAAc,SAAS;AAAA,OAAA,EACpE,CAAA;AAAA,IAEJ;AAAA,GACD,CAAA;AACH","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { useCachedChildren } from '@react-aria/collections';\nimport type { Collection, ItemDropTarget, Node } from '@react-types/shared';\nimport type { ReactNode } from 'react';\n\n/**\n * Copied from RAC, unexported hook: https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/src/Collection.tsx#L148\n *\n * Hook serves as the basis of the root and branch renderers for Collections: https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/src/Collection.tsx#L139\n */\nexport function useCollectionRender(\n collection: Collection<Node<unknown>>,\n parent: Node<unknown> | null,\n renderDropIndicator?: (target: ItemDropTarget) => ReactNode,\n) {\n return useCachedChildren({\n // biome-ignore lint/style/noNonNullAssertion: intentional\n items: parent ? collection.getChildren!(parent.key) : collection,\n dependencies: [renderDropIndicator],\n children(node) {\n // biome-ignore lint/style/noNonNullAssertion: intentional\n const rendered = node.render!(node);\n\n if (!renderDropIndicator || node.type !== 'item') {\n return rendered;\n }\n\n const { key } = node;\n const keyAfter = collection.getKeyAfter(key);\n\n return (\n <>\n {renderDropIndicator({ type: 'item', key, dropPosition: 'before' })}\n {rendered}\n {(keyAfter == null ||\n collection.getItem(keyAfter)?.type !== 'item') &&\n renderDropIndicator({ type: 'item', key, dropPosition: 'after' })}\n </>\n );\n },\n });\n}\n"]}
1
+ {"version":3,"sources":["../../../src/hooks/use-collection-render/index.tsx"],"names":[],"mappings":";;;;AAsBO,SAAS,mBAAA,CACd,UAAA,EACA,MAAA,EACA,mBAAA,EACA;AACA,EAAA,OAAO,iBAAA,CAAkB;AAAA,IACvB,KAAA,EAAO,SAAU,UAAA,CAAW,WAAA,GAAc,OAAO,GAAG,CAAA,IAAK,EAAC,GAAK,UAAA;AAAA,IAC/D,YAAA,EAAc,CAAC,mBAAmB,CAAA;AAAA,IAClC,SAAS,IAAA,EAAM;AACb,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,GAAS,IAAI,CAAA;AACnC,MAAA,IAAI,CAAC,mBAAA,IAAuB,IAAA,CAAK,IAAA,KAAS,MAAA,EAAQ;AAChD,QAAA,OAAO,QAAA;AAAA,MACT;AAEA,MAAA,MAAM,EAAE,KAAI,GAAI,IAAA;AAChB,MAAA,MAAM,QAAA,GAAW,UAAA,CAAW,WAAA,CAAY,GAAG,CAAA;AAE3C,MAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,mBAAA,CAAoB,EAAE,IAAA,EAAM,MAAA,EAAQ,GAAA,EAAK,YAAA,EAAc,UAAU,CAAA;AAAA,QACjE,QAAA;AAAA,QAAA,CACC,QAAA,IAAY,IAAA,IACZ,UAAA,CAAW,OAAA,CAAQ,QAAQ,CAAA,EAAG,IAAA,KAAS,MAAA,KACvC,mBAAA,CAAoB,EAAE,IAAA,EAAM,MAAA,EAAQ,GAAA,EAAK,YAAA,EAAc,SAAS;AAAA,OAAA,EACpE,CAAA;AAAA,IAEJ;AAAA,GACD,CAAA;AACH","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { useCachedChildren } from '@react-aria/collections';\nimport type { Collection, ItemDropTarget, Node } from '@react-types/shared';\nimport type { ReactNode } from 'react';\n\n/**\n * Copied from RAC, unexported hook: https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/src/Collection.tsx#L148\n *\n * Hook serves as the basis of the root and branch renderers for Collections: https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/src/Collection.tsx#L139\n */\n\nexport function useCollectionRender<T = object>(\n collection: Collection<Node<T>>,\n parent: Node<T> | null,\n renderDropIndicator?: (target: ItemDropTarget) => ReactNode,\n) {\n return useCachedChildren({\n items: parent ? (collection.getChildren?.(parent.key) ?? []) : collection,\n dependencies: [renderDropIndicator],\n children(node) {\n const rendered = node.render?.(node);\n if (!renderDropIndicator || node.type !== 'item') {\n return rendered;\n }\n\n const { key } = node;\n const keyAfter = collection.getKeyAfter(key);\n\n return (\n <>\n {renderDropIndicator({ type: 'item', key, dropPosition: 'before' })}\n {rendered}\n {(keyAfter == null ||\n collection.getItem(keyAfter)?.type !== 'item') &&\n renderDropIndicator({ type: 'item', key, dropPosition: 'after' })}\n </>\n );\n },\n });\n}\n"]}