@itwin/presentation-hierarchies-react 2.0.0-alpha.59 → 2.0.0-alpha.60

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 (32) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +30 -6
  3. package/lib/presentation-hierarchies-react/FlatTreeNode.d.ts.map +1 -1
  4. package/lib/presentation-hierarchies-react/FlatTreeNode.js.map +1 -1
  5. package/lib/presentation-hierarchies-react/LocalizationContext.d.ts.map +1 -1
  6. package/lib/presentation-hierarchies-react/LocalizationContext.js.map +1 -1
  7. package/lib/presentation-hierarchies-react/TreeNode.d.ts.map +1 -1
  8. package/lib/presentation-hierarchies-react/UseIModelTree.js.map +1 -1
  9. package/lib/presentation-hierarchies-react/UseNodeHighlighting.js.map +1 -1
  10. package/lib/presentation-hierarchies-react/UseSelectionHandler.js.map +1 -1
  11. package/lib/presentation-hierarchies-react/UseTree.d.ts.map +1 -1
  12. package/lib/presentation-hierarchies-react/UseTree.js.map +1 -1
  13. package/lib/presentation-hierarchies-react/internal/LocalizedStrings.d.ts.map +1 -1
  14. package/lib/presentation-hierarchies-react/internal/LocalizedStrings.js.map +1 -1
  15. package/lib/presentation-hierarchies-react/internal/TreeActions.js.map +1 -1
  16. package/lib/presentation-hierarchies-react/internal/TreeLoader.js.map +1 -1
  17. package/lib/presentation-hierarchies-react/internal/TreeModel.js.map +1 -1
  18. package/lib/presentation-hierarchies-react/internal/UseUnifiedSelection.d.ts.map +1 -1
  19. package/lib/presentation-hierarchies-react/internal/UseUnifiedSelection.js.map +1 -1
  20. package/lib/presentation-hierarchies-react/stratakit/ErrorItemRenderer.js.map +1 -1
  21. package/lib/presentation-hierarchies-react/stratakit/RootErrorRenderer.d.ts.map +1 -1
  22. package/lib/presentation-hierarchies-react/stratakit/RootErrorRenderer.js.map +1 -1
  23. package/lib/presentation-hierarchies-react/stratakit/TreeErrorRenderer.d.ts.map +1 -1
  24. package/lib/presentation-hierarchies-react/stratakit/TreeErrorRenderer.js.map +1 -1
  25. package/lib/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.js.map +1 -1
  26. package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.d.ts.map +1 -1
  27. package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.js.map +1 -1
  28. package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenderer.d.ts.map +1 -1
  29. package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenderer.js.map +1 -1
  30. package/lib/presentation-hierarchies-react/stratakit/TreeRenderer.d.ts.map +1 -1
  31. package/lib/presentation-hierarchies-react/stratakit/TreeRenderer.js.map +1 -1
  32. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"TreeRenderer.js","names":["forwardRef","memo","useCallback","useEffect","useImperativeHandle","useMemo","useRef","Tree","useVirtualizer","isPlaceholderItem","useErrorNodes","useFlatTreeItems","useSelectionHandler","useEvent","useMergedRefs","TreeErrorRenderer","TreeNodeRenameContextProvider","useTreeNodeRenameContextValue","PlaceholderNode","StrataKitTreeNodeRenderer","ComponentProps","CSSProperties","FC","PropsWithoutRef","ReactElement","ReactNode","RefAttributes","FlatTreeItem","FlatTreeNodeItem","TreeRendererProps","TreeNode","SelectionMode","TreeErrorRendererProps","TreeNodeEditingProps","StrataKitTreeItemProps","TreeNodeRendererProps","TreeRendererOwnProps","id","treeLabel","selectionMode","errorRenderer","props","getEditingProps","node","treeRootProps","Partial","Omit","Root","getTreeItemProps","getMenuActions","targetNode","selectedNodes","getInlineActions","getContextMenuActions","StrataKitTreeRendererAttributes","renameNode","nodePredicate","StrataKitTreeRendererProps","Pick","StrataKitTreeRenderer","forwardedRef","rootNodes","selectNodes","expandNode","getHierarchyLevelDetails","filterHierarchyLevel","reloadTree","isNodeSelected","handleNodeSelect","flatItems","errorNodes","parentRef","HTMLDivElement","virtualizer","count","length","getScrollElement","current","getItemKey","index","estimateSize","overscan","items","getVirtualItems","expandAndScrollToNode","useExpandAndScrollToNode","renameContext","onComplete","requestAnimationFrame","startRename","cancelRename","isScrolling","errorRendererProps","scrollToNode","n","parentNodeId","state","getSelectedNodes","calculatedSelectedNodes","undefined","filter","item","map","height","width","overflowY","getTotalSize","minHeight","position","overflow","virtualizedItem","selected","measureElement","key","start","t0","$","_c","t1","pathToNode","findPathToNode","pop","collapsedNodes","_temp","forEach","didExpand","expandToNode","t2","t3","targetNodeId","findIndex","flatItem","scrollToIndex","align","onScrollComplete","t4","t5","nodePredicate_0","expandResult","targetNode_0","index_0","flatItem_0","pathNode","isExpanded","parent","children","childPath","VirtualTreeItemProps","HierarchyNodeItemProps","VirtualTreeItem","HTMLElement","top","left","transform","willChange","style","level","ReturnType","HierarchyNodeItem","rest","nodeRef","treeItemProps","isDisabled","menuActions","inlineActions","contextMenuActions","nodeActions","t6","e","onClick","detail","nodeId","isSelected","shiftDown","shiftKey","ctrlDown","ctrlKey","t7","e_0","onMouseDown","preventDefault","ref","t8","levelSize","posInLevel"],"sources":["../../../src/presentation-hierarchies-react/stratakit/TreeRenderer.tsx"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from \"react\";\nimport { Tree } from \"@stratakit/structures\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { isPlaceholderItem, useErrorNodes, useFlatTreeItems } from \"../FlatTreeNode.js\";\nimport { useSelectionHandler } from \"../UseSelectionHandler.js\";\nimport { useEvent, useMergedRefs } from \"../Utils.js\";\nimport { TreeErrorRenderer } from \"./TreeErrorRenderer.js\";\nimport { TreeNodeRenameContextProvider, useTreeNodeRenameContextValue } from \"./TreeNodeRenameAction.js\";\nimport { PlaceholderNode, StrataKitTreeNodeRenderer } from \"./TreeNodeRenderer.js\";\n\nimport type { ComponentProps, CSSProperties, FC, PropsWithoutRef, ReactElement, ReactNode, RefAttributes } from \"react\";\nimport type { FlatTreeItem, FlatTreeNodeItem } from \"../FlatTreeNode.js\";\nimport type { TreeRendererProps } from \"../Renderers.js\";\nimport type { TreeNode } from \"../TreeNode.js\";\nimport type { SelectionMode } from \"../UseSelectionHandler.js\";\nimport type { TreeErrorRendererProps } from \"./TreeErrorRenderer.js\";\nimport type { TreeNodeEditingProps } from \"./TreeNodeRenameAction.js\";\nimport type { StrataKitTreeItemProps, TreeNodeRendererProps } from \"./TreeNodeRenderer.js\";\n\n/** @alpha */\ninterface TreeRendererOwnProps {\n id?: string;\n /**\n * A user friendly display label of the tree. Should be unique within the consuming application,\n * as it's used for accessibility purposes.\n */\n treeLabel: string;\n /** Active selection mode used by the tree. Defaults to `\"single\"`. */\n selectionMode?: SelectionMode;\n /** A render function for errors' display component. Defaults to `<TreeErrorRenderer />`. */\n errorRenderer?: (props: TreeErrorRendererProps) => ReactElement;\n /** Props that defines if current node supports editing. */\n getEditingProps?: (node: TreeNode) => TreeNodeEditingProps | undefined;\n\n /** Custom props for the root Tree component. */\n treeRootProps?: Partial<Omit<ComponentProps<typeof Tree.Root>, \"style\">>;\n\n /** A callback that returns tree item props for specific node. */\n getTreeItemProps?: (node: TreeNode) => Partial<Omit<StrataKitTreeItemProps, \"selected\" | \"aria-level\" | \"aria-posinset\" | \"aria-setsize\">>;\n\n /**\n * Callback that returns menu actions for tree item.\n * Must return an array of `<TreeActionBase />` or `<Divider />` elements.\n */\n getMenuActions?: (props: { targetNode: TreeNode; selectedNodes: TreeNode[] }) => ReactNode[];\n /**\n * Callback that returns inline actions for tree item.\n * Must return an array of `<TreeActionBase />` elements.\n * Max 2 items.\n */\n getInlineActions?: (props: { targetNode: TreeNode; selectedNodes: TreeNode[] }) => ReactNode[];\n /**\n * Callback that returns actions for tree item context menu.\n * Must return an array of `<TreeActionBase />` or `<Divider />` elements.\n */\n getContextMenuActions?: (props: { targetNode: TreeNode; selectedNodes: TreeNode[] }) => ReactNode[];\n}\n\n/** @alpha */\nexport interface StrataKitTreeRendererAttributes {\n /**\n * Opens rename mode for the first node that matches the given predicate. Node must be already loaded in the tree.\n * If the node is not visible (because its parent is collapsed), all parents will be expanded to make it visible and node will be scrolled into view.\n *\n * Returns \"node-not-found\" if no node matches the predicate, \"success\" if rename was initiated.\n */\n renameNode: (nodePredicate: (node: TreeNode) => boolean) => \"node-not-found\" | \"success\";\n}\n\n/** @alpha */\ntype StrataKitTreeRendererProps = TreeRendererProps & Pick<TreeErrorRendererProps, \"filterHierarchyLevel\"> & TreeRendererOwnProps;\n\n/**\n * A component that renders a tree using the `Tree` component from `@stratakit/structures`.\n *\n * @alpha\n */\nexport const StrataKitTreeRenderer: FC<PropsWithoutRef<StrataKitTreeRendererProps> & RefAttributes<StrataKitTreeRendererAttributes>> = forwardRef<\n StrataKitTreeRendererAttributes,\n StrataKitTreeRendererProps\n>(function StrataKitTreeRenderer(props, forwardedRef) {\n const {\n id,\n rootNodes,\n selectNodes,\n selectionMode,\n expandNode,\n treeLabel,\n getHierarchyLevelDetails,\n filterHierarchyLevel,\n reloadTree,\n isNodeSelected,\n errorRenderer,\n treeRootProps,\n getContextMenuActions,\n getEditingProps,\n getInlineActions,\n getMenuActions,\n getTreeItemProps,\n } = props;\n const { handleNodeSelect } = useSelectionHandler({\n rootNodes,\n selectNodes,\n selectionMode: selectionMode ?? \"single\",\n });\n const flatItems = useFlatTreeItems(rootNodes);\n const errorNodes = useErrorNodes(rootNodes);\n\n const parentRef = useRef<HTMLDivElement>(null);\n\n // eslint-disable-next-line react-hooks/incompatible-library\n const virtualizer = useVirtualizer({\n count: flatItems.length,\n getScrollElement: () => parentRef.current,\n getItemKey: useCallback((index: number) => flatItems[index].id, [flatItems]),\n estimateSize: () => 28,\n overscan: 10,\n });\n const items = virtualizer.getVirtualItems();\n const expandAndScrollToNode = useExpandAndScrollToNode({ rootNodes, flatItems, expandNode, virtualizer });\n\n const renameContext = useTreeNodeRenameContextValue({\n getEditingProps,\n });\n useImperativeHandle(forwardedRef, () => ({\n renameNode: (nodePredicate) =>\n expandAndScrollToNode({\n nodePredicate,\n onComplete: (targetNode) => {\n // give time to scroll node into view before starting rename\n requestAnimationFrame(() => renameContext.startRename(targetNode));\n },\n }),\n }));\n\n const cancelRename = renameContext.cancelRename;\n const isScrolling = virtualizer.isScrolling;\n useEffect(() => {\n if (isScrolling) {\n // cancel rename when scroll is initiated\n cancelRename();\n }\n }, [isScrolling, cancelRename]);\n\n const errorRendererProps: TreeErrorRendererProps = {\n treeLabel,\n errorNodes,\n scrollToNode: (node) => expandAndScrollToNode({ nodePredicate: (n) => n.id === node.id }),\n getHierarchyLevelDetails,\n filterHierarchyLevel,\n reloadTree: useCallback<TreeErrorRendererProps[\"reloadTree\"]>(({ parentNodeId }) => reloadTree({ parentNodeId, state: \"reset\" }), [reloadTree]),\n };\n\n const getSelectedNodes = useMemo(() => {\n let calculatedSelectedNodes: TreeNode[] | undefined;\n return () => {\n if (calculatedSelectedNodes === undefined) {\n calculatedSelectedNodes = flatItems\n .filter((item): item is FlatTreeNodeItem => !isPlaceholderItem(item) && isNodeSelected(item.id))\n .map((item) => item.node);\n }\n return calculatedSelectedNodes;\n };\n }, [flatItems, isNodeSelected]);\n\n return (\n <>\n {errorRenderer ? errorRenderer(errorRendererProps) : <TreeErrorRenderer {...errorRendererProps} />}\n <div id={id} style={{ height: \"100%\", width: \"100%\", overflowY: \"auto\" }} ref={parentRef}>\n <Tree.Root\n {...treeRootProps}\n style={{ height: virtualizer.getTotalSize(), minHeight: \"100%\", width: \"100%\", position: \"relative\", overflow: \"hidden\" }}\n >\n <TreeNodeRenameContextProvider value={renameContext}>\n {items.map((virtualizedItem) => {\n const item = flatItems[virtualizedItem.index];\n const selected = isNodeSelected(item.id);\n return (\n <VirtualTreeItem\n ref={virtualizer.measureElement}\n key={virtualizedItem.key}\n data-index={virtualizedItem.index}\n start={virtualizedItem.start}\n item={item}\n selected={selected}\n expandNode={expandNode}\n reloadTree={reloadTree}\n handleNodeSelect={handleNodeSelect}\n getSelectedNodes={getSelectedNodes}\n getContextMenuActions={getContextMenuActions}\n getInlineActions={getInlineActions}\n getMenuActions={getMenuActions}\n getTreeItemProps={getTreeItemProps}\n />\n );\n })}\n </TreeNodeRenameContextProvider>\n </Tree.Root>\n </div>\n </>\n );\n});\n\nfunction useExpandAndScrollToNode({\n rootNodes,\n flatItems,\n expandNode,\n virtualizer,\n}: Pick<StrataKitTreeRendererProps, \"rootNodes\" | \"expandNode\"> & {\n flatItems: ReturnType<typeof useFlatTreeItems>;\n virtualizer: Pick<ReturnType<typeof useVirtualizer>, \"scrollToIndex\">;\n}) {\n const expandToNode = (nodePredicate: (node: TreeNode) => boolean) => {\n const pathToNode = findPathToNode(rootNodes, nodePredicate);\n if (!pathToNode) {\n return undefined;\n }\n const targetNode = pathToNode.pop()!;\n const collapsedNodes = pathToNode.filter((pathNode) => !pathNode.isExpanded);\n collapsedNodes.forEach((node) => expandNode(node.id, true));\n return { targetNode, didExpand: collapsedNodes.length > 0 };\n };\n\n const scrollToNode = useRef<{ id: string; onScrollComplete?: () => void } | undefined>(undefined);\n useEffect(() => {\n if (scrollToNode.current === undefined) {\n return;\n }\n const targetNodeId = scrollToNode.current.id;\n const index = flatItems.findIndex((flatItem) => flatItem.id === targetNodeId);\n if (index === -1) {\n return;\n }\n virtualizer.scrollToIndex(index, { align: \"auto\" });\n scrollToNode.current.onScrollComplete?.();\n scrollToNode.current = undefined;\n }, [flatItems, virtualizer]);\n\n return ({ nodePredicate, onComplete }: { nodePredicate: (node: TreeNode) => boolean; onComplete?: (targetNode: TreeNode) => void }) => {\n const expandResult = expandToNode(nodePredicate);\n if (!expandResult) {\n return \"node-not-found\";\n }\n\n const { targetNode, didExpand } = expandResult;\n if (didExpand) {\n scrollToNode.current = {\n id: targetNode.id,\n onScrollComplete: onComplete ? () => onComplete(targetNode) : undefined,\n };\n } else {\n const index = flatItems.findIndex((flatItem) => flatItem.id === targetNode.id);\n virtualizer.scrollToIndex(index, { align: \"auto\" });\n onComplete?.(targetNode);\n }\n return \"success\";\n };\n}\n\nfunction findPathToNode(rootNodes: TreeNode[], nodePredicate: (node: TreeNode) => boolean): TreeNode[] | undefined {\n for (const parent of rootNodes) {\n if (nodePredicate(parent)) {\n return [parent];\n }\n if (parent.children !== true) {\n const childPath = findPathToNode(parent.children, nodePredicate);\n if (childPath) {\n return [parent, ...childPath];\n }\n }\n }\n return undefined;\n}\n\ntype VirtualTreeItemProps = Omit<HierarchyNodeItemProps, \"item\"> & {\n start: number;\n \"data-index\": number;\n item: FlatTreeItem;\n};\n\nconst VirtualTreeItem = memo(\n forwardRef<HTMLElement, VirtualTreeItemProps>(function VirtualTreeItem({ start, item, ...props }, forwardedRef) {\n const style: CSSProperties = useMemo(\n () => ({\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n transform: `translateY(${start}px)`,\n willChange: \"transform\",\n }),\n [start],\n );\n\n if (isPlaceholderItem(item)) {\n return <PlaceholderNode ref={forwardedRef} data-index={props[\"data-index\"]} style={style} aria-level={item.level} aria-posinset={1} aria-setsize={1} />;\n }\n\n return <HierarchyNodeItem {...props} ref={forwardedRef} style={style} item={item} />;\n }),\n);\n\ntype HierarchyNodeItemProps = {\n item: FlatTreeNodeItem;\n style?: CSSProperties;\n getSelectedNodes: () => TreeNode[];\n} & Pick<TreeNodeRendererProps, \"expandNode\" | \"reloadTree\" | \"selected\"> &\n Pick<TreeRendererOwnProps, \"getContextMenuActions\" | \"getInlineActions\" | \"getMenuActions\" | \"getTreeItemProps\"> &\n Pick<ReturnType<typeof useSelectionHandler>, \"handleNodeSelect\">;\n\nconst HierarchyNodeItem = memo(\n forwardRef<HTMLElement, HierarchyNodeItemProps>(function HierarchyNodeItem(\n { item, selected, getTreeItemProps, handleNodeSelect, getSelectedNodes, getMenuActions, getInlineActions, getContextMenuActions, ...rest },\n forwardedRef,\n ) {\n const nodeRef = useRef<HTMLElement>(null);\n const node = item.node;\n const treeItemProps = getTreeItemProps?.(node);\n\n const isDisabled = treeItemProps?.[\"aria-disabled\"] === true;\n const nodeActions = useMemo(\n () => ({\n menuActions: getMenuActions ? getMenuActions({ targetNode: node, selectedNodes: getSelectedNodes() }) : undefined,\n inlineActions: getInlineActions ? getInlineActions({ targetNode: node, selectedNodes: getSelectedNodes() }) : undefined,\n contextMenuActions: getContextMenuActions ? getContextMenuActions({ targetNode: node, selectedNodes: getSelectedNodes() }) : undefined,\n }),\n [node, getMenuActions, getInlineActions, getContextMenuActions, getSelectedNodes],\n );\n\n const onClick = useEvent<Required<TreeNodeRendererProps>[\"onClick\"]>((e) => {\n if (treeItemProps?.onClick) {\n treeItemProps.onClick(e);\n }\n // ignore if this is double click\n if (isDisabled || e.detail > 1) {\n return;\n }\n handleNodeSelect({ nodeId: node.id, isSelected: selected ?? false, shiftDown: e.shiftKey, ctrlDown: e.ctrlKey });\n });\n\n const onMouseDown = useEvent<Required<TreeNodeRendererProps>[\"onMouseDown\"]>((e) => {\n if (treeItemProps?.onMouseDown) {\n treeItemProps.onMouseDown(e);\n }\n // prevent text selection on shift+click\n if (e.shiftKey) {\n e.preventDefault();\n }\n });\n\n const ref = useMergedRefs(forwardedRef, nodeRef);\n return (\n <StrataKitTreeNodeRenderer\n {...treeItemProps}\n {...rest}\n {...nodeActions}\n ref={ref}\n aria-level={item.level}\n aria-posinset={item.posInLevel}\n aria-setsize={item.levelSize}\n node={item.node}\n selected={selected}\n onClick={onClick}\n onMouseDown={onMouseDown}\n />\n );\n }),\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"TreeRenderer.js","names":["forwardRef","memo","useCallback","useEffect","useImperativeHandle","useMemo","useRef","Tree","useVirtualizer","isPlaceholderItem","useErrorNodes","useFlatTreeItems","useSelectionHandler","useEvent","useMergedRefs","TreeErrorRenderer","TreeNodeRenameContextProvider","useTreeNodeRenameContextValue","PlaceholderNode","StrataKitTreeNodeRenderer","ComponentProps","CSSProperties","FC","PropsWithoutRef","ReactElement","ReactNode","RefAttributes","FlatTreeItem","FlatTreeNodeItem","TreeRendererProps","TreeNode","SelectionMode","TreeErrorRendererProps","TreeNodeEditingProps","StrataKitTreeItemProps","TreeNodeRendererProps","TreeRendererOwnProps","id","treeLabel","selectionMode","errorRenderer","props","getEditingProps","node","treeRootProps","Partial","Omit","Root","getTreeItemProps","getMenuActions","targetNode","selectedNodes","getInlineActions","getContextMenuActions","StrataKitTreeRendererAttributes","renameNode","nodePredicate","StrataKitTreeRendererProps","Pick","StrataKitTreeRenderer","forwardedRef","rootNodes","selectNodes","expandNode","getHierarchyLevelDetails","filterHierarchyLevel","reloadTree","isNodeSelected","handleNodeSelect","flatItems","errorNodes","parentRef","HTMLDivElement","virtualizer","count","length","getScrollElement","current","getItemKey","index","estimateSize","overscan","items","getVirtualItems","expandAndScrollToNode","useExpandAndScrollToNode","renameContext","onComplete","requestAnimationFrame","startRename","cancelRename","isScrolling","errorRendererProps","scrollToNode","n","parentNodeId","state","getSelectedNodes","calculatedSelectedNodes","undefined","filter","item","map","height","width","overflowY","getTotalSize","minHeight","position","overflow","virtualizedItem","selected","measureElement","key","start","t0","$","_c","t1","pathToNode","findPathToNode","pop","collapsedNodes","_temp","forEach","didExpand","expandToNode","t2","t3","targetNodeId","findIndex","flatItem","scrollToIndex","align","onScrollComplete","t4","t5","nodePredicate_0","expandResult","targetNode_0","index_0","flatItem_0","pathNode","isExpanded","parent","children","childPath","VirtualTreeItemProps","HierarchyNodeItemProps","VirtualTreeItem","HTMLElement","top","left","transform","willChange","style","level","ReturnType","HierarchyNodeItem","rest","nodeRef","treeItemProps","isDisabled","menuActions","inlineActions","contextMenuActions","nodeActions","t6","e","onClick","detail","nodeId","isSelected","shiftDown","shiftKey","ctrlDown","ctrlKey","t7","e_0","onMouseDown","preventDefault","ref","t8","levelSize","posInLevel"],"sources":["../../../src/presentation-hierarchies-react/stratakit/TreeRenderer.tsx"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from \"react\";\nimport { Tree } from \"@stratakit/structures\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { isPlaceholderItem, useErrorNodes, useFlatTreeItems } from \"../FlatTreeNode.js\";\nimport { useSelectionHandler } from \"../UseSelectionHandler.js\";\nimport { useEvent, useMergedRefs } from \"../Utils.js\";\nimport { TreeErrorRenderer } from \"./TreeErrorRenderer.js\";\nimport { TreeNodeRenameContextProvider, useTreeNodeRenameContextValue } from \"./TreeNodeRenameAction.js\";\nimport { PlaceholderNode, StrataKitTreeNodeRenderer } from \"./TreeNodeRenderer.js\";\n\nimport type { ComponentProps, CSSProperties, FC, PropsWithoutRef, ReactElement, ReactNode, RefAttributes } from \"react\";\nimport type { FlatTreeItem, FlatTreeNodeItem } from \"../FlatTreeNode.js\";\nimport type { TreeRendererProps } from \"../Renderers.js\";\nimport type { TreeNode } from \"../TreeNode.js\";\nimport type { SelectionMode } from \"../UseSelectionHandler.js\";\nimport type { TreeErrorRendererProps } from \"./TreeErrorRenderer.js\";\nimport type { TreeNodeEditingProps } from \"./TreeNodeRenameAction.js\";\nimport type { StrataKitTreeItemProps, TreeNodeRendererProps } from \"./TreeNodeRenderer.js\";\n\n/** @alpha */\ninterface TreeRendererOwnProps {\n id?: string;\n /**\n * A user friendly display label of the tree. Should be unique within the consuming application,\n * as it's used for accessibility purposes.\n */\n treeLabel: string;\n /** Active selection mode used by the tree. Defaults to `\"single\"`. */\n selectionMode?: SelectionMode;\n /** A render function for errors' display component. Defaults to `<TreeErrorRenderer />`. */\n errorRenderer?: (props: TreeErrorRendererProps) => ReactElement;\n /** Props that defines if current node supports editing. */\n getEditingProps?: (node: TreeNode) => TreeNodeEditingProps | undefined;\n\n /** Custom props for the root Tree component. */\n treeRootProps?: Partial<Omit<ComponentProps<typeof Tree.Root>, \"style\">>;\n\n /** A callback that returns tree item props for specific node. */\n getTreeItemProps?: (\n node: TreeNode,\n ) => Partial<Omit<StrataKitTreeItemProps, \"selected\" | \"aria-level\" | \"aria-posinset\" | \"aria-setsize\">>;\n\n /**\n * Callback that returns menu actions for tree item.\n * Must return an array of `<TreeActionBase />` or `<Divider />` elements.\n */\n getMenuActions?: (props: { targetNode: TreeNode; selectedNodes: TreeNode[] }) => ReactNode[];\n /**\n * Callback that returns inline actions for tree item.\n * Must return an array of `<TreeActionBase />` elements.\n * Max 2 items.\n */\n getInlineActions?: (props: { targetNode: TreeNode; selectedNodes: TreeNode[] }) => ReactNode[];\n /**\n * Callback that returns actions for tree item context menu.\n * Must return an array of `<TreeActionBase />` or `<Divider />` elements.\n */\n getContextMenuActions?: (props: { targetNode: TreeNode; selectedNodes: TreeNode[] }) => ReactNode[];\n}\n\n/** @alpha */\nexport interface StrataKitTreeRendererAttributes {\n /**\n * Opens rename mode for the first node that matches the given predicate. Node must be already loaded in the tree.\n * If the node is not visible (because its parent is collapsed), all parents will be expanded to make it visible and node will be scrolled into view.\n *\n * Returns \"node-not-found\" if no node matches the predicate, \"success\" if rename was initiated.\n */\n renameNode: (nodePredicate: (node: TreeNode) => boolean) => \"node-not-found\" | \"success\";\n}\n\n/** @alpha */\ntype StrataKitTreeRendererProps = TreeRendererProps &\n Pick<TreeErrorRendererProps, \"filterHierarchyLevel\"> &\n TreeRendererOwnProps;\n\n/**\n * A component that renders a tree using the `Tree` component from `@stratakit/structures`.\n *\n * @alpha\n */\nexport const StrataKitTreeRenderer: FC<\n PropsWithoutRef<StrataKitTreeRendererProps> & RefAttributes<StrataKitTreeRendererAttributes>\n> = forwardRef<StrataKitTreeRendererAttributes, StrataKitTreeRendererProps>(\n function StrataKitTreeRenderer(props, forwardedRef) {\n const {\n id,\n rootNodes,\n selectNodes,\n selectionMode,\n expandNode,\n treeLabel,\n getHierarchyLevelDetails,\n filterHierarchyLevel,\n reloadTree,\n isNodeSelected,\n errorRenderer,\n treeRootProps,\n getContextMenuActions,\n getEditingProps,\n getInlineActions,\n getMenuActions,\n getTreeItemProps,\n } = props;\n const { handleNodeSelect } = useSelectionHandler({\n rootNodes,\n selectNodes,\n selectionMode: selectionMode ?? \"single\",\n });\n const flatItems = useFlatTreeItems(rootNodes);\n const errorNodes = useErrorNodes(rootNodes);\n\n const parentRef = useRef<HTMLDivElement>(null);\n\n // eslint-disable-next-line react-hooks/incompatible-library\n const virtualizer = useVirtualizer({\n count: flatItems.length,\n getScrollElement: () => parentRef.current,\n getItemKey: useCallback((index: number) => flatItems[index].id, [flatItems]),\n estimateSize: () => 28,\n overscan: 10,\n });\n const items = virtualizer.getVirtualItems();\n const expandAndScrollToNode = useExpandAndScrollToNode({ rootNodes, flatItems, expandNode, virtualizer });\n\n const renameContext = useTreeNodeRenameContextValue({ getEditingProps });\n useImperativeHandle(forwardedRef, () => ({\n renameNode: (nodePredicate) =>\n expandAndScrollToNode({\n nodePredicate,\n onComplete: (targetNode) => {\n // give time to scroll node into view before starting rename\n requestAnimationFrame(() => renameContext.startRename(targetNode));\n },\n }),\n }));\n\n const cancelRename = renameContext.cancelRename;\n const isScrolling = virtualizer.isScrolling;\n useEffect(() => {\n if (isScrolling) {\n // cancel rename when scroll is initiated\n cancelRename();\n }\n }, [isScrolling, cancelRename]);\n\n const errorRendererProps: TreeErrorRendererProps = {\n treeLabel,\n errorNodes,\n scrollToNode: (node) => expandAndScrollToNode({ nodePredicate: (n) => n.id === node.id }),\n getHierarchyLevelDetails,\n filterHierarchyLevel,\n reloadTree: useCallback<TreeErrorRendererProps[\"reloadTree\"]>(\n ({ parentNodeId }) => reloadTree({ parentNodeId, state: \"reset\" }),\n [reloadTree],\n ),\n };\n\n const getSelectedNodes = useMemo(() => {\n let calculatedSelectedNodes: TreeNode[] | undefined;\n return () => {\n if (calculatedSelectedNodes === undefined) {\n calculatedSelectedNodes = flatItems\n .filter((item): item is FlatTreeNodeItem => !isPlaceholderItem(item) && isNodeSelected(item.id))\n .map((item) => item.node);\n }\n return calculatedSelectedNodes;\n };\n }, [flatItems, isNodeSelected]);\n\n return (\n <>\n {errorRenderer ? errorRenderer(errorRendererProps) : <TreeErrorRenderer {...errorRendererProps} />}\n <div id={id} style={{ height: \"100%\", width: \"100%\", overflowY: \"auto\" }} ref={parentRef}>\n <Tree.Root\n {...treeRootProps}\n style={{\n height: virtualizer.getTotalSize(),\n minHeight: \"100%\",\n width: \"100%\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <TreeNodeRenameContextProvider value={renameContext}>\n {items.map((virtualizedItem) => {\n const item = flatItems[virtualizedItem.index];\n const selected = isNodeSelected(item.id);\n return (\n <VirtualTreeItem\n ref={virtualizer.measureElement}\n key={virtualizedItem.key}\n data-index={virtualizedItem.index}\n start={virtualizedItem.start}\n item={item}\n selected={selected}\n expandNode={expandNode}\n reloadTree={reloadTree}\n handleNodeSelect={handleNodeSelect}\n getSelectedNodes={getSelectedNodes}\n getContextMenuActions={getContextMenuActions}\n getInlineActions={getInlineActions}\n getMenuActions={getMenuActions}\n getTreeItemProps={getTreeItemProps}\n />\n );\n })}\n </TreeNodeRenameContextProvider>\n </Tree.Root>\n </div>\n </>\n );\n },\n);\n\nfunction useExpandAndScrollToNode({\n rootNodes,\n flatItems,\n expandNode,\n virtualizer,\n}: Pick<StrataKitTreeRendererProps, \"rootNodes\" | \"expandNode\"> & {\n flatItems: ReturnType<typeof useFlatTreeItems>;\n virtualizer: Pick<ReturnType<typeof useVirtualizer>, \"scrollToIndex\">;\n}) {\n const expandToNode = (nodePredicate: (node: TreeNode) => boolean) => {\n const pathToNode = findPathToNode(rootNodes, nodePredicate);\n if (!pathToNode) {\n return undefined;\n }\n const targetNode = pathToNode.pop()!;\n const collapsedNodes = pathToNode.filter((pathNode) => !pathNode.isExpanded);\n collapsedNodes.forEach((node) => expandNode(node.id, true));\n return { targetNode, didExpand: collapsedNodes.length > 0 };\n };\n\n const scrollToNode = useRef<{ id: string; onScrollComplete?: () => void } | undefined>(undefined);\n useEffect(() => {\n if (scrollToNode.current === undefined) {\n return;\n }\n const targetNodeId = scrollToNode.current.id;\n const index = flatItems.findIndex((flatItem) => flatItem.id === targetNodeId);\n if (index === -1) {\n return;\n }\n virtualizer.scrollToIndex(index, { align: \"auto\" });\n scrollToNode.current.onScrollComplete?.();\n scrollToNode.current = undefined;\n }, [flatItems, virtualizer]);\n\n return ({\n nodePredicate,\n onComplete,\n }: {\n nodePredicate: (node: TreeNode) => boolean;\n onComplete?: (targetNode: TreeNode) => void;\n }) => {\n const expandResult = expandToNode(nodePredicate);\n if (!expandResult) {\n return \"node-not-found\";\n }\n\n const { targetNode, didExpand } = expandResult;\n if (didExpand) {\n scrollToNode.current = {\n id: targetNode.id,\n onScrollComplete: onComplete ? () => onComplete(targetNode) : undefined,\n };\n } else {\n const index = flatItems.findIndex((flatItem) => flatItem.id === targetNode.id);\n virtualizer.scrollToIndex(index, { align: \"auto\" });\n onComplete?.(targetNode);\n }\n return \"success\";\n };\n}\n\nfunction findPathToNode(rootNodes: TreeNode[], nodePredicate: (node: TreeNode) => boolean): TreeNode[] | undefined {\n for (const parent of rootNodes) {\n if (nodePredicate(parent)) {\n return [parent];\n }\n if (parent.children !== true) {\n const childPath = findPathToNode(parent.children, nodePredicate);\n if (childPath) {\n return [parent, ...childPath];\n }\n }\n }\n return undefined;\n}\n\ntype VirtualTreeItemProps = Omit<HierarchyNodeItemProps, \"item\"> & {\n start: number;\n \"data-index\": number;\n item: FlatTreeItem;\n};\n\nconst VirtualTreeItem = memo(\n forwardRef<HTMLElement, VirtualTreeItemProps>(function VirtualTreeItem({ start, item, ...props }, forwardedRef) {\n const style: CSSProperties = useMemo(\n () => ({\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n transform: `translateY(${start}px)`,\n willChange: \"transform\",\n }),\n [start],\n );\n\n if (isPlaceholderItem(item)) {\n return (\n <PlaceholderNode\n ref={forwardedRef}\n data-index={props[\"data-index\"]}\n style={style}\n aria-level={item.level}\n aria-posinset={1}\n aria-setsize={1}\n />\n );\n }\n\n return <HierarchyNodeItem {...props} ref={forwardedRef} style={style} item={item} />;\n }),\n);\n\ntype HierarchyNodeItemProps = {\n item: FlatTreeNodeItem;\n style?: CSSProperties;\n getSelectedNodes: () => TreeNode[];\n} & Pick<TreeNodeRendererProps, \"expandNode\" | \"reloadTree\" | \"selected\"> &\n Pick<TreeRendererOwnProps, \"getContextMenuActions\" | \"getInlineActions\" | \"getMenuActions\" | \"getTreeItemProps\"> &\n Pick<ReturnType<typeof useSelectionHandler>, \"handleNodeSelect\">;\n\nconst HierarchyNodeItem = memo(\n forwardRef<HTMLElement, HierarchyNodeItemProps>(function HierarchyNodeItem(\n {\n item,\n selected,\n getTreeItemProps,\n handleNodeSelect,\n getSelectedNodes,\n getMenuActions,\n getInlineActions,\n getContextMenuActions,\n ...rest\n },\n forwardedRef,\n ) {\n const nodeRef = useRef<HTMLElement>(null);\n const node = item.node;\n const treeItemProps = getTreeItemProps?.(node);\n\n const isDisabled = treeItemProps?.[\"aria-disabled\"] === true;\n const nodeActions = useMemo(\n () => ({\n menuActions: getMenuActions\n ? getMenuActions({ targetNode: node, selectedNodes: getSelectedNodes() })\n : undefined,\n inlineActions: getInlineActions\n ? getInlineActions({ targetNode: node, selectedNodes: getSelectedNodes() })\n : undefined,\n contextMenuActions: getContextMenuActions\n ? getContextMenuActions({ targetNode: node, selectedNodes: getSelectedNodes() })\n : undefined,\n }),\n [node, getMenuActions, getInlineActions, getContextMenuActions, getSelectedNodes],\n );\n\n const onClick = useEvent<Required<TreeNodeRendererProps>[\"onClick\"]>((e) => {\n if (treeItemProps?.onClick) {\n treeItemProps.onClick(e);\n }\n // ignore if this is double click\n if (isDisabled || e.detail > 1) {\n return;\n }\n handleNodeSelect({ nodeId: node.id, isSelected: selected ?? false, shiftDown: e.shiftKey, ctrlDown: e.ctrlKey });\n });\n\n const onMouseDown = useEvent<Required<TreeNodeRendererProps>[\"onMouseDown\"]>((e) => {\n if (treeItemProps?.onMouseDown) {\n treeItemProps.onMouseDown(e);\n }\n // prevent text selection on shift+click\n if (e.shiftKey) {\n e.preventDefault();\n }\n });\n\n const ref = useMergedRefs(forwardedRef, nodeRef);\n return (\n <StrataKitTreeNodeRenderer\n {...treeItemProps}\n {...rest}\n {...nodeActions}\n ref={ref}\n aria-level={item.level}\n aria-posinset={item.posInLevel}\n aria-setsize={item.levelSize}\n node={item.node}\n selected={selected}\n onClick={onClick}\n onMouseDown={onMouseDown}\n />\n );\n }),\n);\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/presentation-hierarchies-react",
3
- "version": "2.0.0-alpha.59",
3
+ "version": "2.0.0-alpha.60",
4
4
  "description": "React components based on `@itwin/presentation-hierarchies`",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -48,15 +48,15 @@
48
48
  "react-compiler-runtime": "^1.0.0",
49
49
  "react-error-boundary": "^4.1.2",
50
50
  "rxjs": "^7.8.2",
51
- "@itwin/presentation-hierarchies": "2.0.0-alpha.14",
52
51
  "@itwin/presentation-shared": "2.0.0-alpha.9",
53
- "@itwin/unified-selection": "^1.6.8"
52
+ "@itwin/unified-selection": "^1.6.8",
53
+ "@itwin/presentation-hierarchies": "2.0.0-alpha.14"
54
54
  },
55
55
  "peerDependencies": {
56
56
  "@stratakit/bricks": "^0.5.4",
57
- "@stratakit/foundations": "^0.4.5",
58
- "@stratakit/icons": "^0.2.2",
59
- "@stratakit/structures": "^0.5.4",
57
+ "@stratakit/foundations": "^0.4.7",
58
+ "@stratakit/icons": "^0.3.1",
59
+ "@stratakit/structures": "^0.5.6",
60
60
  "react": "^17.0 || ^18.0",
61
61
  "react-dom": "^17.0 || ^18.0"
62
62
  },
@@ -79,9 +79,9 @@
79
79
  "@itwin/eslint-plugin": "5.1.0",
80
80
  "@rolldown/plugin-babel": "^0.2.2",
81
81
  "@stratakit/bricks": "^0.5.4",
82
- "@stratakit/foundations": "^0.4.5",
83
- "@stratakit/icons": "^0.2.2",
84
- "@stratakit/structures": "^0.5.4",
82
+ "@stratakit/foundations": "^0.4.7",
83
+ "@stratakit/icons": "^0.3.1",
84
+ "@stratakit/structures": "^0.5.6",
85
85
  "@testing-library/dom": "^10.4.1",
86
86
  "@testing-library/react": "^16.3.2",
87
87
  "@testing-library/user-event": "^14.6.1",