@dxos/react-ui-list 0.8.3 → 0.8.4-main.84f28bd

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.
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
- // packages/ui/react-ui-list/src/components/Accordion/AccordionItem.tsx
3
+ // src/components/Accordion/AccordionItem.tsx
4
4
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
5
5
  import * as AccordionPrimitive2 from "@radix-ui/react-accordion";
6
6
  import { createContext as createContext2 } from "@radix-ui/react-context";
@@ -8,7 +8,7 @@ import React2 from "react";
8
8
  import { Icon } from "@dxos/react-ui";
9
9
  import { mx as mx2 } from "@dxos/react-ui-theme";
10
10
 
11
- // packages/ui/react-ui-list/src/components/Accordion/AccordionRoot.tsx
11
+ // src/components/Accordion/AccordionRoot.tsx
12
12
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
13
13
  import * as AccordionPrimitive from "@radix-ui/react-accordion";
14
14
  import { createContext } from "@radix-ui/react-context";
@@ -36,7 +36,7 @@ var AccordionRoot = ({ classNames, items, getId = defaultGetId, children, value,
36
36
  }
37
37
  };
38
38
 
39
- // packages/ui/react-ui-list/src/components/Accordion/AccordionItem.tsx
39
+ // src/components/Accordion/AccordionItem.tsx
40
40
  var ACCORDION_ITEM_NAME = "AccordionItem";
41
41
  var [AccordionItemProvider, useAccordionItemContext] = createContext2(ACCORDION_ITEM_NAME);
42
42
  var AccordionItem = ({ children, classNames, item }) => {
@@ -84,7 +84,7 @@ var AccordionItemBody = ({ children, classNames }) => {
84
84
  }
85
85
  };
86
86
 
87
- // packages/ui/react-ui-list/src/components/Accordion/Accordion.tsx
87
+ // src/components/Accordion/Accordion.tsx
88
88
  var Accordion = {
89
89
  Root: AccordionRoot,
90
90
  Item: AccordionItem,
@@ -92,7 +92,7 @@ var Accordion = {
92
92
  ItemBody: AccordionItemBody
93
93
  };
94
94
 
95
- // packages/ui/react-ui-list/src/components/List/ListItem.tsx
95
+ // src/components/List/ListItem.tsx
96
96
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
97
97
  import { combine } from "@atlaskit/pragmatic-drag-and-drop/combine";
98
98
  import { draggable, dropTargetForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
@@ -105,7 +105,7 @@ import { invariant } from "@dxos/invariant";
105
105
  import { Icon as Icon2, ListItem as NaturalListItem } from "@dxos/react-ui";
106
106
  import { mx as mx3 } from "@dxos/react-ui-theme";
107
107
 
108
- // packages/ui/react-ui-list/src/components/List/ListRoot.tsx
108
+ // src/components/List/ListRoot.tsx
109
109
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
110
110
  import { monitorForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
111
111
  import { extractClosestEdge } from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
@@ -180,8 +180,8 @@ var ListRoot = ({ children, items, isItem, getId = defaultGetId2, onMove, ...pro
180
180
  }
181
181
  };
182
182
 
183
- // packages/ui/react-ui-list/src/components/List/ListItem.tsx
184
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/ui/react-ui-list/src/components/List/ListItem.tsx";
183
+ // src/components/List/ListItem.tsx
184
+ var __dxlog_file = "/__w/dxos/dxos/packages/ui/react-ui-list/src/components/List/ListItem.tsx";
185
185
  var idle = {
186
186
  type: "idle"
187
187
  };
@@ -202,7 +202,7 @@ var ListItem = ({ children, classNames, item, ...props }) => {
202
202
  const element = ref.current;
203
203
  invariant(element, void 0, {
204
204
  F: __dxlog_file,
205
- L: 91,
205
+ L: 93,
206
206
  S: void 0,
207
207
  A: [
208
208
  "element",
@@ -285,6 +285,9 @@ var ListItem = ({ children, classNames, item, ...props }) => {
285
285
  closestEdge
286
286
  });
287
287
  },
288
+ onDragLeave: () => {
289
+ setState(idle);
290
+ },
288
291
  onDrag: ({ self }) => {
289
292
  const closestEdge = extractClosestEdge2(self.data);
290
293
  setState((current) => {
@@ -297,9 +300,6 @@ var ListItem = ({ children, classNames, item, ...props }) => {
297
300
  };
298
301
  });
299
302
  },
300
- onDragLeave: () => {
301
- setState(idle);
302
- },
303
303
  onDrop: () => {
304
304
  setState(idle);
305
305
  }
@@ -418,7 +418,7 @@ var ListItemTitle = ({ classNames, children, ...props }) => {
418
418
  }
419
419
  };
420
420
 
421
- // packages/ui/react-ui-list/src/components/List/List.tsx
421
+ // src/components/List/List.tsx
422
422
  var List = {
423
423
  Root: ListRoot,
424
424
  Item: ListItem,
@@ -431,19 +431,19 @@ var List = {
431
431
  IconButton
432
432
  };
433
433
 
434
- // packages/ui/react-ui-list/src/components/Tree/Tree.tsx
434
+ // src/components/Tree/Tree.tsx
435
435
  import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
436
436
  import React8, { useMemo as useMemo2 } from "react";
437
437
  import { Treegrid as Treegrid2 } from "@dxos/react-ui";
438
438
 
439
- // packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx
439
+ // src/components/Tree/TreeContext.tsx
440
440
  import { createContext as createContext5, useContext } from "react";
441
441
  import { raise } from "@dxos/debug";
442
442
  var TreeContext = /* @__PURE__ */ createContext5(null);
443
443
  var TreeProvider = TreeContext.Provider;
444
444
  var useTree = () => useContext(TreeContext) ?? raise(new Error("TreeContext not found"));
445
445
 
446
- // packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx
446
+ // src/components/Tree/TreeItem.tsx
447
447
  import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
448
448
  import { combine as combine2 } from "@atlaskit/pragmatic-drag-and-drop/combine";
449
449
  import { draggable as draggable2, dropTargetForElements as dropTargetForElements2 } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
@@ -454,7 +454,7 @@ import { invariant as invariant2 } from "@dxos/invariant";
454
454
  import { Treegrid, TreeItem as NaturalTreeItem } from "@dxos/react-ui";
455
455
  import { ghostHover, hoverableControls, hoverableFocusedKeyboardControls, hoverableFocusedWithinControls, mx as mx6 } from "@dxos/react-ui-theme";
456
456
 
457
- // packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx
457
+ // src/components/Tree/TreeItemHeading.tsx
458
458
  import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
459
459
  import React5, { forwardRef as forwardRef2, memo, useCallback as useCallback2 } from "react";
460
460
  import { Button, Icon as Icon3, toLocalizedString, useTranslation } from "@dxos/react-ui";
@@ -509,7 +509,7 @@ var TreeItemHeading = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef2(({ label,
509
509
  }
510
510
  }));
511
511
 
512
- // packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx
512
+ // src/components/Tree/TreeItemToggle.tsx
513
513
  import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
514
514
  import React6, { forwardRef as forwardRef3, memo as memo2 } from "react";
515
515
  import { Button as Button2, Icon as Icon4 } from "@dxos/react-ui";
@@ -535,14 +535,14 @@ var TreeItemToggle = /* @__PURE__ */ memo2(/* @__PURE__ */ forwardRef3(({ open,
535
535
  }
536
536
  }));
537
537
 
538
- // packages/ui/react-ui-list/src/components/Tree/helpers.ts
538
+ // src/components/Tree/helpers.ts
539
539
  var DEFAULT_INDENTATION = 8;
540
540
  var paddingIndentation = (level, indentation = DEFAULT_INDENTATION) => ({
541
541
  paddingInlineStart: `${(level - 1) * indentation}px`
542
542
  });
543
543
 
544
- // packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx
545
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx";
544
+ // src/components/Tree/TreeItem.tsx
545
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx";
546
546
  var hoverableDescriptionIcons = "[--icons-color:inherit] hover-hover:[--icons-color:var(--description-text)] hover-hover:hover:[--icons-color:inherit] focus-within:[--icons-color:inherit]";
547
547
  var TreeDataSchema = Schema.Struct({
548
548
  id: Schema.String,
@@ -803,7 +803,7 @@ var RawTreeItem = ({ item, path: _path, last, draggable: _draggable, renderColum
803
803
  };
804
804
  var TreeItem = /* @__PURE__ */ memo3(RawTreeItem);
805
805
 
806
- // packages/ui/react-ui-list/src/components/Tree/Tree.tsx
806
+ // src/components/Tree/Tree.tsx
807
807
  var Tree = ({ root, path, id, useItems, getProps, isOpen, isCurrent, draggable: draggable3 = false, gridTemplateColumns = "[tree-row-start] 1fr min-content [tree-row-end]", classNames, levelOffset, renderColumns, canDrop, onOpenChange, onSelect }) => {
808
808
  var _effect = _useSignals8();
809
809
  try {
@@ -850,7 +850,7 @@ var Tree = ({ root, path, id, useItems, getProps, isOpen, isCurrent, draggable:
850
850
  }
851
851
  };
852
852
 
853
- // packages/ui/react-ui-list/src/util/path.ts
853
+ // src/util/path.ts
854
854
  var SEPARATOR = "+";
855
855
  var Path = {
856
856
  create: (...args) => args.join(SEPARATOR),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/Accordion/AccordionItem.tsx", "../../../src/components/Accordion/AccordionRoot.tsx", "../../../src/components/Accordion/Accordion.tsx", "../../../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 2025 DXOS.org\n//\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren } from 'react';\n\nimport { Icon, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useAccordionContext } from './AccordionRoot';\nimport { type ListItemRecord } from '../List';\n\nconst ACCORDION_ITEM_NAME = 'AccordionItem';\n\ntype AccordionItemContext<T extends ListItemRecord> = {\n item: T;\n};\n\nexport const [AccordionItemProvider, useAccordionItemContext] =\n createContext<AccordionItemContext<any>>(ACCORDION_ITEM_NAME);\n\nexport type AccordionItemProps<T extends ListItemRecord> = ThemedClassName<PropsWithChildren<{ item: T }>>;\n\nexport const AccordionItem = <T extends ListItemRecord>({ children, classNames, item }: AccordionItemProps<T>) => {\n const { getId } = useAccordionContext(ACCORDION_ITEM_NAME);\n\n return (\n <AccordionItemProvider {...{ item }}>\n <AccordionPrimitive.Item value={getId(item)} className={mx('overflow-hidden', classNames)}>\n {children}\n </AccordionPrimitive.Item>\n </AccordionItemProvider>\n );\n};\n\nexport type AccordionItemHeaderProps = ThemedClassName<AccordionPrimitive.AccordionHeaderProps>;\n\nexport const AccordionItemHeader = ({ classNames, children, ...props }: AccordionItemHeaderProps) => {\n return (\n <AccordionPrimitive.Header {...props} className={mx(classNames)}>\n <AccordionPrimitive.Trigger className='group flex items-center p-2 dx-focus-ring-inset is-full text-start'>\n {children}\n <Icon\n icon='ph--caret-right--regular'\n size={4}\n classNames='transition-transform duration-200 group-data-[state=open]:rotate-90'\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n};\n\nexport type AccordionItemBodyProps = ThemedClassName<PropsWithChildren>;\n\nexport const AccordionItemBody = ({ children, classNames }: AccordionItemBodyProps) => {\n return (\n <AccordionPrimitive.Content className='overflow-hidden data-[state=closed]:animate-slideUp data-[state=open]:animate-slideDown'>\n <div role='none' className={mx('p-2', classNames)}>\n {children}\n </div>\n </AccordionPrimitive.Content>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type ReactNode } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type ListItemRecord } from '../List';\n\ntype AccordionContext<T extends ListItemRecord> = {\n getId: (item: T) => string;\n};\n\nconst ACCORDION_NAME = 'Accordion';\n\nexport const [AccordionProvider, useAccordionContext] = createContext<AccordionContext<any>>(ACCORDION_NAME);\n\nexport type AccordionRendererProps<T extends ListItemRecord> = {\n items: T[];\n};\n\nconst defaultGetId = <T extends ListItemRecord>(item: T) => (item as any)?.id;\n\nexport type AccordionRootProps<T extends ListItemRecord> = ThemedClassName<\n {\n children?: (props: AccordionRendererProps<T>) => ReactNode;\n items?: T[];\n } & Partial<Pick<AccordionContext<T>, 'getId'>>\n>;\n\nexport const AccordionRoot = <T extends ListItemRecord>({\n classNames,\n items,\n getId = defaultGetId,\n children,\n value,\n defaultValue,\n onValueChange,\n}: AccordionRootProps<T> &\n Pick<AccordionPrimitive.AccordionMultipleProps, 'value' | 'defaultValue' | 'onValueChange'>) => {\n return (\n <AccordionProvider {...{ getId }}>\n <AccordionPrimitive.Root\n type='multiple'\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n className={mx(classNames)}\n >\n {children?.({ items: items ?? [] })}\n </AccordionPrimitive.Root>\n </AccordionProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { AccordionItem, AccordionItemHeader, AccordionItemBody } from './AccordionItem';\nimport { AccordionRoot } from './AccordionRoot';\n\n// TODO(burdon): Next iteration should be based on Radix UI Accordion:\n// https://www.radix-ui.com/primitives/docs/components/accordion\n// TODO(burdon): Support key navigation.\n\nexport const Accordion = {\n Root: AccordionRoot,\n Item: AccordionItem,\n ItemHeader: AccordionItemHeader,\n ItemBody: AccordionItemBody,\n};\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 { 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 = any;\n\nexport type ItemDragState =\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: ItemDragState = { type: 'idle' };\n\nconst stateStyles: { [Key in ItemDragState['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, readonly, 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<ItemDragState>(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 canDrag: () => !readonly,\n getInitialData: () => item as any,\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 { x: 20, y: height / 2 };\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)) ?? false;\n },\n getData: ({ input }) => {\n return attachClosestEdge(item as any, { 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 icon = 'ph--x--regular',\n ...props\n}: Partial<Pick<IconButtonProps, 'icon'>> & Omit<IconButtonProps, 'icon'> & { autoHide?: boolean }) => {\n const { state } = useListContext('DELETE_BUTTON');\n const isDisabled = state.type !== 'idle' || disabled;\n return (\n <IconButton\n icon={icon}\n disabled={isDisabled}\n classNames={[classNames, autoHide && disabled && 'hidden']}\n {...props}\n />\n );\n};\n\nexport const ListItemButton = ({\n autoHide = true,\n classNames,\n disabled,\n ...props\n}: IconButtonProps & { autoHide?: boolean }) => {\n const { state } = useListContext('ITEM_BUTTON');\n const isDisabled = state.type !== 'idle' || disabled;\n return <IconButton disabled={isDisabled} classNames={[classNames, autoHide && disabled && 'hidden']} {...props} />;\n};\n\nexport const ListItemDragHandle = ({ disabled }: Pick<IconButtonProps, 'disabled'>) => {\n const { dragHandleRef } = useListItemContext('DRAG_HANDLE');\n return <IconButton ref={dragHandleRef as any} icon='ph--dots-six-vertical--regular' disabled={disabled} />;\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 { idle, type ItemDragState, type ListItemRecord } from './ListItem';\n\ntype ListContext<T extends ListItemRecord> = {\n // TODO(burdon): Rename drag state.\n state: ItemDragState & { item?: T };\n setState: (state: ItemDragState & { item?: T }) => void;\n readonly?: boolean;\n dragPreview?: boolean;\n isItem?: (item: any) => boolean;\n getId?: (item: T) => string; // TODO(burdon): Require if T doesn't conform to type.\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\nconst defaultGetId = <T extends ListItemRecord>(item: T) => (item as any)?.id;\n\nexport type ListRootProps<T extends ListItemRecord> = {\n children?: (props: ListRendererProps<T>) => ReactNode;\n items?: T[];\n onMove?: (fromIndex: number, toIndex: number) => void;\n} & Pick<ListContext<T>, 'isItem' | 'getId' | 'readonly' | 'dragPreview'>;\n\nexport const ListRoot = <T extends ListItemRecord>({\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) ?? false,\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 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 {...{ state, setState, isItem, ...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 ListItemButton,\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 ItemButton: ListItemButton,\n ItemTitle: ListItemTitle,\n IconButton,\n};\n\ntype ListItem = ListItemRecord;\n\nexport type { ListRootProps, ListItemProps, IconButtonProps, ListItem, ListItemRecord };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { type HasId } from '@dxos/echo-schema';\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 extends HasId = any, O = any> = {\n root?: T;\n path?: string[];\n id: string;\n} & TreeContextType<T, O> &\n Partial<Pick<TreegridRootProps, 'gridTemplateColumns' | 'classNames'>> &\n Pick<TreeItemProps<T>, 'draggable' | 'renderColumns' | 'canDrop' | 'onOpenChange' | 'onSelect' | 'levelOffset'>;\n\nexport const Tree = <T extends HasId = any, O = any>({\n root,\n path,\n id,\n useItems,\n getProps,\n isOpen,\n isCurrent,\n draggable = false,\n gridTemplateColumns = '[tree-row-start] 1fr min-content [tree-row-end]',\n classNames,\n levelOffset,\n renderColumns,\n canDrop,\n onOpenChange,\n onSelect,\n}: TreeProps<T, O>) => {\n const context = useMemo(\n () => ({\n useItems,\n getProps,\n isOpen,\n isCurrent,\n }),\n [useItems, getProps, isOpen, isCurrent],\n );\n const items = useItems(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 TreeItemDataProps = {\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, O = any> = {\n useItems: (parent?: T, options?: O) => T[];\n getProps: (item: T, parent: string[]) => TreeItemDataProps;\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 TreeProvider = TreeContext.Provider;\n\nexport const useTree = () => useContext(TreeContext) ?? raise(new Error('TreeContext not found'));\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 { Schema } from 'effect';\nimport React, { memo, useCallback, useEffect, useMemo, useRef, useState, type FC, type KeyboardEvent } from 'react';\n\nimport { type HasId } 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 = Schema.Struct({\n id: Schema.String,\n path: Schema.Array(Schema.String),\n item: Schema.Any,\n});\n\nexport type TreeData = Schema.Schema.Type<typeof TreeDataSchema>;\n\nexport const isTreeData = (data: unknown): data is TreeData => Schema.is(TreeDataSchema)(data);\n\nexport type TreeItemProps<T extends HasId = 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?: (params: { 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\nconst RawTreeItem = <T extends HasId = 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 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 { useItems, getProps, isOpen, isCurrent } = useTree();\n const items = useItems(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\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 const data = { id, path, item } satisfies TreeData;\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: source.data as TreeData, target: 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 if (isBranch) {\n handleOpenChange();\n } else {\n rowRef.current?.focus();\n onSelect?.({ item, path, current: !current, option });\n }\n },\n [item, path, current, isBranch, handleOpenChange, onSelect],\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-activeSurface',\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 isBranch={isBranch} open={open} 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={5} classNames='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-6 pli-0 dx-focus-ring-inset', hidden ? 'hidden' : !isBranch && 'invisible')}\n onClick={onToggle}\n >\n <Icon icon='ph--caret-right--bold' size={3} classNames={mx('transition duration-200', open && 'rotate-90')} />\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": ["AccordionPrimitive", "createContext", "React", "Icon", "mx", "AccordionPrimitive", "createContext", "React", "mx", "ACCORDION_NAME", "AccordionProvider", "useAccordionContext", "createContext", "defaultGetId", "item", "id", "AccordionRoot", "classNames", "items", "getId", "children", "value", "defaultValue", "onValueChange", "Root", "type", "className", "mx", "ACCORDION_ITEM_NAME", "AccordionItemProvider", "useAccordionItemContext", "createContext", "AccordionItem", "children", "classNames", "item", "getId", "useAccordionContext", "React", "Item", "value", "className", "mx", "AccordionItemHeader", "props", "Header", "Trigger", "Icon", "icon", "size", "AccordionItemBody", "Content", "div", "role", "Accordion", "Root", "AccordionRoot", "Item", "AccordionItem", "ItemHeader", "AccordionItemHeader", "ItemBody", "AccordionItemBody", "combine", "draggable", "dropTargetForElements", "setCustomNativeDragPreview", "attachClosestEdge", "extractClosestEdge", "createContext", "React", "forwardRef", "useEffect", "useRef", "useState", "createPortal", "invariant", "Icon", "ListItem", "NaturalListItem", "mx", "monitorForElements", "extractClosestEdge", "getReorderDestinationIndex", "createContext", "React", "useCallback", "useEffect", "useState", "LIST_NAME", "ListProvider", "useListContext", "createContext", "defaultGetId", "item", "id", "ListRoot", "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", "idle", "type", "stateStyles", "defaultContext", "LIST_ITEM_NAME", "ListItemProvider", "useListItemContext", "createContext", "ListItem", "children", "classNames", "item", "props", "isItem", "readonly", "dragPreview", "setState", "setRootState", "useListContext", "ref", "useRef", "dragHandleRef", "state", "useState", "useEffect", "element", "current", "invariant", "combine", "draggable", "dragHandle", "canDrag", "getInitialData", "onGenerateDragPreview", "nativeSetDragImage", "source", "rect", "getBoundingClientRect", "setCustomNativeDragPreview", "getOffset", "container", "height", "x", "y", "render", "style", "width", "undefined", "onDragStart", "onDrop", "dropTargetForElements", "canDrop", "data", "getData", "input", "attachClosestEdge", "allowedEdges", "getIsSticky", "onDragEnter", "self", "closestEdge", "extractClosestEdge", "onDrag", "onDragLeave", "React", "div", "role", "className", "mx", "NaturalListItem", "DropIndicator", "edge", "IconButton", "forwardRef", "icon", "forwardedRef", "button", "Icon", "size", "ListItemDeleteButton", "autoHide", "disabled", "isDisabled", "ListItemButton", "ListItemDragHandle", "ListItemDragPreview", "createPortal", "ListItemWrapper", "ListItemTitle", "List", "Root", "ListRoot", "Item", "ListItem", "ItemDragPreview", "ListItemDragPreview", "ItemWrapper", "ListItemWrapper", "ItemDragHandle", "ListItemDragHandle", "ItemDeleteButton", "ListItemDeleteButton", "ItemButton", "ListItemButton", "ItemTitle", "ListItemTitle", "IconButton", "React", "useMemo", "Treegrid", "createContext", "useContext", "raise", "TreeContext", "createContext", "TreeProvider", "Provider", "useTree", "useContext", "raise", "Error", "combine", "draggable", "dropTargetForElements", "attachInstruction", "extractInstruction", "Schema", "React", "memo", "useCallback", "useEffect", "useMemo", "useRef", "useState", "invariant", "Treegrid", "TreeItem", "NaturalTreeItem", "ghostHover", "hoverableControls", "hoverableFocusedKeyboardControls", "hoverableFocusedWithinControls", "mx", "React", "forwardRef", "memo", "useCallback", "Button", "Icon", "toLocalizedString", "useTranslation", "TextTooltip", "mx", "TreeItemHeading", "memo", "forwardRef", "label", "icon", "className", "disabled", "current", "onSelect", "forwardedRef", "t", "useTranslation", "handleSelect", "useCallback", "event", "altKey", "handleButtonKeydown", "key", "preventDefault", "stopPropagation", "React", "TextTooltip", "text", "toLocalizedString", "side", "truncateQuery", "onlyWhenTruncating", "asChild", "ref", "Button", "data-testid", "variant", "density", "classNames", "mx", "onClick", "onKeyDown", "Icon", "size", "span", "data-tooltip", "React", "forwardRef", "memo", "Button", "Icon", "mx", "TreeItemToggle", "memo", "forwardRef", "open", "isBranch", "hidden", "onToggle", "forwardedRef", "React", "Button", "ref", "data-testid", "aria-expanded", "variant", "density", "classNames", "mx", "onClick", "Icon", "icon", "size", "DEFAULT_INDENTATION", "paddingIndentation", "level", "indentation", "paddingInlineStart", "hoverableDescriptionIcons", "TreeDataSchema", "Schema", "Struct", "id", "String", "path", "Array", "item", "Any", "isTreeData", "data", "is", "RawTreeItem", "_path", "last", "draggable", "_draggable", "renderColumns", "Columns", "canDrop", "onOpenChange", "onSelect", "levelOffset", "rowRef", "useRef", "buttonRef", "openRef", "cancelExpandRef", "_state", "setState", "useState", "instruction", "setInstruction", "menuOpen", "setMenuOpen", "useItems", "getProps", "isOpen", "isCurrent", "useTree", "items", "label", "parentOf", "icon", "disabled", "className", "headingClassName", "testId", "useMemo", "open", "current", "level", "length", "isBranch", "mode", "cancelExpand", "useCallback", "clearTimeout", "useEffect", "invariant", "combine", "element", "getInitialData", "onDragStart", "onDrop", "dropTargetForElements", "getData", "input", "attachInstruction", "indentPerLevel", "DEFAULT_INDENTATION", "currentLevel", "block", "source", "_canDrop", "target", "getIsSticky", "onDrag", "self", "extractInstruction", "type", "setTimeout", "onDragLeave", "handleOpenChange", "handleSelect", "option", "focus", "handleKeyDown", "event", "key", "altKey", "React", "Treegrid", "Row", "ref", "aria-labelledby", "join", "PARENT_OF_SEPARATOR", "classNames", "mx", "hoverableControls", "hoverableFocusedKeyboardControls", "hoverableFocusedWithinControls", "ghostHover", "data-itemid", "data-testid", "aria-current", "undefined", "onKeyDown", "onContextMenu", "preventDefault", "Cell", "indent", "style", "paddingIndentation", "div", "role", "TreeItemToggle", "onToggle", "TreeItemHeading", "NaturalTreeItem", "DropIndicator", "gap", "map", "index", "TreeItem", "memo", "Tree", "root", "path", "id", "useItems", "getProps", "isOpen", "isCurrent", "draggable", "gridTemplateColumns", "classNames", "levelOffset", "renderColumns", "canDrop", "onOpenChange", "onSelect", "context", "useMemo", "items", "treePath", "React", "Treegrid", "Root", "TreeProvider", "value", "map", "item", "index", "TreeItem", "key", "last", "length", "SEPARATOR", "Path", "create", "args", "join", "parts", "path", "split", "length", "first", "last", "at", "parent", "slice", "hasRoot", "id", "hasChild", "compare", "hasDescendent", "startsWith", "siblings", "onPath", "includes"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren } from 'react';\n\nimport { Icon, type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useAccordionContext } from './AccordionRoot';\nimport { type ListItemRecord } from '../List';\n\nconst ACCORDION_ITEM_NAME = 'AccordionItem';\n\ntype AccordionItemContext<T extends ListItemRecord> = {\n item: T;\n};\n\nexport const [AccordionItemProvider, useAccordionItemContext] =\n createContext<AccordionItemContext<any>>(ACCORDION_ITEM_NAME);\n\nexport type AccordionItemProps<T extends ListItemRecord> = ThemedClassName<PropsWithChildren<{ item: T }>>;\n\nexport const AccordionItem = <T extends ListItemRecord>({ children, classNames, item }: AccordionItemProps<T>) => {\n const { getId } = useAccordionContext(ACCORDION_ITEM_NAME);\n\n return (\n <AccordionItemProvider {...{ item }}>\n <AccordionPrimitive.Item value={getId(item)} className={mx('overflow-hidden', classNames)}>\n {children}\n </AccordionPrimitive.Item>\n </AccordionItemProvider>\n );\n};\n\nexport type AccordionItemHeaderProps = ThemedClassName<AccordionPrimitive.AccordionHeaderProps>;\n\nexport const AccordionItemHeader = ({ classNames, children, ...props }: AccordionItemHeaderProps) => {\n return (\n <AccordionPrimitive.Header {...props} className={mx(classNames)}>\n <AccordionPrimitive.Trigger className='group flex items-center p-2 dx-focus-ring-inset is-full text-start'>\n {children}\n <Icon\n icon='ph--caret-right--regular'\n size={4}\n classNames='transition-transform duration-200 group-data-[state=open]:rotate-90'\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n};\n\nexport type AccordionItemBodyProps = ThemedClassName<PropsWithChildren>;\n\nexport const AccordionItemBody = ({ children, classNames }: AccordionItemBodyProps) => {\n return (\n <AccordionPrimitive.Content className='overflow-hidden data-[state=closed]:animate-slideUp data-[state=open]:animate-slideDown'>\n <div role='none' className={mx('p-2', classNames)}>\n {children}\n </div>\n </AccordionPrimitive.Content>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type ReactNode } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type ListItemRecord } from '../List';\n\ntype AccordionContext<T extends ListItemRecord> = {\n getId: (item: T) => string;\n};\n\nconst ACCORDION_NAME = 'Accordion';\n\nexport const [AccordionProvider, useAccordionContext] = createContext<AccordionContext<any>>(ACCORDION_NAME);\n\nexport type AccordionRendererProps<T extends ListItemRecord> = {\n items: T[];\n};\n\nconst defaultGetId = <T extends ListItemRecord>(item: T) => (item as any)?.id;\n\nexport type AccordionRootProps<T extends ListItemRecord> = ThemedClassName<\n {\n children?: (props: AccordionRendererProps<T>) => ReactNode;\n items?: T[];\n } & Partial<Pick<AccordionContext<T>, 'getId'>>\n>;\n\nexport const AccordionRoot = <T extends ListItemRecord>({\n classNames,\n items,\n getId = defaultGetId,\n children,\n value,\n defaultValue,\n onValueChange,\n}: AccordionRootProps<T> &\n Pick<AccordionPrimitive.AccordionMultipleProps, 'value' | 'defaultValue' | 'onValueChange'>) => {\n return (\n <AccordionProvider {...{ getId }}>\n <AccordionPrimitive.Root\n type='multiple'\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n className={mx(classNames)}\n >\n {children?.({ items: items ?? [] })}\n </AccordionPrimitive.Root>\n </AccordionProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { AccordionItem, AccordionItemHeader, AccordionItemBody } from './AccordionItem';\nimport { AccordionRoot } from './AccordionRoot';\n\n// TODO(burdon): Next iteration should be based on Radix UI Accordion:\n// https://www.radix-ui.com/primitives/docs/components/accordion\n// TODO(burdon): Support key navigation.\n\nexport const Accordion = {\n Root: AccordionRoot,\n Item: AccordionItem,\n ItemHeader: AccordionItemHeader,\n ItemBody: AccordionItemBody,\n};\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 { 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 = any;\n\nexport type ItemDragState =\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: ItemDragState = { type: 'idle' };\n\nconst stateStyles: { [Key in ItemDragState['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 {\n item: T;\n } & HTMLAttributes<HTMLDivElement>\n >\n>;\n\n/**\n * Draggable list item.\n */\nexport const ListItem = <T extends ListItemRecord>({ children, classNames, item, ...props }: ListItemProps<T>) => {\n const { isItem, readonly, 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<ItemDragState>(idle);\n\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 canDrag: () => !readonly,\n getInitialData: () => item as any,\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 { x: 20, y: height / 2 };\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)) ?? false;\n },\n getData: ({ input }) => {\n return attachClosestEdge(item as any, { 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 onDragLeave: () => {\n setState(idle);\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 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 icon = 'ph--x--regular',\n ...props\n}: Partial<Pick<IconButtonProps, 'icon'>> & Omit<IconButtonProps, 'icon'> & { autoHide?: boolean }) => {\n const { state } = useListContext('DELETE_BUTTON');\n const isDisabled = state.type !== 'idle' || disabled;\n return (\n <IconButton\n icon={icon}\n disabled={isDisabled}\n classNames={[classNames, autoHide && disabled && 'hidden']}\n {...props}\n />\n );\n};\n\nexport const ListItemButton = ({\n autoHide = true,\n classNames,\n disabled,\n ...props\n}: IconButtonProps & { autoHide?: boolean }) => {\n const { state } = useListContext('ITEM_BUTTON');\n const isDisabled = state.type !== 'idle' || disabled;\n return <IconButton disabled={isDisabled} classNames={[classNames, autoHide && disabled && 'hidden']} {...props} />;\n};\n\nexport const ListItemDragHandle = ({ disabled }: Pick<IconButtonProps, 'disabled'>) => {\n const { dragHandleRef } = useListItemContext('DRAG_HANDLE');\n return <IconButton ref={dragHandleRef as any} icon='ph--dots-six-vertical--regular' disabled={disabled} />;\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 { idle, type ItemDragState, type ListItemRecord } from './ListItem';\n\ntype ListContext<T extends ListItemRecord> = {\n // TODO(burdon): Rename drag state.\n state: ItemDragState & { item?: T };\n setState: (state: ItemDragState & { item?: T }) => void;\n readonly?: boolean;\n dragPreview?: boolean;\n isItem?: (item: any) => boolean;\n getId?: (item: T) => string; // TODO(burdon): Require if T doesn't conform to type.\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\nconst defaultGetId = <T extends ListItemRecord>(item: T) => (item as any)?.id;\n\nexport type ListRootProps<T extends ListItemRecord> = {\n children?: (props: ListRendererProps<T>) => ReactNode;\n items?: T[];\n onMove?: (fromIndex: number, toIndex: number) => void;\n} & Pick<ListContext<T>, 'isItem' | 'getId' | 'readonly' | 'dragPreview'>;\n\nexport const ListRoot = <T extends ListItemRecord>({\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) ?? false,\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 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 {...{ state, setState, isItem, ...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 ListItemButton,\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 ItemButton: ListItemButton,\n ItemTitle: ListItemTitle,\n IconButton,\n};\n\ntype ListItem = ListItemRecord;\n\nexport type { ListRootProps, ListItemProps, IconButtonProps, ListItem, ListItemRecord };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { type HasId } from '@dxos/echo-schema';\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 extends HasId = any, O = any> = {\n root?: T;\n path?: string[];\n id: string;\n} & TreeContextType<T, O> &\n Partial<Pick<TreegridRootProps, 'gridTemplateColumns' | 'classNames'>> &\n Pick<TreeItemProps<T>, 'draggable' | 'renderColumns' | 'canDrop' | 'onOpenChange' | 'onSelect' | 'levelOffset'>;\n\nexport const Tree = <T extends HasId = any, O = any>({\n root,\n path,\n id,\n useItems,\n getProps,\n isOpen,\n isCurrent,\n draggable = false,\n gridTemplateColumns = '[tree-row-start] 1fr min-content [tree-row-end]',\n classNames,\n levelOffset,\n renderColumns,\n canDrop,\n onOpenChange,\n onSelect,\n}: TreeProps<T, O>) => {\n const context = useMemo(\n () => ({\n useItems,\n getProps,\n isOpen,\n isCurrent,\n }),\n [useItems, getProps, isOpen, isCurrent],\n );\n const items = useItems(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 TreeItemDataProps = {\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, O = any> = {\n useItems: (parent?: T, options?: O) => T[];\n getProps: (item: T, parent: string[]) => TreeItemDataProps;\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 TreeProvider = TreeContext.Provider;\n\nexport const useTree = () => useContext(TreeContext) ?? raise(new Error('TreeContext not found'));\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 { Schema } from 'effect';\nimport React, { memo, useCallback, useEffect, useMemo, useRef, useState, type FC, type KeyboardEvent } from 'react';\n\nimport { type HasId } 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 = Schema.Struct({\n id: Schema.String,\n path: Schema.Array(Schema.String),\n item: Schema.Any,\n});\n\nexport type TreeData = Schema.Schema.Type<typeof TreeDataSchema>;\n\nexport const isTreeData = (data: unknown): data is TreeData => Schema.is(TreeDataSchema)(data);\n\nexport type TreeItemProps<T extends HasId = 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?: (params: { 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\nconst RawTreeItem = <T extends HasId = 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 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 { useItems, getProps, isOpen, isCurrent } = useTree();\n const items = useItems(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\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 const data = { id, path, item } satisfies TreeData;\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: source.data as TreeData, target: 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 if (isBranch) {\n handleOpenChange();\n } else {\n rowRef.current?.focus();\n onSelect?.({ item, path, current: !current, option });\n }\n },\n [item, path, current, isBranch, handleOpenChange, onSelect],\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-activeSurface',\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 isBranch={isBranch} open={open} 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={5} classNames='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-6 pli-0 dx-focus-ring-inset', hidden ? 'hidden' : !isBranch && 'invisible')}\n onClick={onToggle}\n >\n <Icon icon='ph--caret-right--bold' size={3} classNames={mx('transition duration-200', open && 'rotate-90')} />\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": ["AccordionPrimitive", "createContext", "React", "Icon", "mx", "AccordionPrimitive", "createContext", "React", "mx", "ACCORDION_NAME", "AccordionProvider", "useAccordionContext", "createContext", "defaultGetId", "item", "id", "AccordionRoot", "classNames", "items", "getId", "children", "value", "defaultValue", "onValueChange", "Root", "type", "className", "mx", "ACCORDION_ITEM_NAME", "AccordionItemProvider", "useAccordionItemContext", "createContext", "AccordionItem", "children", "classNames", "item", "getId", "useAccordionContext", "React", "Item", "value", "className", "mx", "AccordionItemHeader", "props", "Header", "Trigger", "Icon", "icon", "size", "AccordionItemBody", "Content", "div", "role", "Accordion", "Root", "AccordionRoot", "Item", "AccordionItem", "ItemHeader", "AccordionItemHeader", "ItemBody", "AccordionItemBody", "combine", "draggable", "dropTargetForElements", "setCustomNativeDragPreview", "attachClosestEdge", "extractClosestEdge", "createContext", "React", "forwardRef", "useEffect", "useRef", "useState", "createPortal", "invariant", "Icon", "ListItem", "NaturalListItem", "mx", "monitorForElements", "extractClosestEdge", "getReorderDestinationIndex", "createContext", "React", "useCallback", "useEffect", "useState", "LIST_NAME", "ListProvider", "useListContext", "createContext", "defaultGetId", "item", "id", "ListRoot", "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", "idle", "type", "stateStyles", "defaultContext", "LIST_ITEM_NAME", "ListItemProvider", "useListItemContext", "createContext", "ListItem", "children", "classNames", "item", "props", "isItem", "readonly", "dragPreview", "setState", "setRootState", "useListContext", "ref", "useRef", "dragHandleRef", "state", "useState", "useEffect", "element", "current", "invariant", "combine", "draggable", "dragHandle", "canDrag", "getInitialData", "onGenerateDragPreview", "nativeSetDragImage", "source", "rect", "getBoundingClientRect", "setCustomNativeDragPreview", "getOffset", "container", "height", "x", "y", "render", "style", "width", "undefined", "onDragStart", "onDrop", "dropTargetForElements", "canDrop", "data", "getData", "input", "attachClosestEdge", "allowedEdges", "getIsSticky", "onDragEnter", "self", "closestEdge", "extractClosestEdge", "onDragLeave", "onDrag", "React", "div", "role", "className", "mx", "NaturalListItem", "DropIndicator", "edge", "IconButton", "forwardRef", "icon", "forwardedRef", "button", "Icon", "size", "ListItemDeleteButton", "autoHide", "disabled", "isDisabled", "ListItemButton", "ListItemDragHandle", "ListItemDragPreview", "createPortal", "ListItemWrapper", "ListItemTitle", "List", "Root", "ListRoot", "Item", "ListItem", "ItemDragPreview", "ListItemDragPreview", "ItemWrapper", "ListItemWrapper", "ItemDragHandle", "ListItemDragHandle", "ItemDeleteButton", "ListItemDeleteButton", "ItemButton", "ListItemButton", "ItemTitle", "ListItemTitle", "IconButton", "React", "useMemo", "Treegrid", "createContext", "useContext", "raise", "TreeContext", "createContext", "TreeProvider", "Provider", "useTree", "useContext", "raise", "Error", "combine", "draggable", "dropTargetForElements", "attachInstruction", "extractInstruction", "Schema", "React", "memo", "useCallback", "useEffect", "useMemo", "useRef", "useState", "invariant", "Treegrid", "TreeItem", "NaturalTreeItem", "ghostHover", "hoverableControls", "hoverableFocusedKeyboardControls", "hoverableFocusedWithinControls", "mx", "React", "forwardRef", "memo", "useCallback", "Button", "Icon", "toLocalizedString", "useTranslation", "TextTooltip", "mx", "TreeItemHeading", "memo", "forwardRef", "label", "icon", "className", "disabled", "current", "onSelect", "forwardedRef", "t", "useTranslation", "handleSelect", "useCallback", "event", "altKey", "handleButtonKeydown", "key", "preventDefault", "stopPropagation", "React", "TextTooltip", "text", "toLocalizedString", "side", "truncateQuery", "onlyWhenTruncating", "asChild", "ref", "Button", "data-testid", "variant", "density", "classNames", "mx", "onClick", "onKeyDown", "Icon", "size", "span", "data-tooltip", "React", "forwardRef", "memo", "Button", "Icon", "mx", "TreeItemToggle", "memo", "forwardRef", "open", "isBranch", "hidden", "onToggle", "forwardedRef", "React", "Button", "ref", "data-testid", "aria-expanded", "variant", "density", "classNames", "mx", "onClick", "Icon", "icon", "size", "DEFAULT_INDENTATION", "paddingIndentation", "level", "indentation", "paddingInlineStart", "hoverableDescriptionIcons", "TreeDataSchema", "Schema", "Struct", "id", "String", "path", "Array", "item", "Any", "isTreeData", "data", "is", "RawTreeItem", "_path", "last", "draggable", "_draggable", "renderColumns", "Columns", "canDrop", "onOpenChange", "onSelect", "levelOffset", "rowRef", "useRef", "buttonRef", "openRef", "cancelExpandRef", "_state", "setState", "useState", "instruction", "setInstruction", "menuOpen", "setMenuOpen", "useItems", "getProps", "isOpen", "isCurrent", "useTree", "items", "label", "parentOf", "icon", "disabled", "className", "headingClassName", "testId", "useMemo", "open", "current", "level", "length", "isBranch", "mode", "cancelExpand", "useCallback", "clearTimeout", "useEffect", "invariant", "combine", "element", "getInitialData", "onDragStart", "onDrop", "dropTargetForElements", "getData", "input", "attachInstruction", "indentPerLevel", "DEFAULT_INDENTATION", "currentLevel", "block", "source", "_canDrop", "target", "getIsSticky", "onDrag", "self", "extractInstruction", "type", "setTimeout", "onDragLeave", "handleOpenChange", "handleSelect", "option", "focus", "handleKeyDown", "event", "key", "altKey", "React", "Treegrid", "Row", "ref", "aria-labelledby", "join", "PARENT_OF_SEPARATOR", "classNames", "mx", "hoverableControls", "hoverableFocusedKeyboardControls", "hoverableFocusedWithinControls", "ghostHover", "data-itemid", "data-testid", "aria-current", "undefined", "onKeyDown", "onContextMenu", "preventDefault", "Cell", "indent", "style", "paddingIndentation", "div", "role", "TreeItemToggle", "onToggle", "TreeItemHeading", "NaturalTreeItem", "DropIndicator", "gap", "map", "index", "TreeItem", "memo", "Tree", "root", "path", "id", "useItems", "getProps", "isOpen", "isCurrent", "draggable", "gridTemplateColumns", "classNames", "levelOffset", "renderColumns", "canDrop", "onOpenChange", "onSelect", "context", "useMemo", "items", "treePath", "React", "Treegrid", "Root", "TreeProvider", "value", "map", "item", "index", "TreeItem", "key", "last", "length", "SEPARATOR", "Path", "create", "args", "join", "parts", "path", "split", "length", "first", "last", "at", "parent", "slice", "hasRoot", "id", "hasChild", "compare", "hasDescendent", "startsWith", "siblings", "onPath", "includes"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/react-ui-list/src/components/Accordion/AccordionRoot.tsx":{"bytes":4683,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-accordion","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Accordion/AccordionItem.tsx":{"bytes":7384,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-accordion","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","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},{"path":"packages/ui/react-ui-list/src/components/Accordion/AccordionRoot.tsx","kind":"import-statement","original":"./AccordionRoot"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Accordion/Accordion.tsx":{"bytes":1944,"imports":[{"path":"packages/ui/react-ui-list/src/components/Accordion/AccordionItem.tsx","kind":"import-statement","original":"./AccordionItem"},{"path":"packages/ui/react-ui-list/src/components/Accordion/AccordionRoot.tsx","kind":"import-statement","original":"./AccordionRoot"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Accordion/index.ts":{"bytes":491,"imports":[{"path":"packages/ui/react-ui-list/src/components/Accordion/Accordion.tsx","kind":"import-statement","original":"./Accordion"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/ListRoot.tsx":{"bytes":11189,"imports":[{"path":"@preact-signals/safe-react/tracking","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":"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":27612,"imports":[{"path":"@preact-signals/safe-react/tracking","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/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":3626,"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":473,"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":2206,"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":7865,"imports":[{"path":"@preact-signals/safe-react/tracking","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}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx":{"bytes":3488,"imports":[{"path":"@preact-signals/safe-react/tracking","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}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/helpers.ts":{"bytes":1183,"imports":[],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx":{"bytes":32829,"imports":[{"path":"@preact-signals/safe-react/tracking","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":"effect","kind":"import-statement","external":true},{"path":"react","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":6301,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"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":660,"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":637,"imports":[{"path":"packages/ui/react-ui-list/src/components/Accordion/index.ts","kind":"import-statement","original":"./Accordion"},{"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":3418,"imports":[],"format":"esm"},"packages/ui/react-ui-list/src/util/index.ts":{"bytes":462,"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":551,"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-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":57055},"packages/ui/react-ui-list/dist/lib/node-esm/index.mjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-accordion","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","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},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-accordion","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","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/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":"@preact-signals/safe-react/tracking","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":"@preact-signals/safe-react/tracking","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":"@preact-signals/safe-react/tracking","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":"effect","kind":"import-statement","external":true},{"path":"react","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":"@preact-signals/safe-react/tracking","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":"@preact-signals/safe-react/tracking","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":["Accordion","List","Path","Tree","TreeDataSchema","TreeItem","TreeProvider","isTreeData","useTree"],"entryPoint":"packages/ui/react-ui-list/src/index.ts","inputs":{"packages/ui/react-ui-list/src/components/Accordion/AccordionItem.tsx":{"bytesInOutput":2029},"packages/ui/react-ui-list/src/components/Accordion/AccordionRoot.tsx":{"bytesInOutput":933},"packages/ui/react-ui-list/src/components/Accordion/Accordion.tsx":{"bytesInOutput":132},"packages/ui/react-ui-list/src/components/Accordion/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/components/List/ListItem.tsx":{"bytesInOutput":7986},"packages/ui/react-ui-list/src/components/List/ListRoot.tsx":{"bytesInOutput":2472},"packages/ui/react-ui-list/src/components/List/List.tsx":{"bytesInOutput":275},"packages/ui/react-ui-list/src/components/List/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/components/Tree/Tree.tsx":{"bytesInOutput":1360},"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx":{"bytesInOutput":293},"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx":{"bytesInOutput":8958},"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx":{"bytesInOutput":2038},"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx":{"bytesInOutput":993},"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":29648}}}
1
+ {"inputs":{"src/components/Accordion/AccordionRoot.tsx":{"bytes":4670,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-accordion","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/components/Accordion/AccordionItem.tsx":{"bytes":7371,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-accordion","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","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},{"path":"src/components/Accordion/AccordionRoot.tsx","kind":"import-statement","original":"./AccordionRoot"}],"format":"esm"},"src/components/Accordion/Accordion.tsx":{"bytes":1931,"imports":[{"path":"src/components/Accordion/AccordionItem.tsx","kind":"import-statement","original":"./AccordionItem"},{"path":"src/components/Accordion/AccordionRoot.tsx","kind":"import-statement","original":"./AccordionRoot"}],"format":"esm"},"src/components/Accordion/index.ts":{"bytes":478,"imports":[{"path":"src/components/Accordion/Accordion.tsx","kind":"import-statement","original":"./Accordion"}],"format":"esm"},"src/components/List/ListRoot.tsx":{"bytes":11176,"imports":[{"path":"@preact-signals/safe-react/tracking","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":"src/components/List/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"},"src/components/List/ListItem.tsx":{"bytes":27615,"imports":[{"path":"@preact-signals/safe-react/tracking","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/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":"src/components/List/ListRoot.tsx","kind":"import-statement","original":"./ListRoot"}],"format":"esm"},"src/components/List/List.tsx":{"bytes":3613,"imports":[{"path":"src/components/List/ListItem.tsx","kind":"import-statement","original":"./ListItem"},{"path":"src/components/List/ListRoot.tsx","kind":"import-statement","original":"./ListRoot"}],"format":"esm"},"src/components/List/index.ts":{"bytes":460,"imports":[{"path":"src/components/List/List.tsx","kind":"import-statement","original":"./List"}],"format":"esm"},"src/components/Tree/TreeContext.tsx":{"bytes":2193,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"src/components/Tree/TreeItemHeading.tsx":{"bytes":7852,"imports":[{"path":"@preact-signals/safe-react/tracking","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}],"format":"esm"},"src/components/Tree/TreeItemToggle.tsx":{"bytes":3475,"imports":[{"path":"@preact-signals/safe-react/tracking","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}],"format":"esm"},"src/components/Tree/helpers.ts":{"bytes":1170,"imports":[],"format":"esm"},"src/components/Tree/TreeItem.tsx":{"bytes":32816,"imports":[{"path":"@preact-signals/safe-react/tracking","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":"effect","kind":"import-statement","external":true},{"path":"react","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":"src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"src/components/Tree/TreeItemHeading.tsx","kind":"import-statement","original":"./TreeItemHeading"},{"path":"src/components/Tree/TreeItemToggle.tsx","kind":"import-statement","original":"./TreeItemToggle"},{"path":"src/components/Tree/helpers.ts","kind":"import-statement","original":"./helpers"}],"format":"esm"},"src/components/Tree/Tree.tsx":{"bytes":6288,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"src/components/Tree/TreeItem.tsx","kind":"import-statement","original":"./TreeItem"}],"format":"esm"},"src/components/Tree/index.ts":{"bytes":647,"imports":[{"path":"src/components/Tree/Tree.tsx","kind":"import-statement","original":"./Tree"},{"path":"src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"src/components/Tree/TreeItem.tsx","kind":"import-statement","original":"./TreeItem"}],"format":"esm"},"src/components/index.ts":{"bytes":624,"imports":[{"path":"src/components/Accordion/index.ts","kind":"import-statement","original":"./Accordion"},{"path":"src/components/List/index.ts","kind":"import-statement","original":"./List"},{"path":"src/components/Tree/index.ts","kind":"import-statement","original":"./Tree"}],"format":"esm"},"src/util/path.ts":{"bytes":3405,"imports":[],"format":"esm"},"src/util/index.ts":{"bytes":449,"imports":[{"path":"src/util/path.ts","kind":"import-statement","original":"./path"}],"format":"esm"},"src/index.ts":{"bytes":538,"imports":[{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/util/index.ts","kind":"import-statement","original":"./util"}],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":57066},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-accordion","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","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},{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"@radix-ui/react-accordion","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","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/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":"@preact-signals/safe-react/tracking","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":"@preact-signals/safe-react/tracking","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":"@preact-signals/safe-react/tracking","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":"effect","kind":"import-statement","external":true},{"path":"react","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":"@preact-signals/safe-react/tracking","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":"@preact-signals/safe-react/tracking","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":["Accordion","List","Path","Tree","TreeDataSchema","TreeItem","TreeProvider","isTreeData","useTree"],"entryPoint":"src/index.ts","inputs":{"src/components/Accordion/AccordionItem.tsx":{"bytesInOutput":2029},"src/components/Accordion/AccordionRoot.tsx":{"bytesInOutput":933},"src/components/Accordion/Accordion.tsx":{"bytesInOutput":132},"src/components/Accordion/index.ts":{"bytesInOutput":0},"src/components/index.ts":{"bytesInOutput":0},"src/components/List/ListItem.tsx":{"bytesInOutput":7973},"src/components/List/ListRoot.tsx":{"bytesInOutput":2472},"src/components/List/List.tsx":{"bytesInOutput":275},"src/components/List/index.ts":{"bytesInOutput":0},"src/components/Tree/Tree.tsx":{"bytesInOutput":1360},"src/components/Tree/TreeContext.tsx":{"bytesInOutput":293},"src/components/Tree/TreeItem.tsx":{"bytesInOutput":8945},"src/components/Tree/TreeItemHeading.tsx":{"bytesInOutput":2038},"src/components/Tree/TreeItemToggle.tsx":{"bytesInOutput":993},"src/components/Tree/helpers.ts":{"bytesInOutput":162},"src/components/Tree/index.ts":{"bytesInOutput":0},"src/index.ts":{"bytesInOutput":0},"src/util/path.ts":{"bytesInOutput":678},"src/util/index.ts":{"bytesInOutput":0}},"bytes":29180}}}