@accelint/design-toolkit 5.0.0 → 5.1.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/dist/components/accordion/index.js +2 -0
- package/dist/components/action-bar/index.js +2 -0
- package/dist/components/action-bar/styles.d.ts +1 -1
- package/dist/components/action-bar/styles.js +1 -1
- package/dist/components/action-bar/styles.js.map +1 -1
- package/dist/components/avatar/index.js +2 -0
- package/dist/components/badge/index.js +2 -0
- package/dist/components/button/index.js +2 -0
- package/dist/components/checkbox/index.js +2 -0
- package/dist/components/chip/index.js +2 -0
- package/dist/components/classification-badge/index.js +3 -1
- package/dist/components/classification-badge/index.js.map +1 -1
- package/dist/components/classification-badge/styles.d.ts +1 -1
- package/dist/components/classification-badge/styles.js +1 -1
- package/dist/components/classification-badge/styles.js.map +1 -1
- package/dist/components/classification-banner/index.js +3 -1
- package/dist/components/classification-banner/index.js.map +1 -1
- package/dist/components/classification-banner/styles.d.ts +1 -1
- package/dist/components/classification-banner/styles.js +1 -1
- package/dist/components/classification-banner/styles.js.map +1 -1
- package/dist/components/color-picker/index.js +2 -0
- package/dist/components/combobox-field/index.js +2 -0
- package/dist/components/combobox-field/styles.d.ts +1 -1
- package/dist/components/combobox-field/styles.js +1 -1
- package/dist/components/combobox-field/styles.js.map +1 -1
- package/dist/components/date-field/index.js +2 -0
- package/dist/components/date-field/index.js.map +1 -1
- package/dist/components/date-field/styles.d.ts +1 -1
- package/dist/components/date-field/styles.js +1 -1
- package/dist/components/date-field/styles.js.map +1 -1
- package/dist/components/details-list/index.js +2 -0
- package/dist/components/dialog/index.js +2 -0
- package/dist/components/dialog/styles.d.ts +1 -1
- package/dist/components/dialog/styles.js +1 -1
- package/dist/components/dialog/styles.js.map +1 -1
- package/dist/components/drawer/index.js +2 -0
- package/dist/components/drawer/styles.d.ts +3 -3
- package/dist/components/drawer/styles.js +1 -1
- package/dist/components/drawer/styles.js.map +1 -1
- package/dist/components/hero/index.js +2 -0
- package/dist/components/hotkey/index.js +2 -0
- package/dist/components/icon/index.js +3 -1
- package/dist/components/icon/index.js.map +1 -1
- package/dist/components/input/index.js +2 -0
- package/dist/components/label/index.js +2 -0
- package/dist/components/link/index.js +2 -0
- package/dist/components/link/styles.d.ts +1 -1
- package/dist/components/link/styles.js +1 -1
- package/dist/components/link/styles.js.map +1 -1
- package/dist/components/menu/index.js +2 -0
- package/dist/components/options/index.js +2 -0
- package/dist/components/options/styles.d.ts +1 -1
- package/dist/components/options/styles.js +1 -1
- package/dist/components/options/styles.js.map +1 -1
- package/dist/components/popover/index.js +2 -0
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/query-builder/action-element.js +2 -0
- package/dist/components/query-builder/group.js +2 -0
- package/dist/components/query-builder/rule.js +2 -0
- package/dist/components/query-builder/value-editor.js +2 -0
- package/dist/components/radio/index.js +2 -0
- package/dist/components/search-field/index.js +2 -0
- package/dist/components/select-field/index.js +2 -0
- package/dist/components/sidenav/index.d.ts +16 -3
- package/dist/components/sidenav/index.js +3 -1
- package/dist/components/sidenav/index.js.map +1 -1
- package/dist/components/sidenav/styles.d.ts +43 -1
- package/dist/components/sidenav/styles.js +1 -1
- package/dist/components/sidenav/styles.js.map +1 -1
- package/dist/components/sidenav/types.d.ts +40 -8
- package/dist/components/slider/index.js +2 -0
- package/dist/components/slider/styles.d.ts +1 -1
- package/dist/components/slider/styles.js +1 -1
- package/dist/components/slider/styles.js.map +1 -1
- package/dist/components/switch/index.js +2 -0
- package/dist/components/tabs/index.js +2 -0
- package/dist/components/tabs/styles.d.ts +1 -1
- package/dist/components/tabs/styles.js +1 -1
- package/dist/components/tabs/styles.js.map +1 -1
- package/dist/components/text-area-field/index.js +2 -0
- package/dist/components/text-field/index.js +2 -0
- package/dist/components/tooltip/index.js +3 -1
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/components/tree/index.js +3 -1
- package/dist/components/tree/index.js.map +1 -1
- package/dist/components/view-stack/index.js +2 -0
- package/dist/hooks/use-tree/actions/cache.js +1 -1
- package/dist/hooks/use-tree/actions/cache.js.map +1 -1
- package/dist/hooks/use-tree/actions/index.js +2 -0
- package/dist/index.d.ts +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/providers/theme-provider.js +2 -0
- package/dist/styles.css +43 -2
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/tree/index.tsx"],"names":["label","description","drag","expansion","TreeStyles","me","B","target","jsx","e","re","TreeLines","se","showRuleLines","variant","TreeContext","_","i","type","level","Lines","ce","spacing","Tree","children","className","disabledKeysProp","selectionMode","onVisibilityChange","k","onSelectionChange","items","defaultRenderDropIndicator","ae","nodes","P","le","disabledKeys","visibilityComputedKeys","acc","selectedKeysProp","visibleKeysProp","isExpanded","isSelected","isDisabled","key","isVisible","isVisibleComputed","expandedKeysProp","handleSelectionChange","selectedKeys","AriaTree","oe","O","expandedKeys","TreeItem","visibleKeys","isStatic","isViewable","ancestors","v","id","TreeItemContext","rest","item","ie","useContext","renderProps","allowsDragging","ne","state","isLastOfSet","hasChildItems","keys","size","jsxs","g","Ke","Button","handlePress","L","visibility","Hide","te","ee","ChevronUp","$","display","shouldShowSelection","j","ItemLabel","R","ItemDescription","ItemIcon","actions","ItemContent","ItemActions"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { ChevronDown, ChevronUp, DragVert, Hide, Show } from '@accelint/icons';\nimport {\n createContext,\n memo,\n type PropsWithChildren,\n useContext,\n useMemo,\n} from 'react';\nimport {\n Tree as AriaTree,\n TreeItem as AriaTreeItem,\n TreeItemContent as AriaTreeItemContent,\n composeRenderProps,\n DropIndicator,\n type DropTarget,\n Text,\n type TextProps,\n useDragAndDrop,\n} from 'react-aria-components';\nimport { Cache } from '@/hooks/use-tree/actions/cache';\nimport { Button } from '../button';\nimport { Checkbox } from '../checkbox';\nimport { Icon } from '../icon';\nimport { Lines } from '../lines';\nimport { TreeStyles, TreeStylesDefaults } from './styles';\nimport type { Key, Selection } from '@react-types/shared';\nimport type { IconProps } from '../icon/types';\nimport type {\n TreeContextValue,\n TreeItemContentProps,\n TreeItemContextValue,\n TreeItemProps,\n TreeProps,\n} from './types';\n\nconst {\n tree,\n item,\n content,\n display,\n icon,\n label,\n actions,\n spacing,\n description,\n drag,\n expansion,\n visibility,\n} = TreeStyles();\n\nexport const TreeContext = createContext<TreeContextValue>({\n visibilityComputedKeys: new Set(),\n showRuleLines: true,\n showVisibility: false,\n variant: TreeStylesDefaults.variant,\n isStatic: true,\n onVisibilityChange: () => undefined,\n});\n\nconst defaultRenderDropIndicator = (target: DropTarget) => (\n <DropIndicator target={target} className='border border-highlight-hover' />\n);\n\nconst TreeLines = memo(function TreeLines({\n level,\n isLastOfSet,\n}: {\n level: number;\n isLastOfSet: boolean;\n}) {\n const { showRuleLines, variant } = useContext(TreeContext);\n\n return Array.from({ length: level }).map((_, i) => {\n const type = i === level - 1 ? 'branch' : 'vert';\n const line = isLastOfSet && i > 0 ? 'last' : type;\n const size = variant === 'crammed' ? 'medium' : 'large';\n\n return (\n <Lines\n // biome-ignore lint/suspicious/noArrayIndexKey: index should be the key, only count matters\n key={i}\n variant={line}\n size={size}\n isVisible={showRuleLines}\n className={spacing({ variant })}\n />\n );\n });\n});\n\nexport function Tree<T>({\n children,\n className,\n disabledKeys: disabledKeysProp,\n dragAndDropConfig,\n expandedKeys: expandedKeysProp,\n items,\n selectedKeys: selectedKeysProp,\n showRuleLines = true,\n showVisibility = true,\n selectionMode = 'multiple',\n variant = TreeStylesDefaults.variant,\n visibleKeys: visibleKeysProp,\n onVisibilityChange,\n onSelectionChange,\n ...rest\n}: TreeProps<T>) {\n /**\n * A static collection is hard-coded. Dynamic is data-driven from an external source.\n * https://react-spectrum.adobe.com/react-aria/Tree.html#content\n *\n * Controlled state should only be used on a static tree.\n */\n if (\n items &&\n (disabledKeysProp ||\n expandedKeysProp ||\n selectedKeysProp ||\n visibleKeysProp)\n ) {\n throw new Error(\n 'Tree should only be controlled with state from either `items` or keys props, not both',\n );\n }\n\n /**\n * A static tree won't support the node iterator pattern.\n */\n if (!!items !== (typeof children === 'function')) {\n throw new Error(\n 'Tree `items` and node iterator `children` must be used together',\n );\n }\n\n const { dragAndDropHooks } = useDragAndDrop({\n renderDropIndicator: defaultRenderDropIndicator,\n getAllowedDropOperations: () => ['move'],\n getDropOperation: () => 'move',\n ...dragAndDropConfig,\n });\n const cache = useMemo(() => (items ? new Cache([...items]) : null), [items]);\n const nodes = useMemo(() => cache?.getAllNodes(), [cache]);\n const {\n disabledKeys,\n expandedKeys,\n selectedKeys,\n visibleKeys,\n visibilityComputedKeys,\n } = useMemo(() => {\n const acc = {\n disabledKeys: nodes ? new Set<Key>() : disabledKeysProp,\n expandedKeys: nodes ? new Set<Key>() : expandedKeysProp,\n selectedKeys: nodes ? new Set<Key>() : selectedKeysProp,\n visibleKeys: nodes ? new Set<Key>() : visibleKeysProp,\n visibilityComputedKeys: new Set<Key>(),\n };\n\n if (!nodes) {\n return acc;\n }\n\n return nodes.reduce(\n (\n acc,\n {\n key,\n isDisabled,\n isExpanded,\n isSelected,\n isVisible,\n isVisibleComputed,\n },\n ) => {\n if (isDisabled) {\n acc.disabledKeys?.add(key);\n }\n if (isExpanded) {\n acc.expandedKeys?.add(key);\n }\n if (isSelected) {\n acc.selectedKeys?.add(key);\n }\n if (isVisible) {\n acc.visibleKeys?.add(key);\n }\n if (isVisibleComputed) {\n acc.visibilityComputedKeys.add(key);\n }\n return acc;\n },\n acc,\n );\n }, [\n nodes,\n disabledKeysProp,\n expandedKeysProp,\n selectedKeysProp,\n visibleKeysProp,\n ]);\n\n const handleSelectionChange = selectedKeys\n ? (selection: Selection) => {\n if (selection !== 'all') {\n onSelectionChange?.(selection);\n }\n }\n : undefined;\n\n return (\n <TreeContext.Provider\n value={{\n disabledKeys,\n expandedKeys,\n selectedKeys,\n showRuleLines,\n showVisibility,\n variant,\n visibleKeys,\n visibilityComputedKeys,\n isStatic: typeof children !== 'function',\n onVisibilityChange: onVisibilityChange ?? (() => undefined), // TODO: improve\n }}\n >\n <AriaTree\n {...rest}\n className={composeRenderProps(className, (className) =>\n tree({ className, variant }),\n )}\n disabledKeys={disabledKeys}\n dragAndDropHooks={dragAndDropHooks}\n expandedKeys={expandedKeys}\n items={items}\n selectedKeys={selectedKeys}\n onSelectionChange={handleSelectionChange}\n selectionMode={selectionMode}\n >\n {children}\n </AriaTree>\n </TreeContext.Provider>\n );\n}\nTree.displayName = 'Tree';\n\nexport const TreeItemContext = createContext<TreeItemContextValue>({\n isVisible: true,\n isViewable: true,\n ancestors: [],\n});\n\nexport function TreeItem({ className, id, ...rest }: TreeItemProps) {\n const { visibilityComputedKeys, visibleKeys, isStatic } =\n useContext(TreeContext);\n const { ancestors } = useContext(TreeItemContext);\n const isViewable =\n visibilityComputedKeys?.has(id) ||\n (isStatic && ancestors.every((key) => visibleKeys?.has(key)));\n const isVisible = visibleKeys?.has(id);\n\n return (\n <TreeItemContext.Provider\n value={{\n isVisible,\n isViewable,\n ancestors: [...ancestors, id],\n }}\n >\n <AriaTreeItem\n {...rest}\n id={id}\n className={composeRenderProps(className, (className) =>\n item({ className }),\n )}\n data-viewable={isViewable || null}\n data-visible={isVisible || null}\n />\n </TreeItemContext.Provider>\n );\n}\nTreeItem.displayName = 'Tree.Item';\n\nfunction ItemContent({ children }: TreeItemContentProps) {\n const { showVisibility, variant, visibleKeys, onVisibilityChange } =\n useContext(TreeContext);\n const { isVisible, isViewable } = useContext(TreeItemContext);\n const size = variant === 'cozy' ? 'medium' : 'small';\n\n return (\n <AriaTreeItemContent>\n {(renderProps) => {\n const {\n id,\n allowsDragging,\n hasChildItems,\n level,\n selectionBehavior,\n selectionMode,\n state,\n isDisabled,\n isExpanded,\n isSelected,\n } = renderProps;\n\n const isLastOfSet = !(\n state.collection.getItem(id)?.nextKey || hasChildItems\n );\n const shouldShowSelection =\n selectionBehavior === 'toggle' && selectionMode !== 'none';\n\n const handlePress = () => {\n const keys = new Set<Key>(visibleKeys);\n visibleKeys?.has(id) ? keys.delete(id) : keys.add(id);\n onVisibilityChange?.(keys);\n };\n\n return (\n <Icon.Provider size={size}>\n <div\n className={content({ variant })}\n data-last-of-set={isLastOfSet}\n >\n {showVisibility && (\n <Button\n variant='icon'\n color='info'\n size={size}\n onPress={handlePress}\n isDisabled={isDisabled}\n className={visibility()}\n >\n <Icon>{isVisible ? <Show /> : <Hide />}</Icon>\n </Button>\n )}\n {level > 1 && (\n <TreeLines level={level} isLastOfSet={isLastOfSet} />\n )}\n {hasChildItems ? (\n <Button\n slot='chevron'\n variant='icon'\n size={size}\n className={expansion()}\n >\n <Icon>{isExpanded ? <ChevronDown /> : <ChevronUp />}</Icon>\n </Button>\n ) : (\n <div className={spacing({ variant })} />\n )}\n <div className={display({ variant })}>\n {typeof children === 'function'\n ? children({\n ...renderProps,\n variant,\n isVisible,\n isViewable: isViewable,\n defaultChildren: null,\n })\n : children}\n </div>\n {shouldShowSelection && (\n <Checkbox\n slot='selection'\n isSelected={isSelected}\n isDisabled={isDisabled}\n />\n )}\n {allowsDragging && (\n <Button\n slot='drag'\n variant='icon'\n size={size}\n isDisabled={isDisabled}\n className={drag({})}\n >\n <Icon>\n <DragVert />\n </Icon>\n </Button>\n )}\n </div>\n </Icon.Provider>\n );\n }}\n </AriaTreeItemContent>\n );\n}\nItemContent.displayName = 'Tree.Item.Content';\n\nfunction ItemLabel({ children, className }: TextProps) {\n return <Text className={label({ className })}>{children}</Text>;\n}\nItemLabel.displayName = 'Tree.Item.Label';\n\nfunction ItemDescription({ children, className }: TextProps) {\n const { variant } = useContext(TreeContext);\n\n return variant !== 'crammed' ? (\n <Text\n data-slot='description'\n className={description({ className, variant })}\n >\n {children}\n </Text>\n ) : null;\n}\nItemDescription.displayName = 'Tree.Item.Description';\n\nfunction ItemIcon({ children, className }: IconProps) {\n return <Icon className={icon({ className })}>{children}</Icon>;\n}\nItemIcon.displayName = 'Tree.Item.PrefixIcon';\n\nfunction ItemActions({\n children,\n className,\n}: PropsWithChildren & { className?: string }) {\n return <div className={actions({ className })}>{children}</div>;\n}\nItemActions.displayName = 'Tree.Icon.Actions';\n\nTree.Item = TreeItem;\nTreeItem.Content = ItemContent;\nTreeItem.Label = ItemLabel;\nTreeItem.Description = ItemDescription;\nTreeItem.PrefixIcon = ItemIcon;\nTreeItem.Actions = ItemActions;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/tree/index.tsx"],"names":["label","description","drag","expansion","TreeStyles","me","B","target","jsx","e","re","TreeLines","se","showRuleLines","variant","TreeContext","_","i","type","level","Lines","ce","spacing","Tree","children","className","disabledKeysProp","selectionMode","onVisibilityChange","k","onSelectionChange","items","defaultRenderDropIndicator","ae","nodes","P","le","disabledKeys","visibilityComputedKeys","acc","selectedKeysProp","visibleKeysProp","isExpanded","isSelected","isDisabled","key","isVisible","isVisibleComputed","expandedKeysProp","handleSelectionChange","selectedKeys","AriaTree","oe","O","expandedKeys","TreeItem","visibleKeys","isStatic","isViewable","ancestors","v","id","TreeItemContext","rest","item","ie","useContext","renderProps","allowsDragging","ne","state","isLastOfSet","hasChildItems","keys","size","jsxs","g","Ke","Button","handlePress","L","visibility","Hide","te","ee","ChevronUp","$","display","shouldShowSelection","j","ItemLabel","R","ItemDescription","ItemIcon","actions","ItemContent","ItemActions"],"mappings":"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","file":"index.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport 'client-only';\nimport { ChevronDown, ChevronUp, DragVert, Hide, Show } from '@accelint/icons';\nimport {\n createContext,\n memo,\n type PropsWithChildren,\n useContext,\n useMemo,\n} from 'react';\nimport {\n Tree as AriaTree,\n TreeItem as AriaTreeItem,\n TreeItemContent as AriaTreeItemContent,\n composeRenderProps,\n DropIndicator,\n type DropTarget,\n Text,\n type TextProps,\n useDragAndDrop,\n} from 'react-aria-components';\nimport { Cache } from '@/hooks/use-tree/actions/cache';\nimport { Button } from '../button';\nimport { Checkbox } from '../checkbox';\nimport { Icon } from '../icon';\nimport { Lines } from '../lines';\nimport { TreeStyles, TreeStylesDefaults } from './styles';\nimport type { Key, Selection } from '@react-types/shared';\nimport type { IconProps } from '../icon/types';\nimport type {\n TreeContextValue,\n TreeItemContentProps,\n TreeItemContextValue,\n TreeItemProps,\n TreeProps,\n} from './types';\n\nconst {\n tree,\n item,\n content,\n display,\n icon,\n label,\n actions,\n spacing,\n description,\n drag,\n expansion,\n visibility,\n} = TreeStyles();\n\nexport const TreeContext = createContext<TreeContextValue>({\n visibilityComputedKeys: new Set(),\n showRuleLines: true,\n showVisibility: false,\n variant: TreeStylesDefaults.variant,\n isStatic: true,\n onVisibilityChange: () => undefined,\n});\n\nconst defaultRenderDropIndicator = (target: DropTarget) => (\n <DropIndicator target={target} className='border border-highlight-hover' />\n);\n\nconst TreeLines = memo(function TreeLines({\n level,\n isLastOfSet,\n}: {\n level: number;\n isLastOfSet: boolean;\n}) {\n const { showRuleLines, variant } = useContext(TreeContext);\n\n return Array.from({ length: level }).map((_, i) => {\n const type = i === level - 1 ? 'branch' : 'vert';\n const line = isLastOfSet && i > 0 ? 'last' : type;\n const size = variant === 'crammed' ? 'medium' : 'large';\n\n return (\n <Lines\n // biome-ignore lint/suspicious/noArrayIndexKey: index should be the key, only count matters\n key={i}\n variant={line}\n size={size}\n isVisible={showRuleLines}\n className={spacing({ variant })}\n />\n );\n });\n});\n\nexport function Tree<T>({\n children,\n className,\n disabledKeys: disabledKeysProp,\n dragAndDropConfig,\n expandedKeys: expandedKeysProp,\n items,\n selectedKeys: selectedKeysProp,\n showRuleLines = true,\n showVisibility = true,\n selectionMode = 'multiple',\n variant = TreeStylesDefaults.variant,\n visibleKeys: visibleKeysProp,\n onVisibilityChange,\n onSelectionChange,\n ...rest\n}: TreeProps<T>) {\n /**\n * A static collection is hard-coded. Dynamic is data-driven from an external source.\n * https://react-spectrum.adobe.com/react-aria/Tree.html#content\n *\n * Controlled state should only be used on a static tree.\n */\n if (\n items &&\n (disabledKeysProp ||\n expandedKeysProp ||\n selectedKeysProp ||\n visibleKeysProp)\n ) {\n throw new Error(\n 'Tree should only be controlled with state from either `items` or keys props, not both',\n );\n }\n\n /**\n * A static tree won't support the node iterator pattern.\n */\n if (!!items !== (typeof children === 'function')) {\n throw new Error(\n 'Tree `items` and node iterator `children` must be used together',\n );\n }\n\n const { dragAndDropHooks } = useDragAndDrop({\n renderDropIndicator: defaultRenderDropIndicator,\n getAllowedDropOperations: () => ['move'],\n getDropOperation: () => 'move',\n ...dragAndDropConfig,\n });\n const cache = useMemo(() => (items ? new Cache([...items]) : null), [items]);\n const nodes = useMemo(() => cache?.getAllNodes(), [cache]);\n const {\n disabledKeys,\n expandedKeys,\n selectedKeys,\n visibleKeys,\n visibilityComputedKeys,\n } = useMemo(() => {\n const acc = {\n disabledKeys: nodes ? new Set<Key>() : disabledKeysProp,\n expandedKeys: nodes ? new Set<Key>() : expandedKeysProp,\n selectedKeys: nodes ? new Set<Key>() : selectedKeysProp,\n visibleKeys: nodes ? new Set<Key>() : visibleKeysProp,\n visibilityComputedKeys: new Set<Key>(),\n };\n\n if (!nodes) {\n return acc;\n }\n\n return nodes.reduce(\n (\n acc,\n {\n key,\n isDisabled,\n isExpanded,\n isSelected,\n isVisible,\n isVisibleComputed,\n },\n ) => {\n if (isDisabled) {\n acc.disabledKeys?.add(key);\n }\n if (isExpanded) {\n acc.expandedKeys?.add(key);\n }\n if (isSelected) {\n acc.selectedKeys?.add(key);\n }\n if (isVisible) {\n acc.visibleKeys?.add(key);\n }\n if (isVisibleComputed) {\n acc.visibilityComputedKeys.add(key);\n }\n return acc;\n },\n acc,\n );\n }, [\n nodes,\n disabledKeysProp,\n expandedKeysProp,\n selectedKeysProp,\n visibleKeysProp,\n ]);\n\n const handleSelectionChange = selectedKeys\n ? (selection: Selection) => {\n if (selection !== 'all') {\n onSelectionChange?.(selection);\n }\n }\n : undefined;\n\n return (\n <TreeContext.Provider\n value={{\n disabledKeys,\n expandedKeys,\n selectedKeys,\n showRuleLines,\n showVisibility,\n variant,\n visibleKeys,\n visibilityComputedKeys,\n isStatic: typeof children !== 'function',\n onVisibilityChange: onVisibilityChange ?? (() => undefined), // TODO: improve\n }}\n >\n <AriaTree\n {...rest}\n className={composeRenderProps(className, (className) =>\n tree({ className, variant }),\n )}\n disabledKeys={disabledKeys}\n dragAndDropHooks={dragAndDropHooks}\n expandedKeys={expandedKeys}\n items={items}\n selectedKeys={selectedKeys}\n onSelectionChange={handleSelectionChange}\n selectionMode={selectionMode}\n >\n {children}\n </AriaTree>\n </TreeContext.Provider>\n );\n}\nTree.displayName = 'Tree';\n\nexport const TreeItemContext = createContext<TreeItemContextValue>({\n isVisible: true,\n isViewable: true,\n ancestors: [],\n});\n\nexport function TreeItem({ className, id, ...rest }: TreeItemProps) {\n const { visibilityComputedKeys, visibleKeys, isStatic } =\n useContext(TreeContext);\n const { ancestors } = useContext(TreeItemContext);\n const isViewable =\n visibilityComputedKeys?.has(id) ||\n (isStatic && ancestors.every((key) => visibleKeys?.has(key)));\n const isVisible = visibleKeys?.has(id);\n\n return (\n <TreeItemContext.Provider\n value={{\n isVisible,\n isViewable,\n ancestors: [...ancestors, id],\n }}\n >\n <AriaTreeItem\n {...rest}\n id={id}\n className={composeRenderProps(className, (className) =>\n item({ className }),\n )}\n data-viewable={isViewable || null}\n data-visible={isVisible || null}\n />\n </TreeItemContext.Provider>\n );\n}\nTreeItem.displayName = 'Tree.Item';\n\nfunction ItemContent({ children }: TreeItemContentProps) {\n const { showVisibility, variant, visibleKeys, onVisibilityChange } =\n useContext(TreeContext);\n const { isVisible, isViewable } = useContext(TreeItemContext);\n const size = variant === 'cozy' ? 'medium' : 'small';\n\n return (\n <AriaTreeItemContent>\n {(renderProps) => {\n const {\n id,\n allowsDragging,\n hasChildItems,\n level,\n selectionBehavior,\n selectionMode,\n state,\n isDisabled,\n isExpanded,\n isSelected,\n } = renderProps;\n\n const isLastOfSet = !(\n state.collection.getItem(id)?.nextKey || hasChildItems\n );\n const shouldShowSelection =\n selectionBehavior === 'toggle' && selectionMode !== 'none';\n\n const handlePress = () => {\n const keys = new Set<Key>(visibleKeys);\n visibleKeys?.has(id) ? keys.delete(id) : keys.add(id);\n onVisibilityChange?.(keys);\n };\n\n return (\n <Icon.Provider size={size}>\n <div\n className={content({ variant })}\n data-last-of-set={isLastOfSet}\n >\n {showVisibility && (\n <Button\n variant='icon'\n color='info'\n size={size}\n onPress={handlePress}\n isDisabled={isDisabled}\n className={visibility()}\n >\n <Icon>{isVisible ? <Show /> : <Hide />}</Icon>\n </Button>\n )}\n {level > 1 && (\n <TreeLines level={level} isLastOfSet={isLastOfSet} />\n )}\n {hasChildItems ? (\n <Button\n slot='chevron'\n variant='icon'\n size={size}\n className={expansion()}\n >\n <Icon>{isExpanded ? <ChevronDown /> : <ChevronUp />}</Icon>\n </Button>\n ) : (\n <div className={spacing({ variant })} />\n )}\n <div className={display({ variant })}>\n {typeof children === 'function'\n ? children({\n ...renderProps,\n variant,\n isVisible,\n isViewable: isViewable,\n defaultChildren: null,\n })\n : children}\n </div>\n {shouldShowSelection && (\n <Checkbox\n slot='selection'\n isSelected={isSelected}\n isDisabled={isDisabled}\n />\n )}\n {allowsDragging && (\n <Button\n slot='drag'\n variant='icon'\n size={size}\n isDisabled={isDisabled}\n className={drag({})}\n >\n <Icon>\n <DragVert />\n </Icon>\n </Button>\n )}\n </div>\n </Icon.Provider>\n );\n }}\n </AriaTreeItemContent>\n );\n}\nItemContent.displayName = 'Tree.Item.Content';\n\nfunction ItemLabel({ children, className }: TextProps) {\n return <Text className={label({ className })}>{children}</Text>;\n}\nItemLabel.displayName = 'Tree.Item.Label';\n\nfunction ItemDescription({ children, className }: TextProps) {\n const { variant } = useContext(TreeContext);\n\n return variant !== 'crammed' ? (\n <Text\n data-slot='description'\n className={description({ className, variant })}\n >\n {children}\n </Text>\n ) : null;\n}\nItemDescription.displayName = 'Tree.Item.Description';\n\nfunction ItemIcon({ children, className }: IconProps) {\n return <Icon className={icon({ className })}>{children}</Icon>;\n}\nItemIcon.displayName = 'Tree.Item.PrefixIcon';\n\nfunction ItemActions({\n children,\n className,\n}: PropsWithChildren & { className?: string }) {\n return <div className={actions({ className })}>{children}</div>;\n}\nItemActions.displayName = 'Tree.Icon.Actions';\n\nTree.Item = TreeItem;\nTreeItem.Content = ItemContent;\nTreeItem.Label = ItemLabel;\nTreeItem.Description = ItemDescription;\nTreeItem.PrefixIcon = ItemIcon;\nTreeItem.Actions = ItemActions;\n"]}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import {jsx}from'react/jsx-runtime';import'client-only';import {Broadcast}from'@accelint/bus';import {isUUID}from'@accelint/core';import {createContext,useRef,useState,useCallback,useEffect,useContext}from'react';import {Pressable}from'react-aria-components';import {ViewStackEventTypes}from'./events.js';const u=Broadcast.getInstance(),p=createContext({parent:null,stack:[],view:null,register:()=>{},unregister:()=>{}}),T={back:e=>u.emit(ViewStackEventTypes.back,{stack:e}),clear:e=>u.emit(ViewStackEventTypes.clear,{stack:e}),push:e=>u.emit(ViewStackEventTypes.push,{view:e}),reset:e=>u.emit(ViewStackEventTypes.reset,{stack:e})};function P({children:e,for:k}){const{parent:r}=useContext(p);function i(){for(const n of Array.isArray(k)?k:[k]){let[s,a]=isUUID(n)?["push",n]:n.split(":");a??=r,a&&T[s](a);}}return jsx(Pressable,{onPress:i,children:e})}P.displayName="ViewStack.Trigger";function y({id:e,children:k}){const{parent:r,view:i,register:n,unregister:s}=useContext(p);if(!r)throw new Error("ViewStack.View must be implemented within a ViewStack");if(!isUUID(e))throw new Error("ViewStack.View's id must be a UniqueId");return useEffect(()=>{n(e);},[n,s,e]),i===e?k:null}y.displayName="ViewStack.View";function S({id:e,children:k,defaultView:r,onChange:i}){if(!isUUID(e))throw new Error("ViewStack's id must be a UniqueId");const n=useRef(new Set),[s,a]=useState(r?[r]:[]),U=s.at(-1)??null,V=useCallback(t=>{if(e===t?.payload?.stack){const c=s.slice(0,-1);!c.length&&r&&c.push(r),a(c),i?.(c.at(-1)??null);}},[e,r,i,s]),f=useCallback(t=>{e===t?.payload?.stack&&(a([]),i?.(null));},[e,i]),m=useCallback(t=>{n.current.has(t?.payload?.view)&&(a(c=>[...c,t?.payload?.view]),i?.(t?.payload?.view));},[i]),v=useCallback(t=>{e===t?.payload?.stack&&(a(r?[r]:[]),i?.(r??null));},[e,r,i]);return useEffect(()=>{const t=[u.on(ViewStackEventTypes.back,V),u.on(ViewStackEventTypes.clear,f),u.on(ViewStackEventTypes.push,m),u.on(ViewStackEventTypes.reset,v)];return ()=>{for(const c of t)c();}},[V,f,m,v]),jsx(p.Provider,{value:{parent:e,stack:s,view:U,register:t=>n.current.add(t),unregister:t=>n.current.delete(t)},children:k})}S.displayName="ViewStack",S.View=y,S.Trigger=P;export{S as ViewStack,p as ViewStackContext,T as ViewStackEventHandlers};//# sourceMappingURL=index.js.map
|
|
2
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
class d{cache={lookup:new Map,roots:[]};constructor(e=[]){this.rebuild(e);}rebuild(e,t=new Map,s=null){e.forEach(r=>{const{children:o,...n}=r;t.set(r.key,{isDisabled:false,isExpanded:false,isSelected:false,isVisible:false,isVisibleComputed:false,...n,parentKey:s,...o?{children:o.map(l=>l.key)}:{}}),r.children&&this.rebuild(r.children,t,r.key);});const i={lookup:t,roots:e.map(r=>r.key)};return s||(this.cache=i),this.deriveVisibility(),i}get(e){const t=this.cache.lookup.get(e);if(t===void 0)throw new Error(`Key of ${e} does not exist in tree`);return t}set(e,t){this.cache.lookup.set(e,t);}delete(e){this.cache.lookup.delete(e);}addToParent(e,t,s){const i=this.get(e),r=this.get(t),o=Math.max(0,s);this.set(t,{...r,parentKey:e});const n=(i.children??[]).slice(0);n.splice(o,0,t),this.set(e,{...i,children:n});}addToRoot(e,t){const s=this.get(e),i=Math.max(0,t);this.set(e,{...s,parentKey:null}),this.cache.roots.splice(i,0,e);}removeFromParent(e,t){const s=this.get(e),i=this.get(t);this.set(t,{...i,parentKey:null}),this.cache.lookup.set(e,{...s,children:s.children?.filter(r=>r!==t)});}removeFromRoot(e){const t=this.get(e),s=this.cache.roots.indexOf(e);s>=0&&(this.set(e,{...t,parentKey:null}),this.cache.roots.splice(s,1));}parentOrSibling(e,t){let s,i=null;if(e===null)s=t==="before"?0:this.cache.roots.length;else {const r=this.get(e);if(r.parentKey){const o=this.get(r.parentKey);i=o.key,s=o.children?.
|
|
1
|
+
class d{cache={lookup:new Map,roots:[]};constructor(e=[]){this.rebuild(e);}rebuild(e,t=new Map,s=null){e.forEach(r=>{const{children:o,...n}=r;t.set(r.key,{isDisabled:false,isExpanded:false,isSelected:false,isVisible:false,isVisibleComputed:false,...n,parentKey:s,...o?{children:o.map(l=>l.key)}:{}}),r.children&&this.rebuild(r.children,t,r.key);});const i={lookup:t,roots:e.map(r=>r.key)};return s||(this.cache=i),this.deriveVisibility(),i}get(e){const t=this.cache.lookup.get(e);if(t===void 0)throw new Error(`Key of ${e} does not exist in tree`);return t}set(e,t){this.cache.lookup.set(e,t);}delete(e){this.cache.lookup.delete(e);}addToParent(e,t,s){const i=this.get(e),r=this.get(t),o=Math.max(0,s);this.set(t,{...r,parentKey:e});const n=(i.children??[]).slice(0);n.splice(o,0,t),this.set(e,{...i,children:n});}addToRoot(e,t){const s=this.get(e),i=Math.max(0,t);this.set(e,{...s,parentKey:null}),this.cache.roots.splice(i,0,e);}removeFromParent(e,t){const s=this.get(e),i=this.get(t);this.set(t,{...i,parentKey:null}),this.cache.lookup.set(e,{...s,children:s.children?.filter(r=>r!==t)});}removeFromRoot(e){const t=this.get(e),s=this.cache.roots.indexOf(e);s>=0&&(this.set(e,{...t,parentKey:null}),this.cache.roots.splice(s,1));}parentOrSibling(e,t){let s,i=null;if(e===null)s=t==="before"?0:this.cache.roots.length;else {const r=this.get(e);if(r.parentKey){const o=this.get(r.parentKey);i=o.key,s=o.children?.indexOf(e)??0;}else s=this.cache.roots.indexOf(e);}return {parentKey:i,index:s}}traverse(e){const t=this.get(e);this.cache.lookup.set(e,{...t,isVisibleComputed:this.calculateVisibility(e)}),t.children?.map(s=>this.traverse(s));}calculateVisibility(e){let t=this.get(e);const s=[t];for(;t.parentKey;){const i=this.get(t.parentKey);i&&s.push(i),t=i;}return s.every(i=>i.isVisible)}deriveVisibility(){return this.cache.roots.map(e=>this.traverse(e))}buildNode(e){const t=this.get(e),s=(t.children??[]).reduce((i,r)=>{const o=this.cache.lookup.get(r);return o&&o.parentKey===e&&i.push(this.buildNode(r)),i},[]);return {...t,children:s}}toTree(e){return e&&this.deriveVisibility(),this.cache.roots.map(t=>this.buildNode(t))}getNode(e){const t=this.get(e);return {...t,children:t.children?.map(s=>this.buildNode(s))}}getAllKeys(){return this.cache.lookup.keys()}getAllNodes(){return this.cache.lookup.values()}setNode(e,t){this.set(e,{...t,children:(t.children??[]).map(s=>s.key)});}setAllNodes({parentKey:e,children:t,...s}){for(const i of this.cache.lookup.values())this.set(i.key,{...i,...s});}deleteNode(e){const t=this.cache.lookup.get(e);t&&(t.children?.map(s=>this.deleteNode(s)),t.parentKey?this.removeFromParent(t.parentKey,e):this.removeFromRoot(e),this.delete(e));}addNodes(e,t,s){const{parentKey:i,index:r}=this.parentOrSibling(e,s),o=r+(s==="before"?0:1);t.map((n,l)=>this.insertNode(i,n,o+l));}insertNode(e,t,s){const{children:i,...r}=t;this.set(t.key,{isDisabled:false,isExpanded:false,isSelected:false,isVisible:false,isVisibleComputed:false,...r,parentKey:e,...i?{children:i.map(o=>o.key)}:{}}),t.children?.map((o,n)=>this.insertNode(t.key,o,n)),e===null?this.addToRoot(t.key,s):this.addToParent(e,t.key,s);}moveNodes(e,t,s){const{parentKey:i,index:r}=this.parentOrSibling(e,s),o=r+(s==="before"?0:1);Array.from(t).map((n,l)=>this.moveNode(i,n,o+l));}moveNode(e,t,s){const i=this.get(t);i.parentKey?this.removeFromParent(i.parentKey,t):this.removeFromRoot(t),e?this.addToParent(e,t,s):this.addToRoot(t,s);}}export{d as Cache};//# sourceMappingURL=cache.js.map
|
|
2
2
|
//# sourceMappingURL=cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/hooks/use-tree/actions/cache.ts"],"names":["Cache","nodes","lookup","parentKey","node","children","rest","child","cache","key","childKey","idx","parent","index","target","position","targetNode","rootKey","current","ancestry","n","acc","childNode","deriveVisible","i"],"mappings":"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","file":"cache.js","sourcesContent":["// __private-exports\n/*\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 type { Key } from '@react-types/shared';\nimport type { TreeNode } from '../types';\n\ntype CacheTreeNode<T> = Omit<TreeNode<T>, 'children'> & {\n children?: Key[];\n};\n\n/**\n * This is a cache created only for performance reasons and is considered\n * to be only a temporary mirror of the data. The data is *always* correct\n * cache should be updated according to the data, only. If the data and\n * the cache do not match, the cache is invalidated and rebuilt.\n *\n * This will initialize once on load with data, then\n * updated with each tree operation.\n */\nexport class Cache<T> {\n protected cache: { lookup: Map<Key, CacheTreeNode<T>>; roots: Key[] } = {\n lookup: new Map(),\n roots: [],\n };\n\n constructor(nodes: TreeNode<T>[] = []) {\n this.rebuild(nodes);\n }\n\n /**\n * Recursively creates the cache object from tree data\n */\n rebuild(\n nodes: TreeNode<T>[],\n lookup: Map<Key, CacheTreeNode<T>> = new Map(),\n parentKey: Key | null = null,\n ) {\n nodes.forEach((node) => {\n const { children, ...rest } = node;\n\n lookup.set(node.key, {\n isDisabled: false,\n isExpanded: false,\n isSelected: false,\n isVisible: false,\n isVisibleComputed: false,\n ...rest,\n parentKey,\n ...(children ? { children: children.map((child) => child.key) } : {}),\n });\n\n if (node.children) {\n this.rebuild(node.children, lookup, node.key);\n }\n });\n\n const cache = { lookup, roots: nodes.map((node) => node.key) };\n\n if (!parentKey) {\n this.cache = cache;\n }\n\n this.deriveVisibility();\n return cache;\n }\n\n protected get(key: Key) {\n const node = this.cache.lookup.get(key);\n\n if (node === undefined) {\n throw new Error(`Key of ${key} does not exist in tree`);\n }\n\n return node;\n }\n\n protected set(key: Key, node: CacheTreeNode<T>) {\n this.cache.lookup.set(key, node);\n }\n\n protected delete(key: Key) {\n this.cache.lookup.delete(key);\n }\n\n protected addToParent(parentKey: Key, childKey: Key, idx: number) {\n const parent = this.get(parentKey);\n const child = this.get(childKey);\n const index = Math.max(0, idx);\n\n this.set(childKey, {\n ...child,\n parentKey,\n });\n\n const children = (parent.children ?? []).slice(0);\n\n children.splice(index, 0, childKey);\n\n this.set(parentKey, {\n ...parent,\n children,\n });\n }\n\n protected addToRoot(key: Key, idx: number) {\n const node = this.get(key);\n const index = Math.max(0, idx);\n\n this.set(key, {\n ...node,\n parentKey: null,\n });\n\n this.cache.roots.splice(index, 0, key);\n }\n\n protected removeFromParent(parentKey: Key, childKey: Key) {\n const parent = this.get(parentKey);\n const child = this.get(childKey);\n\n this.set(childKey, {\n ...child,\n parentKey: null,\n });\n\n this.cache.lookup.set(parentKey, {\n ...parent,\n children: parent.children?.filter((key) => key !== childKey),\n });\n }\n\n protected removeFromRoot(key: Key) {\n const node = this.get(key);\n const idx = this.cache.roots.indexOf(key);\n\n if (idx >= 0) {\n this.set(key, {\n ...node,\n parentKey: null,\n });\n\n this.cache.roots.splice(idx, 1);\n }\n }\n\n protected parentOrSibling(target: Key | null, position: 'before' | 'after') {\n let index: number;\n let parentKey: Key | null = null;\n\n if (target === null) {\n index = position === 'before' ? 0 : this.cache.roots.length;\n } else {\n const targetNode = this.get(target);\n\n if (targetNode.parentKey) {\n const parent = this.get(targetNode.parentKey);\n\n parentKey = parent.key;\n index = parent.children?.findIndex((key) => key === target) ?? 0;\n } else {\n index = this.cache.roots.findIndex((rootKey) => rootKey === target);\n }\n }\n\n return { parentKey, index };\n }\n\n protected traverse(key: Key) {\n const node = this.get(key);\n\n this.cache.lookup.set(key, {\n ...node,\n isVisibleComputed: this.calculateVisibility(key),\n });\n\n node.children?.map((child) => this.traverse(child));\n }\n\n protected calculateVisibility(key: Key) {\n let current = this.get(key);\n const ancestry = [current];\n\n while (current.parentKey) {\n const parent = this.get(current.parentKey);\n if (parent) {\n ancestry.push(parent);\n }\n current = parent;\n }\n\n return ancestry.every((n) => n.isVisible);\n }\n\n protected deriveVisibility() {\n return this.cache.roots.map((key) => this.traverse(key));\n }\n /**\n * Recursively builds a TreeNode from a key\n *\n * @param key\n */\n protected buildNode(key: Key): TreeNode<T> {\n const node = this.get(key);\n\n const children = (node.children ?? []).reduce(\n (acc: TreeNode<T>[], child) => {\n const childNode = this.cache.lookup.get(child);\n\n if (childNode && childNode.parentKey === key) {\n acc.push(this.buildNode(child));\n }\n\n return acc;\n },\n [],\n );\n\n return {\n ...node,\n children,\n };\n }\n\n /**\n * Builds a tree structure from cache\n *\n * TODO: optimization - rebuild only from change to root\n * Rebuild only from the changed node up the tree to avoid\n * rebuilding the entire tree\n *\n * @param deriveVisible boolean - if true, will recompute visibility for nodes based on ancestry\n */\n toTree(deriveVisible?: boolean): TreeNode<T>[] {\n if (deriveVisible) {\n this.deriveVisibility();\n }\n return this.cache.roots.map((key) => this.buildNode(key));\n }\n\n /**\n * CACHE FUNCTIONS\n * These manage cache operations. No cache operations should ever be done\n * outside this file.\n **/\n getNode(key: Key): TreeNode<T> {\n const node = this.get(key);\n\n return {\n ...node,\n children: node.children?.map((key) => this.buildNode(key)),\n };\n }\n\n getAllKeys() {\n return this.cache.lookup.keys();\n }\n\n getAllNodes() {\n return this.cache.lookup.values();\n }\n\n setNode(key: Key, node: TreeNode<T>) {\n this.set(key, {\n ...node,\n children: (node.children ?? []).map((child) => child.key),\n });\n }\n\n setAllNodes({ parentKey, children, ...rest }: Partial<TreeNode<T>>) {\n for (const node of this.cache.lookup.values()) {\n this.set(node.key, {\n ...node,\n ...rest,\n });\n }\n }\n\n deleteNode(key: Key) {\n const node = this.cache.lookup.get(key);\n\n if (!node) {\n return;\n }\n\n // remove children\n node.children?.map((key) => this.deleteNode(key));\n\n // remove node from previous parent or root\n node.parentKey\n ? this.removeFromParent(node.parentKey, key)\n : this.removeFromRoot(key);\n\n // remove the actual node\n this.delete(key);\n }\n\n addNodes(\n target: Key | null,\n nodes: TreeNode<T>[],\n position: 'before' | 'after',\n ) {\n const { parentKey, index } = this.parentOrSibling(target, position);\n const idx = index + (position === 'before' ? 0 : 1);\n\n nodes.map((node, i) => this.insertNode(parentKey, node, idx + i));\n }\n\n insertNode(parentKey: Key | null, node: TreeNode<T>, idx: number) {\n const { children, ...rest } = node;\n\n this.set(node.key, {\n isDisabled: false,\n isExpanded: false,\n isSelected: false,\n isVisible: false,\n isVisibleComputed: false,\n ...rest,\n parentKey,\n ...(children ? { children: children.map((child) => child.key) } : {}),\n });\n\n node.children?.map((child, i) => this.insertNode(node.key, child, i));\n\n parentKey === null\n ? this.addToRoot(node.key, idx)\n : this.addToParent(parentKey, node.key, idx);\n }\n\n moveNodes(target: Key | null, nodes: Set<Key>, position: 'before' | 'after') {\n const { parentKey, index } = this.parentOrSibling(target, position);\n const idx = index + (position === 'before' ? 0 : 1);\n\n Array.from(nodes).map((key, i) => this.moveNode(parentKey, key, idx + i));\n }\n\n moveNode(parentKey: Key | null, key: Key, idx: number) {\n const node = this.get(key);\n\n // remove from previous parent\n node.parentKey\n ? this.removeFromParent(node.parentKey, key)\n : this.removeFromRoot(key);\n\n // add as child to new parent or root at position\n parentKey\n ? this.addToParent(parentKey, key, idx)\n : this.addToRoot(key, idx);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/hooks/use-tree/actions/cache.ts"],"names":["Cache","nodes","lookup","parentKey","node","children","rest","child","cache","key","childKey","idx","parent","index","target","position","targetNode","current","ancestry","n","acc","childNode","deriveVisible","i"],"mappings":"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","file":"cache.js","sourcesContent":["// __private-exports\n/*\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 type { Key } from '@react-types/shared';\nimport type { TreeNode } from '../types';\n\ntype CacheTreeNode<T> = Omit<TreeNode<T>, 'children'> & {\n children?: Key[];\n};\n\n/**\n * This is a cache created only for performance reasons and is considered\n * to be only a temporary mirror of the data. The data is *always* correct\n * cache should be updated according to the data, only. If the data and\n * the cache do not match, the cache is invalidated and rebuilt.\n *\n * This will initialize once on load with data, then\n * updated with each tree operation.\n */\nexport class Cache<T> {\n protected cache: { lookup: Map<Key, CacheTreeNode<T>>; roots: Key[] } = {\n lookup: new Map(),\n roots: [],\n };\n\n constructor(nodes: TreeNode<T>[] = []) {\n this.rebuild(nodes);\n }\n\n /**\n * Recursively creates the cache object from tree data\n */\n rebuild(\n nodes: TreeNode<T>[],\n lookup: Map<Key, CacheTreeNode<T>> = new Map(),\n parentKey: Key | null = null,\n ) {\n nodes.forEach((node) => {\n const { children, ...rest } = node;\n\n lookup.set(node.key, {\n isDisabled: false,\n isExpanded: false,\n isSelected: false,\n isVisible: false,\n isVisibleComputed: false,\n ...rest,\n parentKey,\n ...(children ? { children: children.map((child) => child.key) } : {}),\n });\n\n if (node.children) {\n this.rebuild(node.children, lookup, node.key);\n }\n });\n\n const cache = { lookup, roots: nodes.map((node) => node.key) };\n\n if (!parentKey) {\n this.cache = cache;\n }\n\n this.deriveVisibility();\n return cache;\n }\n\n protected get(key: Key) {\n const node = this.cache.lookup.get(key);\n\n if (node === undefined) {\n throw new Error(`Key of ${key} does not exist in tree`);\n }\n\n return node;\n }\n\n protected set(key: Key, node: CacheTreeNode<T>) {\n this.cache.lookup.set(key, node);\n }\n\n protected delete(key: Key) {\n this.cache.lookup.delete(key);\n }\n\n protected addToParent(parentKey: Key, childKey: Key, idx: number) {\n const parent = this.get(parentKey);\n const child = this.get(childKey);\n const index = Math.max(0, idx);\n\n this.set(childKey, {\n ...child,\n parentKey,\n });\n\n const children = (parent.children ?? []).slice(0);\n\n children.splice(index, 0, childKey);\n\n this.set(parentKey, {\n ...parent,\n children,\n });\n }\n\n protected addToRoot(key: Key, idx: number) {\n const node = this.get(key);\n const index = Math.max(0, idx);\n\n this.set(key, {\n ...node,\n parentKey: null,\n });\n\n this.cache.roots.splice(index, 0, key);\n }\n\n protected removeFromParent(parentKey: Key, childKey: Key) {\n const parent = this.get(parentKey);\n const child = this.get(childKey);\n\n this.set(childKey, {\n ...child,\n parentKey: null,\n });\n\n this.cache.lookup.set(parentKey, {\n ...parent,\n children: parent.children?.filter((key) => key !== childKey),\n });\n }\n\n protected removeFromRoot(key: Key) {\n const node = this.get(key);\n const idx = this.cache.roots.indexOf(key);\n\n if (idx >= 0) {\n this.set(key, {\n ...node,\n parentKey: null,\n });\n\n this.cache.roots.splice(idx, 1);\n }\n }\n\n protected parentOrSibling(target: Key | null, position: 'before' | 'after') {\n let index: number;\n let parentKey: Key | null = null;\n\n if (target === null) {\n index = position === 'before' ? 0 : this.cache.roots.length;\n } else {\n const targetNode = this.get(target);\n\n if (targetNode.parentKey) {\n const parent = this.get(targetNode.parentKey);\n\n parentKey = parent.key;\n index = parent.children?.indexOf(target) ?? 0;\n } else {\n index = this.cache.roots.indexOf(target);\n }\n }\n\n return { parentKey, index };\n }\n\n protected traverse(key: Key) {\n const node = this.get(key);\n\n this.cache.lookup.set(key, {\n ...node,\n isVisibleComputed: this.calculateVisibility(key),\n });\n\n node.children?.map((child) => this.traverse(child));\n }\n\n protected calculateVisibility(key: Key) {\n let current = this.get(key);\n const ancestry = [current];\n\n while (current.parentKey) {\n const parent = this.get(current.parentKey);\n if (parent) {\n ancestry.push(parent);\n }\n current = parent;\n }\n\n return ancestry.every((n) => n.isVisible);\n }\n\n protected deriveVisibility() {\n return this.cache.roots.map((key) => this.traverse(key));\n }\n /**\n * Recursively builds a TreeNode from a key\n *\n * @param key\n */\n protected buildNode(key: Key): TreeNode<T> {\n const node = this.get(key);\n\n const children = (node.children ?? []).reduce(\n (acc: TreeNode<T>[], child) => {\n const childNode = this.cache.lookup.get(child);\n\n if (childNode && childNode.parentKey === key) {\n acc.push(this.buildNode(child));\n }\n\n return acc;\n },\n [],\n );\n\n return {\n ...node,\n children,\n };\n }\n\n /**\n * Builds a tree structure from cache\n *\n * TODO: optimization - rebuild only from change to root\n * Rebuild only from the changed node up the tree to avoid\n * rebuilding the entire tree\n *\n * @param deriveVisible boolean - if true, will recompute visibility for nodes based on ancestry\n */\n toTree(deriveVisible?: boolean): TreeNode<T>[] {\n if (deriveVisible) {\n this.deriveVisibility();\n }\n return this.cache.roots.map((key) => this.buildNode(key));\n }\n\n /**\n * CACHE FUNCTIONS\n * These manage cache operations. No cache operations should ever be done\n * outside this file.\n **/\n getNode(key: Key): TreeNode<T> {\n const node = this.get(key);\n\n return {\n ...node,\n children: node.children?.map((key) => this.buildNode(key)),\n };\n }\n\n getAllKeys() {\n return this.cache.lookup.keys();\n }\n\n getAllNodes() {\n return this.cache.lookup.values();\n }\n\n setNode(key: Key, node: TreeNode<T>) {\n this.set(key, {\n ...node,\n children: (node.children ?? []).map((child) => child.key),\n });\n }\n\n setAllNodes({ parentKey, children, ...rest }: Partial<TreeNode<T>>) {\n for (const node of this.cache.lookup.values()) {\n this.set(node.key, {\n ...node,\n ...rest,\n });\n }\n }\n\n deleteNode(key: Key) {\n const node = this.cache.lookup.get(key);\n\n if (!node) {\n return;\n }\n\n // remove children\n node.children?.map((key) => this.deleteNode(key));\n\n // remove node from previous parent or root\n node.parentKey\n ? this.removeFromParent(node.parentKey, key)\n : this.removeFromRoot(key);\n\n // remove the actual node\n this.delete(key);\n }\n\n addNodes(\n target: Key | null,\n nodes: TreeNode<T>[],\n position: 'before' | 'after',\n ) {\n const { parentKey, index } = this.parentOrSibling(target, position);\n const idx = index + (position === 'before' ? 0 : 1);\n\n nodes.map((node, i) => this.insertNode(parentKey, node, idx + i));\n }\n\n insertNode(parentKey: Key | null, node: TreeNode<T>, idx: number) {\n const { children, ...rest } = node;\n\n this.set(node.key, {\n isDisabled: false,\n isExpanded: false,\n isSelected: false,\n isVisible: false,\n isVisibleComputed: false,\n ...rest,\n parentKey,\n ...(children ? { children: children.map((child) => child.key) } : {}),\n });\n\n node.children?.map((child, i) => this.insertNode(node.key, child, i));\n\n parentKey === null\n ? this.addToRoot(node.key, idx)\n : this.addToParent(parentKey, node.key, idx);\n }\n\n moveNodes(target: Key | null, nodes: Set<Key>, position: 'before' | 'after') {\n const { parentKey, index } = this.parentOrSibling(target, position);\n const idx = index + (position === 'before' ? 0 : 1);\n\n Array.from(nodes).map((key, i) => this.moveNode(parentKey, key, idx + i));\n }\n\n moveNode(parentKey: Key | null, key: Key, idx: number) {\n const node = this.get(key);\n\n // remove from previous parent\n node.parentKey\n ? this.removeFromParent(node.parentKey, key)\n : this.removeFromRoot(key);\n\n // add as child to new parent or root at position\n parentKey\n ? this.addToParent(parentKey, key, idx)\n : this.addToRoot(key, idx);\n }\n}\n"]}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import'client-only';import {useUpdateEffect}from'@react-aria/utils';import {useRef}from'react';import {Cache}from'./cache.js';function V({nodes:n}){const e=useRef(new Cache(n)).current;useUpdateEffect(()=>{e.rebuild(n);},[n]);function u(o){return e.getNode(o)}function i(o,t){return e.addNodes(o,t,"after"),e.toTree(true)}function l(o,t){return e.addNodes(o,t,"before"),e.toTree(true)}function f(o,t){for(const r of t)e.insertNode(o,r,0);return e.toTree(true)}function c(o,t){return e.moveNodes(o,t,"after"),e.toTree()}function N(o,t){return e.moveNodes(o,t,"before"),e.toTree()}function a(o,t){for(const r of t)e.moveNode(o,r,0);return e.toTree()}function y(o,t){const r=e.getNode(o);return e.setNode(o,t(r)),e.toTree(true)}function p(o){for(const t of o.values())e.deleteNode(t);return e.toTree(true)}function A(o){d();for(const t of o){const r=e.getNode(t);e.setNode(r.key,{...r,isSelected:true});}return e.toTree()}function m(){return e.setAllNodes({isSelected:true}),e.toTree()}function d(){return e.setAllNodes({isSelected:false}),e.toTree()}function K(o){T();for(const t of o){const r=e.getNode(t);e.setNode(r.key,{...r,isExpanded:true});}return e.toTree()}function S(){return e.setAllNodes({isExpanded:true}),e.toTree()}function T(){return e.setAllNodes({isExpanded:false}),e.toTree()}function g(o){s();for(const t of o){const r=e.getNode(t);e.setNode(r.key,{...r,isVisible:true});}return e.toTree(true)}function v(){return e.setAllNodes({isVisible:true}),e.toTree(true)}function s(){return e.setAllNodes({isVisible:false}),e.toTree(true)}return {getNode:u,insertAfter:i,insertBefore:l,insertInto:f,moveAfter:c,moveBefore:N,moveInto:a,remove:p,updateNode:y,collapseAll:T,expandAll:S,onExpandedChange:K,selectAll:m,unselectAll:d,onSelectionChange:A,hideAll:s,revealAll:v,onVisibilityChange:g}}export{V as useTreeActions};//# sourceMappingURL=index.js.map
|
|
2
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -88,7 +88,7 @@ export { SelectFieldProps } from './components/select-field/types.js';
|
|
|
88
88
|
export { SidenavEventNamespace, SidenavEventTypes } from './components/sidenav/events.js';
|
|
89
89
|
export { Sidenav } from './components/sidenav/index.js';
|
|
90
90
|
export { SidenavStyles } from './components/sidenav/styles.js';
|
|
91
|
-
export { SidenavAvatarProps, SidenavContentProps, SidenavContextValue, SidenavDividerProps, SidenavFooterProps, SidenavHeaderProps, SidenavItemProps, SidenavLinkProps, SidenavProps, SidenavTriggerProps } from './components/sidenav/types.js';
|
|
91
|
+
export { SidenavAvatarProps, SidenavCloseEvent, SidenavContentProps, SidenavContextValue, SidenavDividerProps, SidenavEvent, SidenavFooterProps, SidenavHeaderProps, SidenavItemProps, SidenavLinkProps, SidenavMenuItemProps, SidenavMenuProps, SidenavOpenEvent, SidenavProps, SidenavToggleEvent, SidenavTriggerProps } from './components/sidenav/types.js';
|
|
92
92
|
export { Skeleton } from './components/skeleton/index.js';
|
|
93
93
|
export { SkeletonStyles, SkeletonStylesDefaults } from './components/skeleton/styles.js';
|
|
94
94
|
export { SkeletonProps, SkeletonStyleVariants } from './components/skeleton/types.js';
|