@dxos/react-ui-list 0.7.5-main.9d2a38b → 0.7.5-main.ff8607b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/lib/browser/index.mjs +25 -18
  2. package/dist/lib/browser/index.mjs.map +3 -3
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +24 -17
  5. package/dist/lib/node/index.cjs.map +3 -3
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/lib/node-esm/index.mjs +25 -18
  8. package/dist/lib/node-esm/index.mjs.map +3 -3
  9. package/dist/lib/node-esm/meta.json +1 -1
  10. package/dist/types/src/components/List/List.d.ts +1 -1
  11. package/dist/types/src/components/List/List.d.ts.map +1 -1
  12. package/dist/types/src/components/List/ListItem.d.ts +6 -9
  13. package/dist/types/src/components/List/ListItem.d.ts.map +1 -1
  14. package/dist/types/src/components/List/ListRoot.d.ts +3 -6
  15. package/dist/types/src/components/List/ListRoot.d.ts.map +1 -1
  16. package/dist/types/src/components/Tree/Tree.d.ts +4 -2
  17. package/dist/types/src/components/Tree/Tree.d.ts.map +1 -1
  18. package/dist/types/src/components/Tree/TreeItem.d.ts +2 -1
  19. package/dist/types/src/components/Tree/TreeItem.d.ts.map +1 -1
  20. package/dist/types/src/components/Tree/TreeItemHeading.d.ts.map +1 -1
  21. package/dist/types/src/components/Tree/TreeItemToggle.d.ts +1 -0
  22. package/dist/types/src/components/Tree/TreeItemToggle.d.ts.map +1 -1
  23. package/dist/types/src/components/Tree/helpers.d.ts +1 -1
  24. package/package.json +18 -18
  25. package/src/components/List/ListItem.tsx +10 -4
  26. package/src/components/Tree/Tree.tsx +9 -5
  27. package/src/components/Tree/TreeItem.tsx +6 -6
  28. package/src/components/Tree/TreeItemHeading.tsx +2 -3
  29. package/src/components/Tree/TreeItemToggle.tsx +3 -2
  30. package/src/components/Tree/helpers.ts +1 -1
@@ -144,7 +144,7 @@ var stateStyles = {
144
144
  var defaultContext = {};
145
145
  var LIST_ITEM_NAME = "ListItem";
146
146
  var [ListItemProvider, useListItemContext] = (0, import_react_context.createContext)(LIST_ITEM_NAME, defaultContext);
147
- var ListItem = ({ children, classNames, item }) => {
147
+ var ListItem = ({ children, classNames, item, ...props }) => {
148
148
  const { isItem, dragPreview, setState: setRootState } = useListContext(LIST_ITEM_NAME);
149
149
  const ref = (0, import_react.useRef)(null);
150
150
  const dragHandleRef = (0, import_react.useRef)(null);
@@ -153,7 +153,7 @@ var ListItem = ({ children, classNames, item }) => {
153
153
  const element = ref.current;
154
154
  (0, import_invariant.invariant)(element, void 0, {
155
155
  F: __dxlog_file,
156
- L: 90,
156
+ L: 91,
157
157
  S: void 0,
158
158
  A: [
159
159
  "element",
@@ -262,11 +262,13 @@ var ListItem = ({ children, classNames, item }) => {
262
262
  item,
263
263
  dragHandleRef
264
264
  }, /* @__PURE__ */ import_react.default.createElement("div", {
265
+ role: "none",
265
266
  className: "relative"
266
267
  }, /* @__PURE__ */ import_react.default.createElement("div", {
267
268
  ref,
268
269
  role: "listitem",
269
- className: (0, import_react_ui_theme.mx)("flex overflow-hidden", classNames, stateStyles[state.type])
270
+ className: (0, import_react_ui_theme.mx)("flex overflow-hidden", classNames, stateStyles[state.type]),
271
+ ...props
270
272
  }, children), state.type === "is-dragging-over" && state.closestEdge && /* @__PURE__ */ import_react.default.createElement(import_react_ui.ListItem.DropIndicator, {
271
273
  edge: state.closestEdge
272
274
  })));
@@ -355,7 +357,7 @@ var TreeItemHeading = /* @__PURE__ */ (0, import_react6.memo)(/* @__PURE__ */ (0
355
357
  "data-testid": "treeItem.heading",
356
358
  variant: "ghost",
357
359
  density: "fine",
358
- classNames: (0, import_react_ui_theme3.mx)("grow gap-2 !pis-0.5 hover:!bg-transparent dark:hover:!bg-transparent", "disabled:!cursor-default disabled:!opacity-100", className),
360
+ classNames: (0, import_react_ui_theme3.mx)("grow gap-2 pis-0.5 hover:bg-transparent dark:hover:bg-transparent", "disabled:cursor-default disabled:opacity-100", className),
359
361
  disabled,
360
362
  onClick: handleSelect,
361
363
  onKeyDown: handleButtonKeydown,
@@ -371,14 +373,14 @@ var TreeItemHeading = /* @__PURE__ */ (0, import_react6.memo)(/* @__PURE__ */ (0
371
373
  "data-tooltip": true
372
374
  }, (0, import_react_ui4.toLocalizedString)(label, t))));
373
375
  }));
374
- var TreeItemToggle = /* @__PURE__ */ (0, import_react7.memo)(/* @__PURE__ */ (0, import_react7.forwardRef)(({ open, isBranch, onToggle }, forwardedRef) => {
376
+ var TreeItemToggle = /* @__PURE__ */ (0, import_react7.memo)(/* @__PURE__ */ (0, import_react7.forwardRef)(({ open, isBranch, hidden, onToggle }, forwardedRef) => {
375
377
  return /* @__PURE__ */ import_react7.default.createElement(import_react_ui5.Button, {
376
378
  ref: forwardedRef,
377
379
  "data-testid": "treeItem.toggle",
378
380
  "aria-expanded": open,
379
381
  variant: "ghost",
380
382
  density: "fine",
381
- classNames: (0, import_react_ui_theme4.mx)("is-6 !pli-1", !isBranch && "invisible"),
383
+ classNames: (0, import_react_ui_theme4.mx)("is-4 dx-focus-ring-inset pli-0", hidden ? "hidden" : !isBranch && "invisible"),
382
384
  onClick: onToggle
383
385
  }, /* @__PURE__ */ import_react7.default.createElement(import_react_ui5.Icon, {
384
386
  icon: "ph--caret-right--regular",
@@ -387,7 +389,7 @@ var TreeItemToggle = /* @__PURE__ */ (0, import_react7.memo)(/* @__PURE__ */ (0,
387
389
  }));
388
390
  }));
389
391
  var DEFAULT_INDENTATION = 8;
390
- var paddingIndendation = (level, indentation = DEFAULT_INDENTATION) => ({
392
+ var paddingIndentation = (level, indentation = DEFAULT_INDENTATION) => ({
391
393
  paddingInlineStart: `${(level - 1) * indentation}px`
392
394
  });
393
395
  var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx";
@@ -398,7 +400,7 @@ var TreeDataSchema = import_echo_schema.S.Struct({
398
400
  item: import_echo_schema.S.Any
399
401
  });
400
402
  var isTreeData = (data) => import_echo_schema.S.is(TreeDataSchema)(data);
401
- var RawTreeItem = ({ item, path: _path, last, draggable: draggable2, renderColumns: Columns, canDrop, onOpenChange, onSelect }) => {
403
+ var RawTreeItem = ({ item, path: _path, last, draggable: draggable2, renderColumns: Columns, canDrop, onOpenChange, onSelect, levelOffset = 2 }) => {
402
404
  const { getItems, getProps, isOpen, isCurrent } = useTree();
403
405
  const items = getItems(item);
404
406
  const { id, label, parentOf, icon, disabled, className, headingClassName, testId } = getProps(item, _path);
@@ -411,7 +413,7 @@ var RawTreeItem = ({ item, path: _path, last, draggable: draggable2, renderColum
411
413
  ]);
412
414
  const open = isOpen(path, item);
413
415
  const current = isCurrent(path, item);
414
- const level = path.length - 2;
416
+ const level = path.length - levelOffset;
415
417
  const isBranch = !!parentOf;
416
418
  const mode = last ? "last-in-group" : open ? "expanded" : "standard";
417
419
  const data = (0, import_react5.useMemo)(() => ({
@@ -442,7 +444,7 @@ var RawTreeItem = ({ item, path: _path, last, draggable: draggable2, renderColum
442
444
  }
443
445
  (0, import_invariant2.invariant)(buttonRef.current, void 0, {
444
446
  F: __dxlog_file2,
445
- L: 109,
447
+ L: 110,
446
448
  S: void 0,
447
449
  A: [
448
450
  "buttonRef.current",
@@ -583,7 +585,7 @@ var RawTreeItem = ({ item, path: _path, last, draggable: draggable2, renderColum
583
585
  id,
584
586
  "aria-labelledby": `${id}__label`,
585
587
  parentOf: parentOf?.join(import_react_ui3.Treegrid.PARENT_OF_SEPARATOR),
586
- classNames: (0, import_react_ui_theme2.mx)("grid grid-cols-subgrid col-[tree-row] mt-[2px] aria-[current]:bg-input", import_react_ui_theme2.hoverableControls, import_react_ui_theme2.hoverableFocusedKeyboardControls, import_react_ui_theme2.hoverableFocusedWithinControls, hoverableDescriptionIcons, import_react_ui_theme2.ghostHover, import_react_ui_theme2.focusRing, className),
588
+ classNames: (0, import_react_ui_theme2.mx)("grid grid-cols-subgrid col-[tree-row] mbs-0.5 aria-[current]:bg-input", import_react_ui_theme2.hoverableControls, import_react_ui_theme2.hoverableFocusedKeyboardControls, import_react_ui_theme2.hoverableFocusedWithinControls, hoverableDescriptionIcons, import_react_ui_theme2.ghostHover, className),
587
589
  "data-itemid": id,
588
590
  "data-testid": testId,
589
591
  // NOTE(thure): This is intentionally an empty string to for descendents to select by in the CSS
@@ -598,7 +600,7 @@ var RawTreeItem = ({ item, path: _path, last, draggable: draggable2, renderColum
598
600
  }, /* @__PURE__ */ import_react5.default.createElement(import_react_ui3.Treegrid.Cell, {
599
601
  indent: true,
600
602
  classNames: "relative grid grid-cols-subgrid col-[tree-row]",
601
- style: paddingIndendation(level)
603
+ style: paddingIndentation(level)
602
604
  }, /* @__PURE__ */ import_react5.default.createElement("div", {
603
605
  role: "none",
604
606
  className: "flex items-center"
@@ -636,7 +638,7 @@ var RawTreeItem = ({ item, path: _path, last, draggable: draggable2, renderColum
636
638
  })));
637
639
  };
638
640
  var TreeItem = /* @__PURE__ */ (0, import_react5.memo)(RawTreeItem);
639
- var Tree = ({ id, getItems, getProps, isOpen, isCurrent, draggable: draggable2 = false, gridTemplateColumns = "[tree-row-start] 1fr min-content [tree-row-end]", classNames, renderColumns, canDrop, onOpenChange, onSelect }) => {
641
+ var Tree = ({ root, path, id, getItems, getProps, isOpen, isCurrent, draggable: draggable2 = false, gridTemplateColumns = "[tree-row-start] 1fr min-content [tree-row-end]", classNames, renderColumns, canDrop, onOpenChange, onSelect, levelOffset }) => {
640
642
  const context = (0, import_react3.useMemo)(() => ({
641
643
  getItems,
642
644
  getProps,
@@ -648,11 +650,15 @@ var Tree = ({ id, getItems, getProps, isOpen, isCurrent, draggable: draggable2 =
648
650
  isOpen,
649
651
  isCurrent
650
652
  ]);
651
- const items = getItems();
652
- const path = (0, import_react3.useMemo)(() => [
653
+ const items = getItems(root);
654
+ const treePath = (0, import_react3.useMemo)(() => path ? [
655
+ ...path,
653
656
  id
654
- ], [
657
+ ] : [
655
658
  id
659
+ ], [
660
+ id,
661
+ path
656
662
  ]);
657
663
  return /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Treegrid.Root, {
658
664
  gridTemplateColumns,
@@ -663,7 +669,8 @@ var Tree = ({ id, getItems, getProps, isOpen, isCurrent, draggable: draggable2 =
663
669
  key: item.id,
664
670
  item,
665
671
  last: index === items.length - 1,
666
- path,
672
+ path: treePath,
673
+ levelOffset,
667
674
  draggable: draggable2,
668
675
  renderColumns,
669
676
  canDrop,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/List/ListItem.tsx", "../../../src/components/List/ListRoot.tsx", "../../../src/components/List/List.tsx", "../../../src/components/Tree/Tree.tsx", "../../../src/components/Tree/TreeContext.tsx", "../../../src/components/Tree/TreeItem.tsx", "../../../src/components/Tree/TreeItemHeading.tsx", "../../../src/components/Tree/TreeItemToggle.tsx", "../../../src/components/Tree/helpers.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview';\nimport {\n type Edge,\n attachClosestEdge,\n extractClosestEdge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { createContext } from '@radix-ui/react-context';\nimport React, {\n type ComponentProps,\n type HTMLAttributes,\n type MutableRefObject,\n type PropsWithChildren,\n type ReactNode,\n forwardRef,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { invariant } from '@dxos/invariant';\nimport { Icon, type ThemedClassName, ListItem as NaturalListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useListContext } from './ListRoot';\n\nexport type ListItemRecord = {};\n\nexport type ItemState =\n | {\n type: 'idle';\n }\n | {\n type: 'preview';\n container: HTMLElement;\n }\n | {\n type: 'is-dragging';\n }\n | {\n type: 'is-dragging-over';\n closestEdge: Edge | null;\n };\n\nexport const idle: ItemState = { type: 'idle' };\n\nconst stateStyles: { [Key in ItemState['type']]?: HTMLAttributes<HTMLDivElement>['className'] } = {\n 'is-dragging': 'opacity-50',\n};\n\ntype ListItemContext<T extends ListItemRecord> = {\n item: T;\n dragHandleRef: MutableRefObject<HTMLElement | null>;\n};\n\n/**\n * Default context defined for ListItemDragPreview, which is defined outside of ListItem.\n */\nconst defaultContext: ListItemContext<any> = {} as any;\n\nconst LIST_ITEM_NAME = 'ListItem';\n\nexport const [ListItemProvider, useListItemContext] = createContext<ListItemContext<any>>(\n LIST_ITEM_NAME,\n defaultContext,\n);\n\nexport type ListItemProps<T extends ListItemRecord> = ThemedClassName<\n PropsWithChildren<{\n item: T;\n }>\n>;\n\n/**\n * Draggable list item.\n */\nexport const ListItem = <T extends ListItemRecord>({ children, classNames, item }: ListItemProps<T>) => {\n const { isItem, dragPreview, setState: setRootState } = useListContext(LIST_ITEM_NAME);\n const ref = useRef<HTMLDivElement | null>(null);\n const dragHandleRef = useRef<HTMLElement | null>(null);\n const [state, setState] = useState<ItemState>(idle);\n useEffect(() => {\n const element = ref.current;\n invariant(element);\n return combine(\n //\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about#draggable\n //\n draggable({\n element,\n dragHandle: dragHandleRef.current!,\n getInitialData: () => item,\n onGenerateDragPreview: dragPreview\n ? ({ nativeSetDragImage, source }) => {\n const rect = source.element.getBoundingClientRect();\n setCustomNativeDragPreview({\n nativeSetDragImage,\n getOffset: ({ container }) => {\n const { height } = container.getBoundingClientRect();\n return {\n x: 20,\n y: height / 2,\n };\n },\n render: ({ container }) => {\n container.style.width = rect.width + 'px';\n setState({ type: 'preview', container });\n setRootState({ type: 'preview', container, item });\n return () => {}; // TODO(burdon): Cleanup.\n },\n });\n }\n : undefined,\n onDragStart: () => {\n setState({ type: 'is-dragging' });\n setRootState({ type: 'is-dragging', item });\n },\n onDrop: () => {\n setState(idle);\n setRootState(idle);\n },\n }),\n\n //\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about#drop-target-for-elements\n //\n dropTargetForElements({\n element,\n canDrop: ({ source }) => {\n return source.element !== element && isItem(source.data);\n },\n getData: ({ input }) => {\n return attachClosestEdge(item, { element, input, allowedEdges: ['top', 'bottom'] });\n },\n getIsSticky: () => true,\n onDragEnter: ({ self }) => {\n const closestEdge = extractClosestEdge(self.data);\n setState({ type: 'is-dragging-over', closestEdge });\n },\n onDrag: ({ self }) => {\n const closestEdge = extractClosestEdge(self.data);\n setState((current) => {\n if (current.type === 'is-dragging-over' && current.closestEdge === closestEdge) {\n return current;\n }\n return { type: 'is-dragging-over', closestEdge };\n });\n },\n onDragLeave: () => {\n setState(idle);\n },\n onDrop: () => {\n setState(idle);\n },\n }),\n );\n }, [item]);\n\n return (\n <ListItemProvider item={item} dragHandleRef={dragHandleRef}>\n <div className='relative'>\n <div ref={ref} role='listitem' className={mx('flex overflow-hidden', classNames, stateStyles[state.type])}>\n {children}\n </div>\n {state.type === 'is-dragging-over' && state.closestEdge && (\n <NaturalListItem.DropIndicator edge={state.closestEdge} />\n )}\n </div>\n </ListItemProvider>\n );\n};\n\n//\n// List item components\n//\n\nexport type IconButtonProps = ThemedClassName<ComponentProps<'button'>> & { icon: string };\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ classNames, icon, ...props }, forwardedRef) => {\n return (\n <button ref={forwardedRef} className={mx('flex items-center justify-center', classNames)} {...props}>\n <Icon icon={icon} classNames='cursor-pointer' size={4} />\n </button>\n );\n },\n);\n\nexport const ListItemDeleteButton = ({\n autoHide = true,\n classNames,\n disabled,\n ...props\n}: Omit<IconButtonProps, 'icon'> & { autoHide?: boolean }) => {\n const { state } = useListContext('DELETE_BUTTON');\n const isDisabled = state.type !== 'idle' || disabled;\n return (\n <IconButton\n icon='ph--x--regular'\n disabled={isDisabled}\n classNames={[classNames, autoHide && disabled && 'hidden']}\n {...props}\n />\n );\n};\n\nexport const ListItemDragHandle = () => {\n const { dragHandleRef } = useListItemContext('DRAG_HANDLE');\n return <IconButton ref={dragHandleRef as any} icon='ph--dots-six-vertical--regular' />;\n};\n\nexport const ListItemDragPreview = <T extends ListItemRecord>({\n children,\n}: {\n children: ({ item }: { item: T }) => ReactNode;\n}) => {\n const { state } = useListContext('DRAG_PREVIEW');\n return state?.type === 'preview' ? createPortal(children({ item: state.item }), state.container) : null;\n};\n\nexport const ListItemWrapper = ({ classNames, children }: ThemedClassName<PropsWithChildren>) => (\n <div className={mx('flex is-full gap-2', classNames)}>{children}</div>\n);\n\nexport const ListItemTitle = ({\n classNames,\n children,\n ...props\n}: ThemedClassName<PropsWithChildren<ComponentProps<'div'>>>) => (\n <div className={mx('flex grow items-center truncate', classNames)} {...props}>\n {children}\n </div>\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { getReorderDestinationIndex } from '@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type ReactNode, useCallback, useEffect, useState } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\n\nimport { idle, type ItemState, type ListItemRecord } from './ListItem';\n\ntype ListContext<T extends ListItemRecord> = {\n isItem: (item: any) => boolean;\n getId?: (item: T) => string; // TODO(burdon): Require if T doesn't conform to type.\n dragPreview?: boolean;\n state: ItemState & { item?: T };\n setState: (state: ItemState & { item?: T }) => void;\n};\n\nconst LIST_NAME = 'List';\n\nexport const [ListProvider, useListContext] = createContext<ListContext<any>>(LIST_NAME);\n\nexport type ListRendererProps<T extends ListItemRecord> = {\n state: ListContext<T>['state'];\n items: T[];\n};\n\nexport type ListRootProps<T extends ListItemRecord> = ThemedClassName<{\n children?: (props: ListRendererProps<T>) => ReactNode;\n items?: T[];\n onMove?: (fromIndex: number, toIndex: number) => void;\n}> &\n Pick<ListContext<T>, 'isItem' | 'getId' | 'dragPreview'>;\n\nconst defaultGetId = <T extends ListItemRecord>(item: T) => (item as any)?.id;\n\nexport const ListRoot = <T extends ListItemRecord>({\n classNames,\n children,\n items,\n isItem,\n getId = defaultGetId,\n onMove,\n ...props\n}: ListRootProps<T>) => {\n const isEqual = useCallback(\n (a: T, b: T) => {\n const idA = getId?.(a);\n const idB = getId?.(b);\n\n if (idA !== undefined && idB !== undefined) {\n return idA === idB;\n } else {\n // Fallback for primitive values or when getId fails.\n // NOTE(ZaymonFC): After drag and drop, pragmatic internally serializes drop targets which breaks reference equality.\n // You must provide an `getId` function that returns a stable identifier for your items.\n return a === b;\n }\n },\n [getId],\n );\n\n const [state, setState] = useState<ListContext<T>['state']>(idle);\n useEffect(() => {\n if (!items) {\n return;\n }\n\n return monitorForElements({\n canMonitor: ({ source }) => isItem(source.data),\n onDrop: ({ location, source }) => {\n const target = location.current.dropTargets[0];\n if (!target) {\n return;\n }\n\n const sourceData = source.data;\n const targetData = target.data;\n\n if (!isItem(sourceData) || !isItem(targetData)) {\n return;\n }\n\n const sourceIdx = items.findIndex((item) => isEqual(item, sourceData as T));\n const targetIdx = items.findIndex((item) => isEqual(item, targetData as T));\n if (targetIdx < 0 || sourceIdx < 0) {\n return;\n }\n const closestEdgeOfTarget = extractClosestEdge(targetData);\n const destinationIndex = getReorderDestinationIndex({\n closestEdgeOfTarget,\n startIndex: sourceIdx,\n indexOfTarget: targetIdx,\n axis: 'vertical',\n });\n\n onMove?.(sourceIdx, destinationIndex);\n },\n });\n }, [items, isEqual, onMove]);\n\n return (\n <ListProvider {...{ isItem, state, setState, ...props }}>{children?.({ state, items: items ?? [] })}</ListProvider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n IconButton,\n type IconButtonProps,\n ListItem,\n ListItemDeleteButton,\n ListItemDragHandle,\n ListItemDragPreview,\n type ListItemProps,\n type ListItemRecord,\n ListItemTitle,\n ListItemWrapper,\n} from './ListItem';\nimport { ListRoot, type ListRootProps } from './ListRoot';\n\n// TODO(burdon): Multi-select model.\n// TODO(burdon): Key nav.\n// TODO(burdon): Animation.\n// TODO(burdon): Constrain axis.\n// TODO(burdon): Tree view.\n// TODO(burdon): Fix autoscroll while dragging.\n\n/**\n * Draggable list.\n * Ref: https://github.com/atlassian/pragmatic-drag-and-drop\n * Ref: https://github.com/alexreardon/pdnd-react-tailwind/blob/main/src/task.tsx\n */\nexport const List = {\n Root: ListRoot,\n Item: ListItem,\n ItemDragPreview: ListItemDragPreview,\n ItemWrapper: ListItemWrapper,\n ItemDragHandle: ListItemDragHandle,\n ItemDeleteButton: ListItemDeleteButton,\n ItemTitle: ListItemTitle,\n IconButton,\n};\n\ntype ListItem = ListItemRecord;\n\nexport type { ListRootProps, ListItemProps, IconButtonProps, ListItem };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Treegrid, type TreegridRootProps } from '@dxos/react-ui';\n\nimport { type TreeContextType, TreeProvider } from './TreeContext';\nimport { TreeItem, type TreeItemProps } from './TreeItem';\n\nexport type TreeProps<T = any> = { id: string } & TreeContextType &\n Partial<Pick<TreegridRootProps, 'gridTemplateColumns' | 'classNames'>> &\n Pick<TreeItemProps<T>, 'draggable' | 'renderColumns' | 'canDrop' | 'onOpenChange' | 'onSelect'>;\n\nexport const Tree = <T = any,>({\n id,\n getItems,\n getProps,\n isOpen,\n isCurrent,\n draggable = false,\n gridTemplateColumns = '[tree-row-start] 1fr min-content [tree-row-end]',\n classNames,\n renderColumns,\n canDrop,\n onOpenChange,\n onSelect,\n}: TreeProps<T>) => {\n const context = useMemo(\n () => ({\n getItems,\n getProps,\n isOpen,\n isCurrent,\n }),\n [getItems, getProps, isOpen, isCurrent],\n );\n const items = getItems();\n const path = useMemo(() => [id], [id]);\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={path}\n draggable={draggable}\n renderColumns={renderColumns}\n canDrop={canDrop}\n onOpenChange={onOpenChange}\n onSelect={onSelect}\n />\n ))}\n </TreeProvider>\n </Treegrid.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\nimport { type Label } from '@dxos/react-ui';\n\nexport type PropsFromTreeItem = {\n id: string;\n label: Label;\n parentOf?: string[];\n icon?: string;\n disabled?: boolean;\n className?: string;\n headingClassName?: string;\n testId?: string;\n};\n\nexport type TreeContextType<T = any> = {\n getItems: (parent?: T) => T[];\n getProps: (item: T, parent: string[]) => PropsFromTreeItem;\n isOpen: (path: string[], item: T) => boolean;\n isCurrent: (path: string[], item: T) => boolean;\n};\n\nconst TreeContext = createContext<null | TreeContextType>(null);\n\nexport const useTree = () => useContext(TreeContext) ?? raise(new Error('TreeContext not found'));\n\nexport const TreeProvider = TreeContext.Provider;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport {\n draggable as pragmaticDraggable,\n dropTargetForElements,\n} from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\n// https://github.com/atlassian/pragmatic-drag-and-drop/blob/main/packages/hitbox/constellation/index/about.mdx\nimport {\n attachInstruction,\n extractInstruction,\n type Instruction,\n type ItemMode,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\nimport React, { memo, useCallback, useEffect, useMemo, useRef, useState, type FC, type KeyboardEvent } from 'react';\n\nimport { S } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { Treegrid, TreeItem as NaturalTreeItem } from '@dxos/react-ui';\nimport {\n focusRing,\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, paddingIndendation } from './helpers';\n\ntype TreeItemState = 'idle' | 'dragging' | 'preview' | 'parent-of-instruction';\n\nconst hoverableDescriptionIcons =\n '[--icons-color:inherit] hover-hover:[--icons-color:var(--description-text)] hover-hover:hover:[--icons-color:inherit] focus-within:[--icons-color:inherit]';\n\nexport const TreeDataSchema = S.Struct({\n id: S.String,\n path: S.Array(S.String),\n item: S.Any,\n});\n\nexport type TreeData = S.Schema.Type<typeof TreeDataSchema>;\n\nexport const isTreeData = (data: unknown): data is TreeData => S.is(TreeDataSchema)(data);\n\nexport type TreeItemProps<T = any> = {\n item: T;\n path: string[];\n last: boolean;\n draggable?: boolean;\n renderColumns?: FC<{\n item: T;\n path: string[];\n open: boolean;\n menuOpen: boolean;\n setMenuOpen: (open: boolean) => void;\n }>;\n canDrop?: (source: TreeData, target: TreeData) => boolean;\n onOpenChange?: (params: { item: T; path: string[]; open: boolean }) => void;\n onSelect?: (params: { item: T; path: string[]; current: boolean; option: boolean }) => void;\n};\n\nexport const RawTreeItem = <T = any,>({\n item,\n path: _path,\n last,\n draggable,\n renderColumns: Columns,\n canDrop,\n onOpenChange,\n onSelect,\n}: TreeItemProps<T>) => {\n const { getItems, getProps, isOpen, isCurrent } = useTree();\n const items = getItems(item);\n const { id, label, parentOf, icon, disabled, className, headingClassName, testId } = getProps(item, _path);\n const path = useMemo(() => [..._path, id], [_path, id]);\n const open = isOpen(path, item);\n const current = isCurrent(path, item);\n const level = path.length - 2;\n const isBranch = !!parentOf;\n const mode: ItemMode = last ? 'last-in-group' : open ? 'expanded' : 'standard';\n const data = useMemo(() => ({ id, path, item }) satisfies TreeData, [id, path, item]);\n\n const rowRef = useRef<HTMLDivElement | null>(null);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n const openRef = useRef(false);\n const cancelExpandRef = useRef<NodeJS.Timeout | null>(null);\n const [_state, setState] = useState<TreeItemState>('idle');\n const [instruction, setInstruction] = useState<Instruction | null>(null);\n const [menuOpen, setMenuOpen] = useState(false);\n\n const cancelExpand = useCallback(() => {\n if (cancelExpandRef.current) {\n clearTimeout(cancelExpandRef.current);\n cancelExpandRef.current = null;\n }\n }, []);\n\n useEffect(() => {\n if (!draggable) {\n return;\n }\n\n invariant(buttonRef.current);\n\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about\n return combine(\n pragmaticDraggable({\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 dropTargetForElements({\n element: buttonRef.current,\n getData: ({ input, element }) => {\n return attachInstruction(data, {\n input,\n element,\n indentPerLevel: DEFAULT_INDENTATION,\n currentLevel: level,\n mode,\n block: isBranch ? [] : ['make-child'],\n });\n },\n canDrop: ({ source }) => {\n const _canDrop = canDrop ?? (() => true);\n return source.element !== buttonRef.current && _canDrop(source.data as TreeData, data);\n },\n getIsSticky: () => true,\n onDrag: ({ self, source }) => {\n const instruction = extractInstruction(self.data);\n\n if (source.data.id !== id) {\n if (instruction?.type === 'make-child' && isBranch && !open && !cancelExpandRef.current) {\n cancelExpandRef.current = setTimeout(() => {\n onOpenChange?.({ item, path, open: true });\n }, 500);\n }\n\n if (instruction?.type !== 'make-child') {\n cancelExpand();\n }\n\n setInstruction(instruction);\n } else if (instruction?.type === 'reparent') {\n // TODO(wittjosiah): This is not occurring in the current implementation.\n setInstruction(instruction);\n } else {\n setInstruction(null);\n }\n },\n onDragLeave: () => {\n cancelExpand();\n setInstruction(null);\n },\n onDrop: () => {\n cancelExpand();\n setInstruction(null);\n },\n }),\n );\n }, [draggable, item, id, mode, path, open, canDrop]);\n\n // Cancel expand on unmount.\n useEffect(() => () => cancelExpand(), [cancelExpand]);\n\n const handleOpenChange = useCallback(\n () => onOpenChange?.({ item, path, open: !open }),\n [onOpenChange, item, path, open],\n );\n\n const handleSelect = useCallback(\n (option = false) => {\n rowRef.current?.focus();\n onSelect?.({ item, path, current: !current, option });\n },\n [onSelect, item, path, current],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowRight':\n isBranch && !open && handleOpenChange();\n break;\n case 'ArrowLeft':\n isBranch && open && handleOpenChange();\n break;\n case ' ':\n handleSelect(event.altKey);\n break;\n }\n },\n [isBranch, open, handleOpenChange, handleSelect],\n );\n\n return (\n <>\n <Treegrid.Row\n ref={rowRef}\n key={id}\n id={id}\n aria-labelledby={`${id}__label`}\n parentOf={parentOf?.join(Treegrid.PARENT_OF_SEPARATOR)}\n classNames={mx(\n 'grid grid-cols-subgrid col-[tree-row] mt-[2px] aria-[current]:bg-input',\n hoverableControls,\n hoverableFocusedKeyboardControls,\n hoverableFocusedWithinControls,\n hoverableDescriptionIcons,\n ghostHover,\n focusRing,\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={paddingIndendation(level)}\n >\n <div role='none' className='flex items-center'>\n <TreeItemToggle open={open} isBranch={isBranch} onToggle={handleOpenChange} />\n <TreeItemHeading\n ref={buttonRef}\n label={label}\n icon={icon}\n className={headingClassName}\n disabled={disabled}\n current={current}\n onSelect={handleSelect}\n />\n </div>\n {Columns && <Columns item={item} path={path} open={open} menuOpen={menuOpen} setMenuOpen={setMenuOpen} />}\n {instruction && <NaturalTreeItem.DropIndicator instruction={instruction} gap={2} />}\n </Treegrid.Cell>\n </Treegrid.Row>\n {open &&\n items.map((item, index) => (\n <TreeItem\n key={item.id}\n item={item}\n path={path}\n last={index === items.length - 1}\n draggable={draggable}\n renderColumns={Columns}\n canDrop={canDrop}\n onOpenChange={onOpenChange}\n onSelect={onSelect}\n />\n ))}\n </>\n );\n};\n\nexport const TreeItem = memo(RawTreeItem) as FC<TreeItemProps>;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type KeyboardEvent, type MouseEvent, forwardRef, memo, useCallback } from 'react';\n\nimport { Button, Icon, toLocalizedString, useTranslation, type Label } from '@dxos/react-ui';\nimport { TextTooltip } from '@dxos/react-ui-text-tooltip';\nimport { mx } from '@dxos/react-ui-theme';\n\n// TODO(wittjosiah): Consider whether there should be a separate disabled prop which was visually distinct\n// rather than just making the item unselectable.\nexport type NavTreeItemHeadingProps = {\n label: Label;\n icon?: string;\n className?: string;\n disabled?: boolean;\n current?: boolean;\n onSelect?: (option: boolean) => void;\n};\n\nexport const TreeItemHeading = memo(\n forwardRef<HTMLButtonElement, NavTreeItemHeadingProps>(\n ({ label, icon, className, disabled, current, onSelect }, forwardedRef) => {\n const { t } = useTranslation();\n\n const handleSelect = useCallback(\n (event: MouseEvent) => {\n onSelect?.(event.altKey);\n },\n [onSelect],\n );\n\n const handleButtonKeydown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n onSelect?.(event.altKey);\n }\n },\n [onSelect],\n );\n\n return (\n <TextTooltip\n text={toLocalizedString(label, t)}\n side='bottom'\n truncateQuery='span[data-tooltip]'\n onlyWhenTruncating\n asChild\n ref={forwardedRef}\n >\n {/* TODO(wittjosiah): Class precedence. See #8149. */}\n <Button\n data-testid='treeItem.heading'\n variant='ghost'\n density='fine'\n classNames={mx(\n 'grow gap-2 !pis-0.5 hover:!bg-transparent dark:hover:!bg-transparent',\n 'disabled:!cursor-default disabled:!opacity-100',\n className,\n )}\n disabled={disabled}\n onClick={handleSelect}\n onKeyDown={handleButtonKeydown}\n {...(current && { 'aria-current': 'location' })}\n >\n {icon && <Icon icon={icon ?? 'ph--placeholder--regular'} size={4} classNames='is-[1em] bs-[1em] mlb-1' />}\n <span className='flex-1 is-0 truncate text-start text-sm font-normal' data-tooltip>\n {toLocalizedString(label, t)}\n </span>\n </Button>\n </TextTooltip>\n );\n },\n ),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, memo } from 'react';\n\nimport { Button, Icon } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type TreeItemToggleProps = {\n open?: boolean;\n isBranch?: boolean;\n onToggle?: () => void;\n};\n\nexport const TreeItemToggle = memo(\n forwardRef<HTMLButtonElement, TreeItemToggleProps>(({ open, isBranch, 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-1', !isBranch && 'invisible')}\n onClick={onToggle}\n >\n <Icon\n icon='ph--caret-right--regular'\n size={3}\n classNames={mx('transition duration-200', open && 'rotate-90')}\n />\n </Button>\n );\n }),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const DEFAULT_INDENTATION = 8;\n\nexport const paddingIndendation = (level: number, indentation = DEFAULT_INDENTATION) => ({\n paddingInlineStart: `${(level - 1) * indentation}px`,\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_adapter", "import_closest_edge", "import_react_context", "import_react", "import_react_ui", "import_combine", "import_invariant", "import_react_ui_theme", "LIST_NAME", "ListProvider", "useListContext", "createContext", "defaultGetId", "item", "id", "ListRoot", "classNames", "children", "items", "isItem", "getId", "onMove", "props", "isEqual", "useCallback", "a", "b", "idA", "idB", "undefined", "state", "setState", "useState", "idle", "useEffect", "monitorForElements", "canMonitor", "source", "data", "onDrop", "location", "target", "current", "dropTargets", "sourceData", "targetData", "sourceIdx", "findIndex", "targetIdx", "closestEdgeOfTarget", "extractClosestEdge", "destinationIndex", "getReorderDestinationIndex", "startIndex", "indexOfTarget", "axis", "React", "type", "stateStyles", "defaultContext", "LIST_ITEM_NAME", "ListItemProvider", "useListItemContext", "ListItem", "dragPreview", "setRootState", "ref", "useRef", "dragHandleRef", "element", "invariant", "combine", "draggable", "dragHandle", "getInitialData", "onGenerateDragPreview", "nativeSetDragImage", "rect", "getBoundingClientRect", "setCustomNativeDragPreview", "getOffset", "container", "height", "x", "y", "render", "style", "width", "onDragStart", "dropTargetForElements", "canDrop", "getData", "input", "attachClosestEdge", "allowedEdges", "getIsSticky", "onDragEnter", "self", "closestEdge", "onDrag", "onDragLeave", "div", "className", "role", "mx", "NaturalListItem", "DropIndicator", "edge", "IconButton", "forwardRef", "icon", "forwardedRef", "button", "Icon", "size", "ListItemDeleteButton", "autoHide", "disabled", "isDisabled", "ListItemDragHandle", "ListItemDragPreview", "createPortal", "ListItemWrapper", "ListItemTitle", "List", "Root", "Item", "ItemDragPreview", "ItemWrapper", "ItemDragHandle", "ItemDeleteButton", "ItemTitle", "TreeContext", "useTree", "useContext", "raise", "Error", "TreeProvider", "Provider", "TreeItemHeading", "memo", "label", "onSelect", "t", "useTranslation", "handleSelect", "event", "altKey", "handleButtonKeydown", "key", "preventDefault", "stopPropagation", "TextTooltip", "text", "toLocalizedString", "side", "truncateQuery", "onlyWhenTruncating", "asChild", "Button", "data-testid", "variant", "density", "onClick", "onKeyDown", "span", "data-tooltip", "TreeItemToggle", "open", "isBranch", "onToggle", "aria-expanded", "DEFAULT_INDENTATION", "paddingIndendation", "level", "indentation", "paddingInlineStart", "hoverableDescriptionIcons", "TreeDataSchema", "S", "Struct", "String", "path", "Array", "Any", "isTreeData", "is", "RawTreeItem", "_path", "last", "renderColumns", "Columns", "onOpenChange", "getItems", "getProps", "isOpen", "isCurrent", "parentOf", "headingClassName", "testId", "useMemo", "length", "mode", "rowRef", "buttonRef", "openRef", "cancelExpandRef", "_state", "instruction", "setInstruction", "menuOpen", "setMenuOpen", "cancelExpand", "clearTimeout", "pragmaticDraggable", "attachInstruction", "indentPerLevel", "currentLevel", "block", "_canDrop", "extractInstruction", "setTimeout", "handleOpenChange", "option", "focus", "handleKeyDown", "Treegrid", "Row", "aria-labelledby", "join", "PARENT_OF_SEPARATOR", "hoverableControls", "hoverableFocusedKeyboardControls", "hoverableFocusedWithinControls", "ghostHover", "focusRing", "data-itemid", "aria-current", "onContextMenu", "Cell", "indent", "NaturalTreeItem", "gap", "map", "index", "TreeItem", "Tree", "gridTemplateColumns", "context", "value"]
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview';\nimport {\n type Edge,\n attachClosestEdge,\n extractClosestEdge,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { createContext } from '@radix-ui/react-context';\nimport React, {\n type ComponentProps,\n type HTMLAttributes,\n type MutableRefObject,\n type PropsWithChildren,\n type ReactNode,\n forwardRef,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { invariant } from '@dxos/invariant';\nimport { Icon, type ThemedClassName, ListItem as NaturalListItem } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { useListContext } from './ListRoot';\n\nexport type ListItemRecord = {};\n\nexport type ItemState =\n | {\n type: 'idle';\n }\n | {\n type: 'preview';\n container: HTMLElement;\n }\n | {\n type: 'is-dragging';\n }\n | {\n type: 'is-dragging-over';\n closestEdge: Edge | null;\n };\n\nexport const idle: ItemState = { type: 'idle' };\n\nconst stateStyles: { [Key in ItemState['type']]?: HTMLAttributes<HTMLDivElement>['className'] } = {\n 'is-dragging': 'opacity-50',\n};\n\ntype ListItemContext<T extends ListItemRecord> = {\n item: T;\n dragHandleRef: MutableRefObject<HTMLElement | null>;\n};\n\n/**\n * Default context defined for ListItemDragPreview, which is defined outside of ListItem.\n */\nconst defaultContext: ListItemContext<any> = {} as any;\n\nconst LIST_ITEM_NAME = 'ListItem';\n\nexport const [ListItemProvider, useListItemContext] = createContext<ListItemContext<any>>(\n LIST_ITEM_NAME,\n defaultContext,\n);\n\nexport type ListItemProps<T extends ListItemRecord> = ThemedClassName<\n PropsWithChildren<{\n item: T;\n }> &\n HTMLAttributes<HTMLDivElement>\n>;\n\n/**\n * Draggable list item.\n */\nexport const ListItem = <T extends ListItemRecord>({ children, classNames, item, ...props }: ListItemProps<T>) => {\n const { isItem, dragPreview, setState: setRootState } = useListContext(LIST_ITEM_NAME);\n const ref = useRef<HTMLDivElement | null>(null);\n const dragHandleRef = useRef<HTMLElement | null>(null);\n const [state, setState] = useState<ItemState>(idle);\n useEffect(() => {\n const element = ref.current;\n invariant(element);\n return combine(\n //\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about#draggable\n //\n draggable({\n element,\n dragHandle: dragHandleRef.current!,\n getInitialData: () => item,\n onGenerateDragPreview: dragPreview\n ? ({ nativeSetDragImage, source }) => {\n const rect = source.element.getBoundingClientRect();\n setCustomNativeDragPreview({\n nativeSetDragImage,\n getOffset: ({ container }) => {\n const { height } = container.getBoundingClientRect();\n return {\n x: 20,\n y: height / 2,\n };\n },\n render: ({ container }) => {\n container.style.width = rect.width + 'px';\n setState({ type: 'preview', container });\n setRootState({ type: 'preview', container, item });\n return () => {}; // TODO(burdon): Cleanup.\n },\n });\n }\n : undefined,\n onDragStart: () => {\n setState({ type: 'is-dragging' });\n setRootState({ type: 'is-dragging', item });\n },\n onDrop: () => {\n setState(idle);\n setRootState(idle);\n },\n }),\n\n //\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about#drop-target-for-elements\n //\n dropTargetForElements({\n element,\n canDrop: ({ source }) => {\n return source.element !== element && isItem(source.data);\n },\n getData: ({ input }) => {\n return attachClosestEdge(item, { element, input, allowedEdges: ['top', 'bottom'] });\n },\n getIsSticky: () => true,\n onDragEnter: ({ self }) => {\n const closestEdge = extractClosestEdge(self.data);\n setState({ type: 'is-dragging-over', closestEdge });\n },\n onDrag: ({ self }) => {\n const closestEdge = extractClosestEdge(self.data);\n setState((current) => {\n if (current.type === 'is-dragging-over' && current.closestEdge === closestEdge) {\n return current;\n }\n return { type: 'is-dragging-over', closestEdge };\n });\n },\n onDragLeave: () => {\n setState(idle);\n },\n onDrop: () => {\n setState(idle);\n },\n }),\n );\n }, [item]);\n\n return (\n <ListItemProvider item={item} dragHandleRef={dragHandleRef}>\n <div role='none' className='relative'>\n <div\n ref={ref}\n role='listitem'\n className={mx('flex overflow-hidden', classNames, stateStyles[state.type])}\n {...props}\n >\n {children}\n </div>\n {state.type === 'is-dragging-over' && state.closestEdge && (\n <NaturalListItem.DropIndicator edge={state.closestEdge} />\n )}\n </div>\n </ListItemProvider>\n );\n};\n\n//\n// List item components\n//\n\nexport type IconButtonProps = ThemedClassName<ComponentProps<'button'>> & { icon: string };\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ classNames, icon, ...props }, forwardedRef) => {\n return (\n <button ref={forwardedRef} className={mx('flex items-center justify-center', classNames)} {...props}>\n <Icon icon={icon} classNames='cursor-pointer' size={4} />\n </button>\n );\n },\n);\n\nexport const ListItemDeleteButton = ({\n autoHide = true,\n classNames,\n disabled,\n ...props\n}: Omit<IconButtonProps, 'icon'> & { autoHide?: boolean }) => {\n const { state } = useListContext('DELETE_BUTTON');\n const isDisabled = state.type !== 'idle' || disabled;\n return (\n <IconButton\n icon='ph--x--regular'\n disabled={isDisabled}\n classNames={[classNames, autoHide && disabled && 'hidden']}\n {...props}\n />\n );\n};\n\nexport const ListItemDragHandle = () => {\n const { dragHandleRef } = useListItemContext('DRAG_HANDLE');\n return <IconButton ref={dragHandleRef as any} icon='ph--dots-six-vertical--regular' />;\n};\n\nexport const ListItemDragPreview = <T extends ListItemRecord>({\n children,\n}: {\n children: ({ item }: { item: T }) => ReactNode;\n}) => {\n const { state } = useListContext('DRAG_PREVIEW');\n return state?.type === 'preview' ? createPortal(children({ item: state.item }), state.container) : null;\n};\n\nexport const ListItemWrapper = ({ classNames, children }: ThemedClassName<PropsWithChildren>) => (\n <div className={mx('flex is-full gap-2', classNames)}>{children}</div>\n);\n\nexport const ListItemTitle = ({\n classNames,\n children,\n ...props\n}: ThemedClassName<PropsWithChildren<ComponentProps<'div'>>>) => (\n <div className={mx('flex grow items-center truncate', classNames)} {...props}>\n {children}\n </div>\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport { extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';\nimport { getReorderDestinationIndex } from '@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type ReactNode, useCallback, useEffect, useState } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\n\nimport { idle, type ItemState, type ListItemRecord } from './ListItem';\n\ntype ListContext<T extends ListItemRecord> = {\n isItem: (item: any) => boolean;\n getId?: (item: T) => string; // TODO(burdon): Require if T doesn't conform to type.\n dragPreview?: boolean;\n state: ItemState & { item?: T };\n setState: (state: ItemState & { item?: T }) => void;\n};\n\nconst LIST_NAME = 'List';\n\nexport const [ListProvider, useListContext] = createContext<ListContext<any>>(LIST_NAME);\n\nexport type ListRendererProps<T extends ListItemRecord> = {\n state: ListContext<T>['state'];\n items: T[];\n};\n\nexport type ListRootProps<T extends ListItemRecord> = ThemedClassName<{\n children?: (props: ListRendererProps<T>) => ReactNode;\n items?: T[];\n onMove?: (fromIndex: number, toIndex: number) => void;\n}> &\n Pick<ListContext<T>, 'isItem' | 'getId' | 'dragPreview'>;\n\nconst defaultGetId = <T extends ListItemRecord>(item: T) => (item as any)?.id;\n\nexport const ListRoot = <T extends ListItemRecord>({\n classNames,\n children,\n items,\n isItem,\n getId = defaultGetId,\n onMove,\n ...props\n}: ListRootProps<T>) => {\n const isEqual = useCallback(\n (a: T, b: T) => {\n const idA = getId?.(a);\n const idB = getId?.(b);\n\n if (idA !== undefined && idB !== undefined) {\n return idA === idB;\n } else {\n // Fallback for primitive values or when getId fails.\n // NOTE(ZaymonFC): After drag and drop, pragmatic internally serializes drop targets which breaks reference equality.\n // You must provide an `getId` function that returns a stable identifier for your items.\n return a === b;\n }\n },\n [getId],\n );\n\n const [state, setState] = useState<ListContext<T>['state']>(idle);\n useEffect(() => {\n if (!items) {\n return;\n }\n\n return monitorForElements({\n canMonitor: ({ source }) => isItem(source.data),\n onDrop: ({ location, source }) => {\n const target = location.current.dropTargets[0];\n if (!target) {\n return;\n }\n\n const sourceData = source.data;\n const targetData = target.data;\n\n if (!isItem(sourceData) || !isItem(targetData)) {\n return;\n }\n\n const sourceIdx = items.findIndex((item) => isEqual(item, sourceData as T));\n const targetIdx = items.findIndex((item) => isEqual(item, targetData as T));\n if (targetIdx < 0 || sourceIdx < 0) {\n return;\n }\n const closestEdgeOfTarget = extractClosestEdge(targetData);\n const destinationIndex = getReorderDestinationIndex({\n closestEdgeOfTarget,\n startIndex: sourceIdx,\n indexOfTarget: targetIdx,\n axis: 'vertical',\n });\n\n onMove?.(sourceIdx, destinationIndex);\n },\n });\n }, [items, isEqual, onMove]);\n\n return (\n <ListProvider {...{ isItem, state, setState, ...props }}>{children?.({ state, items: items ?? [] })}</ListProvider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n IconButton,\n type IconButtonProps,\n ListItem,\n ListItemDeleteButton,\n ListItemDragHandle,\n ListItemDragPreview,\n type ListItemProps,\n type ListItemRecord,\n ListItemTitle,\n ListItemWrapper,\n} from './ListItem';\nimport { ListRoot, type ListRootProps } from './ListRoot';\n\n// TODO(burdon): Multi-select model.\n// TODO(burdon): Key nav.\n// TODO(burdon): Animation.\n// TODO(burdon): Constrain axis.\n// TODO(burdon): Tree view.\n// TODO(burdon): Fix autoscroll while dragging.\n\n/**\n * Draggable list.\n * Ref: https://github.com/atlassian/pragmatic-drag-and-drop\n * Ref: https://github.com/alexreardon/pdnd-react-tailwind/blob/main/src/task.tsx\n */\nexport const List = {\n Root: ListRoot,\n Item: ListItem,\n ItemDragPreview: ListItemDragPreview,\n ItemWrapper: ListItemWrapper,\n ItemDragHandle: ListItemDragHandle,\n ItemDeleteButton: ListItemDeleteButton,\n ItemTitle: ListItemTitle,\n IconButton,\n};\n\ntype ListItem = ListItemRecord;\n\nexport type { ListRootProps, ListItemProps, IconButtonProps, ListItem };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { Treegrid, type TreegridRootProps } from '@dxos/react-ui';\n\nimport { type TreeContextType, TreeProvider } from './TreeContext';\nimport { TreeItem, type TreeItemProps } from './TreeItem';\n\nexport type TreeProps<T = any> = { root?: T; path?: string[]; id: string } & TreeContextType &\n Partial<Pick<TreegridRootProps, 'gridTemplateColumns' | 'classNames'>> &\n Pick<TreeItemProps<T>, 'draggable' | 'renderColumns' | 'canDrop' | 'onOpenChange' | 'onSelect' | 'levelOffset'>;\n\nexport const Tree = <T = any,>({\n root,\n path,\n id,\n getItems,\n getProps,\n isOpen,\n isCurrent,\n draggable = false,\n gridTemplateColumns = '[tree-row-start] 1fr min-content [tree-row-end]',\n classNames,\n renderColumns,\n canDrop,\n onOpenChange,\n onSelect,\n levelOffset,\n}: TreeProps<T>) => {\n const context = useMemo(\n () => ({\n getItems,\n getProps,\n isOpen,\n isCurrent,\n }),\n [getItems, getProps, isOpen, isCurrent],\n );\n const items = getItems(root);\n const treePath = useMemo(() => (path ? [...path, id] : [id]), [id, path]);\n\n return (\n <Treegrid.Root gridTemplateColumns={gridTemplateColumns} classNames={classNames}>\n <TreeProvider value={context}>\n {items.map((item, index) => (\n <TreeItem\n key={item.id}\n item={item}\n last={index === items.length - 1}\n path={treePath}\n levelOffset={levelOffset}\n draggable={draggable}\n renderColumns={renderColumns}\n canDrop={canDrop}\n onOpenChange={onOpenChange}\n onSelect={onSelect}\n />\n ))}\n </TreeProvider>\n </Treegrid.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\nimport { type Label } from '@dxos/react-ui';\n\nexport type PropsFromTreeItem = {\n id: string;\n label: Label;\n parentOf?: string[];\n icon?: string;\n disabled?: boolean;\n className?: string;\n headingClassName?: string;\n testId?: string;\n};\n\nexport type TreeContextType<T = any> = {\n getItems: (parent?: T) => T[];\n getProps: (item: T, parent: string[]) => PropsFromTreeItem;\n isOpen: (path: string[], item: T) => boolean;\n isCurrent: (path: string[], item: T) => boolean;\n};\n\nconst TreeContext = createContext<null | TreeContextType>(null);\n\nexport const useTree = () => useContext(TreeContext) ?? raise(new Error('TreeContext not found'));\n\nexport const TreeProvider = TreeContext.Provider;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport {\n draggable as pragmaticDraggable,\n dropTargetForElements,\n} from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\n// https://github.com/atlassian/pragmatic-drag-and-drop/blob/main/packages/hitbox/constellation/index/about.mdx\nimport {\n attachInstruction,\n extractInstruction,\n type Instruction,\n type ItemMode,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\nimport React, { memo, useCallback, useEffect, useMemo, useRef, useState, type FC, type KeyboardEvent } from 'react';\n\nimport { S } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { Treegrid, TreeItem as NaturalTreeItem } from '@dxos/react-ui';\nimport {\n ghostHover,\n hoverableControls,\n hoverableFocusedKeyboardControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\n\nimport { useTree } from './TreeContext';\nimport { TreeItemHeading } from './TreeItemHeading';\nimport { TreeItemToggle } from './TreeItemToggle';\nimport { DEFAULT_INDENTATION, paddingIndentation } from './helpers';\n\ntype TreeItemState = 'idle' | 'dragging' | 'preview' | 'parent-of-instruction';\n\nconst hoverableDescriptionIcons =\n '[--icons-color:inherit] hover-hover:[--icons-color:var(--description-text)] hover-hover:hover:[--icons-color:inherit] focus-within:[--icons-color:inherit]';\n\nexport const TreeDataSchema = S.Struct({\n id: S.String,\n path: S.Array(S.String),\n item: S.Any,\n});\n\nexport type TreeData = S.Schema.Type<typeof TreeDataSchema>;\n\nexport const isTreeData = (data: unknown): data is TreeData => S.is(TreeDataSchema)(data);\n\nexport type TreeItemProps<T = any> = {\n item: T;\n path: string[];\n levelOffset?: number;\n last: boolean;\n draggable?: boolean;\n renderColumns?: FC<{\n item: T;\n path: string[];\n open: boolean;\n menuOpen: boolean;\n setMenuOpen: (open: boolean) => void;\n }>;\n canDrop?: (source: TreeData, target: TreeData) => boolean;\n onOpenChange?: (params: { item: T; path: string[]; open: boolean }) => void;\n onSelect?: (params: { item: T; path: string[]; current: boolean; option: boolean }) => void;\n};\n\nexport const RawTreeItem = <T = any,>({\n item,\n path: _path,\n last,\n draggable,\n renderColumns: Columns,\n canDrop,\n onOpenChange,\n onSelect,\n levelOffset = 2,\n}: TreeItemProps<T>) => {\n const { getItems, getProps, isOpen, isCurrent } = useTree();\n const items = getItems(item);\n const { id, label, parentOf, icon, disabled, className, headingClassName, testId } = getProps(item, _path);\n const path = useMemo(() => [..._path, id], [_path, id]);\n const open = isOpen(path, item);\n const current = isCurrent(path, item);\n const level = path.length - levelOffset;\n const isBranch = !!parentOf;\n const mode: ItemMode = last ? 'last-in-group' : open ? 'expanded' : 'standard';\n const data = useMemo(() => ({ id, path, item }) satisfies TreeData, [id, path, item]);\n\n const rowRef = useRef<HTMLDivElement | null>(null);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n const openRef = useRef(false);\n const cancelExpandRef = useRef<NodeJS.Timeout | null>(null);\n const [_state, setState] = useState<TreeItemState>('idle');\n const [instruction, setInstruction] = useState<Instruction | null>(null);\n const [menuOpen, setMenuOpen] = useState(false);\n\n const cancelExpand = useCallback(() => {\n if (cancelExpandRef.current) {\n clearTimeout(cancelExpandRef.current);\n cancelExpandRef.current = null;\n }\n }, []);\n\n useEffect(() => {\n if (!draggable) {\n return;\n }\n\n invariant(buttonRef.current);\n\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about\n return combine(\n pragmaticDraggable({\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 dropTargetForElements({\n element: buttonRef.current,\n getData: ({ input, element }) => {\n return attachInstruction(data, {\n input,\n element,\n indentPerLevel: DEFAULT_INDENTATION,\n currentLevel: level,\n mode,\n block: isBranch ? [] : ['make-child'],\n });\n },\n canDrop: ({ source }) => {\n const _canDrop = canDrop ?? (() => true);\n return source.element !== buttonRef.current && _canDrop(source.data as TreeData, data);\n },\n getIsSticky: () => true,\n onDrag: ({ self, source }) => {\n const instruction = extractInstruction(self.data);\n\n if (source.data.id !== id) {\n if (instruction?.type === 'make-child' && isBranch && !open && !cancelExpandRef.current) {\n cancelExpandRef.current = setTimeout(() => {\n onOpenChange?.({ item, path, open: true });\n }, 500);\n }\n\n if (instruction?.type !== 'make-child') {\n cancelExpand();\n }\n\n setInstruction(instruction);\n } else if (instruction?.type === 'reparent') {\n // TODO(wittjosiah): This is not occurring in the current implementation.\n setInstruction(instruction);\n } else {\n setInstruction(null);\n }\n },\n onDragLeave: () => {\n cancelExpand();\n setInstruction(null);\n },\n onDrop: () => {\n cancelExpand();\n setInstruction(null);\n },\n }),\n );\n }, [draggable, item, id, mode, path, open, canDrop]);\n\n // Cancel expand on unmount.\n useEffect(() => () => cancelExpand(), [cancelExpand]);\n\n const handleOpenChange = useCallback(\n () => onOpenChange?.({ item, path, open: !open }),\n [onOpenChange, item, path, open],\n );\n\n const handleSelect = useCallback(\n (option = false) => {\n rowRef.current?.focus();\n onSelect?.({ item, path, current: !current, option });\n },\n [onSelect, item, path, current],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowRight':\n isBranch && !open && handleOpenChange();\n break;\n case 'ArrowLeft':\n isBranch && open && handleOpenChange();\n break;\n case ' ':\n handleSelect(event.altKey);\n break;\n }\n },\n [isBranch, open, handleOpenChange, handleSelect],\n );\n\n return (\n <>\n <Treegrid.Row\n ref={rowRef}\n key={id}\n id={id}\n aria-labelledby={`${id}__label`}\n parentOf={parentOf?.join(Treegrid.PARENT_OF_SEPARATOR)}\n classNames={mx(\n 'grid grid-cols-subgrid col-[tree-row] mbs-0.5 aria-[current]:bg-input',\n hoverableControls,\n hoverableFocusedKeyboardControls,\n hoverableFocusedWithinControls,\n hoverableDescriptionIcons,\n ghostHover,\n className,\n )}\n data-itemid={id}\n data-testid={testId}\n // NOTE(thure): This is intentionally an empty string to for descendents to select by in the CSS\n // without alerting the user (except for in the correct link element). See also:\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current#description\n aria-current={current ? ('' as 'page') : undefined}\n onKeyDown={handleKeyDown}\n onContextMenu={(event) => {\n event.preventDefault();\n setMenuOpen(true);\n }}\n >\n <Treegrid.Cell\n indent\n classNames='relative grid grid-cols-subgrid col-[tree-row]'\n style={paddingIndentation(level)}\n >\n <div role='none' className='flex items-center'>\n <TreeItemToggle open={open} isBranch={isBranch} onToggle={handleOpenChange} />\n <TreeItemHeading\n ref={buttonRef}\n label={label}\n icon={icon}\n className={headingClassName}\n disabled={disabled}\n current={current}\n onSelect={handleSelect}\n />\n </div>\n {Columns && <Columns item={item} path={path} open={open} menuOpen={menuOpen} setMenuOpen={setMenuOpen} />}\n {instruction && <NaturalTreeItem.DropIndicator instruction={instruction} gap={2} />}\n </Treegrid.Cell>\n </Treegrid.Row>\n {open &&\n items.map((item, index) => (\n <TreeItem\n key={item.id}\n item={item}\n path={path}\n last={index === items.length - 1}\n draggable={draggable}\n renderColumns={Columns}\n canDrop={canDrop}\n onOpenChange={onOpenChange}\n onSelect={onSelect}\n />\n ))}\n </>\n );\n};\n\nexport const TreeItem = memo(RawTreeItem) as FC<TreeItemProps>;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type KeyboardEvent, type MouseEvent, forwardRef, memo, useCallback } from 'react';\n\nimport { Button, Icon, toLocalizedString, useTranslation, type Label } from '@dxos/react-ui';\nimport { TextTooltip } from '@dxos/react-ui-text-tooltip';\nimport { mx } from '@dxos/react-ui-theme';\n\n// TODO(wittjosiah): Consider whether there should be a separate disabled prop which was visually distinct\n// rather than just making the item unselectable.\nexport type NavTreeItemHeadingProps = {\n label: Label;\n icon?: string;\n className?: string;\n disabled?: boolean;\n current?: boolean;\n onSelect?: (option: boolean) => void;\n};\n\nexport const TreeItemHeading = memo(\n forwardRef<HTMLButtonElement, NavTreeItemHeadingProps>(\n ({ label, icon, className, disabled, current, onSelect }, forwardedRef) => {\n const { t } = useTranslation();\n\n const handleSelect = useCallback(\n (event: MouseEvent) => {\n onSelect?.(event.altKey);\n },\n [onSelect],\n );\n\n const handleButtonKeydown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n onSelect?.(event.altKey);\n }\n },\n [onSelect],\n );\n\n return (\n <TextTooltip\n text={toLocalizedString(label, t)}\n side='bottom'\n truncateQuery='span[data-tooltip]'\n onlyWhenTruncating\n asChild\n ref={forwardedRef}\n >\n <Button\n data-testid='treeItem.heading'\n variant='ghost'\n density='fine'\n classNames={mx(\n 'grow gap-2 pis-0.5 hover:bg-transparent dark:hover:bg-transparent',\n 'disabled:cursor-default disabled:opacity-100',\n className,\n )}\n disabled={disabled}\n onClick={handleSelect}\n onKeyDown={handleButtonKeydown}\n {...(current && { 'aria-current': 'location' })}\n >\n {icon && <Icon icon={icon ?? 'ph--placeholder--regular'} size={4} classNames='is-[1em] bs-[1em] mlb-1' />}\n <span className='flex-1 is-0 truncate text-start text-sm font-normal' data-tooltip>\n {toLocalizedString(label, t)}\n </span>\n </Button>\n </TextTooltip>\n );\n },\n ),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, memo } from 'react';\n\nimport { Button, Icon } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type TreeItemToggleProps = {\n open?: boolean;\n isBranch?: boolean;\n onToggle?: () => void;\n hidden?: boolean;\n};\n\nexport const TreeItemToggle = memo(\n forwardRef<HTMLButtonElement, TreeItemToggleProps>(({ open, isBranch, hidden, onToggle }, forwardedRef) => {\n return (\n <Button\n ref={forwardedRef}\n data-testid='treeItem.toggle'\n aria-expanded={open}\n variant='ghost'\n density='fine'\n classNames={mx('is-4 dx-focus-ring-inset pli-0', hidden ? 'hidden' : !isBranch && 'invisible')}\n onClick={onToggle}\n >\n <Icon\n icon='ph--caret-right--regular'\n size={3}\n classNames={mx('transition duration-200', open && 'rotate-90')}\n />\n </Button>\n );\n }),\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const DEFAULT_INDENTATION = 8;\n\nexport const paddingIndentation = (level: number, indentation = DEFAULT_INDENTATION) => ({\n paddingInlineStart: `${(level - 1) * indentation}px`,\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_adapter", "import_closest_edge", "import_react_context", "import_react", "import_react_ui", "import_combine", "import_invariant", "import_react_ui_theme", "LIST_NAME", "ListProvider", "useListContext", "createContext", "defaultGetId", "item", "id", "ListRoot", "classNames", "children", "items", "isItem", "getId", "onMove", "props", "isEqual", "useCallback", "a", "b", "idA", "idB", "undefined", "state", "setState", "useState", "idle", "useEffect", "monitorForElements", "canMonitor", "source", "data", "onDrop", "location", "target", "current", "dropTargets", "sourceData", "targetData", "sourceIdx", "findIndex", "targetIdx", "closestEdgeOfTarget", "extractClosestEdge", "destinationIndex", "getReorderDestinationIndex", "startIndex", "indexOfTarget", "axis", "React", "type", "stateStyles", "defaultContext", "LIST_ITEM_NAME", "ListItemProvider", "useListItemContext", "ListItem", "dragPreview", "setRootState", "ref", "useRef", "dragHandleRef", "element", "invariant", "combine", "draggable", "dragHandle", "getInitialData", "onGenerateDragPreview", "nativeSetDragImage", "rect", "getBoundingClientRect", "setCustomNativeDragPreview", "getOffset", "container", "height", "x", "y", "render", "style", "width", "onDragStart", "dropTargetForElements", "canDrop", "getData", "input", "attachClosestEdge", "allowedEdges", "getIsSticky", "onDragEnter", "self", "closestEdge", "onDrag", "onDragLeave", "div", "role", "className", "mx", "NaturalListItem", "DropIndicator", "edge", "IconButton", "forwardRef", "icon", "forwardedRef", "button", "Icon", "size", "ListItemDeleteButton", "autoHide", "disabled", "isDisabled", "ListItemDragHandle", "ListItemDragPreview", "createPortal", "ListItemWrapper", "ListItemTitle", "List", "Root", "Item", "ItemDragPreview", "ItemWrapper", "ItemDragHandle", "ItemDeleteButton", "ItemTitle", "TreeContext", "useTree", "useContext", "raise", "Error", "TreeProvider", "Provider", "TreeItemHeading", "memo", "label", "onSelect", "t", "useTranslation", "handleSelect", "event", "altKey", "handleButtonKeydown", "key", "preventDefault", "stopPropagation", "TextTooltip", "text", "toLocalizedString", "side", "truncateQuery", "onlyWhenTruncating", "asChild", "Button", "data-testid", "variant", "density", "onClick", "onKeyDown", "span", "data-tooltip", "TreeItemToggle", "open", "isBranch", "hidden", "onToggle", "aria-expanded", "DEFAULT_INDENTATION", "paddingIndentation", "level", "indentation", "paddingInlineStart", "hoverableDescriptionIcons", "TreeDataSchema", "S", "Struct", "String", "path", "Array", "Any", "isTreeData", "is", "RawTreeItem", "_path", "last", "renderColumns", "Columns", "onOpenChange", "levelOffset", "getItems", "getProps", "isOpen", "isCurrent", "parentOf", "headingClassName", "testId", "useMemo", "length", "mode", "rowRef", "buttonRef", "openRef", "cancelExpandRef", "_state", "instruction", "setInstruction", "menuOpen", "setMenuOpen", "cancelExpand", "clearTimeout", "pragmaticDraggable", "attachInstruction", "indentPerLevel", "currentLevel", "block", "_canDrop", "extractInstruction", "setTimeout", "handleOpenChange", "option", "focus", "handleKeyDown", "Treegrid", "Row", "aria-labelledby", "join", "PARENT_OF_SEPARATOR", "hoverableControls", "hoverableFocusedKeyboardControls", "hoverableFocusedWithinControls", "ghostHover", "data-itemid", "aria-current", "onContextMenu", "Cell", "indent", "NaturalTreeItem", "gap", "map", "index", "TreeItem", "Tree", "root", "gridTemplateColumns", "context", "treePath", "value"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/ui/react-ui-list/src/components/List/ListRoot.tsx":{"bytes":10900,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/List/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/ListItem.tsx":{"bytes":24357,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/List/ListRoot.tsx","kind":"import-statement","original":"./ListRoot"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/List.tsx":{"bytes":3478,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/ListItem.tsx","kind":"import-statement","original":"./ListItem"},{"path":"packages/ui/react-ui-list/src/components/List/ListRoot.tsx","kind":"import-statement","original":"./ListRoot"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/index.ts":{"bytes":505,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/List.tsx","kind":"import-statement","original":"./List"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx":{"bytes":2214,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx":{"bytes":7754,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-text-tooltip","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx":{"bytes":3194,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/helpers.ts":{"bytes":1223,"imports":[],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx":{"bytes":31446,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx","kind":"import-statement","original":"./TreeItemHeading"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx","kind":"import-statement","original":"./TreeItemToggle"},{"path":"packages/ui/react-ui-list/src/components/Tree/helpers.ts","kind":"import-statement","original":"./helpers"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/Tree.tsx":{"bytes":5361,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx","kind":"import-statement","original":"./TreeItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/index.ts":{"bytes":692,"imports":[{"path":"packages/ui/react-ui-list/src/components/Tree/Tree.tsx","kind":"import-statement","original":"./Tree"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx","kind":"import-statement","original":"./TreeItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/index.ts":{"bytes":580,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/index.ts","kind":"import-statement","original":"./List"},{"path":"packages/ui/react-ui-list/src/components/Tree/index.ts","kind":"import-statement","original":"./Tree"}],"format":"esm"},"packages/ui/react-ui-list/src/index.ts":{"bytes":503,"imports":[{"path":"packages/ui/react-ui-list/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-list/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":46298},"packages/ui/react-ui-list/dist/lib/node/index.cjs":{"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-text-tooltip","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["List","RawTreeItem","Tree","TreeDataSchema","TreeItem","TreeProvider","isTreeData","useTree"],"entryPoint":"packages/ui/react-ui-list/src/index.ts","inputs":{"packages/ui/react-ui-list/src/components/List/ListItem.tsx":{"bytesInOutput":6469},"packages/ui/react-ui-list/src/components/List/ListRoot.tsx":{"bytesInOutput":2175},"packages/ui/react-ui-list/src/components/List/List.tsx":{"bytesInOutput":245},"packages/ui/react-ui-list/src/components/List/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/components/Tree/Tree.tsx":{"bytesInOutput":1022},"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx":{"bytesInOutput":293},"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx":{"bytesInOutput":7883},"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx":{"bytesInOutput":1822},"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx":{"bytesInOutput":766},"packages/ui/react-ui-list/src/components/Tree/helpers.ts":{"bytesInOutput":162},"packages/ui/react-ui-list/src/components/Tree/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/index.ts":{"bytesInOutput":0}},"bytes":21742}}}
1
+ {"inputs":{"packages/ui/react-ui-list/src/components/List/ListRoot.tsx":{"bytes":10900,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/List/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/ListItem.tsx":{"bytes":24635,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/List/ListRoot.tsx","kind":"import-statement","original":"./ListRoot"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/List.tsx":{"bytes":3478,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/ListItem.tsx","kind":"import-statement","original":"./ListItem"},{"path":"packages/ui/react-ui-list/src/components/List/ListRoot.tsx","kind":"import-statement","original":"./ListRoot"}],"format":"esm"},"packages/ui/react-ui-list/src/components/List/index.ts":{"bytes":505,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/List.tsx","kind":"import-statement","original":"./List"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx":{"bytes":2214,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx":{"bytes":7653,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-text-tooltip","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx":{"bytes":3377,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/helpers.ts":{"bytes":1223,"imports":[],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx":{"bytes":31482,"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx","kind":"import-statement","original":"./TreeItemHeading"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx","kind":"import-statement","original":"./TreeItemToggle"},{"path":"packages/ui/react-ui-list/src/components/Tree/helpers.ts","kind":"import-statement","original":"./helpers"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/Tree.tsx":{"bytes":5887,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx","kind":"import-statement","original":"./TreeItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/Tree/index.ts":{"bytes":692,"imports":[{"path":"packages/ui/react-ui-list/src/components/Tree/Tree.tsx","kind":"import-statement","original":"./Tree"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx","kind":"import-statement","original":"./TreeContext"},{"path":"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx","kind":"import-statement","original":"./TreeItem"}],"format":"esm"},"packages/ui/react-ui-list/src/components/index.ts":{"bytes":580,"imports":[{"path":"packages/ui/react-ui-list/src/components/List/index.ts","kind":"import-statement","original":"./List"},{"path":"packages/ui/react-ui-list/src/components/Tree/index.ts","kind":"import-statement","original":"./Tree"}],"format":"esm"},"packages/ui/react-ui-list/src/index.ts":{"bytes":503,"imports":[{"path":"packages/ui/react-ui-list/src/components/index.ts","kind":"import-statement","original":"./components"}],"format":"esm"}},"outputs":{"packages/ui/react-ui-list/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":46760},"packages/ui/react-ui-list/dist/lib/node/index.cjs":{"imports":[{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/util/get-reorder-destination-index","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/combine","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop/element/adapter","kind":"import-statement","external":true},{"path":"@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-text-tooltip","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"exports":["List","RawTreeItem","Tree","TreeDataSchema","TreeItem","TreeProvider","isTreeData","useTree"],"entryPoint":"packages/ui/react-ui-list/src/index.ts","inputs":{"packages/ui/react-ui-list/src/components/List/ListItem.tsx":{"bytesInOutput":6511},"packages/ui/react-ui-list/src/components/List/ListRoot.tsx":{"bytesInOutput":2175},"packages/ui/react-ui-list/src/components/List/List.tsx":{"bytesInOutput":245},"packages/ui/react-ui-list/src/components/List/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/components/Tree/Tree.tsx":{"bytesInOutput":1127},"packages/ui/react-ui-list/src/components/Tree/TreeContext.tsx":{"bytesInOutput":293},"packages/ui/react-ui-list/src/components/Tree/TreeItem.tsx":{"bytesInOutput":7887},"packages/ui/react-ui-list/src/components/Tree/TreeItemHeading.tsx":{"bytesInOutput":1817},"packages/ui/react-ui-list/src/components/Tree/TreeItemToggle.tsx":{"bytesInOutput":813},"packages/ui/react-ui-list/src/components/Tree/helpers.ts":{"bytesInOutput":162},"packages/ui/react-ui-list/src/components/Tree/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-list/src/index.ts":{"bytesInOutput":0}},"bytes":21935}}}