@dxos/react-ui-list 0.8.4-main.67995b8 → 0.8.4-main.6fa680abb7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/index.mjs +679 -724
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +679 -724
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/components/Accordion/Accordion.stories.d.ts +7 -4
- package/dist/types/src/components/Accordion/Accordion.stories.d.ts.map +1 -1
- package/dist/types/src/components/Accordion/AccordionItem.d.ts +1 -1
- package/dist/types/src/components/Accordion/AccordionItem.d.ts.map +1 -1
- package/dist/types/src/components/List/List.d.ts +8 -8
- package/dist/types/src/components/List/List.d.ts.map +1 -1
- package/dist/types/src/components/List/List.stories.d.ts +14 -5
- package/dist/types/src/components/List/List.stories.d.ts.map +1 -1
- package/dist/types/src/components/List/ListItem.d.ts +6 -9
- package/dist/types/src/components/List/ListItem.d.ts.map +1 -1
- package/dist/types/src/components/List/ListRoot.d.ts +2 -2
- package/dist/types/src/components/List/ListRoot.d.ts.map +1 -1
- package/dist/types/src/components/List/testing.d.ts +1 -1
- package/dist/types/src/components/List/testing.d.ts.map +1 -1
- package/dist/types/src/components/Tree/Tree.d.ts +10 -6
- package/dist/types/src/components/Tree/Tree.d.ts.map +1 -1
- package/dist/types/src/components/Tree/Tree.stories.d.ts +18 -7
- package/dist/types/src/components/Tree/Tree.stories.d.ts.map +1 -1
- package/dist/types/src/components/Tree/TreeContext.d.ts +24 -10
- package/dist/types/src/components/Tree/TreeContext.d.ts.map +1 -1
- package/dist/types/src/components/Tree/TreeItem.d.ts +25 -4
- package/dist/types/src/components/Tree/TreeItem.d.ts.map +1 -1
- package/dist/types/src/components/Tree/TreeItemHeading.d.ts +4 -3
- package/dist/types/src/components/Tree/TreeItemHeading.d.ts.map +1 -1
- package/dist/types/src/components/Tree/TreeItemToggle.d.ts +3 -3
- package/dist/types/src/components/Tree/TreeItemToggle.d.ts.map +1 -1
- package/dist/types/src/components/Tree/index.d.ts +2 -0
- package/dist/types/src/components/Tree/index.d.ts.map +1 -1
- package/dist/types/src/components/Tree/testing.d.ts +3 -3
- package/dist/types/src/components/Tree/testing.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +32 -30
- package/src/components/Accordion/Accordion.stories.tsx +5 -7
- package/src/components/Accordion/Accordion.tsx +1 -1
- package/src/components/Accordion/AccordionItem.tsx +8 -5
- package/src/components/Accordion/AccordionRoot.tsx +1 -1
- package/src/components/List/List.stories.tsx +40 -26
- package/src/components/List/List.tsx +2 -5
- package/src/components/List/ListItem.tsx +50 -38
- package/src/components/List/ListRoot.tsx +3 -3
- package/src/components/List/testing.ts +3 -3
- package/src/components/Tree/Tree.stories.tsx +172 -79
- package/src/components/Tree/Tree.tsx +43 -40
- package/src/components/Tree/TreeContext.tsx +21 -9
- package/src/components/Tree/TreeItem.tsx +206 -127
- package/src/components/Tree/TreeItemHeading.tsx +13 -8
- package/src/components/Tree/TreeItemToggle.tsx +29 -18
- package/src/components/Tree/index.ts +2 -0
- package/src/components/Tree/testing.ts +5 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 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/
|
|
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} 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>;\nexport const isTreeData = (data: unknown): data is TreeData => Schema.is(TreeDataSchema)(data);\n\nexport type ColumnRenderer<T extends HasId = any> = FC<{\n item: T;\n path: string[];\n open: boolean;\n menuOpen: boolean;\n setMenuOpen: (open: boolean) => void;\n}>;\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?: ColumnRenderer<T>;\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={[\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';\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={[\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';\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={['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={['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": ";;;;AAIA,YAAYA,yBAAwB;AACpC,SAASC,iBAAAA,sBAAqB;AAC9B,OAAOC,YAAuC;AAE9C,SAASC,YAAkC;AAC3C,SAASC,MAAAA,WAAU;;;;ACLnB,YAAYC,wBAAwB;AACpC,SAASC,qBAAqB;AAC9B,OAAOC,WAA+B;AAGtC,SAASC,UAAU;AAQnB,IAAMC,iBAAiB;AAEhB,IAAM,CAACC,mBAAmBC,mBAAAA,IAAuBC,cAAqCH,cAAAA;AAM7F,IAAMI,eAAe,CAA2BC,SAAaA,MAAcC;AASpE,IAAMC,gBAAgB,CAA2B,EACtDC,YACAC,OACAC,QAAQN,cACRO,UACAC,OACAC,cACAC,cAAa,MAE8E;;;AAC3F,WACE,sBAAA,cAACb,mBAAsB;MAAES;IAAM,GAC7B,sBAAA,cAAoBK,yBAAI;MACtBC,MAAK;MACLJ;MACAC;MACAC;MACAG,WAAWC,GAAGV,UAAAA;OAEbG,WAAW;MAAEF,OAAOA,SAAS,CAAA;IAAG,CAAA,CAAA,CAAA;;;;AAIzC;;;AD3CA,IAAMU,sBAAsB;AAMrB,IAAM,CAACC,uBAAuBC,uBAAAA,IACnCC,eAAyCH,mBAAAA;AAIpC,IAAMI,gBAAgB,CAA2B,EAAEC,UAAUC,YAAYC,KAAI,MAAyB;;;AAC3G,UAAM,EAAEC,MAAK,IAAKC,oBAAoBT,mBAAAA;AAEtC,WACE,gBAAAU,OAAA,cAACT,uBAA0B;MAAEM;IAAK,GAChC,gBAAAG,OAAA,cAAoBC,0BAAI;MAACC,OAAOJ,MAAMD,IAAAA;MAAOM,WAAWC,IAAG,mBAAmBR,UAAAA;OAC3ED,QAAAA,CAAAA;;;;AAIT;AAIO,IAAMU,sBAAsB,CAAC,EAAET,YAAYD,UAAU,GAAGW,MAAAA,MAAiC;;;AAC9F,WACE,gBAAAN,OAAA,cAAoBO,4BAAM;MAAE,GAAGD;MAAOH,WAAWC,IAAGR,UAAAA;OAClD,gBAAAI,OAAA,cAAoBQ,6BAAO;MAACL,WAAU;OACnCR,UACD,gBAAAK,OAAA,cAACS,MAAAA;MACCC,MAAK;MACLC,MAAM;MACNf,YAAW;;;;;AAKrB;AAIO,IAAMgB,oBAAoB,CAAC,EAAEjB,UAAUC,WAAU,MAA0B;;;AAChF,WACE,gBAAAI,OAAA,cAAoBa,6BAAO;MAACV,WAAU;OACpC,gBAAAH,OAAA,cAACc,OAAAA;MAAIC,MAAK;MAAOZ,WAAWC,IAAG,OAAOR,UAAAA;OACnCD,QAAAA,CAAAA;;;;AAIT;;;AErDO,IAAMqB,YAAY;EACvBC,MAAMC;EACNC,MAAMC;EACNC,YAAYC;EACZC,UAAUC;AACZ;;;;ACZA,SAASC,eAAe;AACxB,SAASC,WAAWC,6BAA6B;AACjD,SAASC,kCAAkC;AAC3C,SAEEC,mBACAC,sBAAAA,2BACK;AACP,SAASC,iBAAAA,sBAAqB;AAC9B,OAAOC,UAMLC,YACAC,aAAAA,YACAC,QACAC,YAAAA,iBACK;AACP,SAASC,oBAAoB;AAE7B,SAASC,iBAAiB;AAC1B,SAASC,QAAAA,OAA4BC,YAAYC,uBAAuB;AACxE,SAASC,MAAAA,WAAU;;;;ACxBnB,SAASC,0BAA0B;AACnC,SAASC,0BAA0B;AACnC,SAASC,kCAAkC;AAC3C,SAASC,iBAAAA,sBAAqB;AAC9B,OAAOC,UAAyBC,aAAaC,WAAWC,gBAAgB;AAcxE,IAAMC,YAAY;AAEX,IAAM,CAACC,cAAcC,cAAAA,IAAkBC,eAAgCH,SAAAA;AAO9E,IAAMI,gBAAe,CAA2BC,SAAaA,MAAcC;AAQpE,IAAMC,WAAW,CAA2B,EACjDC,UACAC,OACAC,QACAC,QAAQP,eACRQ,QACA,GAAGC,MAAAA,MACc;;;AACjB,UAAMC,UAAUC,YACd,CAACC,GAAMC,MAAAA;AACL,YAAMC,MAAMP,QAAQK,CAAAA;AACpB,YAAMG,MAAMR,QAAQM,CAAAA;AAEpB,UAAIC,QAAQE,UAAaD,QAAQC,QAAW;AAC1C,eAAOF,QAAQC;MACjB,OAAO;AAIL,eAAOH,MAAMC;MACf;IACF,GACA;MAACN;KAAM;AAGT,UAAM,CAACU,OAAOC,QAAAA,IAAYC,SAAkCC,IAAAA;AAC5DC,cAAU,MAAA;AACR,UAAI,CAAChB,OAAO;AACV;MACF;AAEA,aAAOiB,mBAAmB;QACxBC,YAAY,CAAC,EAAEC,OAAM,MAAOlB,SAASkB,OAAOC,IAAI,KAAK;QACrDC,QAAQ,CAAC,EAAEC,UAAUH,OAAM,MAAE;AAC3B,gBAAMI,SAASD,SAASE,QAAQC,YAAY,CAAA;AAC5C,cAAI,CAACF,QAAQ;AACX;UACF;AAEA,gBAAMG,aAAaP,OAAOC;AAC1B,gBAAMO,aAAaJ,OAAOH;AAC1B,cAAI,CAACnB,SAASyB,UAAAA,KAAe,CAACzB,SAAS0B,UAAAA,GAAa;AAClD;UACF;AAEA,gBAAMC,YAAY5B,MAAM6B,UAAU,CAACjC,SAASS,QAAQT,MAAM8B,UAAAA,CAAAA;AAC1D,gBAAMI,YAAY9B,MAAM6B,UAAU,CAACjC,SAASS,QAAQT,MAAM+B,UAAAA,CAAAA;AAC1D,cAAIG,YAAY,KAAKF,YAAY,GAAG;AAClC;UACF;AACA,gBAAMG,sBAAsBC,mBAAmBL,UAAAA;AAC/C,gBAAMM,mBAAmBC,2BAA2B;YAClDH;YACAI,YAAYP;YACZQ,eAAeN;YACfO,MAAM;UACR,CAAA;AAEAlC,mBAASyB,WAAWK,gBAAAA;QACtB;MACF,CAAA;IACF,GAAG;MAACjC;MAAOK;MAASF;KAAO;AAE3B,WACE,gBAAAmC,OAAA,cAAC9C,cAAiB;MAAEoB;MAAOC;MAAUZ;MAAQ,GAAGG;IAAM,GAAIL,WAAW;MAAEa;MAAOZ,OAAOA,SAAS,CAAA;IAAG,CAAA,CAAA;;;;AAErG;;;;ADvDO,IAAMuC,OAAsB;EAAEC,MAAM;AAAO;AAElD,IAAMC,cAAgG;EACpG,eAAe;AACjB;AAUA,IAAMC,iBAAuC,CAAC;AAE9C,IAAMC,iBAAiB;AAEhB,IAAM,CAACC,kBAAkBC,kBAAAA,IAAsBC,eACpDH,gBACAD,cAAAA;AAcK,IAAMK,WAAW,CAA2B,EAAEC,UAAUC,YAAYC,MAAM,GAAGC,MAAAA,MAAyB;;;AAC3G,UAAM,EAAEC,QAAQC,UAAUC,aAAaC,UAAUC,aAAY,IAAKC,eAAed,cAAAA;AACjF,UAAMe,MAAMC,OAA8B,IAAA;AAC1C,UAAMC,gBAAgBD,OAA2B,IAAA;AACjD,UAAM,CAACE,OAAON,QAAAA,IAAYO,UAAwBvB,IAAAA;AAElDwB,IAAAA,WAAU,MAAA;AACR,YAAMC,UAAUN,IAAIO;AACpBC,gBAAUF,SAAAA,QAAAA;;;;;;;;;AACV,aAAOG;;;;QAILC,UAAU;UACRJ;UACAK,YAAYT,cAAcK;UAC1BK,SAAS,MAAM,CAACjB;UAChBkB,gBAAgB,MAAMrB;UACtBsB,uBAAuBlB,cACnB,CAAC,EAAEmB,oBAAoBC,OAAM,MAAE;AAC7B,kBAAMC,OAAOD,OAAOV,QAAQY,sBAAqB;AACjDC,uCAA2B;cACzBJ;cACAK,WAAW,CAAC,EAAEC,UAAS,MAAE;AACvB,sBAAM,EAAEC,OAAM,IAAKD,UAAUH,sBAAqB;AAClD,uBAAO;kBAAEK,GAAG;kBAAIC,GAAGF,SAAS;gBAAE;cAChC;cACAG,QAAQ,CAAC,EAAEJ,UAAS,MAAE;AACpBA,0BAAUK,MAAMC,QAAQV,KAAKU,QAAQ;AACrC9B,yBAAS;kBAAEf,MAAM;kBAAWuC;gBAAU,CAAA;AACtCvB,6BAAa;kBAAEhB,MAAM;kBAAWuC;kBAAW7B;gBAAK,CAAA;AAChD,uBAAO,MAAA;gBAAO;cAChB;YACF,CAAA;UACF,IACAoC;UACJC,aAAa,MAAA;AACXhC,qBAAS;cAAEf,MAAM;YAAc,CAAA;AAC/BgB,yBAAa;cAAEhB,MAAM;cAAeU;YAAK,CAAA;UAC3C;UACAsC,QAAQ,MAAA;AACNjC,qBAAShB,IAAAA;AACTiB,yBAAajB,IAAAA;UACf;QACF,CAAA;;;;QAKAkD,sBAAsB;UACpBzB;UACA0B,SAAS,CAAC,EAAEhB,OAAM,MAAE;AAClB,oBAAQA,OAAOV,YAAYA,WAAWZ,SAASsB,OAAOiB,IAAI,MAAM;UAClE;UACAC,SAAS,CAAC,EAAEC,MAAK,MAAE;AACjB,mBAAOC,kBAAkB5C,MAAa;cAAEc;cAAS6B;cAAOE,cAAc;gBAAC;gBAAO;;YAAU,CAAA;UAC1F;UACAC,aAAa,MAAM;UACnBC,aAAa,CAAC,EAAEC,KAAI,MAAE;AACpB,kBAAMC,cAAcC,oBAAmBF,KAAKP,IAAI;AAChDpC,qBAAS;cAAEf,MAAM;cAAoB2D;YAAY,CAAA;UACnD;UACAE,aAAa,MAAA;AACX9C,qBAAShB,IAAAA;UACX;UACA+D,QAAQ,CAAC,EAAEJ,KAAI,MAAE;AACf,kBAAMC,cAAcC,oBAAmBF,KAAKP,IAAI;AAChDpC,qBAAS,CAACU,YAAAA;AACR,kBAAIA,QAAQzB,SAAS,sBAAsByB,QAAQkC,gBAAgBA,aAAa;AAC9E,uBAAOlC;cACT;AACA,qBAAO;gBAAEzB,MAAM;gBAAoB2D;cAAY;YACjD,CAAA;UACF;UACAX,QAAQ,MAAA;AACNjC,qBAAShB,IAAAA;UACX;QACF,CAAA;MAAA;IAEJ,GAAG;MAACW;KAAK;AAET,WACE,gBAAAqD,OAAA,cAAC3D,kBAAAA;MAAiBM;MAAYU;OAC5B,gBAAA2C,OAAA,cAACC,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,gBAAAH,OAAA,cAACC,OAAAA;MACC9C;MACA+C,MAAK;MACLC,WAAWC,IAAG,wBAAwB1D,YAAYR,YAAYoB,MAAMrB,IAAI,CAAC;MACxE,GAAGW;OAEHH,QAAAA,GAEFa,MAAMrB,SAAS,sBAAsBqB,MAAMsC,eAC1C,gBAAAI,OAAA,cAACK,gBAAgBC,eAAa;MAACC,MAAMjD,MAAMsC;;;;;AAKrD;AAQO,IAAMY,aAAaC,2BACxB,CAAC,EAAE/D,YAAYgE,MAAM,GAAG9D,MAAAA,GAAS+D,iBAAAA;;;AAC/B,WACE,gBAAAX,OAAA,cAACY,UAAAA;MAAOzD,KAAKwD;MAAcR,WAAWC,IAAG,oCAAoC1D,UAAAA;MAAc,GAAGE;OAC5F,gBAAAoD,OAAA,cAACa,OAAAA;MAAKH;MAAYhE,YAAW;MAAiBoE,MAAM;;;;;AAG1D,CAAA;AAGK,IAAMC,uBAAuB,CAAC,EACnCC,WAAW,MACXtE,YACAuE,UACAP,OAAO,kBACP,GAAG9D,MAAAA,MAC6F;;;AAChG,UAAM,EAAEU,MAAK,IAAKJ,eAAe,eAAA;AACjC,UAAMgE,aAAa5D,MAAMrB,SAAS,UAAUgF;AAC5C,WACE,gBAAAjB,OAAA,cAACQ,YAAAA;MACCE;MACAO,UAAUC;MACVxE,YAAY;QAACA;QAAYsE,YAAYC,YAAY;;MAChD,GAAGrE;;;;;AAGV;AAEO,IAAMuE,iBAAiB,CAAC,EAC7BH,WAAW,MACXtE,YACAuE,UACA,GAAGrE,MAAAA,MACsC;;;AACzC,UAAM,EAAEU,MAAK,IAAKJ,eAAe,aAAA;AACjC,UAAMgE,aAAa5D,MAAMrB,SAAS,UAAUgF;AAC5C,WAAO,gBAAAjB,OAAA,cAACQ,YAAAA;MAAWS,UAAUC;MAAYxE,YAAY;QAACA;QAAYsE,YAAYC,YAAY;;MAAY,GAAGrE;;;;;AAC3G;AAEO,IAAMwE,qBAAqB,CAAC,EAAEH,SAAQ,MAAqC;;;AAChF,UAAM,EAAE5D,cAAa,IAAKf,mBAAmB,aAAA;AAC7C,WAAO,gBAAA0D,OAAA,cAACQ,YAAAA;MAAWrD,KAAKE;MAAsBqD,MAAK;MAAiCO;;;;;AACtF;AAEO,IAAMI,sBAAsB,CAA2B,EAC5D5E,SAAQ,MAGT;AACC,QAAM,EAAEa,MAAK,IAAKJ,eAAe,cAAA;AACjC,SAAOI,OAAOrB,SAAS,YAAYqF,6BAAa7E,SAAS;IAAEE,MAAMW,MAAMX;EAAK,CAAA,GAAIW,MAAMkB,SAAS,IAAI;AACrG;AAEO,IAAM+C,kBAAkB,CAAC,EAAE7E,YAAYD,SAAQ,MAAsC;;;WAC1F,gBAAAuD,OAAA,cAACC,OAAAA;MAAIE,WAAWC,IAAG,sBAAsB1D,UAAAA;OAAcD,QAAAA;;;;;AAGlD,IAAM+E,gBAAgB,CAAC,EAC5B9E,YACAD,UACA,GAAGG,MAAAA,MACuD;;;WAC1D,gBAAAoD,OAAA,cAACC,OAAAA;MAAIE,WAAWC,IAAG,mCAAmC1D,UAAAA;MAAc,GAAGE;OACpEH,QAAAA;;;;;;;AE/NE,IAAMgF,OAAO;EAClBC,MAAMC;EACNC,MAAMC;EACNC,iBAAiBC;EACjBC,aAAaC;EACbC,gBAAgBC;EAChBC,kBAAkBC;EAClBC,YAAYC;EACZC,WAAWC;EACXC;AACF;;;;ACrCA,OAAOC,UAASC,WAAAA,gBAAe;AAG/B,SAASC,YAAAA,iBAAwC;;;ACHjD,SAASC,iBAAAA,gBAAeC,kBAAkB;AAE1C,SAASC,aAAa;AAqBtB,IAAMC,cAAcC,gBAAAA,eAAsC,IAAA;AAEnD,IAAMC,eAAeF,YAAYG;AAEjC,IAAMC,UAAU,MAAMC,WAAWL,WAAAA,KAAgBM,MAAM,IAAIC,MAAM,uBAAA,CAAA;;;;AC3BxE,SAASC,WAAAA,gBAAe;AACxB,SAASC,aAAAA,YAAWC,yBAAAA,8BAA6B;AACjD,SACEC,mBACAC,0BAGK;AACP,SAASC,cAAc;AACvB,OAAOC,UAASC,QAAAA,OAAMC,eAAAA,cAAaC,aAAAA,YAAWC,SAASC,UAAAA,SAAQC,YAAAA,iBAA6C;AAG5G,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,UAAUC,YAAYC,uBAAuB;AACtD,SACEC,YACAC,mBACAC,kCACAC,sCACK;;;;ACnBP,OAAOC,UAA8CC,cAAAA,aAAYC,MAAMC,eAAAA,oBAAmB;AAE1F,SAASC,QAAQC,QAAAA,OAAMC,mBAAmBC,sBAAkC;AAC5E,SAASC,mBAAmB;AAarB,IAAMC,kBAAkBC,qBAC7BC,gBAAAA,YACE,CAAC,EAAEC,OAAOC,MAAMC,WAAWC,UAAUC,SAASC,SAAQ,GAAIC,iBAAAA;;;AACxD,UAAM,EAAEC,EAAC,IAAKC,eAAAA;AAEd,UAAMC,eAAeC,aACnB,CAACC,UAAAA;AACCN,iBAAWM,MAAMC,MAAM;IACzB,GACA;MAACP;KAAS;AAGZ,UAAMQ,sBAAsBH,aAC1B,CAACC,UAAAA;AACC,UAAIA,MAAMG,QAAQ,OAAOH,MAAMG,QAAQ,SAAS;AAC9CH,cAAMI,eAAc;AACpBJ,cAAMK,gBAAe;AACrBX,mBAAWM,MAAMC,MAAM;MACzB;IACF,GACA;MAACP;KAAS;AAGZ,WACE,gBAAAY,OAAA,cAACC,aAAAA;MACCC,MAAMC,kBAAkBpB,OAAOO,CAAAA;MAC/Bc,MAAK;MACLC,eAAc;MACdC,oBAAAA;MACAC,SAAAA;MACAC,KAAKnB;OAEL,gBAAAW,OAAA,cAACS,QAAAA;MACCC,eAAY;MACZC,SAAQ;MACRC,SAAQ;MACRC,YAAY;QACV;QACA;QACA5B;;MAEFC;MACA4B,SAAStB;MACTuB,WAAWnB;MACV,GAAIT,WAAW;QAAE,gBAAgB;MAAW;OAE5CH,QAAQ,gBAAAgB,OAAA,cAACgB,OAAAA;MAAKhC,MAAMA,QAAQ;MAA4BiC,MAAM;MAAGJ,YAAW;QAC7E,gBAAAb,OAAA,cAACkB,QAAAA;MAAKjC,WAAU;MAAsDkC,gBAAAA;OACnEhB,kBAAkBpB,OAAOO,CAAAA,CAAAA,CAAAA,CAAAA;;;;AAKpC,CAAA,CAAA;;;;ACrEJ,OAAO8B,UAASC,cAAAA,aAAYC,QAAAA,aAAY;AAExC,SAASC,UAAAA,SAAQC,QAAAA,aAAY;AAStB,IAAMC,iBAAiBC,gBAAAA,MAC5BC,gBAAAA,YAAmD,CAAC,EAAEC,MAAMC,UAAUC,QAAQC,SAAQ,GAAIC,iBAAAA;;;AACxF,WACE,gBAAAC,OAAA,cAACC,SAAAA;MACCC,KAAKH;MACLI,eAAY;MACZC,iBAAeT;MACfU,SAAQ;MACRC,SAAQ;MACRC,YAAY;QAAC;QAAkCV,SAAS,WAAW,CAACD,YAAY;;MAChFY,SAASV;OAET,gBAAAE,OAAA,cAACS,OAAAA;MAAKC,MAAK;MAAwBC,MAAM;MAAGJ,YAAY;QAAC;QAA2BZ,QAAQ;;;;;;AAGlG,CAAA,CAAA;;;AC1BK,IAAMiB,sBAAsB;AAE5B,IAAMC,qBAAqB,CAACC,OAAeC,cAAcH,yBAAyB;EACvFI,oBAAoB,IAAIF,QAAQ,KAAKC,WAAAA;AACvC;;;;AHwBA,IAAME,4BACJ;AAEK,IAAMC,iBAAiBC,OAAOC,OAAO;EAC1CC,IAAIF,OAAOG;EACXC,MAAMJ,OAAOK,MAAML,OAAOG,MAAM;EAChCG,MAAMN,OAAOO;AACf,CAAA;AAGO,IAAMC,aAAa,CAACC,SAAoCT,OAAOU,GAAGX,cAAAA,EAAgBU,IAAAA;AAsBzF,IAAME,cAAc,CAAwB,EAC1CL,MACAF,MAAMQ,OACNC,MACAC,WAAWC,YACXC,eAAeC,SACfC,SACAC,cACAC,UACAC,cAAc,EAAC,MACE;;;AACjB,UAAMC,SAASC,QAA8B,IAAA;AAC7C,UAAMC,YAAYD,QAAiC,IAAA;AACnD,UAAME,UAAUF,QAAO,KAAA;AACvB,UAAMG,kBAAkBH,QAA8B,IAAA;AACtD,UAAM,CAACI,QAAQC,QAAAA,IAAYC,UAAwB,MAAA;AACnD,UAAM,CAACC,aAAaC,cAAAA,IAAkBF,UAA6B,IAAA;AACnE,UAAM,CAACG,UAAUC,WAAAA,IAAeJ,UAAS,KAAA;AAEzC,UAAM,EAAEK,UAAUC,UAAUC,QAAQC,UAAS,IAAKC,QAAAA;AAClD,UAAMC,QAAQL,SAAS5B,IAAAA;AACvB,UAAM,EAAEJ,IAAIsC,OAAOC,UAAUC,MAAMC,UAAUC,WAAWC,kBAAkBC,OAAM,IAAKX,SAAS7B,MAAMM,KAAAA;AACpG,UAAMR,OAAO2C,QAAQ,MAAM;SAAInC;MAAOV;OAAK;MAACU;MAAOV;KAAG;AACtD,UAAM8C,OAAOZ,OAAOhC,MAAME,IAAAA;AAC1B,UAAM2C,UAAUZ,UAAUjC,MAAME,IAAAA;AAChC,UAAM4C,QAAQ9C,KAAK+C,SAAS9B;AAC5B,UAAM+B,WAAW,CAAC,CAACX;AACnB,UAAMY,OAAiBxC,OAAO,kBAAkBmC,OAAO,aAAa;AAEpE,UAAMM,eAAeC,aAAY,MAAA;AAC/B,UAAI7B,gBAAgBuB,SAAS;AAC3BO,qBAAa9B,gBAAgBuB,OAAO;AACpCvB,wBAAgBuB,UAAU;MAC5B;IACF,GAAG,CAAA,CAAE;AAELQ,IAAAA,WAAU,MAAA;AACR,UAAI,CAAC1C,YAAY;AACf;MACF;AAEA2C,MAAAA,WAAUlC,UAAUyB,SAAO,QAAA;;;;;;;;;AAE3B,YAAMxC,OAAO;QAAEP;QAAIE;QAAME;MAAK;AAG9B,aAAOqD;QACL7C,WAAU;UACR8C,SAASpC,UAAUyB;UACnBY,gBAAgB,MAAMpD;UACtBqD,aAAa,MAAA;AACXlC,qBAAS,UAAA;AACT,gBAAIoB,MAAM;AACRvB,sBAAQwB,UAAU;AAClB9B,6BAAe;gBAAEb;gBAAMF;gBAAM4C,MAAM;cAAM,CAAA;YAC3C;UACF;UACAe,QAAQ,MAAA;AACNnC,qBAAS,MAAA;AACT,gBAAIH,QAAQwB,SAAS;AACnB9B,6BAAe;gBAAEb;gBAAMF;gBAAM4C,MAAM;cAAK,CAAA;YAC1C;UACF;QACF,CAAA;;QAEAgB,uBAAsB;UACpBJ,SAASpC,UAAUyB;UACnBgB,SAAS,CAAC,EAAEC,OAAON,QAAO,MAAE;AAC1B,mBAAOO,kBAAkB1D,MAAM;cAC7ByD;cACAN;cACAQ,gBAAgBC;cAChBC,cAAcpB;cACdG;cACAkB,OAAOnB,WAAW,CAAA,IAAK;gBAAC;;YAC1B,CAAA;UACF;UACAlC,SAAS,CAAC,EAAEsD,OAAM,MAAE;AAClB,kBAAMC,WAAWvD,YAAY,MAAM;AACnC,mBAAOsD,OAAOZ,YAAYpC,UAAUyB,WAAWwB,SAAS;cAAED,QAAQA,OAAO/D;cAAkBiE,QAAQjE;YAAK,CAAA;UAC1G;UACAkE,aAAa,MAAM;UACnBC,QAAQ,CAAC,EAAEC,MAAML,OAAM,MAAE;AACvB,kBAAM1C,eAAcgD,mBAAmBD,KAAKpE,IAAI;AAEhD,gBAAI+D,OAAO/D,KAAKP,OAAOA,IAAI;AACzB,kBAAI4B,cAAaiD,SAAS,gBAAgB3B,YAAY,CAACJ,QAAQ,CAACtB,gBAAgBuB,SAAS;AACvFvB,gCAAgBuB,UAAU+B,WAAW,MAAA;AACnC7D,iCAAe;oBAAEb;oBAAMF;oBAAM4C,MAAM;kBAAK,CAAA;gBAC1C,GAAG,GAAA;cACL;AAEA,kBAAIlB,cAAaiD,SAAS,cAAc;AACtCzB,6BAAAA;cACF;AAEAvB,6BAAeD,YAAAA;YACjB,WAAWA,cAAaiD,SAAS,YAAY;AAE3ChD,6BAAeD,YAAAA;YACjB,OAAO;AACLC,6BAAe,IAAA;YACjB;UACF;UACAkD,aAAa,MAAA;AACX3B,yBAAAA;AACAvB,2BAAe,IAAA;UACjB;UACAgC,QAAQ,MAAA;AACNT,yBAAAA;AACAvB,2BAAe,IAAA;UACjB;QACF,CAAA;MAAA;IAEJ,GAAG;MAAChB;MAAYT;MAAMJ;MAAImD;MAAMjD;MAAM4C;MAAM9B;KAAQ;AAGpDuC,IAAAA,WAAU,MAAM,MAAMH,aAAAA,GAAgB;MAACA;KAAa;AAEpD,UAAM4B,mBAAmB3B,aACvB,MAAMpC,eAAe;MAAEb;MAAMF;MAAM4C,MAAM,CAACA;IAAK,CAAA,GAC/C;MAAC7B;MAAcb;MAAMF;MAAM4C;KAAK;AAGlC,UAAMmC,eAAe5B,aACnB,CAAC6B,SAAS,UAAK;AACb,UAAIhC,UAAU;AACZ8B,yBAAAA;MACF,OAAO;AACL5D,eAAO2B,SAASoC,MAAAA;AAChBjE,mBAAW;UAAEd;UAAMF;UAAM6C,SAAS,CAACA;UAASmC;QAAO,CAAA;MACrD;IACF,GACA;MAAC9E;MAAMF;MAAM6C;MAASG;MAAU8B;MAAkB9D;KAAS;AAG7D,UAAMkE,gBAAgB/B,aACpB,CAACgC,UAAAA;AACC,cAAQA,MAAMC,KAAG;QACf,KAAK;AACHpC,sBAAY,CAACJ,QAAQkC,iBAAAA;AACrB;QACF,KAAK;AACH9B,sBAAYJ,QAAQkC,iBAAAA;AACpB;QACF,KAAK;AACHC,uBAAaI,MAAME,MAAM;AACzB;MACJ;IACF,GACA;MAACrC;MAAUJ;MAAMkC;MAAkBC;KAAa;AAGlD,WACE,gBAAAO,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACC,SAASC,KAAG;MACXC,KAAKvE;MACLkE,KAAKtF;MACLA;MACA4F,mBAAiB,GAAG5F,EAAAA;MACpBuC,UAAUA,UAAUsD,KAAKJ,SAASK,mBAAmB;MACrDC,YAAY;QACV;QACAC;QACAC;QACAC;QACAtG;QACAuG;QACAzD;;MAEF0D,eAAapG;MACbqG,eAAazD;;;;MAIb0D,gBAAcvD,UAAW,KAAgBwD;MACzCC,WAAWpB;MACXqB,eAAe,CAACpB,UAAAA;AACdA,cAAMqB,eAAc;AACpB3E,oBAAY,IAAA;MACd;OAEA,gBAAAyD,OAAA,cAACC,SAASkB,MAAI;MACZC,QAAAA;MACAb,YAAW;MACXc,OAAOC,mBAAmB9D,KAAAA;OAE1B,gBAAAwC,OAAA,cAACuB,OAAAA;MAAIC,MAAK;MAAOtE,WAAU;OACzB,gBAAA8C,OAAA,cAACyB,gBAAAA;MAAe/D;MAAoBJ;MAAYoE,UAAUlC;QAC1D,gBAAAQ,OAAA,cAAC2B,iBAAAA;MACCxB,KAAKrE;MACLgB;MACAE;MACAE,WAAWC;MACXF;MACAM;MACA7B,UAAU+D;SAGblE,WAAW,gBAAAyE,OAAA,cAACzE,SAAAA;MAAQX;MAAYF;MAAY4C;MAAYhB;MAAoBC;QAC5EH,eAAe,gBAAA4D,OAAA,cAAC4B,gBAAgBC,eAAa;MAACzF;MAA0B0F,KAAK;UAGjFxE,QACCT,MAAMkF,IAAI,CAACnH,OAAMoH,UACf,gBAAAhC,OAAA,cAACiC,UAAAA;MACCnC,KAAKlF,MAAKJ;MACVI,MAAMA;MACNF;MACAS,MAAM6G,UAAUnF,MAAMY,SAAS;MAC/BrC,WAAWC;MACXC,eAAeC;MACfC;MACAC;MACAC;;;;;AAKZ;AAEO,IAAMuG,WAAWC,gBAAAA,MAAKjH,WAAAA;;;AFzQtB,IAAMkH,OAAO,CAAiC,EACnDC,MACAC,MACAC,IACAC,UACAC,UACAC,QACAC,WACAC,WAAAA,aAAY,OACZC,sBAAsB,mDACtBC,YACAC,aACAC,eACAC,SACAC,cACAC,SAAQ,MACQ;;;AAChB,UAAMC,UAAUC,SACd,OAAO;MACLb;MACAC;MACAC;MACAC;IACF,IACA;MAACH;MAAUC;MAAUC;MAAQC;KAAU;AAEzC,UAAMW,QAAQd,SAASH,IAAAA;AACvB,UAAMkB,WAAWF,SAAQ,MAAOf,OAAO;SAAIA;MAAMC;QAAM;MAACA;OAAM;MAACA;MAAID;KAAK;AAExE,WACE,gBAAAkB,OAAA,cAACC,UAASC,MAAI;MAACb;MAA0CC;OACvD,gBAAAU,OAAA,cAACG,cAAAA;MAAaC,OAAOR;OAClBE,MAAMO,IAAI,CAACC,MAAMC,UAChB,gBAAAP,OAAA,cAACQ,UAAAA;MACCC,KAAKH,KAAKvB;MACVuB;MACAI,MAAMH,UAAUT,MAAMa,SAAS;MAC/B7B,MAAMiB;MACNR;MACAH,WAAWA;MACXI;MACAC;MACAC;MACAC;;;;;AAMZ;;;AMjEA,IAAMiB,YAAY;AAEX,IAAMC,OAAO;EAClBC,QAAQ,IAAIC,SAAmBA,KAAKC,KAAKJ,SAAAA;EAEzCK,OAAO,CAACC,SAAiBA,KAAKC,MAAMP,SAAAA;EACpCQ,QAAQ,CAACF,SAAiBA,KAAKC,MAAMP,SAAAA,EAAWQ;EAChDC,OAAO,CAACH,SAAiBA,KAAKC,MAAMP,SAAAA,EAAW,CAAA,KAAMM;EACrDI,MAAM,CAACJ,SAAiBA,KAAKC,MAAMP,SAAAA,EAAWW,GAAG,EAAC,KAAML;EACxDM,QAAQ,CAACN,SAAiBA,KAAKC,MAAMP,SAAAA,EAAWa,MAAM,GAAG,EAAC,EAAGT,KAAKJ,SAAAA;EAElEc,SAAS,CAACR,MAAcS,OAAed,KAAKQ,MAAMH,IAAAA,MAAUS;EAC5DC,UAAU,CAACV,MAAcW,YAAoBhB,KAAKW,OAAOK,OAAAA,MAAaX;EACtEY,eAAe,CAACZ,MAAcW,YAAoBA,YAAYX,QAAQW,QAAQE,WAAWb,IAAAA;EACzFc,UAAU,CAACd,MAAcW,YAAoBhB,KAAKW,OAAON,IAAAA,MAAUL,KAAKW,OAAOK,OAAAA;EAC/EI,QAAQ,CAACf,MAAcS,OAAed,KAAKI,MAAMC,IAAAA,EAAMgB,SAASP,EAAAA;AAClE;",
|
|
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", "
|
|
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/helpers.ts", "../../../src/components/Tree/TreeItemHeading.tsx", "../../../src/components/Tree/TreeItemToggle.tsx", "../../../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/ui-theme';\n\nimport { type ListItemRecord } from '../List';\n\nimport { useAccordionContext } from './AccordionRoot';\n\nconst ACCORDION_ITEM_NAME = 'AccordionItem';\n\ntype AccordionItemContext<T extends ListItemRecord> = {\n item: T;\n};\n\n// TODO(wittjosiah): This seems to be conflicting with something in the bundle.\n// Perhaps @radix-ui/react-accordion?\nexport const [AccordionItemProvider, useDxAccordionItemContext] =\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 w-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-slide-up data-[state=open]:animate-slide-down'>\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/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, AccordionItemBody, AccordionItemHeader } 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 useEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { invariant } from '@dxos/invariant';\nimport {\n IconButton,\n type IconButtonProps,\n ListItem as NaturalListItem,\n type ThemedClassName,\n useTranslation,\n} from '@dxos/react-ui';\nimport { mx, osTranslations } from '@dxos/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: 'w-dragging';\n }\n | {\n type: 'w-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 'w-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: 'w-dragging' });\n setRootState({ type: 'w-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: 'w-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 === 'w-dragging-over' && current.closestEdge === closestEdge) {\n return current;\n }\n return { type: 'w-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 ref={ref} role='listitem' className={mx('flex relative', classNames, stateStyles[state.type])} {...props}>\n {children}\n {state.type === 'w-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 const ListItemDeleteButton = ({\n autoHide = true,\n classNames,\n disabled,\n icon = 'ph--x--regular',\n label,\n ...props\n}: Partial<Pick<IconButtonProps, 'icon'>> &\n Omit<IconButtonProps, 'icon' | 'label'> & { autoHide?: boolean; label?: string }) => {\n const { state } = useListContext('DELETE_BUTTON');\n const isDisabled = state.type !== 'idle' || disabled;\n const { t } = useTranslation(osTranslations);\n return (\n <IconButton\n iconOnly\n variant='ghost'\n {...props}\n icon={icon}\n disabled={isDisabled}\n label={label ?? t('delete label')}\n classNames={[classNames, autoHide && disabled && 'hidden']}\n />\n );\n};\n\nexport const ListItemButton = ({\n autoHide = true,\n iconOnly = true,\n variant = 'ghost',\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 (\n <IconButton\n {...props}\n disabled={isDisabled}\n iconOnly={iconOnly}\n variant={variant}\n classNames={[classNames, autoHide && disabled && 'hidden']}\n />\n );\n};\n\nexport const ListItemDragHandle = ({ disabled }: Pick<IconButtonProps, 'disabled'>) => {\n const { dragHandleRef } = useListItemContext('DRAG_HANDLE');\n const { t } = useTranslation(osTranslations);\n return (\n <IconButton\n iconOnly\n variant='ghost'\n label={t('drag handle label')}\n ref={dragHandleRef as any}\n icon='ph--dots-six-vertical--regular'\n disabled={disabled}\n />\n );\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 w-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 ItemDragState, type ListItemRecord, idle } 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: readonly 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?: readonly 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 ListItem,\n ListItemButton,\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 ItemButton: ListItemButton,\n ItemTitle: ListItemTitle,\n};\n\ntype ListItem = ListItemRecord;\n\nexport type { ListRootProps, ListItemProps, ListItem, ListItemRecord };\n", "//\n// Copyright 2024 DXOS.org\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport React, { useMemo } from 'react';\n\nimport { Treegrid, type TreegridRootProps } from '@dxos/react-ui';\n\nimport { type TreeModel, TreeProvider } from './TreeContext';\nimport { TreeItemById, type TreeItemByIdProps, type TreeItemProps } from './TreeItem';\n\nexport type TreeProps<T extends { id: string } = any> = {\n model: TreeModel<T>;\n rootId?: string;\n path?: string[];\n id: string;\n} & Partial<Pick<TreegridRootProps, 'gridTemplateColumns' | 'classNames'>> &\n Pick<\n TreeItemProps<T>,\n | 'draggable'\n | 'renderColumns'\n | 'blockInstruction'\n | 'canDrop'\n | 'canSelect'\n | 'onOpenChange'\n | 'onSelect'\n | 'onItemHover'\n | 'levelOffset'\n >;\n\nexport const Tree = <T extends { id: string } = any>({\n model,\n rootId,\n path,\n id,\n draggable = false,\n gridTemplateColumns = '[tree-row-start] 1fr min-content [tree-row-end]',\n classNames,\n levelOffset,\n renderColumns,\n blockInstruction,\n canDrop,\n canSelect,\n onOpenChange,\n onSelect,\n onItemHover,\n}: TreeProps<T>) => {\n const childIds = useAtomValue(model.childIds(rootId));\n const treePath = useMemo(() => (path ? [...path, id] : [id]), [id, path]);\n\n const childProps: Omit<TreeItemByIdProps, 'id' | 'last'> = {\n path: treePath,\n levelOffset,\n draggable,\n renderColumns,\n blockInstruction,\n canDrop,\n canSelect,\n onOpenChange,\n onSelect,\n onItemHover,\n };\n\n return (\n <Treegrid.Root gridTemplateColumns={gridTemplateColumns} classNames={classNames}>\n <TreeProvider value={model}>\n {childIds.map((childId, index) => (\n <TreeItemById key={childId} id={childId} last={index === childIds.length - 1} {...childProps} />\n ))}\n </TreeProvider>\n </Treegrid.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Atom } from '@effect-atom/atom-react';\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 /** When `false`, the item cannot be dragged (overrides tree-level `draggable`). */\n draggable?: boolean;\n /** When `false`, the item does not participate as a drop target. */\n droppable?: boolean;\n className?: string;\n headingClassName?: string;\n icon?: string;\n iconHue?: string;\n disabled?: boolean;\n testId?: string;\n};\n\nexport interface TreeModel<T extends { id: string } = any> {\n /** Atom family: resolve item by ID (content). */\n item: (id: string) => Atom.Atom<T | undefined>;\n /** Atom family: open state keyed by path. */\n itemOpen: (path: string[]) => Atom.Atom<boolean>;\n /** Atom family: current (selected) state keyed by path. */\n itemCurrent: (path: string[]) => Atom.Atom<boolean>;\n /** Atom family: display props for an item at a given path (path includes item's own ID at end). */\n itemProps: (path: string[]) => Atom.Atom<TreeItemDataProps>;\n /** Atom family: outbound child IDs for a parent ID (topology). Undefined = root. */\n childIds: (parentId?: string) => Atom.Atom<string[]>;\n}\n\nconst TreeContext = createContext<TreeModel | null>(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 type Instruction,\n type ItemMode,\n attachInstruction,\n extractInstruction,\n} from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Schema from 'effect/Schema';\nimport React, {\n type FC,\n type KeyboardEvent,\n type MouseEvent,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { invariant } from '@dxos/invariant';\nimport { TreeItem as NaturalTreeItem, Treegrid } from '@dxos/react-ui';\nimport {\n ghostFocusWithin,\n ghostHover,\n hoverableControls,\n hoverableFocusedKeyboardControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/ui-theme';\n\nimport { DEFAULT_INDENTATION, paddingIndentation } from './helpers';\nimport { useTree } from './TreeContext';\nimport { TreeItemHeading } from './TreeItemHeading';\nimport { TreeItemToggle } from './TreeItemToggle';\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\ntype TreeItemDragState = 'idle' | 'dragging' | 'preview' | 'parent-of-instruction';\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>;\nexport const isTreeData = (data: unknown): data is TreeData => Schema.is(TreeDataSchema)(data);\n\nexport type ColumnRenderer<T extends { id: string } = any> = FC<{\n item: T;\n path: string[];\n open: boolean;\n menuOpen: boolean;\n setMenuOpen: (open: boolean) => void;\n}>;\n\nexport type TreeItemProps<T extends { id: string } = any> = {\n item: T;\n path: string[];\n levelOffset?: number;\n last: boolean;\n draggable?: boolean;\n renderColumns?: ColumnRenderer<T>;\n blockInstruction?: (params: { instruction: Instruction; source: TreeData; target: TreeData }) => boolean;\n canDrop?: (params: { source: TreeData; target: TreeData }) => boolean;\n canSelect?: (params: { item: T; path: string[] }) => boolean;\n onOpenChange?: (params: { item: T; path: string[]; open: boolean }) => void;\n onSelect?: (params: { item: T; path: string[]; current: boolean; option: boolean }) => void;\n onItemHover?: (params: { item: T }) => void;\n};\n\nconst RawTreeItem = <T extends { id: string } = any>({\n item,\n path: pathProp,\n levelOffset = 2,\n last,\n draggable: draggableProp,\n renderColumns: Columns,\n blockInstruction,\n canDrop,\n canSelect,\n onOpenChange,\n onSelect,\n onItemHover,\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<TreeItemDragState>('idle');\n const [instruction, setInstruction] = useState<Instruction | null>(null);\n const [menuOpen, setMenuOpen] = useState(false);\n\n const {\n itemProps: itemPropsAtom,\n childIds: childIdsAtom,\n itemOpen: itemOpenAtom,\n itemCurrent: itemCurrentAtom,\n } = useTree();\n const path = useMemo(() => [...pathProp, item.id], [pathProp, item.id]);\n\n const {\n id,\n parentOf,\n draggable: itemDraggable,\n droppable: itemDroppable,\n label,\n className,\n headingClassName,\n icon,\n iconHue,\n disabled,\n testId,\n } = useAtomValue(itemPropsAtom(path));\n const childIds = useAtomValue(childIdsAtom(item.id));\n const open = useAtomValue(itemOpenAtom(path));\n const current = useAtomValue(itemCurrentAtom(path));\n\n const level = path.length - levelOffset;\n const isBranch = !!parentOf;\n const mode: ItemMode = last ? 'last-in-group' : open ? 'expanded' : 'standard';\n const canSelectItem = canSelect?.({ item, path }) ?? true;\n const data = { id, path, item } satisfies TreeData;\n\n const cancelExpand = useCallback(() => {\n if (cancelExpandRef.current) {\n clearTimeout(cancelExpandRef.current);\n cancelExpandRef.current = null;\n }\n }, []);\n\n const isItemDraggable = draggableProp && itemDraggable !== false;\n const isItemDroppable = itemDroppable !== false;\n\n useEffect(() => {\n if (!draggableProp) {\n return;\n }\n\n invariant(buttonRef.current);\n\n const makeDraggable = () =>\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\n if (!isItemDroppable) {\n return isItemDraggable ? makeDraggable() : undefined;\n }\n\n const dropTarget = 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 desired = extractInstruction(self.data);\n const block =\n desired && blockInstruction?.({ instruction: desired, source: source.data as TreeData, target: data });\n const instruction: Instruction | null =\n block && desired.type !== 'instruction-blocked' ? { type: 'instruction-blocked', desired } : desired;\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 if (!isItemDraggable) {\n return dropTarget;\n }\n\n // https://atlassian.design/components/pragmatic-drag-and-drop/core-package/adapters/element/about\n return combine(makeDraggable(), dropTarget);\n }, [draggableProp, isItemDraggable, isItemDroppable, item, id, mode, path, open, blockInstruction, canDrop]);\n\n // Cancel expand on unmount.\n useEffect(() => () => cancelExpand(), [cancelExpand]);\n\n const handleOpenToggle = useCallback(\n () => onOpenChange?.({ item, path, open: !open }),\n [onOpenChange, item, path, open],\n );\n\n const handleSelect = useCallback(\n (option = false) => {\n // If the item is a branch, toggle it if:\n // - also holding down the option key\n // - or the item is currently selected\n if (isBranch && (option || current)) {\n handleOpenToggle();\n } else if (canSelectItem) {\n canSelect?.({ item, path });\n rowRef.current?.focus();\n onSelect?.({ item, path, current: !current, option });\n }\n },\n [item, path, current, isBranch, canSelectItem, handleOpenToggle, onSelect],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowLeft':\n isBranch && handleOpenToggle();\n break;\n }\n },\n [isBranch, open, handleOpenToggle, handleSelect],\n );\n\n const handleItemHover = useCallback(() => {\n onItemHover?.({ item });\n }, [onItemHover, item]);\n\n const handleContextMenu = useCallback(\n (event: MouseEvent) => {\n event.preventDefault();\n setMenuOpen(true);\n },\n [setMenuOpen],\n );\n\n const childProps = {\n draggable: draggableProp,\n renderColumns: Columns,\n blockInstruction,\n canDrop,\n canSelect,\n onItemHover,\n onOpenChange,\n onSelect,\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 data-object-id={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 classNames={mx(\n 'grid grid-cols-subgrid col-[tree-row] mt-0.5 is-current:bg-active-surface',\n hoverableControls,\n hoverableFocusedKeyboardControls,\n hoverableFocusedWithinControls,\n hoverableDescriptionIcons,\n ghostFocusWithin,\n ghostHover,\n className,\n )}\n onKeyDown={handleKeyDown}\n onMouseEnter={handleItemHover}\n onContextMenu={handleContextMenu}\n >\n <div\n role='none'\n className='indent relative grid grid-cols-subgrid col-[tree-row]'\n style={paddingIndentation(level)}\n >\n <Treegrid.Cell classNames='flex items-center'>\n <TreeItemToggle isBranch={isBranch} open={open} onClick={handleOpenToggle} />\n <TreeItemHeading\n disabled={disabled}\n current={current}\n label={label}\n className={headingClassName}\n icon={icon}\n iconHue={iconHue}\n onSelect={handleSelect}\n ref={buttonRef}\n />\n </Treegrid.Cell>\n {Columns && <Columns item={item} path={path} open={open} menuOpen={menuOpen} setMenuOpen={setMenuOpen} />}\n {instruction && <NaturalTreeItem.DropIndicator instruction={instruction} gap={2} />}\n </div>\n </Treegrid.Row>\n {open &&\n childIds.map((childId, index) => (\n <TreeItemById key={childId} id={childId} path={path} last={index === childIds.length - 1} {...childProps} />\n ))}\n </>\n );\n};\n\nexport const TreeItem = memo(RawTreeItem) as FC<TreeItemProps>;\n\n/** Resolves a child ID to an item via the `item` atom and renders a TreeItem. */\nexport type TreeItemByIdProps = Omit<TreeItemProps, 'item'> & { id: string };\n\nconst RawTreeItemById = <T extends { id: string } = any>({ id, ...props }: TreeItemByIdProps) => {\n const { item: itemAtom } = useTree();\n const item = useAtomValue(itemAtom(id)) as T | undefined;\n if (!item) {\n return null;\n }\n return <TreeItem item={item} {...props} />;\n};\n\nexport const TreeItemById = memo(RawTreeItemById) as FC<TreeItemByIdProps>;\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 2024 DXOS.org\n//\n\nimport React, { type KeyboardEvent, type MouseEvent, forwardRef, memo, useCallback } from 'react';\n\nimport { Button, Icon, type Label, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { TextTooltip } from '@dxos/react-ui-text-tooltip';\nimport { getStyles } from '@dxos/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 TreeItemHeadingProps = {\n label: Label;\n className?: string;\n icon?: string;\n iconHue?: string;\n disabled?: boolean;\n current?: boolean;\n onSelect?: (option: boolean) => void;\n};\n\nexport const TreeItemHeading = memo(\n forwardRef<HTMLButtonElement, TreeItemHeadingProps>(\n ({ label, className, icon, iconHue, disabled, current, onSelect }, forwardedRef) => {\n const { t } = useTranslation();\n const styles = iconHue ? getStyles(iconHue) : undefined;\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={[\n 'grow gap-2 ps-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 && (\n <Icon icon={icon ?? 'ph--placeholder--regular'} size={5} classNames={['my-1', styles?.surfaceText]} />\n )}\n <span className='flex-1 w-0 truncate text-start 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 { IconButton, type IconButtonProps } from '@dxos/react-ui';\n\nexport type TreeItemToggleProps = Omit<IconButtonProps, 'icon' | 'size' | 'label'> & {\n open?: boolean;\n isBranch?: boolean;\n hidden?: boolean;\n};\n\nexport const TreeItemToggle = memo(\n forwardRef<HTMLButtonElement, TreeItemToggleProps>(\n ({ open, isBranch, hidden, classNames, ...props }, forwardedRef) => {\n return (\n <IconButton\n ref={forwardedRef}\n data-testid='treeItem.toggle'\n aria-expanded={open}\n variant='ghost'\n density='fine'\n classNames={[\n 'h-full w-6 px-0',\n '[&_svg]:transition-[transform] [&_svg]:duration-200',\n open && '[&_svg]:rotate-90',\n hidden ? 'hidden' : !isBranch && 'invisible',\n classNames,\n ]}\n size={3}\n icon='ph--caret-right--bold'\n iconOnly\n noTooltip\n label={open ? 'Click to close' : 'Click to open'}\n tabIndex={-1}\n {...props}\n />\n );\n },\n ),\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": ";;;AAIA,YAAYA,yBAAwB;AACpC,SAASC,iBAAAA,sBAAqB;AAC9B,OAAOC,YAAuC;AAE9C,SAASC,YAAkC;AAC3C,SAASC,MAAAA,WAAU;;;ACLnB,YAAYC,wBAAwB;AACpC,SAASC,qBAAqB;AAC9B,OAAOC,WAA+B;AAGtC,SAASC,UAAU;AAQnB,IAAMC,iBAAiB;AAEhB,IAAM,CAACC,mBAAmBC,mBAAAA,IAAuBC,cAAqCH,cAAAA;AAM7F,IAAMI,eAAe,CAA2BC,SAAaA,MAAcC;AASpE,IAAMC,gBAAgB,CAA2B,EACtDC,YACAC,OACAC,QAAQN,cACRO,UACAC,OACAC,cACAC,cAAa,MAE8E;AAC3F,SACE,sBAAA,cAACb,mBAAsB;IAAES;EAAM,GAC7B,sBAAA,cAAoBK,yBAAI;IACtBC,MAAK;IACLJ;IACAC;IACAC;IACAG,WAAWC,GAAGV,UAAAA;KAEbG,WAAW;IAAEF,OAAOA,SAAS,CAAA;EAAG,CAAA,CAAA,CAAA;AAIzC;;;AD1CA,IAAMU,sBAAsB;AAQrB,IAAM,CAACC,uBAAuBC,yBAAAA,IACnCC,eAAyCH,mBAAAA;AAIpC,IAAMI,gBAAgB,CAA2B,EAAEC,UAAUC,YAAYC,KAAI,MAAyB;AAC3G,QAAM,EAAEC,MAAK,IAAKC,oBAAoBT,mBAAAA;AAEtC,SACE,gBAAAU,OAAA,cAACT,uBAA0B;IAAEM;EAAK,GAChC,gBAAAG,OAAA,cAAoBC,0BAAI;IAACC,OAAOJ,MAAMD,IAAAA;IAAOM,WAAWC,IAAG,mBAAmBR,UAAAA;KAC3ED,QAAAA,CAAAA;AAIT;AAIO,IAAMU,sBAAsB,CAAC,EAAET,YAAYD,UAAU,GAAGW,MAAAA,MAAiC;AAC9F,SACE,gBAAAN,OAAA,cAAoBO,4BAAM;IAAE,GAAGD;IAAOH,WAAWC,IAAGR,UAAAA;KAClD,gBAAAI,OAAA,cAAoBQ,6BAAO;IAACL,WAAU;KACnCR,UACD,gBAAAK,OAAA,cAACS,MAAAA;IACCC,MAAK;IACLC,MAAM;IACNf,YAAW;;AAKrB;AAIO,IAAMgB,oBAAoB,CAAC,EAAEjB,UAAUC,WAAU,MAA0B;AAChF,SACE,gBAAAI,OAAA,cAAoBa,6BAAO;IAACV,WAAU;KACpC,gBAAAH,OAAA,cAACc,OAAAA;IAAIC,MAAK;IAAOZ,WAAWC,IAAG,OAAOR,UAAAA;KACnCD,QAAAA,CAAAA;AAIT;;;AExDO,IAAMqB,YAAY;EACvBC,MAAMC;EACNC,MAAMC;EACNC,YAAYC;EACZC,UAAUC;AACZ;;;ACZA,SAASC,eAAe;AACxB,SAASC,WAAWC,6BAA6B;AACjD,SAASC,kCAAkC;AAC3C,SAEEC,mBACAC,sBAAAA,2BACK;AACP,SAASC,iBAAAA,sBAAqB;AAC9B,OAAOC,UAMLC,aAAAA,YACAC,QACAC,YAAAA,iBACK;AACP,SAASC,oBAAoB;AAE7B,SAASC,iBAAiB;AAC1B,SACEC,YAEAC,YAAYC,iBAEZC,sBACK;AACP,SAASC,MAAAA,KAAIC,sBAAsB;;;AC7BnC,SAASC,0BAA0B;AACnC,SAASC,0BAA0B;AACnC,SAASC,kCAAkC;AAC3C,SAASC,iBAAAA,sBAAqB;AAC9B,OAAOC,UAAyBC,aAAaC,WAAWC,gBAAgB;AAcxE,IAAMC,YAAY;AAEX,IAAM,CAACC,cAAcC,cAAAA,IAAkBC,eAAgCH,SAAAA;AAO9E,IAAMI,gBAAe,CAA2BC,SAAaA,MAAcC;AAQpE,IAAMC,WAAW,CAA2B,EACjDC,UACAC,OACAC,QACAC,QAAQP,eACRQ,QACA,GAAGC,MAAAA,MACc;AACjB,QAAMC,UAAUC,YACd,CAACC,GAAMC,MAAAA;AACL,UAAMC,MAAMP,QAAQK,CAAAA;AACpB,UAAMG,MAAMR,QAAQM,CAAAA;AAEpB,QAAIC,QAAQE,UAAaD,QAAQC,QAAW;AAC1C,aAAOF,QAAQC;IACjB,OAAO;AAIL,aAAOH,MAAMC;IACf;EACF,GACA;IAACN;GAAM;AAGT,QAAM,CAACU,OAAOC,QAAAA,IAAYC,SAAkCC,IAAAA;AAC5DC,YAAU,MAAA;AACR,QAAI,CAAChB,OAAO;AACV;IACF;AAEA,WAAOiB,mBAAmB;MACxBC,YAAY,CAAC,EAAEC,OAAM,MAAOlB,SAASkB,OAAOC,IAAI,KAAK;MACrDC,QAAQ,CAAC,EAAEC,UAAUH,OAAM,MAAE;AAC3B,cAAMI,SAASD,SAASE,QAAQC,YAAY,CAAA;AAC5C,YAAI,CAACF,QAAQ;AACX;QACF;AAEA,cAAMG,aAAaP,OAAOC;AAC1B,cAAMO,aAAaJ,OAAOH;AAC1B,YAAI,CAACnB,SAASyB,UAAAA,KAAe,CAACzB,SAAS0B,UAAAA,GAAa;AAClD;QACF;AAEA,cAAMC,YAAY5B,MAAM6B,UAAU,CAACjC,SAASS,QAAQT,MAAM8B,UAAAA,CAAAA;AAC1D,cAAMI,YAAY9B,MAAM6B,UAAU,CAACjC,SAASS,QAAQT,MAAM+B,UAAAA,CAAAA;AAC1D,YAAIG,YAAY,KAAKF,YAAY,GAAG;AAClC;QACF;AACA,cAAMG,sBAAsBC,mBAAmBL,UAAAA;AAC/C,cAAMM,mBAAmBC,2BAA2B;UAClDH;UACAI,YAAYP;UACZQ,eAAeN;UACfO,MAAM;QACR,CAAA;AAEAlC,iBAASyB,WAAWK,gBAAAA;MACtB;IACF,CAAA;EACF,GAAG;IAACjC;IAAOK;IAASF;GAAO;AAE3B,SACE,gBAAAmC,OAAA,cAAC9C,cAAiB;IAAEoB;IAAOC;IAAUZ;IAAQ,GAAGG;EAAM,GAAIL,WAAW;IAAEa;IAAOZ,OAAOA,SAAS,CAAA;EAAG,CAAA,CAAA;AAErG;;;;ADlDO,IAAMuC,OAAsB;EAAEC,MAAM;AAAO;AAElD,IAAMC,cAAgG;EACpG,cAAc;AAChB;AAUA,IAAMC,iBAAuC,CAAC;AAE9C,IAAMC,iBAAiB;AAEhB,IAAM,CAACC,kBAAkBC,kBAAAA,IAAsBC,eACpDH,gBACAD,cAAAA;AAcK,IAAMK,WAAW,CAA2B,EAAEC,UAAUC,YAAYC,MAAM,GAAGC,MAAAA,MAAyB;AAC3G,QAAM,EAAEC,QAAQC,UAAUC,aAAaC,UAAUC,aAAY,IAAKC,eAAed,cAAAA;AACjF,QAAMe,MAAMC,OAA8B,IAAA;AAC1C,QAAMC,gBAAgBD,OAA2B,IAAA;AACjD,QAAM,CAACE,OAAON,QAAAA,IAAYO,UAAwBvB,IAAAA;AAElDwB,EAAAA,WAAU,MAAA;AACR,UAAMC,UAAUN,IAAIO;AACpBC,cAAUF,SAAAA,QAAAA;;;;;;;;;AACV,WAAOG;;;;MAILC,UAAU;QACRJ;QACAK,YAAYT,cAAcK;QAC1BK,SAAS,MAAM,CAACjB;QAChBkB,gBAAgB,MAAMrB;QACtBsB,uBAAuBlB,cACnB,CAAC,EAAEmB,oBAAoBC,OAAM,MAAE;AAC7B,gBAAMC,OAAOD,OAAOV,QAAQY,sBAAqB;AACjDC,qCAA2B;YACzBJ;YACAK,WAAW,CAAC,EAAEC,UAAS,MAAE;AACvB,oBAAM,EAAEC,OAAM,IAAKD,UAAUH,sBAAqB;AAClD,qBAAO;gBAAEK,GAAG;gBAAIC,GAAGF,SAAS;cAAE;YAChC;YACAG,QAAQ,CAAC,EAAEJ,UAAS,MAAE;AACpBA,wBAAUK,MAAMC,QAAQV,KAAKU,QAAQ;AACrC9B,uBAAS;gBAAEf,MAAM;gBAAWuC;cAAU,CAAA;AACtCvB,2BAAa;gBAAEhB,MAAM;gBAAWuC;gBAAW7B;cAAK,CAAA;AAChD,qBAAO,MAAA;cAAO;YAChB;UACF,CAAA;QACF,IACAoC;QACJC,aAAa,MAAA;AACXhC,mBAAS;YAAEf,MAAM;UAAa,CAAA;AAC9BgB,uBAAa;YAAEhB,MAAM;YAAcU;UAAK,CAAA;QAC1C;QACAsC,QAAQ,MAAA;AACNjC,mBAAShB,IAAAA;AACTiB,uBAAajB,IAAAA;QACf;MACF,CAAA;;;;MAKAkD,sBAAsB;QACpBzB;QACA0B,SAAS,CAAC,EAAEhB,OAAM,MAAE;AAClB,kBAAQA,OAAOV,YAAYA,WAAWZ,SAASsB,OAAOiB,IAAI,MAAM;QAClE;QACAC,SAAS,CAAC,EAAEC,MAAK,MAAE;AACjB,iBAAOC,kBAAkB5C,MAAa;YAAEc;YAAS6B;YAAOE,cAAc;cAAC;cAAO;;UAAU,CAAA;QAC1F;QACAC,aAAa,MAAM;QACnBC,aAAa,CAAC,EAAEC,KAAI,MAAE;AACpB,gBAAMC,cAAcC,oBAAmBF,KAAKP,IAAI;AAChDpC,mBAAS;YAAEf,MAAM;YAAmB2D;UAAY,CAAA;QAClD;QACAE,aAAa,MAAA;AACX9C,mBAAShB,IAAAA;QACX;QACA+D,QAAQ,CAAC,EAAEJ,KAAI,MAAE;AACf,gBAAMC,cAAcC,oBAAmBF,KAAKP,IAAI;AAChDpC,mBAAS,CAACU,YAAAA;AACR,gBAAIA,QAAQzB,SAAS,qBAAqByB,QAAQkC,gBAAgBA,aAAa;AAC7E,qBAAOlC;YACT;AACA,mBAAO;cAAEzB,MAAM;cAAmB2D;YAAY;UAChD,CAAA;QACF;QACAX,QAAQ,MAAA;AACNjC,mBAAShB,IAAAA;QACX;MACF,CAAA;IAAA;EAEJ,GAAG;IAACW;GAAK;AAET,SACE,gBAAAqD,OAAA,cAAC3D,kBAAAA;IAAiBM;IAAYU;KAC5B,gBAAA2C,OAAA,cAACC,OAAAA;IAAI9C;IAAU+C,MAAK;IAAWC,WAAWC,IAAG,iBAAiB1D,YAAYR,YAAYoB,MAAMrB,IAAI,CAAC;IAAI,GAAGW;KACrGH,UACAa,MAAMrB,SAAS,qBAAqBqB,MAAMsC,eACzC,gBAAAI,OAAA,cAACK,gBAAgBC,eAAa;IAACC,MAAMjD,MAAMsC;;AAKrD;AAMO,IAAMY,uBAAuB,CAAC,EACnCC,WAAW,MACX/D,YACAgE,UACAC,OAAO,kBACPC,OACA,GAAGhE,MAAAA,MAE6E;AAChF,QAAM,EAAEU,MAAK,IAAKJ,eAAe,eAAA;AACjC,QAAM2D,aAAavD,MAAMrB,SAAS,UAAUyE;AAC5C,QAAM,EAAEI,EAAC,IAAKC,eAAeC,cAAAA;AAC7B,SACE,gBAAAhB,OAAA,cAACiB,YAAAA;IACCC,UAAAA;IACAC,SAAQ;IACP,GAAGvE;IACJ+D;IACAD,UAAUG;IACVD,OAAOA,SAASE,EAAE,cAAA;IAClBpE,YAAY;MAACA;MAAY+D,YAAYC,YAAY;;;AAGvD;AAEO,IAAMU,iBAAiB,CAAC,EAC7BX,WAAW,MACXS,WAAW,MACXC,UAAU,SACVzE,YACAgE,UACA,GAAG9D,MAAAA,MACsC;AACzC,QAAM,EAAEU,MAAK,IAAKJ,eAAe,aAAA;AACjC,QAAM2D,aAAavD,MAAMrB,SAAS,UAAUyE;AAC5C,SACE,gBAAAV,OAAA,cAACiB,YAAAA;IACE,GAAGrE;IACJ8D,UAAUG;IACVK;IACAC;IACAzE,YAAY;MAACA;MAAY+D,YAAYC,YAAY;;;AAGvD;AAEO,IAAMW,qBAAqB,CAAC,EAAEX,SAAQ,MAAqC;AAChF,QAAM,EAAErD,cAAa,IAAKf,mBAAmB,aAAA;AAC7C,QAAM,EAAEwE,EAAC,IAAKC,eAAeC,cAAAA;AAC7B,SACE,gBAAAhB,OAAA,cAACiB,YAAAA;IACCC,UAAAA;IACAC,SAAQ;IACRP,OAAOE,EAAE,mBAAA;IACT3D,KAAKE;IACLsD,MAAK;IACLD;;AAGN;AAEO,IAAMY,sBAAsB,CAA2B,EAC5D7E,SAAQ,MAGT;AACC,QAAM,EAAEa,MAAK,IAAKJ,eAAe,cAAA;AACjC,SAAOI,OAAOrB,SAAS,YAAYsF,6BAAa9E,SAAS;IAAEE,MAAMW,MAAMX;EAAK,CAAA,GAAIW,MAAMkB,SAAS,IAAI;AACrG;AAEO,IAAMgD,kBAAkB,CAAC,EAAE9E,YAAYD,SAAQ,MACpD,gBAAAuD,OAAA,cAACC,OAAAA;EAAIE,WAAWC,IAAG,qBAAqB1D,UAAAA;GAAcD,QAAAA;AAGjD,IAAMgF,gBAAgB,CAAC,EAC5B/E,YACAD,UACA,GAAGG,MAAAA,MAEH,gBAAAoD,OAAA,cAACC,OAAAA;EAAIE,WAAWC,IAAG,mCAAmC1D,UAAAA;EAAc,GAAGE;GACpEH,QAAAA;;;AE7OE,IAAMiF,OAAO;EAClBC,MAAMC;EACNC,MAAMC;EACNC,iBAAiBC;EACjBC,aAAaC;EACbC,gBAAgBC;EAChBC,kBAAkBC;EAClBC,YAAYC;EACZC,WAAWC;AACb;;;ACnCA,SAASC,gBAAAA,qBAAoB;AAC7B,OAAOC,UAASC,WAAAA,gBAAe;AAE/B,SAASC,YAAAA,iBAAwC;;;ACDjD,SAASC,iBAAAA,gBAAeC,kBAAkB;AAE1C,SAASC,aAAa;AAgCtB,IAAMC,cAAcC,gBAAAA,eAAgC,IAAA;AAE7C,IAAMC,eAAeF,YAAYG;AAEjC,IAAMC,UAAU,MAAMC,WAAWL,WAAAA,KAAgBM,MAAM,IAAIC,MAAM,uBAAA,CAAA;;;ACvCxE,SAASC,WAAAA,gBAAe;AACxB,SAASC,aAAAA,YAAWC,yBAAAA,8BAA6B;AACjD,SAGEC,mBACAC,0BACK;AACP,SAASC,oBAAoB;AAC7B,YAAYC,YAAY;AACxB,OAAOC,UAILC,QAAAA,OACAC,eAAAA,cACAC,aAAAA,YACAC,SACAC,UAAAA,SACAC,YAAAA,iBACK;AAEP,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,YAAYC,iBAAiBC,gBAAgB;AACtD,SACEC,kBACAC,YACAC,mBACAC,kCACAC,gCACAC,MAAAA,WACK;;;AC/BA,IAAMC,sBAAsB;AAE5B,IAAMC,qBAAqB,CAACC,OAAeC,cAAcH,yBAAyB;EACvFI,oBAAoB,IAAIF,QAAQ,KAAKC,WAAAA;AACvC;;;ACJA,OAAOE,UAA8CC,YAAYC,MAAMC,eAAAA,oBAAmB;AAE1F,SAASC,QAAQC,QAAAA,OAAkBC,mBAAmBC,kBAAAA,uBAAsB;AAC5E,SAASC,mBAAmB;AAC5B,SAASC,iBAAiB;AAcnB,IAAMC,kBAAkBC,qBAC7BC,2BACE,CAAC,EAAEC,OAAOC,WAAWC,MAAMC,SAASC,UAAUC,SAASC,SAAQ,GAAIC,iBAAAA;AACjE,QAAM,EAAEC,EAAC,IAAKC,gBAAAA;AACd,QAAMC,SAASP,UAAUQ,UAAUR,OAAAA,IAAWS;AAE9C,QAAMC,eAAeC,aACnB,CAACC,UAAAA;AACCT,eAAWS,MAAMC,MAAM;EACzB,GACA;IAACV;GAAS;AAGZ,QAAMW,sBAAsBH,aAC1B,CAACC,UAAAA;AACC,QAAIA,MAAMG,QAAQ,OAAOH,MAAMG,QAAQ,SAAS;AAC9CH,YAAMI,eAAc;AACpBJ,YAAMK,gBAAe;AACrBd,iBAAWS,MAAMC,MAAM;IACzB;EACF,GACA;IAACV;GAAS;AAGZ,SACE,gBAAAe,OAAA,cAACC,aAAAA;IACCC,MAAMC,kBAAkBxB,OAAOQ,CAAAA;IAC/BiB,MAAK;IACLC,eAAc;IACdC,oBAAAA;IACAC,SAAAA;IACAC,KAAKtB;KAEL,gBAAAc,OAAA,cAACS,QAAAA;IACCC,eAAY;IACZC,SAAQ;IACRC,SAAQ;IACRC,YAAY;MACV;MACA;MACAjC;;IAEFG;IACA+B,SAAStB;IACTuB,WAAWnB;IACV,GAAIZ,WAAW;MAAE,gBAAgB;IAAW;KAE5CH,QACC,gBAAAmB,OAAA,cAACgB,OAAAA;IAAKnC,MAAMA,QAAQ;IAA4BoC,MAAM;IAAGJ,YAAY;MAAC;MAAQxB,QAAQ6B;;MAExF,gBAAAlB,OAAA,cAACmB,QAAAA;IAAKvC,WAAU;IAA6CwC,gBAAAA;KAC1DjB,kBAAkBxB,OAAOQ,CAAAA,CAAAA,CAAAA,CAAAA;AAKpC,CAAA,CAAA;;;AC1EJ,OAAOkC,UAASC,cAAAA,aAAYC,QAAAA,aAAY;AAExC,SAASC,cAAAA,mBAAwC;AAQ1C,IAAMC,iBAAiBC,gBAAAA,MAC5BC,gBAAAA,YACE,CAAC,EAAEC,MAAMC,UAAUC,QAAQC,YAAY,GAAGC,MAAAA,GAASC,iBAAAA;AACjD,SACE,gBAAAC,OAAA,cAACC,aAAAA;IACCC,KAAKH;IACLI,eAAY;IACZC,iBAAeV;IACfW,SAAQ;IACRC,SAAQ;IACRT,YAAY;MACV;MACA;MACAH,QAAQ;MACRE,SAAS,WAAW,CAACD,YAAY;MACjCE;;IAEFU,MAAM;IACNC,MAAK;IACLC,UAAAA;IACAC,WAAAA;IACAC,OAAOjB,OAAO,mBAAmB;IACjCkB,UAAU;IACT,GAAGd;;AAGV,CAAA,CAAA;;;;AHEJ,IAAMe,4BACJ;AAIK,IAAMC,iBAAwBC,cAAO;EAC1CC,IAAWC;EACXC,MAAaC,aAAaF,aAAM;EAChCG,MAAaC;AACf,CAAA;AAGO,IAAMC,aAAa,CAACC,SAA2CC,UAAGV,cAAAA,EAAgBS,IAAAA;AAyBzF,IAAME,cAAc,CAAiC,EACnDL,MACAF,MAAMQ,UACNC,cAAc,GACdC,MACAC,WAAWC,eACXC,eAAeC,SACfC,kBACAC,SACAC,WACAC,cACAC,UACAC,YAAW,MACM;AACjB,QAAMC,SAASC,QAA8B,IAAA;AAC7C,QAAMC,YAAYD,QAAiC,IAAA;AACnD,QAAME,UAAUF,QAAO,KAAA;AACvB,QAAMG,kBAAkBH,QAA8B,IAAA;AACtD,QAAM,CAACI,QAAQC,QAAAA,IAAYC,UAA4B,MAAA;AACvD,QAAM,CAACC,aAAaC,cAAAA,IAAkBF,UAA6B,IAAA;AACnE,QAAM,CAACG,UAAUC,WAAAA,IAAeJ,UAAS,KAAA;AAEzC,QAAM,EACJK,WAAWC,eACXC,UAAUC,cACVC,UAAUC,cACVC,aAAaC,gBAAe,IAC1BC,QAAAA;AACJ,QAAMzC,OAAO0C,QAAQ,MAAM;OAAIlC;IAAUN,KAAKJ;KAAK;IAACU;IAAUN,KAAKJ;GAAG;AAEtE,QAAM,EACJA,IACA6C,UACAhC,WAAWiC,eACXC,WAAWC,eACXC,OACAC,WACAC,kBACAC,MACAC,SACAC,UACAC,OAAM,IACJC,aAAapB,cAAclC,IAAAA,CAAAA;AAC/B,QAAMmC,WAAWmB,aAAalB,aAAalC,KAAKJ,EAAE,CAAA;AAClD,QAAMyD,OAAOD,aAAahB,aAAatC,IAAAA,CAAAA;AACvC,QAAMwD,UAAUF,aAAad,gBAAgBxC,IAAAA,CAAAA;AAE7C,QAAMyD,QAAQzD,KAAK0D,SAASjD;AAC5B,QAAMkD,WAAW,CAAC,CAAChB;AACnB,QAAMiB,OAAiBlD,OAAO,kBAAkB6C,OAAO,aAAa;AACpE,QAAMM,gBAAgB5C,YAAY;IAAEf;IAAMF;EAAK,CAAA,KAAM;AACrD,QAAMK,OAAO;IAAEP;IAAIE;IAAME;EAAK;AAE9B,QAAM4D,eAAeC,aAAY,MAAA;AAC/B,QAAItC,gBAAgB+B,SAAS;AAC3BQ,mBAAavC,gBAAgB+B,OAAO;AACpC/B,sBAAgB+B,UAAU;IAC5B;EACF,GAAG,CAAA,CAAE;AAEL,QAAMS,kBAAkBrD,iBAAiBgC,kBAAkB;AAC3D,QAAMsB,kBAAkBpB,kBAAkB;AAE1CqB,EAAAA,WAAU,MAAA;AACR,QAAI,CAACvD,eAAe;AAClB;IACF;AAEAwD,IAAAA,WAAU7C,UAAUiC,SAAO,QAAA;;;;;;;;;AAE3B,UAAMa,gBAAgB,MACpB1D,WAAU;MACR2D,SAAS/C,UAAUiC;MACnBe,gBAAgB,MAAMlE;MACtBmE,aAAa,MAAA;AACX7C,iBAAS,UAAA;AACT,YAAI4B,MAAM;AACR/B,kBAAQgC,UAAU;AAClBtC,yBAAe;YAAEhB;YAAMF;YAAMuD,MAAM;UAAM,CAAA;QAC3C;MACF;MACAkB,QAAQ,MAAA;AACN9C,iBAAS,MAAA;AACT,YAAIH,QAAQgC,SAAS;AACnBtC,yBAAe;YAAEhB;YAAMF;YAAMuD,MAAM;UAAK,CAAA;QAC1C;MACF;IACF,CAAA;AAEF,QAAI,CAACW,iBAAiB;AACpB,aAAOD,kBAAkBI,cAAAA,IAAkBK;IAC7C;AAEA,UAAMC,aAAaC,uBAAsB;MACvCN,SAAS/C,UAAUiC;MACnBqB,SAAS,CAAC,EAAEC,OAAOR,QAAO,MAAE;AAC1B,eAAOS,kBAAkB1E,MAAM;UAC7ByE;UACAR;UACAU,gBAAgBC;UAChBC,cAAczB;UACdG;UACAuB,OAAOxB,WAAW,CAAA,IAAK;YAAC;;QAC1B,CAAA;MACF;MACA3C,SAAS,CAAC,EAAEoE,OAAM,MAAE;AAClB,cAAMC,WAAWrE,YAAY,MAAM;AACnC,eAAOoE,OAAOd,YAAY/C,UAAUiC,WAAW6B,SAAS;UAAED,QAAQA,OAAO/E;UAAkBiF,QAAQjF;QAAK,CAAA;MAC1G;MACAkF,aAAa,MAAM;MACnBC,QAAQ,CAAC,EAAEC,MAAML,OAAM,MAAE;AACvB,cAAMM,UAAUC,mBAAmBF,KAAKpF,IAAI;AAC5C,cAAM8E,QACJO,WAAW3E,mBAAmB;UAAEc,aAAa6D;UAASN,QAAQA,OAAO/E;UAAkBiF,QAAQjF;QAAK,CAAA;AACtG,cAAMwB,eACJsD,SAASO,QAAQE,SAAS,wBAAwB;UAAEA,MAAM;UAAuBF;QAAQ,IAAIA;AAE/F,YAAIN,OAAO/E,KAAKP,OAAOA,IAAI;AACzB,cAAI+B,cAAa+D,SAAS,gBAAgBjC,YAAY,CAACJ,QAAQ,CAAC9B,gBAAgB+B,SAAS;AACvF/B,4BAAgB+B,UAAUqC,WAAW,MAAA;AACnC3E,6BAAe;gBAAEhB;gBAAMF;gBAAMuD,MAAM;cAAK,CAAA;YAC1C,GAAG,GAAA;UACL;AAEA,cAAI1B,cAAa+D,SAAS,cAAc;AACtC9B,yBAAAA;UACF;AAEAhC,yBAAeD,YAAAA;QACjB,WAAWA,cAAa+D,SAAS,YAAY;AAE3C9D,yBAAeD,YAAAA;QACjB,OAAO;AACLC,yBAAe,IAAA;QACjB;MACF;MACAgE,aAAa,MAAA;AACXhC,qBAAAA;AACAhC,uBAAe,IAAA;MACjB;MACA2C,QAAQ,MAAA;AACNX,qBAAAA;AACAhC,uBAAe,IAAA;MACjB;IACF,CAAA;AAEA,QAAI,CAACmC,iBAAiB;AACpB,aAAOU;IACT;AAGA,WAAOoB,SAAQ1B,cAAAA,GAAiBM,UAAAA;EAClC,GAAG;IAAC/D;IAAeqD;IAAiBC;IAAiBhE;IAAMJ;IAAI8D;IAAM5D;IAAMuD;IAAMxC;IAAkBC;GAAQ;AAG3GmD,EAAAA,WAAU,MAAM,MAAML,aAAAA,GAAgB;IAACA;GAAa;AAEpD,QAAMkC,mBAAmBjC,aACvB,MAAM7C,eAAe;IAAEhB;IAAMF;IAAMuD,MAAM,CAACA;EAAK,CAAA,GAC/C;IAACrC;IAAchB;IAAMF;IAAMuD;GAAK;AAGlC,QAAM0C,eAAelC,aACnB,CAACmC,SAAS,UAAK;AAIb,QAAIvC,aAAauC,UAAU1C,UAAU;AACnCwC,uBAAAA;IACF,WAAWnC,eAAe;AACxB5C,kBAAY;QAAEf;QAAMF;MAAK,CAAA;AACzBqB,aAAOmC,SAAS2C,MAAAA;AAChBhF,iBAAW;QAAEjB;QAAMF;QAAMwD,SAAS,CAACA;QAAS0C;MAAO,CAAA;IACrD;EACF,GACA;IAAChG;IAAMF;IAAMwD;IAASG;IAAUE;IAAemC;IAAkB7E;GAAS;AAG5E,QAAMiF,gBAAgBrC,aACpB,CAACsC,UAAAA;AACC,YAAQA,MAAMC,KAAG;MACf,KAAK;MACL,KAAK;AACH3C,oBAAYqC,iBAAAA;AACZ;IACJ;EACF,GACA;IAACrC;IAAUJ;IAAMyC;IAAkBC;GAAa;AAGlD,QAAMM,kBAAkBxC,aAAY,MAAA;AAClC3C,kBAAc;MAAElB;IAAK,CAAA;EACvB,GAAG;IAACkB;IAAalB;GAAK;AAEtB,QAAMsG,oBAAoBzC,aACxB,CAACsC,UAAAA;AACCA,UAAMI,eAAc;AACpBzE,gBAAY,IAAA;EACd,GACA;IAACA;GAAY;AAGf,QAAM0E,aAAa;IACjB/F,WAAWC;IACXC,eAAeC;IACfC;IACAC;IACAC;IACAG;IACAF;IACAC;EACF;AAEA,SACE,gBAAAwF,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACC,SAASC,KAAG;IACXC,KAAKzF;IACLiF,KAAKxG;IACLA;IACAiH,mBAAiB,GAAGjH,EAAAA;IACpB6C,UAAUA,UAAUqE,KAAKJ,SAASK,mBAAmB;IACrDC,kBAAgBpH;IAChBqH,eAAa9D;;;;IAIb+D,gBAAc5D,UAAW,KAAgBkB;IACzC2C,YAAYC,IACV,6EACAC,mBACAC,kCACAC,gCACA9H,2BACA+H,kBACAC,YACA3E,SAAAA;IAEF4E,WAAWxB;IACXyB,cAActB;IACduB,eAAetB;KAEf,gBAAAG,OAAA,cAACoB,OAAAA;IACCC,MAAK;IACLhF,WAAU;IACViF,OAAOC,mBAAmBzE,KAAAA;KAE1B,gBAAAkD,OAAA,cAACC,SAASuB,MAAI;IAACd,YAAW;KACxB,gBAAAV,OAAA,cAACyB,gBAAAA;IAAezE;IAAoBJ;IAAY8E,SAASrC;MACzD,gBAAAW,OAAA,cAAC2B,iBAAAA;IACClF;IACAI;IACAT;IACAC,WAAWC;IACXC;IACAC;IACAhC,UAAU8E;IACVa,KAAKvF;OAGRT,WAAW,gBAAA6F,OAAA,cAAC7F,SAAAA;IAAQZ;IAAYF;IAAYuD;IAAYxB;IAAoBC;MAC5EH,eAAe,gBAAA8E,OAAA,cAAC4B,gBAAgBC,eAAa;IAAC3G;IAA0B4G,KAAK;QAGjFlF,QACCpB,SAASuG,IAAI,CAACC,SAASC,UACrB,gBAAAjC,OAAA,cAACkC,cAAAA;IAAavC,KAAKqC;IAAS7I,IAAI6I;IAAS3I;IAAYU,MAAMkI,UAAUzG,SAASuB,SAAS;IAAI,GAAGgD;;AAIxG;AAEO,IAAMoC,WAAWC,gBAAAA,MAAKxI,WAAAA;AAK7B,IAAMyI,kBAAkB,CAAiC,EAAElJ,IAAI,GAAGmJ,MAAAA,MAA0B;AAC1F,QAAM,EAAE/I,MAAMgJ,SAAQ,IAAKzG,QAAAA;AAC3B,QAAMvC,OAAOoD,aAAa4F,SAASpJ,EAAAA,CAAAA;AACnC,MAAI,CAACI,MAAM;AACT,WAAO;EACT;AACA,SAAO,gBAAAyG,OAAA,cAACmC,UAAAA;IAAS5I;IAAa,GAAG+I;;AACnC;AAEO,IAAMJ,eAAeE,gBAAAA,MAAKC,eAAAA;;;AF9U1B,IAAMG,OAAO,CAAiC,EACnDC,OACAC,QACAC,MACAC,IACAC,WAAAA,aAAY,OACZC,sBAAsB,mDACtBC,YACAC,aACAC,eACAC,kBACAC,SACAC,WACAC,cACAC,UACAC,YAAW,MACE;AACb,QAAMC,WAAWC,cAAahB,MAAMe,SAASd,MAAAA,CAAAA;AAC7C,QAAMgB,WAAWC,SAAQ,MAAOhB,OAAO;OAAIA;IAAMC;MAAM;IAACA;KAAM;IAACA;IAAID;GAAK;AAExE,QAAMiB,aAAqD;IACzDjB,MAAMe;IACNV;IACAH,WAAAA;IACAI;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;EACF;AAEA,SACE,gBAAAM,OAAA,cAACC,UAASC,MAAI;IAACjB;IAA0CC;KACvD,gBAAAc,OAAA,cAACG,cAAAA;IAAaC,OAAOxB;KAClBe,SAASU,IAAI,CAACC,SAASC,UACtB,gBAAAP,OAAA,cAACQ,cAAAA;IAAaC,KAAKH;IAASvB,IAAIuB;IAASI,MAAMH,UAAUZ,SAASgB,SAAS;IAAI,GAAGZ;;AAK5F;;;AMpEA,IAAMa,YAAY;AAEX,IAAMC,OAAO;EAClBC,QAAQ,IAAIC,SAAmBA,KAAKC,KAAKJ,SAAAA;EAEzCK,OAAO,CAACC,SAAiBA,KAAKC,MAAMP,SAAAA;EACpCQ,QAAQ,CAACF,SAAiBA,KAAKC,MAAMP,SAAAA,EAAWQ;EAChDC,OAAO,CAACH,SAAiBA,KAAKC,MAAMP,SAAAA,EAAW,CAAA,KAAMM;EACrDI,MAAM,CAACJ,SAAiBA,KAAKC,MAAMP,SAAAA,EAAWW,GAAG,EAAC,KAAML;EACxDM,QAAQ,CAACN,SAAiBA,KAAKC,MAAMP,SAAAA,EAAWa,MAAM,GAAG,EAAC,EAAGT,KAAKJ,SAAAA;EAElEc,SAAS,CAACR,MAAcS,OAAed,KAAKQ,MAAMH,IAAAA,MAAUS;EAC5DC,UAAU,CAACV,MAAcW,YAAoBhB,KAAKW,OAAOK,OAAAA,MAAaX;EACtEY,eAAe,CAACZ,MAAcW,YAAoBA,YAAYX,QAAQW,QAAQE,WAAWb,IAAAA;EACzFc,UAAU,CAACd,MAAcW,YAAoBhB,KAAKW,OAAON,IAAAA,MAAUL,KAAKW,OAAOK,OAAAA;EAC/EI,QAAQ,CAACf,MAAcS,OAAed,KAAKI,MAAMC,IAAAA,EAAMgB,SAASP,EAAAA;AAClE;",
|
|
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", "useDxAccordionItemContext", "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", "useEffect", "useRef", "useState", "createPortal", "invariant", "IconButton", "ListItem", "NaturalListItem", "useTranslation", "mx", "osTranslations", "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", "ListItemDeleteButton", "autoHide", "disabled", "icon", "label", "isDisabled", "t", "useTranslation", "osTranslations", "IconButton", "iconOnly", "variant", "ListItemButton", "ListItemDragHandle", "ListItemDragPreview", "createPortal", "ListItemWrapper", "ListItemTitle", "List", "Root", "ListRoot", "Item", "ListItem", "ItemDragPreview", "ListItemDragPreview", "ItemWrapper", "ListItemWrapper", "ItemDragHandle", "ListItemDragHandle", "ItemDeleteButton", "ListItemDeleteButton", "ItemButton", "ListItemButton", "ItemTitle", "ListItemTitle", "useAtomValue", "React", "useMemo", "Treegrid", "createContext", "useContext", "raise", "TreeContext", "createContext", "TreeProvider", "Provider", "useTree", "useContext", "raise", "Error", "combine", "draggable", "dropTargetForElements", "attachInstruction", "extractInstruction", "useAtomValue", "Schema", "React", "memo", "useCallback", "useEffect", "useMemo", "useRef", "useState", "invariant", "TreeItem", "NaturalTreeItem", "Treegrid", "ghostFocusWithin", "ghostHover", "hoverableControls", "hoverableFocusedKeyboardControls", "hoverableFocusedWithinControls", "mx", "DEFAULT_INDENTATION", "paddingIndentation", "level", "indentation", "paddingInlineStart", "React", "forwardRef", "memo", "useCallback", "Button", "Icon", "toLocalizedString", "useTranslation", "TextTooltip", "getStyles", "TreeItemHeading", "memo", "forwardRef", "label", "className", "icon", "iconHue", "disabled", "current", "onSelect", "forwardedRef", "t", "useTranslation", "styles", "getStyles", "undefined", "handleSelect", "useCallback", "event", "altKey", "handleButtonKeydown", "key", "preventDefault", "stopPropagation", "React", "TextTooltip", "text", "toLocalizedString", "side", "truncateQuery", "onlyWhenTruncating", "asChild", "ref", "Button", "data-testid", "variant", "density", "classNames", "onClick", "onKeyDown", "Icon", "size", "surfaceText", "span", "data-tooltip", "React", "forwardRef", "memo", "IconButton", "TreeItemToggle", "memo", "forwardRef", "open", "isBranch", "hidden", "classNames", "props", "forwardedRef", "React", "IconButton", "ref", "data-testid", "aria-expanded", "variant", "density", "size", "icon", "iconOnly", "noTooltip", "label", "tabIndex", "hoverableDescriptionIcons", "TreeDataSchema", "Struct", "id", "String", "path", "Array", "item", "Any", "isTreeData", "data", "is", "RawTreeItem", "pathProp", "levelOffset", "last", "draggable", "draggableProp", "renderColumns", "Columns", "blockInstruction", "canDrop", "canSelect", "onOpenChange", "onSelect", "onItemHover", "rowRef", "useRef", "buttonRef", "openRef", "cancelExpandRef", "_state", "setState", "useState", "instruction", "setInstruction", "menuOpen", "setMenuOpen", "itemProps", "itemPropsAtom", "childIds", "childIdsAtom", "itemOpen", "itemOpenAtom", "itemCurrent", "itemCurrentAtom", "useTree", "useMemo", "parentOf", "itemDraggable", "droppable", "itemDroppable", "label", "className", "headingClassName", "icon", "iconHue", "disabled", "testId", "useAtomValue", "open", "current", "level", "length", "isBranch", "mode", "canSelectItem", "cancelExpand", "useCallback", "clearTimeout", "isItemDraggable", "isItemDroppable", "useEffect", "invariant", "makeDraggable", "element", "getInitialData", "onDragStart", "onDrop", "undefined", "dropTarget", "dropTargetForElements", "getData", "input", "attachInstruction", "indentPerLevel", "DEFAULT_INDENTATION", "currentLevel", "block", "source", "_canDrop", "target", "getIsSticky", "onDrag", "self", "desired", "extractInstruction", "type", "setTimeout", "onDragLeave", "combine", "handleOpenToggle", "handleSelect", "option", "focus", "handleKeyDown", "event", "key", "handleItemHover", "handleContextMenu", "preventDefault", "childProps", "React", "Treegrid", "Row", "ref", "aria-labelledby", "join", "PARENT_OF_SEPARATOR", "data-object-id", "data-testid", "aria-current", "classNames", "mx", "hoverableControls", "hoverableFocusedKeyboardControls", "hoverableFocusedWithinControls", "ghostFocusWithin", "ghostHover", "onKeyDown", "onMouseEnter", "onContextMenu", "div", "role", "style", "paddingIndentation", "Cell", "TreeItemToggle", "onClick", "TreeItemHeading", "NaturalTreeItem", "DropIndicator", "gap", "map", "childId", "index", "TreeItemById", "TreeItem", "memo", "RawTreeItemById", "props", "itemAtom", "Tree", "model", "rootId", "path", "id", "draggable", "gridTemplateColumns", "classNames", "levelOffset", "renderColumns", "blockInstruction", "canDrop", "canSelect", "onOpenChange", "onSelect", "onItemHover", "childIds", "useAtomValue", "treePath", "useMemo", "childProps", "React", "Treegrid", "Root", "TreeProvider", "value", "map", "childId", "index", "TreeItemById", "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":{"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":7765,"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}],"format":"esm"},"src/components/Tree/TreeItemToggle.tsx":{"bytes":3424,"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}],"format":"esm"},"src/components/Tree/helpers.ts":{"bytes":1170,"imports":[],"format":"esm"},"src/components/Tree/TreeItem.tsx":{"bytes":32992,"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":56900},"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":"@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}],"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":8995},"src/components/Tree/TreeItemHeading.tsx":{"bytesInOutput":2017},"src/components/Tree/TreeItemToggle.tsx":{"bytesInOutput":985},"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":29201}}}
|
|
1
|
+
{"inputs":{"src/components/Accordion/AccordionRoot.tsx":{"bytes":4438,"imports":[{"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/ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/components/Accordion/AccordionItem.tsx":{"bytes":7235,"imports":[{"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/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":10774,"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":"src/components/List/ListItem.tsx","kind":"import-statement","original":"./ListItem"}],"format":"esm"},"src/components/List/ListItem.tsx":{"bytes":26017,"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/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":3449,"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":3141,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"src/components/Tree/helpers.ts":{"bytes":1170,"imports":[],"format":"esm"},"src/components/Tree/TreeItemHeading.tsx":{"bytes":8011,"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/ui-theme","kind":"import-statement","external":true}],"format":"esm"},"src/components/Tree/TreeItemToggle.tsx":{"bytes":3760,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"src/components/Tree/TreeItem.tsx":{"bytes":38697,"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":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Schema","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/ui-theme","kind":"import-statement","external":true},{"path":"src/components/Tree/helpers.ts","kind":"import-statement","original":"./helpers"},{"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"}],"format":"esm"},"src/components/Tree/Tree.tsx":{"bytes":5815,"imports":[{"path":"@effect-atom/atom-react","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":836,"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"},{"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/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":61849},"dist/lib/node-esm/index.mjs":{"imports":[{"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/ui-theme","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/ui-theme","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/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":"@effect-atom/atom-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":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Schema","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/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/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["Accordion","DEFAULT_INDENTATION","List","Path","Tree","TreeDataSchema","TreeItem","TreeItemById","TreeItemToggle","TreeProvider","isTreeData","paddingIndentation","useTree"],"entryPoint":"src/index.ts","inputs":{"src/components/Accordion/AccordionItem.tsx":{"bytesInOutput":1673},"src/components/Accordion/AccordionRoot.tsx":{"bytesInOutput":750},"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":6834},"src/components/List/ListRoot.tsx":{"bytesInOutput":2201},"src/components/List/List.tsx":{"bytesInOutput":261},"src/components/List/index.ts":{"bytesInOutput":0},"src/components/Tree/Tree.tsx":{"bytesInOutput":1198},"src/components/Tree/TreeContext.tsx":{"bytesInOutput":293},"src/components/Tree/TreeItem.tsx":{"bytesInOutput":9795},"src/components/Tree/helpers.ts":{"bytesInOutput":162},"src/components/Tree/TreeItemHeading.tsx":{"bytesInOutput":1913},"src/components/Tree/TreeItemToggle.tsx":{"bytesInOutput":867},"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":27733}}}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import '@
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { type StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
render: () => React.JSX.Element;
|
|
6
|
+
decorators: import("@storybook/react").Decorator[];
|
|
7
|
+
};
|
|
5
8
|
export default meta;
|
|
6
9
|
type Story = StoryObj<typeof meta>;
|
|
7
10
|
export declare const Default: Story;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Accordion/Accordion.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"Accordion.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Accordion/Accordion.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,MAAM,OAAO,CAAC;AAoC1B,QAAA,MAAM,IAAI;;;;CAIwB,CAAC;AAEnC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC"}
|
|
@@ -7,7 +7,7 @@ type AccordionItemContext<T extends ListItemRecord> = {
|
|
|
7
7
|
};
|
|
8
8
|
export declare const AccordionItemProvider: React.FC<AccordionItemContext<any> & {
|
|
9
9
|
children: React.ReactNode;
|
|
10
|
-
}>,
|
|
10
|
+
}>, useDxAccordionItemContext: (consumerName: string) => AccordionItemContext<any>;
|
|
11
11
|
export type AccordionItemProps<T extends ListItemRecord> = ThemedClassName<PropsWithChildren<{
|
|
12
12
|
item: T;
|
|
13
13
|
}>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccordionItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/Accordion/AccordionItem.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAEhE,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAQ,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"AccordionItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/Accordion/AccordionItem.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAEhE,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAQ,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAM9C,KAAK,oBAAoB,CAAC,CAAC,SAAS,cAAc,IAAI;IACpD,IAAI,EAAE,CAAC,CAAC;CACT,CAAC;AAIF,eAAO,MAAO,qBAAqB;;IAAE,yBAAyB,qDACC,CAAC;AAEhE,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,cAAc,IAAI,eAAe,CAAC,iBAAiB,CAAC;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC,CAAC;AAE3G,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,cAAc,EAAE,gCAAgC,kBAAkB,CAAC,CAAC,CAAC,sBAU5G,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,eAAe,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;AAEhG,eAAO,MAAM,mBAAmB,GAAI,oCAAoC,wBAAwB,sBAa/F,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;AAExE,eAAO,MAAM,iBAAiB,GAAI,0BAA0B,sBAAsB,sBAQjF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ListItem, type ListItemProps, type ListItemRecord } from './ListItem';
|
|
2
2
|
import { type ListRootProps } from './ListRoot';
|
|
3
3
|
/**
|
|
4
4
|
* Draggable list.
|
|
@@ -13,17 +13,17 @@ export declare const List: {
|
|
|
13
13
|
item: T;
|
|
14
14
|
}) => import("react").ReactNode;
|
|
15
15
|
}) => import("react").ReactPortal | null;
|
|
16
|
-
ItemWrapper: ({ classNames, children }: import("@dxos/
|
|
17
|
-
ItemDragHandle: ({ disabled }: Pick<IconButtonProps, "disabled">) => import("react").JSX.Element;
|
|
18
|
-
ItemDeleteButton: ({ autoHide, classNames, disabled, icon, ...props }: Partial<Pick<IconButtonProps, "icon">> & Omit<IconButtonProps, "icon"> & {
|
|
16
|
+
ItemWrapper: ({ classNames, children }: import("@dxos/ui-types").ThemedClassName<import("react").PropsWithChildren>) => import("react").JSX.Element;
|
|
17
|
+
ItemDragHandle: ({ disabled }: Pick<import("@dxos/react-ui").IconButtonProps, "disabled">) => import("react").JSX.Element;
|
|
18
|
+
ItemDeleteButton: ({ autoHide, classNames, disabled, icon, label, ...props }: Partial<Pick<import("@dxos/react-ui").IconButtonProps, "icon">> & Omit<import("@dxos/react-ui").IconButtonProps, "icon" | "label"> & {
|
|
19
19
|
autoHide?: boolean;
|
|
20
|
+
label?: string;
|
|
20
21
|
}) => import("react").JSX.Element;
|
|
21
|
-
ItemButton: ({ autoHide, classNames, disabled, ...props }: IconButtonProps & {
|
|
22
|
+
ItemButton: ({ autoHide, iconOnly, variant, classNames, disabled, ...props }: import("@dxos/react-ui").IconButtonProps & {
|
|
22
23
|
autoHide?: boolean;
|
|
23
24
|
}) => import("react").JSX.Element;
|
|
24
|
-
ItemTitle: ({ classNames, children, ...props }: import("@dxos/
|
|
25
|
-
IconButton: import("react").ForwardRefExoticComponent<Omit<IconButtonProps, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
|
|
25
|
+
ItemTitle: ({ classNames, children, ...props }: import("@dxos/ui-types").ThemedClassName<import("react").PropsWithChildren<import("react").ComponentProps<"div">>>) => import("react").JSX.Element;
|
|
26
26
|
};
|
|
27
27
|
type ListItem = ListItemRecord;
|
|
28
|
-
export type { ListRootProps, ListItemProps,
|
|
28
|
+
export type { ListRootProps, ListItemProps, ListItem, ListItemRecord };
|
|
29
29
|
//# sourceMappingURL=List.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/List.tsx"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/List.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,QAAQ,EAKR,KAAK,aAAa,EAClB,KAAK,cAAc,EAGpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAS1D;;;;GAIG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;gBAc8mJ,CAAC;aAAgB,CAAC;;;gBAAwkB,CAAC;;;CALztK,CAAC;AAEF,KAAK,QAAQ,GAAG,cAAc,CAAC;AAE/B,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import '@
|
|
2
|
-
import
|
|
1
|
+
import { type StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import React from 'react';
|
|
3
3
|
import { type ListRootProps } from './List';
|
|
4
4
|
import { type TestItemType } from './testing';
|
|
5
|
-
declare const
|
|
5
|
+
declare const DefaultStory: (props: Omit<ListRootProps<TestItemType>, "items">) => React.JSX.Element;
|
|
6
|
+
declare const SimpleStory: (props: Omit<ListRootProps<TestItemType>, "items">) => React.JSX.Element;
|
|
7
|
+
declare const meta: {
|
|
8
|
+
title: string;
|
|
9
|
+
component: <T extends unknown>({ children, items, isItem, getId, onMove, ...props }: ListRootProps<T>) => React.JSX.Element;
|
|
10
|
+
decorators: import("@storybook/react").Decorator[];
|
|
11
|
+
parameters: {
|
|
12
|
+
layout: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
6
15
|
export default meta;
|
|
7
|
-
export declare const Default: StoryObj<
|
|
8
|
-
export declare const Simple: StoryObj<
|
|
16
|
+
export declare const Default: StoryObj<typeof DefaultStory>;
|
|
17
|
+
export declare const Simple: StoryObj<typeof SimpleStory>;
|
|
9
18
|
//# sourceMappingURL=List.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/List.stories.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"List.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/List/List.stories.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAkB,KAAK,YAAY,EAA6B,MAAM,WAAW,CAAC;AAKzF,QAAA,MAAM,YAAY,GAAI,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,sBA6DtE,CAAC;AAEF,QAAA,MAAM,WAAW,GAAI,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,sBAoBrE,CAAC;AAEF,QAAA,MAAM,IAAI;;;;;;;CAOwB,CAAC;AAEnC,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,OAAO,YAAY,CAKjD,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,WAAW,CAK/C,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
|
|
2
2
|
import React, { type ComponentProps, type HTMLAttributes, type MutableRefObject, type PropsWithChildren, type ReactNode } from 'react';
|
|
3
|
-
import { type ThemedClassName } from '@dxos/react-ui';
|
|
3
|
+
import { type IconButtonProps, type ThemedClassName } from '@dxos/react-ui';
|
|
4
4
|
export type ListItemRecord = any;
|
|
5
5
|
export type ItemDragState = {
|
|
6
6
|
type: 'idle';
|
|
@@ -8,9 +8,9 @@ export type ItemDragState = {
|
|
|
8
8
|
type: 'preview';
|
|
9
9
|
container: HTMLElement;
|
|
10
10
|
} | {
|
|
11
|
-
type: '
|
|
11
|
+
type: 'w-dragging';
|
|
12
12
|
} | {
|
|
13
|
-
type: '
|
|
13
|
+
type: 'w-dragging-over';
|
|
14
14
|
closestEdge: Edge | null;
|
|
15
15
|
};
|
|
16
16
|
export declare const idle: ItemDragState;
|
|
@@ -28,14 +28,11 @@ export type ListItemProps<T extends ListItemRecord> = ThemedClassName<PropsWithC
|
|
|
28
28
|
* Draggable list item.
|
|
29
29
|
*/
|
|
30
30
|
export declare const ListItem: <T extends ListItemRecord>({ children, classNames, item, ...props }: ListItemProps<T>) => React.JSX.Element;
|
|
31
|
-
export
|
|
32
|
-
icon: string;
|
|
33
|
-
};
|
|
34
|
-
export declare const IconButton: React.ForwardRefExoticComponent<Omit<IconButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
35
|
-
export declare const ListItemDeleteButton: ({ autoHide, classNames, disabled, icon, ...props }: Partial<Pick<IconButtonProps, "icon">> & Omit<IconButtonProps, "icon"> & {
|
|
31
|
+
export declare const ListItemDeleteButton: ({ autoHide, classNames, disabled, icon, label, ...props }: Partial<Pick<IconButtonProps, "icon">> & Omit<IconButtonProps, "icon" | "label"> & {
|
|
36
32
|
autoHide?: boolean;
|
|
33
|
+
label?: string;
|
|
37
34
|
}) => React.JSX.Element;
|
|
38
|
-
export declare const ListItemButton: ({ autoHide, classNames, disabled, ...props }: IconButtonProps & {
|
|
35
|
+
export declare const ListItemButton: ({ autoHide, iconOnly, variant, classNames, disabled, ...props }: IconButtonProps & {
|
|
39
36
|
autoHide?: boolean;
|
|
40
37
|
}) => React.JSX.Element;
|
|
41
38
|
export declare const ListItemDragHandle: ({ disabled }: Pick<IconButtonProps, "disabled">) => React.JSX.Element;
|