react-arborist 1.2.0 → 2.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +606 -144
  2. package/dist/components/{drop-cursor.d.ts → cursor.d.ts} +0 -0
  3. package/dist/components/default-container.d.ts +7 -0
  4. package/dist/components/default-cursor.d.ts +3 -0
  5. package/dist/components/default-drag-preview.d.ts +3 -0
  6. package/dist/components/default-node.d.ts +4 -0
  7. package/dist/components/default-row.d.ts +4 -0
  8. package/dist/components/drag-preview-container.d.ts +2 -0
  9. package/dist/components/list-inner-element.d.ts +2 -0
  10. package/dist/components/provider.d.ts +11 -0
  11. package/dist/components/row-container.d.ts +8 -0
  12. package/dist/components/tree-container.d.ts +2 -0
  13. package/dist/components/tree.d.ts +5 -4
  14. package/dist/context.d.ts +20 -2
  15. package/dist/data/create-index.d.ts +5 -0
  16. package/dist/data/create-list.d.ts +4 -0
  17. package/dist/data/create-root.d.ts +5 -0
  18. package/dist/data/simple-tree.d.ts +43 -0
  19. package/dist/dnd/compute-drop.d.ts +4 -4
  20. package/dist/dnd/drag-hook.d.ts +3 -4
  21. package/dist/dnd/drop-hook.d.ts +2 -3
  22. package/dist/hooks/use-fresh-node.d.ts +2 -0
  23. package/dist/hooks/use-simple-tree.d.ts +13 -0
  24. package/dist/hooks/use-validated-props.d.ts +3 -0
  25. package/dist/index.d.ts +8 -4
  26. package/dist/index.js +1948 -973
  27. package/dist/index.js.map +1 -1
  28. package/dist/interfaces/node-api.d.ts +67 -0
  29. package/dist/interfaces/tree-api.d.ts +113 -0
  30. package/dist/module.js +1935 -979
  31. package/dist/module.js.map +1 -1
  32. package/dist/state/dnd-slice.d.ts +20 -0
  33. package/dist/state/drag-slice.d.ts +7 -0
  34. package/dist/state/edit-slice.d.ts +8 -0
  35. package/dist/state/focus-slice.d.ts +12 -0
  36. package/dist/state/initial.d.ts +3 -0
  37. package/dist/state/open-slice.d.ts +30 -0
  38. package/dist/state/root-reducer.d.ts +13 -0
  39. package/dist/state/selection-slice.d.ts +36 -0
  40. package/dist/types/dnd.d.ts +9 -0
  41. package/dist/types/handlers.d.ts +24 -0
  42. package/dist/types/renderers.d.ts +30 -0
  43. package/dist/types/state.d.ts +2 -0
  44. package/dist/types/tree-props.d.ts +44 -0
  45. package/dist/types/utils.d.ts +21 -0
  46. package/dist/utils.d.ts +15 -6
  47. package/package.json +11 -7
  48. package/src/components/cursor.tsx +15 -0
  49. package/src/components/default-container.tsx +238 -0
  50. package/src/components/{default-drop-cursor.tsx → default-cursor.tsx} +9 -8
  51. package/src/components/{preview.tsx → default-drag-preview.tsx} +25 -41
  52. package/src/components/default-node.tsx +50 -0
  53. package/src/components/default-row.tsx +21 -0
  54. package/src/components/drag-preview-container.tsx +26 -0
  55. package/src/components/list-inner-element.tsx +22 -0
  56. package/src/components/list-outer-element.tsx +26 -15
  57. package/src/components/provider.tsx +97 -0
  58. package/src/components/row-container.tsx +82 -0
  59. package/src/components/tree-container.tsx +13 -0
  60. package/src/components/tree.tsx +16 -44
  61. package/src/context.ts +36 -0
  62. package/src/data/create-index.ts +9 -0
  63. package/src/data/create-list.ts +56 -0
  64. package/src/data/create-root.ts +54 -0
  65. package/src/data/simple-tree.ts +103 -0
  66. package/src/dnd/compute-drop.ts +16 -16
  67. package/src/dnd/drag-hook.ts +25 -19
  68. package/src/dnd/drop-hook.ts +31 -17
  69. package/src/dnd/outer-drop-hook.ts +1 -1
  70. package/src/hooks/use-fresh-node.ts +16 -0
  71. package/src/hooks/use-simple-tree.ts +55 -0
  72. package/src/hooks/use-validated-props.ts +35 -0
  73. package/src/index.ts +9 -19
  74. package/src/interfaces/node-api.ts +187 -0
  75. package/src/interfaces/tree-api.ts +557 -0
  76. package/src/state/dnd-slice.ts +36 -0
  77. package/src/state/drag-slice.ts +31 -0
  78. package/src/state/edit-slice.ts +19 -0
  79. package/src/state/focus-slice.ts +28 -0
  80. package/src/state/initial.ts +14 -0
  81. package/src/state/open-slice.ts +53 -0
  82. package/src/state/root-reducer.ts +21 -0
  83. package/src/state/selection-slice.ts +75 -0
  84. package/src/types/dnd.ts +10 -0
  85. package/src/types/handlers.ts +24 -0
  86. package/src/types/renderers.ts +34 -0
  87. package/src/types/state.ts +3 -0
  88. package/src/types/tree-props.ts +64 -0
  89. package/src/types/utils.ts +26 -0
  90. package/src/utils.ts +125 -11
  91. package/tsconfig.json +1 -1
  92. package/dist/components/default-drop-cursor.d.ts +0 -3
  93. package/dist/components/list.d.ts +0 -4
  94. package/dist/components/preview.d.ts +0 -2
  95. package/dist/components/row.d.ts +0 -8
  96. package/dist/data/enrich-tree.d.ts +0 -2
  97. package/dist/data/flatten-tree.d.ts +0 -2
  98. package/dist/provider.d.ts +0 -3
  99. package/dist/reducer.d.ts +0 -46
  100. package/dist/selection/range.d.ts +0 -13
  101. package/dist/selection/selection-hook.d.ts +0 -4
  102. package/dist/selection/selection.d.ts +0 -33
  103. package/dist/tree-api.d.ts +0 -50
  104. package/dist/types.d.ts +0 -122
  105. package/src/components/drop-cursor.tsx +0 -12
  106. package/src/components/list.tsx +0 -25
  107. package/src/components/row.tsx +0 -112
  108. package/src/context.tsx +0 -13
  109. package/src/data/enrich-tree.ts +0 -74
  110. package/src/data/flatten-tree.ts +0 -17
  111. package/src/provider.tsx +0 -41
  112. package/src/reducer.ts +0 -161
  113. package/src/selection/range.ts +0 -41
  114. package/src/selection/selection-hook.ts +0 -25
  115. package/src/selection/selection.test.ts +0 -111
  116. package/src/selection/selection.ts +0 -186
  117. package/src/tree-api.ts +0 -230
  118. package/src/types.ts +0 -148
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/react-arborist/src/index.ts","packages/react-arborist/src/components/tree.tsx","packages/react-arborist/src/data/enrich-tree.ts","packages/react-arborist/src/provider.tsx","packages/react-arborist/src/context.tsx","packages/react-arborist/src/reducer.ts","packages/react-arborist/src/selection/selection.ts","packages/react-arborist/src/selection/range.ts","packages/react-arborist/src/selection/selection-hook.ts","packages/react-arborist/src/tree-api.ts","packages/react-arborist/src/data/flatten-tree.ts","packages/react-arborist/src/utils.ts","packages/react-arborist/src/components/default-drop-cursor.tsx","packages/react-arborist/src/components/preview.tsx","packages/react-arborist/src/components/outer-drop.ts","packages/react-arborist/src/dnd/outer-drop-hook.ts","packages/react-arborist/src/dnd/compute-drop.ts","packages/react-arborist/src/components/list.tsx","packages/react-arborist/src/components/list-outer-element.tsx","packages/react-arborist/src/components/drop-cursor.tsx","packages/react-arborist/src/components/row.tsx","packages/react-arborist/src/dnd/drag-hook.ts","packages/react-arborist/src/dnd/drop-hook.ts"],"sourcesContent":["import { Tree } from \"./components/tree\";\nimport { TreeApi } from \"./tree-api\";\nimport type {\n NodeRenderer,\n NodeState,\n NodeHandlers,\n NodeRendererProps,\n DropCursorProps,\n} from \"./types\";\n\nexport {\n Tree,\n TreeApi,\n NodeRenderer,\n NodeState,\n NodeHandlers,\n NodeRendererProps,\n DropCursorProps,\n};\n","import { forwardRef, ReactElement, useMemo, useRef } from \"react\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { enrichTree } from \"../data/enrich-tree\";\nimport { TreeViewProvider } from \"../provider\";\nimport { TreeApi } from \"../tree-api\";\nimport { IdObj, Node, TreeProps } from \"../types\";\nimport { noop } from \"../utils\";\nimport { Preview } from \"./preview\";\nimport { OuterDrop } from \"./outer-drop\";\nimport { List } from \"./list\";\n\nexport const Tree = forwardRef(function Tree<T extends IdObj>(\n props: TreeProps<T>,\n ref: React.Ref<TreeApi<T>>\n) {\n const root = useMemo<Node<T>>(\n () =>\n enrichTree<T>(\n props.data,\n props.hideRoot,\n props.getChildren,\n props.isOpen,\n props.disableDrag,\n props.disableDrop,\n props.openByDefault\n ),\n [\n props.data,\n props.hideRoot,\n props.getChildren,\n props.isOpen,\n props.disableDrag,\n props.disableDrop,\n props.openByDefault,\n ]\n );\n\n return (\n <TreeViewProvider treeProps={props} imperativeHandle={ref} root={root}>\n <DndProvider\n backend={HTML5Backend}\n options={{ rootElement: props.dndRootElement || undefined }}\n >\n <OuterDrop>\n <List className={props.className} />\n </OuterDrop>\n <Preview />\n </DndProvider>\n </TreeViewProvider>\n );\n});\n","import { TreeProps, IdObj, Node } from \"../types\";\n\nfunction createNode<T extends IdObj>(\n model: T,\n level: number,\n parent: Node<T> | null,\n children: Node<T>[] | null,\n isOpen: boolean,\n isDraggable: boolean,\n isDroppable: boolean\n): Node<T> {\n return {\n id: model.id,\n level,\n parent,\n children,\n isOpen,\n isDraggable,\n isDroppable,\n model,\n rowIndex: null,\n };\n}\n\nfunction access(obj: any, accessor: string | boolean | Function) {\n if (typeof accessor === \"boolean\") {\n return accessor;\n }\n\n if (typeof accessor === \"string\") {\n return obj[accessor];\n }\n\n return accessor(obj);\n}\n\nexport function enrichTree<T extends IdObj>(\n model: T,\n hideRoot: boolean = false,\n getChildren: TreeProps<T>[\"getChildren\"] = \"children\",\n isOpen: TreeProps<T>[\"isOpen\"] = \"isOpen\",\n disableDrag: TreeProps<T>[\"disableDrag\"] = false,\n disableDrop: TreeProps<T>[\"disableDrop\"] = false,\n openByDefault: boolean = true\n): Node<T> {\n function visitSelfAndChildren(\n model: T,\n level: number,\n parent: Node<T> | null\n ) {\n const open = access(model, isOpen) as boolean;\n const draggable = !access(model, disableDrag) as boolean;\n const droppable = !access(model, disableDrop) as boolean;\n const node = createNode<T>(\n model,\n level,\n parent,\n null,\n open === undefined ? openByDefault : open,\n draggable,\n droppable\n );\n const children = access(model, getChildren) as T[];\n\n if (children) {\n node.children = children.map((child: T) =>\n visitSelfAndChildren(child, level + 1, node)\n );\n }\n return node;\n }\n\n return visitSelfAndChildren(model, hideRoot ? -1 : 0, null);\n}\n","import {\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useReducer,\n useRef,\n} from \"react\";\nimport { FixedSizeList } from \"react-window\";\nimport { TreeApiContext } from \"./context\";\nimport { actions, initState, reducer } from \"./reducer\";\nimport { useSelectionKeys } from \"./selection/selection-hook\";\nimport { TreeApi } from \"./tree-api\";\nimport { IdObj, TreeProviderProps } from \"./types\";\n\nexport function TreeViewProvider<T extends IdObj>(props: TreeProviderProps<T>) {\n const [state, dispatch] = useReducer(reducer, initState());\n const list = useRef<FixedSizeList | null>(null);\n const listEl = useRef<HTMLDivElement | null>(null);\n\n const api = useMemo(\n () => new TreeApi<T>(dispatch, state, props, list, listEl),\n [dispatch, state, props, list, listEl]\n );\n\n /**\n * This ensures that the selection remains correct even\n * after opening and closing a folders\n */\n useLayoutEffect(() => {\n dispatch(actions.setVisibleIds(api.visibleIds, api.idToIndex));\n }, [dispatch, api.visibleIds, api.idToIndex, props.root]);\n\n useImperativeHandle(props.imperativeHandle, () => api);\n useSelectionKeys(listEl, api);\n\n return (\n <TreeApiContext.Provider value={api}>\n {props.children}\n </TreeApiContext.Provider>\n );\n}\n","import React, { createContext, useContext, useMemo } from \"react\";\nimport { TreeApi } from \"./tree-api\";\nimport { IdObj } from \"./types\";\n\nexport const TreeApiContext = createContext<TreeApi<any> | null>(null);\n\nexport function useTreeApi<T extends IdObj>() {\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","import { Cursor } from \"./dnd/compute-drop\";\nimport { Selection } from \"./selection/selection\";\nimport { StateContext } from \"./types\";\n\nexport const initState = (): StateContext => ({\n visibleIds: [],\n cursor: { type: \"none\" } as Cursor,\n editingId: null,\n selection: {\n data: null,\n ids: [],\n },\n});\n\nexport const actions = {\n setCursorLocation: (cursor: Cursor) => ({\n type: \"SET_CURSOR_LOCATION\" as \"SET_CURSOR_LOCATION\",\n cursor,\n }),\n\n setVisibleIds: (\n ids: string[], // index to id\n idMap: { [id: string]: number } // id to index\n ) => ({\n type: \"SET_VISIBLE_IDS\" as \"SET_VISIBLE_IDS\",\n ids,\n idMap,\n }),\n\n select: (index: number | null, meta: boolean, shift: boolean) => ({\n type: \"SELECT\" as \"SELECT\",\n index,\n meta,\n shift,\n }),\n\n selectId: (id: string) => ({\n type: \"SELECT_ID\" as \"SELECT_ID\",\n id,\n }),\n\n edit: (id: string | null) => ({\n type: \"EDIT\" as \"EDIT\",\n id,\n }),\n\n stepUp: (shift: boolean, ids: string[]) => ({\n type: \"STEP_UP\" as \"STEP_UP\",\n shift,\n }),\n\n stepDown: (shift: boolean, ids: string[]) => ({\n type: \"STEP_DOWN\" as \"STEP_DOWN\",\n shift,\n }),\n};\n\ntype ActionObj = {\n [Prop in keyof typeof actions]: ReturnType<typeof actions[Prop]>;\n};\nexport type Action = ActionObj[keyof ActionObj];\n\nexport function reducer(state: StateContext, action: Action): StateContext {\n switch (action.type) {\n case \"EDIT\":\n return {\n ...state,\n editingId: action.id,\n };\n case \"SET_CURSOR_LOCATION\":\n if (equal(state.cursor, action.cursor)) {\n return state;\n } else {\n return { ...state, cursor: action.cursor };\n }\n case \"SELECT\":\n var s = Selection.parse(state.selection.data, state.visibleIds);\n if (action.index === null) {\n s.clear();\n } else if (action.meta) {\n if (s.contains(action.index)) {\n s.deselect(action.index);\n } else {\n s.multiSelect(action.index);\n }\n } else if (action.shift) {\n s.extend(action.index);\n } else {\n s.select(action.index);\n }\n return {\n ...state,\n selection: {\n data: s.serialize(),\n ids: s.getSelectedItems(),\n },\n };\n case \"SELECT_ID\":\n return {\n ...state,\n selection: {\n ...state.selection,\n ids: [action.id],\n },\n };\n case \"STEP_UP\":\n var s3 = Selection.parse(state.selection.data, state.visibleIds);\n var f = s3.getFocus();\n if (action.shift) {\n s3.extend(f - 1);\n } else {\n s3.select(f - 1);\n }\n return {\n ...state,\n selection: {\n data: s3.serialize(),\n ids: s3.getSelectedItems(),\n },\n };\n case \"STEP_DOWN\":\n var s6 = Selection.parse(state.selection.data, state.visibleIds);\n var f2 = s6.getFocus();\n if (action.shift) {\n s6.extend(f2 + 1);\n } else {\n s6.select(f2 + 1);\n }\n return {\n ...state,\n selection: {\n data: s6.serialize(),\n ids: s6.getSelectedItems(),\n },\n };\n case \"SET_VISIBLE_IDS\":\n // The visible ids changed\n var ids = state.selection.ids;\n // Start with a blank selection\n var s2 = new Selection([], null, \"none\", state.visibleIds);\n // Add each of the old selected ids to this new selection\n for (let id of ids) {\n if (id in action.idMap) s2.multiSelect(action.idMap[id]);\n }\n return {\n ...state,\n visibleIds: action.ids,\n selection: {\n ids,\n data: s2.serialize(),\n },\n };\n default:\n return state;\n }\n}\n\nfunction equal(a: Cursor | null, b: Cursor | null) {\n if (a === null || b === null) return false;\n return JSON.stringify(a) === JSON.stringify(b);\n}\n","import { Range } from \"./range\";\n\ntype SelectionDirection = \"forward\" | \"backward\" | \"none\";\n\nexport type SelectionData = {\n ranges: [number, number][];\n currentIndex: number | null;\n direction: SelectionDirection;\n};\n\nexport class Selection {\n ranges: Range[] = [];\n currentIndex: number | null;\n direction: SelectionDirection = \"none\";\n items: any[];\n\n static parse(data: SelectionData | null, items: any[]) {\n if (data) {\n return new Selection(\n data.ranges,\n data.currentIndex,\n data.direction,\n items\n );\n } else {\n return new Selection();\n }\n }\n\n constructor(\n ranges: [number, number][] = [],\n currentIndex: number | null = ranges.length ? ranges.length - 1 : null,\n direction: SelectionDirection = \"none\",\n items: any[] = []\n ) {\n ranges.forEach(([s, e]) => this.addRange(s, e));\n this.currentIndex = currentIndex;\n this.direction = direction;\n this.items = items;\n }\n\n get current() {\n if (this.currentIndex === null) return null;\n const range = this.ranges[this.currentIndex];\n if (!range) {\n return null;\n } else {\n return range;\n }\n }\n\n select(n: number) {\n if (n < 0 || n >= this.items.length) return;\n this.clear();\n this.currentIndex = this.addRange(n, n);\n }\n\n multiSelect(n: number) {\n if (n < 0 || n >= this.items.length) return;\n if (this.contains(n)) return;\n this.currentIndex = this.addRange(n, n);\n this.compact(n);\n }\n\n deselect(n: number) {\n if (n < 0 || n >= this.items.length) return;\n const r = this.ranges.find((r) => r.contains(n));\n if (!r) return;\n else if (r.size === 1) this.removeRange(r);\n else if (r.start === n) r.start++;\n else if (r.end === n) r.end--;\n else {\n this.removeRange(r);\n this.addRange(r.start, n - 1);\n this.currentIndex = this.addRange(n + 1, r.end);\n }\n }\n\n getSelectedItems<T>(): T[] {\n return this.ranges.flatMap((range) =>\n range.map((index) => this.items[index])\n );\n }\n\n extend(n: number) {\n if (n < 0 || n >= this.items.length) return;\n if (this.isEmpty()) {\n this.select(n);\n } else {\n const anchor = this.getAnchor();\n if (anchor !== null && this.current) {\n const [start, end] = [n, anchor].sort((a, b) => a - b);\n this.current.start = start;\n this.current.end = end;\n this.compact(n);\n }\n }\n }\n\n contains(n: number | null) {\n if (n === null) return false;\n return this.ranges.some((r) => r.contains(n));\n }\n\n getRanges() {\n return this.ranges.map((r) => r.serialize());\n }\n\n clear() {\n this.ranges = [];\n this.currentIndex = null;\n this.direction = \"none\";\n }\n\n serialize(): SelectionData {\n return {\n ranges: this.getRanges(),\n currentIndex: this.currentIndex,\n direction: this.direction,\n };\n }\n\n isEqual(other: Selection) {\n if (other.ranges.length !== this.ranges.length) return false;\n\n for (let i = 0; i < this.ranges.length; ++i) {\n if (!this.ranges[i].isEqual(other.ranges[i])) return false;\n }\n return true;\n }\n\n private addRange(start: number, end: number) {\n const r = new Range(start, end);\n // Keep ranges sorted by start\n const index = this.ranges.findIndex((r) => r.start >= start);\n if (index === -1) this.ranges.push(r);\n else this.ranges.splice(index, 0, r);\n return index === -1 ? this.ranges.length - 1 : index;\n }\n\n private removeRange(r: Range) {\n const index = this.ranges.indexOf(r);\n this.ranges.splice(index, 1);\n if (this.isEmpty()) {\n this.currentIndex = null;\n } else if (index === this.currentIndex) {\n this.currentIndex = this.ranges.length - 1;\n }\n }\n\n private isEmpty() {\n return this.ranges.length === 0;\n }\n\n getAnchor() {\n if (!this.current) return null;\n return this.direction === \"backward\"\n ? this.current.end\n : this.current.start;\n }\n\n getFocus() {\n if (!this.current) return -1;\n return this.direction === \"backward\"\n ? this.current.start\n : this.current.end;\n }\n\n private compact(focus: number) {\n const removals = [];\n const current = this.current;\n for (let r of this.ranges) {\n if (!this.current || r === this.current) continue;\n if (this.current.overlaps(r)) {\n this.current.combine(r);\n removals.push(r);\n }\n }\n removals.forEach((r) => this.removeRange(r));\n if (current) this.currentIndex = this.ranges.indexOf(current);\n if (!this.current) return;\n if (this.current.start < focus) this.direction = \"forward\";\n else if (this.current.end > focus) this.direction = \"backward\";\n else this.direction = \"none\";\n }\n}\n","export class Range {\n constructor(public start: number, public end: number) {\n if (this.start > this.end)\n throw new Error(\"Invalid range: start larger than end\");\n }\n\n serialize(): [number, number] {\n return [this.start, this.end];\n }\n\n contains(n: number) {\n return n >= this.start && n <= this.end;\n }\n\n overlaps(r: Range) {\n return this.contains(r.start - 1) || this.contains(r.end + 1);\n }\n\n combine(r: Range) {\n this.start = Math.min(r.start, this.start);\n this.end = Math.max(r.end, this.end);\n }\n\n get size() {\n return this.end - this.start + 1;\n }\n\n clone() {\n return new Range(this.start, this.end);\n }\n\n map(fn: (index: any) => string): any {\n let returns = [];\n for (let i = this.start; i <= this.end; i++) returns.push(fn(i));\n return returns;\n }\n\n isEqual(other: Range) {\n return this.start === other.start && this.end === other.end;\n }\n}\n","import { MutableRefObject, useEffect } from \"react\";\nimport { TreeApi } from \"../tree-api\";\nimport { IdObj } from \"../types\";\n\nexport function useSelectionKeys<T extends IdObj>(\n ref: MutableRefObject<HTMLDivElement | null>,\n api: TreeApi<T>\n) {\n useEffect(() => {\n const el = ref.current;\n const cb = (e: KeyboardEvent) => {\n if (e.code === \"ArrowDown\") {\n e.preventDefault();\n api.selectDownwards(e.shiftKey);\n } else if (e.code === \"ArrowUp\") {\n e.preventDefault();\n api.selectUpwards(e.shiftKey);\n }\n };\n el?.addEventListener(\"keydown\", cb);\n return () => {\n el?.removeEventListener(\"keydown\", cb);\n };\n }, [ref, api]);\n}\n","import memoizeOne from \"memoize-one\";\nimport { Dispatch, MutableRefObject } from \"react\";\nimport { FixedSizeList } from \"react-window\";\nimport { flattenTree } from \"./data/flatten-tree\";\nimport { Cursor } from \"./dnd/compute-drop\";\nimport { Action, actions } from \"./reducer\";\nimport {\n Node,\n StateContext,\n TreeProviderProps,\n EditResult,\n IdObj,\n DropCursorProps,\n} from \"./types\";\nimport ReactDOM from \"react-dom\";\nimport { noop } from \"./utils\";\nimport { Selection } from \"./selection/selection\";\nimport { defaultDropCursor } from \"./components/default-drop-cursor\";\nexport class TreeApi<T extends IdObj> {\n private edits = new Map<string, (args: EditResult) => void>();\n\n constructor(\n public dispatch: Dispatch<Action>,\n public state: StateContext,\n public props: TreeProviderProps<T>,\n public list: MutableRefObject<FixedSizeList | null>,\n public listEl: MutableRefObject<HTMLDivElement | null>\n ) {}\n\n sync(other: TreeApi<T>) {\n this.dispatch = other.dispatch;\n this.state = other.state;\n this.props = other.props;\n this.list = other.list;\n this.listEl = other.listEl;\n }\n\n getNode(id: string): Node<T> | null {\n if (id in this.idToIndex)\n return this.visibleNodes[this.idToIndex[id]] || null;\n else return null;\n }\n\n getSelectedIds() {\n return this.state.selection.ids;\n }\n\n edit(id: string | number): Promise<EditResult> {\n const sid = id.toString();\n this.resolveEdit(sid, { cancelled: true });\n this.scrollToId(sid);\n this.dispatch(actions.edit(sid));\n return new Promise((resolve) => this.edits.set(sid, resolve));\n }\n\n submit(id: string | number, value: string) {\n const sid = id.toString();\n this.onEdit(sid, value);\n this.dispatch(actions.edit(null));\n this.resolveEdit(sid, { cancelled: false, value });\n }\n\n reset(id: string | number) {\n const sid = id.toString();\n this.dispatch(actions.edit(null));\n this.resolveEdit(sid, { cancelled: true });\n }\n\n private resolveEdit(id: string, value: EditResult) {\n const resolve = this.edits.get(id.toString());\n if (resolve) resolve(value);\n this.edits.delete(id);\n }\n\n select(index: number | null, meta = false, shift = false) {\n this.dispatch(actions.select(index, meta, shift));\n }\n\n selectById(id: string | number, meta = false, shift = false) {\n const index = this.idToIndex[id];\n this.select(index, meta, shift);\n }\n\n selectUpwards(shiftKey: boolean) {\n this.dispatch(actions.stepUp(shiftKey, this.visibleIds));\n }\n\n selectDownwards(shiftKey: boolean) {\n this.dispatch(actions.stepDown(shiftKey, this.visibleIds));\n }\n\n hideCursor() {\n this.dispatch(actions.setCursorLocation({ type: \"none\" }));\n }\n\n showCursor(cursor: Cursor) {\n this.dispatch(actions.setCursorLocation(cursor));\n }\n\n scrollToId(id: string) {\n if (!this.list) return;\n const index = this.idToIndex[id];\n if (index) {\n this.list.current?.scrollToItem(index);\n } else {\n this.openParents(id);\n ReactDOM.flushSync(() => {\n const index = this.idToIndex[id];\n if (index) {\n this.list.current?.scrollToItem(index);\n }\n });\n }\n }\n\n open(id: string) {\n this.onToggle(id, true);\n }\n\n openParents(id: string) {\n const node = dfs(this.props.root, id);\n let parent = node?.parent;\n\n while (parent) {\n this.open(parent.id);\n parent = parent.parent;\n }\n }\n\n get visibleIds() {\n return getIds(this.visibleNodes);\n }\n\n get idToIndex() {\n return createIndex(this.visibleNodes);\n }\n\n get visibleNodes() {\n return createList(this.props.root) as Node<T>[];\n }\n\n get width() {\n return this.props.treeProps.width || 300;\n }\n\n get height() {\n return this.props.treeProps.height || 500;\n }\n\n get indent() {\n return this.props.treeProps.indent || 24;\n }\n\n get renderer() {\n return this.props.treeProps.children;\n }\n\n get onToggle() {\n return this.props.treeProps.onToggle || noop;\n }\n\n get rowHeight() {\n return this.props.treeProps.rowHeight || 24;\n }\n\n get onClick() {\n return this.props.treeProps.onClick || noop;\n }\n\n get onContextMenu() {\n return this.props.treeProps.onContextMenu || noop;\n }\n\n get onMove() {\n return this.props.treeProps.onMove || noop;\n }\n\n get onEdit() {\n return this.props.treeProps.onEdit || noop;\n }\n\n get cursorParentId() {\n const { cursor } = this.state;\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.cursor.type === \"highlight\";\n }\n\n get editingId() {\n return this.state.editingId;\n }\n\n isSelected(index: number | null) {\n const selection = Selection.parse(this.state.selection.data, []);\n return selection.contains(index);\n }\n\n renderDropCursor(props: DropCursorProps) {\n const render = this.props.treeProps.dropCursor || defaultDropCursor;\n return render(props);\n }\n}\n\nconst getIds = memoizeOne((nodes: Node[]) => nodes.map((n) => n.id));\nconst createIndex = memoizeOne((nodes: Node[]) => {\n return nodes.reduce<{ [id: string]: number }>((map, node, index) => {\n map[node.id] = index;\n return map;\n }, {});\n});\nconst createList = memoizeOne(flattenTree);\n\nfunction dfs(node: Node<unknown>, id: string): Node<unknown> | 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","import { Node } from \"../types\";\n\nexport function flattenTree<T>(root: Node<T>): Node<T>[] {\n const list: Node<T>[] = [];\n let index = 0;\n function collect(node: Node<T>) {\n if (node.level >= 0) {\n node.rowIndex = index++;\n list.push(node);\n }\n if (node.isOpen) {\n node.children?.forEach(collect);\n }\n }\n collect(root);\n return list;\n}\n","import { Node } from \"./types\";\n\nexport function bound(n: number, min: number, max: number) {\n return Math.max(Math.min(n, max), min);\n}\n\nexport const isFolder = (node: Node<any>) => !!node.children;\n\nexport function isItem(node: Node | null) {\n return node && !isFolder(node);\n}\n\nexport function isClosed(node: Node | null) {\n return node && isFolder(node) && !node.isOpen;\n}\n\n/**\n * Is first param a decendent of the second param\n */\nexport const isDecendent = (a: Node, b: Node) => {\n let n: Node | 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: Node) => {\n // This should probably not throw an error, but instead return null\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","import React, { CSSProperties } from \"react\";\nimport { DropCursorProps } from \"../types\";\n\nconst placeholderStyle = {\n display: \"flex\",\n alignItems: \"center\",\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\nfunction DefaultCursor({ top, left, indent }: DropCursorProps) {\n const style: CSSProperties = {\n position: \"absolute\",\n pointerEvents: \"none\",\n top: top - 2 + \"px\",\n left: indent + 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\nexport function defaultDropCursor(props: DropCursorProps) {\n return <DefaultCursor {...props} />;\n}\n","import React, { CSSProperties, memo } from \"react\";\nimport { useDragLayer, XYCoord } from \"react-dnd\";\nimport { useTreeApi } from \"../context\";\nimport { DragItem, IdObj } from \"../types\";\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 Preview() {\n const { offset, mouse, item, isDragging } = useDragLayer((m) => ({\n offset: m.getSourceClientOffset(),\n mouse: m.getClientOffset(),\n item: m.getItem(),\n isDragging: m.isDragging(),\n }));\n\n return (\n <Overlay isDragging={isDragging}>\n <Position offset={offset}>\n <PreviewNode item={item} />\n </Position>\n <Count mouse={mouse} item={item} />\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: { item: DragItem; mouse: XYCoord | null }) {\n const { item, mouse } = props;\n if (item?.dragIds?.length > 1)\n return (\n <div className=\"selected-count\" style={getCountStyle(mouse)}>\n {item.dragIds.length}\n </div>\n );\n else return null;\n}\n\nconst PreviewNode = memo(function PreviewNode<T extends IdObj>(props: {\n item: DragItem | null;\n}) {\n const tree = useTreeApi<T>();\n if (!props.item) return null;\n const node = tree.getNode(props.item.id);\n if (!node) return null;\n return (\n <tree.renderer\n preview\n innerRef={() => {}}\n data={node.model}\n styles={{\n row: {},\n indent: { paddingLeft: node.level * tree.indent },\n }}\n tree={tree}\n state={{\n isDragging: false,\n isEditing: false,\n isSelected: false,\n isSelectedStart: false,\n isSelectedEnd: false,\n isHoveringOverChild: false,\n isOpen: node.isOpen,\n }}\n handlers={{\n edit: () => Promise.resolve({ cancelled: true }),\n select: () => {},\n toggle: () => {},\n submit: () => {},\n reset: () => {},\n }}\n />\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\";\nimport { computeDrop } from \"./compute-drop\";\nimport { DropResult } from \"./drop-hook\";\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 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 } = 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 (cursor) tree.showCursor(cursor);\n },\n canDrop: (item, m) => {\n return m.isOver({ shallow: true });\n },\n drop: (item, m) => {\n if (m.didDrop()) return;\n const offset = m.getClientOffset();\n if (!tree.listEl.current || !offset) return;\n const { 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 return drop;\n },\n }),\n [tree]\n );\n\n drop(tree.listEl);\n}\n","import { XYCoord } from \"react-dnd\";\nimport { Node } from \"../types\";\nimport { bound, indexOf, isClosed, isFolder, 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: Node | null,\n prev: Node | null,\n next: Node | null,\n hover: HoverData\n): [Node | null, Node | 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 (isFolder(node)) {\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: Node | null;\n prevNode: Node | null;\n nextNode: Node | null;\n};\n\nfunction getDropLevel(\n hovering: HoverData,\n aboveCursor: Node | null,\n belowCursor: Node | 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\nfunction canDrop(above: Node | null, below: Node | null) {\n if (!above) {\n return true;\n }\n\n let n: Node | null = above;\n if (isClosed(above) && above !== below) n = above.parent;\n\n while (n) {\n if (!n.isDroppable) return false;\n n = n.parent;\n }\n return true;\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: Node, 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 if (!canDrop(above, below)) {\n return { drop: null, cursor: noCursor() };\n }\n\n /* Hovering over the middle of a folder */\n if (node && isFolder(node) && 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 { FixedSizeList } from \"react-window\";\nimport { useTreeApi } from \"../context\";\nimport { ListOuterElement } from \"./list-outer-element\";\nimport { Row } from \"./row\";\n\nexport function List(props: { className?: string }) {\n const tree = useTreeApi();\n return (\n <div style={{ height: tree.height, width: tree.width, overflow: \"hidden\" }}>\n <FixedSizeList\n className={props.className}\n outerRef={tree.listEl}\n itemCount={tree.visibleNodes.length}\n height={tree.height}\n width={tree.width}\n itemSize={tree.rowHeight}\n itemKey={(index) => tree.visibleNodes[index]?.id || index}\n outerElementType={ListOuterElement}\n ref={tree.list}\n >\n {Row}\n </FixedSizeList>\n </div>\n );\n}\n","import { forwardRef } from \"react\";\nimport { useTreeApi } from \"../context\";\nimport { DropCursor } from \"./drop-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={tree.onClick}\n onContextMenu={tree.onContextMenu}\n >\n <div\n style={{\n height: tree.visibleNodes.length * tree.rowHeight,\n width: \"100%\",\n overflow: \"hidden\",\n position: \"absolute\",\n left: \"0\",\n right: \"0\",\n }}\n >\n <DropCursor />\n </div>\n {children}\n </div>\n );\n});\n","import { useTreeApi } from \"../context\";\n\nexport function DropCursor() {\n const tree = useTreeApi();\n const cursor = tree.state.cursor;\n if (!cursor || cursor.type !== \"line\") return null;\n const indent = tree.indent;\n const top = tree.rowHeight * cursor.index;\n const left = indent * cursor.level;\n\n return tree.renderDropCursor({ top, left, indent });\n}\n","import React, { useCallback, useMemo, useRef } from \"react\";\nimport { useTreeApi } from \"../context\";\nimport { useDragHook } from \"../dnd/drag-hook\";\nimport { useDropHook } from \"../dnd/drop-hook\";\nimport { IdObj } from \"../types\";\n\ntype Props = {\n style: React.CSSProperties;\n index: number;\n};\n\nexport const Row = React.memo(function Row<T extends IdObj>({\n index,\n style,\n}: Props) {\n const realTree = useTreeApi<T>();\n const tree = useMemo(() => realTree, []);\n tree.sync(realTree);\n\n const node = tree.visibleNodes[index];\n const next = tree.visibleNodes[index + 1] || null;\n const prev = tree.visibleNodes[index - 1] || null;\n const el = useRef<HTMLDivElement | null>(null);\n const [{ isDragging }, dragRef] = useDragHook(node);\n const [, dropRef] = useDropHook(el, node, prev, next);\n const isEditing = node.id === tree.editingId;\n const isSelected = tree.isSelected(index);\n const nextSelected = next && tree.isSelected(index + 1);\n const prevSelected = prev && tree.isSelected(index - 1);\n const isHoveringOverChild = node.id === tree.cursorParentId;\n const isOverFolder = node.id === tree.cursorParentId && tree.cursorOverFolder;\n const isOpen = node.isOpen;\n const indent = tree.indent * node.level;\n const state = useMemo(() => {\n return {\n isEditing,\n isDragging,\n isSelectedStart: isSelected && !prevSelected,\n isSelectedEnd: isSelected && !nextSelected,\n isSelected,\n isHoveringOverChild,\n isOpen,\n isOverFolder,\n };\n }, [\n isEditing,\n isSelected,\n prevSelected,\n nextSelected,\n isHoveringOverChild,\n isOpen,\n isDragging,\n isOverFolder,\n ]);\n\n const ref = useCallback(\n (n: HTMLDivElement | null) => {\n el.current = n;\n dragRef(dropRef(n));\n },\n [dragRef, dropRef]\n );\n\n const styles = useMemo(\n () => ({\n row: { ...style },\n indent: { paddingLeft: indent },\n }),\n [indent, style]\n );\n\n const handlers = useMemo(() => {\n return {\n select: (\n e: React.MouseEvent,\n args: { selectOnClick: boolean } = { selectOnClick: true }\n ) => {\n if (node.rowIndex === null) return;\n if (args.selectOnClick || e.metaKey || e.shiftKey) {\n tree.select(node.rowIndex, e.metaKey, e.shiftKey);\n } else {\n tree.select(null, false, false);\n }\n },\n toggle: (e: React.MouseEvent) => {\n e.stopPropagation();\n tree.onToggle(node.id, !node.isOpen);\n },\n edit: () => tree.edit(node.id),\n submit: (name: string) => {\n name.trim() ? tree.submit(node.id, name) : tree.reset(node.id);\n },\n reset: () => tree.reset(node.id),\n };\n }, [node, tree]);\n\n const Renderer = useMemo(() => {\n return React.memo(tree.renderer);\n }, [tree.renderer]);\n\n return (\n <Renderer\n innerRef={ref}\n data={node.model}\n styles={styles}\n state={state}\n handlers={handlers}\n preview={false}\n tree={tree}\n />\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 { DragItem, Node } from \"../types\";\nimport { DropResult } from \"./drop-hook\";\n\ntype CollectedProps = { isDragging: boolean };\n\nexport function useDragHook(\n node: Node\n): [{ isDragging: boolean }, ConnectDragSource] {\n const tree = useTreeApi();\n const ids = tree.getSelectedIds();\n const [{ isDragging }, ref, preview] = useDrag<\n DragItem,\n DropResult,\n CollectedProps\n >(\n () => ({\n canDrag: () => node.isDraggable,\n type: \"NODE\",\n item: () => ({\n id: node.id,\n dragIds: tree.isSelected(node.rowIndex) ? ids : [node.id],\n }),\n collect: (m) => ({\n isDragging: m.isDragging(),\n }),\n end: (item, monitor) => {\n tree.hideCursor();\n const drop = monitor.getDropResult();\n if (drop && drop.parentId) {\n tree.onMove(item.dragIds, drop.parentId, drop.index);\n tree.onToggle(drop.parentId, true);\n }\n },\n }),\n [ids, node]\n );\n\n useEffect(() => {\n preview(getEmptyImage());\n }, [preview]);\n\n return [{ isDragging }, ref];\n}\n","import { RefObject } from \"react\";\nimport { ConnectDropTarget, useDrop } from \"react-dnd\";\nimport { useTreeApi } from \"../context\";\nimport { DragItem, Node } from \"../types\";\nimport { isDecendent, isFolder } from \"../utils\";\nimport { computeDrop } from \"./compute-drop\";\n\nexport type DropResult = {\n parentId: string | null;\n index: number;\n};\n\nexport type CollectedProps = undefined;\n\nexport function useDropHook(\n el: RefObject<HTMLElement | null>,\n node: Node,\n prev: Node | null,\n next: Node | null\n): [CollectedProps, ConnectDropTarget] {\n const tree = useTreeApi();\n return useDrop<DragItem, DropResult | null, CollectedProps>(\n () => ({\n accept: \"NODE\",\n canDrop: (item) => {\n for (let id of item.dragIds) {\n const drag = tree.getNode(id);\n if (!drag) return false;\n if (isFolder(drag) && isDecendent(node, drag)) return false;\n }\n return true;\n },\n hover: (item, m) => {\n if (m.canDrop()) {\n const offset = m.getClientOffset();\n if (!el.current || !offset) return;\n const { cursor } = computeDrop({\n element: el.current,\n offset: offset,\n indent: tree.indent,\n node: node,\n prevNode: prev,\n nextNode: next,\n });\n if (cursor) tree.showCursor(cursor);\n } else {\n tree.hideCursor();\n }\n },\n drop: (item, m): DropResult | undefined | null => {\n const offset = m.getClientOffset();\n if (!el.current || !offset) return;\n const { drop } = computeDrop({\n element: el.current,\n offset: offset,\n indent: tree.indent,\n node: node,\n prevNode: prev,\n nextNode: next,\n });\n return drop;\n },\n }),\n [node, prev, el, tree]\n );\n}\n"],"names":[],"version":3,"file":"module.js.map"}
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\nexport const Tree = forwardRef(function Tree<T extends IdObj>(\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","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 { IdObj } from \"../types/utils\";\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 extends IdObj> = {\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 extends IdObj>({\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);\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 >\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 extends IdObj>() {\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 extends IdObj> {\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 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(Object.values(node.data));\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(\"internal\");\n }\n\n createLeaf() {\n return this.create(\"leaf\");\n }\n\n private async create(type: \"internal\" | \"leaf\") {\n let index;\n let parentId;\n const focus = this.focusedNode;\n if (focus && focus.parent) {\n if (focus.isInternal && focus.isOpen) {\n parentId = focus.id;\n index = 0;\n } else {\n index = focus.childIndex + 1;\n parentId = focus.parent.isRoot ? null : focus.parent.id;\n }\n } else {\n index = this.root?.children?.length || -1;\n parentId = null;\n }\n const data = await safeRun(this.props.onCreate, {\n parentId,\n index,\n type,\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 nodes = Array.isArray(node) ? node : [node];\n const ids = nodes.map(identify);\n await safeRun(this.props.onDelete, { 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(node: Identity, value: string) {\n if (!node) return;\n const id = identify(node);\n await safeRun(this.props.onRename, { id, name: value });\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 }\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 } = {}) {\n if (!node) return;\n const id = identify(node);\n 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 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 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 safeRun(this.props.onSelect, this.selectedNodes);\n }\n\n deselectAll() {\n this.dispatch(selection.clear());\n this.dispatch(selection.anchor(null));\n this.dispatch(selection.mostRecent(null));\n safeRun(this.props.onSelect, this.selectedNodes);\n }\n\n selectAll() {\n this.dispatch(selection.set(new Set(Object.keys(this.idToIndex))));\n this.dispatch(focus(this.lastNode?.id));\n this.dispatch(selection.anchor(this.firstNode));\n this.dispatch(selection.mostRecent(this.lastNode));\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 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 this.dispatch(visibility.open(id, this.isFiltered));\n }\n\n close(identity: Identity) {\n const id = identifyNull(identity);\n if (!id) return;\n this.dispatch(visibility.close(id, this.isFiltered));\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 /* 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 console.log(`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 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 isDraggable(data: T) {\n const check = this.props.disableDrag || (() => false);\n return !utils.access(data, check) ?? true;\n }\n\n isDroppable(data: T) {\n const check = this.props.disableDrop || (() => 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 { 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 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","import React, { CSSProperties } from \"react\";\nimport { DropCursorProps } 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}: DropCursorProps) {\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 extends IdObj>({\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 extends IdObj>(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 extends IdObj>(props: NodeRendererProps<T>) {\n return (\n <>\n {/* @ts-ignore */}\n <span>{props.node.data.name}</span>\n </>\n );\n}\n\nfunction Edit<T extends IdObj>({ 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 extends IdObj>(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 isDroppable: tree.isDroppable(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 isDroppable: true,\n rowIndex: null,\n });\n\n const data: 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 extends IdObj> = {\n id: string;\n data: T;\n level: number;\n children: NodeApi<T>[] | null;\n parent: NodeApi<T> | null;\n isDraggable: boolean;\n isDroppable: boolean;\n rowIndex: number | null;\n tree: TreeApi<T>;\n};\n\nexport class NodeApi<T extends IdObj = IdObj> {\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 isDroppable: 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.isDroppable = params.isDroppable;\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 isEditing() {\n return this.tree.editingId === this.id;\n }\n\n get isSelected() {\n return this.tree.isSelected(this.id);\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 isEditing: this.isEditing,\n isDragging: this.isDragging,\n isSelected: this.isSelected,\n isSelectedStart: this.isSelectedStart,\n isSelectedEnd: this.isSelectedEnd,\n isFocused: this.isFocused,\n isOpen: this.isOpen,\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) {\n this.isSelected ? this.deselect() : this.selectMulti();\n } else if (e.shiftKey) {\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: (ids: Set<string>) => ({\n type: \"SELECTION_SET\" as const,\n ids,\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 { ...state, ids: new Set(action.ids) };\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: { cursor: { type: \"none\" }, dragId: null },\n});\n","import { Cursor } from \"../dnd/compute-drop\";\nimport { ActionTypes } from \"../types/utils\";\nimport { initialState } from \"./initial\";\n\n/* Types */\nexport type DndState = { dragId: null | string; cursor: Cursor };\n\n/* Actions */\nexport const actions = {\n cursor(cursor: Cursor) {\n return { type: \"DND_CURSOR\" as const, cursor };\n },\n dragStart(id: string) {\n return { type: \"DND_DRAG_START\" as const, id };\n },\n dragEnd() {\n return { type: \"DND_DRAG_END\" as const };\n },\n};\n\n/* Reducer */\nexport function reducer(\n state: DndState = initialState()[\"dnd\"],\n action: ActionTypes<typeof actions>\n) {\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 };\n case \"DND_DRAG_END\":\n return { ...state, dragId: null };\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 extends IdObj>(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\" && !e.shiftKey && !e.metaKey) {\n e.preventDefault();\n const next = tree.nextNode;\n tree.focus(next);\n return;\n }\n if (e.key === \"ArrowDown\" && e.shiftKey) {\n e.preventDefault();\n const next = tree.nextNode;\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 if (e.key === \"ArrowUp\" && !e.shiftKey) {\n e.preventDefault();\n tree.focus(tree.prevNode);\n return;\n }\n if (e.key === \"ArrowUp\" && e.shiftKey) {\n e.preventDefault();\n const prev = tree.prevNode;\n const current = tree.focusedNode;\n if (!prev) return;\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 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) {\n e.preventDefault();\n tree.selectAll();\n return;\n }\n if (e.key === \"a\" && !e.metaKey) {\n if (!tree.props.onCreate) return;\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 if (!tree.props.onRename) return;\n setTimeout(() => {\n if (tree.focusedNode) tree.edit(tree.focusedNode);\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 === \"ArrowDown\" && e.metaKey) {\n e.preventDefault();\n tree.select(tree.focusedNode);\n tree.activate(tree.focusedNode);\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 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 { DropCursor } 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 onClick={(e) => {\n console.log(e.currentTarget, e.target);\n }}\n >\n <DropCursor />\n </div>\n );\n};\n","import { useDndContext, useTreeApi } from \"../context\";\n\nexport function DropCursor() {\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 { IdObj } from \"../types/utils\";\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 extends IdObj>({\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 };\n\n useEffect(() => {\n if (!node.isEditing && node.isFocused) {\n el.current?.focus();\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 { IdObj } from \"../types/utils\";\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 extends IdObj>(\n node: NodeApi<T>\n): 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 id: node.id,\n dragIds: tree.isSelected(node.id) ? Array.from(ids) : [node.id],\n }),\n start: () => {\n tree.dispatch(dnd.dragStart(node.id));\n },\n end: (item, monitor) => {\n tree.dispatch(dnd.dragEnd());\n tree.hideCursor();\n const drop = monitor.getDropResult();\n // If they held down meta, we need to create a copy\n // if (drop.dropEffect === \"copy\")\n if (drop && drop.parentId) {\n safeRun(tree.props.onMove, {\n dragIds: item.dragIds,\n parentId: drop.parentId === ROOT_ID ? null : drop.parentId,\n index: drop.index,\n });\n tree.open(drop.parentId);\n }\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 { isDecendent } from \"../utils\";\nimport { computeDrop } from \"./compute-drop\";\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: (item, m) => {\n if (node.tree.isFiltered) return false;\n const offset = m.getClientOffset();\n if (!el.current || !offset) return false;\n const { 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) return false;\n const dropParent = tree.get(drop.parentId) ?? tree.root;\n\n for (let id of item.dragIds) {\n const drag = tree.get(id);\n if (!drag) return false;\n if (!dropParent) return false;\n if (drag.isInternal && isDecendent(dropParent, drag)) return false;\n }\n return true;\n },\n hover: (item, m) => {\n if (m.canDrop()) {\n const offset = m.getClientOffset();\n if (!el.current || !offset) return;\n const { cursor } = 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 (cursor) tree.showCursor(cursor);\n } else {\n tree.hideCursor();\n }\n },\n drop: (item, m): DropResult | undefined | null => {\n const offset = m.getClientOffset();\n if (!el.current || !offset) return;\n const { 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 return drop;\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\nfunction canDrop(above: NodeApi | null, below: NodeApi | null) {\n if (!above) {\n return true;\n }\n\n let n: NodeApi | null = above;\n if (isClosed(above) && above !== below) n = above.parent;\n\n while (n) {\n if (!n.isDroppable) return false;\n n = n.parent;\n }\n return true;\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 if (!canDrop(above, below)) {\n return { drop: null, cursor: noCursor() };\n }\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 extends IdObj>(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 extends IdObj>(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 extends IdObj>(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 extends IdObj>(\n root: NodeApi<T>,\n isMatch: (n: NodeApi<T>) => boolean\n): NodeApi<T>[] {\n function collect(node: NodeApi<T>) {\n let result: NodeApi<T>[] = [];\n const yes = !node.isRoot && isMatch(node);\n\n if (node.children) {\n for (let child of node.children) {\n result = result.concat(collect(child));\n }\n }\n if (result.length) {\n if (!node.isRoot) result.unshift(node);\n return result;\n }\n if (yes) return [node];\n else return [];\n }\n\n const list = collect(root).filter((n) => n.parent?.isOpen);\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 extends IdObj>(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\";\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 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 } = 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 (cursor) tree.showCursor(cursor);\n },\n canDrop: (item, m) => {\n return m.isOver({ shallow: true });\n },\n drop: (item, m) => {\n if (m.didDrop()) return;\n const offset = m.getClientOffset();\n if (!tree.listEl.current || !offset) return;\n const { 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 return drop;\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 extends IdObj>(\n props: TreeProps<T>\n): 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 extends IdObj>(initialData: T[]) {\n const [data, setData] = useState(initialData);\n const tree = useMemo(() => new SimpleTree<T>(data), [data]);\n\n const onMove: MoveHandler = (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 = ({ name, id }) => {\n tree.update({ id, changes: { name } as any });\n setData(tree.data);\n };\n\n const onCreate: CreateHandler = ({ 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 = (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 IdObj = { id: string; children?: IdObj[] };\n\nexport class SimpleTree<T extends IdObj> {\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 IdObj>(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 IdObj>(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 IdObj> {\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 { IdObj } from \"./utils\";\n\nexport type CreateHandler = (args: {\n parentId: string | null;\n index: number;\n type: \"internal\" | \"leaf\";\n}) => (IdObj | null) | Promise<IdObj | null>;\n\nexport type MoveHandler = (args: {\n dragIds: string[];\n parentId: string | null;\n index: number;\n}) => void | Promise<void>;\n\nexport type RenameHandler = (args: {\n id: string;\n name: string;\n}) => void | Promise<void>;\n\nexport type DeleteHandler = (args: { ids: string[] }) => 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 extends IdObj> = {\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 extends IdObj> = {\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 DropCursorProps = {\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"}
@@ -0,0 +1,20 @@
1
+ import { Cursor } from "../dnd/compute-drop";
2
+ import { ActionTypes } from "../types/utils";
3
+ export declare type DndState = {
4
+ dragId: null | string;
5
+ cursor: Cursor;
6
+ };
7
+ export declare const actions: {
8
+ cursor(cursor: Cursor): {
9
+ type: "DND_CURSOR";
10
+ cursor: Cursor;
11
+ };
12
+ dragStart(id: string): {
13
+ type: "DND_DRAG_START";
14
+ id: string;
15
+ };
16
+ dragEnd(): {
17
+ type: "DND_DRAG_END";
18
+ };
19
+ };
20
+ export declare function reducer(state: DndState | undefined, action: ActionTypes<typeof actions>): DndState;
@@ -0,0 +1,7 @@
1
+ import { ActionTypes } from "../types/utils";
2
+ import { actions as dnd } from "./dnd-slice";
3
+ export declare type DragSlice = {
4
+ id: string | null;
5
+ idWillReceiveDrop: string | null;
6
+ };
7
+ export declare function reducer(state: DragSlice | undefined, action: ActionTypes<typeof dnd>): DragSlice;
@@ -0,0 +1,8 @@
1
+ export declare type EditState = {
2
+ id: string | null;
3
+ };
4
+ export declare function edit(id: string | null): {
5
+ type: "EDIT";
6
+ id: string | null;
7
+ };
8
+ export declare function reducer(state: EditState | undefined, action: ReturnType<typeof edit>): EditState;