react-arborist 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -84
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/module.js +7 -4
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +16 -13
- package/package.json +4 -3
- package/src/components/tree.tsx +21 -6
- package/src/tree-api.ts +2 -2
- package/src/types.ts +17 -13
package/dist/index.js.map
CHANGED
|
@@ -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/context.tsx","packages/react-arborist/src/selection/selection.ts","packages/react-arborist/src/selection/range.ts","packages/react-arborist/src/data/enrich-tree.ts","packages/react-arborist/src/dnd/outer-drop-hook.ts","packages/react-arborist/src/dnd/compute-drop.ts","packages/react-arborist/src/utils.ts","packages/react-arborist/src/provider.tsx","packages/react-arborist/src/reducer.ts","packages/react-arborist/src/selection/selection-hook.ts","packages/react-arborist/src/tree-api-hook.ts","packages/react-arborist/src/tree-api.ts","packages/react-arborist/src/data/flatten-tree.ts","packages/react-arborist/src/components/drop-cursor.tsx","packages/react-arborist/src/components/preview.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 { NodeRenderer, NodeState, NodeHandlers } from \"./types\";\n\nexport { Tree, TreeApi, NodeRenderer, NodeState, NodeHandlers };\n","import { forwardRef, MouseEventHandler, ReactElement, useMemo, useRef } from \"react\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { FixedSizeList } from \"react-window\";\nimport { useStaticContext } from \"../context\";\nimport { enrichTree } from \"../data/enrich-tree\";\nimport { useOuterDrop } from \"../dnd/outer-drop-hook\";\nimport { TreeViewProvider } from \"../provider\";\nimport { TreeApi } from \"../tree-api\";\nimport { IdObj, Node, TreeProps } from \"../types\";\nimport { noop } from \"../utils\";\nimport { DropCursor } from \"./drop-cursor\";\nimport { Preview } from \"./preview\";\nimport { Row } from \"./row\";\n\nconst OuterElement = forwardRef(function Outer(\n props: React.HTMLProps<HTMLDivElement>,\n ref\n) {\n const { children, ...rest } = props;\n const tree = useStaticContext();\n return (\n // @ts-ignore\n <div ref={ref} {...rest} onClick={tree.onClick} onContextMenu={tree.onContextMenu}>\n <div\n style={{\n height: tree.api.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\nfunction List(props: { className?: string}) {\n const tree = useStaticContext();\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.api.visibleNodes.length}\n height={tree.height}\n width={tree.width}\n itemSize={tree.rowHeight}\n itemKey={(index) => tree.api.visibleNodes[index]?.id || index}\n outerElementType={OuterElement}\n // @ts-ignore\n ref={tree.list}\n >\n {Row}\n </FixedSizeList>\n </div>\n );\n}\n\nfunction OuterDrop(props: { children: ReactElement }) {\n useOuterDrop();\n return props.children;\n}\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 return (\n <TreeViewProvider\n imperativeHandle={ref}\n root={root}\n listEl={useRef<HTMLDivElement | null>(null)}\n renderer={props.children}\n width={props.width === undefined ? 300 : props.width}\n height={props.height === undefined ? 500 : props.height}\n indent={props.indent === undefined ? 24 : props.indent}\n rowHeight={props.rowHeight === undefined ? 24 : props.rowHeight}\n onMove={props.onMove || noop}\n onToggle={props.onToggle || noop}\n onEdit={props.onEdit || noop}\n onClick={props.onClick}\n onContextMenu={props.onContextMenu}\n >\n <DndProvider backend={HTML5Backend}>\n <OuterDrop>\n <List className={props.className}/>\n </OuterDrop>\n <Preview />\n </DndProvider>\n </TreeViewProvider>\n );\n});\n","import { createContext, useContext, useMemo } from \"react\";\nimport { Cursor } from \"./dnd/compute-drop\";\nimport { Selection } from \"./selection/selection\";\nimport { IdObj, SelectionState, StaticContext } from \"./types\";\n\nexport const CursorParentId = createContext<string | null>(null);\nexport function useCursorParentId() {\n return useContext(CursorParentId);\n}\n\nexport const IsCursorOverFolder = createContext<boolean>(false);\nexport function useIsCursorOverFolder() {\n return useContext(IsCursorOverFolder);\n}\n\nexport const CursorLocationContext = createContext<Cursor | null>(null);\nexport function useCursorLocation() {\n return useContext(CursorLocationContext);\n}\n\nexport const Static = createContext<StaticContext<IdObj> | null>(null);\nexport function useStaticContext() {\n const value = useContext(Static);\n if (!value) throw new Error(\"Context must be in a provider\");\n return value;\n}\n\nexport const DispatchContext = createContext(null);\nexport function useDispatch() {\n const dispatch = useContext(DispatchContext);\n if (!dispatch) throw new Error(\"No dispatch provided\");\n return dispatch;\n}\n\nexport const SelectionContext = createContext<SelectionState | null>(null);\nexport function useSelectedIds(): string[] {\n const value = useContext(SelectionContext);\n if (!value) throw new Error(\"Must provide selection context\");\n return value.ids;\n}\n\nexport function useIsSelected(): (index: number | null) => boolean {\n const value = useContext(SelectionContext);\n if (!value) throw new Error(\"Must provide selection context\");\n const s = useMemo(() => Selection.parse(value.data, []), [value.data]);\n return (i) => s.contains(i);\n}\n\nexport const EditingIdContext = createContext<string | null>(null);\nexport function useEditingId(): string | null {\n return useContext(EditingIdContext);\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 { 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 { useDrop } from \"react-dnd\";\nimport { useStaticContext } from \"../context\";\nimport { DragItem } from \"../types\";\nimport { computeDrop } from \"./compute-drop\";\nimport { DropResult } from \"./drop-hook\";\n\nexport function useOuterDrop() {\n const tree = useStaticContext();\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.api.visibleNodes[tree.api.visibleNodes.length - 1],\n nextNode: null,\n });\n if (cursor) tree.api.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.api.visibleNodes[tree.api.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 { 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 { useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport { FixedSizeList } from \"react-window\";\nimport {\n CursorLocationContext,\n CursorParentId,\n EditingIdContext,\n IsCursorOverFolder,\n SelectionContext,\n Static,\n} from \"./context\";\nimport { Cursor } from \"./dnd/compute-drop\";\nimport { initState, reducer } from \"./reducer\";\nimport { useSelectionKeys } from \"./selection/selection-hook\";\nimport { useTreeApi } from \"./tree-api-hook\";\nimport { StateContext, StaticContext, TreeProviderProps } from \"./types\";\n\nexport function TreeViewProvider<T>(props: TreeProviderProps<T>) {\n const [state, dispatch] = useReducer(reducer, initState());\n const list = useRef<FixedSizeList>();\n const api = useTreeApi<T>(state, dispatch, props, list.current);\n\n useImperativeHandle(props.imperativeHandle, () => api);\n useSelectionKeys(props.listEl, api);\n const staticValue = useMemo<StaticContext<T>>(\n () => ({ ...props, api, list }),\n [props, api, list]\n );\n\n /**\n * This context pattern is ridiculous, next time use redux.\n */\n return (\n // @ts-ignore\n <Static.Provider value={staticValue}>\n <EditingIdContext.Provider value={state.editingId}>\n <SelectionContext.Provider value={state.selection}>\n <CursorParentId.Provider value={getParentId(state.cursor)}>\n <IsCursorOverFolder.Provider value={isOverFolder(state)}>\n <CursorLocationContext.Provider value={state.cursor}>\n {props.children}\n </CursorLocationContext.Provider>\n </IsCursorOverFolder.Provider>\n </CursorParentId.Provider>\n </SelectionContext.Provider>\n </EditingIdContext.Provider>\n </Static.Provider>\n );\n}\n\nfunction getParentId(cursor: Cursor) {\n switch (cursor.type) {\n case \"highlight\":\n return cursor.id;\n default:\n return null;\n }\n}\n\nfunction isOverFolder(state: StateContext) {\n return state.cursor.type === \"highlight\";\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 { MutableRefObject, useEffect } from \"react\";\nimport { TreeApi } from \"../tree-api\";\n\nexport function useSelectionKeys<T>(\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 { Dispatch, useLayoutEffect, useMemo } from \"react\";\nimport { FixedSizeList } from \"react-window\";\nimport { Action, actions } from \"./reducer\";\nimport { TreeApi } from \"./tree-api\";\nimport { StateContext, TreeProviderProps } from \"./types\";\n\nexport function useTreeApi<T>(\n state: StateContext,\n dispatch: Dispatch<Action>,\n props: TreeProviderProps<T>,\n list: FixedSizeList | undefined\n) {\n /**\n * We only ever want one instance of the api object\n * It will get updated as the props change, but the\n * reference will not.\n */\n const api = useMemo(\n () => new TreeApi<T>(dispatch, state, props, list),\n // eslint-disable-next-line\n []\n );\n api.assign(dispatch, state, props, list);\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, props.root]);\n\n return api;\n}\n","import memoizeOne from \"memoize-one\";\nimport { Dispatch } 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 { Node, StateContext, TreeProviderProps, EditResult } from \"./types\";\nimport ReactDOM from \"react-dom\";\n\nexport class TreeApi<T = unknown> {\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: FixedSizeList | undefined\n ) {}\n\n assign(\n dispatch: Dispatch<Action>,\n state: StateContext,\n props: TreeProviderProps<T>,\n list: FixedSizeList | undefined\n ) {\n this.dispatch = dispatch;\n this.state = state;\n this.props = props;\n this.list = list;\n }\n\n getNode(id: string): Node<unknown> | 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.props.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.scrollToItem(index, \"start\");\n } else {\n this.openParents(id);\n ReactDOM.flushSync(() => {\n const index = this.idToIndex[id];\n if (index) {\n this.list?.scrollToItem(index, \"start\");\n }\n });\n }\n }\n\n open(id: string) {\n this.props.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);\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 React, { CSSProperties } from \"react\";\nimport { useCursorLocation, useStaticContext } from \"../context\";\n\nexport function DropCursor() {\n const treeView = useStaticContext();\n const cursor = useCursorLocation();\n if (!cursor || cursor.type !== \"line\") return null;\n const top = treeView.rowHeight * cursor.index;\n const left = treeView.indent * cursor.level;\n const style: CSSProperties = {\n position: \"absolute\",\n pointerEvents: \"none\",\n top: top - 2 + \"px\",\n left: treeView.indent + left + \"px\",\n right: treeView.indent + \"px\",\n };\n\n return <DefaultCursor style={style} />;\n}\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({ style }: { style: CSSProperties }) {\n return (\n <div style={{ ...placeholderStyle, ...style }}>\n <div style={{ ...circleStyle }}></div>\n <div style={{ ...lineStyle }}></div>\n </div>\n );\n}\n","import React, { CSSProperties, memo } from \"react\";\nimport { useDragLayer, XYCoord } from \"react-dnd\";\nimport { useStaticContext } from \"../context\";\nimport { DragItem } 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(props: {\n item: DragItem | null;\n}) {\n const tree = useStaticContext();\n if (!props.item) return null;\n const node = tree.api.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.api}\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 React, { useCallback, useMemo, useRef } from \"react\";\nimport {\n useCursorParentId,\n useEditingId,\n useIsCursorOverFolder,\n useIsSelected,\n useStaticContext,\n} from \"../context\";\nimport { useDragHook } from \"../dnd/drag-hook\";\nimport { useDropHook } from \"../dnd/drop-hook\";\n\ntype Props = {\n style: React.CSSProperties;\n index: number;\n};\n\nexport const Row = React.memo(function Row({ index, style }: Props) {\n const tree = useStaticContext();\n const selected = useIsSelected();\n const node = tree.api.visibleNodes[index];\n const next = tree.api.visibleNodes[index + 1] || null;\n const prev = tree.api.visibleNodes[index - 1] || null;\n const cursorParentId = useCursorParentId();\n const cursorOverFolder = useIsCursorOverFolder();\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 === useEditingId();\n const isSelected = selected(index);\n const nextSelected = next && selected(index + 1);\n const prevSelected = prev && selected(index - 1);\n const isHoveringOverChild = node.id === cursorParentId;\n const isOverFolder = node.id === cursorParentId && 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.api.select(node.rowIndex, e.metaKey, e.shiftKey);\n } else {\n tree.api.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.api.edit(node.id),\n submit: (name: string) => {\n name.trim() ? tree.api.submit(node.id, name) : tree.api.reset(node.id);\n },\n reset: () => tree.api.reset(node.id),\n };\n }, [tree, node]);\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.api}\n />\n );\n});\n","import { useEffect } from \"react\";\nimport { ConnectDragSource, useDrag } from \"react-dnd\";\nimport { getEmptyImage } from \"react-dnd-html5-backend\";\nimport { useIsSelected, useSelectedIds, useStaticContext } 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 = useStaticContext();\n const isSelected = useIsSelected();\n const ids = useSelectedIds();\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: isSelected(node.rowIndex) ? ids : [node.id],\n }),\n collect: (m) => ({\n isDragging: m.isDragging(),\n }),\n end: (item, monitor) => {\n tree.api.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 { useStaticContext } 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 = useStaticContext();\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.api.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.api.showCursor(cursor);\n } else {\n tree.api.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":"index.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/context.tsx","packages/react-arborist/src/selection/selection.ts","packages/react-arborist/src/selection/range.ts","packages/react-arborist/src/data/enrich-tree.ts","packages/react-arborist/src/dnd/outer-drop-hook.ts","packages/react-arborist/src/dnd/compute-drop.ts","packages/react-arborist/src/utils.ts","packages/react-arborist/src/provider.tsx","packages/react-arborist/src/reducer.ts","packages/react-arborist/src/selection/selection-hook.ts","packages/react-arborist/src/tree-api-hook.ts","packages/react-arborist/src/tree-api.ts","packages/react-arborist/src/data/flatten-tree.ts","packages/react-arborist/src/components/drop-cursor.tsx","packages/react-arborist/src/components/preview.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 { NodeRenderer, NodeState, NodeHandlers } from \"./types\";\n\nexport { Tree, TreeApi, NodeRenderer, NodeState, NodeHandlers };\n","import {\n forwardRef,\n MouseEventHandler,\n ReactElement,\n useMemo,\n useRef,\n} from \"react\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { FixedSizeList } from \"react-window\";\nimport { useStaticContext } from \"../context\";\nimport { enrichTree } from \"../data/enrich-tree\";\nimport { useOuterDrop } from \"../dnd/outer-drop-hook\";\nimport { TreeViewProvider } from \"../provider\";\nimport { TreeApi } from \"../tree-api\";\nimport { IdObj, Node, TreeProps } from \"../types\";\nimport { noop } from \"../utils\";\nimport { DropCursor } from \"./drop-cursor\";\nimport { Preview } from \"./preview\";\nimport { Row } from \"./row\";\n\nconst OuterElement = forwardRef(function Outer(\n props: React.HTMLProps<HTMLDivElement>,\n ref\n) {\n const { children, ...rest } = props;\n const tree = useStaticContext();\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.api.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\nfunction List(props: { className?: string }) {\n const tree = useStaticContext();\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.api.visibleNodes.length}\n height={tree.height}\n width={tree.width}\n itemSize={tree.rowHeight}\n itemKey={(index) => tree.api.visibleNodes[index]?.id || index}\n outerElementType={OuterElement}\n // @ts-ignore\n ref={tree.list}\n >\n {Row}\n </FixedSizeList>\n </div>\n );\n}\n\nfunction OuterDrop(props: { children: ReactElement }) {\n useOuterDrop();\n return props.children;\n}\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\n imperativeHandle={ref}\n root={root}\n listEl={useRef<HTMLDivElement | null>(null)}\n renderer={props.children}\n width={props.width === undefined ? 300 : props.width}\n height={props.height === undefined ? 500 : props.height}\n indent={props.indent === undefined ? 24 : props.indent}\n rowHeight={props.rowHeight === undefined ? 24 : props.rowHeight}\n onMove={props.onMove || noop}\n onToggle={props.onToggle || noop}\n onEdit={props.onEdit || noop}\n onClick={props.onClick}\n onContextMenu={props.onContextMenu}\n >\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 { createContext, useContext, useMemo } from \"react\";\nimport { Cursor } from \"./dnd/compute-drop\";\nimport { Selection } from \"./selection/selection\";\nimport { IdObj, SelectionState, StaticContext } from \"./types\";\n\nexport const CursorParentId = createContext<string | null>(null);\nexport function useCursorParentId() {\n return useContext(CursorParentId);\n}\n\nexport const IsCursorOverFolder = createContext<boolean>(false);\nexport function useIsCursorOverFolder() {\n return useContext(IsCursorOverFolder);\n}\n\nexport const CursorLocationContext = createContext<Cursor | null>(null);\nexport function useCursorLocation() {\n return useContext(CursorLocationContext);\n}\n\nexport const Static = createContext<StaticContext<IdObj> | null>(null);\nexport function useStaticContext() {\n const value = useContext(Static);\n if (!value) throw new Error(\"Context must be in a provider\");\n return value;\n}\n\nexport const DispatchContext = createContext(null);\nexport function useDispatch() {\n const dispatch = useContext(DispatchContext);\n if (!dispatch) throw new Error(\"No dispatch provided\");\n return dispatch;\n}\n\nexport const SelectionContext = createContext<SelectionState | null>(null);\nexport function useSelectedIds(): string[] {\n const value = useContext(SelectionContext);\n if (!value) throw new Error(\"Must provide selection context\");\n return value.ids;\n}\n\nexport function useIsSelected(): (index: number | null) => boolean {\n const value = useContext(SelectionContext);\n if (!value) throw new Error(\"Must provide selection context\");\n const s = useMemo(() => Selection.parse(value.data, []), [value.data]);\n return (i) => s.contains(i);\n}\n\nexport const EditingIdContext = createContext<string | null>(null);\nexport function useEditingId(): string | null {\n return useContext(EditingIdContext);\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 { 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 { useDrop } from \"react-dnd\";\nimport { useStaticContext } from \"../context\";\nimport { DragItem } from \"../types\";\nimport { computeDrop } from \"./compute-drop\";\nimport { DropResult } from \"./drop-hook\";\n\nexport function useOuterDrop() {\n const tree = useStaticContext();\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.api.visibleNodes[tree.api.visibleNodes.length - 1],\n nextNode: null,\n });\n if (cursor) tree.api.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.api.visibleNodes[tree.api.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 { 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 { useImperativeHandle, useMemo, useReducer, useRef } from \"react\";\nimport { FixedSizeList } from \"react-window\";\nimport {\n CursorLocationContext,\n CursorParentId,\n EditingIdContext,\n IsCursorOverFolder,\n SelectionContext,\n Static,\n} from \"./context\";\nimport { Cursor } from \"./dnd/compute-drop\";\nimport { initState, reducer } from \"./reducer\";\nimport { useSelectionKeys } from \"./selection/selection-hook\";\nimport { useTreeApi } from \"./tree-api-hook\";\nimport { StateContext, StaticContext, TreeProviderProps } from \"./types\";\n\nexport function TreeViewProvider<T>(props: TreeProviderProps<T>) {\n const [state, dispatch] = useReducer(reducer, initState());\n const list = useRef<FixedSizeList>();\n const api = useTreeApi<T>(state, dispatch, props, list.current);\n\n useImperativeHandle(props.imperativeHandle, () => api);\n useSelectionKeys(props.listEl, api);\n const staticValue = useMemo<StaticContext<T>>(\n () => ({ ...props, api, list }),\n [props, api, list]\n );\n\n /**\n * This context pattern is ridiculous, next time use redux.\n */\n return (\n // @ts-ignore\n <Static.Provider value={staticValue}>\n <EditingIdContext.Provider value={state.editingId}>\n <SelectionContext.Provider value={state.selection}>\n <CursorParentId.Provider value={getParentId(state.cursor)}>\n <IsCursorOverFolder.Provider value={isOverFolder(state)}>\n <CursorLocationContext.Provider value={state.cursor}>\n {props.children}\n </CursorLocationContext.Provider>\n </IsCursorOverFolder.Provider>\n </CursorParentId.Provider>\n </SelectionContext.Provider>\n </EditingIdContext.Provider>\n </Static.Provider>\n );\n}\n\nfunction getParentId(cursor: Cursor) {\n switch (cursor.type) {\n case \"highlight\":\n return cursor.id;\n default:\n return null;\n }\n}\n\nfunction isOverFolder(state: StateContext) {\n return state.cursor.type === \"highlight\";\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 { MutableRefObject, useEffect } from \"react\";\nimport { TreeApi } from \"../tree-api\";\n\nexport function useSelectionKeys<T>(\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 { Dispatch, useLayoutEffect, useMemo } from \"react\";\nimport { FixedSizeList } from \"react-window\";\nimport { Action, actions } from \"./reducer\";\nimport { TreeApi } from \"./tree-api\";\nimport { StateContext, TreeProviderProps } from \"./types\";\n\nexport function useTreeApi<T>(\n state: StateContext,\n dispatch: Dispatch<Action>,\n props: TreeProviderProps<T>,\n list: FixedSizeList | undefined\n) {\n /**\n * We only ever want one instance of the api object\n * It will get updated as the props change, but the\n * reference will not.\n */\n const api = useMemo(\n () => new TreeApi<T>(dispatch, state, props, list),\n // eslint-disable-next-line\n []\n );\n api.assign(dispatch, state, props, list);\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, props.root]);\n\n return api;\n}\n","import memoizeOne from \"memoize-one\";\nimport { Dispatch } 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 { Node, StateContext, TreeProviderProps, EditResult } from \"./types\";\nimport ReactDOM from \"react-dom\";\n\nexport class TreeApi<T = unknown> {\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: FixedSizeList | undefined\n ) {}\n\n assign(\n dispatch: Dispatch<Action>,\n state: StateContext,\n props: TreeProviderProps<T>,\n list: FixedSizeList | undefined\n ) {\n this.dispatch = dispatch;\n this.state = state;\n this.props = props;\n this.list = list;\n }\n\n getNode(id: string): Node<unknown> | 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.props.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.scrollToItem(index);\n } else {\n this.openParents(id);\n ReactDOM.flushSync(() => {\n const index = this.idToIndex[id];\n if (index) {\n this.list?.scrollToItem(index);\n }\n });\n }\n }\n\n open(id: string) {\n this.props.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);\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 React, { CSSProperties } from \"react\";\nimport { useCursorLocation, useStaticContext } from \"../context\";\n\nexport function DropCursor() {\n const treeView = useStaticContext();\n const cursor = useCursorLocation();\n if (!cursor || cursor.type !== \"line\") return null;\n const top = treeView.rowHeight * cursor.index;\n const left = treeView.indent * cursor.level;\n const style: CSSProperties = {\n position: \"absolute\",\n pointerEvents: \"none\",\n top: top - 2 + \"px\",\n left: treeView.indent + left + \"px\",\n right: treeView.indent + \"px\",\n };\n\n return <DefaultCursor style={style} />;\n}\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({ style }: { style: CSSProperties }) {\n return (\n <div style={{ ...placeholderStyle, ...style }}>\n <div style={{ ...circleStyle }}></div>\n <div style={{ ...lineStyle }}></div>\n </div>\n );\n}\n","import React, { CSSProperties, memo } from \"react\";\nimport { useDragLayer, XYCoord } from \"react-dnd\";\nimport { useStaticContext } from \"../context\";\nimport { DragItem } 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(props: {\n item: DragItem | null;\n}) {\n const tree = useStaticContext();\n if (!props.item) return null;\n const node = tree.api.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.api}\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 React, { useCallback, useMemo, useRef } from \"react\";\nimport {\n useCursorParentId,\n useEditingId,\n useIsCursorOverFolder,\n useIsSelected,\n useStaticContext,\n} from \"../context\";\nimport { useDragHook } from \"../dnd/drag-hook\";\nimport { useDropHook } from \"../dnd/drop-hook\";\n\ntype Props = {\n style: React.CSSProperties;\n index: number;\n};\n\nexport const Row = React.memo(function Row({ index, style }: Props) {\n const tree = useStaticContext();\n const selected = useIsSelected();\n const node = tree.api.visibleNodes[index];\n const next = tree.api.visibleNodes[index + 1] || null;\n const prev = tree.api.visibleNodes[index - 1] || null;\n const cursorParentId = useCursorParentId();\n const cursorOverFolder = useIsCursorOverFolder();\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 === useEditingId();\n const isSelected = selected(index);\n const nextSelected = next && selected(index + 1);\n const prevSelected = prev && selected(index - 1);\n const isHoveringOverChild = node.id === cursorParentId;\n const isOverFolder = node.id === cursorParentId && 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.api.select(node.rowIndex, e.metaKey, e.shiftKey);\n } else {\n tree.api.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.api.edit(node.id),\n submit: (name: string) => {\n name.trim() ? tree.api.submit(node.id, name) : tree.api.reset(node.id);\n },\n reset: () => tree.api.reset(node.id),\n };\n }, [tree, node]);\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.api}\n />\n );\n});\n","import { useEffect } from \"react\";\nimport { ConnectDragSource, useDrag } from \"react-dnd\";\nimport { getEmptyImage } from \"react-dnd-html5-backend\";\nimport { useIsSelected, useSelectedIds, useStaticContext } 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 = useStaticContext();\n const isSelected = useIsSelected();\n const ids = useSelectedIds();\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: isSelected(node.rowIndex) ? ids : [node.id],\n }),\n collect: (m) => ({\n isDragging: m.isDragging(),\n }),\n end: (item, monitor) => {\n tree.api.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 { useStaticContext } 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 = useStaticContext();\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.api.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.api.showCursor(cursor);\n } else {\n tree.api.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":"index.js.map"}
|
package/dist/module.js
CHANGED
|
@@ -754,12 +754,12 @@ class $40fcfa3e17312481$export$e2da3477247342d1 {
|
|
|
754
754
|
scrollToId(id) {
|
|
755
755
|
if (!this.list) return;
|
|
756
756
|
const index1 = this.idToIndex[id];
|
|
757
|
-
if (index1) this.list.scrollToItem(index1
|
|
757
|
+
if (index1) this.list.scrollToItem(index1);
|
|
758
758
|
else {
|
|
759
759
|
this.openParents(id);
|
|
760
760
|
$g00cZ$reactdom.flushSync(()=>{
|
|
761
761
|
const index = this.idToIndex[id];
|
|
762
|
-
if (index) this.list?.scrollToItem(index
|
|
762
|
+
if (index) this.list?.scrollToItem(index);
|
|
763
763
|
});
|
|
764
764
|
}
|
|
765
765
|
}
|
|
@@ -1274,8 +1274,8 @@ const $2c0a5a237609003e$export$b59bdbef9ce70de2 = /*#__PURE__*/ $g00cZ$react.mem
|
|
|
1274
1274
|
const $2ba43033bb8eb39d$var$OuterElement = /*#__PURE__*/ $g00cZ$forwardRef(function Outer(props, ref) {
|
|
1275
1275
|
const { children: children , ...rest } = props;
|
|
1276
1276
|
const tree = $3273af3fe11a7001$export$ea6c3ae2bd3a5510();
|
|
1277
|
-
return(
|
|
1278
|
-
|
|
1277
|
+
return(/*#__PURE__*/ $g00cZ$jsxs("div", {
|
|
1278
|
+
// @ts-ignore
|
|
1279
1279
|
ref: ref,
|
|
1280
1280
|
...rest,
|
|
1281
1281
|
onClick: tree.onClick,
|
|
@@ -1352,6 +1352,9 @@ const $2ba43033bb8eb39d$export$7fbedc92909ed28e = /*#__PURE__*/ $g00cZ$forwardRe
|
|
|
1352
1352
|
onContextMenu: props.onContextMenu,
|
|
1353
1353
|
children: /*#__PURE__*/ $g00cZ$jsxs($g00cZ$DndProvider, {
|
|
1354
1354
|
backend: $g00cZ$HTML5Backend,
|
|
1355
|
+
options: {
|
|
1356
|
+
rootElement: props.dndRootElement || undefined
|
|
1357
|
+
},
|
|
1355
1358
|
children: [
|
|
1356
1359
|
/*#__PURE__*/ $g00cZ$jsx($2ba43033bb8eb39d$var$OuterDrop, {
|
|
1357
1360
|
children: /*#__PURE__*/ $g00cZ$jsx($2ba43033bb8eb39d$var$List, {
|