@accelint/design-system 0.4.0 → 0.5.1

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 (131) hide show
  1. package/README.md +12 -12
  2. package/dist/components/aria/aria.js.map +1 -1
  3. package/dist/components/button/button.d.ts +1 -1
  4. package/dist/components/button/button.js +1 -1
  5. package/dist/components/button/button.js.map +1 -1
  6. package/dist/components/button/types.d.ts +1 -1
  7. package/dist/components/checkbox/checkbox.d.ts +1 -1
  8. package/dist/components/checkbox/checkbox.js.map +1 -1
  9. package/dist/components/chip/chip.d.ts +1 -1
  10. package/dist/components/chip/chip.js.map +1 -1
  11. package/dist/components/chip/types.d.ts +1 -1
  12. package/dist/components/collection/collection.js.map +1 -1
  13. package/dist/components/combo-box/combo-box.d.ts +1 -1
  14. package/dist/components/combo-box/combo-box.js.map +1 -1
  15. package/dist/components/combo-box/types.d.ts +1 -1
  16. package/dist/components/dialog/dialog.d.ts +1 -1
  17. package/dist/components/dialog/dialog.js.map +1 -1
  18. package/dist/components/dialog/types.d.ts +1 -1
  19. package/dist/components/drawer/drawer.d.ts +1 -1
  20. package/dist/components/drawer/drawer.js +4 -3
  21. package/dist/components/drawer/drawer.js.map +1 -1
  22. package/dist/components/drawer/types.d.ts +2 -2
  23. package/dist/components/element/element.js.map +1 -1
  24. package/dist/components/group/group.d.ts +1 -1
  25. package/dist/components/group/group.js.map +1 -1
  26. package/dist/components/group/types.d.ts +1 -1
  27. package/dist/components/icon/icon.d.ts +1 -1
  28. package/dist/components/icon/types.d.ts +1 -1
  29. package/dist/components/input/input.css.d.ts +1 -1
  30. package/dist/components/input/input.d.ts +4 -4
  31. package/dist/components/input/input.js +3 -3
  32. package/dist/components/input/input.js.map +1 -1
  33. package/dist/components/input/types.d.ts +1 -1
  34. package/dist/components/menu/index.d.ts +1 -1
  35. package/dist/components/menu/menu.css.d.ts +1 -1
  36. package/dist/components/menu/menu.d.ts +2 -2
  37. package/dist/components/menu/menu.js.map +1 -1
  38. package/dist/components/menu/types.d.ts +2 -2
  39. package/dist/components/merge-provider/merge-provider.js +2 -2
  40. package/dist/components/merge-provider/merge-provider.js.map +1 -1
  41. package/dist/components/number-field/number-field.d.ts +1 -1
  42. package/dist/components/number-field/types.d.ts +1 -1
  43. package/dist/components/options/index.d.ts +1 -1
  44. package/dist/components/options/options.css.d.ts +1 -1
  45. package/dist/components/options/options.d.ts +2 -2
  46. package/dist/components/options/options.js.map +1 -1
  47. package/dist/components/options/types.d.ts +2 -2
  48. package/dist/components/picker/picker.d.ts +1 -1
  49. package/dist/components/picker/picker.js +2 -2
  50. package/dist/components/picker/picker.js.map +1 -1
  51. package/dist/components/picker/types.d.ts +1 -1
  52. package/dist/components/popover/popover.d.ts +1 -1
  53. package/dist/components/popover/popover.js +2 -2
  54. package/dist/components/popover/popover.js.map +1 -1
  55. package/dist/components/query-builder/dataset-sample.js +8 -24
  56. package/dist/components/query-builder/dataset-sample.js.map +1 -1
  57. package/dist/components/query-builder/group.js +1 -1
  58. package/dist/components/query-builder/group.js.map +1 -1
  59. package/dist/components/query-builder/query-builder.js +2 -2
  60. package/dist/components/query-builder/query-builder.js.map +1 -1
  61. package/dist/components/query-builder/rule.js.map +1 -1
  62. package/dist/components/query-builder/types.d.ts +3 -3
  63. package/dist/components/query-builder/utils.d.ts +1 -1
  64. package/dist/components/query-builder/utils.js.map +1 -1
  65. package/dist/components/query-builder/value-editor.js +1 -1
  66. package/dist/components/query-builder/value-editor.js.map +1 -1
  67. package/dist/components/query-builder/value-selector.js.map +1 -1
  68. package/dist/components/radio/radio.d.ts +1 -1
  69. package/dist/components/radio/radio.js.map +1 -1
  70. package/dist/components/radio/types.d.ts +1 -1
  71. package/dist/components/search-field/index.d.ts +1 -1
  72. package/dist/components/search-field/search-field.d.ts +1 -1
  73. package/dist/components/search-field/types.d.ts +1 -1
  74. package/dist/components/select/select.d.ts +1 -1
  75. package/dist/components/select/select.js.map +1 -1
  76. package/dist/components/switch/switch.d.ts +1 -1
  77. package/dist/components/tabs/tabs.css.d.ts +2 -2
  78. package/dist/components/tabs/tabs.d.ts +1 -1
  79. package/dist/components/tabs/tabs.js +2 -2
  80. package/dist/components/tabs/tabs.js.map +1 -1
  81. package/dist/components/tabs/types.d.ts +3 -3
  82. package/dist/components/text-field/text-field.d.ts +5 -4
  83. package/dist/components/text-field/types.d.ts +1 -1
  84. package/dist/components/textarea/textarea.css.d.ts +1 -1
  85. package/dist/components/textarea/textarea.d.ts +4 -4
  86. package/dist/components/textarea/textarea.js +5 -5
  87. package/dist/components/textarea/textarea.js.map +1 -1
  88. package/dist/components/textarea/types.d.ts +2 -2
  89. package/dist/components/tooltip/tooltip.d.ts +2 -2
  90. package/dist/components/tooltip/tooltip.js +3 -3
  91. package/dist/components/tooltip/tooltip.js.map +1 -1
  92. package/dist/components/tooltip/types.d.ts +1 -1
  93. package/dist/components/tree/tree.css.d.ts +1 -0
  94. package/dist/components/tree/tree.css.js +2 -2
  95. package/dist/components/tree/tree.css.js.map +1 -1
  96. package/dist/components/tree/tree.d.ts +1 -1
  97. package/dist/components/tree/tree.js +5 -2
  98. package/dist/components/tree/tree.js.map +1 -1
  99. package/dist/components/tree/types.d.ts +4 -4
  100. package/dist/components/tree/utils.js.map +1 -1
  101. package/dist/hooks/use-collection-render/use-collection-render.js +1 -0
  102. package/dist/hooks/use-collection-render/use-collection-render.js.map +1 -1
  103. package/dist/hooks/use-defaults/use-defaults.d.ts +1 -1
  104. package/dist/hooks/use-slot/use-slot.js +3 -3
  105. package/dist/hooks/use-slot/use-slot.js.map +1 -1
  106. package/dist/hooks/use-theme/types.d.ts +1 -1
  107. package/dist/hooks/use-theme/use-theme.d.ts +18 -1
  108. package/dist/hooks/use-theme/use-theme.js.map +1 -1
  109. package/dist/hooks/use-tree/index.d.ts +1 -1
  110. package/dist/hooks/use-tree/use-tree.d.ts +1 -1
  111. package/dist/hooks/use-tree/use-tree.js +10 -5
  112. package/dist/hooks/use-tree/use-tree.js.map +1 -1
  113. package/dist/hooks/use-tree/utils.d.ts +1 -1
  114. package/dist/hooks/use-tree/utils.js +3 -4
  115. package/dist/hooks/use-tree/utils.js.map +1 -1
  116. package/dist/index.css +34 -31
  117. package/dist/ladle/actions.js.map +1 -1
  118. package/dist/test/setup.js +347 -331
  119. package/dist/test/setup.js.map +1 -1
  120. package/dist/types/index.d.ts +1 -1
  121. package/dist/types/react-aria.d.ts +1 -1
  122. package/dist/types/react.d.d.ts +16 -0
  123. package/dist/types/use-tree.d.ts +2 -1
  124. package/dist/utils/css.d.ts +2 -2
  125. package/dist/utils/css.js +5 -5
  126. package/dist/utils/css.js.map +1 -1
  127. package/dist/utils/props.js +5 -6
  128. package/dist/utils/props.js.map +1 -1
  129. package/dist/utils/validators.d.ts +2 -2
  130. package/dist/utils/validators.js.map +1 -1
  131. package/package.json +59 -56
@@ -1,8 +1,8 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
- import { createContext, forwardRef, useMemo, useCallback } from 'react';
3
2
  import { useFocusable } from '@react-aria/focus';
4
- import { useContextProps, Tooltip as Tooltip$1 } from 'react-aria-components';
5
- import { useDefaultProps, useTheme } from '../../hooks/index.js';
3
+ import { createContext, forwardRef, useMemo, useCallback } from 'react';
4
+ import { Tooltip as Tooltip$1 } from 'react-aria-components';
5
+ import { useContextProps, useDefaultProps, useTheme } from '../../hooks/index.js';
6
6
  import { bodies } from '../../styles/index.js';
7
7
  import { mergeClassNames, inlineVars, callRenderProps } from '../../utils/index.js';
8
8
  import { tooltipClassNames, tooltipStateVars, tooltipTargetStateVars } from './tooltip.css.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/tooltip/tooltip.tsx"],"names":["Tooltip","RACTooltip","TooltipTarget"],"mappings":"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","file":"tooltip.js","sourcesContent":["import {\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport { useFocusable } from '@react-aria/focus';\nimport {\n type ContextValue,\n Tooltip as RACTooltip,\n type TooltipRenderProps,\n useContextProps,\n} from 'react-aria-components';\nimport { useDefaultProps, useTheme } from '../../hooks';\nimport { bodies } from '../../styles';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport {\n tooltipClassNames,\n tooltipStateVars,\n tooltipTargetStateVars,\n} from './tooltip.css';\nimport type { TooltipMapping, TooltipProps, TooltipTargetProps } from './types';\n\nconst defaultMapping: TooltipMapping = {\n font: bodies.xs,\n};\n\nexport const TooltipContext =\n createContext<ContextValue<TooltipProps, HTMLDivElement>>(null);\n\nexport const Tooltip = forwardRef(function Tooltip(\n props: TooltipProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n\n props = useDefaultProps(props, 'Tooltip');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n containerPadding,\n crossOffset,\n mapping: mappingProp,\n offset,\n ...rest\n } = props;\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(tooltipClassNames, theme.Tooltip, classNamesProp, {\n tooltip: {\n container: theme.className,\n tooltip: mapping.font,\n },\n }),\n [theme.Tooltip, classNamesProp, theme.className, mapping],\n );\n\n const style = useCallback(\n ({ state, ...renderProps }: TooltipRenderProps) => ({\n ...theme.style,\n ...inlineVars(tooltipStateVars, {\n containerPadding,\n crossOffset,\n offset,\n ...renderProps,\n isOpen: state.isOpen,\n }),\n }),\n [theme.style, containerPadding, crossOffset, offset],\n );\n\n const children = useCallback(\n (renderProps: TooltipRenderProps) => (\n <div className={classNames?.tooltip?.tooltip}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n isOpen: renderProps.state.isOpen,\n })}\n </div>\n ),\n [classNames?.tooltip?.tooltip, childrenProp],\n );\n\n return (\n <RACTooltip\n {...rest}\n ref={ref}\n className={classNames?.tooltip?.container}\n style={style}\n >\n {children}\n </RACTooltip>\n );\n});\n\nexport const TooltipTargetContext =\n createContext<ContextValue<TooltipTargetProps, HTMLDivElement>>(null);\n\n/**\n * This target component is only needed if attempting to add a Tooltip\n * to a non-focusable element/component\n */\nexport const TooltipTarget = forwardRef(function TooltipTarget(\n props: TooltipTargetProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, TooltipTargetContext);\n\n props = useDefaultProps(props, 'TooltipTarget');\n\n const {\n children,\n classNames: classNamesProp,\n focusable = true,\n relative = 'self',\n } = props;\n\n const { focusableProps } = useFocusable({}, ref);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(tooltipClassNames, theme.Tooltip, classNamesProp),\n [theme.Tooltip, classNamesProp],\n );\n\n const style = useMemo(\n () =>\n inlineVars(tooltipTargetStateVars, {\n focusable,\n relative,\n }),\n [focusable, relative],\n );\n\n return (\n <div className={classNames?.target?.container} style={style}>\n <div\n {...focusableProps}\n ref={ref}\n className={classNames?.target?.target}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={focusable ? 0 : undefined}\n >\n {children}\n </div>\n </div>\n );\n});\n"]}
1
+ {"version":3,"sources":["../../../src/components/tooltip/tooltip.tsx"],"names":["Tooltip","RACTooltip","TooltipTarget"],"mappings":"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","file":"tooltip.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 { useFocusable } from '@react-aria/focus';\nimport {\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ContextValue,\n Tooltip as RACTooltip,\n type TooltipRenderProps,\n} from 'react-aria-components';\nimport { useContextProps, useDefaultProps, useTheme } from '../../hooks';\nimport { bodies } from '../../styles';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport {\n tooltipClassNames,\n tooltipStateVars,\n tooltipTargetStateVars,\n} from './tooltip.css';\nimport type { TooltipMapping, TooltipProps, TooltipTargetProps } from './types';\n\nconst defaultMapping: TooltipMapping = {\n font: bodies.xs,\n};\n\nexport const TooltipContext =\n createContext<ContextValue<TooltipProps, HTMLDivElement>>(null);\n\nexport const Tooltip = forwardRef(function Tooltip(\n props: TooltipProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, TooltipContext);\n\n props = useDefaultProps(props, 'Tooltip');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n containerPadding,\n crossOffset,\n mapping: mappingProp,\n offset,\n ...rest\n } = props;\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(tooltipClassNames, theme.Tooltip, classNamesProp, {\n tooltip: {\n container: theme.className,\n tooltip: mapping.font,\n },\n }),\n [theme.Tooltip, classNamesProp, theme.className, mapping],\n );\n\n const style = useCallback(\n ({ state, ...renderProps }: TooltipRenderProps) => ({\n ...theme.style,\n ...inlineVars(tooltipStateVars, {\n containerPadding,\n crossOffset,\n offset,\n ...renderProps,\n isOpen: state.isOpen,\n }),\n }),\n [theme.style, containerPadding, crossOffset, offset],\n );\n\n const children = useCallback(\n (renderProps: TooltipRenderProps) => (\n <div className={classNames?.tooltip?.tooltip}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n isOpen: renderProps.state.isOpen,\n })}\n </div>\n ),\n [classNames?.tooltip?.tooltip, childrenProp],\n );\n\n return (\n <RACTooltip\n {...rest}\n ref={ref}\n className={classNames?.tooltip?.container}\n style={style}\n >\n {children}\n </RACTooltip>\n );\n});\n\nexport const TooltipTargetContext =\n createContext<ContextValue<TooltipTargetProps, HTMLDivElement>>(null);\n\n/**\n * This target component is only needed if attempting to add a Tooltip\n * to a non-focusable element/component\n */\nexport const TooltipTarget = forwardRef(function TooltipTarget(\n props: TooltipTargetProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, TooltipTargetContext);\n\n props = useDefaultProps(props, 'TooltipTarget');\n\n const {\n children,\n classNames: classNamesProp,\n focusable = true,\n relative = 'self',\n } = props;\n\n const { focusableProps } = useFocusable({}, ref);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(tooltipClassNames, theme.Tooltip, classNamesProp),\n [theme.Tooltip, classNamesProp],\n );\n\n const style = useMemo(\n () =>\n inlineVars(tooltipTargetStateVars, {\n focusable,\n relative,\n }),\n [focusable, relative],\n );\n\n return (\n <div className={classNames?.target?.container} style={style}>\n <div\n {...focusableProps}\n ref={ref}\n className={classNames?.target?.target}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={focusable ? 0 : undefined}\n >\n {children}\n </div>\n </div>\n );\n});\n"]}
@@ -35,7 +35,7 @@ type BaseTooltipTargetProps = BaseProps & {
35
35
  };
36
36
  type TooltipState = Omit<TooltipRenderProps, 'state'> & Required<Pick<TooltipProps$1, 'containerPadding' | 'crossOffset' | 'offset'>>;
37
37
  type TooltipTargetState = Required<Pick<BaseTooltipTargetProps, 'focusable' | 'relative'>>;
38
- type TooltipProps = Omit<TooltipProps$1, 'className' | 'style' | 'UNSTABLE_portalContainer'> & BaseTooltipProps;
38
+ type TooltipProps = Omit<TooltipProps$1, 'children' | 'className' | 'style' | 'UNSTABLE_portalContainer'> & BaseTooltipProps;
39
39
  type TooltipTargetProps = PropsWithChildren<BaseTooltipTargetProps>;
40
40
 
41
41
  export type { TooltipClassNames, TooltipMapping, TooltipProps, TooltipRenderProps, TooltipState, TooltipTargetProps, TooltipTargetState };
@@ -80,6 +80,7 @@ declare const treeItemStateVars: {
80
80
  isHovered: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
81
81
  isLastChild: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
82
82
  isPressed: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
83
+ isReadOnly: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
83
84
  isSelected: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
84
85
  isViewable: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
85
86
  isVisible: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
@@ -1,12 +1,12 @@
1
1
  import '../../chunk-PZ5AY32C.js';
2
2
 
3
3
  // src/components/tree/tree.css.ts
4
- var treeClassNames = { tree: { container: "tree_treeClassNames_tree_container__kbtjn31b" }, empty: "tree_treeClassNames_empty__kbtjn31c", group: "tree_treeClassNames_group__kbtjn31d", indicator: { indicator: "tree_treeClassNames_indicator_indicator__kbtjn31e" }, item: { container: "tree_treeClassNames_item_container__kbtjn31f", item: "tree_treeClassNames_item_item__kbtjn31g", bar: "tree_treeClassNames_item_bar__kbtjn31h", lines: { container: "tree_treeClassNames_item_lines_container__kbtjn31i", button: "tree_treeClassNames_item_lines_button__kbtjn31j" }, visibility: { container: "tree_treeClassNames_item_visibility_container__kbtjn31k" }, expansion: { container: "tree_treeClassNames_item_expansion_container__kbtjn31l" }, description: "tree_treeClassNames_item_description__kbtjn31m", actions: { container: "tree_treeClassNames_item_actions_container__kbtjn31n" }, selection: { checkbox: { container: "tree_treeClassNames_item_selection_checkbox_container__kbtjn31o" } }, drag: { container: "tree_treeClassNames_item_drag_container__kbtjn31p" } } };
4
+ var treeClassNames = { tree: { container: "tree_treeClassNames_tree_container__kbtjn31c" }, empty: "tree_treeClassNames_empty__kbtjn31d", group: "tree_treeClassNames_group__kbtjn31e", indicator: { indicator: "tree_treeClassNames_indicator_indicator__kbtjn31f" }, item: { container: "tree_treeClassNames_item_container__kbtjn31g", item: "tree_treeClassNames_item_item__kbtjn31h", bar: "tree_treeClassNames_item_bar__kbtjn31i", lines: { container: "tree_treeClassNames_item_lines_container__kbtjn31j", button: "tree_treeClassNames_item_lines_button__kbtjn31k" }, visibility: { container: "tree_treeClassNames_item_visibility_container__kbtjn31l" }, expansion: { container: "tree_treeClassNames_item_expansion_container__kbtjn31m" }, description: "tree_treeClassNames_item_description__kbtjn31n", actions: { container: "tree_treeClassNames_item_actions_container__kbtjn31o" }, selection: { checkbox: { container: "tree_treeClassNames_item_selection_checkbox_container__kbtjn31p" } }, drag: { container: "tree_treeClassNames_item_drag_container__kbtjn31q" } } };
5
5
  var treeColorVars = { bar: { background: "var(--bar-background__kbtjn33)", border: "var(--bar-border__kbtjn34)", color: "var(--bar-color__kbtjn35)" }, indicator: { background: "var(--indicator-background__kbtjn36)", border: "var(--indicator-border__kbtjn37)", color: "var(--indicator-color__kbtjn38)" } };
6
6
  var treeContainers = { tree: "tree_treeContainers_tree__kbtjn30", group: "tree_treeContainers_group__kbtjn31", item: "tree_treeContainers_item__kbtjn32" };
7
7
  var treeGroupStateVars = { count: "var(--count__kbtjn3k)", layout: "var(--layout__kbtjn3l)", isDropTarget: "var(--isDropTarget__kbtjn3m)", isEmpty: "var(--isEmpty__kbtjn3n)", isFocused: "var(--isFocused__kbtjn3o)", isFocusVisible: "var(--isFocusVisible__kbtjn3p)" };
8
8
  var treeIndicatorStateVars = { dropPosition: "var(--dropPosition__kbtjn3q)", isDropTarget: "var(--isDropTarget__kbtjn3r)" };
9
- var treeItemStateVars = { allowsDragging: "var(--allowsDragging__kbtjn3s)", count: "var(--count__kbtjn3t)", index: "var(--index__kbtjn3u)", selectionMode: "var(--selectionMode__kbtjn3v)", selectionBehavior: "var(--selectionBehavior__kbtjn3w)", isDisabled: "var(--isDisabled__kbtjn3x)", isDragging: "var(--isDragging__kbtjn3y)", isDropTarget: "var(--isDropTarget__kbtjn3z)", isExpanded: "var(--isExpanded__kbtjn310)", isFirstChild: "var(--isFirstChild__kbtjn311)", isFocused: "var(--isFocused__kbtjn312)", isFocusVisible: "var(--isFocusVisible__kbtjn313)", isGroup: "var(--isGroup__kbtjn314)", isHovered: "var(--isHovered__kbtjn315)", isLastChild: "var(--isLastChild__kbtjn316)", isPressed: "var(--isPressed__kbtjn317)", isSelected: "var(--isSelected__kbtjn318)", isViewable: "var(--isViewable__kbtjn319)", isVisible: "var(--isVisible__kbtjn31a)" };
9
+ var treeItemStateVars = { allowsDragging: "var(--allowsDragging__kbtjn3s)", count: "var(--count__kbtjn3t)", index: "var(--index__kbtjn3u)", selectionMode: "var(--selectionMode__kbtjn3v)", selectionBehavior: "var(--selectionBehavior__kbtjn3w)", isDisabled: "var(--isDisabled__kbtjn3x)", isDragging: "var(--isDragging__kbtjn3y)", isDropTarget: "var(--isDropTarget__kbtjn3z)", isExpanded: "var(--isExpanded__kbtjn310)", isFirstChild: "var(--isFirstChild__kbtjn311)", isFocused: "var(--isFocused__kbtjn312)", isFocusVisible: "var(--isFocusVisible__kbtjn313)", isGroup: "var(--isGroup__kbtjn314)", isHovered: "var(--isHovered__kbtjn315)", isLastChild: "var(--isLastChild__kbtjn316)", isPressed: "var(--isPressed__kbtjn317)", isReadOnly: "var(--isReadOnly__kbtjn318)", isSelected: "var(--isSelected__kbtjn319)", isViewable: "var(--isViewable__kbtjn31a)", isVisible: "var(--isVisible__kbtjn31b)" };
10
10
  var treeSpaceVars = { bar: { x: "var(--bar-x__kbtjn39)", y: "var(--bar-y__kbtjn3a)" }, description: { x: "var(--description-x__kbtjn3b)", y: "var(--description-y__kbtjn3c)" }, empty: { x: "var(--empty-x__kbtjn3d)", y: "var(--empty-y__kbtjn3e)" } };
11
11
  var treeStateVars = { allowsDragging: "var(--allowsDragging__kbtjn3f)", allowsExpansion: "var(--allowsExpansion__kbtjn3g)", allowsVisibility: "var(--allowsVisibility__kbtjn3h)", showTreeLines: "var(--showTreeLines__kbtjn3i)", size: "var(--size__kbtjn3j)" };
12
12
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/tree/tree.css.ts"],"names":[],"mappings":";;;AAAO,IAAI,cAAiB,GAAA,EAAC,IAAK,EAAA,EAAC,SAAU,EAAA,8CAAA,EAAgD,EAAA,KAAA,EAAM,qCAAsC,EAAA,KAAA,EAAM,qCAAsC,EAAA,SAAA,EAAU,EAAC,SAAA,EAAU,mDAAmD,EAAA,EAAE,IAAK,EAAA,EAAC,SAAU,EAAA,8CAAA,EAA+C,IAAK,EAAA,yCAAA,EAA0C,GAAI,EAAA,wCAAA,EAAyC,KAAM,EAAA,EAAC,SAAU,EAAA,oDAAA,EAAqD,MAAO,EAAA,iDAAA,EAAmD,EAAA,UAAA,EAAW,EAAC,SAAA,EAAU,yDAAyD,EAAA,EAAE,SAAU,EAAA,EAAC,SAAU,EAAA,wDAAA,EAA0D,EAAA,WAAA,EAAY,gDAAiD,EAAA,OAAA,EAAQ,EAAC,SAAA,EAAU,sDAAsD,EAAA,EAAE,SAAU,EAAA,EAAC,QAAS,EAAA,EAAC,SAAU,EAAA,iEAAA,EAAkE,EAAA,EAAE,IAAK,EAAA,EAAC,SAAU,EAAA,mDAAA,IAAqD;AACn+B,IAAI,gBAAgB,EAAC,GAAA,EAAI,EAAC,UAAW,EAAA,gCAAA,EAAiC,QAAO,4BAA6B,EAAA,KAAA,EAAM,6BAA6B,EAAA,SAAA,EAAU,EAAC,UAAW,EAAA,sCAAA,EAAuC,QAAO,kCAAmC,EAAA,KAAA,EAAM,mCAAkC;AAC5R,IAAI,iBAAiB,EAAC,IAAA,EAAK,qCAAoC,KAAM,EAAA,oCAAA,EAAqC,MAAK,mCAAmC;AAClJ,IAAI,kBAAqB,GAAA,EAAC,KAAM,EAAA,uBAAA,EAAwB,MAAO,EAAA,wBAAA,EAAyB,YAAa,EAAA,8BAAA,EAA+B,OAAQ,EAAA,yBAAA,EAA0B,SAAU,EAAA,2BAAA,EAA4B,gBAAe,gCAAgC;AAC3P,IAAI,sBAAyB,GAAA,EAAC,YAAa,EAAA,8BAAA,EAA+B,cAAa,8BAA8B;AACrH,IAAI,oBAAoB,EAAC,cAAA,EAAe,gCAAiC,EAAA,KAAA,EAAM,yBAAwB,KAAM,EAAA,uBAAA,EAAwB,aAAc,EAAA,+BAAA,EAAgC,mBAAkB,mCAAoC,EAAA,UAAA,EAAW,8BAA6B,UAAW,EAAA,4BAAA,EAA6B,cAAa,8BAA+B,EAAA,UAAA,EAAW,6BAA8B,EAAA,YAAA,EAAa,iCAAgC,SAAU,EAAA,4BAAA,EAA6B,gBAAe,iCAAkC,EAAA,OAAA,EAAQ,4BAA2B,SAAU,EAAA,4BAAA,EAA6B,WAAY,EAAA,8BAAA,EAA+B,WAAU,4BAA6B,EAAA,UAAA,EAAW,+BAA8B,UAAW,EAAA,6BAAA,EAA8B,WAAU,4BAA4B;AACnyB,IAAA,aAAA,GAAgB,EAAC,GAAI,EAAA,EAAC,GAAE,uBAAwB,EAAA,CAAA,EAAE,uBAAuB,EAAA,EAAE,WAAY,EAAA,EAAC,GAAE,+BAAgC,EAAA,CAAA,EAAE,iCAAiC,EAAA,KAAA,EAAM,EAAC,CAAE,EAAA,yBAAA,EAA0B,CAAE,EAAA,yBAAA,EAA0B;AAC5N,IAAA,aAAA,GAAgB,EAAC,cAAA,EAAe,gCAAiC,EAAA,eAAA,EAAgB,iCAAkC,EAAA,gBAAA,EAAiB,kCAAmC,EAAA,aAAA,EAAc,+BAAgC,EAAA,IAAA,EAAK,sBAAsB","file":"tree.css.js","sourcesContent":["export var treeClassNames = {tree:{container:'tree_treeClassNames_tree_container__kbtjn31b'},empty:'tree_treeClassNames_empty__kbtjn31c',group:'tree_treeClassNames_group__kbtjn31d',indicator:{indicator:'tree_treeClassNames_indicator_indicator__kbtjn31e'},item:{container:'tree_treeClassNames_item_container__kbtjn31f',item:'tree_treeClassNames_item_item__kbtjn31g',bar:'tree_treeClassNames_item_bar__kbtjn31h',lines:{container:'tree_treeClassNames_item_lines_container__kbtjn31i',button:'tree_treeClassNames_item_lines_button__kbtjn31j'},visibility:{container:'tree_treeClassNames_item_visibility_container__kbtjn31k'},expansion:{container:'tree_treeClassNames_item_expansion_container__kbtjn31l'},description:'tree_treeClassNames_item_description__kbtjn31m',actions:{container:'tree_treeClassNames_item_actions_container__kbtjn31n'},selection:{checkbox:{container:'tree_treeClassNames_item_selection_checkbox_container__kbtjn31o'}},drag:{container:'tree_treeClassNames_item_drag_container__kbtjn31p'}}};\nexport var treeColorVars = {bar:{background:'var(--bar-background__kbtjn33)',border:'var(--bar-border__kbtjn34)',color:'var(--bar-color__kbtjn35)'},indicator:{background:'var(--indicator-background__kbtjn36)',border:'var(--indicator-border__kbtjn37)',color:'var(--indicator-color__kbtjn38)'}};\nexport var treeContainers = {tree:'tree_treeContainers_tree__kbtjn30',group:'tree_treeContainers_group__kbtjn31',item:'tree_treeContainers_item__kbtjn32'};\nexport var treeGroupStateVars = {count:'var(--count__kbtjn3k)',layout:'var(--layout__kbtjn3l)',isDropTarget:'var(--isDropTarget__kbtjn3m)',isEmpty:'var(--isEmpty__kbtjn3n)',isFocused:'var(--isFocused__kbtjn3o)',isFocusVisible:'var(--isFocusVisible__kbtjn3p)'};\nexport var treeIndicatorStateVars = {dropPosition:'var(--dropPosition__kbtjn3q)',isDropTarget:'var(--isDropTarget__kbtjn3r)'};\nexport var treeItemStateVars = {allowsDragging:'var(--allowsDragging__kbtjn3s)',count:'var(--count__kbtjn3t)',index:'var(--index__kbtjn3u)',selectionMode:'var(--selectionMode__kbtjn3v)',selectionBehavior:'var(--selectionBehavior__kbtjn3w)',isDisabled:'var(--isDisabled__kbtjn3x)',isDragging:'var(--isDragging__kbtjn3y)',isDropTarget:'var(--isDropTarget__kbtjn3z)',isExpanded:'var(--isExpanded__kbtjn310)',isFirstChild:'var(--isFirstChild__kbtjn311)',isFocused:'var(--isFocused__kbtjn312)',isFocusVisible:'var(--isFocusVisible__kbtjn313)',isGroup:'var(--isGroup__kbtjn314)',isHovered:'var(--isHovered__kbtjn315)',isLastChild:'var(--isLastChild__kbtjn316)',isPressed:'var(--isPressed__kbtjn317)',isSelected:'var(--isSelected__kbtjn318)',isViewable:'var(--isViewable__kbtjn319)',isVisible:'var(--isVisible__kbtjn31a)'};\nexport var treeSpaceVars = {bar:{x:'var(--bar-x__kbtjn39)',y:'var(--bar-y__kbtjn3a)'},description:{x:'var(--description-x__kbtjn3b)',y:'var(--description-y__kbtjn3c)'},empty:{x:'var(--empty-x__kbtjn3d)',y:'var(--empty-y__kbtjn3e)'}};\nexport var treeStateVars = {allowsDragging:'var(--allowsDragging__kbtjn3f)',allowsExpansion:'var(--allowsExpansion__kbtjn3g)',allowsVisibility:'var(--allowsVisibility__kbtjn3h)',showTreeLines:'var(--showTreeLines__kbtjn3i)',size:'var(--size__kbtjn3j)'};"]}
1
+ {"version":3,"sources":["../../../src/components/tree/tree.css.ts"],"names":[],"mappings":";;;AAAO,IAAI,cAAiB,GAAA,EAAC,IAAK,EAAA,EAAC,SAAU,EAAA,8CAAA,EAAgD,EAAA,KAAA,EAAM,qCAAsC,EAAA,KAAA,EAAM,qCAAsC,EAAA,SAAA,EAAU,EAAC,SAAA,EAAU,mDAAmD,EAAA,EAAE,IAAK,EAAA,EAAC,SAAU,EAAA,8CAAA,EAA+C,IAAK,EAAA,yCAAA,EAA0C,GAAI,EAAA,wCAAA,EAAyC,KAAM,EAAA,EAAC,SAAU,EAAA,oDAAA,EAAqD,MAAO,EAAA,iDAAA,EAAmD,EAAA,UAAA,EAAW,EAAC,SAAA,EAAU,yDAAyD,EAAA,EAAE,SAAU,EAAA,EAAC,SAAU,EAAA,wDAAA,EAA0D,EAAA,WAAA,EAAY,gDAAiD,EAAA,OAAA,EAAQ,EAAC,SAAA,EAAU,sDAAsD,EAAA,EAAE,SAAU,EAAA,EAAC,QAAS,EAAA,EAAC,SAAU,EAAA,iEAAA,EAAkE,EAAA,EAAE,IAAK,EAAA,EAAC,SAAU,EAAA,mDAAA,IAAqD;AACn+B,IAAI,gBAAgB,EAAC,GAAA,EAAI,EAAC,UAAW,EAAA,gCAAA,EAAiC,QAAO,4BAA6B,EAAA,KAAA,EAAM,6BAA6B,EAAA,SAAA,EAAU,EAAC,UAAW,EAAA,sCAAA,EAAuC,QAAO,kCAAmC,EAAA,KAAA,EAAM,mCAAkC;AAC5R,IAAI,iBAAiB,EAAC,IAAA,EAAK,qCAAoC,KAAM,EAAA,oCAAA,EAAqC,MAAK,mCAAmC;AAClJ,IAAI,kBAAqB,GAAA,EAAC,KAAM,EAAA,uBAAA,EAAwB,MAAO,EAAA,wBAAA,EAAyB,YAAa,EAAA,8BAAA,EAA+B,OAAQ,EAAA,yBAAA,EAA0B,SAAU,EAAA,2BAAA,EAA4B,gBAAe,gCAAgC;AAC3P,IAAI,sBAAyB,GAAA,EAAC,YAAa,EAAA,8BAAA,EAA+B,cAAa,8BAA8B;AACrH,IAAI,oBAAoB,EAAC,cAAA,EAAe,kCAAiC,KAAM,EAAA,uBAAA,EAAwB,OAAM,uBAAwB,EAAA,aAAA,EAAc,+BAAgC,EAAA,iBAAA,EAAkB,qCAAoC,UAAW,EAAA,4BAAA,EAA6B,YAAW,4BAA6B,EAAA,YAAA,EAAa,gCAA+B,UAAW,EAAA,6BAAA,EAA8B,YAAa,EAAA,+BAAA,EAAgC,WAAU,4BAA6B,EAAA,cAAA,EAAe,mCAAkC,OAAQ,EAAA,0BAAA,EAA2B,WAAU,4BAA6B,EAAA,WAAA,EAAY,gCAA+B,SAAU,EAAA,4BAAA,EAA6B,YAAW,6BAA8B,EAAA,UAAA,EAAW,+BAA8B,UAAW,EAAA,6BAAA,EAA8B,WAAU,4BAA4B;AAC50B,IAAA,aAAA,GAAgB,EAAC,GAAI,EAAA,EAAC,GAAE,uBAAwB,EAAA,CAAA,EAAE,uBAAuB,EAAA,EAAE,WAAY,EAAA,EAAC,GAAE,+BAAgC,EAAA,CAAA,EAAE,iCAAiC,EAAA,KAAA,EAAM,EAAC,CAAE,EAAA,yBAAA,EAA0B,CAAE,EAAA,yBAAA,EAA0B;AAC5N,IAAA,aAAA,GAAgB,EAAC,cAAA,EAAe,gCAAiC,EAAA,eAAA,EAAgB,iCAAkC,EAAA,gBAAA,EAAiB,kCAAmC,EAAA,aAAA,EAAc,+BAAgC,EAAA,IAAA,EAAK,sBAAsB","file":"tree.css.js","sourcesContent":["export var treeClassNames = {tree:{container:'tree_treeClassNames_tree_container__kbtjn31c'},empty:'tree_treeClassNames_empty__kbtjn31d',group:'tree_treeClassNames_group__kbtjn31e',indicator:{indicator:'tree_treeClassNames_indicator_indicator__kbtjn31f'},item:{container:'tree_treeClassNames_item_container__kbtjn31g',item:'tree_treeClassNames_item_item__kbtjn31h',bar:'tree_treeClassNames_item_bar__kbtjn31i',lines:{container:'tree_treeClassNames_item_lines_container__kbtjn31j',button:'tree_treeClassNames_item_lines_button__kbtjn31k'},visibility:{container:'tree_treeClassNames_item_visibility_container__kbtjn31l'},expansion:{container:'tree_treeClassNames_item_expansion_container__kbtjn31m'},description:'tree_treeClassNames_item_description__kbtjn31n',actions:{container:'tree_treeClassNames_item_actions_container__kbtjn31o'},selection:{checkbox:{container:'tree_treeClassNames_item_selection_checkbox_container__kbtjn31p'}},drag:{container:'tree_treeClassNames_item_drag_container__kbtjn31q'}}};\nexport var treeColorVars = {bar:{background:'var(--bar-background__kbtjn33)',border:'var(--bar-border__kbtjn34)',color:'var(--bar-color__kbtjn35)'},indicator:{background:'var(--indicator-background__kbtjn36)',border:'var(--indicator-border__kbtjn37)',color:'var(--indicator-color__kbtjn38)'}};\nexport var treeContainers = {tree:'tree_treeContainers_tree__kbtjn30',group:'tree_treeContainers_group__kbtjn31',item:'tree_treeContainers_item__kbtjn32'};\nexport var treeGroupStateVars = {count:'var(--count__kbtjn3k)',layout:'var(--layout__kbtjn3l)',isDropTarget:'var(--isDropTarget__kbtjn3m)',isEmpty:'var(--isEmpty__kbtjn3n)',isFocused:'var(--isFocused__kbtjn3o)',isFocusVisible:'var(--isFocusVisible__kbtjn3p)'};\nexport var treeIndicatorStateVars = {dropPosition:'var(--dropPosition__kbtjn3q)',isDropTarget:'var(--isDropTarget__kbtjn3r)'};\nexport var treeItemStateVars = {allowsDragging:'var(--allowsDragging__kbtjn3s)',count:'var(--count__kbtjn3t)',index:'var(--index__kbtjn3u)',selectionMode:'var(--selectionMode__kbtjn3v)',selectionBehavior:'var(--selectionBehavior__kbtjn3w)',isDisabled:'var(--isDisabled__kbtjn3x)',isDragging:'var(--isDragging__kbtjn3y)',isDropTarget:'var(--isDropTarget__kbtjn3z)',isExpanded:'var(--isExpanded__kbtjn310)',isFirstChild:'var(--isFirstChild__kbtjn311)',isFocused:'var(--isFocused__kbtjn312)',isFocusVisible:'var(--isFocusVisible__kbtjn313)',isGroup:'var(--isGroup__kbtjn314)',isHovered:'var(--isHovered__kbtjn315)',isLastChild:'var(--isLastChild__kbtjn316)',isPressed:'var(--isPressed__kbtjn317)',isReadOnly:'var(--isReadOnly__kbtjn318)',isSelected:'var(--isSelected__kbtjn319)',isViewable:'var(--isViewable__kbtjn31a)',isVisible:'var(--isVisible__kbtjn31b)'};\nexport var treeSpaceVars = {bar:{x:'var(--bar-x__kbtjn39)',y:'var(--bar-y__kbtjn3a)'},description:{x:'var(--description-x__kbtjn3b)',y:'var(--description-y__kbtjn3c)'},empty:{x:'var(--empty-x__kbtjn3d)',y:'var(--empty-y__kbtjn3e)'}};\nexport var treeStateVars = {allowsDragging:'var(--allowsDragging__kbtjn3f)',allowsExpansion:'var(--allowsExpansion__kbtjn3g)',allowsVisibility:'var(--allowsVisibility__kbtjn3h)',showTreeLines:'var(--showTreeLines__kbtjn3i)',size:'var(--size__kbtjn3j)'};"]}
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as react from 'react';
3
- import { TreeStateContextValue, TreeProps, TreeGroupProps, TreeItemProps } from './types.js';
3
+ import { TreeProps, TreeGroupProps, TreeItemProps, TreeStateContextValue } from './types.js';
4
4
  import '@react-types/shared';
5
5
  import 'react-aria-components';
6
6
  import 'type-fest';
@@ -2,7 +2,7 @@ import '../../chunk-PZ5AY32C.js';
2
2
  import { noop } from '@accelint/core';
3
3
  import { usePress } from '@react-aria/interactions';
4
4
  import { createContext, useMemo, useCallback, useContext } from 'react';
5
- import { Provider, DropIndicator, useDragAndDrop, GridList, DEFAULT_SLOT, ButtonContext as ButtonContext$1, GridListItem } from 'react-aria-components';
5
+ import { Provider, DropIndicator, useDragAndDrop, GridList, ButtonContext as ButtonContext$1, DEFAULT_SLOT, GridListItem } from 'react-aria-components';
6
6
  import { useDefaultProps, useTree, useTheme } from '../../hooks/index.js';
7
7
  import { bodies } from '../../styles/index.js';
8
8
  import { mergeClassNames, inlineVars, callRenderProps } from '../../utils/index.js';
@@ -337,7 +337,8 @@ function TreeItem({
337
337
  isGroup: "nodes" in node.value,
338
338
  isLastChild,
339
339
  isViewable: !!node.value.isViewable,
340
- isVisible: !!node.value.isVisible
340
+ isVisible: !!node.value.isVisible,
341
+ isReadOnly: !!node.value.isReadOnly
341
342
  }),
342
343
  [node.children.length, node.value, index, isFirstChild, isLastChild]
343
344
  );
@@ -362,6 +363,7 @@ function TreeItem({
362
363
  ...mapping.visibility[size],
363
364
  classNames: classNames?.item?.visibility,
364
365
  isSelected: !!node.value.isViewable,
366
+ isDisabled: !!node.value.isReadOnly,
365
367
  onPress: handleToggleVisibility
366
368
  }
367
369
  }
@@ -475,6 +477,7 @@ function TreeItem({
475
477
  GridListItem,
476
478
  {
477
479
  ...rest,
480
+ isDisabled: !!node.value.isReadOnly,
478
481
  className: classNames?.item?.container,
479
482
  style,
480
483
  textValue: node.value.label,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/tree/tree.tsx"],"names":["RACButtonContext"],"mappings":"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","file":"tree.js","sourcesContent":["import { noop } from '@accelint/core';\nimport { usePress } from '@react-aria/interactions';\nimport type { Key } from '@react-types/shared';\nimport { createContext, useCallback, useContext, useMemo } from 'react';\nimport {\n DEFAULT_SLOT,\n DropIndicator,\n GridList,\n GridListItem,\n Provider,\n ButtonContext as RACButtonContext,\n useDragAndDrop,\n type ContextValue,\n type DropTarget,\n type GridListItemRenderProps,\n type GridListRenderProps,\n type ButtonProps as RACButtonProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useDefaultProps, useTheme, useTree } from '../../hooks';\nimport { bodies } from '../../styles';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaTextContext } from '../aria';\nimport {\n Button,\n ButtonContext,\n ToggleButtonContext,\n type ButtonProps,\n type ToggleButtonProps,\n} from '../button';\nimport { CheckboxContext, type CheckboxProps } from '../checkbox';\nimport { GroupContext, type GroupProps } 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 type {\n TreeGroupProps,\n TreeIndicatorRenderProps,\n TreeItemProps,\n TreeMapping,\n TreeProps,\n TreeStateContextValue,\n} from './types';\nimport { createDragAndDropHandlers } from './utils';\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 }),\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 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 ];\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 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/tree.tsx"],"names":["RACButtonContext"],"mappings":"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","file":"tree.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 type { Key } from '@react-types/shared';\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, useTheme, useTree } from '../../hooks';\nimport { bodies } from '../../styles';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaTextContext } from '../aria';\nimport {\n Button,\n ButtonContext,\n type ButtonProps,\n ToggleButtonContext,\n type ToggleButtonProps,\n} from '../button';\nimport { CheckboxContext, type CheckboxProps } from '../checkbox';\nimport { GroupContext, type GroupProps } 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 type {\n TreeGroupProps,\n TreeIndicatorRenderProps,\n TreeItemProps,\n TreeMapping,\n TreeProps,\n TreeStateContextValue,\n} from './types';\nimport { createDragAndDropHandlers } from './utils';\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 ];\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,12 +1,12 @@
1
1
  import { AriaLabelingProps } from '@react-types/shared';
2
2
  import { ReactNode } from 'react';
3
- import { GridListRenderProps, GridListItemRenderProps, DropPosition, GridListProps, SlotProps, GridListItemProps, DragAndDropOptions, Key } from 'react-aria-components';
3
+ import { GridListProps, DragAndDropOptions, GridListItemRenderProps, Key, SlotProps, GridListItemProps, GridListRenderProps, DropPosition } from 'react-aria-components';
4
4
  import { PartialDeep } from 'type-fest';
5
5
  import { AsType } from '../../types/generic.js';
6
6
  import { OmitProtectedProps } from '../../types/props.js';
7
7
  import { RenderPropsChildren } from '../../types/react-aria.js';
8
- import { UseTreeResult, TreeNode, TreeGroupNode, UseTreeOptions } from '../../types/use-tree.js';
9
- import { ButtonClassNames, ButtonProps } from '../button/types.js';
8
+ import { UseTreeOptions, TreeNode, UseTreeResult, TreeGroupNode } from '../../types/use-tree.js';
9
+ import { ButtonProps, ButtonClassNames } from '../button/types.js';
10
10
  import { CheckboxClassNames } from '../checkbox/types.js';
11
11
  import { GroupClassNames } from '../group/types.js';
12
12
  import '@react-stately/data';
@@ -52,7 +52,7 @@ type TreeGroupRenderProps = Omit<GridListRenderProps, 'state'>;
52
52
  type TreeIndicatorRenderProps = {
53
53
  /**
54
54
  * Whether the drop indicator is currently the active drop target.
55
- * @selector [data-drop-target]
55
+ * selector: [data-drop-target]
56
56
  */
57
57
  isDropTarget: boolean;
58
58
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/tree/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import type {\n DropItem,\n DropOperation,\n Key,\n TextDropItem,\n} from '@react-types/shared';\nimport { isTextDropItem } from '@react-aria/dnd';\nimport type { DragAndDropOptions } from 'react-aria-components';\nimport type { TreeNode, UseTreeResult } from '../../types';\n\nexport function createDragAndDropHandlers<T>(\n id: Key,\n acceptedDragTypes: string[],\n lookup: Record<Key, TreeNode<T>>,\n actions: UseTreeResult<T>['actions'],\n): DragAndDropOptions {\n return {\n acceptedDragTypes,\n getDropOperation,\n getItems: (keys: Set<Key>) =>\n [...keys].map((key) => {\n const node = lookup[key]?.value;\n\n if (!node) {\n return {};\n }\n\n const payload = JSON.stringify(node);\n\n return [\n 'all',\n 'type' in node ? node.type : undefined,\n ...('types' in node ? (node.types ?? []) : []),\n ].reduce<Record<string, string>>((acc, type) => {\n if (!type) return acc;\n\n acc[`tree-${type}`] = payload;\n\n return acc;\n }, {});\n }),\n onDragEnd: () => actions.revertIsExpanded(),\n onDragStart: ({ keys }) => actions.toggleIsExpanded(keys, false, true),\n onInsert: ({ items, target }) => {\n // Wrap async return function where void expected, fuck SQ\n (async () => {\n const processedItems = await processDroppedItems(\n items,\n acceptedDragTypes,\n );\n\n actions.remove(...processedItems.map((item) => item.id));\n\n if (target.dropPosition === 'before') {\n actions.insertBefore(target.key, ...processedItems);\n } else if (target.dropPosition === 'after') {\n actions.insertAfter(target.key, ...processedItems);\n }\n })();\n },\n onReorder({ keys, target }) {\n const values = Array.from(keys).flatMap((key) => {\n const value = lookup[key]?.value;\n\n if (value) {\n return [value];\n }\n\n return [];\n });\n\n actions.remove(...keys);\n\n if (target.dropPosition === 'before') {\n actions.insertBefore(target.key, ...values);\n } else if (target.dropPosition === 'after') {\n actions.insertAfter(target.key, ...values);\n }\n },\n onRootDrop: ({ items }) => {\n // See above, thanks SQ for ensuring high quality code\n (async () => {\n const processedItems = await processDroppedItems(\n items,\n acceptedDragTypes,\n );\n\n actions.remove(...processedItems.map((item) => item.id));\n\n actions.append(id, ...processedItems);\n })();\n },\n };\n}\n\nexport function getDropOperation(): DropOperation {\n return 'move';\n}\n\nexport async function processDroppedItems(\n items: DropItem[],\n acceptedDragTypes: string[],\n) {\n return await Promise.all(\n items\n .filter(isTextDropItem)\n .map((item) => processDroppedItem(item, acceptedDragTypes)),\n );\n}\n\nexport async function processDroppedItem(\n item: TextDropItem,\n acceptedDragTypes: string[],\n) {\n const payload = await getDroppedItemPayload(item, acceptedDragTypes);\n\n return payload\n ? JSON.parse(payload)\n : Promise.reject(new Error('No supported type payload'));\n}\n\nexport async function getDroppedItemPayload(\n item: TextDropItem,\n acceptedDragTypes: string[],\n) {\n return await Promise.any(\n acceptedDragTypes.map(\n async (type) =>\n (await item.getText(type)) ??\n Promise.reject(new Error('Unsupported type')),\n ),\n );\n}\n"]}
1
+ {"version":3,"sources":["../../../src/components/tree/utils.ts"],"names":[],"mappings":"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","file":"utils.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 { isTextDropItem } from '@react-aria/dnd';\nimport type {\n DropItem,\n DropOperation,\n Key,\n TextDropItem,\n} from '@react-types/shared';\nimport type { DragAndDropOptions } from 'react-aria-components';\nimport type { TreeNode, UseTreeResult } from '../../types';\n\nexport function createDragAndDropHandlers<T>(\n id: Key,\n acceptedDragTypes: string[],\n lookup: Record<Key, TreeNode<T>>,\n actions: UseTreeResult<T>['actions'],\n): DragAndDropOptions {\n return {\n acceptedDragTypes,\n getDropOperation,\n getItems: (keys: Set<Key>) =>\n [...keys].map((key) => {\n const node = lookup[key]?.value;\n\n if (!node) {\n return {};\n }\n\n const payload = JSON.stringify(node);\n\n return [\n 'all',\n 'type' in node ? node.type : undefined,\n ...('types' in node ? (node.types ?? []) : []),\n ].reduce<Record<string, string>>((acc, type) => {\n if (!type) return acc;\n\n acc[`tree-${type}`] = payload;\n\n return acc;\n }, {});\n }),\n onDragEnd: () => actions.revertIsExpanded(),\n onDragStart: ({ keys }) => actions.toggleIsExpanded(keys, false, true),\n onInsert: ({ items, target }) => {\n // Wrap async return function where void expected, fuck SQ\n (async () => {\n const processedItems = await processDroppedItems(\n items,\n acceptedDragTypes,\n );\n\n actions.remove(...processedItems.map((item) => item.id));\n\n if (target.dropPosition === 'before') {\n actions.insertBefore(target.key, ...processedItems);\n } else if (target.dropPosition === 'after') {\n actions.insertAfter(target.key, ...processedItems);\n }\n })();\n },\n onReorder({ keys, target }) {\n const values = Array.from(keys).flatMap((key) => {\n const value = lookup[key]?.value;\n\n if (value) {\n return [value];\n }\n\n return [];\n });\n\n actions.remove(...keys);\n\n if (target.dropPosition === 'before') {\n actions.insertBefore(target.key, ...values);\n } else if (target.dropPosition === 'after') {\n actions.insertAfter(target.key, ...values);\n }\n },\n onRootDrop: ({ items }) => {\n // See above, thanks SQ for ensuring high quality code\n (async () => {\n const processedItems = await processDroppedItems(\n items,\n acceptedDragTypes,\n );\n\n actions.remove(...processedItems.map((item) => item.id));\n\n actions.append(id, ...processedItems);\n })();\n },\n };\n}\n\nexport function getDropOperation(): DropOperation {\n return 'move';\n}\n\nexport async function processDroppedItems(\n items: DropItem[],\n acceptedDragTypes: string[],\n) {\n return await Promise.all(\n items\n .filter(isTextDropItem)\n .map((item) => processDroppedItem(item, acceptedDragTypes)),\n );\n}\n\nexport async function processDroppedItem(\n item: TextDropItem,\n acceptedDragTypes: string[],\n) {\n const payload = await getDroppedItemPayload(item, acceptedDragTypes);\n\n return payload\n ? JSON.parse(payload)\n : Promise.reject(new Error('No supported type payload'));\n}\n\nexport async function getDroppedItemPayload(\n item: TextDropItem,\n acceptedDragTypes: string[],\n) {\n return await Promise.any(\n acceptedDragTypes.map(\n async (type) =>\n (await item.getText(type)) ??\n Promise.reject(new Error('Unsupported type')),\n ),\n );\n}\n"]}
@@ -4,6 +4,7 @@ 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
7
8
  items: parent ? collection.getChildren(parent.key) : collection,
8
9
  dependencies: [renderDropIndicator],
9
10
  children(node) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/use-collection-render/use-collection-render.tsx"],"names":[],"mappings":";;;;AASO,SAAS,mBAAA,CACd,UACA,EAAA,MAAA,EACA,mBACA,EAAA;AACA,EAAA,OAAO,iBAAkB,CAAA;AAAA,IACvB,OAAO,MAAS,GAAA,UAAA,CAAW,WAAa,CAAA,MAAA,CAAO,GAAG,CAAI,GAAA,UAAA;AAAA,IACtD,YAAA,EAAc,CAAC,mBAAmB,CAAA;AAAA,IAClC,SAAS,IAAM,EAAA;AACb,MAAM,MAAA,QAAA,GAAW,IAAK,CAAA,MAAA,CAAQ,IAAI,CAAA;AAElC,MAAA,IAAI,CAAC,mBAAA,IAAuB,IAAK,CAAA,IAAA,KAAS,MAAQ,EAAA;AAChD,QAAO,OAAA,QAAA;AAAA;AAGT,MAAM,MAAA,EAAE,KAAQ,GAAA,IAAA;AAChB,MAAM,MAAA,QAAA,GAAW,UAAW,CAAA,WAAA,CAAY,GAAG,CAAA;AAE3C,MAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,QAAA,mBAAA,CAAoB,EAAE,IAAM,EAAA,MAAA,EAAQ,GAAK,EAAA,YAAA,EAAc,UAAU,CAAA;AAAA,QACjE,QAAA;AAAA,QAAA,CACC,QAAY,IAAA,IAAA,IACZ,UAAW,CAAA,OAAA,CAAQ,QAAQ,CAAG,EAAA,IAAA,KAAS,MACvC,KAAA,mBAAA,CAAoB,EAAE,IAAM,EAAA,MAAA,EAAQ,GAAK,EAAA,YAAA,EAAc,SAAS;AAAA,OACpE,EAAA,CAAA;AAAA;AAEJ,GACD,CAAA;AACH","file":"use-collection-render.js","sourcesContent":["import { 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 items: parent ? collection.getChildren!(parent.key) : collection,\n dependencies: [renderDropIndicator],\n children(node) {\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/use-collection-render.tsx"],"names":[],"mappings":";;;;AAqBO,SAAS,mBAAA,CACd,UACA,EAAA,MAAA,EACA,mBACA,EAAA;AACA,EAAA,OAAO,iBAAkB,CAAA;AAAA;AAAA,IAEvB,OAAO,MAAS,GAAA,UAAA,CAAW,WAAa,CAAA,MAAA,CAAO,GAAG,CAAI,GAAA,UAAA;AAAA,IACtD,YAAA,EAAc,CAAC,mBAAmB,CAAA;AAAA,IAClC,SAAS,IAAM,EAAA;AAEb,MAAM,MAAA,QAAA,GAAW,IAAK,CAAA,MAAA,CAAQ,IAAI,CAAA;AAElC,MAAA,IAAI,CAAC,mBAAA,IAAuB,IAAK,CAAA,IAAA,KAAS,MAAQ,EAAA;AAChD,QAAO,OAAA,QAAA;AAAA;AAGT,MAAM,MAAA,EAAE,KAAQ,GAAA,IAAA;AAChB,MAAM,MAAA,QAAA,GAAW,UAAW,CAAA,WAAA,CAAY,GAAG,CAAA;AAE3C,MAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,QAAA,mBAAA,CAAoB,EAAE,IAAM,EAAA,MAAA,EAAQ,GAAK,EAAA,YAAA,EAAc,UAAU,CAAA;AAAA,QACjE,QAAA;AAAA,QAAA,CACC,QAAY,IAAA,IAAA,IACZ,UAAW,CAAA,OAAA,CAAQ,QAAQ,CAAG,EAAA,IAAA,KAAS,MACvC,KAAA,mBAAA,CAAoB,EAAE,IAAM,EAAA,MAAA,EAAQ,GAAK,EAAA,YAAA,EAAc,SAAS;AAAA,OACpE,EAAA,CAAA;AAAA;AAEJ,GACD,CAAA;AACH","file":"use-collection-render.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"]}
@@ -22,7 +22,7 @@ import { TabProps, TabListProps, TabPanelProps, TabPanelsProps, TabsProps } from
22
22
  import { TextFieldProps } from '../../components/text-field/types.js';
23
23
  import { TooltipProps, TooltipTargetProps } from '../../components/tooltip/types.js';
24
24
  import { TreeProps } from '../../components/tree/types.js';
25
- import { DefaultsContext, DefaultsProviderProps } from './types.js';
25
+ import { DefaultsProviderProps, DefaultsContext } from './types.js';
26
26
  import 'react-aria-components';
27
27
  import '../../types/react-aria.js';
28
28
  import 'react';
@@ -2,9 +2,9 @@ import '../../chunk-PZ5AY32C.js';
2
2
  import { useState, useRef, useCallback, useLayoutEffect } from 'react';
3
3
 
4
4
  function useSlot() {
5
- let [hasSlot, setHasSlot] = useState(true);
6
- let hasRun = useRef(false);
7
- let ref = useCallback((el) => {
5
+ const [hasSlot, setHasSlot] = useState(true);
6
+ const hasRun = useRef(false);
7
+ const ref = useCallback((el) => {
8
8
  hasRun.current = true;
9
9
  setHasSlot(!!el);
10
10
  }, []);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/use-slot/use-slot.ts"],"names":[],"mappings":";;;AAmBO,SAAS,OAA2C,GAAA;AAEzD,EAAA,IAAI,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,IAAI,CAAA;AACzC,EAAI,IAAA,MAAA,GAAS,OAAO,KAAK,CAAA;AAIzB,EAAI,IAAA,GAAA,GAAM,WAAY,CAAA,CAAC,EAA2B,KAAA;AAChD,IAAA,MAAA,CAAO,OAAU,GAAA,IAAA;AACjB,IAAW,UAAA,CAAA,CAAC,CAAC,EAAE,CAAA;AAAA,GACjB,EAAG,EAAE,CAAA;AAGL,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAI,IAAA,CAAC,OAAO,OAAS,EAAA;AACnB,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA;AAClB,GACF,EAAG,EAAE,CAAA;AAEL,EAAO,OAAA,CAAC,KAAK,OAAO,CAAA;AACtB","file":"use-slot.js","sourcesContent":["import {\n type RefCallback,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\n/**\n * Detects whether a slot has been utilized\n *\n * Example:\n * Parent component implements RAC Provider, with a slotted context\n * Child component implements slot prop matching provided slot in context\n * Parent is able to see that the slot has been fulfilled\n *\n * Copied from RAC: https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/src/utils.tsx#L213\n * Due to not being exported, but quite handy\n */\nexport function useSlot(): [RefCallback<Element>, boolean] {\n // Assume we do have the slot in the initial render.\n let [hasSlot, setHasSlot] = useState(true);\n let hasRun = useRef(false);\n\n // A callback ref which will run when the slotted element mounts.\n // This should happen before the useLayoutEffect below.\n let ref = useCallback((el: HTMLElement | null) => {\n hasRun.current = true;\n setHasSlot(!!el);\n }, []);\n\n // If the callback hasn't been called, then reset to false.\n useLayoutEffect(() => {\n if (!hasRun.current) {\n setHasSlot(false);\n }\n }, []);\n\n return [ref, hasSlot];\n}\n"]}
1
+ {"version":3,"sources":["../../../src/hooks/use-slot/use-slot.ts"],"names":[],"mappings":";;;AA+BO,SAAS,OAA2C,GAAA;AAEzD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3C,EAAM,MAAA,MAAA,GAAS,OAAO,KAAK,CAAA;AAI3B,EAAM,MAAA,GAAA,GAAM,WAAY,CAAA,CAAC,EAA2B,KAAA;AAClD,IAAA,MAAA,CAAO,OAAU,GAAA,IAAA;AACjB,IAAW,UAAA,CAAA,CAAC,CAAC,EAAE,CAAA;AAAA,GACjB,EAAG,EAAE,CAAA;AAGL,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAI,IAAA,CAAC,OAAO,OAAS,EAAA;AACnB,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA;AAClB,GACF,EAAG,EAAE,CAAA;AAEL,EAAO,OAAA,CAAC,KAAK,OAAO,CAAA;AACtB","file":"use-slot.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 type RefCallback,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\n/**\n * Detects whether a slot has been utilized\n *\n * Example:\n * Parent component implements RAC Provider, with a slotted context\n * Child component implements slot prop matching provided slot in context\n * Parent is able to see that the slot has been fulfilled\n *\n * Copied from RAC: https://github.com/adobe/react-spectrum/blob/main/packages/react-aria-components/src/utils.tsx#L213\n * Due to not being exported, but quite handy\n */\nexport function useSlot(): [RefCallback<Element>, boolean] {\n // Assume we do have the slot in the initial render.\n const [hasSlot, setHasSlot] = useState(true);\n const hasRun = useRef(false);\n\n // A callback ref which will run when the slotted element mounts.\n // This should happen before the useLayoutEffect below.\n const ref = useCallback((el: HTMLElement | null) => {\n hasRun.current = true;\n setHasSlot(!!el);\n }, []);\n\n // If the callback hasn't been called, then reset to false.\n useLayoutEffect(() => {\n if (!hasRun.current) {\n setHasSlot(false);\n }\n }, []);\n\n return [ref, hasSlot];\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { CSSProperties, PropsWithChildren } from 'react';
1
+ import { PropsWithChildren, CSSProperties } from 'react';
2
2
  import { ButtonClassNames } from '../../components/button/types.js';
3
3
  import { CheckboxClassNames } from '../../components/checkbox/types.js';
4
4
  import { ChipClassNames } from '../../components/chip/types.js';
@@ -1,4 +1,4 @@
1
- import { ThemeContext, ThemeProviderProps } from './types.js';
1
+ import { ThemeProviderProps, ThemeContext } from './types.js';
2
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import { Contract } from '../../types/vanilla-extract.js';
4
4
  import { computeContract } from '../../utils/css.js';
@@ -46,6 +46,23 @@ import '../../types/deckgl.js';
46
46
  *
47
47
  * This function allows for the reuse of CSS contract tokens within React context for non-CSS
48
48
  * use cases. This ensures synchronized theming across the entire rendering stack
49
+ *
50
+ * @example
51
+ * ```
52
+ * import { genericColorVars, useTheme, type RGBA } from '@accelint/design-system';
53
+ *
54
+ * const theme = useTheme({
55
+ * colors: {
56
+ * generic: genericColorVars,
57
+ * },
58
+ * });
59
+ *
60
+ * new ArrowPathLayer({
61
+ * id: 'layer-id',
62
+ * // ...
63
+ * getColor: theme.contract?.colors.generic.neutral.v01 as RGBA,
64
+ * }),
65
+ * ```
49
66
  */
50
67
  declare function useTheme<T extends Contract>(contract?: T): ThemeContext & {
51
68
  contract?: ReturnType<typeof computeContract<T>>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/use-theme/use-theme.tsx"],"names":[],"mappings":"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","file":"use-theme.js","sourcesContent":["import { useLayoutEffect } from '@react-aria/utils';\nimport { clsx } from 'clsx';\nimport { createContext, useContext, useMemo, useRef, useState } from 'react';\nimport {\n defaultGenericColors,\n defaultElevations,\n defaultFocus,\n defaultRadius,\n defaultSemanticColors,\n defaultSizes,\n defaultSpace,\n defaultTypography,\n defaultZIndex,\n} from '../../styles';\nimport type { Contract } from '../../types';\nimport { computeContract } from '../../utils';\nimport type { ThemeContext, ThemeProviderProps } from './types';\nimport { root } from './use-theme.css';\n\nconst defaultTheme: ThemeContext = {};\nconst themeContext = createContext<ThemeContext>(defaultTheme);\nconst themeCssContext = createContext<CSSStyleDeclaration | null>(null);\n\n/**\n * Computes CSS values into DeckGL compatible formats using the optionally provided contract\n *\n * This function allows for the reuse of CSS contract tokens within React context for non-CSS\n * use cases. This ensures synchronized theming across the entire rendering stack\n */\nexport function useTheme<T extends Contract>(\n contract?: T,\n): ThemeContext & {\n contract?: ReturnType<typeof computeContract<T>>;\n} {\n const theme = useContext(themeContext);\n const css = useContext(themeCssContext);\n\n return useMemo(\n () => ({\n ...theme,\n ...(!!contract && !!css\n ? {\n contract: computeContract(contract, css),\n }\n : {}),\n }),\n [theme, contract, css],\n );\n}\n\nfunction localInheritOrDefault(\n localClass?: string,\n inherit?: boolean,\n defaultClass?: string,\n) {\n return localClass ?? (!inherit && defaultClass);\n}\n\nexport function ThemeProvider({\n children,\n className: classNameProp,\n inherit,\n style: styleProp,\n theme: themeProp = defaultTheme,\n vars,\n}: ThemeProviderProps) {\n const ref = useRef<HTMLDivElement>(null);\n const [css, setCss] = useState<CSSStyleDeclaration | null>(null);\n const parent = useTheme();\n\n const className = useMemo(\n () =>\n clsx(\n root,\n classNameProp,\n inherit && parent.className,\n themeProp.className,\n localInheritOrDefault(\n vars?.colors?.generic,\n inherit,\n defaultGenericColors,\n ),\n localInheritOrDefault(\n vars?.colors?.semantic,\n inherit,\n defaultSemanticColors,\n ),\n localInheritOrDefault(vars?.elevation, inherit, defaultElevations),\n localInheritOrDefault(vars?.focus, inherit, defaultFocus),\n localInheritOrDefault(vars?.radius, inherit, defaultRadius),\n localInheritOrDefault(vars?.sizes, inherit, defaultSizes),\n localInheritOrDefault(vars?.space, inherit, defaultSpace),\n localInheritOrDefault(vars?.typography, inherit, defaultTypography),\n localInheritOrDefault(vars?.zIndex, inherit, defaultZIndex),\n ),\n [\n classNameProp,\n inherit,\n parent.className,\n themeProp.className,\n vars?.colors?.generic,\n vars?.colors?.semantic,\n vars?.elevation,\n vars?.focus,\n vars?.radius,\n vars?.sizes,\n vars?.space,\n vars?.typography,\n vars?.zIndex,\n ],\n );\n\n const style = useMemo(\n () => ({\n ...(inherit ? parent.style : {}),\n ...themeProp.style,\n ...styleProp,\n }),\n [inherit, parent.style, themeProp.style, styleProp],\n );\n\n const theme = useMemo(\n () => ({\n ...(inherit ? parent : themeProp),\n className,\n style,\n }),\n [inherit, parent, themeProp, className, style],\n );\n\n useLayoutEffect(() => {\n if (ref.current) {\n setCss(window.getComputedStyle(ref.current));\n }\n }, [className, style]);\n\n const { Provider: ClassesProvider } = themeContext;\n const { Provider: CssProvider } = themeCssContext;\n\n return (\n <div ref={ref} className={className} style={style}>\n <ClassesProvider value={theme}>\n <CssProvider value={css}>{children}</CssProvider>\n </ClassesProvider>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../../../src/hooks/use-theme/use-theme.tsx"],"names":[],"mappings":"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","file":"use-theme.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 { useLayoutEffect } from '@react-aria/utils';\nimport { clsx } from 'clsx';\nimport { createContext, useContext, useMemo, useRef, useState } from 'react';\nimport {\n defaultElevations,\n defaultFocus,\n defaultGenericColors,\n defaultRadius,\n defaultSemanticColors,\n defaultSizes,\n defaultSpace,\n defaultTypography,\n defaultZIndex,\n} from '../../styles';\nimport type { Contract } from '../../types';\nimport { computeContract } from '../../utils';\nimport type { ThemeContext, ThemeProviderProps } from './types';\nimport { root } from './use-theme.css';\n\nconst defaultTheme: ThemeContext = {};\nconst themeContext = createContext<ThemeContext>(defaultTheme);\nconst themeCssContext = createContext<CSSStyleDeclaration | null>(null);\n\n/**\n * Computes CSS values into DeckGL compatible formats using the optionally provided contract\n *\n * This function allows for the reuse of CSS contract tokens within React context for non-CSS\n * use cases. This ensures synchronized theming across the entire rendering stack\n *\n * @example\n * ```\n * import { genericColorVars, useTheme, type RGBA } from '@accelint/design-system';\n *\n * const theme = useTheme({\n * colors: {\n * generic: genericColorVars,\n * },\n * });\n *\n * new ArrowPathLayer({\n * id: 'layer-id',\n * // ...\n * getColor: theme.contract?.colors.generic.neutral.v01 as RGBA,\n * }),\n * ```\n */\nexport function useTheme<T extends Contract>(\n contract?: T,\n): ThemeContext & {\n contract?: ReturnType<typeof computeContract<T>>;\n} {\n const theme = useContext(themeContext);\n const css = useContext(themeCssContext);\n\n return useMemo(\n () => ({\n ...theme,\n ...(!!contract && !!css\n ? {\n contract: computeContract(contract, css),\n }\n : {}),\n }),\n [theme, contract, css],\n );\n}\n\nfunction localInheritOrDefault(\n localClass?: string,\n inherit?: boolean,\n defaultClass?: string,\n) {\n return localClass ?? (!inherit && defaultClass);\n}\n\nexport function ThemeProvider({\n children,\n className: classNameProp,\n inherit,\n style: styleProp,\n theme: themeProp = defaultTheme,\n vars,\n}: ThemeProviderProps) {\n const ref = useRef<HTMLDivElement>(null);\n const [css, setCss] = useState<CSSStyleDeclaration | null>(null);\n const parent = useTheme();\n\n const className = useMemo(\n () =>\n clsx(\n root,\n classNameProp,\n inherit && parent.className,\n themeProp.className,\n localInheritOrDefault(\n vars?.colors?.generic,\n inherit,\n defaultGenericColors,\n ),\n localInheritOrDefault(\n vars?.colors?.semantic,\n inherit,\n defaultSemanticColors,\n ),\n localInheritOrDefault(vars?.elevation, inherit, defaultElevations),\n localInheritOrDefault(vars?.focus, inherit, defaultFocus),\n localInheritOrDefault(vars?.radius, inherit, defaultRadius),\n localInheritOrDefault(vars?.sizes, inherit, defaultSizes),\n localInheritOrDefault(vars?.space, inherit, defaultSpace),\n localInheritOrDefault(vars?.typography, inherit, defaultTypography),\n localInheritOrDefault(vars?.zIndex, inherit, defaultZIndex),\n ),\n [\n classNameProp,\n inherit,\n parent.className,\n themeProp.className,\n vars?.colors?.generic,\n vars?.colors?.semantic,\n vars?.elevation,\n vars?.focus,\n vars?.radius,\n vars?.sizes,\n vars?.space,\n vars?.typography,\n vars?.zIndex,\n ],\n );\n\n const style = useMemo(\n () => ({\n ...(inherit ? parent.style : {}),\n ...themeProp.style,\n ...styleProp,\n }),\n [inherit, parent.style, themeProp.style, styleProp],\n );\n\n const theme = useMemo(\n () => ({\n ...(inherit ? parent : themeProp),\n className,\n style,\n }),\n [inherit, parent, themeProp, className, style],\n );\n\n useLayoutEffect(() => {\n if (ref.current) {\n setCss(window.getComputedStyle(ref.current));\n }\n }, [className, style]);\n\n const { Provider: ClassesProvider } = themeContext;\n const { Provider: CssProvider } = themeCssContext;\n\n return (\n <div ref={ref} className={className} style={style}>\n <ClassesProvider value={theme}>\n <CssProvider value={css}>{children}</CssProvider>\n </ClassesProvider>\n </div>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
1
  export { useTree } from './use-tree.js';
2
2
  import '../../types/use-tree.js';
3
- import '@react-types/shared';
4
3
  import '@react-stately/data';
4
+ import '@react-types/shared';
@@ -1,6 +1,6 @@
1
1
  import { UseTreeOptions, UseTreeResult } from '../../types/use-tree.js';
2
- import '@react-types/shared';
3
2
  import '@react-stately/data';
3
+ import '@react-types/shared';
4
4
 
5
5
  declare function useTree<T>({ allowsExpansion, allowsVisibility, nodes, selectionMode, onSelectionChange, onUpdate, }: UseTreeOptions<T>): UseTreeResult<T>;
6
6
 
@@ -3,7 +3,7 @@ import { useTreeData } from '@react-stately/data';
3
3
  import isEqual from 'lodash/isEqual';
4
4
  import { useId, useMemo, useRef, useCallback } from 'react';
5
5
  import { useUpdateEffect } from '../use-update-effect/index.js';
6
- import { getChildren, getKey, mapTree, toggleVisibility } from './utils.js';
6
+ import { getKey, getChildren, mapTree, toggleVisibility } from './utils.js';
7
7
 
8
8
  function useTree({
9
9
  allowsExpansion = true,
@@ -158,6 +158,7 @@ function useTree({
158
158
  [allowsExpansion, tree, rootKey, update]
159
159
  );
160
160
  const toggleIsSelected = useCallback(
161
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO: refactor
161
162
  (selection = "all", isSelected = void 0) => {
162
163
  if (selectionMode === "none" || selectionMode === "single" && (selection === "all" || selection.size > 1)) {
163
164
  return;
@@ -194,9 +195,11 @@ function useTree({
194
195
  if (key === rootKey) {
195
196
  return;
196
197
  }
197
- update(key, {
198
- isViewable: isViewable ?? !value.isViewable
199
- });
198
+ if (!value.isReadOnly) {
199
+ update(key, {
200
+ isViewable: isViewable ?? !value.isViewable
201
+ });
202
+ }
200
203
  });
201
204
  }
202
205
  mapTree(
@@ -211,7 +214,9 @@ function useTree({
211
214
  if (key === rootKey) {
212
215
  return;
213
216
  }
214
- update(key, { isViewable: value.isViewable });
217
+ if (!value.isReadOnly) {
218
+ update(key, { isViewable: value.isViewable });
219
+ }
215
220
  }
216
221
  );
217
222
  },