@itwin/presentation-hierarchies-react 1.10.0 → 1.10.2

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 (82) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +50 -10
  3. package/lib/cjs/presentation-hierarchies-react/LocalizationContext.d.ts +1 -1
  4. package/lib/cjs/presentation-hierarchies-react/LocalizationContext.d.ts.map +1 -1
  5. package/lib/cjs/presentation-hierarchies-react/LocalizationContext.js +1 -1
  6. package/lib/cjs/presentation-hierarchies-react/LocalizationContext.js.map +1 -1
  7. package/lib/cjs/presentation-hierarchies-react/TreeNode.d.ts.map +1 -1
  8. package/lib/cjs/presentation-hierarchies-react/TreeNode.js.map +1 -1
  9. package/lib/cjs/presentation-hierarchies-react/UnifiedSelectionContext.d.ts.map +1 -1
  10. package/lib/cjs/presentation-hierarchies-react/UnifiedSelectionContext.js +1 -1
  11. package/lib/cjs/presentation-hierarchies-react/UnifiedSelectionContext.js.map +1 -1
  12. package/lib/cjs/presentation-hierarchies-react/UseIModelTree.d.ts.map +1 -1
  13. package/lib/cjs/presentation-hierarchies-react/UseIModelTree.js.map +1 -1
  14. package/lib/cjs/presentation-hierarchies-react/UseSelectionHandler.d.ts.map +1 -1
  15. package/lib/cjs/presentation-hierarchies-react/UseSelectionHandler.js +1 -4
  16. package/lib/cjs/presentation-hierarchies-react/UseSelectionHandler.js.map +1 -1
  17. package/lib/cjs/presentation-hierarchies-react/UseTree.d.ts.map +1 -1
  18. package/lib/cjs/presentation-hierarchies-react/UseTree.js +5 -22
  19. package/lib/cjs/presentation-hierarchies-react/UseTree.js.map +1 -1
  20. package/lib/cjs/presentation-hierarchies-react/internal/TreeActions.d.ts.map +1 -1
  21. package/lib/cjs/presentation-hierarchies-react/internal/TreeActions.js +27 -12
  22. package/lib/cjs/presentation-hierarchies-react/internal/TreeActions.js.map +1 -1
  23. package/lib/cjs/presentation-hierarchies-react/internal/TreeLoader.d.ts.map +1 -1
  24. package/lib/cjs/presentation-hierarchies-react/internal/TreeLoader.js +10 -21
  25. package/lib/cjs/presentation-hierarchies-react/internal/TreeLoader.js.map +1 -1
  26. package/lib/cjs/presentation-hierarchies-react/internal/TreeModel.d.ts.map +1 -1
  27. package/lib/cjs/presentation-hierarchies-react/internal/TreeModel.js +2 -2
  28. package/lib/cjs/presentation-hierarchies-react/internal/TreeModel.js.map +1 -1
  29. package/lib/cjs/presentation-hierarchies-react/internal/UseUnifiedSelection.d.ts.map +1 -1
  30. package/lib/cjs/presentation-hierarchies-react/internal/UseUnifiedSelection.js +7 -11
  31. package/lib/cjs/presentation-hierarchies-react/internal/UseUnifiedSelection.js.map +1 -1
  32. package/lib/cjs/presentation-hierarchies-react/itwinui/TreeNodeRenderer.d.ts.map +1 -1
  33. package/lib/cjs/presentation-hierarchies-react/itwinui/TreeNodeRenderer.js +17 -7
  34. package/lib/cjs/presentation-hierarchies-react/itwinui/TreeNodeRenderer.js.map +1 -1
  35. package/lib/cjs/presentation-hierarchies-react/itwinui/TreeRenderer.d.ts +1 -1
  36. package/lib/cjs/presentation-hierarchies-react/itwinui/TreeRenderer.d.ts.map +1 -1
  37. package/lib/cjs/presentation-hierarchies-react/itwinui/TreeRenderer.js +2 -15
  38. package/lib/cjs/presentation-hierarchies-react/itwinui/TreeRenderer.js.map +1 -1
  39. package/lib/cjs/presentation-hierarchies-react-itwinui.d.ts +1 -1
  40. package/lib/cjs/presentation-hierarchies-react-itwinui.d.ts.map +1 -1
  41. package/lib/cjs/presentation-hierarchies-react-itwinui.js.map +1 -1
  42. package/lib/esm/presentation-hierarchies-react/LocalizationContext.d.ts +1 -1
  43. package/lib/esm/presentation-hierarchies-react/LocalizationContext.d.ts.map +1 -1
  44. package/lib/esm/presentation-hierarchies-react/LocalizationContext.js +1 -1
  45. package/lib/esm/presentation-hierarchies-react/LocalizationContext.js.map +1 -1
  46. package/lib/esm/presentation-hierarchies-react/TreeNode.d.ts.map +1 -1
  47. package/lib/esm/presentation-hierarchies-react/TreeNode.js.map +1 -1
  48. package/lib/esm/presentation-hierarchies-react/UnifiedSelectionContext.d.ts.map +1 -1
  49. package/lib/esm/presentation-hierarchies-react/UnifiedSelectionContext.js +1 -1
  50. package/lib/esm/presentation-hierarchies-react/UnifiedSelectionContext.js.map +1 -1
  51. package/lib/esm/presentation-hierarchies-react/UseIModelTree.d.ts.map +1 -1
  52. package/lib/esm/presentation-hierarchies-react/UseIModelTree.js +1 -1
  53. package/lib/esm/presentation-hierarchies-react/UseIModelTree.js.map +1 -1
  54. package/lib/esm/presentation-hierarchies-react/UseSelectionHandler.d.ts.map +1 -1
  55. package/lib/esm/presentation-hierarchies-react/UseSelectionHandler.js +1 -4
  56. package/lib/esm/presentation-hierarchies-react/UseSelectionHandler.js.map +1 -1
  57. package/lib/esm/presentation-hierarchies-react/UseTree.d.ts.map +1 -1
  58. package/lib/esm/presentation-hierarchies-react/UseTree.js +7 -24
  59. package/lib/esm/presentation-hierarchies-react/UseTree.js.map +1 -1
  60. package/lib/esm/presentation-hierarchies-react/internal/TreeActions.d.ts.map +1 -1
  61. package/lib/esm/presentation-hierarchies-react/internal/TreeActions.js +29 -14
  62. package/lib/esm/presentation-hierarchies-react/internal/TreeActions.js.map +1 -1
  63. package/lib/esm/presentation-hierarchies-react/internal/TreeLoader.d.ts.map +1 -1
  64. package/lib/esm/presentation-hierarchies-react/internal/TreeLoader.js +11 -22
  65. package/lib/esm/presentation-hierarchies-react/internal/TreeLoader.js.map +1 -1
  66. package/lib/esm/presentation-hierarchies-react/internal/TreeModel.d.ts.map +1 -1
  67. package/lib/esm/presentation-hierarchies-react/internal/TreeModel.js +2 -2
  68. package/lib/esm/presentation-hierarchies-react/internal/TreeModel.js.map +1 -1
  69. package/lib/esm/presentation-hierarchies-react/internal/UseUnifiedSelection.d.ts.map +1 -1
  70. package/lib/esm/presentation-hierarchies-react/internal/UseUnifiedSelection.js +8 -12
  71. package/lib/esm/presentation-hierarchies-react/internal/UseUnifiedSelection.js.map +1 -1
  72. package/lib/esm/presentation-hierarchies-react/itwinui/TreeNodeRenderer.d.ts.map +1 -1
  73. package/lib/esm/presentation-hierarchies-react/itwinui/TreeNodeRenderer.js +19 -9
  74. package/lib/esm/presentation-hierarchies-react/itwinui/TreeNodeRenderer.js.map +1 -1
  75. package/lib/esm/presentation-hierarchies-react/itwinui/TreeRenderer.d.ts.map +1 -1
  76. package/lib/esm/presentation-hierarchies-react/itwinui/TreeRenderer.js +2 -15
  77. package/lib/esm/presentation-hierarchies-react/itwinui/TreeRenderer.js.map +1 -1
  78. package/lib/esm/presentation-hierarchies-react-itwinui.d.ts +1 -1
  79. package/lib/esm/presentation-hierarchies-react-itwinui.d.ts.map +1 -1
  80. package/lib/esm/presentation-hierarchies-react-itwinui.js +1 -1
  81. package/lib/esm/presentation-hierarchies-react-itwinui.js.map +1 -1
  82. package/package.json +18 -30
@@ -1 +1 @@
1
- {"version":3,"file":"TreeRenderer.js","sourceRoot":"","sources":["../../../../src/presentation-hierarchies-react/itwinui/TreeRenderer.tsx"],"names":[],"mappings":"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","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 { ComponentPropsWithoutRef, useCallback } from \"react\";\nimport { NodeData, Tree } from \"@itwin/itwinui-react\";\nimport { LocalizationContextProvider } from \"../LocalizationContext.js\";\nimport { PresentationTreeNode } from \"../TreeNode.js\";\nimport { SelectionMode, useSelectionHandler } from \"../UseSelectionHandler.js\";\nimport { useTree } from \"../UseTree.js\";\nimport { TreeNodeRenderer } from \"./TreeNodeRenderer.js\";\n\n/** @public */\ntype TreeProps = ComponentPropsWithoutRef<typeof Tree<RenderedTreeNode>>;\n\n/** @public */\ntype TreeNodeRendererProps = ComponentPropsWithoutRef<typeof TreeNodeRenderer>;\n\n/** @public */\ninterface TreeRendererOwnProps {\n /** Root nodes of the tree. */\n rootNodes: PresentationTreeNode[];\n /** Active selection mode used by the tree. Defaults to `\"single\"`. */\n selectionMode?: SelectionMode;\n}\n\n/** @public */\ntype TreeRendererProps = Pick<ReturnType<typeof useTree>, \"rootNodes\" | \"expandNode\"> &\n Partial<Pick<ReturnType<typeof useTree>, \"selectNodes\" | \"isNodeSelected\" | \"getHierarchyLevelDetails\" | \"reloadTree\">> &\n Pick<TreeNodeRendererProps, \"onFilterClick\" | \"getIcon\" | \"getLabel\" | \"getSublabel\" | \"filterButtonsVisibility\" | \"getActions\"> &\n TreeRendererOwnProps &\n Omit<TreeProps, \"data\" | \"nodeRenderer\" | \"getNode\" | \"enableVirtualization\"> &\n ComponentPropsWithoutRef<typeof LocalizationContextProvider>;\n\n/**\n * A component that renders a tree using the `Tree` component from `@itwin/itwinui-react`. The tree nodes\n * are rendered using `TreeNodeRenderer` component from this package.\n *\n * @see https://itwinui.bentley.com/docs/tree\n * @public\n */\nexport function TreeRenderer({\n rootNodes,\n expandNode,\n selectNodes,\n isNodeSelected,\n onFilterClick,\n getIcon,\n getLabel,\n getSublabel,\n getHierarchyLevelDetails,\n reloadTree,\n selectionMode,\n localizedStrings,\n size,\n filterButtonsVisibility,\n getActions,\n ...treeProps\n}: TreeRendererProps) {\n const { onNodeClick, onNodeKeyDown } = useSelectionHandler({\n rootNodes,\n selectNodes: selectNodes ?? noopSelectNodes,\n selectionMode: selectionMode ?? \"single\",\n });\n const nodeRenderer = useCallback<TreeProps[\"nodeRenderer\"]>(\n (nodeProps) => {\n return (\n <TreeNodeRenderer\n {...nodeProps}\n filterButtonsVisibility={filterButtonsVisibility}\n expandNode={expandNode}\n getHierarchyLevelDetails={getHierarchyLevelDetails}\n onFilterClick={onFilterClick}\n onNodeClick={onNodeClick}\n onNodeKeyDown={onNodeKeyDown}\n getIcon={getIcon}\n getLabel={getLabel}\n getSublabel={getSublabel}\n reloadTree={reloadTree}\n size={size}\n getActions={getActions}\n />\n );\n },\n [\n filterButtonsVisibility,\n expandNode,\n getHierarchyLevelDetails,\n onFilterClick,\n onNodeClick,\n onNodeKeyDown,\n getIcon,\n getLabel,\n getSublabel,\n reloadTree,\n size,\n getActions,\n ],\n );\n\n const getNode = useCallback<TreeProps[\"getNode\"]>((node) => createRenderedTreeNodeData(node, isNodeSelected ?? noopIsNodeSelected), [isNodeSelected]);\n\n return (\n <LocalizationContextProvider localizedStrings={localizedStrings}>\n <Tree<RenderedTreeNode> {...treeProps} size={size} data={rootNodes} nodeRenderer={nodeRenderer} getNode={getNode} enableVirtualization={true} />\n </LocalizationContextProvider>\n );\n}\n\nfunction noopSelectNodes() {}\nfunction noopIsNodeSelected() {\n return false;\n}\n\n/**\n * A data structure for a tree node that is rendered using the `TreeRenderer` component.\n *\n * In addition to the `PresentationTreeNode` union, this type may have one additional variation - an informational\n * type of node with `ChildrenPlaceholder` type. This type of node is returned as the single child node of a parent\n * while its children are being loaded. This allows the node renderer to show a placeholder under the parent during\n * the process.\n *\n * @public\n */\nexport type RenderedTreeNode =\n | PresentationTreeNode\n | {\n id: string;\n parentNodeId: string | undefined;\n type: \"ChildrenPlaceholder\";\n };\n\n/**\n * An utility function that creates an `@itwin/itwinui-react` `NodeData` object for the `Tree` component from a\n * `RenderedTreeNode` object.\n *\n * Usage example:\n * ```tsx\n * function MyComponent({ rootNodes, nodeRenderer }: MyComponentProps) {\n * const getNode = useCallback<TreeProps[\"getNode\"]>((node) => createRenderedTreeNodeData(node, () => false), []);\n * return <Tree<RenderedTreeNode> data={rootNodes} getNode={getNode} nodeRenderer={nodeRenderer} />;\n * }\n * ```\n *\n * @public\n */\nexport function createRenderedTreeNodeData(node: RenderedTreeNode, isNodeSelected: (nodeId: string) => boolean): NodeData<RenderedTreeNode> {\n if (\"type\" in node) {\n return {\n nodeId: node.id,\n node,\n hasSubNodes: false,\n isExpanded: false,\n isSelected: false,\n isDisabled: true,\n };\n }\n return {\n nodeId: node.id,\n node,\n hasSubNodes: node.children === true || node.children.length > 0,\n subNodes:\n // returns placeholder node to show as child while children is loading.\n node.children === true\n ? [\n {\n id: `Loading-${node.id}`,\n parentNodeId: node.id,\n type: \"ChildrenPlaceholder\",\n },\n ]\n : node.children,\n isExpanded: node.isExpanded,\n isSelected: isNodeSelected(node.id),\n };\n}\n"]}
1
+ {"version":3,"file":"TreeRenderer.js","sourceRoot":"","sources":["../../../../src/presentation-hierarchies-react/itwinui/TreeRenderer.tsx"],"names":[],"mappings":"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","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 { ComponentPropsWithoutRef, useCallback } from \"react\";\nimport { NodeData, Tree } from \"@itwin/itwinui-react\";\nimport { LocalizationContextProvider } from \"../LocalizationContext.js\";\nimport { PresentationTreeNode } from \"../TreeNode.js\";\nimport { SelectionMode, useSelectionHandler } from \"../UseSelectionHandler.js\";\nimport { useTree } from \"../UseTree.js\";\nimport { TreeNodeRenderer } from \"./TreeNodeRenderer.js\";\n\n/** @public */\ntype TreeProps = ComponentPropsWithoutRef<typeof Tree<RenderedTreeNode>>;\n\n/** @public */\ntype TreeNodeRendererProps = ComponentPropsWithoutRef<typeof TreeNodeRenderer>;\n\n/** @public */\ninterface TreeRendererOwnProps {\n /** Root nodes of the tree. */\n rootNodes: PresentationTreeNode[];\n /** Active selection mode used by the tree. Defaults to `\"single\"`. */\n selectionMode?: SelectionMode;\n}\n\n/** @public */\ntype TreeRendererProps = Pick<ReturnType<typeof useTree>, \"rootNodes\" | \"expandNode\"> &\n Partial<\n Pick<ReturnType<typeof useTree>, \"selectNodes\" | \"isNodeSelected\" | \"getHierarchyLevelDetails\" | \"reloadTree\">\n > &\n Pick<\n TreeNodeRendererProps,\n \"onFilterClick\" | \"getIcon\" | \"getLabel\" | \"getSublabel\" | \"filterButtonsVisibility\" | \"getActions\"\n > &\n TreeRendererOwnProps &\n Omit<TreeProps, \"data\" | \"nodeRenderer\" | \"getNode\" | \"enableVirtualization\"> &\n ComponentPropsWithoutRef<typeof LocalizationContextProvider>;\n\n/**\n * A component that renders a tree using the `Tree` component from `@itwin/itwinui-react`. The tree nodes\n * are rendered using `TreeNodeRenderer` component from this package.\n *\n * @see https://itwinui.bentley.com/docs/tree\n * @public\n */\nexport function TreeRenderer({\n rootNodes,\n expandNode,\n selectNodes,\n isNodeSelected,\n onFilterClick,\n getIcon,\n getLabel,\n getSublabel,\n getHierarchyLevelDetails,\n reloadTree,\n selectionMode,\n localizedStrings,\n size,\n filterButtonsVisibility,\n getActions,\n ...treeProps\n}: TreeRendererProps) {\n const { onNodeClick, onNodeKeyDown } = useSelectionHandler({\n rootNodes,\n selectNodes: selectNodes ?? noopSelectNodes,\n selectionMode: selectionMode ?? \"single\",\n });\n const nodeRenderer = useCallback<TreeProps[\"nodeRenderer\"]>(\n (nodeProps) => {\n return (\n <TreeNodeRenderer\n {...nodeProps}\n filterButtonsVisibility={filterButtonsVisibility}\n expandNode={expandNode}\n getHierarchyLevelDetails={getHierarchyLevelDetails}\n onFilterClick={onFilterClick}\n onNodeClick={onNodeClick}\n onNodeKeyDown={onNodeKeyDown}\n getIcon={getIcon}\n getLabel={getLabel}\n getSublabel={getSublabel}\n reloadTree={reloadTree}\n size={size}\n getActions={getActions}\n />\n );\n },\n [\n filterButtonsVisibility,\n expandNode,\n getHierarchyLevelDetails,\n onFilterClick,\n onNodeClick,\n onNodeKeyDown,\n getIcon,\n getLabel,\n getSublabel,\n reloadTree,\n size,\n getActions,\n ],\n );\n\n const getNode = useCallback<TreeProps[\"getNode\"]>(\n (node) => createRenderedTreeNodeData(node, isNodeSelected ?? noopIsNodeSelected),\n [isNodeSelected],\n );\n\n return (\n <LocalizationContextProvider localizedStrings={localizedStrings}>\n <Tree<RenderedTreeNode>\n {...treeProps}\n size={size}\n data={rootNodes}\n nodeRenderer={nodeRenderer}\n getNode={getNode}\n enableVirtualization={true}\n />\n </LocalizationContextProvider>\n );\n}\n\nfunction noopSelectNodes() {}\nfunction noopIsNodeSelected() {\n return false;\n}\n\n/**\n * A data structure for a tree node that is rendered using the `TreeRenderer` component.\n *\n * In addition to the `PresentationTreeNode` union, this type may have one additional variation - an informational\n * type of node with `ChildrenPlaceholder` type. This type of node is returned as the single child node of a parent\n * while its children are being loaded. This allows the node renderer to show a placeholder under the parent during\n * the process.\n *\n * @public\n */\nexport type RenderedTreeNode =\n | PresentationTreeNode\n | { id: string; parentNodeId: string | undefined; type: \"ChildrenPlaceholder\" };\n\n/**\n * An utility function that creates an `@itwin/itwinui-react` `NodeData` object for the `Tree` component from a\n * `RenderedTreeNode` object.\n *\n * Usage example:\n * ```tsx\n * function MyComponent({ rootNodes, nodeRenderer }: MyComponentProps) {\n * const getNode = useCallback<TreeProps[\"getNode\"]>((node) => createRenderedTreeNodeData(node, () => false), []);\n * return <Tree<RenderedTreeNode> data={rootNodes} getNode={getNode} nodeRenderer={nodeRenderer} />;\n * }\n * ```\n *\n * @public\n */\nexport function createRenderedTreeNodeData(\n node: RenderedTreeNode,\n isNodeSelected: (nodeId: string) => boolean,\n): NodeData<RenderedTreeNode> {\n if (\"type\" in node) {\n return { nodeId: node.id, node, hasSubNodes: false, isExpanded: false, isSelected: false, isDisabled: true };\n }\n return {\n nodeId: node.id,\n node,\n hasSubNodes: node.children === true || node.children.length > 0,\n subNodes:\n // returns placeholder node to show as child while children is loading.\n node.children === true\n ? [{ id: `Loading-${node.id}`, parentNodeId: node.id, type: \"ChildrenPlaceholder\" }]\n : node.children,\n isExpanded: node.isExpanded,\n isSelected: isNodeSelected(node.id),\n };\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  export { TreeNodeRenderer } from "./presentation-hierarchies-react/itwinui/TreeNodeRenderer.js";
2
- export { RenderedTreeNode, TreeRenderer, createRenderedTreeNodeData } from "./presentation-hierarchies-react/itwinui/TreeRenderer.js";
2
+ export { RenderedTreeNode, TreeRenderer, createRenderedTreeNodeData, } from "./presentation-hierarchies-react/itwinui/TreeRenderer.js";
3
3
  //# sourceMappingURL=presentation-hierarchies-react-itwinui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"presentation-hierarchies-react-itwinui.d.ts","sourceRoot":"","sources":["../../src/presentation-hierarchies-react-itwinui.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,0DAA0D,CAAC"}
1
+ {"version":3,"file":"presentation-hierarchies-react-itwinui.d.ts","sourceRoot":"","sources":["../../src/presentation-hierarchies-react-itwinui.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAChG,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,0DAA0D,CAAC"}
@@ -3,5 +3,5 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  export { TreeNodeRenderer } from "./presentation-hierarchies-react/itwinui/TreeNodeRenderer.js";
6
- export { TreeRenderer, createRenderedTreeNodeData } from "./presentation-hierarchies-react/itwinui/TreeRenderer.js";
6
+ export { TreeRenderer, createRenderedTreeNodeData, } from "./presentation-hierarchies-react/itwinui/TreeRenderer.js";
7
7
  //# sourceMappingURL=presentation-hierarchies-react-itwinui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"presentation-hierarchies-react-itwinui.js","sourceRoot":"","sources":["../../src/presentation-hierarchies-react-itwinui.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAChG,OAAO,EAAoB,YAAY,EAAE,0BAA0B,EAAE,MAAM,0DAA0D,CAAC","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\nexport { TreeNodeRenderer } from \"./presentation-hierarchies-react/itwinui/TreeNodeRenderer.js\";\nexport { RenderedTreeNode, TreeRenderer, createRenderedTreeNodeData } from \"./presentation-hierarchies-react/itwinui/TreeRenderer.js\";\n"]}
1
+ {"version":3,"file":"presentation-hierarchies-react-itwinui.js","sourceRoot":"","sources":["../../src/presentation-hierarchies-react-itwinui.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AAChG,OAAO,EAEL,YAAY,EACZ,0BAA0B,GAC3B,MAAM,0DAA0D,CAAC","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\nexport { TreeNodeRenderer } from \"./presentation-hierarchies-react/itwinui/TreeNodeRenderer.js\";\nexport {\n RenderedTreeNode,\n TreeRenderer,\n createRenderedTreeNodeData,\n} from \"./presentation-hierarchies-react/itwinui/TreeRenderer.js\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/presentation-hierarchies-react",
3
- "version": "1.10.0",
3
+ "version": "1.10.2",
4
4
  "description": "React components based on `@itwin/presentation-hierarchies`",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -47,16 +47,16 @@
47
47
  "./package.json": "./package.json"
48
48
  },
49
49
  "dependencies": {
50
- "@itwin/core-bentley": "^5.7.2",
50
+ "@itwin/core-bentley": "^5.8.4",
51
51
  "@itwin/itwinui-icons-react": "^2.11.0",
52
52
  "@itwin/itwinui-illustrations-react": "^2.1.0",
53
53
  "classnames": "^2.5.1",
54
54
  "immer": "^10.2.0",
55
55
  "react-error-boundary": "^4.1.2",
56
56
  "rxjs": "^7.8.2",
57
- "@itwin/presentation-shared": "^1.2.10",
58
- "@itwin/unified-selection": "^1.6.8",
59
- "@itwin/presentation-hierarchies": "^1.7.11"
57
+ "@itwin/presentation-shared": "^1.2.12",
58
+ "@itwin/presentation-hierarchies": "^1.7.13",
59
+ "@itwin/unified-selection": "^1.7.1"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "@itwin/itwinui-react": "^3.0.0",
@@ -69,51 +69,39 @@
69
69
  }
70
70
  },
71
71
  "devDependencies": {
72
- "@itwin/build-tools": "^5.7.2",
73
- "@itwin/eslint-plugin": "5.1.0",
72
+ "@itwin/build-tools": "^5.10.0-dev.1",
73
+ "@itwin/eslint-plugin": "^6.1.0",
74
74
  "@itwin/itwinui-react": "^3.20.2",
75
75
  "@testing-library/dom": "^10.4.1",
76
76
  "@testing-library/react": "^16.3.2",
77
77
  "@testing-library/user-event": "^14.6.1",
78
- "@types/chai": "^5.2.3",
79
- "@types/chai-as-promised": "^8.0.2",
80
- "@types/jsdom": "^21.1.7",
81
- "@types/mocha": "^10.0.10",
82
- "@types/node": "^24.12.0",
78
+ "@types/node": "^24.12.2",
83
79
  "@types/react": "^18.3.28",
84
80
  "@types/react-dom": "^18.3.7",
85
- "@types/sinon": "^17.0.4",
86
- "@types/sinon-chai": "^4.0.0",
87
- "c8": "^10.1.3",
88
- "chai": "^5.3.3",
89
- "chai-as-promised": "^8.0.2",
81
+ "@vitest/coverage-v8": "^4.1.5",
90
82
  "cpx2": "^7.0.2",
91
- "cross-env": "^7.0.3",
92
83
  "eslint": "^9.39.4",
93
84
  "eslint-plugin-react": "^7.37.5",
94
- "global-jsdom": "^26.0.0",
95
- "ignore-styles": "^5.0.1",
96
- "jsdom": "^26.1.0",
97
- "mocha": "^11.7.5",
85
+ "happy-dom": "^20.9.0",
98
86
  "react": "^18.3.1",
99
87
  "react-dom": "^18.3.1",
100
88
  "rimraf": "^6.1.3",
101
- "sinon": "^19.0.5",
102
- "sinon-chai": "^4.0.1",
103
- "typescript": "~5.7.3",
89
+ "typescript": "~6.0.0",
90
+ "vitest": "^4.1.5",
104
91
  "presentation-test-utilities": "^0.0.1"
105
92
  },
106
93
  "scripts": {
107
- "build": "npm run -s build:cjs && npm run -s build:esm",
94
+ "build": "npm run -s typecheck && npm run -s build:cjs && npm run -s build:esm",
108
95
  "build:cjs": "node ../../scripts/package-cjs.mjs ./lib/cjs && npm run -s copy:cjs && tsc -p tsconfig.cjs.json",
109
96
  "build:esm": "npm run -s copy:esm && tsc -p tsconfig.esm.json",
110
97
  "copy:cjs": "cpx \"./src/**/*.{css,json}\" ./lib/cjs",
111
98
  "copy:esm": "cpx \"./src/**/*.{css,json}\" ./lib/esm",
99
+ "typecheck": "tsc -p tsconfig.json --noEmit",
112
100
  "clean": "rimraf lib build",
113
- "cover": "c8 npm -s test",
114
- "lint": "eslint ./src/**/*.{ts,tsx}",
115
- "test:dev": "node --experimental-test-module-mocks --enable-source-maps --import presentation-test-utilities/node-hooks/ignore-styles ./node_modules/mocha/bin/mocha.js --config ./.mocharc.json",
116
- "test": "npm run test:dev -- --parallel --jobs=4",
101
+ "cover": "vitest run --coverage",
102
+ "lint": "eslint \"./src/**/*.{ts,tsx}\"",
103
+ "test": "vitest run",
104
+ "test:watch": "vitest",
117
105
  "extract-api": "betools extract-api --entry=lib/esm/presentation-hierarchies-react --apiReportFolder=./api --apiReportTempFolder=./api/temp --apiSummaryFolder=./api --includeUnexportedApis",
118
106
  "check-internal": "node ../../scripts/checkInternal.js --apiSummary ./api/presentation-hierarchies-react.api.md",
119
107
  "update-extractions": "node ../../scripts/updateExtractions.js --targets=./README.md",