react-arborist 3.2.0 → 3.3.1-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main/components/cursor.d.ts +1 -0
- package/dist/main/components/cursor.js +20 -0
- package/dist/{components → main/components}/default-container.d.ts +1 -2
- package/dist/main/components/default-container.js +238 -0
- package/dist/main/components/default-cursor.js +35 -0
- package/dist/{components → main/components}/default-drag-preview.d.ts +1 -2
- package/dist/main/components/default-drag-preview.js +57 -0
- package/dist/{components → main/components}/default-node.d.ts +1 -2
- package/dist/main/components/default-node.js +32 -0
- package/dist/{components → main/components}/default-row.d.ts +1 -2
- package/dist/main/components/default-row.js +8 -0
- package/dist/main/components/drag-preview-container.d.ts +1 -0
- package/dist/main/components/drag-preview-container.js +21 -0
- package/dist/{components → main/components}/list-inner-element.d.ts +1 -1
- package/dist/main/components/list-inner-element.js +25 -0
- package/dist/main/components/list-outer-element.d.ts +2 -0
- package/dist/main/components/list-outer-element.js +38 -0
- package/dist/main/components/outer-drop.js +9 -0
- package/dist/{components → main/components}/provider.d.ts +2 -2
- package/dist/main/components/provider.js +52 -0
- package/dist/{components → main/components}/row-container.d.ts +2 -2
- package/dist/main/components/row-container.js +84 -0
- package/dist/main/components/tree-container.d.ts +1 -0
- package/dist/main/components/tree-container.js +12 -0
- package/dist/{components → main/components}/tree.d.ts +1 -1
- package/dist/main/components/tree.js +15 -0
- package/dist/{context.d.ts → main/context.d.ts} +4 -4
- package/dist/main/context.js +33 -0
- package/dist/main/data/create-index.js +10 -0
- package/dist/main/data/create-list.js +62 -0
- package/dist/main/data/create-root.js +43 -0
- package/dist/main/data/make-tree.d.ts +5 -0
- package/dist/main/data/make-tree.js +40 -0
- package/dist/{data → main/data}/simple-tree.d.ts +1 -1
- package/dist/main/data/simple-tree.js +100 -0
- package/dist/{dnd → main/dnd}/compute-drop.d.ts +6 -6
- package/dist/main/dnd/compute-drop.js +129 -0
- package/dist/main/dnd/drag-hook.js +46 -0
- package/dist/{dnd → main/dnd}/drop-hook.d.ts +2 -2
- package/dist/main/dnd/drop-hook.js +42 -0
- package/dist/main/dnd/measure-hover.d.ts +8 -0
- package/dist/main/dnd/measure-hover.js +21 -0
- package/dist/main/dnd/outer-drop-hook.js +45 -0
- package/dist/main/hooks/use-fresh-node.js +18 -0
- package/dist/{hooks → main/hooks}/use-simple-tree.d.ts +1 -1
- package/dist/main/hooks/use-simple-tree.js +35 -0
- package/dist/main/hooks/use-validated-props.js +29 -0
- package/dist/main/index.js +27 -0
- package/dist/{interfaces → main/interfaces}/node-api.d.ts +2 -1
- package/dist/main/interfaces/node-api.js +164 -0
- package/dist/{interfaces → main/interfaces}/tree-api.d.ts +90 -7
- package/dist/main/interfaces/tree-api.js +649 -0
- package/dist/main/interfaces/tree-api.test.d.ts +1 -0
- package/dist/main/interfaces/tree-api.test.js +14 -0
- package/dist/{state → main/state}/dnd-slice.d.ts +4 -4
- package/dist/main/state/dnd-slice.js +35 -0
- package/dist/{state → main/state}/drag-slice.d.ts +4 -2
- package/dist/main/state/drag-slice.js +24 -0
- package/dist/{state → main/state}/edit-slice.d.ts +1 -1
- package/dist/main/state/edit-slice.js +18 -0
- package/dist/{state → main/state}/focus-slice.d.ts +1 -1
- package/dist/main/state/focus-slice.js +26 -0
- package/dist/main/state/initial.js +29 -0
- package/dist/{state → main/state}/open-slice.d.ts +2 -2
- package/dist/main/state/open-slice.js +48 -0
- package/dist/main/state/root-reducer.d.ts +96 -0
- package/dist/main/state/root-reducer.js +20 -0
- package/dist/{state → main/state}/selection-slice.d.ts +1 -1
- package/dist/main/state/selection-slice.js +59 -0
- package/dist/{types → main/types}/dnd.d.ts +2 -2
- package/dist/main/types/dnd.js +2 -0
- package/dist/{types → main/types}/handlers.d.ts +5 -5
- package/dist/main/types/handlers.js +2 -0
- package/dist/{types → main/types}/renderers.d.ts +4 -4
- package/dist/main/types/renderers.js +2 -0
- package/dist/main/types/state.d.ts +2 -0
- package/dist/main/types/state.js +2 -0
- package/dist/main/types/tree-props.js +2 -0
- package/dist/{types → main/types}/utils.d.ts +5 -5
- package/dist/main/types/utils.js +2 -0
- package/dist/{utils.d.ts → main/utils.d.ts} +2 -2
- package/dist/main/utils.js +183 -0
- package/dist/module/components/cursor.d.ts +1 -0
- package/dist/module/components/cursor.js +16 -0
- package/dist/module/components/default-container.d.ts +6 -0
- package/dist/module/components/default-container.js +234 -0
- package/dist/module/components/default-cursor.d.ts +3 -0
- package/dist/module/components/default-cursor.js +29 -0
- package/dist/module/components/default-drag-preview.d.ts +2 -0
- package/dist/module/components/default-drag-preview.js +53 -0
- package/dist/module/components/default-node.d.ts +2 -0
- package/dist/module/components/default-node.js +28 -0
- package/dist/module/components/default-row.d.ts +2 -0
- package/dist/module/components/default-row.js +4 -0
- package/dist/module/components/drag-preview-container.d.ts +1 -0
- package/dist/module/components/drag-preview-container.js +17 -0
- package/dist/module/components/list-inner-element.d.ts +2 -0
- package/dist/module/components/list-inner-element.js +22 -0
- package/dist/module/components/list-outer-element.d.ts +2 -0
- package/dist/module/components/list-outer-element.js +35 -0
- package/dist/module/components/outer-drop.d.ts +4 -0
- package/dist/module/components/outer-drop.js +5 -0
- package/dist/module/components/provider.d.ts +10 -0
- package/dist/module/components/provider.js +48 -0
- package/dist/module/components/row-container.d.ts +7 -0
- package/dist/module/components/row-container.js +58 -0
- package/dist/module/components/tree-container.d.ts +1 -0
- package/dist/module/components/tree-container.js +8 -0
- package/dist/module/components/tree.d.ts +8 -0
- package/dist/module/components/tree.js +12 -0
- package/dist/module/context.d.ts +22 -0
- package/dist/module/context.js +26 -0
- package/dist/module/data/create-index.d.ts +4 -0
- package/dist/module/data/create-index.js +6 -0
- package/dist/module/data/create-list.d.ts +3 -0
- package/dist/module/data/create-list.js +58 -0
- package/dist/module/data/create-root.d.ts +4 -0
- package/dist/module/data/create-root.js +39 -0
- package/dist/module/data/make-tree.d.ts +5 -0
- package/dist/module/data/make-tree.js +36 -0
- package/dist/module/data/simple-tree.d.ts +44 -0
- package/dist/module/data/simple-tree.js +96 -0
- package/dist/module/dnd/compute-drop.d.ts +37 -0
- package/dist/module/dnd/compute-drop.js +125 -0
- package/dist/module/dnd/drag-hook.d.ts +3 -0
- package/dist/module/dnd/drag-hook.js +42 -0
- package/dist/module/dnd/drop-hook.d.ts +8 -0
- package/dist/module/dnd/drop-hook.js +38 -0
- package/dist/module/dnd/measure-hover.d.ts +8 -0
- package/dist/module/dnd/measure-hover.js +17 -0
- package/dist/module/dnd/outer-drop-hook.d.ts +1 -0
- package/dist/module/dnd/outer-drop-hook.js +41 -0
- package/dist/module/hooks/use-fresh-node.d.ts +1 -0
- package/dist/module/hooks/use-fresh-node.js +14 -0
- package/dist/module/hooks/use-simple-tree.d.ts +12 -0
- package/dist/module/hooks/use-simple-tree.js +31 -0
- package/dist/module/hooks/use-validated-props.d.ts +2 -0
- package/dist/module/hooks/use-validated-props.js +25 -0
- package/dist/module/index.d.ts +8 -0
- package/dist/module/index.js +9 -0
- package/dist/module/interfaces/node-api.d.ts +71 -0
- package/dist/module/interfaces/node-api.js +160 -0
- package/dist/module/interfaces/tree-api.d.ts +214 -0
- package/dist/module/interfaces/tree-api.js +622 -0
- package/dist/module/interfaces/tree-api.test.d.ts +1 -0
- package/dist/module/interfaces/tree-api.test.js +12 -0
- package/dist/module/state/dnd-slice.d.ts +29 -0
- package/dist/module/state/dnd-slice.js +31 -0
- package/dist/module/state/drag-slice.d.ts +9 -0
- package/dist/module/state/drag-slice.js +20 -0
- package/dist/module/state/edit-slice.d.ts +8 -0
- package/dist/module/state/edit-slice.js +13 -0
- package/dist/module/state/focus-slice.d.ts +12 -0
- package/dist/module/state/focus-slice.js +20 -0
- package/dist/module/state/initial.d.ts +3 -0
- package/dist/module/state/initial.js +25 -0
- package/dist/module/state/open-slice.d.ts +30 -0
- package/dist/module/state/open-slice.js +44 -0
- package/dist/module/state/root-reducer.d.ts +96 -0
- package/dist/module/state/root-reducer.js +17 -0
- package/dist/module/state/selection-slice.d.ts +42 -0
- package/dist/module/state/selection-slice.js +55 -0
- package/dist/module/types/dnd.d.ts +8 -0
- package/dist/module/types/dnd.js +1 -0
- package/dist/module/types/handlers.d.ts +30 -0
- package/dist/module/types/handlers.js +1 -0
- package/dist/module/types/renderers.d.ts +29 -0
- package/dist/module/types/renderers.js +1 -0
- package/dist/module/types/state.d.ts +2 -0
- package/dist/module/types/state.js +1 -0
- package/dist/module/types/tree-props.d.ts +56 -0
- package/dist/module/types/tree-props.js +1 -0
- package/dist/module/types/utils.d.ts +17 -0
- package/dist/module/types/utils.js +1 -0
- package/dist/module/utils.d.ts +24 -0
- package/dist/module/utils.js +162 -0
- package/package.json +26 -25
- package/src/components/default-container.tsx +2 -0
- package/src/components/provider.tsx +3 -2
- package/src/components/row-container.tsx +1 -1
- package/src/dnd/compute-drop.ts +6 -3
- package/src/dnd/drag-hook.ts +1 -1
- package/src/dnd/drop-hook.ts +1 -1
- package/src/interfaces/node-api.ts +10 -0
- package/src/interfaces/tree-api.ts +16 -3
- package/src/state/dnd-slice.ts +2 -2
- package/src/state/drag-slice.ts +27 -11
- package/src/state/initial.ts +6 -1
- package/src/utils.ts +2 -2
- package/dist/components/cursor.d.ts +0 -2
- package/dist/components/drag-preview-container.d.ts +0 -2
- package/dist/components/list-outer-element.d.ts +0 -2
- package/dist/components/tree-container.d.ts +0 -2
- package/dist/index.js +0 -2414
- package/dist/index.js.map +0 -1
- package/dist/module.js +0 -2387
- package/dist/module.js.map +0 -1
- package/dist/state/root-reducer.d.ts +0 -13
- package/dist/types/state.d.ts +0 -2
- package/jest.config.js +0 -5
- package/tsconfig.json +0 -4
- /package/dist/{components → main/components}/default-cursor.d.ts +0 -0
- /package/dist/{components → main/components}/outer-drop.d.ts +0 -0
- /package/dist/{data → main/data}/create-index.d.ts +0 -0
- /package/dist/{data → main/data}/create-list.d.ts +0 -0
- /package/dist/{data → main/data}/create-root.d.ts +0 -0
- /package/dist/{dnd → main/dnd}/drag-hook.d.ts +0 -0
- /package/dist/{dnd → main/dnd}/outer-drop-hook.d.ts +0 -0
- /package/dist/{hooks → main/hooks}/use-fresh-node.d.ts +0 -0
- /package/dist/{hooks → main/hooks}/use-validated-props.d.ts +0 -0
- /package/dist/{index.d.ts → main/index.d.ts} +0 -0
- /package/dist/{state → main/state}/initial.d.ts +0 -0
- /package/dist/{types → main/types}/tree-props.d.ts +0 -0
package/dist/module.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/react-arborist/src/index.ts","packages/react-arborist/src/components/tree.tsx","packages/react-arborist/src/components/provider.tsx","packages/react-arborist/src/context.ts","packages/react-arborist/src/interfaces/tree-api.ts","packages/react-arborist/src/utils.ts","packages/react-arborist/src/components/default-cursor.tsx","packages/react-arborist/src/components/default-row.tsx","packages/react-arborist/src/components/default-node.tsx","packages/react-arborist/src/state/edit-slice.ts","packages/react-arborist/src/state/focus-slice.ts","packages/react-arborist/src/data/create-root.ts","packages/react-arborist/src/interfaces/node-api.ts","packages/react-arborist/src/state/open-slice.ts","packages/react-arborist/src/state/selection-slice.ts","packages/react-arborist/src/state/initial.ts","packages/react-arborist/src/state/dnd-slice.ts","packages/react-arborist/src/components/default-drag-preview.tsx","packages/react-arborist/src/components/default-container.tsx","packages/react-arborist/src/components/list-outer-element.tsx","packages/react-arborist/src/components/cursor.tsx","packages/react-arborist/src/components/list-inner-element.tsx","packages/react-arborist/src/components/row-container.tsx","packages/react-arborist/src/dnd/drag-hook.ts","packages/react-arborist/src/dnd/drop-hook.ts","packages/react-arborist/src/dnd/compute-drop.ts","packages/react-arborist/src/hooks/use-fresh-node.ts","packages/react-arborist/src/data/create-list.ts","packages/react-arborist/src/data/create-index.ts","packages/react-arborist/src/state/root-reducer.ts","packages/react-arborist/src/state/drag-slice.ts","packages/react-arborist/src/components/outer-drop.ts","packages/react-arborist/src/dnd/outer-drop-hook.ts","packages/react-arborist/src/components/tree-container.tsx","packages/react-arborist/src/components/drag-preview-container.tsx","packages/react-arborist/src/hooks/use-validated-props.ts","packages/react-arborist/src/hooks/use-simple-tree.ts","packages/react-arborist/src/data/simple-tree.ts","packages/react-arborist/src/types/handlers.ts","packages/react-arborist/src/types/renderers.ts","packages/react-arborist/src/types/state.ts"],"sourcesContent":["/* The Public Api */\nexport { Tree } from \"./components/tree\";\nexport * from \"./types/handlers\";\nexport * from \"./types/renderers\";\nexport * from \"./types/state\";\nexport * from \"./interfaces/node-api\";\nexport * from \"./interfaces/tree-api\";\nexport * from \"./data/simple-tree\";\nexport * from \"./hooks/use-simple-tree\";\n","import { forwardRef } from \"react\";\nimport { TreeProvider } from \"./provider\";\nimport { TreeApi } from \"../interfaces/tree-api\";\nimport { OuterDrop } from \"./outer-drop\";\nimport { TreeContainer } from \"./tree-container\";\nimport { DragPreviewContainer } from \"./drag-preview-container\";\nimport { TreeProps } from \"../types/tree-props\";\nimport { IdObj } from \"../types/utils\";\nimport { useValidatedProps } from \"../hooks/use-validated-props\";\n\nfunction TreeComponent<T>(\n props: TreeProps<T>,\n ref: React.Ref<TreeApi<T> | undefined>\n) {\n const treeProps = useValidatedProps(props);\n return (\n <TreeProvider treeProps={treeProps} imperativeHandle={ref}>\n <OuterDrop>\n <TreeContainer />\n </OuterDrop>\n <DragPreviewContainer />\n </TreeProvider>\n );\n}\n\nexport const Tree = forwardRef(TreeComponent) as <T>(\n props: TreeProps<T> & { ref?: React.ForwardedRef<TreeApi<T> | undefined> }\n) => ReturnType<typeof TreeComponent>;\n","import {\n ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from \"react\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim\";\nimport { FixedSizeList } from \"react-window\";\nimport {\n DataUpdatesContext,\n DndContext,\n NodesContext,\n TreeApiContext,\n} from \"../context\";\nimport { TreeApi } from \"../interfaces/tree-api\";\nimport { initialState } from \"../state/initial\";\nimport { rootReducer, RootState } from \"../state/root-reducer\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { DndProvider } from \"react-dnd\";\nimport { TreeProps } from \"../types/tree-props\";\nimport { createStore, Store } from \"redux\";\nimport { actions as visibility } from \"../state/open-slice\";\n\ntype Props<T> = {\n treeProps: TreeProps<T>;\n imperativeHandle: React.Ref<TreeApi<T> | undefined>;\n children: ReactNode;\n};\n\nconst SERVER_STATE = initialState();\n\nexport function TreeProvider<T>({\n treeProps,\n imperativeHandle,\n children,\n}: Props<T>) {\n const list = useRef<FixedSizeList | null>(null);\n const listEl = useRef<HTMLDivElement | null>(null);\n const store = useRef<Store>(\n createStore(rootReducer, initialState(treeProps))\n );\n const state = useSyncExternalStore<RootState>(\n store.current.subscribe,\n store.current.getState,\n () => SERVER_STATE\n );\n\n /* The tree api object is stable. */\n const api = useMemo(() => {\n return new TreeApi<T>(store.current, treeProps, list, listEl);\n }, []);\n\n /* Make sure the tree instance stays in sync */\n const updateCount = useRef(0);\n useMemo(() => {\n updateCount.current += 1;\n api.update(treeProps);\n }, [...Object.values(treeProps), state.nodes.open]);\n\n /* Expose the tree api */\n useImperativeHandle(imperativeHandle, () => api);\n\n /* Change selection based on props */\n useEffect(() => {\n if (api.props.selection) {\n api.select(api.props.selection, { focus: false });\n } else {\n api.deselectAll();\n }\n }, [api.props.selection]);\n\n /* Clear visability for filtered nodes */\n useEffect(() => {\n if (!api.props.searchTerm) {\n store.current.dispatch(visibility.clear(true));\n }\n }, [api.props.searchTerm]);\n\n return (\n <TreeApiContext.Provider value={api}>\n <DataUpdatesContext.Provider value={updateCount.current}>\n <NodesContext.Provider value={state.nodes}>\n <DndContext.Provider value={state.dnd}>\n <DndProvider\n backend={HTML5Backend}\n options={{ rootElement: api.props.dndRootElement || undefined }}\n {...(treeProps.dndManager && { manager: treeProps.dndManager })}\n >\n {children}\n </DndProvider>\n </DndContext.Provider>\n </NodesContext.Provider>\n </DataUpdatesContext.Provider>\n </TreeApiContext.Provider>\n );\n}\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { TreeApi } from \"./interfaces/tree-api\";\nimport { RootState } from \"./state/root-reducer\";\nimport { IdObj } from \"./types/utils\";\n\nexport const TreeApiContext = createContext<TreeApi<any> | null>(null);\n\nexport function useTreeApi<T>() {\n const value = useContext<TreeApi<T> | null>(\n TreeApiContext as unknown as React.Context<TreeApi<T> | null>\n );\n if (value === null) throw new Error(\"No Tree Api Provided\");\n return value;\n}\n\nexport const NodesContext = createContext<RootState[\"nodes\"] | null>(null);\n\nexport function useNodesContext() {\n const value = useContext(NodesContext);\n if (value === null) throw new Error(\"Provide a NodesContext\");\n return value;\n}\n\nexport const DndContext = createContext<RootState[\"dnd\"] | null>(null);\n\nexport function useDndContext() {\n const value = useContext(DndContext);\n if (value === null) throw new Error(\"Provide a DnDContext\");\n return value;\n}\n\nexport const DataUpdatesContext = createContext<number>(0);\n\nexport function useDataUpdates() {\n useContext(DataUpdatesContext);\n}\n","import { EditResult } from \"../types/handlers\";\nimport { Identity, IdObj } from \"../types/utils\";\nimport { TreeProps } from \"../types/tree-props\";\nimport { MutableRefObject } from \"react\";\nimport { Align, FixedSizeList, ListOnItemsRenderedProps } from \"react-window\";\nimport * as utils from \"../utils\";\nimport { DefaultCursor } from \"../components/default-cursor\";\nimport { DefaultRow } from \"../components/default-row\";\nimport { DefaultNode } from \"../components/default-node\";\nimport { NodeApi } from \"./node-api\";\nimport { edit } from \"../state/edit-slice\";\nimport { Actions, RootState } from \"../state/root-reducer\";\nimport { focus, treeBlur } from \"../state/focus-slice\";\nimport { createRoot, ROOT_ID } from \"../data/create-root\";\nimport { actions as visibility } from \"../state/open-slice\";\nimport { actions as selection } from \"../state/selection-slice\";\nimport { actions as dnd } from \"../state/dnd-slice\";\nimport { DefaultDragPreview } from \"../components/default-drag-preview\";\nimport { DefaultContainer } from \"../components/default-container\";\nimport { Cursor } from \"../dnd/compute-drop\";\nimport { Store } from \"redux\";\nimport { createList } from \"../data/create-list\";\nimport { createIndex } from \"../data/create-index\";\n\nconst { safeRun, identify, identifyNull } = utils;\nexport class TreeApi<T> {\n static editPromise: null | ((args: EditResult) => void);\n root: NodeApi<T>;\n visibleNodes: NodeApi<T>[];\n visibleStartIndex: number = 0;\n visibleStopIndex: number = 0;\n idToIndex: { [id: string]: number };\n\n constructor(\n public store: Store<RootState, Actions>,\n public props: TreeProps<T>,\n public list: MutableRefObject<FixedSizeList | null>,\n public listEl: MutableRefObject<HTMLDivElement | null>\n ) {\n /* Changes here must also be made in update() */\n this.root = createRoot<T>(this);\n this.visibleNodes = createList<T>(this);\n this.idToIndex = createIndex(this.visibleNodes);\n }\n\n /* Changes here must also be made in constructor() */\n update(props: TreeProps<T>) {\n this.props = props;\n this.root = createRoot<T>(this);\n this.visibleNodes = createList<T>(this);\n this.idToIndex = createIndex(this.visibleNodes);\n }\n\n /* Store helpers */\n\n dispatch(action: Actions) {\n return this.store.dispatch(action);\n }\n\n get state() {\n return this.store.getState();\n }\n\n get openState() {\n return this.state.nodes.open.unfiltered;\n }\n\n /* Tree Props */\n\n get width() {\n return this.props.width ?? 300;\n }\n\n get height() {\n return this.props.height ?? 500;\n }\n\n get indent() {\n return this.props.indent ?? 24;\n }\n\n get rowHeight() {\n return this.props.rowHeight ?? 24;\n }\n\n get overscanCount() {\n return this.props.overscanCount ?? 1;\n }\n\n get searchTerm() {\n return (this.props.searchTerm || \"\").trim();\n }\n\n get matchFn() {\n const match =\n this.props.searchMatch ??\n ((node, term) => {\n const string = JSON.stringify(\n Object.values(node.data as { [k: string]: unknown })\n );\n return string.toLocaleLowerCase().includes(term.toLocaleLowerCase());\n });\n return (node: NodeApi<T>) => match(node, this.searchTerm);\n }\n\n accessChildren(data: T) {\n const get = this.props.childrenAccessor || \"children\";\n return utils.access<T[] | undefined>(data, get) ?? null;\n }\n\n accessId(data: T) {\n const get = this.props.idAccessor || \"id\";\n const id = utils.access<string>(data, get);\n if (!id)\n throw new Error(\n \"Data must contain an 'id' property or props.idAccessor must return a string\"\n );\n return id;\n }\n\n /* Node Access */\n\n get firstNode() {\n return this.visibleNodes[0] ?? null;\n }\n\n get lastNode() {\n return this.visibleNodes[this.visibleNodes.length - 1] ?? null;\n }\n\n get focusedNode() {\n return this.get(this.state.nodes.focus.id) ?? null;\n }\n\n get mostRecentNode() {\n return this.get(this.state.nodes.selection.mostRecent) ?? null;\n }\n\n get nextNode() {\n const index = this.indexOf(this.focusedNode);\n if (index === null) return null;\n else return this.at(index + 1);\n }\n\n get prevNode() {\n const index = this.indexOf(this.focusedNode);\n if (index === null) return null;\n else return this.at(index - 1);\n }\n\n get(id: string | null): NodeApi<T> | null {\n if (!id) return null;\n if (id in this.idToIndex)\n return this.visibleNodes[this.idToIndex[id]] || null;\n else return null;\n }\n\n at(index: number): NodeApi<T> | null {\n return this.visibleNodes[index] || null;\n }\n\n nodesBetween(startId: string | null, endId: string | null) {\n if (startId === null || endId === null) return [];\n const index1 = this.indexOf(startId) ?? 0;\n const index2 = this.indexOf(endId);\n if (index2 === null) return [];\n const start = Math.min(index1, index2);\n const end = Math.max(index1, index2);\n return this.visibleNodes.slice(start, end + 1);\n }\n\n indexOf(id: string | null | IdObj) {\n const key = utils.identifyNull(id);\n if (!key) return null;\n return this.idToIndex[key];\n }\n\n /* Data Operations */\n\n get editingId() {\n return this.state.nodes.edit.id;\n }\n\n createInternal() {\n return this.create({ type: \"internal\" });\n }\n\n createLeaf() {\n return this.create({ type: \"leaf\" });\n }\n\n async create(\n opts: {\n type?: \"internal\" | \"leaf\";\n parentId?: null | string;\n index?: null | number;\n } = {}\n ) {\n const parentId =\n opts.parentId === undefined\n ? utils.getInsertParentId(this)\n : opts.parentId;\n const index = opts.index ?? utils.getInsertIndex(this);\n const type = opts.type ?? \"leaf\";\n const data = await safeRun(this.props.onCreate, {\n type,\n parentId,\n index,\n parentNode: this.get(parentId),\n });\n if (data) {\n this.focus(data);\n setTimeout(() => {\n this.edit(data).then(() => {\n this.select(data);\n this.activate(data);\n });\n });\n }\n }\n\n async delete(node: string | IdObj | null | string[] | IdObj[]) {\n if (!node) return;\n const idents = Array.isArray(node) ? node : [node];\n const ids = idents.map(identify);\n const nodes = ids.map((id) => this.get(id)!).filter((n) => !!n);\n await safeRun(this.props.onDelete, { nodes, ids });\n }\n\n edit(node: string | IdObj): Promise<EditResult> {\n const id = identify(node);\n this.resolveEdit({ cancelled: true });\n this.scrollTo(id);\n this.dispatch(edit(id));\n return new Promise((resolve) => {\n TreeApi.editPromise = resolve;\n });\n }\n\n async submit(identity: Identity, value: string) {\n if (!identity) return;\n const id = identify(identity);\n await safeRun(this.props.onRename, {\n id,\n name: value,\n node: this.get(id)!,\n });\n this.dispatch(edit(null));\n this.resolveEdit({ cancelled: false, value });\n setTimeout(() => this.onFocus()); // Return focus to element;\n }\n\n reset() {\n this.dispatch(edit(null));\n this.resolveEdit({ cancelled: true });\n setTimeout(() => this.onFocus()); // Return focus to element;\n }\n\n activate(id: string | IdObj | null) {\n const node = this.get(identifyNull(id));\n if (!node) return;\n safeRun(this.props.onActivate, node);\n }\n\n private resolveEdit(value: EditResult) {\n const resolve = TreeApi.editPromise;\n if (resolve) resolve(value);\n TreeApi.editPromise = null;\n }\n\n /* Focus and Selection */\n\n get selectedIds() {\n return this.state.nodes.selection.ids;\n }\n\n get selectedNodes() {\n let nodes = [];\n for (let id of Array.from(this.selectedIds)) {\n const node = this.get(id);\n if (node) nodes.push(node);\n }\n return nodes;\n }\n\n focus(node: Identity, opts: { scroll?: boolean } = {}) {\n if (!node) return;\n /* Focus is responsible for scrolling, while selection is\n * responsible for focus. If selectionFollowsFocus, then\n * just select it. */\n if (this.props.selectionFollowsFocus) {\n this.select(node);\n } else {\n this.dispatch(focus(identify(node)));\n if (opts.scroll !== false) this.scrollTo(node);\n if (this.focusedNode) safeRun(this.props.onFocus, this.focusedNode);\n }\n }\n\n pageUp() {\n const start = this.visibleStartIndex;\n const stop = this.visibleStopIndex;\n const page = stop - start;\n let index = this.focusedNode?.rowIndex ?? 0;\n if (index > start) {\n index = start;\n } else {\n index = Math.max(start - page, 0);\n }\n this.focus(this.at(index));\n }\n\n pageDown() {\n const start = this.visibleStartIndex;\n const stop = this.visibleStopIndex;\n const page = stop - start;\n let index = this.focusedNode?.rowIndex ?? 0;\n if (index < stop) {\n index = stop;\n } else {\n index = Math.min(index + page, this.visibleNodes.length - 1);\n }\n this.focus(this.at(index));\n }\n\n select(node: Identity, opts: { align?: Align; focus?: boolean } = {}) {\n if (!node) return;\n const changeFocus = opts.focus !== false;\n const id = identify(node);\n if (changeFocus) this.dispatch(focus(id));\n this.dispatch(selection.only(id));\n this.dispatch(selection.anchor(id));\n this.dispatch(selection.mostRecent(id));\n this.scrollTo(id, opts.align);\n if (this.focusedNode && changeFocus) {\n safeRun(this.props.onFocus, this.focusedNode);\n }\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n\n deselect(node: Identity) {\n if (!node) return;\n const id = identify(node);\n this.dispatch(selection.remove(id));\n }\n\n selectMulti(identity: Identity) {\n const node = this.get(identifyNull(identity));\n if (!node) return;\n this.dispatch(focus(node.id));\n this.dispatch(selection.add(node.id));\n this.dispatch(selection.anchor(node.id));\n this.dispatch(selection.mostRecent(node.id));\n this.scrollTo(node);\n if (this.focusedNode) safeRun(this.props.onFocus, this.focusedNode);\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n\n selectContiguous(identity: Identity) {\n if (!identity) return;\n const id = identify(identity);\n const { anchor, mostRecent } = this.state.nodes.selection;\n this.dispatch(focus(id));\n this.dispatch(selection.remove(this.nodesBetween(anchor, mostRecent)));\n this.dispatch(selection.add(this.nodesBetween(anchor, identifyNull(id))));\n this.dispatch(selection.mostRecent(id));\n this.scrollTo(id);\n if (this.focusedNode) safeRun(this.props.onFocus, this.focusedNode);\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n\n deselectAll() {\n this.setSelection({ ids: [], anchor: null, mostRecent: null });\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n\n selectAll() {\n this.setSelection({\n ids: Object.keys(this.idToIndex),\n anchor: this.firstNode,\n mostRecent: this.lastNode,\n });\n this.dispatch(focus(this.lastNode?.id));\n if (this.focusedNode) safeRun(this.props.onFocus, this.focusedNode);\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n\n setSelection(args: {\n ids: (IdObj | string)[] | null;\n anchor: IdObj | string | null;\n mostRecent: IdObj | string | null;\n }) {\n const ids = new Set(args.ids?.map(identify));\n const anchor = identifyNull(args.anchor);\n const mostRecent = identifyNull(args.mostRecent);\n this.dispatch(selection.set({ ids, anchor, mostRecent }));\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n\n /* Drag and Drop */\n\n get cursorParentId() {\n const { cursor } = this.state.dnd;\n switch (cursor.type) {\n case \"highlight\":\n return cursor.id;\n default:\n return null;\n }\n }\n\n get cursorOverFolder() {\n return this.state.dnd.cursor.type === \"highlight\";\n }\n\n get dragNodes() {\n return this.state.dnd.dragIds\n .map((id) => this.get(id))\n .filter((n) => !!n) as NodeApi<T>[];\n }\n\n canDrop() {\n if (this.isFiltered) return false;\n const parentNode = this.get(this.state.dnd.parentId) ?? this.root;\n const dragNodes = this.dragNodes;\n const isDisabled = this.props.disableDrop;\n\n for (const drag of dragNodes) {\n if (!drag) return false;\n if (!parentNode) return false;\n if (drag.isInternal && utils.isDecendent(parentNode, drag)) return false;\n }\n\n // Allow the user to insert their own logic\n if (typeof isDisabled == \"function\") {\n return !isDisabled({\n parentNode,\n dragNodes: this.dragNodes,\n index: this.state.dnd.index,\n });\n } else if (typeof isDisabled == \"string\") {\n // @ts-ignore\n return !parentNode.data[isDisabled];\n } else if (typeof isDisabled === \"boolean\") {\n return !isDisabled;\n } else {\n return true;\n }\n }\n\n hideCursor() {\n this.dispatch(dnd.cursor({ type: \"none\" }));\n }\n\n showCursor(cursor: Cursor) {\n this.dispatch(dnd.cursor(cursor));\n }\n\n /* Visibility */\n\n open(identity: Identity) {\n const id = identifyNull(identity);\n if (!id) return;\n if (this.isOpen(id)) return;\n this.dispatch(visibility.open(id, this.isFiltered));\n safeRun(this.props.onToggle, id);\n }\n\n close(identity: Identity) {\n const id = identifyNull(identity);\n if (!id) return;\n if (!this.isOpen(id)) return;\n this.dispatch(visibility.close(id, this.isFiltered));\n safeRun(this.props.onToggle, id);\n }\n\n toggle(identity: Identity) {\n const id = identifyNull(identity);\n if (!id) return;\n return this.isOpen(id) ? this.close(id) : this.open(id);\n }\n\n openParents(identity: Identity) {\n const id = identifyNull(identity);\n if (!id) return;\n const node = utils.dfs(this.root, id);\n let parent = node?.parent;\n\n while (parent) {\n this.open(parent.id);\n parent = parent.parent;\n }\n }\n\n openSiblings(node: NodeApi<T>) {\n const parent = node.parent;\n if (!parent) {\n this.toggle(node.id);\n } else if (parent.children) {\n const isOpen = node.isOpen;\n for (let sibling of parent.children) {\n if (sibling.isInternal) {\n isOpen ? this.close(sibling.id) : this.open(sibling.id);\n }\n }\n this.scrollTo(this.focusedNode);\n }\n }\n\n openAll() {\n utils.walk(this.root, (node) => {\n if (node.isInternal) node.open();\n });\n }\n\n closeAll() {\n utils.walk(this.root, (node) => {\n if (node.isInternal) node.close();\n });\n }\n\n /* Scrolling */\n\n scrollTo(identity: Identity, align: Align = \"smart\") {\n if (!identity) return;\n const id = identify(identity);\n this.openParents(id);\n return utils\n .waitFor(() => id in this.idToIndex)\n .then(() => {\n const index = this.idToIndex[id];\n if (index === undefined) return;\n this.list.current?.scrollToItem(index, align);\n })\n .catch(() => {\n // Id: ${id} never appeared in the list.\n });\n }\n\n /* State Checks */\n\n get isEditing() {\n return this.state.nodes.edit.id !== null;\n }\n\n get isFiltered() {\n return !!this.props.searchTerm?.trim();\n }\n\n get hasFocus() {\n return this.state.nodes.focus.treeFocused;\n }\n\n get hasNoSelection() {\n return this.state.nodes.selection.ids.size === 0;\n }\n\n get hasOneSelection() {\n return this.state.nodes.selection.ids.size === 1;\n }\n\n get hasMultipleSelections() {\n return this.state.nodes.selection.ids.size > 1;\n }\n\n isSelected(id?: string) {\n if (!id) return false;\n return this.state.nodes.selection.ids.has(id);\n }\n\n isOpen(id?: string) {\n if (!id) return false;\n if (id === ROOT_ID) return true;\n const def = this.props.openByDefault ?? true;\n if (this.isFiltered) {\n return this.state.nodes.open.filtered[id] ?? true; // Filtered folders are always opened by default\n } else {\n return this.state.nodes.open.unfiltered[id] ?? def;\n }\n }\n\n isEditable(data: T) {\n const check = this.props.disableEdit || (() => false);\n return !utils.access(data, check) ?? true;\n }\n\n isDraggable(data: T) {\n const check = this.props.disableDrag || (() => false);\n return !utils.access(data, check) ?? true;\n }\n\n isDragging(node: string | IdObj | null) {\n const id = identifyNull(node);\n if (!id) return false;\n return this.state.nodes.drag.id === id;\n }\n\n isFocused(id: string) {\n return this.hasFocus && this.state.nodes.focus.id === id;\n }\n\n isMatch(node: NodeApi<T>) {\n return this.matchFn(node);\n }\n\n willReceiveDrop(node: string | IdObj | null) {\n const id = identifyNull(node);\n if (!id) return false;\n return id === this.state.nodes.drag.idWillReceiveDrop;\n }\n\n /* Tree Event Handlers */\n\n onFocus() {\n const node = this.focusedNode || this.firstNode;\n if (node) this.dispatch(focus(node.id));\n }\n\n onBlur() {\n this.dispatch(treeBlur());\n }\n\n onItemsRendered(args: ListOnItemsRenderedProps) {\n this.visibleStartIndex = args.visibleStartIndex;\n this.visibleStopIndex = args.visibleStopIndex;\n }\n\n /* Get Renderers */\n\n get renderContainer() {\n return this.props.renderContainer || DefaultContainer;\n }\n\n get renderRow() {\n return this.props.renderRow || DefaultRow;\n }\n\n get renderNode() {\n return this.props.children || DefaultNode;\n }\n\n get renderDragPreview() {\n return this.props.renderDragPreview || DefaultDragPreview;\n }\n\n get renderCursor() {\n return this.props.renderCursor || DefaultCursor;\n }\n}\n","import { NodeApi } from \"./interfaces/node-api\";\nimport { TreeApi } from \"./interfaces/tree-api\";\nimport { IdObj } from \"./types/utils\";\n\nexport function bound(n: number, min: number, max: number) {\n return Math.max(Math.min(n, max), min);\n}\n\nexport function isItem(node: NodeApi<any> | null) {\n return node && node.isLeaf;\n}\n\nexport function isClosed(node: NodeApi<any> | null) {\n return node && node.isInternal && !node.isOpen;\n}\n\n/**\n * Is first param a decendent of the second param\n */\nexport const isDecendent = (a: NodeApi<any>, b: NodeApi<any>) => {\n let n: NodeApi<any> | null = a;\n while (n) {\n if (n.id === b.id) return true;\n n = n.parent;\n }\n return false;\n};\n\nexport const indexOf = (node: NodeApi<any>) => {\n if (!node.parent) throw Error(\"Node does not have a parent\");\n return node.parent.children!.findIndex((c) => c.id === node.id);\n};\n\nexport function noop() {}\n\nexport function dfs(node: NodeApi<any>, id: string): NodeApi<any> | null {\n if (!node) return null;\n if (node.id === id) return node;\n if (node.children) {\n for (let child of node.children) {\n const result = dfs(child, id);\n if (result) return result;\n }\n }\n return null;\n}\n\nexport function walk(\n node: NodeApi<any>,\n fn: (node: NodeApi<any>) => void\n): void {\n fn(node);\n if (node.children) {\n for (let child of node.children) {\n walk(child, fn);\n }\n }\n}\n\nexport function focusNextElement(target: HTMLElement) {\n const elements = getFocusable(target);\n\n let next: HTMLElement;\n for (let i = 0; i < elements.length; ++i) {\n const item = elements[i];\n if (item === target) {\n next = nextItem(elements, i);\n break;\n }\n }\n\n // @ts-ignore ??\n next?.focus();\n}\n\nexport function focusPrevElement(target: HTMLElement) {\n const elements = getFocusable(target);\n let next: HTMLElement;\n for (let i = 0; i < elements.length; ++i) {\n const item = elements[i];\n if (item === target) {\n next = prevItem(elements, i);\n break;\n }\n }\n // @ts-ignore\n next?.focus();\n}\n\nfunction nextItem(list: HTMLElement[], index: number) {\n if (index + 1 < list.length) {\n return list[index + 1] as HTMLElement;\n } else {\n return list[0] as HTMLElement;\n }\n}\n\nfunction prevItem(list: HTMLElement[], index: number) {\n if (index - 1 >= 0) {\n return list[index - 1];\n } else {\n return list[list.length - 1];\n }\n}\n\nfunction getFocusable(target: HTMLElement) {\n return Array.from(\n document.querySelectorAll(\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled]), details:not([disabled]), summary:not(:disabled)'\n )\n ).filter((e) => e === target || !target.contains(e)) as HTMLElement[];\n}\n\nexport function access<T = boolean>(\n obj: any,\n accessor: string | boolean | Function\n): T {\n if (typeof accessor === \"boolean\") return accessor as unknown as T;\n if (typeof accessor === \"string\") return obj[accessor] as T;\n return accessor(obj) as T;\n}\n\nexport function identifyNull(obj: string | IdObj | null) {\n if (obj === null) return null;\n else return identify(obj);\n}\n\nexport function identify(obj: string | IdObj) {\n return typeof obj === \"string\" ? obj : obj.id;\n}\n\nexport function mergeRefs(...refs: any) {\n return (instance: any) => {\n refs.forEach((ref: any) => {\n if (typeof ref === \"function\") {\n ref(instance);\n } else if (ref != null) {\n ref.current = instance;\n }\n });\n };\n}\n\nexport function safeRun<T extends (...args: any[]) => any>(\n fn: T | undefined,\n ...args: Parameters<T>\n) {\n if (fn) return fn(...args);\n}\n\nexport function waitFor(fn: () => boolean) {\n return new Promise<void>((resolve, reject) => {\n let tries = 0;\n function check() {\n tries += 1;\n if (tries === 100) reject();\n if (fn()) resolve();\n else setTimeout(check, 10);\n }\n check();\n });\n}\n\nexport function getInsertIndex(tree: TreeApi<any>) {\n const focus = tree.focusedNode;\n if (!focus) return tree.root.children?.length ?? 0;\n if (focus.isOpen) return 0;\n if (focus.parent) return focus.childIndex + 1;\n return 0;\n}\n\nexport function getInsertParentId(tree: TreeApi<any>) {\n const focus = tree.focusedNode;\n if (!focus) return null;\n if (focus.isOpen) return focus.id;\n if (focus.parent && !focus.parent.isRoot) return focus.parent.id;\n return null;\n}\n","import React, { CSSProperties } from \"react\";\nimport { CursorProps } from \"../types/renderers\";\n\nconst placeholderStyle = {\n display: \"flex\",\n alignItems: \"center\",\n zIndex: 1,\n};\n\nconst lineStyle = {\n flex: 1,\n height: \"2px\",\n background: \"#4B91E2\",\n borderRadius: \"1px\",\n};\n\nconst circleStyle = {\n width: \"4px\",\n height: \"4px\",\n boxShadow: \"0 0 0 3px #4B91E2\",\n borderRadius: \"50%\",\n};\n\nexport const DefaultCursor = React.memo(function DefaultCursor({\n top,\n left,\n indent,\n}: CursorProps) {\n const style: CSSProperties = {\n position: \"absolute\",\n pointerEvents: \"none\",\n top: top - 2 + \"px\",\n left: left + \"px\",\n right: indent + \"px\",\n };\n return (\n <div style={{ ...placeholderStyle, ...style }}>\n <div style={{ ...circleStyle }}></div>\n <div style={{ ...lineStyle }}></div>\n </div>\n );\n});\n","import React from \"react\";\nimport { RowRendererProps } from \"../types/renderers\";\nimport { IdObj } from \"../types/utils\";\n\nexport function DefaultRow<T>({\n node,\n attrs,\n innerRef,\n children,\n}: RowRendererProps<T>) {\n return (\n <div\n {...attrs}\n ref={innerRef}\n onFocus={(e) => e.stopPropagation()}\n onClick={node.handleClick}\n >\n {children}\n </div>\n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { NodeRendererProps } from \"../types/renderers\";\nimport { IdObj } from \"../types/utils\";\n\nexport function DefaultNode<T>(props: NodeRendererProps<T>) {\n return (\n <div ref={props.dragHandle} style={props.style}>\n <span\n onClick={(e) => {\n e.stopPropagation();\n props.node.toggle();\n }}\n >\n {props.node.isLeaf ? \"🌳\" : props.node.isOpen ? \"🗁\" : \"🗀\"}\n </span>{\" \"}\n {props.node.isEditing ? <Edit {...props} /> : <Show {...props} />}\n </div>\n );\n}\n\nfunction Show<T>(props: NodeRendererProps<T>) {\n return (\n <>\n {/* @ts-ignore */}\n <span>{props.node.data.name}</span>\n </>\n );\n}\n\nfunction Edit<T>({ node }: NodeRendererProps<T>) {\n const input = useRef<any>();\n\n useEffect(() => {\n input.current?.focus();\n input.current?.select();\n }, []);\n\n return (\n <input\n ref={input}\n // @ts-ignore\n defaultValue={node.data.name}\n onBlur={() => node.reset()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") node.reset();\n if (e.key === \"Enter\") node.submit(input.current?.value || \"\");\n }}\n ></input>\n );\n}\n","/* Types */\nexport type EditState = { id: string | null };\n\n/* Actions */\nexport function edit(id: string | null) {\n return { type: \"EDIT\" as const, id };\n}\n\n/* Reducer */\nexport function reducer(\n state: EditState = { id: null },\n action: ReturnType<typeof edit>\n) {\n if (action.type === \"EDIT\") {\n return { ...state, id: action.id };\n } else {\n return state;\n }\n}\n","/* Types */\n\nexport type FocusState = { id: string | null; treeFocused: boolean };\n\n/* Actions */\n\nexport function focus(id: string | null) {\n return { type: \"FOCUS\" as const, id };\n}\n\nexport function treeBlur() {\n return { type: \"TREE_BLUR\" } as const;\n}\n\n/* Reducer */\n\nexport function reducer(\n state: FocusState = { id: null, treeFocused: false },\n action: ReturnType<typeof focus> | ReturnType<typeof treeBlur>\n) {\n if (action.type === \"FOCUS\") {\n return { ...state, id: action.id, treeFocused: true };\n } else if (action.type === \"TREE_BLUR\") {\n return { ...state, treeFocused: false };\n } else {\n return state;\n }\n}\n","import { IdObj } from \"../types/utils\";\nimport { NodeApi } from \"../interfaces/node-api\";\nimport { TreeApi } from \"../interfaces/tree-api\";\n\nexport const ROOT_ID = \"__REACT_ARBORIST_INTERNAL_ROOT__\";\n\nexport function createRoot<T>(tree: TreeApi<T>): NodeApi<T> {\n function visitSelfAndChildren(\n data: T,\n level: number,\n parent: NodeApi<T> | null\n ) {\n const id = tree.accessId(data);\n const node = new NodeApi<T>({\n tree,\n data,\n level,\n parent,\n id,\n children: null,\n isDraggable: tree.isDraggable(data),\n rowIndex: null,\n });\n const children = tree.accessChildren(data);\n if (children) {\n node.children = children.map((child: T) =>\n visitSelfAndChildren(child, level + 1, node)\n );\n }\n return node;\n }\n\n const root = new NodeApi<T>({\n tree,\n id: ROOT_ID,\n // @ts-ignore\n data: { id: ROOT_ID },\n level: -1,\n parent: null,\n children: null,\n isDraggable: true,\n rowIndex: null,\n });\n\n const data: readonly T[] = tree.props.data ?? [];\n\n root.children = data.map((child) => {\n return visitSelfAndChildren(child, 0, root);\n });\n\n return root;\n}\n","import React from \"react\";\nimport { TreeApi } from \"./tree-api\";\nimport { IdObj } from \"../types/utils\";\nimport { ROOT_ID } from \"../data/create-root\";\n\ntype Params<T> = {\n id: string;\n data: T;\n level: number;\n children: NodeApi<T>[] | null;\n parent: NodeApi<T> | null;\n isDraggable: boolean;\n rowIndex: number | null;\n tree: TreeApi<T>;\n};\n\nexport class NodeApi<T = any> {\n tree: TreeApi<T>;\n id: string;\n data: T;\n level: number;\n children: NodeApi<T>[] | null;\n parent: NodeApi<T> | null;\n isDraggable: boolean;\n rowIndex: number | null;\n\n constructor(params: Params<T>) {\n this.tree = params.tree;\n this.id = params.id;\n this.data = params.data;\n this.level = params.level;\n this.children = params.children;\n this.parent = params.parent;\n this.isDraggable = params.isDraggable;\n this.rowIndex = params.rowIndex;\n }\n\n get isRoot() {\n return this.id === ROOT_ID;\n }\n\n get isLeaf() {\n return !Array.isArray(this.children);\n }\n\n get isInternal() {\n return !this.isLeaf;\n }\n\n get isOpen() {\n return this.isLeaf ? false : this.tree.isOpen(this.id);\n }\n\n get isClosed() {\n return this.isLeaf ? false : !this.tree.isOpen(this.id);\n }\n\n get isEditable() {\n return this.tree.isEditable(this.data);\n }\n\n get isEditing() {\n return this.tree.editingId === this.id;\n }\n\n get isSelected() {\n return this.tree.isSelected(this.id);\n }\n\n get isOnlySelection() {\n return this.isSelected && this.tree.hasOneSelection;\n }\n\n get isSelectedStart() {\n return this.isSelected && !this.prev?.isSelected;\n }\n\n get isSelectedEnd() {\n return this.isSelected && !this.next?.isSelected;\n }\n\n get isFocused() {\n return this.tree.isFocused(this.id);\n }\n\n get isDragging() {\n return this.tree.isDragging(this.id);\n }\n\n get willReceiveDrop() {\n return this.tree.willReceiveDrop(this.id);\n }\n\n get state() {\n return {\n isClosed: this.isClosed,\n isDragging: this.isDragging,\n isEditing: this.isEditing,\n isFocused: this.isFocused,\n isInternal: this.isInternal,\n isLeaf: this.isLeaf,\n isOpen: this.isOpen,\n isSelected: this.isSelected,\n isSelectedEnd: this.isSelectedEnd,\n isSelectedStart: this.isSelectedStart,\n willReceiveDrop: this.willReceiveDrop,\n };\n }\n\n get childIndex() {\n if (this.parent && this.parent.children) {\n return this.parent.children.findIndex((child) => child.id === this.id);\n } else {\n return -1;\n }\n }\n\n get next(): NodeApi<T> | null {\n if (this.rowIndex === null) return null;\n return this.tree.at(this.rowIndex + 1);\n }\n\n get prev(): NodeApi<T> | null {\n if (this.rowIndex === null) return null;\n return this.tree.at(this.rowIndex - 1);\n }\n\n get nextSibling(): NodeApi<T> | null {\n const i = this.childIndex;\n return this.parent?.children![i + 1] ?? null;\n }\n\n select() {\n this.tree.select(this);\n }\n\n deselect() {\n this.tree.deselect(this);\n }\n\n selectMulti() {\n this.tree.selectMulti(this);\n }\n\n selectContiguous() {\n this.tree.selectContiguous(this);\n }\n\n activate() {\n this.tree.activate(this);\n }\n\n focus() {\n this.tree.focus(this);\n }\n\n toggle() {\n this.tree.toggle(this);\n }\n\n open() {\n this.tree.open(this);\n }\n\n openParents() {\n this.tree.openParents(this);\n }\n\n close() {\n this.tree.close(this);\n }\n\n submit(value: string) {\n this.tree.submit(this, value);\n }\n\n reset() {\n this.tree.reset();\n }\n\n clone() {\n return new NodeApi<T>({ ...this });\n }\n\n edit() {\n return this.tree.edit(this);\n }\n\n handleClick = (e: React.MouseEvent) => {\n if (e.metaKey && !this.tree.props.disableMultiSelection) {\n this.isSelected ? this.deselect() : this.selectMulti();\n } else if (e.shiftKey && !this.tree.props.disableMultiSelection) {\n this.selectContiguous();\n } else {\n this.select();\n this.activate();\n }\n };\n}\n","import { ActionTypes } from \"../types/utils\";\n\n/* Types */\nexport type OpenMap = { [id: string]: boolean };\nexport type OpenSlice = { unfiltered: OpenMap; filtered: OpenMap };\n\n/* Actions */\nexport const actions = {\n open(id: string, filtered: boolean) {\n return { type: \"VISIBILITY_OPEN\" as const, id, filtered };\n },\n close(id: string, filtered: boolean) {\n return { type: \"VISIBILITY_CLOSE\" as const, id, filtered };\n },\n toggle(id: string, filtered: boolean) {\n return { type: \"VISIBILITY_TOGGLE\" as const, id, filtered };\n },\n clear(filtered: boolean) {\n return { type: \"VISIBILITY_CLEAR\" as const, filtered };\n },\n};\n\n/* Reducer */\n\nfunction openMapReducer(\n state: OpenMap = {},\n action: ActionTypes<typeof actions>\n) {\n if (action.type === \"VISIBILITY_OPEN\") {\n return { ...state, [action.id]: true };\n } else if (action.type === \"VISIBILITY_CLOSE\") {\n return { ...state, [action.id]: false };\n } else if (action.type === \"VISIBILITY_TOGGLE\") {\n const prev = state[action.id];\n return { ...state, [action.id]: !prev };\n } else if (action.type === \"VISIBILITY_CLEAR\") {\n return {};\n } else {\n return state;\n }\n}\n\nexport function reducer(\n state: OpenSlice = { filtered: {}, unfiltered: {} },\n action: ActionTypes<typeof actions>\n): OpenSlice {\n if (!action.type.startsWith(\"VISIBILITY\")) return state;\n if (action.filtered) {\n return { ...state, filtered: openMapReducer(state.filtered, action) };\n } else {\n return { ...state, unfiltered: openMapReducer(state.unfiltered, action) };\n }\n}\n","import { ActionTypes, IdObj } from \"../types/utils\";\nimport { identify } from \"../utils\";\nimport { initialState } from \"./initial\";\n\n/* Types */\nexport type SelectionState = {\n ids: Set<string>;\n anchor: string | null;\n mostRecent: string | null;\n};\n\n/* Actions */\nexport const actions = {\n clear: () => ({ type: \"SELECTION_CLEAR\" as const }),\n\n only: (id: string | IdObj) => ({\n type: \"SELECTION_ONLY\" as const,\n id: identify(id),\n }),\n\n add: (id: string | string[] | IdObj | IdObj[]) => ({\n type: \"SELECTION_ADD\" as const,\n ids: (Array.isArray(id) ? id : [id]).map(identify),\n }),\n\n remove: (id: string | string[] | IdObj | IdObj[]) => ({\n type: \"SELECTION_REMOVE\" as const,\n ids: (Array.isArray(id) ? id : [id]).map(identify),\n }),\n\n set: (args: {\n ids: Set<string>;\n anchor: string | null;\n mostRecent: string | null;\n }) => ({\n type: \"SELECTION_SET\" as const,\n ...args,\n }),\n\n mostRecent: (id: string | null | IdObj) => ({\n type: \"SELECTION_MOST_RECENT\" as const,\n id: id === null ? null : identify(id),\n }),\n\n anchor: (id: string | null | IdObj) => ({\n type: \"SELECTION_ANCHOR\" as const,\n id: id === null ? null : identify(id),\n }),\n};\n\n/* Reducer */\nexport function reducer(\n state: SelectionState = initialState()[\"nodes\"][\"selection\"],\n action: ActionTypes<typeof actions>\n): SelectionState {\n const ids = state.ids;\n switch (action.type) {\n case \"SELECTION_CLEAR\":\n return { ...state, ids: new Set() };\n case \"SELECTION_ONLY\":\n return { ...state, ids: new Set([action.id]) };\n case \"SELECTION_ADD\":\n if (action.ids.length === 0) return state;\n action.ids.forEach((id) => ids.add(id));\n return { ...state, ids: new Set(ids) };\n case \"SELECTION_REMOVE\":\n if (action.ids.length === 0) return state;\n action.ids.forEach((id) => ids.delete(id));\n return { ...state, ids: new Set(ids) };\n case \"SELECTION_SET\":\n return {\n ...state,\n ids: action.ids,\n mostRecent: action.mostRecent,\n anchor: action.anchor,\n };\n case \"SELECTION_MOST_RECENT\":\n return { ...state, mostRecent: action.id };\n case \"SELECTION_ANCHOR\":\n return { ...state, anchor: action.id };\n default:\n return state;\n }\n}\n","import { TreeProps } from \"../types/tree-props\";\nimport { RootState } from \"./root-reducer\";\n\nexport const initialState = (props?: TreeProps<any>): RootState => ({\n nodes: {\n // Changes together\n open: { filtered: {}, unfiltered: props?.initialOpenState ?? {} },\n focus: { id: null, treeFocused: false },\n edit: { id: null },\n drag: { id: null, idWillReceiveDrop: null },\n selection: { ids: new Set(), anchor: null, mostRecent: null },\n },\n dnd: {\n cursor: { type: \"none\" },\n dragId: null,\n dragIds: [],\n parentId: null,\n index: -1,\n },\n});\n","import { Cursor } from \"../dnd/compute-drop\";\nimport { ActionTypes } from \"../types/utils\";\nimport { initialState } from \"./initial\";\n\n/* Types */\nexport type DndState = {\n dragId: null | string;\n cursor: Cursor;\n dragIds: string[];\n parentId: null | string;\n index: number;\n};\n\n/* Actions */\nexport const actions = {\n cursor(cursor: Cursor) {\n return { type: \"DND_CURSOR\" as const, cursor };\n },\n dragStart(id: string, dragIds: string[]) {\n return { type: \"DND_DRAG_START\" as const, id, dragIds };\n },\n dragEnd() {\n return { type: \"DND_DRAG_END\" as const };\n },\n hovering(parentId: string | null, index: number) {\n return { type: \"DND_HOVERING\" as const, parentId, index };\n },\n};\n\n/* Reducer */\nexport function reducer(\n state: DndState = initialState()[\"dnd\"],\n action: ActionTypes<typeof actions>\n): DndState {\n switch (action.type) {\n case \"DND_CURSOR\":\n return { ...state, cursor: action.cursor };\n case \"DND_DRAG_START\":\n return { ...state, dragId: action.id, dragIds: action.dragIds };\n case \"DND_DRAG_END\":\n return initialState()[\"dnd\"];\n case \"DND_HOVERING\":\n return { ...state, parentId: action.parentId, index: action.index };\n default:\n return state;\n }\n}\n","import React, { CSSProperties, memo } from \"react\";\nimport { XYCoord } from \"react-dnd\";\nimport { useTreeApi } from \"../context\";\nimport { DragPreviewProps } from \"../types/renderers\";\nimport { IdObj } from \"../types/utils\";\n\nconst layerStyles: CSSProperties = {\n position: \"fixed\",\n pointerEvents: \"none\",\n zIndex: 100,\n left: 0,\n top: 0,\n width: \"100%\",\n height: \"100%\",\n};\n\nconst getStyle = (offset: XYCoord | null) => {\n if (!offset) return { display: \"none\" };\n const { x, y } = offset;\n return { transform: `translate(${x}px, ${y}px)` };\n};\n\nconst getCountStyle = (offset: XYCoord | null) => {\n if (!offset) return { display: \"none\" };\n const { x, y } = offset;\n return { transform: `translate(${x + 10}px, ${y + 10}px)` };\n};\n\nexport function DefaultDragPreview({\n offset,\n mouse,\n id,\n dragIds,\n isDragging,\n}: DragPreviewProps) {\n return (\n <Overlay isDragging={isDragging}>\n <Position offset={offset}>\n <PreviewNode id={id} dragIds={dragIds} />\n </Position>\n <Count mouse={mouse} count={dragIds.length} />\n </Overlay>\n );\n}\n\nconst Overlay = memo(function Overlay(props: {\n children: JSX.Element[];\n isDragging: boolean;\n}) {\n if (!props.isDragging) return null;\n return <div style={layerStyles}>{props.children}</div>;\n});\n\nfunction Position(props: { children: JSX.Element; offset: XYCoord | null }) {\n return (\n <div className=\"row preview\" style={getStyle(props.offset)}>\n {props.children}\n </div>\n );\n}\n\nfunction Count(props: { count: number; mouse: XYCoord | null }) {\n const { count, mouse } = props;\n if (count > 1)\n return (\n <div className=\"selected-count\" style={getCountStyle(mouse)}>\n {count}\n </div>\n );\n else return null;\n}\n\nconst PreviewNode = memo(function PreviewNode<T>(props: {\n id: string | null;\n dragIds: string[];\n}) {\n const tree = useTreeApi<T>();\n const node = tree.get(props.id);\n if (!node) return null;\n return (\n <tree.renderNode\n preview\n node={node}\n style={{\n paddingLeft: node.level * tree.indent,\n opacity: 0.2,\n background: \"transparent\",\n }}\n tree={tree}\n />\n );\n});\n","import { FixedSizeList } from \"react-window\";\nimport { useDataUpdates, useTreeApi } from \"../context\";\nimport { focusNextElement, focusPrevElement } from \"../utils\";\nimport { ListOuterElement } from \"./list-outer-element\";\nimport { ListInnerElement } from \"./list-inner-element\";\nimport { RowContainer } from \"./row-container\";\n\nlet focusSearchTerm = \"\";\nlet timeoutId: any = null;\n\n/**\n * All these keyboard shortcuts seem like they should be configurable.\n * Each operation should be a given a name and separated from\n * the event handler. Future clean up welcome.\n */\nexport function DefaultContainer() {\n useDataUpdates();\n const tree = useTreeApi();\n return (\n <div\n style={{\n height: tree.height,\n width: tree.width,\n minHeight: 0,\n minWidth: 0,\n }}\n onContextMenu={tree.props.onContextMenu}\n onClick={tree.props.onClick}\n tabIndex={0}\n onFocus={(e) => {\n if (!e.currentTarget.contains(e.relatedTarget)) {\n tree.onFocus();\n }\n }}\n onBlur={(e) => {\n if (!e.currentTarget.contains(e.relatedTarget)) {\n tree.onBlur();\n }\n }}\n onKeyDown={(e) => {\n if (tree.isEditing) {\n return;\n }\n if (e.key === \"Backspace\") {\n if (!tree.props.onDelete) return;\n const ids = Array.from(tree.selectedIds);\n if (ids.length > 1) {\n let nextFocus = tree.mostRecentNode;\n while (nextFocus && nextFocus.isSelected) {\n nextFocus = nextFocus.nextSibling;\n }\n if (!nextFocus) nextFocus = tree.lastNode;\n tree.focus(nextFocus, { scroll: false });\n tree.delete(Array.from(ids));\n } else {\n const node = tree.focusedNode;\n if (node) {\n const sib = node.nextSibling;\n const parent = node.parent;\n tree.focus(sib || parent, { scroll: false });\n tree.delete(node);\n }\n }\n return;\n }\n if (e.key === \"Tab\" && !e.shiftKey) {\n e.preventDefault();\n focusNextElement(e.currentTarget);\n return;\n }\n if (e.key === \"Tab\" && e.shiftKey) {\n e.preventDefault();\n focusPrevElement(e.currentTarget);\n return;\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const next = tree.nextNode;\n if (e.metaKey) {\n tree.select(tree.focusedNode);\n tree.activate(tree.focusedNode);\n return;\n } else if (!e.shiftKey || tree.props.disableMultiSelection) {\n tree.focus(next);\n return;\n } else {\n if (!next) return;\n const current = tree.focusedNode;\n if (!current) {\n tree.focus(tree.firstNode);\n } else if (current.isSelected) {\n tree.selectContiguous(next);\n } else {\n tree.selectMulti(next);\n }\n return;\n }\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const prev = tree.prevNode;\n if (!e.shiftKey || tree.props.disableMultiSelection) {\n tree.focus(prev);\n return;\n } else {\n if (!prev) return;\n const current = tree.focusedNode;\n if (!current) {\n tree.focus(tree.lastNode); // ?\n } else if (current.isSelected) {\n tree.selectContiguous(prev);\n } else {\n tree.selectMulti(prev);\n }\n return;\n }\n }\n if (e.key === \"ArrowRight\") {\n const node = tree.focusedNode;\n if (!node) return;\n if (node.isInternal && node.isOpen) {\n tree.focus(tree.nextNode);\n } else if (node.isInternal) tree.open(node.id);\n return;\n }\n if (e.key === \"ArrowLeft\") {\n const node = tree.focusedNode;\n if (!node || node.isRoot) return;\n if (node.isInternal && node.isOpen) tree.close(node.id);\n else if (!node.parent?.isRoot) {\n tree.focus(node.parent);\n }\n return;\n }\n if (e.key === \"a\" && e.metaKey && !tree.props.disableMultiSelection) {\n e.preventDefault();\n tree.selectAll();\n return;\n }\n if (e.key === \"a\" && !e.metaKey && tree.props.onCreate) {\n tree.createLeaf();\n return;\n }\n if (e.key === \"A\" && !e.metaKey) {\n if (!tree.props.onCreate) return;\n tree.createInternal();\n return;\n }\n\n if (e.key === \"Home\") {\n // add shift keys\n e.preventDefault();\n tree.focus(tree.firstNode);\n return;\n }\n if (e.key === \"End\") {\n // add shift keys\n e.preventDefault();\n tree.focus(tree.lastNode);\n return;\n }\n if (e.key === \"Enter\") {\n const node = tree.focusedNode;\n if (!node) return;\n if (!node.isEditable || !tree.props.onRename) return;\n setTimeout(() => {\n if (node) tree.edit(node);\n });\n return;\n }\n if (e.key === \" \") {\n e.preventDefault();\n const node = tree.focusedNode;\n if (!node) return;\n if (node.isLeaf) {\n node.select();\n node.activate();\n } else {\n node.toggle();\n }\n return;\n }\n if (e.key === \"*\") {\n const node = tree.focusedNode;\n if (!node) return;\n tree.openSiblings(node);\n return;\n }\n if (e.key === \"PageUp\") {\n e.preventDefault();\n tree.pageUp();\n return;\n }\n if (e.key === \"PageDown\") {\n e.preventDefault();\n tree.pageDown();\n }\n\n // If they type a sequence of characters\n // collect them. Reset them after a timeout.\n // Use it to search the tree for a node, then focus it.\n // Clean this up a bit later\n clearTimeout(timeoutId);\n focusSearchTerm += e.key;\n timeoutId = setTimeout(() => {\n focusSearchTerm = \"\";\n }, 600);\n const node = tree.visibleNodes.find((n) => {\n // @ts-ignore\n const name = n.data.name;\n if (typeof name === \"string\") {\n return name.toLowerCase().startsWith(focusSearchTerm);\n } else return false;\n });\n if (node) tree.focus(node.id);\n }}\n >\n <FixedSizeList\n className={tree.props.className}\n outerRef={tree.listEl}\n itemCount={tree.visibleNodes.length}\n height={tree.height}\n width={tree.width}\n itemSize={tree.rowHeight}\n overscanCount={tree.overscanCount}\n itemKey={(index) => tree.visibleNodes[index]?.id || index}\n outerElementType={ListOuterElement}\n innerElementType={ListInnerElement}\n onScroll={tree.props.onScroll}\n onItemsRendered={tree.onItemsRendered.bind(tree)}\n ref={tree.list}\n >\n {RowContainer}\n </FixedSizeList>\n </div>\n );\n}\n","import { forwardRef } from \"react\";\nimport { useTreeApi } from \"../context\";\nimport { treeBlur } from \"../state/focus-slice\";\nimport { Cursor } from \"./cursor\";\n\nexport const ListOuterElement = forwardRef(function Outer(\n props: React.HTMLProps<HTMLDivElement>,\n ref\n) {\n const { children, ...rest } = props;\n const tree = useTreeApi();\n return (\n <div\n // @ts-ignore\n ref={ref}\n {...rest}\n onClick={(e) => {\n if (e.currentTarget === e.target) tree.deselectAll();\n }}\n >\n <DropContainer />\n {children}\n </div>\n );\n});\n\nconst DropContainer = () => {\n const tree = useTreeApi();\n return (\n <div\n style={{\n height: tree.visibleNodes.length * tree.rowHeight,\n width: \"100%\",\n position: \"absolute\",\n left: \"0\",\n right: \"0\",\n }}\n >\n <Cursor />\n </div>\n );\n};\n","import { useDndContext, useTreeApi } from \"../context\";\n\nexport function Cursor() {\n const tree = useTreeApi();\n const state = useDndContext();\n const cursor = state.cursor;\n if (!cursor || cursor.type !== \"line\") return null;\n const indent = tree.indent;\n const top =\n tree.rowHeight * cursor.index +\n (tree.props.padding ?? tree.props.paddingTop ?? 0);\n const left = indent * cursor.level;\n const Cursor = tree.renderCursor;\n return <Cursor {...{ top, left, indent }} />;\n}\n","import React from \"react\";\nimport { forwardRef } from \"react\";\nimport { useTreeApi } from \"../context\";\n\nexport const ListInnerElement = forwardRef<any, any>(function InnerElement(\n { style, ...rest },\n ref\n) {\n const tree = useTreeApi();\n const paddingTop = tree.props.padding ?? tree.props.paddingTop ?? 0;\n const paddingBottom = tree.props.padding ?? tree.props.paddingBottom ?? 0;\n return (\n <div\n ref={ref}\n style={{\n ...style,\n height: `${parseFloat(style.height) + paddingTop + paddingBottom}px`,\n }}\n {...rest}\n />\n );\n});\n","import React, { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { useDataUpdates, useNodesContext, useTreeApi } from \"../context\";\nimport { useDragHook } from \"../dnd/drag-hook\";\nimport { useDropHook } from \"../dnd/drop-hook\";\nimport { useFreshNode } from \"../hooks/use-fresh-node\";\n\ntype Props = {\n style: React.CSSProperties;\n index: number;\n};\n\nexport const RowContainer = React.memo(function RowContainer<T>({\n index,\n style,\n}: Props) {\n /* When will the <Row> will re-render.\n *\n * The row component is memo'd so it will only render\n * when a new instance of the NodeApi class is passed\n * to it.\n *\n * The TreeApi instance is stable. It does not\n * change when the internal state changes.\n *\n * The TreeApi has all the references to the nodes.\n * We need to clone the nodes when their state\n * changes. The node class contains no state itself,\n * It always checks the tree for state. The tree's\n * state will always be up to date.\n */\n\n useDataUpdates(); // Re-render when tree props or visability changes\n const _ = useNodesContext(); // So that we re-render appropriately\n const tree = useTreeApi<T>(); // Tree already has the fresh state\n const node = useFreshNode<T>(index);\n\n const el = useRef<HTMLDivElement | null>(null);\n const dragRef = useDragHook<T>(node);\n const dropRef = useDropHook(el, node);\n const innerRef = useCallback(\n (n: any) => {\n el.current = n;\n dropRef(n);\n },\n [dropRef]\n );\n\n const indent = tree.indent * node.level;\n const nodeStyle = useMemo(() => ({ paddingLeft: indent }), [indent]);\n const rowStyle = useMemo(\n () => ({\n ...style,\n top:\n parseFloat(style.top as string) +\n (tree.props.padding ?? tree.props.paddingTop ?? 0),\n }),\n [style, tree.props.padding, tree.props.paddingTop]\n );\n const rowAttrs: React.HTMLAttributes<any> = {\n role: \"treeitem\",\n \"aria-level\": node.level,\n \"aria-selected\": node.isSelected,\n style: rowStyle,\n tabIndex: -1,\n className: tree.props.rowClassName,\n };\n\n useEffect(() => {\n if (!node.isEditing && node.isFocused) {\n el.current?.focus({ preventScroll: true });\n }\n }, [node.isEditing, node.isFocused, el.current]);\n\n const Node = tree.renderNode;\n const Row = tree.renderRow;\n\n return (\n <Row node={node} innerRef={innerRef} attrs={rowAttrs}>\n <Node node={node} tree={tree} style={nodeStyle} dragHandle={dragRef} />\n </Row>\n );\n});\n","import { useEffect } from \"react\";\nimport { ConnectDragSource, useDrag } from \"react-dnd\";\nimport { getEmptyImage } from \"react-dnd-html5-backend\";\nimport { useTreeApi } from \"../context\";\nimport { NodeApi } from \"../interfaces/node-api\";\nimport { DragItem } from \"../types/dnd\";\nimport { DropResult } from \"./drop-hook\";\nimport { actions as dnd } from \"../state/dnd-slice\";\nimport { safeRun } from \"../utils\";\nimport { ROOT_ID } from \"../data/create-root\";\n\nexport function useDragHook<T>(node: NodeApi<T>): ConnectDragSource {\n const tree = useTreeApi();\n const ids = tree.selectedIds;\n const [_, ref, preview] = useDrag<DragItem, DropResult, void>(\n () => ({\n canDrag: () => node.isDraggable,\n type: \"NODE\",\n item: () => {\n // This is fired once at the begging of a drag operation\n const dragIds = tree.isSelected(node.id) ? Array.from(ids) : [node.id];\n tree.dispatch(dnd.dragStart(node.id, dragIds));\n return { id: node.id };\n },\n end: () => {\n tree.hideCursor();\n let { parentId, index, dragIds } = tree.state.dnd;\n // If they held down meta, we need to create a copy\n // if (drop.dropEffect === \"copy\")\n if (tree.canDrop()) {\n safeRun(tree.props.onMove, {\n dragIds,\n parentId: parentId === ROOT_ID ? null : parentId,\n index,\n dragNodes: tree.dragNodes,\n parentNode: tree.get(parentId),\n });\n tree.open(parentId);\n }\n tree.dispatch(dnd.dragEnd());\n },\n }),\n [ids, node]\n );\n\n useEffect(() => {\n preview(getEmptyImage());\n }, [preview]);\n\n return ref;\n}\n","import { RefObject } from \"react\";\nimport { ConnectDropTarget, useDrop } from \"react-dnd\";\nimport { useTreeApi } from \"../context\";\nimport { NodeApi } from \"../interfaces/node-api\";\nimport { DragItem } from \"../types/dnd\";\nimport { computeDrop } from \"./compute-drop\";\nimport { actions as dnd } from \"../state/dnd-slice\";\n\nexport type DropResult = {\n parentId: string | null;\n index: number;\n};\n\nexport function useDropHook(\n el: RefObject<HTMLElement | null>,\n node: NodeApi<any>\n): ConnectDropTarget {\n const tree = useTreeApi();\n const [_, dropRef] = useDrop<DragItem, DropResult | null, void>(\n () => ({\n accept: \"NODE\",\n canDrop: () => tree.canDrop(),\n hover: (_item, m) => {\n const offset = m.getClientOffset();\n if (!el.current || !offset) return;\n const { cursor, drop } = computeDrop({\n element: el.current,\n offset: offset,\n indent: tree.indent,\n node: node,\n prevNode: node.prev,\n nextNode: node.next,\n });\n if (drop) tree.dispatch(dnd.hovering(drop.parentId, drop.index));\n\n if (m.canDrop()) {\n if (cursor) tree.showCursor(cursor);\n } else {\n tree.hideCursor();\n }\n },\n drop: (_, m) => {\n if (!m.canDrop()) return null;\n },\n }),\n [node, el.current, tree.props]\n );\n\n return dropRef;\n}\n","import { XYCoord } from \"react-dnd\";\nimport { NodeApi } from \"../interfaces/node-api\";\nimport { bound, indexOf, isClosed, isItem } from \"../utils\";\nimport { DropResult } from \"./drop-hook\";\n\nfunction measureHover(el: HTMLElement, offset: XYCoord) {\n const rect = el.getBoundingClientRect();\n const x = offset.x - Math.round(rect.x);\n const y = offset.y - Math.round(rect.y);\n const height = rect.height;\n const inTopHalf = y < height / 2;\n const inBottomHalf = !inTopHalf;\n const pad = height / 4;\n const inMiddle = y > pad && y < height - pad;\n const atTop = !inMiddle && inTopHalf;\n const atBottom = !inMiddle && inBottomHalf;\n return { x, inTopHalf, inBottomHalf, inMiddle, atTop, atBottom };\n}\n\ntype HoverData = ReturnType<typeof measureHover>;\n\nfunction getNodesAroundCursor(\n node: NodeApi | null,\n prev: NodeApi | null,\n next: NodeApi | null,\n hover: HoverData\n): [NodeApi | null, NodeApi | null] {\n if (!node) {\n // We're hoving over the empty part of the list, not over an item,\n // Put the cursor below the last item which is \"prev\"\n return [prev, null];\n }\n if (node.isInternal) {\n if (hover.atTop) {\n return [prev, node];\n } else if (hover.inMiddle) {\n return [node, node];\n } else {\n return [node, next];\n }\n } else {\n if (hover.inTopHalf) {\n return [prev, node];\n } else {\n return [node, next];\n }\n }\n}\n\ntype Args = {\n element: HTMLElement;\n offset: XYCoord;\n indent: number;\n node: NodeApi | null;\n prevNode: NodeApi | null;\n nextNode: NodeApi | null;\n};\n\nfunction getDropLevel(\n hovering: HoverData,\n aboveCursor: NodeApi | null,\n belowCursor: NodeApi | null,\n indent: number\n) {\n const hoverLevel = Math.round(Math.max(0, hovering.x - indent) / indent);\n let min, max;\n if (!aboveCursor) {\n max = 0;\n min = 0;\n } else if (!belowCursor) {\n max = aboveCursor.level;\n min = 0;\n } else {\n max = aboveCursor.level;\n min = belowCursor.level;\n }\n\n return bound(hoverLevel, min, max);\n}\n\nexport type ComputedDrop = {\n drop: DropResult | null;\n cursor: Cursor | null;\n};\n\nfunction dropAt(parentId: string | undefined, index: number): DropResult {\n return { parentId: parentId || null, index };\n}\n\nfunction lineCursor(index: number, level: number) {\n return {\n type: \"line\" as \"line\",\n index,\n level,\n };\n}\n\nfunction noCursor() {\n return {\n type: \"none\" as \"none\",\n };\n}\n\nfunction highlightCursor(id: string) {\n return {\n type: \"highlight\" as \"highlight\",\n id,\n };\n}\n\nfunction walkUpFrom(node: NodeApi, level: number) {\n let drop = node;\n while (drop.parent && drop.level > level) {\n drop = drop.parent;\n }\n const parentId = drop.parent?.id || null;\n const index = indexOf(drop) + 1;\n return { parentId, index };\n}\n\nexport type LineCursor = ReturnType<typeof lineCursor>;\nexport type NoCursor = ReturnType<typeof noCursor>;\nexport type HighlightCursor = ReturnType<typeof highlightCursor>;\nexport type Cursor = LineCursor | NoCursor | HighlightCursor;\n\n/**\n * This is the most complex, tricky function in the whole repo.\n * It could be simplified and made more understandable.\n */\nexport function computeDrop(args: Args): ComputedDrop {\n const hover = measureHover(args.element, args.offset);\n const { node, nextNode, prevNode } = args;\n const [above, below] = getNodesAroundCursor(node, prevNode, nextNode, hover);\n\n /* Hovering over the middle of a folder */\n if (node && node.isInternal && hover.inMiddle) {\n return {\n drop: dropAt(node.id, 0),\n cursor: highlightCursor(node.id),\n };\n }\n\n /* At the top of the list */\n if (!above) {\n return {\n drop: dropAt(below?.parent?.id, 0),\n cursor: lineCursor(0, 0),\n };\n }\n\n /* The above node is an item or a closed folder */\n if (isItem(above) || isClosed(above)) {\n const level = getDropLevel(hover, above, below, args.indent);\n return {\n drop: walkUpFrom(above, level),\n cursor: lineCursor(above.rowIndex! + 1, level),\n };\n }\n\n /* The above node is an open folder */\n return {\n drop: dropAt(above?.id, 0),\n cursor: lineCursor(above.rowIndex! + 1, above.level + 1),\n };\n}\n","import { useMemo } from \"react\";\nimport { useTreeApi } from \"../context\";\nimport { IdObj } from \"../types/utils\";\n\nexport function useFreshNode<T>(index: number) {\n const tree = useTreeApi<T>();\n const original = tree.at(index);\n if (!original) throw new Error(`Could not find node for index: ${index}`);\n\n return useMemo(() => {\n const fresh = original.clone();\n tree.visibleNodes[index] = fresh; // sneaky\n return fresh;\n // Return a fresh instance if the state values change\n }, [...Object.values(original.state), original]);\n}\n","import { NodeApi } from \"../interfaces/node-api\";\nimport { TreeApi } from \"../interfaces/tree-api\";\nimport { IdObj } from \"../types/utils\";\n\nexport function createList<T>(tree: TreeApi<T>) {\n if (tree.isFiltered) {\n return flattenAndFilterTree(tree.root, tree.isMatch.bind(tree));\n } else {\n return flattenTree(tree.root);\n }\n}\n\nfunction flattenTree<T>(root: NodeApi<T>): NodeApi<T>[] {\n const list: NodeApi<T>[] = [];\n function collect(node: NodeApi<T>) {\n if (node.level >= 0) {\n list.push(node);\n }\n if (node.isOpen) {\n node.children?.forEach(collect);\n }\n }\n collect(root);\n list.forEach(assignRowIndex);\n return list;\n}\n\nfunction flattenAndFilterTree<T>(\n root: NodeApi<T>,\n isMatch: (n: NodeApi<T>) => boolean\n): NodeApi<T>[] {\n const matches: Record<string, boolean> = {};\n const list: NodeApi<T>[] = [];\n\n function markMatch(node: NodeApi<T>) {\n const yes = !node.isRoot && isMatch(node);\n if (yes) {\n matches[node.id] = true;\n let parent = node.parent;\n while (parent) {\n matches[parent.id] = true;\n parent = parent.parent;\n }\n }\n if (node.children) {\n for (let child of node.children) markMatch(child);\n }\n }\n\n function collect(node: NodeApi<T>) {\n if (node.level >= 0 && matches[node.id]) {\n list.push(node);\n }\n if (node.isOpen) {\n node.children?.forEach(collect);\n }\n }\n\n markMatch(root);\n collect(root);\n list.forEach(assignRowIndex);\n return list;\n}\n\nfunction assignRowIndex(node: NodeApi<any>, index: number) {\n node.rowIndex = index;\n}\n","import { NodeApi } from \"../interfaces/node-api\";\nimport { IdObj } from \"../types/utils\";\n\nexport const createIndex = <T>(nodes: NodeApi<T>[]) => {\n return nodes.reduce<{ [id: string]: number }>((map, node, index) => {\n map[node.id] = index;\n return map;\n }, {});\n};\n","import { ActionFromReducer, combineReducers } from \"redux\";\nimport { reducer as focus } from \"./focus-slice\";\nimport { reducer as edit } from \"./edit-slice\";\nimport { reducer as dnd } from \"./dnd-slice\";\nimport { reducer as selection } from \"./selection-slice\";\nimport { reducer as open } from \"./open-slice\";\nimport { reducer as drag } from \"./drag-slice\";\n\nexport const rootReducer = combineReducers({\n nodes: combineReducers({\n focus,\n edit,\n open,\n selection,\n drag,\n }),\n dnd,\n});\n\nexport type RootState = ReturnType<typeof rootReducer>;\nexport type Actions = ActionFromReducer<typeof rootReducer>;\n","import { ActionTypes } from \"../types/utils\";\nimport { actions as dnd } from \"./dnd-slice\";\n\n/* Types */\n\nexport type DragSlice = { id: string | null; idWillReceiveDrop: string | null };\n\n/* Reducer */\n\nexport function reducer(\n state: DragSlice = { id: null, idWillReceiveDrop: null },\n action: ActionTypes<typeof dnd>\n) {\n switch (action.type) {\n case \"DND_DRAG_START\":\n return { ...state, id: action.id };\n case \"DND_DRAG_END\":\n return { ...state, id: null };\n case \"DND_CURSOR\":\n const c = action.cursor;\n if (c.type === \"highlight\" && c.id !== state.idWillReceiveDrop) {\n return { ...state, idWillReceiveDrop: c.id };\n } else if (c.type !== \"highlight\" && state.idWillReceiveDrop !== null) {\n return { ...state, idWillReceiveDrop: null };\n } else {\n return state;\n }\n default:\n return state;\n }\n}\n","import { ReactElement } from \"react\";\nimport { useOuterDrop } from \"../dnd/outer-drop-hook\";\n\nexport function OuterDrop(props: { children: ReactElement }) {\n useOuterDrop();\n return props.children;\n}\n","import { useDrop } from \"react-dnd\";\nimport { useTreeApi } from \"../context\";\nimport { DragItem } from \"../types/dnd\";\nimport { computeDrop } from \"./compute-drop\";\nimport { DropResult } from \"./drop-hook\";\nimport { actions as dnd } from \"../state/dnd-slice\";\n\nexport function useOuterDrop() {\n const tree = useTreeApi();\n\n // In case we drop an item at the bottom of the list\n const [, drop] = useDrop<DragItem, DropResult | null, { isOver: boolean }>(\n () => ({\n accept: \"NODE\",\n canDrop: (_item, m) => {\n if (!m.isOver({ shallow: true })) return false;\n return tree.canDrop();\n },\n hover: (_item, m) => {\n if (!m.isOver({ shallow: true })) return;\n const offset = m.getClientOffset();\n if (!tree.listEl.current || !offset) return;\n const { cursor, drop } = computeDrop({\n element: tree.listEl.current,\n offset: offset,\n indent: tree.indent,\n node: null,\n prevNode: tree.visibleNodes[tree.visibleNodes.length - 1],\n nextNode: null,\n });\n if (drop) tree.dispatch(dnd.hovering(drop.parentId, drop.index));\n\n if (m.canDrop()) {\n if (cursor) tree.showCursor(cursor);\n } else {\n tree.hideCursor();\n }\n },\n }),\n [tree]\n );\n\n drop(tree.listEl);\n}\n","import React from \"react\";\nimport { useTreeApi } from \"../context\";\nimport { DefaultContainer } from \"./default-container\";\n\nexport function TreeContainer() {\n const tree = useTreeApi();\n const Container = tree.props.renderContainer || DefaultContainer;\n return (\n <>\n <Container />\n </>\n );\n}\n","import { useDragLayer } from \"react-dnd\";\nimport { useDndContext, useTreeApi } from \"../context\";\nimport { DefaultDragPreview } from \"./default-drag-preview\";\n\nexport function DragPreviewContainer() {\n const tree = useTreeApi();\n const { offset, mouse, item, isDragging } = useDragLayer((m) => {\n return {\n offset: m.getSourceClientOffset(),\n mouse: m.getClientOffset(),\n item: m.getItem(),\n isDragging: m.isDragging(),\n };\n });\n\n const DragPreview = tree.props.renderDragPreview || DefaultDragPreview;\n return (\n <DragPreview\n offset={offset}\n mouse={mouse}\n id={item?.id || null}\n dragIds={item?.dragIds || []}\n isDragging={isDragging}\n />\n );\n}\n","import { TreeProps } from \"../types/tree-props\";\nimport { IdObj } from \"../types/utils\";\nimport { SimpleTreeData, useSimpleTree } from \"./use-simple-tree\";\n\nexport function useValidatedProps<T>(props: TreeProps<T>): TreeProps<T> {\n if (props.initialData && props.data) {\n throw new Error(\n `React Arborist Tree => Provide either a data or initialData prop, but not both.`\n );\n }\n if (\n props.initialData &&\n (props.onCreate || props.onDelete || props.onMove || props.onRename)\n ) {\n throw new Error(\n `React Arborist Tree => You passed the initialData prop along with a data handler.\nUse the data prop if you want to provide your own handlers.`\n );\n }\n if (props.initialData) {\n /**\n * Let's break the rules of hooks here. If the initialData prop\n * is provided, we will assume it will not change for the life of\n * the component.\n *\n * We will provide the real data and the handlers to update it.\n * */\n const [data, controller] = useSimpleTree<T>(props.initialData);\n return { ...props, ...controller, data };\n } else {\n return props;\n }\n}\n","import { useMemo, useState } from \"react\";\nimport { SimpleTree } from \"../data/simple-tree\";\nimport {\n CreateHandler,\n DeleteHandler,\n MoveHandler,\n RenameHandler,\n} from \"../types/handlers\";\nimport { IdObj } from \"../types/utils\";\n\nexport type SimpleTreeData = {\n id: string;\n name: string;\n children?: SimpleTreeData[];\n};\n\nlet nextId = 0;\n\nexport function useSimpleTree<T>(initialData: readonly T[]) {\n const [data, setData] = useState(initialData);\n const tree = useMemo(\n () =>\n new SimpleTree<// @ts-ignore\n T>(data),\n [data]\n );\n\n const onMove: MoveHandler<T> = (args: {\n dragIds: string[];\n parentId: null | string;\n index: number;\n }) => {\n for (const id of args.dragIds) {\n tree.move({ id, parentId: args.parentId, index: args.index });\n }\n setData(tree.data);\n };\n\n const onRename: RenameHandler<T> = ({ name, id }) => {\n tree.update({ id, changes: { name } as any });\n setData(tree.data);\n };\n\n const onCreate: CreateHandler<T> = ({ parentId, index, type }) => {\n const data = { id: `simple-tree-id-${nextId++}`, name: \"\" } as any;\n if (type === \"internal\") data.children = [];\n tree.create({ parentId, index, data });\n setData(tree.data);\n return data;\n };\n\n const onDelete: DeleteHandler<T> = (args: { ids: string[] }) => {\n args.ids.forEach((id) => tree.drop({ id }));\n setData(tree.data);\n };\n\n const controller = { onMove, onRename, onCreate, onDelete };\n\n return [data, controller] as const;\n}\n","type SimpleData = { id: string; name: string; children?: SimpleData[] };\n\nexport class SimpleTree<T extends SimpleData> {\n root: SimpleNode<T>;\n constructor(data: T[]) {\n this.root = createRoot<T>(data);\n }\n\n get data() {\n return this.root.children?.map((node) => node.data) ?? [];\n }\n\n create(args: { parentId: string | null; index: number; data: T }) {\n const parent = args.parentId ? this.find(args.parentId) : this.root;\n if (!parent) return null;\n parent.addChild(args.data, args.index);\n }\n\n move(args: { id: string; parentId: string | null; index: number }) {\n const src = this.find(args.id);\n const parent = args.parentId ? this.find(args.parentId) : this.root;\n if (!src || !parent) return;\n parent.addChild(src.data, args.index);\n src.drop();\n }\n\n update(args: { id: string; changes: Partial<T> }) {\n const node = this.find(args.id);\n if (node) node.update(args.changes);\n }\n\n drop(args: { id: string }) {\n const node = this.find(args.id);\n if (node) node.drop();\n }\n\n find(id: string, node: SimpleNode<T> = this.root): SimpleNode<T> | null {\n if (!node) return null;\n if (node.id === id) return node as SimpleNode<T>;\n if (node.children) {\n for (let child of node.children) {\n const found = this.find(id, child);\n if (found) return found;\n }\n return null;\n }\n return null;\n }\n}\n\nfunction createRoot<T extends SimpleData>(data: T[]) {\n const root = new SimpleNode<T>({ id: \"ROOT\" } as T, null);\n root.children = data.map((d) => createNode(d as T, root));\n return root;\n}\n\nfunction createNode<T extends SimpleData>(data: T, parent: SimpleNode<T>) {\n const node = new SimpleNode<T>(data, parent);\n if (data.children)\n node.children = data.children.map((d) => createNode<T>(d as T, node));\n return node;\n}\n\nclass SimpleNode<T extends SimpleData> {\n id: string;\n children?: SimpleNode<T>[];\n constructor(public data: T, public parent: SimpleNode<T> | null) {\n this.id = data.id;\n }\n\n hasParent(): this is this & { parent: SimpleNode<T> } {\n return !!this.parent;\n }\n\n get childIndex(): number {\n return this.hasParent() ? this.parent.children!.indexOf(this) : -1;\n }\n\n addChild(data: T, index: number) {\n const node = createNode(data, this);\n this.children = this.children ?? [];\n this.children.splice(index, 0, node);\n this.data.children = this.data.children ?? [];\n this.data.children.splice(index, 0, data);\n }\n\n removeChild(index: number) {\n this.children?.splice(index, 1);\n this.data.children?.splice(index, 1);\n }\n\n update(changes: Partial<T>) {\n if (this.hasParent()) {\n const i = this.childIndex;\n this.parent.addChild({ ...this.data, ...changes }, i);\n this.drop();\n }\n }\n\n drop() {\n if (this.hasParent()) this.parent.removeChild(this.childIndex);\n }\n}\n","import { NodeApi } from \"../interfaces/node-api\";\nimport { IdObj } from \"./utils\";\n\nexport type CreateHandler<T> = (args: {\n parentId: string | null;\n parentNode: NodeApi<T> | null;\n index: number;\n type: \"internal\" | \"leaf\";\n}) => (IdObj | null) | Promise<IdObj | null>;\n\nexport type MoveHandler<T> = (args: {\n dragIds: string[];\n dragNodes: NodeApi<T>[];\n parentId: string | null;\n parentNode: NodeApi<T> | null;\n index: number;\n}) => void | Promise<void>;\n\nexport type RenameHandler<T> = (args: {\n id: string;\n name: string;\n node: NodeApi<T>;\n}) => void | Promise<void>;\n\nexport type DeleteHandler<T> = (args: {\n ids: string[];\n nodes: NodeApi<T>[];\n}) => void | Promise<void>;\n\nexport type EditResult =\n | { cancelled: true }\n | { cancelled: false; value: string };\n","import { CSSProperties, HTMLAttributes, ReactElement } from \"react\";\nimport { IdObj } from \"./utils\";\nimport { NodeApi } from \"../interfaces/node-api\";\nimport { TreeApi } from \"../interfaces/tree-api\";\nimport { XYCoord } from \"react-dnd\";\n\nexport type NodeRendererProps<T> = {\n style: CSSProperties;\n node: NodeApi<T>;\n tree: TreeApi<T>;\n dragHandle?: (el: HTMLDivElement | null) => void;\n preview?: boolean;\n};\n\nexport type RowRendererProps<T> = {\n node: NodeApi<T>;\n innerRef: (el: HTMLDivElement | null) => void;\n attrs: HTMLAttributes<any>;\n children: ReactElement;\n};\n\nexport type DragPreviewProps = {\n offset: XYCoord | null;\n mouse: XYCoord | null;\n id: string | null;\n dragIds: string[];\n isDragging: boolean;\n};\n\nexport type CursorProps = {\n top: number;\n left: number;\n indent: number;\n};\n","import { NodeApi } from \"../interfaces/node-api\";\n\nexport type NodeState = typeof NodeApi.prototype[\"state\"];\n"],"names":[],"version":3,"file":"module.js.map"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { ActionFromReducer } from "redux";
|
|
2
|
-
export declare const rootReducer: import("redux").Reducer<import("redux").CombinedState<{
|
|
3
|
-
nodes: import("redux").CombinedState<{
|
|
4
|
-
focus: import("./focus-slice").FocusState;
|
|
5
|
-
edit: import("./edit-slice").EditState;
|
|
6
|
-
open: import("./open-slice").OpenSlice;
|
|
7
|
-
selection: import("./selection-slice").SelectionState;
|
|
8
|
-
drag: import("./drag-slice").DragSlice;
|
|
9
|
-
}>;
|
|
10
|
-
dnd: import("./dnd-slice").DndState;
|
|
11
|
-
}>, import("redux").AnyAction>;
|
|
12
|
-
export declare type RootState = ReturnType<typeof rootReducer>;
|
|
13
|
-
export declare type Actions = ActionFromReducer<typeof rootReducer>;
|
package/dist/types/state.d.ts
DELETED
package/jest.config.js
DELETED
package/tsconfig.json
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|