@accelint/design-system 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/assets/components/button/button.css +55 -0
- package/dist/assets/components/checkbox/checkbox.css +73 -0
- package/dist/assets/components/chip/chip.css +62 -0
- package/dist/assets/components/combo-box/combo-box.css +66 -0
- package/dist/assets/components/dialog/dialog.css +51 -0
- package/dist/assets/components/drawer/drawer.css +135 -0
- package/dist/assets/components/group/group.css +33 -0
- package/dist/assets/components/icon/icon.css +19 -0
- package/dist/assets/components/input/input.css +29 -0
- package/dist/assets/components/menu/menu.css +85 -0
- package/dist/assets/components/options/options.css +82 -0
- package/dist/assets/components/picker/picker.css +47 -0
- package/dist/assets/components/popover/popover.css +26 -0
- package/dist/assets/components/query-builder/query-builder.css +129 -0
- package/dist/assets/components/radio/radio.css +67 -0
- package/dist/assets/components/search-field/search-field.css +62 -0
- package/dist/assets/components/select/select.css +33 -0
- package/dist/assets/components/switch/switch.css +62 -0
- package/dist/assets/components/tabs/tabs.css +144 -0
- package/dist/assets/components/textarea/textarea.css +32 -0
- package/dist/assets/components/tooltip/tooltip.css +54 -0
- package/dist/assets/components/tree/tree.css +157 -0
- package/dist/assets/hooks/use-theme/use-theme.css +6 -0
- package/dist/assets/src/components/button/button.css.ts.vanilla-9uttMYGm.css +55 -0
- package/dist/assets/src/components/checkbox/checkbox.css.ts.vanilla-Bewmypyn.css +73 -0
- package/dist/assets/src/components/chip/chip.css.ts.vanilla-CsGhxrlu.css +62 -0
- package/dist/assets/src/components/combo-box/combo-box.css.ts.vanilla-BNEPKjPm.css +66 -0
- package/dist/assets/src/components/dialog/dialog.css.ts.vanilla-CG0m-NJD.css +51 -0
- package/dist/assets/src/components/drawer/drawer.css.ts.vanilla-DEfHnoNS.css +135 -0
- package/dist/assets/src/components/group/group.css.ts.vanilla-DR69xgQy.css +33 -0
- package/dist/assets/src/components/icon/icon.css.ts.vanilla-CoUAfp2F.css +19 -0
- package/dist/assets/src/components/input/input.css.ts.vanilla-DoK5h9SX.css +29 -0
- package/dist/assets/src/components/menu/menu.css.ts.vanilla-LoWLg-jE.css +85 -0
- package/dist/assets/src/components/options/options.css.ts.vanilla-CWWFBTou.css +82 -0
- package/dist/assets/src/components/picker/picker.css.ts.vanilla-Fe0YXv-c.css +47 -0
- package/dist/assets/src/components/popover/popover.css.ts.vanilla-C5YGwwVD.css +26 -0
- package/dist/assets/src/components/query-builder/query-builder.css.ts.vanilla-B3P9cbCv.css +129 -0
- package/dist/assets/src/components/radio/radio.css.ts.vanilla-gi-KedQc.css +67 -0
- package/dist/assets/src/components/search-field/search-field.css.ts.vanilla-B_JL53f8.css +62 -0
- package/dist/assets/src/components/select/select.css.ts.vanilla-C94A60jf.css +33 -0
- package/dist/assets/src/components/switch/switch.css.ts.vanilla-DkQwtRa6.css +62 -0
- package/dist/assets/src/components/tabs/tabs.css.ts.vanilla-BygIflpl.css +144 -0
- package/dist/assets/src/components/textarea/textarea.css.ts.vanilla-Ba6E5HFc.css +32 -0
- package/dist/assets/src/components/tooltip/tooltip.css.ts.vanilla-BntxAlwN.css +54 -0
- package/dist/assets/src/components/tree/tree.css.ts.vanilla-SLmhk0zZ.css +157 -0
- package/dist/assets/src/hooks/use-theme/use-theme.css.ts.vanilla-zkVHnGkP.css +6 -0
- package/dist/assets/src/styles/layers.css.ts.vanilla-B2GUgnOF.css +21 -0
- package/dist/assets/src/styles/reset.css.ts.vanilla-C8PShXm0.css +31 -0
- package/dist/assets/src/styles/space.css.ts.vanilla-Md6Whc4G.css +18 -0
- package/dist/assets/src/styles/surfaces.css.ts.vanilla-Ckztx7VT.css +24 -0
- package/dist/assets/src/styles/theme.css.ts.vanilla-aDPSIzBK.css +208 -0
- package/dist/assets/src/styles/typography.css.ts.vanilla-DRT9H7rd.css +150 -0
- package/dist/assets/styles/layers.css +21 -0
- package/dist/assets/styles/reset.css +31 -0
- package/dist/assets/styles/space.css +18 -0
- package/dist/assets/styles/surfaces.css +24 -0
- package/dist/assets/styles/theme.css +208 -0
- package/dist/assets/styles/typography.css +150 -0
- package/dist/components/aria/aria.d.ts +19 -0
- package/dist/components/aria/aria.js +36 -0
- package/dist/components/aria/aria.js.map +1 -0
- package/dist/components/aria/index.d.ts +1 -0
- package/dist/components/button/button.css.d.ts +33 -0
- package/dist/components/button/button.d.ts +39 -0
- package/dist/components/button/button.js +71 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/button.vanilla.js +8 -0
- package/dist/components/button/button.vanilla.js.map +1 -0
- package/dist/components/button/index.d.ts +3 -0
- package/dist/components/button/types.d.ts +28 -0
- package/dist/components/checkbox/checkbox.css.d.ts +35 -0
- package/dist/components/checkbox/checkbox.d.ts +21 -0
- package/dist/components/checkbox/checkbox.js +68 -0
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/checkbox/checkbox.vanilla.js +9 -0
- package/dist/components/checkbox/checkbox.vanilla.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +3 -0
- package/dist/components/checkbox/types.d.ts +38 -0
- package/dist/components/chip/chip.css.d.ts +31 -0
- package/dist/components/chip/chip.d.ts +30 -0
- package/dist/components/chip/chip.js +106 -0
- package/dist/components/chip/chip.js.map +1 -0
- package/dist/components/chip/chip.vanilla.js +8 -0
- package/dist/components/chip/chip.vanilla.js.map +1 -0
- package/dist/components/chip/index.d.ts +3 -0
- package/dist/components/chip/types.d.ts +31 -0
- package/dist/components/collection/collection.d.ts +13 -0
- package/dist/components/collection/collection.js +15 -0
- package/dist/components/collection/collection.js.map +1 -0
- package/dist/components/collection/index.d.ts +1 -0
- package/dist/components/combo-box/combo-box.css.d.ts +22 -0
- package/dist/components/combo-box/combo-box.d.ts +8 -0
- package/dist/components/combo-box/combo-box.js +87 -0
- package/dist/components/combo-box/combo-box.js.map +1 -0
- package/dist/components/combo-box/combo-box.vanilla.js +8 -0
- package/dist/components/combo-box/combo-box.vanilla.js.map +1 -0
- package/dist/components/combo-box/index.d.ts +3 -0
- package/dist/components/combo-box/types.d.ts +32 -0
- package/dist/components/dialog/dialog.css.d.ts +34 -0
- package/dist/components/dialog/dialog.d.ts +18 -0
- package/dist/components/dialog/dialog.js +146 -0
- package/dist/components/dialog/dialog.js.map +1 -0
- package/dist/components/dialog/dialog.vanilla.js +8 -0
- package/dist/components/dialog/dialog.vanilla.js.map +1 -0
- package/dist/components/dialog/index.d.ts +3 -0
- package/dist/components/dialog/types.d.ts +48 -0
- package/dist/components/drawer/drawer.css.d.ts +33 -0
- package/dist/components/drawer/drawer.d.ts +13 -0
- package/dist/components/drawer/drawer.js +199 -0
- package/dist/components/drawer/drawer.js.map +1 -0
- package/dist/components/drawer/drawer.vanilla.js +10 -0
- package/dist/components/drawer/drawer.vanilla.js.map +1 -0
- package/dist/components/drawer/index.d.ts +3 -0
- package/dist/components/drawer/types.d.ts +71 -0
- package/dist/components/element/element.d.ts +11 -0
- package/dist/components/element/element.js +21 -0
- package/dist/components/element/element.js.map +1 -0
- package/dist/components/element/index.d.ts +2 -0
- package/dist/components/element/types.d.ts +21 -0
- package/dist/components/group/group.css.d.ts +14 -0
- package/dist/components/group/group.d.ts +10 -0
- package/dist/components/group/group.js +44 -0
- package/dist/components/group/group.js.map +1 -0
- package/dist/components/group/group.vanilla.js +7 -0
- package/dist/components/group/group.vanilla.js.map +1 -0
- package/dist/components/group/index.d.ts +3 -0
- package/dist/components/group/types.d.ts +35 -0
- package/dist/components/icon/icon.css.d.ts +18 -0
- package/dist/components/icon/icon.d.ts +12 -0
- package/dist/components/icon/icon.js +26 -0
- package/dist/components/icon/icon.js.map +1 -0
- package/dist/components/icon/icon.vanilla.js +8 -0
- package/dist/components/icon/icon.vanilla.js.map +1 -0
- package/dist/components/icon/index.d.ts +3 -0
- package/dist/components/icon/types.d.ts +13 -0
- package/dist/components/index.d.ts +26 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/input.css.d.ts +29 -0
- package/dist/components/input/input.d.ts +8 -0
- package/dist/components/input/input.js +93 -0
- package/dist/components/input/input.js.map +1 -0
- package/dist/components/input/input.vanilla.js +8 -0
- package/dist/components/input/input.vanilla.js.map +1 -0
- package/dist/components/input/types.d.ts +44 -0
- package/dist/components/menu/index.d.ts +3 -0
- package/dist/components/menu/menu.css.d.ts +75 -0
- package/dist/components/menu/menu.d.ts +24 -0
- package/dist/components/menu/menu.js +155 -0
- package/dist/components/menu/menu.js.map +1 -0
- package/dist/components/menu/menu.vanilla.js +8 -0
- package/dist/components/menu/menu.vanilla.js.map +1 -0
- package/dist/components/menu/types.d.ts +48 -0
- package/dist/components/merge-provider/index.d.ts +2 -0
- package/dist/components/merge-provider/merge-provider.d.ts +14 -0
- package/dist/components/merge-provider/merge-provider.js +40 -0
- package/dist/components/merge-provider/merge-provider.js.map +1 -0
- package/dist/components/merge-provider/types.d.ts +5 -0
- package/dist/components/options/index.d.ts +3 -0
- package/dist/components/options/options.css.d.ts +79 -0
- package/dist/components/options/options.d.ts +20 -0
- package/dist/components/options/options.js +152 -0
- package/dist/components/options/options.js.map +1 -0
- package/dist/components/options/options.vanilla.js +10 -0
- package/dist/components/options/options.vanilla.js.map +1 -0
- package/dist/components/options/types.d.ts +49 -0
- package/dist/components/picker/index.d.ts +3 -0
- package/dist/components/picker/picker.css.d.ts +32 -0
- package/dist/components/picker/picker.d.ts +18 -0
- package/dist/components/picker/picker.js +46 -0
- package/dist/components/picker/picker.js.map +1 -0
- package/dist/components/picker/picker.stories.css.d.ts +3 -0
- package/dist/components/picker/picker.vanilla.js +9 -0
- package/dist/components/picker/picker.vanilla.js.map +1 -0
- package/dist/components/picker/types.d.ts +28 -0
- package/dist/components/popover/index.d.ts +3 -0
- package/dist/components/popover/popover.css.d.ts +31 -0
- package/dist/components/popover/popover.d.ts +8 -0
- package/dist/components/popover/popover.js +110 -0
- package/dist/components/popover/popover.js.map +1 -0
- package/dist/components/popover/popover.vanilla.js +7 -0
- package/dist/components/popover/popover.vanilla.js.map +1 -0
- package/dist/components/popover/types.d.ts +32 -0
- package/dist/components/query-builder/action-element.d.ts +2 -0
- package/dist/components/query-builder/action-element.js +12 -0
- package/dist/components/query-builder/action-element.js.map +1 -0
- package/dist/components/query-builder/constants.d.ts +4 -0
- package/dist/components/query-builder/constants.js +20 -0
- package/dist/components/query-builder/constants.js.map +1 -0
- package/dist/components/query-builder/dataset-sample.d.ts +91 -0
- package/dist/components/query-builder/group.d.ts +5 -0
- package/dist/components/query-builder/group.js +87 -0
- package/dist/components/query-builder/group.js.map +1 -0
- package/dist/components/query-builder/index.d.ts +5 -0
- package/dist/components/query-builder/query-builder.css.d.ts +91 -0
- package/dist/components/query-builder/query-builder.d.ts +2 -0
- package/dist/components/query-builder/query-builder.js +129 -0
- package/dist/components/query-builder/query-builder.js.map +1 -0
- package/dist/components/query-builder/query-builder.vanilla.js +10 -0
- package/dist/components/query-builder/query-builder.vanilla.js.map +1 -0
- package/dist/components/query-builder/rule.d.ts +3 -0
- package/dist/components/query-builder/rule.js +112 -0
- package/dist/components/query-builder/rule.js.map +1 -0
- package/dist/components/query-builder/types.d.ts +128 -0
- package/dist/components/query-builder/utils.d.ts +29 -0
- package/dist/components/query-builder/utils.js +22 -0
- package/dist/components/query-builder/utils.js.map +1 -0
- package/dist/components/query-builder/value-editor.d.ts +4 -0
- package/dist/components/query-builder/value-editor.js +74 -0
- package/dist/components/query-builder/value-editor.js.map +1 -0
- package/dist/components/query-builder/value-selector.d.ts +2 -0
- package/dist/components/query-builder/value-selector.js +28 -0
- package/dist/components/query-builder/value-selector.js.map +1 -0
- package/dist/components/radio/index.d.ts +3 -0
- package/dist/components/radio/radio.css.d.ts +34 -0
- package/dist/components/radio/radio.d.ts +16 -0
- package/dist/components/radio/radio.js +63 -0
- package/dist/components/radio/radio.js.map +1 -0
- package/dist/components/radio/radio.vanilla.js +8 -0
- package/dist/components/radio/radio.vanilla.js.map +1 -0
- package/dist/components/radio/types.d.ts +29 -0
- package/dist/components/search-field/index.d.ts +3 -0
- package/dist/components/search-field/search-field.css.d.ts +16 -0
- package/dist/components/search-field/search-field.d.ts +9 -0
- package/dist/components/search-field/search-field.js +60 -0
- package/dist/components/search-field/search-field.js.map +1 -0
- package/dist/components/search-field/search-field.vanilla.js +7 -0
- package/dist/components/search-field/search-field.vanilla.js.map +1 -0
- package/dist/components/search-field/types.d.ts +29 -0
- package/dist/components/select/index.d.ts +3 -0
- package/dist/components/select/select.css.d.ts +25 -0
- package/dist/components/select/select.d.ts +8 -0
- package/dist/components/select/select.js +80 -0
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/select/select.vanilla.js +8 -0
- package/dist/components/select/select.vanilla.js.map +1 -0
- package/dist/components/select/types.d.ts +30 -0
- package/dist/components/switch/index.d.ts +3 -0
- package/dist/components/switch/switch.css.d.ts +25 -0
- package/dist/components/switch/switch.d.ts +4 -0
- package/dist/components/switch/switch.js +34 -0
- package/dist/components/switch/switch.js.map +1 -0
- package/dist/components/switch/switch.vanilla.js +8 -0
- package/dist/components/switch/switch.vanilla.js.map +1 -0
- package/dist/components/switch/types.d.ts +17 -0
- package/dist/components/tabs/index.d.ts +3 -0
- package/dist/components/tabs/tabs.css.d.ts +49 -0
- package/dist/components/tabs/tabs.d.ts +68 -0
- package/dist/components/tabs/tabs.js +108 -0
- package/dist/components/tabs/tabs.js.map +1 -0
- package/dist/components/tabs/tabs.vanilla.js +11 -0
- package/dist/components/tabs/tabs.vanilla.js.map +1 -0
- package/dist/components/tabs/types.d.ts +82 -0
- package/dist/components/textarea/index.d.ts +3 -0
- package/dist/components/textarea/textarea.css.d.ts +31 -0
- package/dist/components/textarea/textarea.d.ts +14 -0
- package/dist/components/textarea/textarea.js +86 -0
- package/dist/components/textarea/textarea.js.map +1 -0
- package/dist/components/textarea/textarea.vanilla.js +8 -0
- package/dist/components/textarea/textarea.vanilla.js.map +1 -0
- package/dist/components/textarea/types.d.ts +39 -0
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/tooltip.css.d.ts +23 -0
- package/dist/components/tooltip/tooltip.d.ts +23 -0
- package/dist/components/tooltip/tooltip.js +69 -0
- package/dist/components/tooltip/tooltip.js.map +1 -0
- package/dist/components/tooltip/tooltip.vanilla.js +8 -0
- package/dist/components/tooltip/tooltip.vanilla.js.map +1 -0
- package/dist/components/tooltip/types.d.ts +39 -0
- package/dist/components/tree/index.d.ts +3 -0
- package/dist/components/tree/tree.css.d.ts +73 -0
- package/dist/components/tree/tree.d.ts +5 -0
- package/dist/components/tree/tree.js +337 -0
- package/dist/components/tree/tree.js.map +1 -0
- package/dist/components/tree/tree.vanilla.js +11 -0
- package/dist/components/tree/tree.vanilla.js.map +1 -0
- package/dist/components/tree/types.d.ts +114 -0
- package/dist/components/tree/utils.d.ts +8 -0
- package/dist/components/tree/utils.js +75 -0
- package/dist/components/tree/utils.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/use-collection-render/index.d.ts +1 -0
- package/dist/hooks/use-collection-render/use-collection-render.d.ts +9 -0
- package/dist/hooks/use-collection-render/use-collection-render.js +20 -0
- package/dist/hooks/use-collection-render/use-collection-render.js.map +1 -0
- package/dist/hooks/use-context-props/index.d.ts +1 -0
- package/dist/hooks/use-context-props/use-context-props.d.ts +7 -0
- package/dist/hooks/use-context-props/use-context-props.js +15 -0
- package/dist/hooks/use-context-props/use-context-props.js.map +1 -0
- package/dist/hooks/use-defaults/index.d.ts +2 -0
- package/dist/hooks/use-defaults/types.d.ts +67 -0
- package/dist/hooks/use-defaults/use-defaults.d.ts +56 -0
- package/dist/hooks/use-defaults/use-defaults.js +21 -0
- package/dist/hooks/use-defaults/use-defaults.js.map +1 -0
- package/dist/hooks/use-propagating-press/index.d.ts +1 -0
- package/dist/hooks/use-propagating-press/use-propagating-press.d.ts +9 -0
- package/dist/hooks/use-propagating-press/use-propagating-press.js +14 -0
- package/dist/hooks/use-propagating-press/use-propagating-press.js.map +1 -0
- package/dist/hooks/use-slot/index.d.ts +1 -0
- package/dist/hooks/use-slot/use-slot.d.ts +13 -0
- package/dist/hooks/use-slot/use-slot.js +18 -0
- package/dist/hooks/use-slot/use-slot.js.map +1 -0
- package/dist/hooks/use-theme/index.d.ts +2 -0
- package/dist/hooks/use-theme/types.d.ts +86 -0
- package/dist/hooks/use-theme/use-theme.css.d.ts +1 -0
- package/dist/hooks/use-theme/use-theme.d.ts +13 -0
- package/dist/hooks/use-theme/use-theme.js +64 -0
- package/dist/hooks/use-theme/use-theme.js.map +1 -0
- package/dist/hooks/use-theme/use-theme.vanilla.js +4 -0
- package/dist/hooks/use-theme/use-theme.vanilla.js.map +1 -0
- package/dist/hooks/use-tree/index.d.ts +1 -0
- package/dist/hooks/use-tree/use-tree.d.ts +2 -0
- package/dist/hooks/use-tree/use-tree.js +217 -0
- package/dist/hooks/use-tree/use-tree.js.map +1 -0
- package/dist/hooks/use-tree/utils.d.ts +6 -0
- package/dist/hooks/use-tree/utils.js +77 -0
- package/dist/hooks/use-tree/utils.js.map +1 -0
- package/dist/hooks/use-update-effect/index.d.ts +1 -0
- package/dist/hooks/use-update-effect/use-update-effect.d.ts +1 -0
- package/dist/hooks/use-update-effect/use-update-effect.js +20 -0
- package/dist/hooks/use-update-effect/use-update-effect.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +66 -0
- package/dist/index.js.map +1 -0
- package/dist/ladle/actions.d.ts +1 -0
- package/dist/ladle/index.d.ts +1 -0
- package/dist/styles/index.d.ts +6 -0
- package/dist/styles/layers.css.d.ts +16 -0
- package/dist/styles/layers.vanilla.js +4 -0
- package/dist/styles/layers.vanilla.js.map +1 -0
- package/dist/styles/reset.css.d.ts +1 -0
- package/dist/styles/space.css.d.ts +1 -0
- package/dist/styles/surfaces.css.d.ts +4 -0
- package/dist/styles/surfaces.vanilla.js +4 -0
- package/dist/styles/surfaces.vanilla.js.map +1 -0
- package/dist/styles/theme.css.d.ts +334 -0
- package/dist/styles/theme.vanilla.js +31 -0
- package/dist/styles/theme.vanilla.js.map +1 -0
- package/dist/styles/typography.css.d.ts +17 -0
- package/dist/styles/typography.vanilla.js +8 -0
- package/dist/styles/typography.vanilla.js.map +1 -0
- package/dist/styles.css +2018 -0
- package/dist/test/setup.d.ts +1 -0
- package/dist/types/deckgl.d.ts +1 -0
- package/dist/types/generic.d.ts +3 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/props.d.ts +4 -0
- package/dist/types/react-aria.d.ts +91 -0
- package/dist/types/use-tree.d.ts +52 -0
- package/dist/types/vanilla-extract.d.ts +15 -0
- package/dist/utils/css.d.ts +139 -0
- package/dist/utils/css.js +145 -0
- package/dist/utils/css.js.map +1 -0
- package/dist/utils/events.d.ts +10 -0
- package/dist/utils/events.js +5 -0
- package/dist/utils/events.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/props.d.ts +29 -0
- package/dist/utils/props.js +108 -0
- package/dist/utils/props.js.map +1 -0
- package/dist/utils/validators.d.ts +49 -0
- package/dist/utils/validators.js +37 -0
- package/dist/utils/validators.js.map +1 -0
- package/dist/vanilla.d.ts +30 -0
- package/dist/vanilla.js +27 -0
- package/package.json +19 -7
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ContextValue } from 'react-aria-components';
|
|
2
|
+
import type { TooltipMapping, TooltipProps, TooltipTargetProps } from './types';
|
|
3
|
+
export declare const TooltipContext: import("react").Context<ContextValue<TooltipProps, HTMLDivElement>>;
|
|
4
|
+
export declare const Tooltip: (props: Omit<import("react-aria-components").TooltipProps, "className" | "style" | "UNSTABLE_portalContainer"> & {
|
|
5
|
+
classNames?: import("./types").TooltipClassNames;
|
|
6
|
+
mapping?: Partial<TooltipMapping>;
|
|
7
|
+
} & {
|
|
8
|
+
children?: import("../..").RenderPropsChildren<import("./types").TooltipRenderProps>;
|
|
9
|
+
} & import("react").RefAttributes<HTMLDivElement>) => import("react").ReactElement | null;
|
|
10
|
+
export declare const TooltipTargetContext: import("react").Context<ContextValue<TooltipTargetProps, HTMLDivElement>>;
|
|
11
|
+
/**
|
|
12
|
+
* This target component is only needed if attempting to add a Tooltip
|
|
13
|
+
* to a non-focusable element/component
|
|
14
|
+
*/
|
|
15
|
+
export declare const TooltipTarget: (props: {
|
|
16
|
+
classNames?: import("./types").TooltipClassNames;
|
|
17
|
+
mapping?: Partial<TooltipMapping>;
|
|
18
|
+
} & {
|
|
19
|
+
focusable?: boolean;
|
|
20
|
+
relative?: "parent" | "self";
|
|
21
|
+
} & {
|
|
22
|
+
children?: import("react").ReactNode | undefined;
|
|
23
|
+
} & import("react").RefAttributes<HTMLDivElement>) => import("react").ReactElement | null;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { createContext, forwardRef, useMemo, useCallback } from 'react';
|
|
3
|
+
import { useFocusable } from 'react-aria';
|
|
4
|
+
import { useContextProps, Tooltip as Tooltip$1 } from 'react-aria-components';
|
|
5
|
+
import { inlineVars } from '../../utils/css.js';
|
|
6
|
+
import { mergeClassNames, callRenderProps } from '../../utils/props.js';
|
|
7
|
+
import { useDefaultProps } from '../../hooks/use-defaults/use-defaults.js';
|
|
8
|
+
import { useTheme } from '../../hooks/use-theme/use-theme.js';
|
|
9
|
+
import { bodies } from '../../styles/typography.vanilla.js';
|
|
10
|
+
import { tooltipClassNames, tooltipStateVars, tooltipTargetStateVars } from './tooltip.vanilla.js';
|
|
11
|
+
|
|
12
|
+
const defaultMapping = {
|
|
13
|
+
font: bodies.xs
|
|
14
|
+
};
|
|
15
|
+
const TooltipContext = createContext(null);
|
|
16
|
+
const Tooltip = forwardRef(function Tooltip2(props, ref) {
|
|
17
|
+
[props, ref] = useContextProps(props, ref, TooltipContext);
|
|
18
|
+
props = useDefaultProps(props, "Tooltip");
|
|
19
|
+
const { children: childrenProp, classNames: classNamesProp, containerPadding, crossOffset, mapping: mappingProp, offset, ...rest } = props;
|
|
20
|
+
const theme = useTheme();
|
|
21
|
+
const mapping = useMemo(() => ({
|
|
22
|
+
...defaultMapping,
|
|
23
|
+
...mappingProp
|
|
24
|
+
}), [mappingProp]);
|
|
25
|
+
const classNames = useMemo(() => mergeClassNames(tooltipClassNames, theme.Tooltip, classNamesProp, {
|
|
26
|
+
tooltip: {
|
|
27
|
+
container: theme.className,
|
|
28
|
+
tooltip: mapping.font
|
|
29
|
+
}
|
|
30
|
+
}), [theme.Tooltip, classNamesProp, theme.className, mapping]);
|
|
31
|
+
const style = useCallback(({ state, ...renderProps }) => ({
|
|
32
|
+
...theme.style,
|
|
33
|
+
...inlineVars(tooltipStateVars, {
|
|
34
|
+
containerPadding,
|
|
35
|
+
crossOffset,
|
|
36
|
+
offset,
|
|
37
|
+
...renderProps,
|
|
38
|
+
isOpen: state.isOpen
|
|
39
|
+
})
|
|
40
|
+
}), [theme.style, containerPadding, crossOffset, offset]);
|
|
41
|
+
const children = useCallback((renderProps) => jsx("div", { className: classNames?.tooltip?.tooltip, children: callRenderProps(childrenProp, {
|
|
42
|
+
...renderProps,
|
|
43
|
+
isOpen: renderProps.state.isOpen
|
|
44
|
+
}) }), [classNames?.tooltip?.tooltip, childrenProp]);
|
|
45
|
+
return jsx(Tooltip$1, { ...rest, ref, className: classNames?.tooltip?.container, style, children });
|
|
46
|
+
});
|
|
47
|
+
const TooltipTargetContext = createContext(null);
|
|
48
|
+
const TooltipTarget = forwardRef(function TooltipTarget2(props, ref) {
|
|
49
|
+
[props, ref] = useContextProps(props, ref, TooltipTargetContext);
|
|
50
|
+
props = useDefaultProps(props, "TooltipTarget");
|
|
51
|
+
const { children, classNames: classNamesProp, focusable = true, relative = "self" } = props;
|
|
52
|
+
const { focusableProps } = useFocusable({}, ref);
|
|
53
|
+
const theme = useTheme();
|
|
54
|
+
const classNames = useMemo(() => mergeClassNames(tooltipClassNames, theme.Tooltip, classNamesProp), [theme.Tooltip, classNamesProp]);
|
|
55
|
+
const style = useMemo(() => inlineVars(tooltipTargetStateVars, {
|
|
56
|
+
focusable,
|
|
57
|
+
relative
|
|
58
|
+
}), [focusable, relative]);
|
|
59
|
+
return jsx("div", { className: classNames?.target?.container, style, children: jsx("div", {
|
|
60
|
+
...focusableProps,
|
|
61
|
+
ref,
|
|
62
|
+
className: classNames?.target?.target,
|
|
63
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
|
|
64
|
+
tabIndex: focusable ? 0 : void 0,
|
|
65
|
+
children
|
|
66
|
+
}) });
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
export { Tooltip, TooltipContext, TooltipTarget, TooltipTargetContext };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.js","sources":["../../../src/components/tooltip/tooltip.tsx"],"sourcesContent":["import {\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport { useFocusable } from 'react-aria';\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"],"names":["Tooltip","RACTooltip","TooltipTarget"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
var tooltipClassNames = { tooltip: { container: "tooltip_tooltipClassNames_tooltip_container__sg5iyrd", tooltip: "tooltip_tooltipClassNames_tooltip_tooltip__sg5iyre surfaces_proud__15mw6jf5 surfaces_flush__15mw6jf4" }, target: { container: "tooltip_tooltipClassNames_target_container__sg5iyrf", target: "tooltip_tooltipClassNames_target_target__sg5iyrg" } };
|
|
3
|
+
var tooltipContainers = { tooltip: "tooltip_tooltipContainers_tooltip__sg5iyr0", target: "tooltip_tooltipContainers_target__sg5iyr1" };
|
|
4
|
+
var tooltipSpaceVars = { x: "var(--x__sg5iyr2)", y: "var(--y__sg5iyr3)" };
|
|
5
|
+
var tooltipStateVars = { containerPadding: "var(--containerPadding__sg5iyr4)", crossOffset: "var(--crossOffset__sg5iyr5)", offset: "var(--offset__sg5iyr6)", placement: "var(--placement__sg5iyr7)", isEntering: "var(--isEntering__sg5iyr8)", isExiting: "var(--isExiting__sg5iyr9)", isOpen: "var(--isOpen__sg5iyra)" };
|
|
6
|
+
var tooltipTargetStateVars = { focusable: "var(--focusable__sg5iyrb)", relative: "var(--relative__sg5iyrc)" };
|
|
7
|
+
|
|
8
|
+
export { tooltipClassNames, tooltipContainers, tooltipSpaceVars, tooltipStateVars, tooltipTargetStateVars };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.vanilla.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { PropsWithChildren } from 'react';
|
|
2
|
+
import type { TooltipProps as RACTooltipProps, TooltipRenderProps as RACTooltipRenderProps } from 'react-aria-components';
|
|
3
|
+
import type { PartialDeep } from 'type-fest';
|
|
4
|
+
import type { RenderPropsChildren } from '../../types';
|
|
5
|
+
export type TooltipClassNames = PartialDeep<{
|
|
6
|
+
tooltip: {
|
|
7
|
+
container: string;
|
|
8
|
+
tooltip: string;
|
|
9
|
+
};
|
|
10
|
+
target: {
|
|
11
|
+
container: string;
|
|
12
|
+
target: string;
|
|
13
|
+
};
|
|
14
|
+
}>;
|
|
15
|
+
export type TooltipMapping = {
|
|
16
|
+
font: string;
|
|
17
|
+
};
|
|
18
|
+
export type TooltipRenderProps = RACTooltipRenderProps & {
|
|
19
|
+
/**
|
|
20
|
+
* If the tooltip is visible
|
|
21
|
+
*/
|
|
22
|
+
isOpen: boolean;
|
|
23
|
+
};
|
|
24
|
+
type BaseProps = {
|
|
25
|
+
classNames?: TooltipClassNames;
|
|
26
|
+
mapping?: Partial<TooltipMapping>;
|
|
27
|
+
};
|
|
28
|
+
type BaseTooltipProps = BaseProps & {
|
|
29
|
+
children?: RenderPropsChildren<TooltipRenderProps>;
|
|
30
|
+
};
|
|
31
|
+
type BaseTooltipTargetProps = BaseProps & {
|
|
32
|
+
focusable?: boolean;
|
|
33
|
+
relative?: 'parent' | 'self';
|
|
34
|
+
};
|
|
35
|
+
export type TooltipState = Omit<TooltipRenderProps, 'state'> & Required<Pick<RACTooltipProps, 'containerPadding' | 'crossOffset' | 'offset'>>;
|
|
36
|
+
export type TooltipTargetState = Required<Pick<BaseTooltipTargetProps, 'focusable' | 'relative'>>;
|
|
37
|
+
export type TooltipProps = Omit<RACTooltipProps, 'className' | 'style' | 'UNSTABLE_portalContainer'> & BaseTooltipProps;
|
|
38
|
+
export type TooltipTargetProps = PropsWithChildren<BaseTooltipTargetProps>;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { Tree, TreeGroup, TreeItem, TreeStateContext } from './tree';
|
|
2
|
+
export { treeClassNames, treeColorVars, treeContainers, treeGroupStateVars, treeIndicatorStateVars, treeItemStateVars, treeSpaceVars, treeStateVars, } from './tree.css';
|
|
3
|
+
export { type TreeClassNames, type TreeGroupProps, type TreeGroupRenderProps, type TreeGroupState, type TreeIndicatorRenderProps, type TreeIndicatorState, type TreeItemProps, type TreeItemRenderProps, type TreeItemState, type TreeMapping, type TreeProps, type TreeRenderProps, type TreeSizes, type TreeState, type TreeStateContextValue, } from './types';
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { TreeClassNames } from './types';
|
|
2
|
+
export declare const treeContainers: {
|
|
3
|
+
tree: string;
|
|
4
|
+
group: string;
|
|
5
|
+
item: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const treeColorVars: {
|
|
8
|
+
bar: {
|
|
9
|
+
background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
10
|
+
border: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
11
|
+
color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
12
|
+
};
|
|
13
|
+
indicator: {
|
|
14
|
+
background: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
15
|
+
border: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
16
|
+
color: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare const treeSpaceVars: {
|
|
20
|
+
bar: {
|
|
21
|
+
x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
22
|
+
y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
23
|
+
};
|
|
24
|
+
description: {
|
|
25
|
+
x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
26
|
+
y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
27
|
+
};
|
|
28
|
+
empty: {
|
|
29
|
+
x: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
30
|
+
y: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export declare const treeStateVars: {
|
|
34
|
+
allowsDragging: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
35
|
+
allowsExpansion: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
36
|
+
allowsVisibility: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
37
|
+
showTreeLines: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
38
|
+
size: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
39
|
+
};
|
|
40
|
+
export declare const treeGroupStateVars: {
|
|
41
|
+
count: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
42
|
+
layout: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
43
|
+
isDropTarget: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
44
|
+
isEmpty: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
45
|
+
isFocused: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
46
|
+
isFocusVisible: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
47
|
+
};
|
|
48
|
+
export declare const treeIndicatorStateVars: {
|
|
49
|
+
dropPosition: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
50
|
+
isDropTarget: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
51
|
+
};
|
|
52
|
+
export declare const treeItemStateVars: {
|
|
53
|
+
allowsDragging: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
54
|
+
count: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
55
|
+
index: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
56
|
+
selectionMode: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
57
|
+
selectionBehavior: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
58
|
+
isDisabled: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
59
|
+
isDragging: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
60
|
+
isDropTarget: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
61
|
+
isExpanded: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
62
|
+
isFirstChild: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
63
|
+
isFocused: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
64
|
+
isFocusVisible: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
65
|
+
isGroup: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
66
|
+
isHovered: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
67
|
+
isLastChild: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
68
|
+
isPressed: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
69
|
+
isSelected: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
70
|
+
isViewable: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
71
|
+
isVisible: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
|
|
72
|
+
};
|
|
73
|
+
export declare const treeClassNames: TreeClassNames;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { TreeGroupProps, TreeItemProps, TreeProps, TreeStateContextValue } from './types';
|
|
2
|
+
export declare const TreeStateContext: import("react").Context<TreeStateContextValue<any>>;
|
|
3
|
+
export declare function Tree<T>(props: TreeProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare function TreeGroup<T>({ id, children, nodes, types, ...rest }: TreeGroupProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function TreeItem<T>({ children: childrenProp, index, mapping: mappingProp, node, isFirstChild, isLastChild, ...rest }: TreeItemProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { noop } from 'lodash';
|
|
3
|
+
import { createContext, useMemo, useCallback, useContext } from 'react';
|
|
4
|
+
import { usePress } from 'react-aria';
|
|
5
|
+
import { Provider, DropIndicator, useDragAndDrop, GridList, DEFAULT_SLOT, ButtonContext as ButtonContext$1, GridListItem } from 'react-aria-components';
|
|
6
|
+
import { inlineVars } from '../../utils/css.js';
|
|
7
|
+
import { mergeClassNames, callRenderProps } from '../../utils/props.js';
|
|
8
|
+
import { useDefaultProps } from '../../hooks/use-defaults/use-defaults.js';
|
|
9
|
+
import { useTheme } from '../../hooks/use-theme/use-theme.js';
|
|
10
|
+
import { useTree } from '../../hooks/use-tree/use-tree.js';
|
|
11
|
+
import { bodies } from '../../styles/typography.vanilla.js';
|
|
12
|
+
import { AriaTextContext } from '../aria/aria.js';
|
|
13
|
+
import { ToggleButtonContext, ButtonContext, Button } from '../button/button.js';
|
|
14
|
+
import { CheckboxContext } from '../checkbox/checkbox.js';
|
|
15
|
+
import { GroupContext } from '../group/group.js';
|
|
16
|
+
import { Icon } from '../icon/icon.js';
|
|
17
|
+
import { MergeProvider } from '../merge-provider/merge-provider.js';
|
|
18
|
+
import { treeClassNames, treeStateVars, treeIndicatorStateVars, treeGroupStateVars, treeItemStateVars } from './tree.vanilla.js';
|
|
19
|
+
import { createDragAndDropHandlers } from './utils.js';
|
|
20
|
+
|
|
21
|
+
const emptyTree = {
|
|
22
|
+
key: "",
|
|
23
|
+
parentKey: "",
|
|
24
|
+
children: [],
|
|
25
|
+
value: { id: "", label: "" }
|
|
26
|
+
};
|
|
27
|
+
const defaultMapping = {
|
|
28
|
+
actions: {
|
|
29
|
+
sm: {},
|
|
30
|
+
lg: {}
|
|
31
|
+
},
|
|
32
|
+
button: {
|
|
33
|
+
sm: { size: "sm", variant: "icon" },
|
|
34
|
+
lg: { size: "md", variant: "icon" }
|
|
35
|
+
},
|
|
36
|
+
description: {
|
|
37
|
+
sm: bodies.sm,
|
|
38
|
+
lg: bodies.md
|
|
39
|
+
},
|
|
40
|
+
drag: {
|
|
41
|
+
sm: {},
|
|
42
|
+
lg: {}
|
|
43
|
+
},
|
|
44
|
+
expansion: {
|
|
45
|
+
sm: {},
|
|
46
|
+
lg: {}
|
|
47
|
+
},
|
|
48
|
+
visibility: {
|
|
49
|
+
sm: {},
|
|
50
|
+
lg: {}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const defaultSize = "lg";
|
|
54
|
+
const TreeStateContext = createContext({
|
|
55
|
+
allowsDragging: true,
|
|
56
|
+
allowsExpansion: true,
|
|
57
|
+
allowsVisibility: false,
|
|
58
|
+
lookup: {},
|
|
59
|
+
selectedKeys: /* @__PURE__ */ new Set(),
|
|
60
|
+
selectionMode: "none",
|
|
61
|
+
tree: emptyTree,
|
|
62
|
+
actions: {
|
|
63
|
+
append: noop,
|
|
64
|
+
getItem: () => emptyTree,
|
|
65
|
+
insert: noop,
|
|
66
|
+
insertAfter: noop,
|
|
67
|
+
insertBefore: noop,
|
|
68
|
+
move: noop,
|
|
69
|
+
prepend: noop,
|
|
70
|
+
remove: noop,
|
|
71
|
+
removeSelectedItems: noop,
|
|
72
|
+
revertIsExpanded: noop,
|
|
73
|
+
setSelectedKeys: noop,
|
|
74
|
+
toggleIsExpanded: noop,
|
|
75
|
+
toggleIsSelected: noop,
|
|
76
|
+
toggleIsViewable: noop,
|
|
77
|
+
update: noop
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
function defaultRenderEmptyState({ isDropTarget }) {
|
|
81
|
+
return isDropTarget ? "Add to this group" : "Nothing to see here";
|
|
82
|
+
}
|
|
83
|
+
function Tree(props) {
|
|
84
|
+
props = useDefaultProps(props, "Tree");
|
|
85
|
+
const { children: childrenProp, allowsDragging = false, allowsExpansion = true, allowsVisibility = false, classNames: classNamesProps, disabledBehavior = "all", keyboardNavigationBehavior = "arrow", mapping: mappingProp, nodes, provider, renderDragPreview, renderEmptyState: renderEmptyStateProp = defaultRenderEmptyState, selectionBehavior = "replace", selectionMode = "none", showTreeLines = true, size = defaultSize, onAction, onScroll, onSelectionChange, onUpdate, ...rest } = props;
|
|
86
|
+
const state = useTree({
|
|
87
|
+
allowsExpansion,
|
|
88
|
+
allowsVisibility,
|
|
89
|
+
nodes,
|
|
90
|
+
selectionMode,
|
|
91
|
+
onSelectionChange,
|
|
92
|
+
onUpdate
|
|
93
|
+
});
|
|
94
|
+
const theme = useTheme();
|
|
95
|
+
const mapping = useMemo(() => ({
|
|
96
|
+
...defaultMapping,
|
|
97
|
+
...mappingProp
|
|
98
|
+
}), [mappingProp]);
|
|
99
|
+
const classNames = useMemo(() => mergeClassNames(treeClassNames, theme.Tree, classNamesProps, {
|
|
100
|
+
item: {
|
|
101
|
+
description: mapping.description[size]
|
|
102
|
+
}
|
|
103
|
+
}) ?? {}, [theme.Tree, classNamesProps, mapping, size]);
|
|
104
|
+
const renderEmptyState = useCallback((renderProps) => jsx("div", { className: classNames?.empty, children: renderEmptyStateProp(renderProps) }), [classNames?.empty, renderEmptyStateProp]);
|
|
105
|
+
const context = useMemo(() => [
|
|
106
|
+
[
|
|
107
|
+
TreeStateContext,
|
|
108
|
+
{
|
|
109
|
+
...state,
|
|
110
|
+
allowsDragging,
|
|
111
|
+
classNames,
|
|
112
|
+
disabledBehavior,
|
|
113
|
+
keyboardNavigationBehavior,
|
|
114
|
+
renderDragPreview,
|
|
115
|
+
renderEmptyState,
|
|
116
|
+
selectionBehavior,
|
|
117
|
+
selectionMode,
|
|
118
|
+
showTreeLines,
|
|
119
|
+
size,
|
|
120
|
+
onAction,
|
|
121
|
+
onScroll
|
|
122
|
+
}
|
|
123
|
+
]
|
|
124
|
+
], [
|
|
125
|
+
state,
|
|
126
|
+
allowsDragging,
|
|
127
|
+
classNames,
|
|
128
|
+
disabledBehavior,
|
|
129
|
+
keyboardNavigationBehavior,
|
|
130
|
+
renderDragPreview,
|
|
131
|
+
renderEmptyState,
|
|
132
|
+
selectionBehavior,
|
|
133
|
+
selectionMode,
|
|
134
|
+
showTreeLines,
|
|
135
|
+
size,
|
|
136
|
+
onAction,
|
|
137
|
+
onScroll
|
|
138
|
+
]);
|
|
139
|
+
const style = useMemo(() => inlineVars(treeStateVars, {
|
|
140
|
+
allowsDragging,
|
|
141
|
+
allowsExpansion: state.allowsExpansion,
|
|
142
|
+
allowsVisibility: state.allowsVisibility,
|
|
143
|
+
showTreeLines,
|
|
144
|
+
size
|
|
145
|
+
}), [
|
|
146
|
+
allowsDragging,
|
|
147
|
+
state.allowsExpansion,
|
|
148
|
+
state.allowsVisibility,
|
|
149
|
+
showTreeLines,
|
|
150
|
+
size
|
|
151
|
+
]);
|
|
152
|
+
const children = useMemo(() => {
|
|
153
|
+
const treeGroupProps = {
|
|
154
|
+
...rest,
|
|
155
|
+
id: state.tree.key,
|
|
156
|
+
nodes: state.tree.children
|
|
157
|
+
};
|
|
158
|
+
return provider ? callRenderProps(childrenProp, { ...state, treeGroupProps }) : jsx(TreeGroup, { ...treeGroupProps, children: childrenProp });
|
|
159
|
+
}, [rest, provider, childrenProp, state]);
|
|
160
|
+
return jsx(Provider, { values: context, children: jsx("div", { className: classNames?.tree?.container, style, children: jsx("div", { className: classNames?.tree?.tree, children }) }) });
|
|
161
|
+
}
|
|
162
|
+
function TreeGroup({ id, children, nodes, types = ["all"], ...rest }) {
|
|
163
|
+
const { actions, allowsDragging, classNames, disabledBehavior, keyboardNavigationBehavior, lookup, renderDragPreview, renderEmptyState, selectedKeys, selectionBehavior, selectionMode, onAction, onScroll } = useContext(TreeStateContext);
|
|
164
|
+
const acceptedDragTypes = useMemo(() => types.map((type) => `tree-${type}`), [types]);
|
|
165
|
+
const renderDropIndicator = useCallback((target) => jsx(DropIndicator, {
|
|
166
|
+
className: classNames?.indicator?.container,
|
|
167
|
+
// eslint-disable-next-line react-perf/jsx-no-new-function-as-prop, react/jsx-no-bind
|
|
168
|
+
style: (renderProps) => inlineVars(treeIndicatorStateVars, {
|
|
169
|
+
...renderProps,
|
|
170
|
+
dropPosition: "dropPosition" in target ? target.dropPosition : "root"
|
|
171
|
+
}),
|
|
172
|
+
target,
|
|
173
|
+
children: jsx("div", { className: classNames?.indicator?.indicator })
|
|
174
|
+
}), [classNames?.indicator?.container, classNames?.indicator?.indicator]);
|
|
175
|
+
const { dragAndDropHooks } = useDragAndDrop({
|
|
176
|
+
isDisabled: !allowsDragging,
|
|
177
|
+
renderDragPreview,
|
|
178
|
+
renderDropIndicator,
|
|
179
|
+
...createDragAndDropHandlers(id, acceptedDragTypes, lookup, actions)
|
|
180
|
+
});
|
|
181
|
+
const style = useCallback((renderProps) => inlineVars(treeGroupStateVars, { ...renderProps, count: nodes.length }), [nodes.length]);
|
|
182
|
+
const indices = useMemo(() => nodes.reduce((acc, node, index) => {
|
|
183
|
+
acc[node.key] = index;
|
|
184
|
+
return acc;
|
|
185
|
+
}, {}), [nodes]);
|
|
186
|
+
return jsx(GridList, { ...rest, className: classNames?.group, disabledBehavior, dragAndDropHooks, items: nodes, keyboardNavigationBehavior, renderEmptyState, selectedKeys, selectionBehavior, selectionMode, style, onAction, onScroll, children: (item) => jsx(TreeItem, { index: indices[item.key] ?? -1, node: item, isFirstChild: indices[item.key] === 0, isLastChild: indices[item.key] === nodes.length - 1, children }) });
|
|
187
|
+
}
|
|
188
|
+
const contextBlocker = [
|
|
189
|
+
[ToggleButtonContext, null],
|
|
190
|
+
[AriaTextContext, null],
|
|
191
|
+
[GroupContext, null],
|
|
192
|
+
[CheckboxContext, null],
|
|
193
|
+
[ButtonContext, null],
|
|
194
|
+
[ButtonContext$1, null]
|
|
195
|
+
];
|
|
196
|
+
function TreeItem({ children: childrenProp, index, mapping: mappingProp, node, isFirstChild, isLastChild, ...rest }) {
|
|
197
|
+
const { actions, allowsExpansion, classNames, size: sizeProp } = useContext(TreeStateContext);
|
|
198
|
+
const mapping = useMemo(() => ({
|
|
199
|
+
...defaultMapping,
|
|
200
|
+
...mappingProp
|
|
201
|
+
}), [mappingProp]);
|
|
202
|
+
const selection = useMemo(() => /* @__PURE__ */ new Set([node.key]), [node.key]);
|
|
203
|
+
const handleToggleExpansion = useCallback(() => actions.toggleIsExpanded(selection), [actions, selection]);
|
|
204
|
+
const handleToggleSelection = useCallback(() => actions.toggleIsSelected(selection), [actions, selection]);
|
|
205
|
+
const handleToggleVisibility = useCallback(() => actions.toggleIsViewable(selection), [actions, selection]);
|
|
206
|
+
const { pressProps } = usePress({
|
|
207
|
+
onPress: handleToggleExpansion
|
|
208
|
+
});
|
|
209
|
+
const style = useCallback((renderProps) => inlineVars(treeItemStateVars, {
|
|
210
|
+
...renderProps,
|
|
211
|
+
count: node.children.length,
|
|
212
|
+
index,
|
|
213
|
+
isExpanded: "nodes" in node.value ? !!node.value.isExpanded : false,
|
|
214
|
+
isFirstChild,
|
|
215
|
+
isGroup: "nodes" in node.value,
|
|
216
|
+
isLastChild,
|
|
217
|
+
isViewable: !!node.value.isViewable,
|
|
218
|
+
isVisible: !!node.value.isVisible
|
|
219
|
+
}), [node.children.length, node.value, index, isFirstChild, isLastChild]);
|
|
220
|
+
const context = useMemo(() => {
|
|
221
|
+
const size = sizeProp ?? defaultSize;
|
|
222
|
+
const buttonProps = mapping.button[size] ?? {};
|
|
223
|
+
return [
|
|
224
|
+
[
|
|
225
|
+
ToggleButtonContext,
|
|
226
|
+
{
|
|
227
|
+
slots: {
|
|
228
|
+
[DEFAULT_SLOT]: buttonProps,
|
|
229
|
+
expansion: {
|
|
230
|
+
...buttonProps,
|
|
231
|
+
...mapping.expansion[size],
|
|
232
|
+
classNames: classNames?.item?.expansion,
|
|
233
|
+
isSelected: "nodes" in node.value ? !!node.value.isExpanded : void 0,
|
|
234
|
+
onPress: handleToggleExpansion
|
|
235
|
+
},
|
|
236
|
+
visibility: {
|
|
237
|
+
...buttonProps,
|
|
238
|
+
...mapping.visibility[size],
|
|
239
|
+
classNames: classNames?.item?.visibility,
|
|
240
|
+
isSelected: !!node.value.isViewable,
|
|
241
|
+
onPress: handleToggleVisibility
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
],
|
|
246
|
+
[
|
|
247
|
+
AriaTextContext,
|
|
248
|
+
{
|
|
249
|
+
slots: {
|
|
250
|
+
[DEFAULT_SLOT]: {},
|
|
251
|
+
description: {
|
|
252
|
+
..."nodes" in node.value ? pressProps : {},
|
|
253
|
+
className: classNames?.item?.description,
|
|
254
|
+
children: node.value.label
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
[
|
|
260
|
+
GroupContext,
|
|
261
|
+
{
|
|
262
|
+
slots: {
|
|
263
|
+
[DEFAULT_SLOT]: {},
|
|
264
|
+
actions: {
|
|
265
|
+
classNames: classNames?.item?.actions,
|
|
266
|
+
context: ButtonContext,
|
|
267
|
+
values: buttonProps
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
],
|
|
272
|
+
[
|
|
273
|
+
CheckboxContext,
|
|
274
|
+
{
|
|
275
|
+
slots: {
|
|
276
|
+
[DEFAULT_SLOT]: {},
|
|
277
|
+
selection: {
|
|
278
|
+
classNames: classNames?.item?.selection,
|
|
279
|
+
onChange: handleToggleSelection
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
],
|
|
284
|
+
[
|
|
285
|
+
ButtonContext,
|
|
286
|
+
{
|
|
287
|
+
slots: {
|
|
288
|
+
[DEFAULT_SLOT]: buttonProps,
|
|
289
|
+
drag: {
|
|
290
|
+
...buttonProps,
|
|
291
|
+
...mapping.drag[size],
|
|
292
|
+
classNames: classNames?.item?.drag
|
|
293
|
+
},
|
|
294
|
+
// We use a non-interactive Button for the lines to try and simplify the
|
|
295
|
+
// consistent use of space when rendered in alignment with other Buttons
|
|
296
|
+
lines: {
|
|
297
|
+
...buttonProps,
|
|
298
|
+
classNames: classNames?.item?.lines,
|
|
299
|
+
isDisabled: true
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
],
|
|
304
|
+
// Need to expand the RAC ButtonContext to allow for additional slots
|
|
305
|
+
[ButtonContext$1, { slots: { [DEFAULT_SLOT]: {}, lines: {} } }]
|
|
306
|
+
];
|
|
307
|
+
}, [
|
|
308
|
+
classNames?.item?.lines,
|
|
309
|
+
classNames?.item?.expansion,
|
|
310
|
+
classNames?.item?.visibility,
|
|
311
|
+
classNames?.item?.description,
|
|
312
|
+
classNames?.item?.actions,
|
|
313
|
+
classNames?.item?.selection,
|
|
314
|
+
classNames?.item?.drag,
|
|
315
|
+
mapping,
|
|
316
|
+
node,
|
|
317
|
+
pressProps,
|
|
318
|
+
sizeProp,
|
|
319
|
+
handleToggleExpansion,
|
|
320
|
+
handleToggleSelection,
|
|
321
|
+
handleToggleVisibility
|
|
322
|
+
]);
|
|
323
|
+
const children = useCallback((renderProps) => jsx(MergeProvider, { values: context, children: jsxs("div", { className: classNames?.item?.item, children: [node.parentKey && jsx(Button, { slot: "lines", children: jsx(Icon, {}) }), jsx("div", { className: classNames?.item?.bar, children: callRenderProps(childrenProp, {
|
|
324
|
+
...renderProps,
|
|
325
|
+
node
|
|
326
|
+
}) }), "nodes" in node.value && (!allowsExpansion || node.value.isExpanded) && jsx(Provider, { values: contextBlocker, children: jsx(TreeGroup, { id: node.key, nodes: node.children, types: node.value.types, "aria-label": node.value.label, children: childrenProp }) })] }) }), [
|
|
327
|
+
context,
|
|
328
|
+
classNames?.item?.item,
|
|
329
|
+
classNames?.item?.bar,
|
|
330
|
+
node,
|
|
331
|
+
childrenProp,
|
|
332
|
+
allowsExpansion
|
|
333
|
+
]);
|
|
334
|
+
return jsx(GridListItem, { ...rest, className: classNames?.item?.container, style, textValue: node.value.label, children });
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
export { Tree, TreeGroup, TreeItem, TreeStateContext };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.js","sources":["../../../src/components/tree/tree.tsx"],"sourcesContent":["import { noop } from 'lodash';\nimport { createContext, useCallback, useContext, useMemo } from 'react';\nimport { usePress, type Key } from 'react-aria';\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\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"],"names":["RACButtonContext"],"mappings":"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"}
|