@dxos/react-ui-list 0.7.5-labs.ea4b4c2 → 0.7.5-labs.ff2ff30
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/lib/browser/index.mjs +17 -0
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/index.cjs +16 -0
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +17 -0
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/Tree/Tree.stories.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/util/index.d.ts +2 -0
- package/dist/types/src/util/index.d.ts.map +1 -0
- package/dist/types/src/util/path.d.ts +14 -0
- package/dist/types/src/util/path.d.ts.map +1 -0
- package/dist/types/src/util/path.test.d.ts +2 -0
- package/dist/types/src/util/path.test.d.ts.map +1 -0
- package/package.json +16 -17
- package/src/components/Tree/Tree.stories.tsx +1 -1
- package/src/index.ts +1 -0
- package/src/util/index.ts +5 -0
- package/src/util/path.test.ts +24 -0
- package/src/util/path.ts +21 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/List/ListItem.tsx", "../../../src/components/List/ListRoot.tsx", "../../../src/components/List/List.tsx", "../../../src/components/Tree/Tree.tsx", "../../../src/components/Tree/TreeContext.tsx", "../../../src/components/Tree/TreeItem.tsx", "../../../src/components/Tree/TreeItemHeading.tsx", "../../../src/components/Tree/TreeItemToggle.tsx", "../../../src/components/Tree/helpers.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview';\nimport {\n type Edge,\n attachClosestEdge,\n extractClosestEdge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { createContext } from '@radix-ui/react-context';\nimport React, {\n type ComponentProps,\n type HTMLAttributes,\n type MutableRefObject,\n type PropsWithChildren,\n type ReactNode,\n forwardRef,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { invariant } from '@dxos/invariant';\nimport { Icon, type ThemedClassName, ListItem as NaturalListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useListContext } from './ListRoot';\n\nexport type ListItemRecord = {};\n\nexport type ItemState =\n | {\n type: 'idle';\n }\n | {\n type: 'preview';\n container: HTMLElement;\n }\n | {\n type: 'is-dragging';\n }\n | {\n type: 'is-dragging-over';\n closestEdge: Edge | null;\n };\n\nexport const idle: ItemState = { type: 'idle' };\n\nconst stateStyles: { [Key in ItemState['type']]?: HTMLAttributes<HTMLDivElement>['className'] } = {\n 'is-dragging': 'opacity-50',\n};\n\ntype ListItemContext<T extends ListItemRecord> = {\n item: T;\n dragHandleRef: MutableRefObject<HTMLElement | null>;\n};\n\n/**\n * Default context defined for ListItemDragPreview, which is defined outside of ListItem.\n */\nconst defaultContext: ListItemContext<any> = {} as any;\n\nconst LIST_ITEM_NAME = 'ListItem';\n\nexport const [ListItemProvider, useListItemContext] = createContext<ListItemContext<any>>(\n LIST_ITEM_NAME,\n defaultContext,\n);\n\nexport type ListItemProps<T extends ListItemRecord> = ThemedClassName<\n PropsWithChildren<{\n item: T;\n }> &\n HTMLAttributes<HTMLDivElement>\n>;\n\n/**\n * Draggable list item.\n */\nexport const ListItem = <T extends ListItemRecord>({ children, classNames, item, ...props }: ListItemProps<T>) => {\n const { isItem, dragPreview, setState: setRootState } = useListContext(LIST_ITEM_NAME);\n const ref = useRef<HTMLDivElement | null>(null);\n const dragHandleRef = useRef<HTMLElement | null>(null);\n const [state, setState] = useState<ItemState>(idle);\n useEffect(() => {\n const element = ref.current;\n invariant(element);\n return combine(\n //\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about#draggable\n //\n draggable({\n element,\n dragHandle: dragHandleRef.current!,\n getInitialData: () => item,\n onGenerateDragPreview: dragPreview\n ? ({ nativeSetDragImage, source }) => {\n const rect = source.element.getBoundingClientRect();\n setCustomNativeDragPreview({\n nativeSetDragImage,\n getOffset: ({ container }) => {\n const { height } = container.getBoundingClientRect();\n return {\n x: 20,\n y: height / 2,\n };\n },\n render: ({ container }) => {\n container.style.width = rect.width + 'px';\n setState({ type: 'preview', container });\n setRootState({ type: 'preview', container, item });\n return () => {}; // TODO(burdon): Cleanup.\n },\n });\n }\n : undefined,\n onDragStart: () => {\n setState({ type: 'is-dragging' });\n setRootState({ type: 'is-dragging', item });\n },\n onDrop: () => {\n setState(idle);\n setRootState(idle);\n },\n }),\n\n //\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about#drop-target-for-elements\n //\n dropTargetForElements({\n element,\n canDrop: ({ source }) => {\n return source.element !== element && isItem(source.data);\n },\n getData: ({ input }) => {\n return attachClosestEdge(item, { element, input, allowedEdges: ['top', 'bottom'] });\n },\n getIsSticky: () => true,\n onDragEnter: ({ self }) => {\n const closestEdge = extractClosestEdge(self.data);\n setState({ type: 'is-dragging-over', closestEdge });\n },\n onDrag: ({ self }) => {\n const closestEdge = extractClosestEdge(self.data);\n setState((current) => {\n if (current.type === 'is-dragging-over' && current.closestEdge === closestEdge) {\n return current;\n }\n return { type: 'is-dragging-over', closestEdge };\n });\n },\n onDragLeave: () => {\n setState(idle);\n },\n onDrop: () => {\n setState(idle);\n },\n }),\n );\n }, [item]);\n\n return (\n <ListItemProvider item={item} dragHandleRef={dragHandleRef}>\n <div role='none' className='relative'>\n <div\n ref={ref}\n role='listitem'\n className={mx('flex overflow-hidden', classNames, stateStyles[state.type])}\n {...props}\n >\n {children}\n </div>\n {state.type === 'is-dragging-over' && state.closestEdge && (\n <NaturalListItem.DropIndicator edge={state.closestEdge} />\n )}\n </div>\n </ListItemProvider>\n );\n};\n\n//\n// List item components\n//\n\nexport type IconButtonProps = ThemedClassName<ComponentProps<'button'>> & { icon: string };\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ classNames, icon, ...props }, forwardedRef) => {\n return (\n <button ref={forwardedRef} className={mx('flex items-center justify-center', classNames)} {...props}>\n <Icon icon={icon} classNames='cursor-pointer' size={4} />\n </button>\n );\n },\n);\n\nexport const ListItemDeleteButton = ({\n autoHide = true,\n classNames,\n disabled,\n ...props\n}: Omit<IconButtonProps, 'icon'> & { autoHide?: boolean }) => {\n const { state } = useListContext('DELETE_BUTTON');\n const isDisabled = state.type !== 'idle' || disabled;\n return (\n <IconButton\n icon='ph--x--regular'\n disabled={isDisabled}\n classNames={[classNames, autoHide && disabled && 'hidden']}\n {...props}\n />\n );\n};\n\nexport const ListItemDragHandle = () => {\n const { dragHandleRef } = useListItemContext('DRAG_HANDLE');\n return <IconButton ref={dragHandleRef as any} icon='ph--dots-six-vertical--regular' />;\n};\n\nexport const ListItemDragPreview = <T extends ListItemRecord>({\n children,\n}: {\n children: ({ item }: { item: T }) => ReactNode;\n}) => {\n const { state } = useListContext('DRAG_PREVIEW');\n return state?.type === 'preview' ? createPortal(children({ item: state.item }), state.container) : null;\n};\n\nexport const ListItemWrapper = ({ classNames, children }: ThemedClassName<PropsWithChildren>) => (\n <div className={mx('flex is-full gap-2', classNames)}>{children}</div>\n);\n\nexport const ListItemTitle = ({\n classNames,\n children,\n ...props\n}: ThemedClassName<PropsWithChildren<ComponentProps<'div'>>>) => (\n <div className={mx('flex grow items-center truncate', classNames)} {...props}>\n {children}\n </div>\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { getReorderDestinationIndex } from '@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type ReactNode, useCallback, useEffect, useState } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\n\nimport { idle, type ItemState, type ListItemRecord } from './ListItem';\n\ntype ListContext<T extends ListItemRecord> = {\n isItem: (item: any) => boolean;\n getId?: (item: T) => string; // TODO(burdon): Require if T doesn't conform to type.\n dragPreview?: boolean;\n state: ItemState & { item?: T };\n setState: (state: ItemState & { item?: T }) => void;\n};\n\nconst LIST_NAME = 'List';\n\nexport const [ListProvider, useListContext] = createContext<ListContext<any>>(LIST_NAME);\n\nexport type ListRendererProps<T extends ListItemRecord> = {\n state: ListContext<T>['state'];\n items: T[];\n};\n\nexport type ListRootProps<T extends ListItemRecord> = ThemedClassName<{\n children?: (props: ListRendererProps<T>) => ReactNode;\n items?: T[];\n onMove?: (fromIndex: number, toIndex: number) => void;\n}> &\n Pick<ListContext<T>, 'isItem' | 'getId' | 'dragPreview'>;\n\nconst defaultGetId = <T extends ListItemRecord>(item: T) => (item as any)?.id;\n\nexport const ListRoot = <T extends ListItemRecord>({\n classNames,\n children,\n items,\n isItem,\n getId = defaultGetId,\n onMove,\n ...props\n}: ListRootProps<T>) => {\n const isEqual = useCallback(\n (a: T, b: T) => {\n const idA = getId?.(a);\n const idB = getId?.(b);\n\n if (idA !== undefined && idB !== undefined) {\n return idA === idB;\n } else {\n // Fallback for primitive values or when getId fails.\n // NOTE(ZaymonFC): After drag and drop, pragmatic internally serializes drop targets which breaks reference equality.\n // You must provide an `getId` function that returns a stable identifier for your items.\n return a === b;\n }\n },\n [getId],\n );\n\n const [state, setState] = useState<ListContext<T>['state']>(idle);\n useEffect(() => {\n if (!items) {\n return;\n }\n\n return monitorForElements({\n canMonitor: ({ source }) => isItem(source.data),\n onDrop: ({ location, source }) => {\n const target = location.current.dropTargets[0];\n if (!target) {\n return;\n }\n\n const sourceData = source.data;\n const targetData = target.data;\n\n if (!isItem(sourceData) || !isItem(targetData)) {\n return;\n }\n\n const sourceIdx = items.findIndex((item) => isEqual(item, sourceData as T));\n const targetIdx = items.findIndex((item) => isEqual(item, targetData as T));\n if (targetIdx < 0 || sourceIdx < 0) {\n return;\n }\n const closestEdgeOfTarget = extractClosestEdge(targetData);\n const destinationIndex = getReorderDestinationIndex({\n closestEdgeOfTarget,\n startIndex: sourceIdx,\n indexOfTarget: targetIdx,\n axis: 'vertical',\n });\n\n onMove?.(sourceIdx, destinationIndex);\n },\n });\n }, [items, isEqual, onMove]);\n\n return (\n <ListProvider {...{ isItem, state, setState, ...props }}>{children?.({ state, items: items ?? [] })}</ListProvider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n IconButton,\n type IconButtonProps,\n ListItem,\n ListItemDeleteButton,\n ListItemDragHandle,\n ListItemDragPreview,\n type ListItemProps,\n type ListItemRecord,\n ListItemTitle,\n ListItemWrapper,\n} from './ListItem';\nimport { ListRoot, type ListRootProps } from './ListRoot';\n\n// TODO(burdon): Multi-select model.\n// TODO(burdon): Key nav.\n// TODO(burdon): Animation.\n// TODO(burdon): Constrain axis.\n// TODO(burdon): Tree view.\n// TODO(burdon): Fix autoscroll while dragging.\n\n/**\n * Draggable list.\n * Ref: https://github.com/atlassian/pragmatic-drag-and-drop\n * Ref: https://github.com/alexreardon/pdnd-react-tailwind/blob/main/src/task.tsx\n */\nexport const List = {\n Root: ListRoot,\n Item: ListItem,\n ItemDragPreview: ListItemDragPreview,\n ItemWrapper: ListItemWrapper,\n ItemDragHandle: ListItemDragHandle,\n ItemDeleteButton: ListItemDeleteButton,\n ItemTitle: ListItemTitle,\n IconButton,\n};\n\ntype ListItem = ListItemRecord;\n\nexport type { ListRootProps, ListItemProps, IconButtonProps, ListItem };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Treegrid, type TreegridRootProps } from '@dxos/react-ui';\n\nimport { type TreeContextType, TreeProvider } from './TreeContext';\nimport { TreeItem, type TreeItemProps } from './TreeItem';\n\nexport type TreeProps<T = any> = { root?: T; path?: string[]; id: string } & TreeContextType &\n Partial<Pick<TreegridRootProps, 'gridTemplateColumns' | 'classNames'>> &\n Pick<TreeItemProps<T>, 'draggable' | 'renderColumns' | 'canDrop' | 'onOpenChange' | 'onSelect' | 'levelOffset'>;\n\nexport const Tree = <T = any,>({\n root,\n path,\n id,\n getItems,\n getProps,\n isOpen,\n isCurrent,\n draggable = false,\n gridTemplateColumns = '[tree-row-start] 1fr min-content [tree-row-end]',\n classNames,\n renderColumns,\n canDrop,\n onOpenChange,\n onSelect,\n levelOffset,\n}: TreeProps<T>) => {\n const context = useMemo(\n () => ({\n getItems,\n getProps,\n isOpen,\n isCurrent,\n }),\n [getItems, getProps, isOpen, isCurrent],\n );\n const items = getItems(root);\n const treePath = useMemo(() => (path ? [...path, id] : [id]), [id, path]);\n\n return (\n <Treegrid.Root gridTemplateColumns={gridTemplateColumns} classNames={classNames}>\n <TreeProvider value={context}>\n {items.map((item, index) => (\n <TreeItem\n key={item.id}\n item={item}\n last={index === items.length - 1}\n path={treePath}\n levelOffset={levelOffset}\n draggable={draggable}\n renderColumns={renderColumns}\n canDrop={canDrop}\n onOpenChange={onOpenChange}\n onSelect={onSelect}\n />\n ))}\n </TreeProvider>\n </Treegrid.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\nimport { type Label } from '@dxos/react-ui';\n\nexport type PropsFromTreeItem = {\n id: string;\n label: Label;\n parentOf?: string[];\n icon?: string;\n disabled?: boolean;\n className?: string;\n headingClassName?: string;\n testId?: string;\n};\n\nexport type TreeContextType<T = any> = {\n getItems: (parent?: T) => T[];\n getProps: (item: T, parent: string[]) => PropsFromTreeItem;\n isOpen: (path: string[], item: T) => boolean;\n isCurrent: (path: string[], item: T) => boolean;\n};\n\nconst TreeContext = createContext<null | TreeContextType>(null);\n\nexport const useTree = () => useContext(TreeContext) ?? raise(new Error('TreeContext not found'));\n\nexport const TreeProvider = TreeContext.Provider;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport {\n attachInstruction,\n extractInstruction,\n type Instruction,\n type ItemMode,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\nimport React, { memo, useCallback, useEffect, useMemo, useRef, useState, type FC, type KeyboardEvent } from 'react';\n\nimport { S } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { Treegrid, TreeItem as NaturalTreeItem } from '@dxos/react-ui';\nimport {\n ghostHover,\n hoverableControls,\n hoverableFocusedKeyboardControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\n\nimport { useTree } from './TreeContext';\nimport { TreeItemHeading } from './TreeItemHeading';\nimport { TreeItemToggle } from './TreeItemToggle';\nimport { DEFAULT_INDENTATION, paddingIndentation } from './helpers';\n\ntype TreeItemState = 'idle' | 'dragging' | 'preview' | 'parent-of-instruction';\n\nconst hoverableDescriptionIcons =\n '[--icons-color:inherit] hover-hover:[--icons-color:var(--description-text)] hover-hover:hover:[--icons-color:inherit] focus-within:[--icons-color:inherit]';\n\nexport const TreeDataSchema = S.Struct({\n id: S.String,\n path: S.Array(S.String),\n item: S.Any,\n});\n\nexport type TreeData = S.Schema.Type<typeof TreeDataSchema>;\n\nexport const isTreeData = (data: unknown): data is TreeData => S.is(TreeDataSchema)(data);\n\nexport type TreeItemProps<T = any> = {\n item: T;\n path: string[];\n levelOffset?: number;\n last: boolean;\n draggable?: boolean;\n renderColumns?: FC<{\n item: T;\n path: string[];\n open: boolean;\n menuOpen: boolean;\n setMenuOpen: (open: boolean) => void;\n }>;\n canDrop?: (source: TreeData, target: TreeData) => boolean;\n onOpenChange?: (params: { item: T; path: string[]; open: boolean }) => void;\n onSelect?: (params: { item: T; path: string[]; current: boolean; option: boolean }) => void;\n};\n\nexport const RawTreeItem = <T = any,>({\n item,\n path: _path,\n last,\n draggable: _draggable,\n renderColumns: Columns,\n canDrop,\n onOpenChange,\n onSelect,\n levelOffset = 2,\n}: TreeItemProps<T>) => {\n const { getItems, getProps, isOpen, isCurrent } = useTree();\n const items = getItems(item);\n const { id, label, parentOf, icon, disabled, className, headingClassName, testId } = getProps(item, _path);\n const path = useMemo(() => [..._path, id], [_path, id]);\n const open = isOpen(path, item);\n const current = isCurrent(path, item);\n const level = path.length - levelOffset;\n const isBranch = !!parentOf;\n const mode: ItemMode = last ? 'last-in-group' : open ? 'expanded' : 'standard';\n const data = useMemo(() => ({ id, path, item }) satisfies TreeData, [id, path, item]);\n\n const rowRef = useRef<HTMLDivElement | null>(null);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n const openRef = useRef(false);\n const cancelExpandRef = useRef<NodeJS.Timeout | null>(null);\n const [_state, setState] = useState<TreeItemState>('idle');\n const [instruction, setInstruction] = useState<Instruction | null>(null);\n const [menuOpen, setMenuOpen] = useState(false);\n\n const cancelExpand = useCallback(() => {\n if (cancelExpandRef.current) {\n clearTimeout(cancelExpandRef.current);\n cancelExpandRef.current = null;\n }\n }, []);\n\n useEffect(() => {\n if (!_draggable) {\n return;\n }\n\n invariant(buttonRef.current);\n\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about\n return combine(\n draggable({\n element: buttonRef.current,\n getInitialData: () => data,\n onDragStart: () => {\n setState('dragging');\n if (open) {\n openRef.current = true;\n onOpenChange?.({ item, path, open: false });\n }\n },\n onDrop: () => {\n setState('idle');\n if (openRef.current) {\n onOpenChange?.({ item, path, open: true });\n }\n },\n }),\n // https://github.com/atlassian/pragmatic-drag-and-drop/blob/main/packages/hitbox/constellation/index/about.mdx\n dropTargetForElements({\n element: buttonRef.current,\n getData: ({ input, element }) => {\n return attachInstruction(data, {\n input,\n element,\n indentPerLevel: DEFAULT_INDENTATION,\n currentLevel: level,\n mode,\n block: isBranch ? [] : ['make-child'],\n });\n },\n canDrop: ({ source }) => {\n const _canDrop = canDrop ?? (() => true);\n return source.element !== buttonRef.current && _canDrop(source.data as TreeData, data);\n },\n getIsSticky: () => true,\n onDrag: ({ self, source }) => {\n const instruction = extractInstruction(self.data);\n\n if (source.data.id !== id) {\n if (instruction?.type === 'make-child' && isBranch && !open && !cancelExpandRef.current) {\n cancelExpandRef.current = setTimeout(() => {\n onOpenChange?.({ item, path, open: true });\n }, 500);\n }\n\n if (instruction?.type !== 'make-child') {\n cancelExpand();\n }\n\n setInstruction(instruction);\n } else if (instruction?.type === 'reparent') {\n // TODO(wittjosiah): This is not occurring in the current implementation.\n setInstruction(instruction);\n } else {\n setInstruction(null);\n }\n },\n onDragLeave: () => {\n cancelExpand();\n setInstruction(null);\n },\n onDrop: () => {\n cancelExpand();\n setInstruction(null);\n },\n }),\n );\n }, [_draggable, item, id, mode, path, open, canDrop]);\n\n // Cancel expand on unmount.\n useEffect(() => () => cancelExpand(), [cancelExpand]);\n\n const handleOpenChange = useCallback(\n () => onOpenChange?.({ item, path, open: !open }),\n [onOpenChange, item, path, open],\n );\n\n const handleSelect = useCallback(\n (option = false) => {\n rowRef.current?.focus();\n onSelect?.({ item, path, current: !current, option });\n },\n [onSelect, item, path, current],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowRight':\n isBranch && !open && handleOpenChange();\n break;\n case 'ArrowLeft':\n isBranch && open && handleOpenChange();\n break;\n case ' ':\n handleSelect(event.altKey);\n break;\n }\n },\n [isBranch, open, handleOpenChange, handleSelect],\n );\n\n return (\n <>\n <Treegrid.Row\n ref={rowRef}\n key={id}\n id={id}\n aria-labelledby={`${id}__label`}\n parentOf={parentOf?.join(Treegrid.PARENT_OF_SEPARATOR)}\n classNames={mx(\n 'grid grid-cols-subgrid col-[tree-row] mbs-0.5 aria-[current]:bg-input',\n hoverableControls,\n hoverableFocusedKeyboardControls,\n hoverableFocusedWithinControls,\n hoverableDescriptionIcons,\n ghostHover,\n className,\n )}\n data-itemid={id}\n data-testid={testId}\n // NOTE(thure): This is intentionally an empty string to for descendents to select by in the CSS\n // without alerting the user (except for in the correct link element). See also:\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current#description\n aria-current={current ? ('' as 'page') : undefined}\n onKeyDown={handleKeyDown}\n onContextMenu={(event) => {\n event.preventDefault();\n setMenuOpen(true);\n }}\n >\n <Treegrid.Cell\n indent\n classNames='relative grid grid-cols-subgrid col-[tree-row]'\n style={paddingIndentation(level)}\n >\n <div role='none' className='flex items-center'>\n <TreeItemToggle open={open} isBranch={isBranch} onToggle={handleOpenChange} />\n <TreeItemHeading\n ref={buttonRef}\n label={label}\n icon={icon}\n className={headingClassName}\n disabled={disabled}\n current={current}\n onSelect={handleSelect}\n />\n </div>\n {Columns && <Columns item={item} path={path} open={open} menuOpen={menuOpen} setMenuOpen={setMenuOpen} />}\n {instruction && <NaturalTreeItem.DropIndicator instruction={instruction} gap={2} />}\n </Treegrid.Cell>\n </Treegrid.Row>\n {open &&\n items.map((item, index) => (\n <TreeItem\n key={item.id}\n item={item}\n path={path}\n last={index === items.length - 1}\n draggable={_draggable}\n renderColumns={Columns}\n canDrop={canDrop}\n onOpenChange={onOpenChange}\n onSelect={onSelect}\n />\n ))}\n </>\n );\n};\n\nexport const TreeItem = memo(RawTreeItem) as FC<TreeItemProps>;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type KeyboardEvent, type MouseEvent, forwardRef, memo, useCallback } from 'react';\n\nimport { Button, Icon, toLocalizedString, useTranslation, type Label } from '@dxos/react-ui';\nimport { TextTooltip } from '@dxos/react-ui-text-tooltip';\nimport { mx } from '@dxos/react-ui-theme';\n\n// TODO(wittjosiah): Consider whether there should be a separate disabled prop which was visually distinct\n// rather than just making the item unselectable.\nexport type NavTreeItemHeadingProps = {\n label: Label;\n icon?: string;\n className?: string;\n disabled?: boolean;\n current?: boolean;\n onSelect?: (option: boolean) => void;\n};\n\nexport const TreeItemHeading = memo(\n forwardRef<HTMLButtonElement, NavTreeItemHeadingProps>(\n ({ label, icon, className, disabled, current, onSelect }, forwardedRef) => {\n const { t } = useTranslation();\n\n const handleSelect = useCallback(\n (event: MouseEvent) => {\n onSelect?.(event.altKey);\n },\n [onSelect],\n );\n\n const handleButtonKeydown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n onSelect?.(event.altKey);\n }\n },\n [onSelect],\n );\n\n return (\n <TextTooltip\n text={toLocalizedString(label, t)}\n side='bottom'\n truncateQuery='span[data-tooltip]'\n onlyWhenTruncating\n asChild\n ref={forwardedRef}\n >\n <Button\n data-testid='treeItem.heading'\n variant='ghost'\n density='fine'\n classNames={mx(\n 'grow gap-2 pis-0.5 hover:bg-transparent dark:hover:bg-transparent',\n 'disabled:cursor-default disabled:opacity-100',\n className,\n )}\n disabled={disabled}\n onClick={handleSelect}\n onKeyDown={handleButtonKeydown}\n {...(current && { 'aria-current': 'location' })}\n >\n {icon && <Icon icon={icon ?? 'ph--placeholder--regular'} size={4} classNames='is-[1em] bs-[1em] mlb-1' />}\n <span className='flex-1 is-0 truncate text-start text-sm font-normal' data-tooltip>\n {toLocalizedString(label, t)}\n </span>\n </Button>\n </TextTooltip>\n );\n },\n ),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, memo } from 'react';\n\nimport { Button, Icon } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type TreeItemToggleProps = {\n open?: boolean;\n isBranch?: boolean;\n onToggle?: () => void;\n hidden?: boolean;\n};\n\nexport const TreeItemToggle = memo(\n forwardRef<HTMLButtonElement, TreeItemToggleProps>(({ open, isBranch, hidden, onToggle }, forwardedRef) => {\n return (\n <Button\n ref={forwardedRef}\n data-testid='treeItem.toggle'\n aria-expanded={open}\n variant='ghost'\n density='fine'\n classNames={mx('is-4 dx-focus-ring-inset pli-0', hidden ? 'hidden' : !isBranch && 'invisible')}\n onClick={onToggle}\n >\n <Icon\n icon='ph--caret-right--regular'\n size={3}\n classNames={mx('transition duration-200', open && 'rotate-90')}\n />\n </Button>\n );\n }),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const DEFAULT_INDENTATION = 8;\n\nexport const paddingIndentation = (level: number, indentation = DEFAULT_INDENTATION) => ({\n paddingInlineStart: `${(level - 1) * indentation}px`,\n});\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,qBAAwB;AACxB,qBAAiD;AACjD,4CAA2C;AAC3C,0BAIO;AACP,2BAA8B;AAC9B,mBAUO;AACP,uBAA6B;AAE7B,uBAA0B;AAC1B,sBAAwE;AACxE,4BAAmB;ACxBnB,IAAAA,kBAAmC;AACnC,IAAAC,uBAAmC;AACnC,2CAA2C;AAC3C,IAAAC,wBAA8B;AAC9B,IAAAC,gBAAwE;AEJxE,IAAAA,gBAA+B;AAE/B,IAAAC,mBAAiD;ACFjD,IAAAD,gBAA0C;AAE1C,mBAAsB;ACFtB,IAAAE,kBAAwB;AACxB,IAAAL,kBAAiD;AACjD,uBAKO;AACP,IAAAG,gBAA4G;AAE5G,yBAAkB;AAClB,IAAAG,oBAA0B;AAC1B,IAAAF,mBAAsD;AACtD,IAAAG,yBAMO;ACnBP,IAAAJ,gBAA0F;AAE1F,IAAAC,mBAA4E;AAC5E,mCAA4B;AAC5B,IAAAG,yBAAmB;ACJnB,IAAAJ,gBAAwC;AAExC,IAAAC,mBAA6B;AAC7B,IAAAG,yBAAmB;ANenB,IAAMC,YAAY;AAEX,IAAM,CAACC,cAAcC,cAAAA,QAAkBC,qCAAgCH,SAAAA;AAc9E,IAAMI,eAAe,CAA2BC,SAAaA,MAAcC;AAEpE,IAAMC,WAAW,CAA2B,EACjDC,YACAC,UACAC,OACAC,QACAC,QAAQR,cACRS,QACA,GAAGC,MAAAA,MACc;AACjB,QAAMC,cAAUC,2BACd,CAACC,GAAMC,MAAAA;AACL,UAAMC,MAAMP,QAAQK,CAAAA;AACpB,UAAMG,MAAMR,QAAQM,CAAAA;AAEpB,QAAIC,QAAQE,UAAaD,QAAQC,QAAW;AAC1C,aAAOF,QAAQC;IACjB,OAAO;AAIL,aAAOH,MAAMC;IACf;EACF,GACA;IAACN;GAAM;AAGT,QAAM,CAACU,OAAOC,QAAAA,QAAYC,wBAAkCC,IAAAA;AAC5DC,+BAAU,MAAA;AACR,QAAI,CAAChB,OAAO;AACV;IACF;AAEA,eAAOiB,oCAAmB;MACxBC,YAAY,CAAC,EAAEC,OAAM,MAAOlB,OAAOkB,OAAOC,IAAI;MAC9CC,QAAQ,CAAC,EAAEC,UAAUH,OAAM,MAAE;AAC3B,cAAMI,SAASD,SAASE,QAAQC,YAAY,CAAA;AAC5C,YAAI,CAACF,QAAQ;AACX;QACF;AAEA,cAAMG,aAAaP,OAAOC;AAC1B,cAAMO,aAAaJ,OAAOH;AAE1B,YAAI,CAACnB,OAAOyB,UAAAA,KAAe,CAACzB,OAAO0B,UAAAA,GAAa;AAC9C;QACF;AAEA,cAAMC,YAAY5B,MAAM6B,UAAU,CAAClC,SAASU,QAAQV,MAAM+B,UAAAA,CAAAA;AAC1D,cAAMI,YAAY9B,MAAM6B,UAAU,CAAClC,SAASU,QAAQV,MAAMgC,UAAAA,CAAAA;AAC1D,YAAIG,YAAY,KAAKF,YAAY,GAAG;AAClC;QACF;AACA,cAAMG,0BAAsBC,yCAAmBL,UAAAA;AAC/C,cAAMM,uBAAmBC,iEAA2B;UAClDH;UACAI,YAAYP;UACZQ,eAAeN;UACfO,MAAM;QACR,CAAA;AAEAlC,iBAASyB,WAAWK,gBAAAA;MACtB;IACF,CAAA;EACF,GAAG;IAACjC;IAAOK;IAASF;GAAO;AAE3B,SACE,8BAAAmC,QAAA,cAAC/C,cAAiB;IAAEU;IAAQW;IAAOC;IAAU,GAAGT;EAAM,GAAIL,WAAW;IAAEa;IAAOZ,OAAOA,SAAS,CAAA;EAAG,CAAA,CAAA;AAErG;;AD1DO,IAAMe,OAAkB;EAAEwB,MAAM;AAAO;AAE9C,IAAMC,cAA4F;EAChG,eAAe;AACjB;AAUA,IAAMC,iBAAuC,CAAC;AAE9C,IAAMC,iBAAiB;AAEhB,IAAM,CAACC,kBAAkBC,kBAAAA,QAAsBnD,qBAAAA,eACpDiD,gBACAD,cAAAA;AAaK,IAAMI,WAAW,CAA2B,EAAE9C,UAAUD,YAAYH,MAAM,GAAGS,MAAAA,MAAyB;AAC3G,QAAM,EAAEH,QAAQ6C,aAAajC,UAAUkC,aAAY,IAAKvD,eAAekD,cAAAA;AACvE,QAAMM,UAAMC,qBAA8B,IAAA;AAC1C,QAAMC,oBAAgBD,qBAA2B,IAAA;AACjD,QAAM,CAACrC,OAAOC,QAAAA,QAAYC,aAAAA,UAAoBC,IAAAA;AAC9CC,mBAAAA,WAAU,MAAA;AACR,UAAMmC,UAAUH,IAAIxB;AACpB4B,oCAAUD,SAAAA,QAAAA;;;;;;;;;AACV,eAAOE;;;;UAILC,0BAAU;QACRH;QACAI,YAAYL,cAAc1B;QAC1BgC,gBAAgB,MAAM7D;QACtB8D,uBAAuBX,cACnB,CAAC,EAAEY,oBAAoBvC,OAAM,MAAE;AAC7B,gBAAMwC,OAAOxC,OAAOgC,QAAQS,sBAAqB;AACjDC,gFAA2B;YACzBH;YACAI,WAAW,CAAC,EAAEC,UAAS,MAAE;AACvB,oBAAM,EAAEC,OAAM,IAAKD,UAAUH,sBAAqB;AAClD,qBAAO;gBACLK,GAAG;gBACHC,GAAGF,SAAS;cACd;YACF;YACAG,QAAQ,CAAC,EAAEJ,UAAS,MAAE;AACpBA,wBAAUK,MAAMC,QAAQV,KAAKU,QAAQ;AACrCxD,uBAAS;gBAAE0B,MAAM;gBAAWwB;cAAU,CAAA;AACtChB,2BAAa;gBAAER,MAAM;gBAAWwB;gBAAWpE;cAAK,CAAA;AAChD,qBAAO,MAAA;cAAO;YAChB;UACF,CAAA;QACF,IACAgB;QACJ2D,aAAa,MAAA;AACXzD,mBAAS;YAAE0B,MAAM;UAAc,CAAA;AAC/BQ,uBAAa;YAAER,MAAM;YAAe5C;UAAK,CAAA;QAC3C;QACA0B,QAAQ,MAAA;AACNR,mBAASE,IAAAA;AACTgC,uBAAahC,IAAAA;QACf;MACF,CAAA;;;;UAKAwD,sCAAsB;QACpBpB;QACAqB,SAAS,CAAC,EAAErD,OAAM,MAAE;AAClB,iBAAOA,OAAOgC,YAAYA,WAAWlD,OAAOkB,OAAOC,IAAI;QACzD;QACAqD,SAAS,CAAC,EAAEC,MAAK,MAAE;AACjB,qBAAOC,uCAAkBhF,MAAM;YAAEwD;YAASuB;YAAOE,cAAc;cAAC;cAAO;;UAAU,CAAA;QACnF;QACAC,aAAa,MAAM;QACnBC,aAAa,CAAC,EAAEC,KAAI,MAAE;AACpB,gBAAMC,kBAAchD,oBAAAA,oBAAmB+C,KAAK3D,IAAI;AAChDP,mBAAS;YAAE0B,MAAM;YAAoByC;UAAY,CAAA;QACnD;QACAC,QAAQ,CAAC,EAAEF,KAAI,MAAE;AACf,gBAAMC,kBAAchD,oBAAAA,oBAAmB+C,KAAK3D,IAAI;AAChDP,mBAAS,CAACW,YAAAA;AACR,gBAAIA,QAAQe,SAAS,sBAAsBf,QAAQwD,gBAAgBA,aAAa;AAC9E,qBAAOxD;YACT;AACA,mBAAO;cAAEe,MAAM;cAAoByC;YAAY;UACjD,CAAA;QACF;QACAE,aAAa,MAAA;AACXrE,mBAASE,IAAAA;QACX;QACAM,QAAQ,MAAA;AACNR,mBAASE,IAAAA;QACX;MACF,CAAA;IAAA;EAEJ,GAAG;IAACpB;GAAK;AAET,SACE2C,6BAAAA,QAAA,cAACK,kBAAAA;IAAiBhD;IAAYuD;KAC5BZ,6BAAAA,QAAA,cAAC6C,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB/C,6BAAAA,QAAA,cAAC6C,OAAAA;IACCnC;IACAoC,MAAK;IACLC,eAAWC,0BAAG,wBAAwBxF,YAAY0C,YAAY5B,MAAM2B,IAAI,CAAC;IACxE,GAAGnC;KAEHL,QAAAA,GAEFa,MAAM2B,SAAS,sBAAsB3B,MAAMoE,eAC1C1C,6BAAAA,QAAA,cAACiD,gBAAAA,SAAgBC,eAAa;IAACC,MAAM7E,MAAMoE;;AAKrD;AAQO,IAAMU,aAAaC,6CACxB,CAAC,EAAE7F,YAAY8F,MAAM,GAAGxF,MAAAA,GAASyF,iBAAAA;AAC/B,SACEvD,6BAAAA,QAAA,cAACwD,UAAAA;IAAO9C,KAAK6C;IAAcR,eAAWC,0BAAG,oCAAoCxF,UAAAA;IAAc,GAAGM;KAC5FkC,6BAAAA,QAAA,cAACyD,sBAAAA;IAAKH;IAAY9F,YAAW;IAAiBkG,MAAM;;AAG1D,CAAA;AAGK,IAAMC,uBAAuB,CAAC,EACnCC,WAAW,MACXpG,YACAqG,UACA,GAAG/F,MAAAA,MACoD;AACvD,QAAM,EAAEQ,MAAK,IAAKpB,eAAe,eAAA;AACjC,QAAM4G,aAAaxF,MAAM2B,SAAS,UAAU4D;AAC5C,SACE7D,6BAAAA,QAAA,cAACoD,YAAAA;IACCE,MAAK;IACLO,UAAUC;IACVtG,YAAY;MAACA;MAAYoG,YAAYC,YAAY;;IAChD,GAAG/F;;AAGV;AAEO,IAAMiG,qBAAqB,MAAA;AAChC,QAAM,EAAEnD,cAAa,IAAKN,mBAAmB,aAAA;AAC7C,SAAON,6BAAAA,QAAA,cAACoD,YAAAA;IAAW1C,KAAKE;IAAsB0C,MAAK;;AACrD;AAEO,IAAMU,sBAAsB,CAA2B,EAC5DvG,SAAQ,MAGT;AACC,QAAM,EAAEa,MAAK,IAAKpB,eAAe,cAAA;AACjC,SAAOoB,OAAO2B,SAAS,YAAYgE,mDAAaxG,SAAS;IAAEJ,MAAMiB,MAAMjB;EAAK,CAAA,GAAIiB,MAAMmD,SAAS,IAAI;AACrG;AAEO,IAAMyC,kBAAkB,CAAC,EAAE1G,YAAYC,SAAQ,MACpDuC,6BAAAA,QAAA,cAAC6C,OAAAA;EAAIE,eAAWC,0BAAG,sBAAsBxF,UAAAA;GAAcC,QAAAA;AAGlD,IAAM0G,gBAAgB,CAAC,EAC5B3G,YACAC,UACA,GAAGK,MAAAA,MAEHkC,6BAAAA,QAAA,cAAC6C,OAAAA;EAAIE,eAAWC,0BAAG,mCAAmCxF,UAAAA;EAAc,GAAGM;GACpEL,QAAAA;AEpNE,IAAM2G,OAAO;EAClBC,MAAM9G;EACN+G,MAAM/D;EACNgE,iBAAiBP;EACjBQ,aAAaN;EACbO,gBAAgBV;EAChBW,kBAAkBf;EAClBgB,WAAWR;EACXf;AACF;AEZA,IAAMwB,cAAczH,kCAAAA,eAAsC,IAAA;AAEnD,IAAM0H,UAAU,UAAMC,0BAAWF,WAAAA,SAAgBG,oBAAM,IAAIC,MAAM,uBAAA,CAAA;AAEjE,IAAMC,eAAeL,YAAYM;AEVjC,IAAMC,kBAAkBC,wCAC7B/B,kCAAAA,YACE,CAAC,EAAEgC,OAAO/B,MAAMP,WAAWc,UAAU3E,SAASoG,SAAQ,GAAI/B,iBAAAA;AACxD,QAAM,EAAEgC,EAAC,QAAKC,iCAAAA;AAEd,QAAMC,mBAAezH,cAAAA,aACnB,CAAC0H,UAAAA;AACCJ,eAAWI,MAAMC,MAAM;EACzB,GACA;IAACL;GAAS;AAGZ,QAAMM,0BAAsB5H,cAAAA,aAC1B,CAAC0H,UAAAA;AACC,QAAIA,MAAMG,QAAQ,OAAOH,MAAMG,QAAQ,SAAS;AAC9CH,YAAMI,eAAc;AACpBJ,YAAMK,gBAAe;AACrBT,iBAAWI,MAAMC,MAAM;IACzB;EACF,GACA;IAACL;GAAS;AAGZ,SACEtF,8BAAAA,QAAA,cAACgG,0CAAAA;IACCC,UAAMC,oCAAkBb,OAAOE,CAAAA;IAC/BY,MAAK;IACLC,eAAc;IACdC,oBAAAA;IACAC,SAAAA;IACA5F,KAAK6C;KAELvD,8BAAAA,QAAA,cAACuG,yBAAAA;IACCC,eAAY;IACZC,SAAQ;IACRC,SAAQ;IACRlJ,gBAAYwF,uBAAAA,IACV,qEACA,gDACAD,SAAAA;IAEFc;IACA8C,SAASlB;IACTmB,WAAWhB;IACV,GAAI1G,WAAW;MAAE,gBAAgB;IAAW;KAE5CoE,QAAQtD,8BAAAA,QAAA,cAACyD,iBAAAA,MAAAA;IAAKH,MAAMA,QAAQ;IAA4BI,MAAM;IAAGlG,YAAW;MAC7EwC,8BAAAA,QAAA,cAAC6G,QAAAA;IAAK9D,WAAU;IAAsD+D,gBAAAA;SACnEZ,oCAAkBb,OAAOE,CAAAA,CAAAA,CAAAA,CAAAA;AAKpC,CAAA,CAAA;AC1DG,IAAMwB,iBAAiB3B,kCAAAA,MAC5B/B,kCAAAA,YAAmD,CAAC,EAAE2D,MAAMC,UAAUC,QAAQC,SAAQ,GAAI5D,iBAAAA;AACxF,SACEvD,8BAAAA,QAAA,cAACuG,iBAAAA,QAAAA;IACC7F,KAAK6C;IACLiD,eAAY;IACZY,iBAAeJ;IACfP,SAAQ;IACRC,SAAQ;IACRlJ,gBAAYwF,uBAAAA,IAAG,kCAAkCkE,SAAS,WAAW,CAACD,YAAY,WAAA;IAClFN,SAASQ;KAETnH,8BAAAA,QAAA,cAACyD,iBAAAA,MAAAA;IACCH,MAAK;IACLI,MAAM;IACNlG,gBAAYwF,uBAAAA,IAAG,2BAA2BgE,QAAQ,WAAA;;AAI1D,CAAA,CAAA;AC/BK,IAAMK,sBAAsB;AAE5B,IAAMC,qBAAqB,CAACC,OAAeC,cAAcH,yBAAyB;EACvFI,oBAAoB,IAAIF,QAAQ,KAAKC,WAAAA;AACvC;;AHwBA,IAAME,4BACJ;AAEK,IAAMC,iBAAiBC,qBAAEC,OAAO;EACrCvK,IAAIsK,qBAAEE;EACNC,MAAMH,qBAAEI,MAAMJ,qBAAEE,MAAM;EACtBzK,MAAMuK,qBAAEK;AACV,CAAA;AAIO,IAAMC,aAAa,CAACpJ,SAAoC8I,qBAAEO,GAAGR,cAAAA,EAAgB7I,IAAAA;AAoB7E,IAAMsJ,cAAc,CAAW,EACpC/K,MACA0K,MAAMM,OACNC,MACAtH,WAAWuH,YACXC,eAAeC,SACfvG,SACAwG,cACApD,UACAqD,cAAc,EAAC,MACE;AACjB,QAAM,EAAEC,UAAUC,UAAUC,QAAQC,UAAS,IAAKlE,QAAAA;AAClD,QAAMnH,QAAQkL,SAASvL,IAAAA;AACvB,QAAM,EAAEC,IAAI+H,OAAO2D,UAAU1F,MAAMO,UAAUd,WAAWkG,kBAAkBC,OAAM,IAAKL,SAASxL,MAAMgL,KAAAA;AACpG,QAAMN,WAAOoB,uBAAQ,MAAM;OAAId;IAAO/K;KAAK;IAAC+K;IAAO/K;GAAG;AACtD,QAAM0J,OAAO8B,OAAOf,MAAM1K,IAAAA;AAC1B,QAAM6B,UAAU6J,UAAUhB,MAAM1K,IAAAA;AAChC,QAAMkK,QAAQQ,KAAKqB,SAAST;AAC5B,QAAM1B,WAAW,CAAC,CAAC+B;AACnB,QAAMK,OAAiBf,OAAO,kBAAkBtB,OAAO,aAAa;AACpE,QAAMlI,WAAOqK,uBAAQ,OAAO;IAAE7L;IAAIyK;IAAM1K;EAAK,IAAuB;IAACC;IAAIyK;IAAM1K;GAAK;AAEpF,QAAMiM,aAAS3I,cAAAA,QAA8B,IAAA;AAC7C,QAAM4I,gBAAY5I,cAAAA,QAAiC,IAAA;AACnD,QAAM6I,cAAU7I,cAAAA,QAAO,KAAA;AACvB,QAAM8I,sBAAkB9I,cAAAA,QAA8B,IAAA;AACtD,QAAM,CAAC+I,QAAQnL,QAAAA,QAAYC,cAAAA,UAAwB,MAAA;AACnD,QAAM,CAACmL,aAAaC,cAAAA,QAAkBpL,cAAAA,UAA6B,IAAA;AACnE,QAAM,CAACqL,UAAUC,WAAAA,QAAetL,cAAAA,UAAS,KAAA;AAEzC,QAAMuL,mBAAe/L,cAAAA,aAAY,MAAA;AAC/B,QAAIyL,gBAAgBvK,SAAS;AAC3B8K,mBAAaP,gBAAgBvK,OAAO;AACpCuK,sBAAgBvK,UAAU;IAC5B;EACF,GAAG,CAAA,CAAE;AAELR,oBAAAA,WAAU,MAAA;AACR,QAAI,CAAC6J,YAAY;AACf;IACF;AAEAzH,0BAAAA,WAAUyI,UAAUrK,SAAO,QAAA;;;;;;;;;AAG3B,eAAO6B,gBAAAA;UACLC,gBAAAA,WAAU;QACRH,SAAS0I,UAAUrK;QACnBgC,gBAAgB,MAAMpC;QACtBkD,aAAa,MAAA;AACXzD,mBAAS,UAAA;AACT,cAAIyI,MAAM;AACRwC,oBAAQtK,UAAU;AAClBwJ,2BAAe;cAAErL;cAAM0K;cAAMf,MAAM;YAAM,CAAA;UAC3C;QACF;QACAjI,QAAQ,MAAA;AACNR,mBAAS,MAAA;AACT,cAAIiL,QAAQtK,SAAS;AACnBwJ,2BAAe;cAAErL;cAAM0K;cAAMf,MAAM;YAAK,CAAA;UAC1C;QACF;MACF,CAAA;;UAEA/E,gBAAAA,uBAAsB;QACpBpB,SAAS0I,UAAUrK;QACnBiD,SAAS,CAAC,EAAEC,OAAOvB,QAAO,MAAE;AAC1B,qBAAOoJ,oCAAkBnL,MAAM;YAC7BsD;YACAvB;YACAqJ,gBAAgB7C;YAChB8C,cAAc5C;YACd8B;YACAe,OAAOnD,WAAW,CAAA,IAAK;cAAC;;UAC1B,CAAA;QACF;QACA/E,SAAS,CAAC,EAAErD,OAAM,MAAE;AAClB,gBAAMwL,WAAWnI,YAAY,MAAM;AACnC,iBAAOrD,OAAOgC,YAAY0I,UAAUrK,WAAWmL,SAASxL,OAAOC,MAAkBA,IAAAA;QACnF;QACAyD,aAAa,MAAM;QACnBI,QAAQ,CAAC,EAAEF,MAAM5D,OAAM,MAAE;AACvB,gBAAM8K,mBAAcW,qCAAmB7H,KAAK3D,IAAI;AAEhD,cAAID,OAAOC,KAAKxB,OAAOA,IAAI;AACzB,gBAAIqM,cAAa1J,SAAS,gBAAgBgH,YAAY,CAACD,QAAQ,CAACyC,gBAAgBvK,SAAS;AACvFuK,8BAAgBvK,UAAUqL,WAAW,MAAA;AACnC7B,+BAAe;kBAAErL;kBAAM0K;kBAAMf,MAAM;gBAAK,CAAA;cAC1C,GAAG,GAAA;YACL;AAEA,gBAAI2C,cAAa1J,SAAS,cAAc;AACtC8J,2BAAAA;YACF;AAEAH,2BAAeD,YAAAA;UACjB,WAAWA,cAAa1J,SAAS,YAAY;AAE3C2J,2BAAeD,YAAAA;UACjB,OAAO;AACLC,2BAAe,IAAA;UACjB;QACF;QACAhH,aAAa,MAAA;AACXmH,uBAAAA;AACAH,yBAAe,IAAA;QACjB;QACA7K,QAAQ,MAAA;AACNgL,uBAAAA;AACAH,yBAAe,IAAA;QACjB;MACF,CAAA;IAAA;EAEJ,GAAG;IAACrB;IAAYlL;IAAMC;IAAI+L;IAAMtB;IAAMf;IAAM9E;GAAQ;AAGpDxD,oBAAAA,WAAU,MAAM,MAAMqL,aAAAA,GAAgB;IAACA;GAAa;AAEpD,QAAMS,uBAAmBxM,cAAAA,aACvB,MAAM0K,eAAe;IAAErL;IAAM0K;IAAMf,MAAM,CAACA;EAAK,CAAA,GAC/C;IAAC0B;IAAcrL;IAAM0K;IAAMf;GAAK;AAGlC,QAAMvB,mBAAezH,cAAAA,aACnB,CAACyM,SAAS,UAAK;AACbnB,WAAOpK,SAASwL,MAAAA;AAChBpF,eAAW;MAAEjI;MAAM0K;MAAM7I,SAAS,CAACA;MAASuL;IAAO,CAAA;EACrD,GACA;IAACnF;IAAUjI;IAAM0K;IAAM7I;GAAQ;AAGjC,QAAMyL,oBAAgB3M,cAAAA,aACpB,CAAC0H,UAAAA;AACC,YAAQA,MAAMG,KAAG;MACf,KAAK;AACHoB,oBAAY,CAACD,QAAQwD,iBAAAA;AACrB;MACF,KAAK;AACHvD,oBAAYD,QAAQwD,iBAAAA;AACpB;MACF,KAAK;AACH/E,qBAAaC,MAAMC,MAAM;AACzB;IACJ;EACF,GACA;IAACsB;IAAUD;IAAMwD;IAAkB/E;GAAa;AAGlD,SACEzF,8BAAAA,QAAA,cAAAA,cAAAA,QAAA,UAAA,MACEA,8BAAAA,QAAA,cAAC4K,0BAASC,KAAG;IACXnK,KAAK4I;IACLzD,KAAKvI;IACLA;IACAwN,mBAAiB,GAAGxN,EAAAA;IACpB0L,UAAUA,UAAU+B,KAAKH,0BAASI,mBAAmB;IACrDxN,gBAAYwF,uBAAAA,IACV,yEACAiI,0CACAC,yDACAC,uDACAzD,2BACA0D,mCACArI,SAAAA;IAEFsI,eAAa/N;IACbkJ,eAAa0C;;;;IAIboC,gBAAcpM,UAAW,KAAgBb;IACzCuI,WAAW+D;IACXY,eAAe,CAAC7F,UAAAA;AACdA,YAAMI,eAAc;AACpBgE,kBAAY,IAAA;IACd;KAEA9J,8BAAAA,QAAA,cAAC4K,0BAASY,MAAI;IACZC,QAAAA;IACAjO,YAAW;IACXsE,OAAOwF,mBAAmBC,KAAAA;KAE1BvH,8BAAAA,QAAA,cAAC6C,OAAAA;IAAIC,MAAK;IAAOC,WAAU;KACzB/C,8BAAAA,QAAA,cAAC+G,gBAAAA;IAAeC;IAAYC;IAAoBE,UAAUqD;MAC1DxK,8BAAAA,QAAA,cAACmF,iBAAAA;IACCzE,KAAK6I;IACLlE;IACA/B;IACAP,WAAWkG;IACXpF;IACA3E;IACAoG,UAAUG;OAGbgD,WAAWzI,8BAAAA,QAAA,cAACyI,SAAAA;IAAQpL;IAAY0K;IAAYf;IAAY6C;IAAoBC;MAC5EH,eAAe3J,8BAAAA,QAAA,cAAC0L,iBAAAA,SAAgBxI,eAAa;IAACyG;IAA0BgC,KAAK;QAGjF3E,QACCtJ,MAAMkO,IAAI,CAACvO,OAAMwO,UACf7L,8BAAAA,QAAA,cAAC8L,UAAAA;IACCjG,KAAKxI,MAAKC;IACVD,MAAMA;IACN0K;IACAO,MAAMuD,UAAUnO,MAAM0L,SAAS;IAC/BpI,WAAWuH;IACXC,eAAeC;IACfvG;IACAwG;IACApD;;AAKZ;AAEO,IAAMwG,WAAW1G,kCAAAA,MAAKgD,WAAAA;AFxQtB,IAAM2D,OAAO,CAAW,EAC7BC,MACAjE,MACAzK,IACAsL,UACAC,UACAC,QACAC,WACA/H,WAAAA,aAAY,OACZiL,sBAAsB,mDACtBzO,YACAgL,eACAtG,SACAwG,cACApD,UACAqD,YAAW,MACE;AACb,QAAMuD,cAAU/C,cAAAA,SACd,OAAO;IACLP;IACAC;IACAC;IACAC;EACF,IACA;IAACH;IAAUC;IAAUC;IAAQC;GAAU;AAEzC,QAAMrL,QAAQkL,SAASoD,IAAAA;AACvB,QAAMG,eAAWhD,cAAAA,SAAQ,MAAOpB,OAAO;OAAIA;IAAMzK;MAAM;IAACA;KAAM;IAACA;IAAIyK;GAAK;AAExE,SACE/H,8BAAAA,QAAA,cAAC4K,iBAAAA,SAASvG,MAAI;IAAC4H;IAA0CzO;KACvDwC,8BAAAA,QAAA,cAACiF,cAAAA;IAAamH,OAAOF;KAClBxO,MAAMkO,IAAI,CAACvO,MAAMwO,UAChB7L,8BAAAA,QAAA,cAAC8L,UAAAA;IACCjG,KAAKxI,KAAKC;IACVD;IACAiL,MAAMuD,UAAUnO,MAAM0L,SAAS;IAC/BrB,MAAMoE;IACNxD;IACA3H,WAAWA;IACXwH;IACAtG;IACAwG;IACApD;;AAMZ;",
|
|
6
|
-
"names": ["import_adapter", "import_closest_edge", "import_react_context", "import_react", "import_react_ui", "import_combine", "import_invariant", "import_react_ui_theme", "LIST_NAME", "ListProvider", "useListContext", "createContext", "defaultGetId", "item", "id", "ListRoot", "classNames", "children", "items", "isItem", "getId", "onMove", "props", "isEqual", "useCallback", "a", "b", "idA", "idB", "undefined", "state", "setState", "useState", "idle", "useEffect", "monitorForElements", "canMonitor", "source", "data", "onDrop", "location", "target", "current", "dropTargets", "sourceData", "targetData", "sourceIdx", "findIndex", "targetIdx", "closestEdgeOfTarget", "extractClosestEdge", "destinationIndex", "getReorderDestinationIndex", "startIndex", "indexOfTarget", "axis", "React", "type", "stateStyles", "defaultContext", "LIST_ITEM_NAME", "ListItemProvider", "useListItemContext", "ListItem", "dragPreview", "setRootState", "ref", "useRef", "dragHandleRef", "element", "invariant", "combine", "draggable", "dragHandle", "getInitialData", "onGenerateDragPreview", "nativeSetDragImage", "rect", "getBoundingClientRect", "setCustomNativeDragPreview", "getOffset", "container", "height", "x", "y", "render", "style", "width", "onDragStart", "dropTargetForElements", "canDrop", "getData", "input", "attachClosestEdge", "allowedEdges", "getIsSticky", "onDragEnter", "self", "closestEdge", "onDrag", "onDragLeave", "div", "role", "className", "mx", "NaturalListItem", "DropIndicator", "edge", "IconButton", "forwardRef", "icon", "forwardedRef", "button", "Icon", "size", "ListItemDeleteButton", "autoHide", "disabled", "isDisabled", "ListItemDragHandle", "ListItemDragPreview", "createPortal", "ListItemWrapper", "ListItemTitle", "List", "Root", "Item", "ItemDragPreview", "ItemWrapper", "ItemDragHandle", "ItemDeleteButton", "ItemTitle", "TreeContext", "useTree", "useContext", "raise", "Error", "TreeProvider", "Provider", "TreeItemHeading", "memo", "label", "onSelect", "t", "useTranslation", "handleSelect", "event", "altKey", "handleButtonKeydown", "key", "preventDefault", "stopPropagation", "TextTooltip", "text", "toLocalizedString", "side", "truncateQuery", "onlyWhenTruncating", "asChild", "Button", "data-testid", "variant", "density", "onClick", "onKeyDown", "span", "data-tooltip", "TreeItemToggle", "open", "isBranch", "hidden", "onToggle", "aria-expanded", "DEFAULT_INDENTATION", "paddingIndentation", "level", "indentation", "paddingInlineStart", "hoverableDescriptionIcons", "TreeDataSchema", "S", "Struct", "String", "path", "Array", "Any", "isTreeData", "is", "RawTreeItem", "_path", "last", "_draggable", "renderColumns", "Columns", "onOpenChange", "levelOffset", "getItems", "getProps", "isOpen", "isCurrent", "parentOf", "headingClassName", "testId", "useMemo", "length", "mode", "rowRef", "buttonRef", "openRef", "cancelExpandRef", "_state", "instruction", "setInstruction", "menuOpen", "setMenuOpen", "cancelExpand", "clearTimeout", "attachInstruction", "indentPerLevel", "currentLevel", "block", "_canDrop", "extractInstruction", "setTimeout", "handleOpenChange", "option", "focus", "handleKeyDown", "Treegrid", "Row", "aria-labelledby", "join", "PARENT_OF_SEPARATOR", "hoverableControls", "hoverableFocusedKeyboardControls", "hoverableFocusedWithinControls", "ghostHover", "data-itemid", "aria-current", "onContextMenu", "Cell", "indent", "NaturalTreeItem", "gap", "map", "index", "TreeItem", "Tree", "root", "gridTemplateColumns", "context", "treePath", "value"]
|
|
3
|
+
"sources": ["../../../src/components/List/ListItem.tsx", "../../../src/components/List/ListRoot.tsx", "../../../src/components/List/List.tsx", "../../../src/components/Tree/Tree.tsx", "../../../src/components/Tree/TreeContext.tsx", "../../../src/components/Tree/TreeItem.tsx", "../../../src/components/Tree/TreeItemHeading.tsx", "../../../src/components/Tree/TreeItemToggle.tsx", "../../../src/components/Tree/helpers.ts", "../../../src/util/path.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview';\nimport {\n type Edge,\n attachClosestEdge,\n extractClosestEdge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { createContext } from '@radix-ui/react-context';\nimport React, {\n type ComponentProps,\n type HTMLAttributes,\n type MutableRefObject,\n type PropsWithChildren,\n type ReactNode,\n forwardRef,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { invariant } from '@dxos/invariant';\nimport { Icon, type ThemedClassName, ListItem as NaturalListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useListContext } from './ListRoot';\n\nexport type ListItemRecord = {};\n\nexport type ItemState =\n | {\n type: 'idle';\n }\n | {\n type: 'preview';\n container: HTMLElement;\n }\n | {\n type: 'is-dragging';\n }\n | {\n type: 'is-dragging-over';\n closestEdge: Edge | null;\n };\n\nexport const idle: ItemState = { type: 'idle' };\n\nconst stateStyles: { [Key in ItemState['type']]?: HTMLAttributes<HTMLDivElement>['className'] } = {\n 'is-dragging': 'opacity-50',\n};\n\ntype ListItemContext<T extends ListItemRecord> = {\n item: T;\n dragHandleRef: MutableRefObject<HTMLElement | null>;\n};\n\n/**\n * Default context defined for ListItemDragPreview, which is defined outside of ListItem.\n */\nconst defaultContext: ListItemContext<any> = {} as any;\n\nconst LIST_ITEM_NAME = 'ListItem';\n\nexport const [ListItemProvider, useListItemContext] = createContext<ListItemContext<any>>(\n LIST_ITEM_NAME,\n defaultContext,\n);\n\nexport type ListItemProps<T extends ListItemRecord> = ThemedClassName<\n PropsWithChildren<{\n item: T;\n }> &\n HTMLAttributes<HTMLDivElement>\n>;\n\n/**\n * Draggable list item.\n */\nexport const ListItem = <T extends ListItemRecord>({ children, classNames, item, ...props }: ListItemProps<T>) => {\n const { isItem, dragPreview, setState: setRootState } = useListContext(LIST_ITEM_NAME);\n const ref = useRef<HTMLDivElement | null>(null);\n const dragHandleRef = useRef<HTMLElement | null>(null);\n const [state, setState] = useState<ItemState>(idle);\n useEffect(() => {\n const element = ref.current;\n invariant(element);\n return combine(\n //\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about#draggable\n //\n draggable({\n element,\n dragHandle: dragHandleRef.current!,\n getInitialData: () => item,\n onGenerateDragPreview: dragPreview\n ? ({ nativeSetDragImage, source }) => {\n const rect = source.element.getBoundingClientRect();\n setCustomNativeDragPreview({\n nativeSetDragImage,\n getOffset: ({ container }) => {\n const { height } = container.getBoundingClientRect();\n return {\n x: 20,\n y: height / 2,\n };\n },\n render: ({ container }) => {\n container.style.width = rect.width + 'px';\n setState({ type: 'preview', container });\n setRootState({ type: 'preview', container, item });\n return () => {}; // TODO(burdon): Cleanup.\n },\n });\n }\n : undefined,\n onDragStart: () => {\n setState({ type: 'is-dragging' });\n setRootState({ type: 'is-dragging', item });\n },\n onDrop: () => {\n setState(idle);\n setRootState(idle);\n },\n }),\n\n //\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about#drop-target-for-elements\n //\n dropTargetForElements({\n element,\n canDrop: ({ source }) => {\n return source.element !== element && isItem(source.data);\n },\n getData: ({ input }) => {\n return attachClosestEdge(item, { element, input, allowedEdges: ['top', 'bottom'] });\n },\n getIsSticky: () => true,\n onDragEnter: ({ self }) => {\n const closestEdge = extractClosestEdge(self.data);\n setState({ type: 'is-dragging-over', closestEdge });\n },\n onDrag: ({ self }) => {\n const closestEdge = extractClosestEdge(self.data);\n setState((current) => {\n if (current.type === 'is-dragging-over' && current.closestEdge === closestEdge) {\n return current;\n }\n return { type: 'is-dragging-over', closestEdge };\n });\n },\n onDragLeave: () => {\n setState(idle);\n },\n onDrop: () => {\n setState(idle);\n },\n }),\n );\n }, [item]);\n\n return (\n <ListItemProvider item={item} dragHandleRef={dragHandleRef}>\n <div role='none' className='relative'>\n <div\n ref={ref}\n role='listitem'\n className={mx('flex overflow-hidden', classNames, stateStyles[state.type])}\n {...props}\n >\n {children}\n </div>\n {state.type === 'is-dragging-over' && state.closestEdge && (\n <NaturalListItem.DropIndicator edge={state.closestEdge} />\n )}\n </div>\n </ListItemProvider>\n );\n};\n\n//\n// List item components\n//\n\nexport type IconButtonProps = ThemedClassName<ComponentProps<'button'>> & { icon: string };\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ classNames, icon, ...props }, forwardedRef) => {\n return (\n <button ref={forwardedRef} className={mx('flex items-center justify-center', classNames)} {...props}>\n <Icon icon={icon} classNames='cursor-pointer' size={4} />\n </button>\n );\n },\n);\n\nexport const ListItemDeleteButton = ({\n autoHide = true,\n classNames,\n disabled,\n ...props\n}: Omit<IconButtonProps, 'icon'> & { autoHide?: boolean }) => {\n const { state } = useListContext('DELETE_BUTTON');\n const isDisabled = state.type !== 'idle' || disabled;\n return (\n <IconButton\n icon='ph--x--regular'\n disabled={isDisabled}\n classNames={[classNames, autoHide && disabled && 'hidden']}\n {...props}\n />\n );\n};\n\nexport const ListItemDragHandle = () => {\n const { dragHandleRef } = useListItemContext('DRAG_HANDLE');\n return <IconButton ref={dragHandleRef as any} icon='ph--dots-six-vertical--regular' />;\n};\n\nexport const ListItemDragPreview = <T extends ListItemRecord>({\n children,\n}: {\n children: ({ item }: { item: T }) => ReactNode;\n}) => {\n const { state } = useListContext('DRAG_PREVIEW');\n return state?.type === 'preview' ? createPortal(children({ item: state.item }), state.container) : null;\n};\n\nexport const ListItemWrapper = ({ classNames, children }: ThemedClassName<PropsWithChildren>) => (\n <div className={mx('flex is-full gap-2', classNames)}>{children}</div>\n);\n\nexport const ListItemTitle = ({\n classNames,\n children,\n ...props\n}: ThemedClassName<PropsWithChildren<ComponentProps<'div'>>>) => (\n <div className={mx('flex grow items-center truncate', classNames)} {...props}>\n {children}\n </div>\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { getReorderDestinationIndex } from '@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type ReactNode, useCallback, useEffect, useState } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\n\nimport { idle, type ItemState, type ListItemRecord } from './ListItem';\n\ntype ListContext<T extends ListItemRecord> = {\n isItem: (item: any) => boolean;\n getId?: (item: T) => string; // TODO(burdon): Require if T doesn't conform to type.\n dragPreview?: boolean;\n state: ItemState & { item?: T };\n setState: (state: ItemState & { item?: T }) => void;\n};\n\nconst LIST_NAME = 'List';\n\nexport const [ListProvider, useListContext] = createContext<ListContext<any>>(LIST_NAME);\n\nexport type ListRendererProps<T extends ListItemRecord> = {\n state: ListContext<T>['state'];\n items: T[];\n};\n\nexport type ListRootProps<T extends ListItemRecord> = ThemedClassName<{\n children?: (props: ListRendererProps<T>) => ReactNode;\n items?: T[];\n onMove?: (fromIndex: number, toIndex: number) => void;\n}> &\n Pick<ListContext<T>, 'isItem' | 'getId' | 'dragPreview'>;\n\nconst defaultGetId = <T extends ListItemRecord>(item: T) => (item as any)?.id;\n\nexport const ListRoot = <T extends ListItemRecord>({\n classNames,\n children,\n items,\n isItem,\n getId = defaultGetId,\n onMove,\n ...props\n}: ListRootProps<T>) => {\n const isEqual = useCallback(\n (a: T, b: T) => {\n const idA = getId?.(a);\n const idB = getId?.(b);\n\n if (idA !== undefined && idB !== undefined) {\n return idA === idB;\n } else {\n // Fallback for primitive values or when getId fails.\n // NOTE(ZaymonFC): After drag and drop, pragmatic internally serializes drop targets which breaks reference equality.\n // You must provide an `getId` function that returns a stable identifier for your items.\n return a === b;\n }\n },\n [getId],\n );\n\n const [state, setState] = useState<ListContext<T>['state']>(idle);\n useEffect(() => {\n if (!items) {\n return;\n }\n\n return monitorForElements({\n canMonitor: ({ source }) => isItem(source.data),\n onDrop: ({ location, source }) => {\n const target = location.current.dropTargets[0];\n if (!target) {\n return;\n }\n\n const sourceData = source.data;\n const targetData = target.data;\n\n if (!isItem(sourceData) || !isItem(targetData)) {\n return;\n }\n\n const sourceIdx = items.findIndex((item) => isEqual(item, sourceData as T));\n const targetIdx = items.findIndex((item) => isEqual(item, targetData as T));\n if (targetIdx < 0 || sourceIdx < 0) {\n return;\n }\n const closestEdgeOfTarget = extractClosestEdge(targetData);\n const destinationIndex = getReorderDestinationIndex({\n closestEdgeOfTarget,\n startIndex: sourceIdx,\n indexOfTarget: targetIdx,\n axis: 'vertical',\n });\n\n onMove?.(sourceIdx, destinationIndex);\n },\n });\n }, [items, isEqual, onMove]);\n\n return (\n <ListProvider {...{ isItem, state, setState, ...props }}>{children?.({ state, items: items ?? [] })}</ListProvider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n IconButton,\n type IconButtonProps,\n ListItem,\n ListItemDeleteButton,\n ListItemDragHandle,\n ListItemDragPreview,\n type ListItemProps,\n type ListItemRecord,\n ListItemTitle,\n ListItemWrapper,\n} from './ListItem';\nimport { ListRoot, type ListRootProps } from './ListRoot';\n\n// TODO(burdon): Multi-select model.\n// TODO(burdon): Key nav.\n// TODO(burdon): Animation.\n// TODO(burdon): Constrain axis.\n// TODO(burdon): Tree view.\n// TODO(burdon): Fix autoscroll while dragging.\n\n/**\n * Draggable list.\n * Ref: https://github.com/atlassian/pragmatic-drag-and-drop\n * Ref: https://github.com/alexreardon/pdnd-react-tailwind/blob/main/src/task.tsx\n */\nexport const List = {\n Root: ListRoot,\n Item: ListItem,\n ItemDragPreview: ListItemDragPreview,\n ItemWrapper: ListItemWrapper,\n ItemDragHandle: ListItemDragHandle,\n ItemDeleteButton: ListItemDeleteButton,\n ItemTitle: ListItemTitle,\n IconButton,\n};\n\ntype ListItem = ListItemRecord;\n\nexport type { ListRootProps, ListItemProps, IconButtonProps, ListItem };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Treegrid, type TreegridRootProps } from '@dxos/react-ui';\n\nimport { type TreeContextType, TreeProvider } from './TreeContext';\nimport { TreeItem, type TreeItemProps } from './TreeItem';\n\nexport type TreeProps<T = any> = { root?: T; path?: string[]; id: string } & TreeContextType &\n Partial<Pick<TreegridRootProps, 'gridTemplateColumns' | 'classNames'>> &\n Pick<TreeItemProps<T>, 'draggable' | 'renderColumns' | 'canDrop' | 'onOpenChange' | 'onSelect' | 'levelOffset'>;\n\nexport const Tree = <T = any,>({\n root,\n path,\n id,\n getItems,\n getProps,\n isOpen,\n isCurrent,\n draggable = false,\n gridTemplateColumns = '[tree-row-start] 1fr min-content [tree-row-end]',\n classNames,\n renderColumns,\n canDrop,\n onOpenChange,\n onSelect,\n levelOffset,\n}: TreeProps<T>) => {\n const context = useMemo(\n () => ({\n getItems,\n getProps,\n isOpen,\n isCurrent,\n }),\n [getItems, getProps, isOpen, isCurrent],\n );\n const items = getItems(root);\n const treePath = useMemo(() => (path ? [...path, id] : [id]), [id, path]);\n\n return (\n <Treegrid.Root gridTemplateColumns={gridTemplateColumns} classNames={classNames}>\n <TreeProvider value={context}>\n {items.map((item, index) => (\n <TreeItem\n key={item.id}\n item={item}\n last={index === items.length - 1}\n path={treePath}\n levelOffset={levelOffset}\n draggable={draggable}\n renderColumns={renderColumns}\n canDrop={canDrop}\n onOpenChange={onOpenChange}\n onSelect={onSelect}\n />\n ))}\n </TreeProvider>\n </Treegrid.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\nimport { type Label } from '@dxos/react-ui';\n\nexport type PropsFromTreeItem = {\n id: string;\n label: Label;\n parentOf?: string[];\n icon?: string;\n disabled?: boolean;\n className?: string;\n headingClassName?: string;\n testId?: string;\n};\n\nexport type TreeContextType<T = any> = {\n getItems: (parent?: T) => T[];\n getProps: (item: T, parent: string[]) => PropsFromTreeItem;\n isOpen: (path: string[], item: T) => boolean;\n isCurrent: (path: string[], item: T) => boolean;\n};\n\nconst TreeContext = createContext<null | TreeContextType>(null);\n\nexport const useTree = () => useContext(TreeContext) ?? raise(new Error('TreeContext not found'));\n\nexport const TreeProvider = TreeContext.Provider;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport {\n attachInstruction,\n extractInstruction,\n type Instruction,\n type ItemMode,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\nimport React, { memo, useCallback, useEffect, useMemo, useRef, useState, type FC, type KeyboardEvent } from 'react';\n\nimport { S } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { Treegrid, TreeItem as NaturalTreeItem } from '@dxos/react-ui';\nimport {\n ghostHover,\n hoverableControls,\n hoverableFocusedKeyboardControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\n\nimport { useTree } from './TreeContext';\nimport { TreeItemHeading } from './TreeItemHeading';\nimport { TreeItemToggle } from './TreeItemToggle';\nimport { DEFAULT_INDENTATION, paddingIndentation } from './helpers';\n\ntype TreeItemState = 'idle' | 'dragging' | 'preview' | 'parent-of-instruction';\n\nconst hoverableDescriptionIcons =\n '[--icons-color:inherit] hover-hover:[--icons-color:var(--description-text)] hover-hover:hover:[--icons-color:inherit] focus-within:[--icons-color:inherit]';\n\nexport const TreeDataSchema = S.Struct({\n id: S.String,\n path: S.Array(S.String),\n item: S.Any,\n});\n\nexport type TreeData = S.Schema.Type<typeof TreeDataSchema>;\n\nexport const isTreeData = (data: unknown): data is TreeData => S.is(TreeDataSchema)(data);\n\nexport type TreeItemProps<T = any> = {\n item: T;\n path: string[];\n levelOffset?: number;\n last: boolean;\n draggable?: boolean;\n renderColumns?: FC<{\n item: T;\n path: string[];\n open: boolean;\n menuOpen: boolean;\n setMenuOpen: (open: boolean) => void;\n }>;\n canDrop?: (source: TreeData, target: TreeData) => boolean;\n onOpenChange?: (params: { item: T; path: string[]; open: boolean }) => void;\n onSelect?: (params: { item: T; path: string[]; current: boolean; option: boolean }) => void;\n};\n\nexport const RawTreeItem = <T = any,>({\n item,\n path: _path,\n last,\n draggable: _draggable,\n renderColumns: Columns,\n canDrop,\n onOpenChange,\n onSelect,\n levelOffset = 2,\n}: TreeItemProps<T>) => {\n const { getItems, getProps, isOpen, isCurrent } = useTree();\n const items = getItems(item);\n const { id, label, parentOf, icon, disabled, className, headingClassName, testId } = getProps(item, _path);\n const path = useMemo(() => [..._path, id], [_path, id]);\n const open = isOpen(path, item);\n const current = isCurrent(path, item);\n const level = path.length - levelOffset;\n const isBranch = !!parentOf;\n const mode: ItemMode = last ? 'last-in-group' : open ? 'expanded' : 'standard';\n const data = useMemo(() => ({ id, path, item }) satisfies TreeData, [id, path, item]);\n\n const rowRef = useRef<HTMLDivElement | null>(null);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n const openRef = useRef(false);\n const cancelExpandRef = useRef<NodeJS.Timeout | null>(null);\n const [_state, setState] = useState<TreeItemState>('idle');\n const [instruction, setInstruction] = useState<Instruction | null>(null);\n const [menuOpen, setMenuOpen] = useState(false);\n\n const cancelExpand = useCallback(() => {\n if (cancelExpandRef.current) {\n clearTimeout(cancelExpandRef.current);\n cancelExpandRef.current = null;\n }\n }, []);\n\n useEffect(() => {\n if (!_draggable) {\n return;\n }\n\n invariant(buttonRef.current);\n\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about\n return combine(\n draggable({\n element: buttonRef.current,\n getInitialData: () => data,\n onDragStart: () => {\n setState('dragging');\n if (open) {\n openRef.current = true;\n onOpenChange?.({ item, path, open: false });\n }\n },\n onDrop: () => {\n setState('idle');\n if (openRef.current) {\n onOpenChange?.({ item, path, open: true });\n }\n },\n }),\n // https://github.com/atlassian/pragmatic-drag-and-drop/blob/main/packages/hitbox/constellation/index/about.mdx\n dropTargetForElements({\n element: buttonRef.current,\n getData: ({ input, element }) => {\n return attachInstruction(data, {\n input,\n element,\n indentPerLevel: DEFAULT_INDENTATION,\n currentLevel: level,\n mode,\n block: isBranch ? [] : ['make-child'],\n });\n },\n canDrop: ({ source }) => {\n const _canDrop = canDrop ?? (() => true);\n return source.element !== buttonRef.current && _canDrop(source.data as TreeData, data);\n },\n getIsSticky: () => true,\n onDrag: ({ self, source }) => {\n const instruction = extractInstruction(self.data);\n\n if (source.data.id !== id) {\n if (instruction?.type === 'make-child' && isBranch && !open && !cancelExpandRef.current) {\n cancelExpandRef.current = setTimeout(() => {\n onOpenChange?.({ item, path, open: true });\n }, 500);\n }\n\n if (instruction?.type !== 'make-child') {\n cancelExpand();\n }\n\n setInstruction(instruction);\n } else if (instruction?.type === 'reparent') {\n // TODO(wittjosiah): This is not occurring in the current implementation.\n setInstruction(instruction);\n } else {\n setInstruction(null);\n }\n },\n onDragLeave: () => {\n cancelExpand();\n setInstruction(null);\n },\n onDrop: () => {\n cancelExpand();\n setInstruction(null);\n },\n }),\n );\n }, [_draggable, item, id, mode, path, open, canDrop]);\n\n // Cancel expand on unmount.\n useEffect(() => () => cancelExpand(), [cancelExpand]);\n\n const handleOpenChange = useCallback(\n () => onOpenChange?.({ item, path, open: !open }),\n [onOpenChange, item, path, open],\n );\n\n const handleSelect = useCallback(\n (option = false) => {\n rowRef.current?.focus();\n onSelect?.({ item, path, current: !current, option });\n },\n [onSelect, item, path, current],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowRight':\n isBranch && !open && handleOpenChange();\n break;\n case 'ArrowLeft':\n isBranch && open && handleOpenChange();\n break;\n case ' ':\n handleSelect(event.altKey);\n break;\n }\n },\n [isBranch, open, handleOpenChange, handleSelect],\n );\n\n return (\n <>\n <Treegrid.Row\n ref={rowRef}\n key={id}\n id={id}\n aria-labelledby={`${id}__label`}\n parentOf={parentOf?.join(Treegrid.PARENT_OF_SEPARATOR)}\n classNames={mx(\n 'grid grid-cols-subgrid col-[tree-row] mbs-0.5 aria-[current]:bg-input',\n hoverableControls,\n hoverableFocusedKeyboardControls,\n hoverableFocusedWithinControls,\n hoverableDescriptionIcons,\n ghostHover,\n className,\n )}\n data-itemid={id}\n data-testid={testId}\n // NOTE(thure): This is intentionally an empty string to for descendents to select by in the CSS\n // without alerting the user (except for in the correct link element). See also:\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current#description\n aria-current={current ? ('' as 'page') : undefined}\n onKeyDown={handleKeyDown}\n onContextMenu={(event) => {\n event.preventDefault();\n setMenuOpen(true);\n }}\n >\n <Treegrid.Cell\n indent\n classNames='relative grid grid-cols-subgrid col-[tree-row]'\n style={paddingIndentation(level)}\n >\n <div role='none' className='flex items-center'>\n <TreeItemToggle open={open} isBranch={isBranch} onToggle={handleOpenChange} />\n <TreeItemHeading\n ref={buttonRef}\n label={label}\n icon={icon}\n className={headingClassName}\n disabled={disabled}\n current={current}\n onSelect={handleSelect}\n />\n </div>\n {Columns && <Columns item={item} path={path} open={open} menuOpen={menuOpen} setMenuOpen={setMenuOpen} />}\n {instruction && <NaturalTreeItem.DropIndicator instruction={instruction} gap={2} />}\n </Treegrid.Cell>\n </Treegrid.Row>\n {open &&\n items.map((item, index) => (\n <TreeItem\n key={item.id}\n item={item}\n path={path}\n last={index === items.length - 1}\n draggable={_draggable}\n renderColumns={Columns}\n canDrop={canDrop}\n onOpenChange={onOpenChange}\n onSelect={onSelect}\n />\n ))}\n </>\n );\n};\n\nexport const TreeItem = memo(RawTreeItem) as FC<TreeItemProps>;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type KeyboardEvent, type MouseEvent, forwardRef, memo, useCallback } from 'react';\n\nimport { Button, Icon, toLocalizedString, useTranslation, type Label } from '@dxos/react-ui';\nimport { TextTooltip } from '@dxos/react-ui-text-tooltip';\nimport { mx } from '@dxos/react-ui-theme';\n\n// TODO(wittjosiah): Consider whether there should be a separate disabled prop which was visually distinct\n// rather than just making the item unselectable.\nexport type NavTreeItemHeadingProps = {\n label: Label;\n icon?: string;\n className?: string;\n disabled?: boolean;\n current?: boolean;\n onSelect?: (option: boolean) => void;\n};\n\nexport const TreeItemHeading = memo(\n forwardRef<HTMLButtonElement, NavTreeItemHeadingProps>(\n ({ label, icon, className, disabled, current, onSelect }, forwardedRef) => {\n const { t } = useTranslation();\n\n const handleSelect = useCallback(\n (event: MouseEvent) => {\n onSelect?.(event.altKey);\n },\n [onSelect],\n );\n\n const handleButtonKeydown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n onSelect?.(event.altKey);\n }\n },\n [onSelect],\n );\n\n return (\n <TextTooltip\n text={toLocalizedString(label, t)}\n side='bottom'\n truncateQuery='span[data-tooltip]'\n onlyWhenTruncating\n asChild\n ref={forwardedRef}\n >\n <Button\n data-testid='treeItem.heading'\n variant='ghost'\n density='fine'\n classNames={mx(\n 'grow gap-2 pis-0.5 hover:bg-transparent dark:hover:bg-transparent',\n 'disabled:cursor-default disabled:opacity-100',\n className,\n )}\n disabled={disabled}\n onClick={handleSelect}\n onKeyDown={handleButtonKeydown}\n {...(current && { 'aria-current': 'location' })}\n >\n {icon && <Icon icon={icon ?? 'ph--placeholder--regular'} size={4} classNames='is-[1em] bs-[1em] mlb-1' />}\n <span className='flex-1 is-0 truncate text-start text-sm font-normal' data-tooltip>\n {toLocalizedString(label, t)}\n </span>\n </Button>\n </TextTooltip>\n );\n },\n ),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, memo } from 'react';\n\nimport { Button, Icon } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type TreeItemToggleProps = {\n open?: boolean;\n isBranch?: boolean;\n onToggle?: () => void;\n hidden?: boolean;\n};\n\nexport const TreeItemToggle = memo(\n forwardRef<HTMLButtonElement, TreeItemToggleProps>(({ open, isBranch, hidden, onToggle }, forwardedRef) => {\n return (\n <Button\n ref={forwardedRef}\n data-testid='treeItem.toggle'\n aria-expanded={open}\n variant='ghost'\n density='fine'\n classNames={mx('is-4 dx-focus-ring-inset pli-0', hidden ? 'hidden' : !isBranch && 'invisible')}\n onClick={onToggle}\n >\n <Icon\n icon='ph--caret-right--regular'\n size={3}\n classNames={mx('transition duration-200', open && 'rotate-90')}\n />\n </Button>\n );\n }),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const DEFAULT_INDENTATION = 8;\n\nexport const paddingIndentation = (level: number, indentation = DEFAULT_INDENTATION) => ({\n paddingInlineStart: `${(level - 1) * indentation}px`,\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\nconst SEPARATOR = '~';\n\nexport const Path = {\n create: (...args: string[]) => args.join(SEPARATOR),\n\n parts: (path: string) => path.split(SEPARATOR),\n length: (path: string) => path.split(SEPARATOR).length,\n first: (path: string) => path.split(SEPARATOR)[0] ?? path,\n last: (path: string) => path.split(SEPARATOR).at(-1) ?? path,\n parent: (path: string) => path.split(SEPARATOR).slice(0, -1).join(SEPARATOR),\n\n hasRoot: (path: string, id: string) => Path.first(path) === id,\n hasChild: (path: string, compare: string) => Path.parent(compare) === path,\n hasDescendent: (path: string, compare: string) => compare !== path && compare.startsWith(path),\n siblings: (path: string, compare: string) => Path.parent(path) === Path.parent(compare),\n onPath: (path: string, id: string) => Path.parts(path).includes(id),\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_adapter", "import_closest_edge", "import_react_context", "import_react", "import_react_ui", "import_combine", "import_invariant", "import_react_ui_theme", "LIST_NAME", "ListProvider", "useListContext", "createContext", "defaultGetId", "item", "id", "ListRoot", "classNames", "children", "items", "isItem", "getId", "onMove", "props", "isEqual", "useCallback", "a", "b", "idA", "idB", "undefined", "state", "setState", "useState", "idle", "useEffect", "monitorForElements", "canMonitor", "source", "data", "onDrop", "location", "target", "current", "dropTargets", "sourceData", "targetData", "sourceIdx", "findIndex", "targetIdx", "closestEdgeOfTarget", "extractClosestEdge", "destinationIndex", "getReorderDestinationIndex", "startIndex", "indexOfTarget", "axis", "React", "type", "stateStyles", "defaultContext", "LIST_ITEM_NAME", "ListItemProvider", "useListItemContext", "ListItem", "dragPreview", "setRootState", "ref", "useRef", "dragHandleRef", "element", "invariant", "combine", "draggable", "dragHandle", "getInitialData", "onGenerateDragPreview", "nativeSetDragImage", "rect", "getBoundingClientRect", "setCustomNativeDragPreview", "getOffset", "container", "height", "x", "y", "render", "style", "width", "onDragStart", "dropTargetForElements", "canDrop", "getData", "input", "attachClosestEdge", "allowedEdges", "getIsSticky", "onDragEnter", "self", "closestEdge", "onDrag", "onDragLeave", "div", "role", "className", "mx", "NaturalListItem", "DropIndicator", "edge", "IconButton", "forwardRef", "icon", "forwardedRef", "button", "Icon", "size", "ListItemDeleteButton", "autoHide", "disabled", "isDisabled", "ListItemDragHandle", "ListItemDragPreview", "createPortal", "ListItemWrapper", "ListItemTitle", "List", "Root", "Item", "ItemDragPreview", "ItemWrapper", "ItemDragHandle", "ItemDeleteButton", "ItemTitle", "TreeContext", "useTree", "useContext", "raise", "Error", "TreeProvider", "Provider", "TreeItemHeading", "memo", "label", "onSelect", "t", "useTranslation", "handleSelect", "event", "altKey", "handleButtonKeydown", "key", "preventDefault", "stopPropagation", "TextTooltip", "text", "toLocalizedString", "side", "truncateQuery", "onlyWhenTruncating", "asChild", "Button", "data-testid", "variant", "density", "onClick", "onKeyDown", "span", "data-tooltip", "TreeItemToggle", "open", "isBranch", "hidden", "onToggle", "aria-expanded", "DEFAULT_INDENTATION", "paddingIndentation", "level", "indentation", "paddingInlineStart", "hoverableDescriptionIcons", "TreeDataSchema", "S", "Struct", "String", "path", "Array", "Any", "isTreeData", "is", "RawTreeItem", "_path", "last", "_draggable", "renderColumns", "Columns", "onOpenChange", "levelOffset", "getItems", "getProps", "isOpen", "isCurrent", "parentOf", "headingClassName", "testId", "useMemo", "length", "mode", "rowRef", "buttonRef", "openRef", "cancelExpandRef", "_state", "instruction", "setInstruction", "menuOpen", "setMenuOpen", "cancelExpand", "clearTimeout", "attachInstruction", "indentPerLevel", "currentLevel", "block", "_canDrop", "extractInstruction", "setTimeout", "handleOpenChange", "option", "focus", "handleKeyDown", "Treegrid", "Row", "aria-labelledby", "join", "PARENT_OF_SEPARATOR", "hoverableControls", "hoverableFocusedKeyboardControls", "hoverableFocusedWithinControls", "ghostHover", "data-itemid", "aria-current", "onContextMenu", "Cell", "indent", "NaturalTreeItem", "gap", "map", "index", "TreeItem", "Tree", "root", "gridTemplateColumns", "context", "treePath", "value", "SEPARATOR", "Path", "create", "args", "parts", "split", "first", "at", "parent", "slice", "hasRoot", "hasChild", "compare", "hasDescendent", "startsWith", "siblings", "onPath", "includes"]
|
|
7
7
|
}
|
package/dist/lib/node/meta.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/ui/react-ui-list/src/components/List/ListRoot.tsx":{"bytes":10900,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/List/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/ListItem.tsx":{"bytes":24635,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/List/ListRoot.tsx","kind":"import-statement","original":"./ListRoot"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/List.tsx":{"bytes":3478,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/ListItem.tsx","kind":"import-statement","original":"./ListItem"},{"path":"packages/ui/react-ui-list/src/components/List/ListRoot.tsx","kind":"import-statement","original":"./ListRoot"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/index.ts":{"bytes":505,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/List.tsx","kind":"import-statement","original":"./List"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx":{"bytes":2214,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx":{"bytes":7653,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-text-tooltip","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx":{"bytes":3377,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/helpers.ts":{"bytes":1223,"imports":[],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx":{"bytes":31434,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx","kind":"import-statement","original":"./TreeItemHeading"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx","kind":"import-statement","original":"./TreeItemToggle"},{"path":"packages/ui/react-ui-list/src/components/Tree/helpers.ts","kind":"import-statement","original":"./helpers"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/Tree.tsx":{"bytes":5887,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx","kind":"import-statement","original":"./TreeItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/index.ts":{"bytes":692,"imports":[{"path":"packages/ui/react-ui-list/src/components/Tree/Tree.tsx","kind":"import-statement","original":"./Tree"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx","kind":"import-statement","original":"./TreeItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/index.ts":{"bytes":580,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/index.ts","kind":"import-statement","original":"./List"},{"path":"packages/ui/react-ui-list/src/components/Tree/index.ts","kind":"import-statement","original":"./Tree"}],"format":"esm"},"packages/ui/react-ui-list/src/index.ts":{"bytes":503,"imports":[{"path":"packages/ui/react-ui-list/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-list/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":46720},"packages/ui/react-ui-list/dist/lib/node/index.cjs":{"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-text-tooltip","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["List","RawTreeItem","Tree","TreeDataSchema","TreeItem","TreeProvider","isTreeData","useTree"],"entryPoint":"packages/ui/react-ui-list/src/index.ts","inputs":{"packages/ui/react-ui-list/src/components/List/ListItem.tsx":{"bytesInOutput":6511},"packages/ui/react-ui-list/src/components/List/ListRoot.tsx":{"bytesInOutput":2175},"packages/ui/react-ui-list/src/components/List/List.tsx":{"bytesInOutput":245},"packages/ui/react-ui-list/src/components/List/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/components/Tree/Tree.tsx":{"bytesInOutput":1127},"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx":{"bytesInOutput":293},"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx":{"bytesInOutput":8153},"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx":{"bytesInOutput":1817},"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx":{"bytesInOutput":813},"packages/ui/react-ui-list/src/components/Tree/helpers.ts":{"bytesInOutput":162},"packages/ui/react-ui-list/src/components/Tree/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/index.ts":{"bytesInOutput":0}},"bytes":22201}}}
|
|
1
|
+
{"inputs":{"packages/ui/react-ui-list/src/components/List/ListRoot.tsx":{"bytes":10900,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/List/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/ListItem.tsx":{"bytes":24635,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/List/ListRoot.tsx","kind":"import-statement","original":"./ListRoot"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/List.tsx":{"bytes":3478,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/ListItem.tsx","kind":"import-statement","original":"./ListItem"},{"path":"packages/ui/react-ui-list/src/components/List/ListRoot.tsx","kind":"import-statement","original":"./ListRoot"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/index.ts":{"bytes":505,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/List.tsx","kind":"import-statement","original":"./List"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx":{"bytes":2214,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx":{"bytes":7653,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-text-tooltip","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx":{"bytes":3377,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/helpers.ts":{"bytes":1223,"imports":[],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx":{"bytes":31434,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx","kind":"import-statement","original":"./TreeItemHeading"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx","kind":"import-statement","original":"./TreeItemToggle"},{"path":"packages/ui/react-ui-list/src/components/Tree/helpers.ts","kind":"import-statement","original":"./helpers"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/Tree.tsx":{"bytes":5887,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx","kind":"import-statement","original":"./TreeItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/index.ts":{"bytes":692,"imports":[{"path":"packages/ui/react-ui-list/src/components/Tree/Tree.tsx","kind":"import-statement","original":"./Tree"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx","kind":"import-statement","original":"./TreeItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/index.ts":{"bytes":580,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/index.ts","kind":"import-statement","original":"./List"},{"path":"packages/ui/react-ui-list/src/components/Tree/index.ts","kind":"import-statement","original":"./Tree"}],"format":"esm"},"packages/ui/react-ui-list/src/util/path.ts":{"bytes":3466,"imports":[],"format":"esm"},"packages/ui/react-ui-list/src/util/index.ts":{"bytes":494,"imports":[{"path":"packages/ui/react-ui-list/src/util/path.ts","kind":"import-statement","original":"./path"}],"format":"esm"},"packages/ui/react-ui-list/src/index.ts":{"bytes":583,"imports":[{"path":"packages/ui/react-ui-list/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-list/src/util/index.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-list/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":48556},"packages/ui/react-ui-list/dist/lib/node/index.cjs":{"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-text-tooltip","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["List","Path","RawTreeItem","Tree","TreeDataSchema","TreeItem","TreeProvider","isTreeData","useTree"],"entryPoint":"packages/ui/react-ui-list/src/index.ts","inputs":{"packages/ui/react-ui-list/src/components/List/ListItem.tsx":{"bytesInOutput":6511},"packages/ui/react-ui-list/src/components/List/ListRoot.tsx":{"bytesInOutput":2175},"packages/ui/react-ui-list/src/components/List/List.tsx":{"bytesInOutput":245},"packages/ui/react-ui-list/src/components/List/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/components/Tree/Tree.tsx":{"bytesInOutput":1127},"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx":{"bytesInOutput":293},"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx":{"bytesInOutput":8153},"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx":{"bytesInOutput":1817},"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx":{"bytesInOutput":813},"packages/ui/react-ui-list/src/components/Tree/helpers.ts":{"bytesInOutput":162},"packages/ui/react-ui-list/src/components/Tree/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/util/path.ts":{"bytesInOutput":678},"packages/ui/react-ui-list/src/util/index.ts":{"bytesInOutput":0}},"bytes":22934}}}
|
|
@@ -667,8 +667,25 @@ var Tree = ({ root, path, id, getItems, getProps, isOpen, isCurrent, draggable:
|
|
|
667
667
|
onSelect
|
|
668
668
|
}))));
|
|
669
669
|
};
|
|
670
|
+
|
|
671
|
+
// packages/ui/react-ui-list/src/util/path.ts
|
|
672
|
+
var SEPARATOR = "~";
|
|
673
|
+
var Path = {
|
|
674
|
+
create: (...args) => args.join(SEPARATOR),
|
|
675
|
+
parts: (path) => path.split(SEPARATOR),
|
|
676
|
+
length: (path) => path.split(SEPARATOR).length,
|
|
677
|
+
first: (path) => path.split(SEPARATOR)[0] ?? path,
|
|
678
|
+
last: (path) => path.split(SEPARATOR).at(-1) ?? path,
|
|
679
|
+
parent: (path) => path.split(SEPARATOR).slice(0, -1).join(SEPARATOR),
|
|
680
|
+
hasRoot: (path, id) => Path.first(path) === id,
|
|
681
|
+
hasChild: (path, compare) => Path.parent(compare) === path,
|
|
682
|
+
hasDescendent: (path, compare) => compare !== path && compare.startsWith(path),
|
|
683
|
+
siblings: (path, compare) => Path.parent(path) === Path.parent(compare),
|
|
684
|
+
onPath: (path, id) => Path.parts(path).includes(id)
|
|
685
|
+
};
|
|
670
686
|
export {
|
|
671
687
|
List,
|
|
688
|
+
Path,
|
|
672
689
|
RawTreeItem,
|
|
673
690
|
Tree,
|
|
674
691
|
TreeDataSchema,
|