@itwin/tree-widget-react 4.0.0-alpha.1 → 4.0.0-alpha.3

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 (107) hide show
  1. package/lib/esm/tree-widget-react/components/{SelectableTree.scss → TreeWidgetComponentImpl.css} +0 -1
  2. package/lib/esm/tree-widget-react/components/{SelectableTree.d.ts → TreeWidgetComponentImpl.d.ts} +12 -13
  3. package/lib/esm/tree-widget-react/components/{SelectableTree.js → TreeWidgetComponentImpl.js} +8 -7
  4. package/lib/esm/tree-widget-react/components/TreeWidgetComponentImpl.js.map +1 -0
  5. package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.d.ts +4 -6
  6. package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js +6 -8
  7. package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js.map +1 -1
  8. package/lib/esm/tree-widget-react/components/tree-header/ErrorState.d.ts +4 -0
  9. package/lib/esm/tree-widget-react/components/tree-header/ErrorState.js +13 -0
  10. package/lib/esm/tree-widget-react/components/tree-header/ErrorState.js.map +1 -0
  11. package/lib/esm/tree-widget-react/components/tree-header/SearchBox.css +8 -0
  12. package/lib/esm/tree-widget-react/components/tree-header/SearchBox.d.ts +11 -0
  13. package/lib/esm/tree-widget-react/components/tree-header/SearchBox.js +33 -0
  14. package/lib/esm/tree-widget-react/components/tree-header/SearchBox.js.map +1 -0
  15. package/lib/esm/tree-widget-react/components/tree-header/{TreeWithHeader.scss → SelectableTree.css} +8 -8
  16. package/lib/esm/tree-widget-react/components/tree-header/SelectableTree.d.ts +16 -0
  17. package/lib/esm/tree-widget-react/components/tree-header/SelectableTree.js +14 -0
  18. package/lib/esm/tree-widget-react/components/tree-header/SelectableTree.js.map +1 -0
  19. package/lib/esm/tree-widget-react/components/{TreeSelector.scss → tree-header/WidgetHeader.css} +11 -5
  20. package/lib/esm/tree-widget-react/components/{TreeSelector.d.ts → tree-header/WidgetHeader.d.ts} +8 -9
  21. package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js +27 -0
  22. package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js.map +1 -0
  23. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.d.ts +3 -2
  24. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js +3 -2
  25. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js.map +1 -1
  26. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.d.ts +2 -2
  27. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js +5 -5
  28. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -1
  29. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.d.ts +1 -1
  30. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js +3 -9
  31. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -1
  32. package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesVisibilityHandler.d.ts +2 -2
  33. package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.d.ts +5 -3
  34. package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js +10 -6
  35. package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js.map +1 -1
  36. package/lib/esm/tree-widget-react/components/trees/common/components/BaseTreeRenderer.d.ts +7 -0
  37. package/lib/esm/tree-widget-react/components/trees/common/components/BaseTreeRenderer.js +14 -0
  38. package/lib/esm/tree-widget-react/components/trees/common/components/BaseTreeRenderer.js.map +1 -0
  39. package/lib/esm/tree-widget-react/components/trees/common/components/EmptyTreeContent.d.ts +7 -0
  40. package/lib/esm/tree-widget-react/components/trees/common/components/EmptyTreeContent.js +12 -0
  41. package/lib/esm/tree-widget-react/components/trees/common/components/EmptyTreeContent.js.map +1 -0
  42. package/lib/esm/tree-widget-react/components/trees/common/components/ProgressOverlay.d.ts +1 -1
  43. package/lib/esm/tree-widget-react/components/trees/common/components/ProgressOverlay.js +1 -1
  44. package/lib/esm/tree-widget-react/components/trees/common/components/ProgressOverlay.js.map +1 -1
  45. package/lib/esm/tree-widget-react/components/trees/common/components/Tree.d.ts +4 -6
  46. package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js +4 -4
  47. package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js.map +1 -1
  48. package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.d.ts +2 -8
  49. package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.js +22 -23
  50. package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.js.map +1 -1
  51. package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.d.ts +2 -8
  52. package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js +4 -6
  53. package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js.map +1 -1
  54. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.d.ts +3 -3
  55. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js +9 -3
  56. package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js.map +1 -1
  57. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +2 -1
  58. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.js +10 -6
  59. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  60. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +1 -1
  61. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +2 -1
  62. package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  63. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.d.ts +2 -1
  64. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.js +16 -11
  65. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  66. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +1 -1
  67. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.js +2 -1
  68. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  69. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +0 -1
  70. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +3 -38
  71. package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -1
  72. package/lib/esm/tree-widget-react/components/trees/index.d.ts +1 -0
  73. package/lib/esm/tree-widget-react/components/trees/index.js.map +1 -1
  74. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.d.ts +3 -2
  75. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.js +3 -2
  76. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.js.map +1 -1
  77. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.d.ts +4 -3
  78. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js +25 -21
  79. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js.map +1 -1
  80. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.d.ts +1 -1
  81. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js +8 -15
  82. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  83. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.d.ts +0 -1
  84. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js +2 -38
  85. package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -1
  86. package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.d.ts +4 -2
  87. package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js +19 -17
  88. package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js.map +1 -1
  89. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js +2 -1
  90. package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -1
  91. package/lib/esm/tree-widget-react.d.ts +2 -2
  92. package/lib/esm/tree-widget-react.js +1 -2
  93. package/lib/esm/tree-widget-react.js.map +1 -1
  94. package/lib/public/locales/en/TreeWidget.json +5 -2
  95. package/package.json +7 -7
  96. package/lib/esm/tree-widget-react/components/SelectableTree.js.map +0 -1
  97. package/lib/esm/tree-widget-react/components/TreeSelector.js +0 -23
  98. package/lib/esm/tree-widget-react/components/TreeSelector.js.map +0 -1
  99. package/lib/esm/tree-widget-react/components/tree-header/TreeHeader.d.ts +0 -32
  100. package/lib/esm/tree-widget-react/components/tree-header/TreeHeader.js +0 -25
  101. package/lib/esm/tree-widget-react/components/tree-header/TreeHeader.js.map +0 -1
  102. package/lib/esm/tree-widget-react/components/tree-header/TreeHeader.scss +0 -56
  103. package/lib/esm/tree-widget-react/components/tree-header/TreeWithHeader.d.ts +0 -13
  104. package/lib/esm/tree-widget-react/components/tree-header/TreeWithHeader.js +0 -13
  105. package/lib/esm/tree-widget-react/components/tree-header/TreeWithHeader.js.map +0 -1
  106. /package/lib/esm/tree-widget-react/components/{TreeWidgetUiItemsProvider.scss → TreeWidgetUiItemsProvider.css} +0 -0
  107. /package/lib/esm/tree-widget-react/components/trees/common/components/{ProgressOverlay.scss → ProgressOverlay.css} +0 -0
@@ -1,34 +1,33 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
1
  /*---------------------------------------------------------------------------------------------
3
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
4
  *--------------------------------------------------------------------------------------------*/
6
5
  import "./TreeNodeVisibilityButton.css";
7
- import cx from "classnames";
8
- import { IconButton } from "@itwin/itwinui-react/bricks";
9
- import { isPresentationHierarchyNode } from "@itwin/presentation-hierarchies-react";
10
6
  const visibilityShowIcon = new URL("@itwin/itwinui-icons/visibility-show.svg", import.meta.url).href;
11
7
  const visibilityHideIcon = new URL("@itwin/itwinui-icons/visibility-hide.svg", import.meta.url).href;
12
- const visibilityPartialIcon = new URL("@itwin/itwinui-icons/state-inherited-dot.svg", import.meta.url).href;
8
+ const visibilityPartialIcon = new URL("@itwin/itwinui-icons/visibility-partial.svg", import.meta.url).href;
13
9
  /** @internal */
14
- export function TreeItemVisibilityButton({ node, onVisibilityButtonClick, getVisibilityButtonState, ...props }) {
15
- if ("type" in node || !isPresentationHierarchyNode(node)) {
16
- return null;
17
- }
18
- const checkboxState = getVisibilityButtonState(node);
19
- const getIcon = () => {
20
- switch (checkboxState.state) {
21
- case "visible":
22
- return visibilityShowIcon;
23
- case "hidden":
24
- return visibilityHideIcon;
25
- case "partial":
26
- return visibilityPartialIcon;
27
- }
10
+ export function createVisibilityAction({ getVisibilityButtonState, onVisibilityButtonClick, }) {
11
+ return (node) => {
12
+ const state = getVisibilityButtonState(node);
13
+ const getIcon = () => {
14
+ switch (state.state) {
15
+ case "visible":
16
+ return visibilityShowIcon;
17
+ case "hidden":
18
+ return visibilityHideIcon;
19
+ case "partial":
20
+ return visibilityPartialIcon;
21
+ }
22
+ };
23
+ return {
24
+ label: state.tooltip ?? "Determining visibility...",
25
+ action: () => {
26
+ onVisibilityButtonClick(node, state.state);
27
+ },
28
+ show: state.state !== "visible" ? true : undefined,
29
+ icon: getIcon(),
30
+ };
28
31
  };
29
- return (_jsx(IconButton, { ...props, label: checkboxState.tooltip ?? "Determining visibility...", variant: "ghost", className: cx(`tw-tree-node-visibility-button-${checkboxState.state}`, props.className), onClick: (e) => {
30
- e.stopPropagation();
31
- onVisibilityButtonClick(node, checkboxState.state);
32
- }, "aria-disabled": checkboxState.isDisabled, icon: getIcon() }));
33
32
  }
34
33
  //# sourceMappingURL=TreeNodeVisibilityButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNodeVisibilityButton.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAKpF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACrG,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACrG,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,8CAA8C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAwB5G,gBAAgB;AAChB,MAAM,UAAU,wBAAwB,CAAC,EACvC,IAAI,EACJ,uBAAuB,EACvB,wBAAwB,EACxB,GAAG,KAAK,EAC+C;IACvD,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE;QACxD,OAAO,IAAI,CAAC;KACb;IACD,MAAM,aAAa,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,QAAQ,aAAa,CAAC,KAAK,EAAE;YAC3B,KAAK,SAAS;gBACZ,OAAO,kBAAkB,CAAC;YAC5B,KAAK,QAAQ;gBACX,OAAO,kBAAkB,CAAC;YAC5B,KAAK,SAAS;gBACZ,OAAO,qBAAqB,CAAC;SAChC;IACH,CAAC,CAAC;IACF,OAAO,CACL,KAAC,UAAU,OACL,KAAK,EACT,KAAK,EAAE,aAAa,CAAC,OAAO,IAAI,2BAA2B,EAC3D,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CAAC,kCAAkC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,EACvF,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,uBAAuB,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC,mBACc,aAAa,CAAC,UAAU,EACvC,IAAI,EAAE,OAAO,EAAE,GACf,CACH,CAAC;AACJ,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\nimport \"./TreeNodeVisibilityButton.css\";\nimport cx from \"classnames\";\nimport { IconButton } from \"@itwin/itwinui-react/bricks\";\nimport { isPresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\n\nimport type { PresentationHierarchyNode, PresentationTreeNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\n\nconst visibilityShowIcon = new URL(\"@itwin/itwinui-icons/visibility-show.svg\", import.meta.url).href;\nconst visibilityHideIcon = new URL(\"@itwin/itwinui-icons/visibility-hide.svg\", import.meta.url).href;\nconst visibilityPartialIcon = new URL(\"@itwin/itwinui-icons/state-inherited-dot.svg\", import.meta.url).href;\n\n/**\n * Data structure that describes tree node checkbox state.\n * @beta\n */\ninterface TreeItemVisibilityButtonState {\n state: \"visible\" | \"partial\" | \"hidden\";\n isDisabled?: boolean;\n tooltip?: string;\n}\n\n/** @beta */\nexport interface TreeItemVisibilityButtonProps {\n /** Callback that should be invoked when checkbox is clicked. */\n onVisibilityButtonClick: (node: PresentationHierarchyNode, state: TreeItemVisibilityButtonState[\"state\"]) => void;\n /** Callback that should be used to determine current checkbox state. */\n getVisibilityButtonState: (node: PresentationHierarchyNode) => TreeItemVisibilityButtonState;\n}\n\n/** @internal */\ntype TreeNodeCheckboxProps = TreeItemVisibilityButtonProps &\n Omit<ComponentPropsWithoutRef<typeof IconButton>, \"onClick\" | \"aria-disabled\" | \"title\" | \"label\" | \"icon\">;\n\n/** @internal */\nexport function TreeItemVisibilityButton({\n node,\n onVisibilityButtonClick,\n getVisibilityButtonState,\n ...props\n}: TreeNodeCheckboxProps & { node: PresentationTreeNode }) {\n if (\"type\" in node || !isPresentationHierarchyNode(node)) {\n return null;\n }\n const checkboxState = getVisibilityButtonState(node);\n\n const getIcon = () => {\n switch (checkboxState.state) {\n case \"visible\":\n return visibilityShowIcon;\n case \"hidden\":\n return visibilityHideIcon;\n case \"partial\":\n return visibilityPartialIcon;\n }\n };\n return (\n <IconButton\n {...props}\n label={checkboxState.tooltip ?? \"Determining visibility...\"}\n variant={\"ghost\"}\n className={cx(`tw-tree-node-visibility-button-${checkboxState.state}`, props.className)}\n onClick={(e) => {\n e.stopPropagation();\n onVisibilityButtonClick(node, checkboxState.state);\n }}\n aria-disabled={checkboxState.isDisabled}\n icon={getIcon()}\n />\n );\n}\n"]}
1
+ {"version":3,"file":"TreeNodeVisibilityButton.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,gCAAgC,CAAC;AAIxC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACrG,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACrG,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,6CAA6C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAoB3G,gBAAgB;AAChB,MAAM,UAAU,sBAAsB,CAAC,EACrC,wBAAwB,EACxB,uBAAuB,GACO;IAC9B,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,QAAQ,KAAK,CAAC,KAAK,EAAE;gBACnB,KAAK,SAAS;oBACZ,OAAO,kBAAkB,CAAC;gBAC5B,KAAK,QAAQ;oBACX,OAAO,kBAAkB,CAAC;gBAC5B,KAAK,SAAS;oBACZ,OAAO,qBAAqB,CAAC;aAChC;QACH,CAAC,CAAC;QACF,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,2BAA2B;YACnD,MAAM,EAAE,GAAG,EAAE;gBACX,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAClD,IAAI,EAAE,OAAO,EAAE;SAChB,CAAC;IACJ,CAAC,CAAC;AACJ,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\nimport \"./TreeNodeVisibilityButton.css\";\n\nimport type { PresentationHierarchyNode, TreeItemAction } from \"@itwin/presentation-hierarchies-react\";\n\nconst visibilityShowIcon = new URL(\"@itwin/itwinui-icons/visibility-show.svg\", import.meta.url).href;\nconst visibilityHideIcon = new URL(\"@itwin/itwinui-icons/visibility-hide.svg\", import.meta.url).href;\nconst visibilityPartialIcon = new URL(\"@itwin/itwinui-icons/visibility-partial.svg\", import.meta.url).href;\n\n/**\n * Data structure that describes tree node checkbox state.\n * @beta\n */\ninterface TreeItemVisibilityButtonState {\n state: \"visible\" | \"partial\" | \"hidden\";\n isDisabled?: boolean;\n tooltip?: string;\n}\n\n/** @beta */\nexport interface TreeItemVisibilityButtonProps {\n /** Callback that should be invoked when checkbox is clicked. */\n onVisibilityButtonClick: (node: PresentationHierarchyNode, state: TreeItemVisibilityButtonState[\"state\"]) => void;\n /** Callback that should be used to determine current checkbox state. */\n getVisibilityButtonState: (node: PresentationHierarchyNode) => TreeItemVisibilityButtonState;\n}\n\n/** @internal */\nexport function createVisibilityAction({\n getVisibilityButtonState,\n onVisibilityButtonClick,\n}: TreeItemVisibilityButtonProps): (node: PresentationHierarchyNode) => TreeItemAction {\n return (node) => {\n const state = getVisibilityButtonState(node);\n\n const getIcon = () => {\n switch (state.state) {\n case \"visible\":\n return visibilityShowIcon;\n case \"hidden\":\n return visibilityHideIcon;\n case \"partial\":\n return visibilityPartialIcon;\n }\n };\n return {\n label: state.tooltip ?? \"Determining visibility...\",\n action: () => {\n onVisibilityButtonClick(node, state.state);\n },\n show: state.state !== \"visible\" ? true : undefined,\n icon: getIcon(),\n };\n };\n}\n"]}
@@ -1,13 +1,7 @@
1
- /// <reference types="react" />
2
- import { TreeRenderer as PresentationTree } from "@itwin/presentation-hierarchies-react";
3
- import type { TreeItemVisibilityButtonProps } from "./TreeNodeVisibilityButton.js";
4
- /** @beta */
5
- export type TreeRendererProps = React.ComponentPropsWithoutRef<typeof PresentationTree> & {
6
- visibilityButtonProps?: TreeItemVisibilityButtonProps;
7
- };
1
+ import type { BaseTreeRendererProps } from "./BaseTreeRenderer.js";
8
2
  /**
9
3
  * Default renderer for rendering tree data.
10
4
  * @beta
11
5
  */
12
- export declare function TreeRenderer({ rootNodes, onNodeClick, expandNode, visibilityButtonProps, ...props }: TreeRendererProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function TreeRenderer({ actions, ...props }: BaseTreeRendererProps): import("react/jsx-runtime").JSX.Element;
13
7
  //# sourceMappingURL=TreeRenderer.d.ts.map
@@ -4,15 +4,13 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  /* eslint-disable @itwin/no-internal */
7
- import { LocalizationContextProvider, TreeRenderer as PresentationTree } from "@itwin/presentation-hierarchies-react";
8
- import { useHierarchiesLocalization } from "../UseHierarchiesLocalization.js";
9
- import { TreeItemVisibilityButton } from "./TreeNodeVisibilityButton.js";
7
+ import { createFilterAction } from "@itwin/presentation-hierarchies-react";
8
+ import { BaseTreeRenderer } from "./BaseTreeRenderer.js";
10
9
  /**
11
10
  * Default renderer for rendering tree data.
12
11
  * @beta
13
12
  */
14
- export function TreeRenderer({ rootNodes, onNodeClick, expandNode, visibilityButtonProps, ...props }) {
15
- const localizedStrings = useHierarchiesLocalization();
16
- return (_jsx(LocalizationContextProvider, { localizedStrings: localizedStrings, children: _jsx(PresentationTree, { ...props, onNodeClick: onNodeClick, expandNode: expandNode, rootNodes: rootNodes, actionsRenderer: visibilityButtonProps ? (node) => _jsx(TreeItemVisibilityButton, { ...visibilityButtonProps, node: node }) : undefined }) }));
13
+ export function TreeRenderer({ actions, ...props }) {
14
+ return (_jsx(BaseTreeRenderer, { ...props, actions: [createFilterAction({ onFilter: props.onFilterClick, getHierarchyLevelDetails: props.getHierarchyLevelDetails }), ...(actions ? actions : [])] }));
17
15
  }
18
16
  //# sourceMappingURL=TreeRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TreeRenderer.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/TreeRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG,uCAAuC;AAEvC,OAAO,EAAE,2BAA2B,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACtH,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAMzE;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,KAAK,EAAqB;IACrH,MAAM,gBAAgB,GAAG,0BAA0B,EAAE,CAAC;IACtD,OAAO,CACL,KAAC,2BAA2B,IAAC,gBAAgB,EAAE,gBAAgB,YAC7D,KAAC,gBAAgB,OACX,KAAK,EACT,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAC,wBAAwB,OAAK,qBAAqB,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC,CAAC,CAAC,SAAS,GAClI,GAC0B,CAC/B,CAAC;AACJ,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/* eslint-disable @itwin/no-internal */\n\nimport { LocalizationContextProvider, TreeRenderer as PresentationTree } from \"@itwin/presentation-hierarchies-react\";\nimport { useHierarchiesLocalization } from \"../UseHierarchiesLocalization.js\";\nimport { TreeItemVisibilityButton } from \"./TreeNodeVisibilityButton.js\";\n\nimport type { TreeItemVisibilityButtonProps } from \"./TreeNodeVisibilityButton.js\";\n/** @beta */\nexport type TreeRendererProps = React.ComponentPropsWithoutRef<typeof PresentationTree> & { visibilityButtonProps?: TreeItemVisibilityButtonProps };\n\n/**\n * Default renderer for rendering tree data.\n * @beta\n */\nexport function TreeRenderer({ rootNodes, onNodeClick, expandNode, visibilityButtonProps, ...props }: TreeRendererProps) {\n const localizedStrings = useHierarchiesLocalization();\n return (\n <LocalizationContextProvider localizedStrings={localizedStrings}>\n <PresentationTree\n {...props}\n onNodeClick={onNodeClick}\n expandNode={expandNode}\n rootNodes={rootNodes}\n actionsRenderer={visibilityButtonProps ? (node) => <TreeItemVisibilityButton {...visibilityButtonProps} node={node} /> : undefined}\n />\n </LocalizationContextProvider>\n );\n}\n"]}
1
+ {"version":3,"file":"TreeRenderer.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/TreeRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG,uCAAuC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAIzD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAyB;IACvE,OAAO,CACL,KAAC,gBAAgB,OACX,KAAK,EACT,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,wBAAwB,EAAE,KAAK,CAAC,wBAAwB,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GACvJ,CACH,CAAC;AACJ,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/* eslint-disable @itwin/no-internal */\n\nimport { createFilterAction } from \"@itwin/presentation-hierarchies-react\";\nimport { BaseTreeRenderer } from \"./BaseTreeRenderer.js\";\n\nimport type { BaseTreeRendererProps } from \"./BaseTreeRenderer.js\";\n\n/**\n * Default renderer for rendering tree data.\n * @beta\n */\nexport function TreeRenderer({ actions, ...props }: BaseTreeRendererProps) {\n return (\n <BaseTreeRenderer\n {...props}\n actions={[createFilterAction({ onFilter: props.onFilterClick, getHierarchyLevelDetails: props.getHierarchyLevelDetails }), ...(actions ? actions : [])]}\n />\n );\n}\n"]}
@@ -1,10 +1,10 @@
1
- import type { TreeRendererProps } from "./TreeRenderer.js";
1
+ import type { BaseTreeRendererProps } from "./BaseTreeRenderer.js";
2
2
  import type { TreeItemVisibilityButtonProps } from "./TreeNodeVisibilityButton.js";
3
3
  /** @beta */
4
- export type VisibilityTreeRendererProps = TreeRendererProps & TreeItemVisibilityButtonProps;
4
+ export type VisibilityTreeRendererProps = BaseTreeRendererProps & TreeItemVisibilityButtonProps;
5
5
  /**
6
6
  * Tree renderer that renders tree nodes with eye checkboxes for controlling visibility of instances represented by tree nodes.
7
7
  * @beta
8
8
  */
9
- export declare function VisibilityTreeRenderer({ getVisibilityButtonState, onVisibilityButtonClick: onClick, ...props }: VisibilityTreeRendererProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function VisibilityTreeRenderer({ getVisibilityButtonState, onVisibilityButtonClick: onClick, actions, ...props }: VisibilityTreeRendererProps): import("react/jsx-runtime").JSX.Element;
10
10
  //# sourceMappingURL=VisibilityTreeRenderer.d.ts.map
@@ -5,19 +5,25 @@ import { jsx as _jsx } from "react/jsx-runtime";
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  /* eslint-disable @itwin/no-internal */
7
7
  import { useMemo } from "react";
8
- import { TreeRenderer } from "./TreeRenderer.js";
8
+ import { createFilterAction } from "@itwin/presentation-hierarchies-react";
9
+ import { BaseTreeRenderer } from "./BaseTreeRenderer.js";
10
+ import { createVisibilityAction } from "./TreeNodeVisibilityButton.js";
9
11
  import { useVisibilityButtonHandler } from "./UseVisibilityButtonHandler.js";
10
12
  /**
11
13
  * Tree renderer that renders tree nodes with eye checkboxes for controlling visibility of instances represented by tree nodes.
12
14
  * @beta
13
15
  */
14
- export function VisibilityTreeRenderer({ getVisibilityButtonState, onVisibilityButtonClick: onClick, ...props }) {
16
+ export function VisibilityTreeRenderer({ getVisibilityButtonState, onVisibilityButtonClick: onClick, actions, ...props }) {
15
17
  const { onVisibilityButtonClick } = useVisibilityButtonHandler({ rootNodes: props.rootNodes, isNodeSelected: props.isNodeSelected, onClick });
16
18
  const visibilityButtonProps = useMemo(() => ({
17
19
  variant: "eyeball",
18
20
  getVisibilityButtonState,
19
21
  onVisibilityButtonClick,
20
22
  }), [getVisibilityButtonState, onVisibilityButtonClick]);
21
- return _jsx(TreeRenderer, { ...props, visibilityButtonProps: visibilityButtonProps });
23
+ return (_jsx(BaseTreeRenderer, { ...props, actions: [
24
+ ...(visibilityButtonProps ? [createVisibilityAction(visibilityButtonProps)] : []),
25
+ createFilterAction({ onFilter: props.onFilterClick, getHierarchyLevelDetails: props.getHierarchyLevelDetails }),
26
+ ...(actions ? actions : []),
27
+ ] }));
22
28
  }
23
29
  //# sourceMappingURL=VisibilityTreeRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityTreeRenderer.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG,uCAAuC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAO7E;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,OAAO,EAAE,GAAG,KAAK,EAA+B;IAC1I,MAAM,EAAE,uBAAuB,EAAE,GAAG,0BAA0B,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9I,MAAM,qBAAqB,GAAkC,OAAO,CAClE,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,SAAS;QAClB,wBAAwB;QACxB,uBAAuB;KACxB,CAAC,EACF,CAAC,wBAAwB,EAAE,uBAAuB,CAAC,CACpD,CAAC;IAEF,OAAO,KAAC,YAAY,OAAK,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,GAAI,CAAC;AACnF,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/* eslint-disable @itwin/no-internal */\n\nimport { useMemo } from \"react\";\nimport { TreeRenderer } from \"./TreeRenderer.js\";\nimport { useVisibilityButtonHandler } from \"./UseVisibilityButtonHandler.js\";\n\nimport type { TreeRendererProps } from \"./TreeRenderer.js\";\nimport type { TreeItemVisibilityButtonProps } from \"./TreeNodeVisibilityButton.js\";\n/** @beta */\nexport type VisibilityTreeRendererProps = TreeRendererProps & TreeItemVisibilityButtonProps;\n\n/**\n * Tree renderer that renders tree nodes with eye checkboxes for controlling visibility of instances represented by tree nodes.\n * @beta\n */\nexport function VisibilityTreeRenderer({ getVisibilityButtonState, onVisibilityButtonClick: onClick, ...props }: VisibilityTreeRendererProps) {\n const { onVisibilityButtonClick } = useVisibilityButtonHandler({ rootNodes: props.rootNodes, isNodeSelected: props.isNodeSelected, onClick });\n const visibilityButtonProps: TreeItemVisibilityButtonProps = useMemo(\n () => ({\n variant: \"eyeball\",\n getVisibilityButtonState,\n onVisibilityButtonClick,\n }),\n [getVisibilityButtonState, onVisibilityButtonClick],\n );\n\n return <TreeRenderer {...props} visibilityButtonProps={visibilityButtonProps} />;\n}\n"]}
1
+ {"version":3,"file":"VisibilityTreeRenderer.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG,uCAAuC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAO7E;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAA+B;IACnJ,MAAM,EAAE,uBAAuB,EAAE,GAAG,0BAA0B,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9I,MAAM,qBAAqB,GAAkC,OAAO,CAClE,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,SAAS;QAClB,wBAAwB;QACxB,uBAAuB;KACxB,CAAC,EACF,CAAC,wBAAwB,EAAE,uBAAuB,CAAC,CACpD,CAAC;IAEF,OAAO,CACL,KAAC,gBAAgB,OACX,KAAK,EACT,OAAO,EAAE;YACP,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,kBAAkB,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,wBAAwB,EAAE,KAAK,CAAC,wBAAwB,EAAE,CAAC;YAC/G,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5B,GACD,CACH,CAAC;AACJ,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/* eslint-disable @itwin/no-internal */\n\nimport { useMemo } from \"react\";\nimport { createFilterAction } from \"@itwin/presentation-hierarchies-react\";\nimport { BaseTreeRenderer } from \"./BaseTreeRenderer.js\";\nimport { createVisibilityAction } from \"./TreeNodeVisibilityButton.js\";\nimport { useVisibilityButtonHandler } from \"./UseVisibilityButtonHandler.js\";\n\nimport type { BaseTreeRendererProps } from \"./BaseTreeRenderer.js\";\nimport type { TreeItemVisibilityButtonProps } from \"./TreeNodeVisibilityButton.js\";\n/** @beta */\nexport type VisibilityTreeRendererProps = BaseTreeRendererProps & TreeItemVisibilityButtonProps;\n\n/**\n * Tree renderer that renders tree nodes with eye checkboxes for controlling visibility of instances represented by tree nodes.\n * @beta\n */\nexport function VisibilityTreeRenderer({ getVisibilityButtonState, onVisibilityButtonClick: onClick, actions, ...props }: VisibilityTreeRendererProps) {\n const { onVisibilityButtonClick } = useVisibilityButtonHandler({ rootNodes: props.rootNodes, isNodeSelected: props.isNodeSelected, onClick });\n const visibilityButtonProps: TreeItemVisibilityButtonProps = useMemo(\n () => ({\n variant: \"eyeball\",\n getVisibilityButtonState,\n onVisibilityButtonClick,\n }),\n [getVisibilityButtonState, onVisibilityButtonClick],\n );\n\n return (\n <BaseTreeRenderer\n {...props}\n actions={[\n ...(visibilityButtonProps ? [createVisibilityAction(visibilityButtonProps)] : []),\n createFilterAction({ onFilter: props.onFilterClick, getHierarchyLevelDetails: props.getHierarchyLevelDetails }),\n ...(actions ? actions : []),\n ]}\n />\n );\n}\n"]}
@@ -1,6 +1,7 @@
1
+ import type { BaseTreeRendererProps } from "../common/components/BaseTreeRenderer.js";
1
2
  import type { TreeProps } from "../common/components/Tree.js";
2
3
  /** @beta */
3
- export type ExternalSourcesTreeProps = Pick<TreeProps, "imodel" | "getSchemaContext" | "selectionStorage" | "density" | "selectionMode"> & {
4
+ export type ExternalSourcesTreeProps = Pick<TreeProps, "imodel" | "getSchemaContext" | "selectionStorage" | "selectionMode" | "emptyTreeContent"> & Pick<BaseTreeRendererProps, "actions"> & {
4
5
  hierarchyLevelConfig?: {
5
6
  sizeLimit?: number;
6
7
  };
@@ -3,31 +3,35 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
- import { SvgDetails, SvgDocument, SvgItem } from "@itwin/itwinui-icons-react";
6
+ import { EmptyTreeContent } from "../common/components/EmptyTreeContent.js";
7
7
  import { Tree } from "../common/components/Tree.js";
8
8
  import { TreeRenderer } from "../common/components/TreeRenderer.js";
9
9
  import { ExternalSourcesTreeComponent } from "./ExternalSourcesTreeComponent.js";
10
10
  import { ExternalSourcesTreeDefinition } from "./ExternalSourcesTreeDefinition.js";
11
11
  /** @beta */
12
12
  export function ExternalSourcesTree(props) {
13
- return (_jsx(Tree, { ...props, treeName: ExternalSourcesTreeComponent.id, getHierarchyDefinition: getDefinitionsProvider, selectionMode: props.selectionMode ?? "none", treeRenderer: (treeProps) => _jsx(TreeRenderer, { ...treeProps, getIcon: getIcon }) }));
13
+ return (_jsx(Tree, { emptyTreeContent: _jsx(EmptyTreeContent, { icon: documentIcon }), ...props, treeName: ExternalSourcesTreeComponent.id, getHierarchyDefinition: getDefinitionsProvider, selectionMode: props.selectionMode ?? "none", treeRenderer: (treeProps) => _jsx(TreeRenderer, { ...treeProps, getIcon: getIcon }) }));
14
14
  }
15
15
  const getDefinitionsProvider = (props) => {
16
16
  return new ExternalSourcesTreeDefinition(props);
17
17
  };
18
+ const ecSchemaIcon = new URL("@itwin/itwinui-icons/selection-children.svg", import.meta.url).href;
19
+ const elementIcon = new URL("@itwin/itwinui-icons/bis-element.svg", import.meta.url).href;
20
+ const documentIcon = new URL("@itwin/itwinui-icons/document.svg", import.meta.url).href;
21
+ const classIcon = new URL("@itwin/itwinui-icons/bis-class.svg", import.meta.url).href;
18
22
  function getIcon(node) {
19
23
  if (node.extendedData?.imageId === undefined) {
20
24
  return undefined;
21
25
  }
22
26
  switch (node.extendedData.imageId) {
23
27
  case "icon-item":
24
- return _jsx(SvgItem, {});
28
+ return elementIcon;
25
29
  case "icon-ec-class":
26
- return _jsx(SvgItem, {});
30
+ return classIcon;
27
31
  case "icon-document":
28
- return _jsx(SvgDocument, {});
32
+ return documentIcon;
29
33
  case "icon-ec-schema":
30
- return _jsx(SvgDetails, {});
34
+ return ecSchemaIcon;
31
35
  }
32
36
  return undefined;
33
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalSourcesTree.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAanF,YAAY;AACZ,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,OAAO,CACL,KAAC,IAAI,OACC,KAAK,EACT,QAAQ,EAAE,4BAA4B,CAAC,EAAE,EACzC,sBAAsB,EAAE,sBAAsB,EAC9C,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,MAAM,EAC5C,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAC,YAAY,OAAK,SAAS,EAAE,OAAO,EAAE,OAAO,GAAI,GAC9E,CACH,CAAC;AACJ,CAAC;AAED,MAAM,sBAAsB,GAAwC,CAAC,KAAK,EAAE,EAAE;IAC5E,OAAO,IAAI,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,SAAS,OAAO,CAAC,IAA+B;IAC9C,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO,KAAK,SAAS,EAAE;QAC5C,OAAO,SAAS,CAAC;KAClB;IAED,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QACjC,KAAK,WAAW;YACd,OAAO,KAAC,OAAO,KAAG,CAAC;QACrB,KAAK,eAAe;YAClB,OAAO,KAAC,OAAO,KAAG,CAAC;QACrB,KAAK,eAAe;YAClB,OAAO,KAAC,WAAW,KAAG,CAAC;QACzB,KAAK,gBAAgB;YACnB,OAAO,KAAC,UAAU,KAAG,CAAC;KACzB;IAED,OAAO,SAAS,CAAC;AACnB,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\nimport { SvgDetails, SvgDocument, SvgItem } from \"@itwin/itwinui-icons-react\";\nimport { Tree } from \"../common/components/Tree.js\";\nimport { TreeRenderer } from \"../common/components/TreeRenderer.js\";\nimport { ExternalSourcesTreeComponent } from \"./ExternalSourcesTreeComponent.js\";\nimport { ExternalSourcesTreeDefinition } from \"./ExternalSourcesTreeDefinition.js\";\n\nimport type { TreeProps } from \"../common/components/Tree.js\";\nimport type { ReactElement } from \"react\";\nimport type { PresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\n\n/** @beta */\nexport type ExternalSourcesTreeProps = Pick<TreeProps, \"imodel\" | \"getSchemaContext\" | \"selectionStorage\" | \"density\" | \"selectionMode\"> & {\n hierarchyLevelConfig?: {\n sizeLimit?: number;\n };\n};\n\n/** @beta */\nexport function ExternalSourcesTree(props: ExternalSourcesTreeProps) {\n return (\n <Tree\n {...props}\n treeName={ExternalSourcesTreeComponent.id}\n getHierarchyDefinition={getDefinitionsProvider}\n selectionMode={props.selectionMode ?? \"none\"}\n treeRenderer={(treeProps) => <TreeRenderer {...treeProps} getIcon={getIcon} />}\n />\n );\n}\n\nconst getDefinitionsProvider: TreeProps[\"getHierarchyDefinition\"] = (props) => {\n return new ExternalSourcesTreeDefinition(props);\n};\n\nfunction getIcon(node: PresentationHierarchyNode): ReactElement | undefined {\n if (node.extendedData?.imageId === undefined) {\n return undefined;\n }\n\n switch (node.extendedData.imageId) {\n case \"icon-item\":\n return <SvgItem />;\n case \"icon-ec-class\":\n return <SvgItem />;\n case \"icon-document\":\n return <SvgDocument />;\n case \"icon-ec-schema\":\n return <SvgDetails />;\n }\n\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"ExternalSourcesTree.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAcnF,YAAY;AACZ,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,OAAO,CACL,KAAC,IAAI,IACH,gBAAgB,EAAE,KAAC,gBAAgB,IAAC,IAAI,EAAE,YAAY,GAAI,KACtD,KAAK,EACT,QAAQ,EAAE,4BAA4B,CAAC,EAAE,EACzC,sBAAsB,EAAE,sBAAsB,EAC9C,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,MAAM,EAC5C,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAC,YAAY,OAAK,SAAS,EAAE,OAAO,EAAE,OAAO,GAAI,GAC9E,CACH,CAAC;AACJ,CAAC;AAED,MAAM,sBAAsB,GAAwC,CAAC,KAAK,EAAE,EAAE;IAC5E,OAAO,IAAI,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,6CAA6C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAClG,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAC1F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACxF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAEtF,SAAS,OAAO,CAAC,IAA+B;IAC9C,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO,KAAK,SAAS,EAAE;QAC5C,OAAO,SAAS,CAAC;KAClB;IAED,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QACjC,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,eAAe;YAClB,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe;YAClB,OAAO,YAAY,CAAC;QACtB,KAAK,gBAAgB;YACnB,OAAO,YAAY,CAAC;KACvB;IAED,OAAO,SAAS,CAAC;AACnB,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\n\nimport { EmptyTreeContent } from \"../common/components/EmptyTreeContent.js\";\nimport { Tree } from \"../common/components/Tree.js\";\nimport { TreeRenderer } from \"../common/components/TreeRenderer.js\";\nimport { ExternalSourcesTreeComponent } from \"./ExternalSourcesTreeComponent.js\";\nimport { ExternalSourcesTreeDefinition } from \"./ExternalSourcesTreeDefinition.js\";\n\nimport type { PresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { BaseTreeRendererProps } from \"../common/components/BaseTreeRenderer.js\";\nimport type { TreeProps } from \"../common/components/Tree.js\";\n\n/** @beta */\nexport type ExternalSourcesTreeProps = Pick<TreeProps, \"imodel\" | \"getSchemaContext\" | \"selectionStorage\" | \"selectionMode\" | \"emptyTreeContent\"> &\n Pick<BaseTreeRendererProps, \"actions\"> & {\n hierarchyLevelConfig?: {\n sizeLimit?: number;\n };\n };\n\n/** @beta */\nexport function ExternalSourcesTree(props: ExternalSourcesTreeProps) {\n return (\n <Tree\n emptyTreeContent={<EmptyTreeContent icon={documentIcon} />}\n {...props}\n treeName={ExternalSourcesTreeComponent.id}\n getHierarchyDefinition={getDefinitionsProvider}\n selectionMode={props.selectionMode ?? \"none\"}\n treeRenderer={(treeProps) => <TreeRenderer {...treeProps} getIcon={getIcon} />}\n />\n );\n}\n\nconst getDefinitionsProvider: TreeProps[\"getHierarchyDefinition\"] = (props) => {\n return new ExternalSourcesTreeDefinition(props);\n};\n\nconst ecSchemaIcon = new URL(\"@itwin/itwinui-icons/selection-children.svg\", import.meta.url).href;\nconst elementIcon = new URL(\"@itwin/itwinui-icons/bis-element.svg\", import.meta.url).href;\nconst documentIcon = new URL(\"@itwin/itwinui-icons/document.svg\", import.meta.url).href;\nconst classIcon = new URL(\"@itwin/itwinui-icons/bis-class.svg\", import.meta.url).href;\n\nfunction getIcon(node: PresentationHierarchyNode): string | undefined {\n if (node.extendedData?.imageId === undefined) {\n return undefined;\n }\n\n switch (node.extendedData.imageId) {\n case \"icon-item\":\n return elementIcon;\n case \"icon-ec-class\":\n return classIcon;\n case \"icon-document\":\n return documentIcon;\n case \"icon-ec-schema\":\n return ecSchemaIcon;\n }\n\n return undefined;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { ExternalSourcesTreeProps } from "./ExternalSourcesTree.js";
2
2
  /** @beta */
3
- interface ExternalSourcesTreeComponentProps extends Pick<ExternalSourcesTreeProps, "getSchemaContext" | "selectionStorage" | "selectionMode" | "density" | "hierarchyLevelConfig" | "selectionMode"> {
3
+ interface ExternalSourcesTreeComponentProps extends Pick<ExternalSourcesTreeProps, "getSchemaContext" | "selectionStorage" | "selectionMode" | "hierarchyLevelConfig" | "selectionMode" | "emptyTreeContent" | "actions"> {
4
4
  onPerformanceMeasured?: (featureId: string, duration: number) => void;
5
5
  onFeatureUsed?: (feature: string) => void;
6
6
  }
@@ -5,6 +5,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  import { useActiveIModelConnection } from "@itwin/appui-react";
7
7
  import { TreeWidget } from "../../../TreeWidget.js";
8
+ import { SelectableTree } from "../../tree-header/SelectableTree.js";
8
9
  import { TelemetryContextProvider } from "../common/UseTelemetryContext.js";
9
10
  import { ExternalSourcesTree } from "./ExternalSourcesTree.js";
10
11
  /**
@@ -16,7 +17,7 @@ export const ExternalSourcesTreeComponent = ({ onFeatureUsed, onPerformanceMeasu
16
17
  if (!imodel) {
17
18
  return null;
18
19
  }
19
- return (_jsx(TelemetryContextProvider, { componentIdentifier: ExternalSourcesTreeComponent.id, onFeatureUsed: onFeatureUsed, onPerformanceMeasured: onPerformanceMeasured, children: _jsx(ExternalSourcesTree, { ...props, imodel: imodel }) }));
20
+ return (_jsx(TelemetryContextProvider, { componentIdentifier: ExternalSourcesTreeComponent.id, onFeatureUsed: onFeatureUsed, onPerformanceMeasured: onPerformanceMeasured, children: _jsx(SelectableTree, { children: _jsx(ExternalSourcesTree, { ...props, imodel: imodel }) }) }));
20
21
  };
21
22
  /**
22
23
  * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalSourcesTreeComponent.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAW/D;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,KAAK,EAAqC,EAAE,EAAE;IACpI,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;IAE3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,KAAC,wBAAwB,IAAC,mBAAmB,EAAE,4BAA4B,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,YACxJ,KAAC,mBAAmB,OAAK,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,GACzB,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,4BAA4B,CAAC,EAAE,GAAG,0BAA0B,CAAC;AAE7D;;;GAGG;AACH,4BAA4B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,2BAA2B,CAAC,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\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget.js\";\nimport { TelemetryContextProvider } from \"../common/UseTelemetryContext.js\";\nimport { ExternalSourcesTree } from \"./ExternalSourcesTree.js\";\n\nimport type { ExternalSourcesTreeProps } from \"./ExternalSourcesTree.js\";\n\n/** @beta */\ninterface ExternalSourcesTreeComponentProps\n extends Pick<ExternalSourcesTreeProps, \"getSchemaContext\" | \"selectionStorage\" | \"selectionMode\" | \"density\" | \"hierarchyLevelConfig\" | \"selectionMode\"> {\n onPerformanceMeasured?: (featureId: string, duration: number) => void;\n onFeatureUsed?: (feature: string) => void;\n}\n\n/**\n * A component that renders `ExternalSourcesTree`.\n * @beta\n */\nexport const ExternalSourcesTreeComponent = ({ onFeatureUsed, onPerformanceMeasured, ...props }: ExternalSourcesTreeComponentProps) => {\n const imodel = useActiveIModelConnection();\n\n if (!imodel) {\n return null;\n }\n\n return (\n <TelemetryContextProvider componentIdentifier={ExternalSourcesTreeComponent.id} onFeatureUsed={onFeatureUsed} onPerformanceMeasured={onPerformanceMeasured}>\n <ExternalSourcesTree {...props} imodel={imodel} />\n </TelemetryContextProvider>\n );\n};\n\n/**\n * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nExternalSourcesTreeComponent.id = \"external-sources-tree-v2\";\n\n/**\n * Label of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nExternalSourcesTreeComponent.getLabel = () => TreeWidget.translate(\"externalSourcesTree.label\");\n"]}
1
+ {"version":3,"file":"ExternalSourcesTreeComponent.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAa/D;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,KAAK,EAAqC,EAAE,EAAE;IACpI,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;IAE3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,KAAC,wBAAwB,IAAC,mBAAmB,EAAE,4BAA4B,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,YACxJ,KAAC,cAAc,cACb,KAAC,mBAAmB,OAAK,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,GACnC,GACQ,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,4BAA4B,CAAC,EAAE,GAAG,0BAA0B,CAAC;AAE7D;;;GAGG;AACH,4BAA4B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,2BAA2B,CAAC,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\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget.js\";\nimport { SelectableTree } from \"../../tree-header/SelectableTree.js\";\nimport { TelemetryContextProvider } from \"../common/UseTelemetryContext.js\";\nimport { ExternalSourcesTree } from \"./ExternalSourcesTree.js\";\n\nimport type { ExternalSourcesTreeProps } from \"./ExternalSourcesTree.js\";\n/** @beta */\ninterface ExternalSourcesTreeComponentProps\n extends Pick<\n ExternalSourcesTreeProps,\n \"getSchemaContext\" | \"selectionStorage\" | \"selectionMode\" | \"hierarchyLevelConfig\" | \"selectionMode\" | \"emptyTreeContent\" | \"actions\"\n > {\n onPerformanceMeasured?: (featureId: string, duration: number) => void;\n onFeatureUsed?: (feature: string) => void;\n}\n\n/**\n * A component that renders `ExternalSourcesTree`.\n * @beta\n */\nexport const ExternalSourcesTreeComponent = ({ onFeatureUsed, onPerformanceMeasured, ...props }: ExternalSourcesTreeComponentProps) => {\n const imodel = useActiveIModelConnection();\n\n if (!imodel) {\n return null;\n }\n\n return (\n <TelemetryContextProvider componentIdentifier={ExternalSourcesTreeComponent.id} onFeatureUsed={onFeatureUsed} onPerformanceMeasured={onPerformanceMeasured}>\n <SelectableTree>\n <ExternalSourcesTree {...props} imodel={imodel} />\n </SelectableTree>\n </TelemetryContextProvider>\n );\n};\n\n/**\n * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nExternalSourcesTreeComponent.id = \"external-sources-tree-v2\";\n\n/**\n * Label of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nExternalSourcesTreeComponent.getLabel = () => TreeWidget.translate(\"externalSourcesTree.label\");\n"]}
@@ -1,6 +1,7 @@
1
+ import type { BaseTreeRendererProps } from "../common/components/BaseTreeRenderer.js";
1
2
  import type { TreeProps } from "../common/components/Tree.js";
2
3
  /** @beta */
3
- export type IModelContentTreeProps = Pick<TreeProps, "imodel" | "getSchemaContext" | "selectionStorage" | "density" | "selectionMode"> & {
4
+ export type IModelContentTreeProps = Pick<TreeProps, "imodel" | "getSchemaContext" | "selectionStorage" | "selectionMode" | "emptyTreeContent"> & Pick<BaseTreeRendererProps, "actions"> & {
4
5
  hierarchyLevelConfig?: {
5
6
  sizeLimit?: number;
6
7
  };
@@ -3,7 +3,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
- import { SvgFolder, SvgGroup, SvgHierarchyTree, SvgImodelHollow, SvgItem, SvgLayers, SvgModel } from "@itwin/itwinui-icons-react";
6
+ import { EmptyTreeContent } from "../common/components/EmptyTreeContent.js";
7
7
  import { Tree } from "../common/components/Tree.js";
8
8
  import { TreeRenderer } from "../common/components/TreeRenderer.js";
9
9
  import { IModelContentTreeComponent } from "./IModelContentTreeComponent.js";
@@ -11,7 +11,7 @@ import { IModelContentTreeDefinition } from "./IModelContentTreeDefinition.js";
11
11
  import { IModelContentTreeIdsCache } from "./internal/IModelContentTreeIdsCache.js";
12
12
  /** @beta */
13
13
  export function IModelContentTree(props) {
14
- return (_jsx(Tree, { ...props, treeName: IModelContentTreeComponent.id, getHierarchyDefinition: getDefinitionsProvider, selectionMode: props.selectionMode ?? "extended", treeRenderer: (treeProps) => _jsx(TreeRenderer, { ...treeProps, getIcon: getIcon }) }));
14
+ return (_jsx(Tree, { emptyTreeContent: _jsx(EmptyTreeContent, { icon: modelIcon }), ...props, treeName: IModelContentTreeComponent.id, getHierarchyDefinition: getDefinitionsProvider, selectionMode: props.selectionMode ?? "extended", treeRenderer: (treeProps) => _jsx(TreeRenderer, { ...treeProps, getIcon: getIcon }) }));
15
15
  }
16
16
  const getDefinitionsProvider = ({ imodelAccess }) => {
17
17
  return new IModelContentTreeDefinition({
@@ -19,27 +19,32 @@ const getDefinitionsProvider = ({ imodelAccess }) => {
19
19
  idsCache: new IModelContentTreeIdsCache(imodelAccess),
20
20
  });
21
21
  };
22
+ const subjectIcon = new URL("@itwin/itwinui-icons/bis-subject.svg", import.meta.url).href;
23
+ const classIcon = new URL("@itwin/itwinui-icons/bis-class.svg", import.meta.url).href;
24
+ const modelIcon = new URL("@itwin/itwinui-icons/model-cube.svg", import.meta.url).href;
25
+ const categoryIcon = new URL("@itwin/itwinui-icons/bis-category-3d.svg", import.meta.url).href;
26
+ const elementIcon = new URL("@itwin/itwinui-icons/bis-element.svg", import.meta.url).href;
27
+ const hierarchyTreeIcon = new URL("@itwin/itwinui-icons/selection-children.svg", import.meta.url).href;
28
+ const groupIcon = new URL("@itwin/itwinui-icons/group.svg", import.meta.url).href;
22
29
  function getIcon(node) {
23
30
  if (node.extendedData?.imageId === undefined) {
24
31
  return undefined;
25
32
  }
26
33
  switch (node.extendedData.imageId) {
27
34
  case "icon-layers":
28
- return _jsx(SvgLayers, {});
35
+ return categoryIcon;
29
36
  case "icon-item":
30
- return _jsx(SvgItem, {});
37
+ return elementIcon;
31
38
  case "icon-ec-class":
32
- return _jsx(SvgItem, {});
33
- case "icon-imodel-hollow-2":
34
- return _jsx(SvgImodelHollow, {});
39
+ return classIcon;
35
40
  case "icon-folder":
36
- return _jsx(SvgFolder, {});
41
+ return subjectIcon;
37
42
  case "icon-model":
38
- return _jsx(SvgModel, {});
43
+ return modelIcon;
39
44
  case "icon-hierarchy-tree":
40
- return _jsx(SvgHierarchyTree, {});
45
+ return hierarchyTreeIcon;
41
46
  case "icon-group":
42
- return _jsx(SvgGroup, {});
47
+ return groupIcon;
43
48
  }
44
49
  return undefined;
45
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IModelContentTree.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAClI,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAapF,YAAY;AACZ,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,OAAO,CACL,KAAC,IAAI,OACC,KAAK,EACT,QAAQ,EAAE,0BAA0B,CAAC,EAAE,EACvC,sBAAsB,EAAE,sBAAsB,EAC9C,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,UAAU,EAChD,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAC,YAAY,OAAK,SAAS,EAAE,OAAO,EAAE,OAAO,GAAI,GAC9E,CACH,CAAC;AACJ,CAAC;AAED,MAAM,sBAAsB,GAAwC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;IACvF,OAAO,IAAI,2BAA2B,CAAC;QACrC,YAAY;QACZ,QAAQ,EAAE,IAAI,yBAAyB,CAAC,YAAY,CAAC;KACtD,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,SAAS,OAAO,CAAC,IAA+B;IAC9C,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO,KAAK,SAAS,EAAE;QAC5C,OAAO,SAAS,CAAC;KAClB;IAED,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QACjC,KAAK,aAAa;YAChB,OAAO,KAAC,SAAS,KAAG,CAAC;QACvB,KAAK,WAAW;YACd,OAAO,KAAC,OAAO,KAAG,CAAC;QACrB,KAAK,eAAe;YAClB,OAAO,KAAC,OAAO,KAAG,CAAC;QACrB,KAAK,sBAAsB;YACzB,OAAO,KAAC,eAAe,KAAG,CAAC;QAC7B,KAAK,aAAa;YAChB,OAAO,KAAC,SAAS,KAAG,CAAC;QACvB,KAAK,YAAY;YACf,OAAO,KAAC,QAAQ,KAAG,CAAC;QACtB,KAAK,qBAAqB;YACxB,OAAO,KAAC,gBAAgB,KAAG,CAAC;QAC9B,KAAK,YAAY;YACf,OAAO,KAAC,QAAQ,KAAG,CAAC;KACvB;IAED,OAAO,SAAS,CAAC;AACnB,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\nimport { SvgFolder, SvgGroup, SvgHierarchyTree, SvgImodelHollow, SvgItem, SvgLayers, SvgModel } from \"@itwin/itwinui-icons-react\";\nimport { Tree } from \"../common/components/Tree.js\";\nimport { TreeRenderer } from \"../common/components/TreeRenderer.js\";\nimport { IModelContentTreeComponent } from \"./IModelContentTreeComponent.js\";\nimport { IModelContentTreeDefinition } from \"./IModelContentTreeDefinition.js\";\nimport { IModelContentTreeIdsCache } from \"./internal/IModelContentTreeIdsCache.js\";\n\nimport type { TreeProps } from \"../common/components/Tree.js\";\nimport type { ReactElement } from \"react\";\nimport type { PresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\n\n/** @beta */\nexport type IModelContentTreeProps = Pick<TreeProps, \"imodel\" | \"getSchemaContext\" | \"selectionStorage\" | \"density\" | \"selectionMode\"> & {\n hierarchyLevelConfig?: {\n sizeLimit?: number;\n };\n};\n\n/** @beta */\nexport function IModelContentTree(props: IModelContentTreeProps) {\n return (\n <Tree\n {...props}\n treeName={IModelContentTreeComponent.id}\n getHierarchyDefinition={getDefinitionsProvider}\n selectionMode={props.selectionMode ?? \"extended\"}\n treeRenderer={(treeProps) => <TreeRenderer {...treeProps} getIcon={getIcon} />}\n />\n );\n}\n\nconst getDefinitionsProvider: TreeProps[\"getHierarchyDefinition\"] = ({ imodelAccess }) => {\n return new IModelContentTreeDefinition({\n imodelAccess,\n idsCache: new IModelContentTreeIdsCache(imodelAccess),\n });\n};\n\nfunction getIcon(node: PresentationHierarchyNode): ReactElement | undefined {\n if (node.extendedData?.imageId === undefined) {\n return undefined;\n }\n\n switch (node.extendedData.imageId) {\n case \"icon-layers\":\n return <SvgLayers />;\n case \"icon-item\":\n return <SvgItem />;\n case \"icon-ec-class\":\n return <SvgItem />;\n case \"icon-imodel-hollow-2\":\n return <SvgImodelHollow />;\n case \"icon-folder\":\n return <SvgFolder />;\n case \"icon-model\":\n return <SvgModel />;\n case \"icon-hierarchy-tree\":\n return <SvgHierarchyTree />;\n case \"icon-group\":\n return <SvgGroup />;\n }\n\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"IModelContentTree.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAGhG,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAcpF,YAAY;AACZ,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,OAAO,CACL,KAAC,IAAI,IACH,gBAAgB,EAAE,KAAC,gBAAgB,IAAC,IAAI,EAAE,SAAS,GAAI,KACnD,KAAK,EACT,QAAQ,EAAE,0BAA0B,CAAC,EAAE,EACvC,sBAAsB,EAAE,sBAAsB,EAC9C,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,UAAU,EAChD,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAC,YAAY,OAAK,SAAS,EAAE,OAAO,EAAE,OAAO,GAAI,GAC9E,CACH,CAAC;AACJ,CAAC;AAED,MAAM,sBAAsB,GAAwC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;IACvF,OAAO,IAAI,2BAA2B,CAAC;QACrC,YAAY;QACZ,QAAQ,EAAE,IAAI,yBAAyB,CAAC,YAAY,CAAC;KACtD,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAC1F,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACtF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACvF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAC/F,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAC1F,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,6CAA6C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACvG,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAElF,SAAS,OAAO,CAAC,IAA+B;IAC9C,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO,KAAK,SAAS,EAAE;QAC5C,OAAO,SAAS,CAAC;KAClB;IAED,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QACjC,KAAK,aAAa;YAChB,OAAO,YAAY,CAAC;QACtB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,eAAe;YAClB,OAAO,SAAS,CAAC;QACnB,KAAK,aAAa;YAChB,OAAO,WAAW,CAAC;QACrB,KAAK,YAAY;YACf,OAAO,SAAS,CAAC;QACnB,KAAK,qBAAqB;YACxB,OAAO,iBAAiB,CAAC;QAC3B,KAAK,YAAY;YACf,OAAO,SAAS,CAAC;KACpB;IAED,OAAO,SAAS,CAAC;AACnB,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\n\nimport { EmptyTreeContent } from \"../common/components/EmptyTreeContent.js\";\nimport { Tree } from \"../common/components/Tree.js\";\nimport { TreeRenderer } from \"../common/components/TreeRenderer.js\";\nimport { IModelContentTreeComponent } from \"./IModelContentTreeComponent.js\";\nimport { IModelContentTreeDefinition } from \"./IModelContentTreeDefinition.js\";\nimport { IModelContentTreeIdsCache } from \"./internal/IModelContentTreeIdsCache.js\";\n\nimport type { PresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { BaseTreeRendererProps } from \"../common/components/BaseTreeRenderer.js\";\nimport type { TreeProps } from \"../common/components/Tree.js\";\n\n/** @beta */\nexport type IModelContentTreeProps = Pick<TreeProps, \"imodel\" | \"getSchemaContext\" | \"selectionStorage\" | \"selectionMode\" | \"emptyTreeContent\"> &\n Pick<BaseTreeRendererProps, \"actions\"> & {\n hierarchyLevelConfig?: {\n sizeLimit?: number;\n };\n };\n\n/** @beta */\nexport function IModelContentTree(props: IModelContentTreeProps) {\n return (\n <Tree\n emptyTreeContent={<EmptyTreeContent icon={modelIcon} />}\n {...props}\n treeName={IModelContentTreeComponent.id}\n getHierarchyDefinition={getDefinitionsProvider}\n selectionMode={props.selectionMode ?? \"extended\"}\n treeRenderer={(treeProps) => <TreeRenderer {...treeProps} getIcon={getIcon} />}\n />\n );\n}\n\nconst getDefinitionsProvider: TreeProps[\"getHierarchyDefinition\"] = ({ imodelAccess }) => {\n return new IModelContentTreeDefinition({\n imodelAccess,\n idsCache: new IModelContentTreeIdsCache(imodelAccess),\n });\n};\n\nconst subjectIcon = new URL(\"@itwin/itwinui-icons/bis-subject.svg\", import.meta.url).href;\nconst classIcon = new URL(\"@itwin/itwinui-icons/bis-class.svg\", import.meta.url).href;\nconst modelIcon = new URL(\"@itwin/itwinui-icons/model-cube.svg\", import.meta.url).href;\nconst categoryIcon = new URL(\"@itwin/itwinui-icons/bis-category-3d.svg\", import.meta.url).href;\nconst elementIcon = new URL(\"@itwin/itwinui-icons/bis-element.svg\", import.meta.url).href;\nconst hierarchyTreeIcon = new URL(\"@itwin/itwinui-icons/selection-children.svg\", import.meta.url).href;\nconst groupIcon = new URL(\"@itwin/itwinui-icons/group.svg\", import.meta.url).href;\n\nfunction getIcon(node: PresentationHierarchyNode): string | undefined {\n if (node.extendedData?.imageId === undefined) {\n return undefined;\n }\n\n switch (node.extendedData.imageId) {\n case \"icon-layers\":\n return categoryIcon;\n case \"icon-item\":\n return elementIcon;\n case \"icon-ec-class\":\n return classIcon;\n case \"icon-folder\":\n return subjectIcon;\n case \"icon-model\":\n return modelIcon;\n case \"icon-hierarchy-tree\":\n return hierarchyTreeIcon;\n case \"icon-group\":\n return groupIcon;\n }\n\n return undefined;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { IModelContentTreeProps } from "./IModelContentTree.js";
2
2
  /** @beta */
3
- interface IModelContentTreeComponentProps extends Pick<IModelContentTreeProps, "getSchemaContext" | "selectionStorage" | "density" | "hierarchyLevelConfig" | "selectionMode"> {
3
+ interface IModelContentTreeComponentProps extends Pick<IModelContentTreeProps, "getSchemaContext" | "selectionStorage" | "hierarchyLevelConfig" | "selectionMode" | "emptyTreeContent" | "actions"> {
4
4
  onPerformanceMeasured?: (featureId: string, duration: number) => void;
5
5
  onFeatureUsed?: (feature: string) => void;
6
6
  }
@@ -5,6 +5,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  import { useActiveIModelConnection } from "@itwin/appui-react";
7
7
  import { TreeWidget } from "../../../TreeWidget.js";
8
+ import { SelectableTree } from "../../tree-header/SelectableTree.js";
8
9
  import { TelemetryContextProvider } from "../common/UseTelemetryContext.js";
9
10
  import { IModelContentTree } from "./IModelContentTree.js";
10
11
  /**
@@ -16,7 +17,7 @@ export const IModelContentTreeComponent = ({ onFeatureUsed, onPerformanceMeasure
16
17
  if (!imodel) {
17
18
  return null;
18
19
  }
19
- return (_jsx(TelemetryContextProvider, { componentIdentifier: IModelContentTreeComponent.id, onFeatureUsed: onFeatureUsed, onPerformanceMeasured: onPerformanceMeasured, children: _jsx(IModelContentTree, { ...props, imodel: imodel }) }));
20
+ return (_jsx(TelemetryContextProvider, { componentIdentifier: IModelContentTreeComponent.id, onFeatureUsed: onFeatureUsed, onPerformanceMeasured: onPerformanceMeasured, children: _jsx(SelectableTree, { children: _jsx(IModelContentTree, { actions: undefined, ...props, imodel: imodel }) }) }));
20
21
  };
21
22
  /**
22
23
  * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.
@@ -1 +1 @@
1
- {"version":3,"file":"IModelContentTreeComponent.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAW3D;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,KAAK,EAAmC,EAAE,EAAE;IAChI,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;IAE3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,KAAC,wBAAwB,IAAC,mBAAmB,EAAE,0BAA0B,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,YACtJ,KAAC,iBAAiB,OAAK,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,GACvB,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,0BAA0B,CAAC,EAAE,GAAG,wBAAwB,CAAC;AAEzD;;;GAGG;AACH,0BAA0B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,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\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget.js\";\nimport { TelemetryContextProvider } from \"../common/UseTelemetryContext.js\";\nimport { IModelContentTree } from \"./IModelContentTree.js\";\n\nimport type { IModelContentTreeProps } from \"./IModelContentTree.js\";\n\n/** @beta */\ninterface IModelContentTreeComponentProps\n extends Pick<IModelContentTreeProps, \"getSchemaContext\" | \"selectionStorage\" | \"density\" | \"hierarchyLevelConfig\" | \"selectionMode\"> {\n onPerformanceMeasured?: (featureId: string, duration: number) => void;\n onFeatureUsed?: (feature: string) => void;\n}\n\n/**\n * A component that renders `IModelContentTree`.\n * @beta\n */\nexport const IModelContentTreeComponent = ({ onFeatureUsed, onPerformanceMeasured, ...props }: IModelContentTreeComponentProps) => {\n const imodel = useActiveIModelConnection();\n\n if (!imodel) {\n return null;\n }\n\n return (\n <TelemetryContextProvider componentIdentifier={IModelContentTreeComponent.id} onFeatureUsed={onFeatureUsed} onPerformanceMeasured={onPerformanceMeasured}>\n <IModelContentTree {...props} imodel={imodel} />\n </TelemetryContextProvider>\n );\n};\n\n/**\n * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nIModelContentTreeComponent.id = \"imodel-content-tree-v2\";\n\n/**\n * Label of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nIModelContentTreeComponent.getLabel = () => TreeWidget.translate(\"imodelContentTree.label\");\n"]}
1
+ {"version":3,"file":"IModelContentTreeComponent.js","sourceRoot":"","sources":["../../../../../../src/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAU3D;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,KAAK,EAAmC,EAAE,EAAE;IAChI,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;IAE3C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,KAAC,wBAAwB,IAAC,mBAAmB,EAAE,0BAA0B,CAAC,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,YACtJ,KAAC,cAAc,cACb,KAAC,iBAAiB,IAAC,OAAO,EAAE,SAAS,KAAM,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,GACrD,GACQ,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,0BAA0B,CAAC,EAAE,GAAG,wBAAwB,CAAC;AAEzD;;;GAGG;AACH,0BAA0B,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,yBAAyB,CAAC,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\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { TreeWidget } from \"../../../TreeWidget.js\";\nimport { SelectableTree } from \"../../tree-header/SelectableTree.js\";\nimport { TelemetryContextProvider } from \"../common/UseTelemetryContext.js\";\nimport { IModelContentTree } from \"./IModelContentTree.js\";\n\nimport type { IModelContentTreeProps } from \"./IModelContentTree.js\";\n/** @beta */\ninterface IModelContentTreeComponentProps\n extends Pick<IModelContentTreeProps, \"getSchemaContext\" | \"selectionStorage\" | \"hierarchyLevelConfig\" | \"selectionMode\" | \"emptyTreeContent\" | \"actions\"> {\n onPerformanceMeasured?: (featureId: string, duration: number) => void;\n onFeatureUsed?: (feature: string) => void;\n}\n\n/**\n * A component that renders `IModelContentTree`.\n * @beta\n */\nexport const IModelContentTreeComponent = ({ onFeatureUsed, onPerformanceMeasured, ...props }: IModelContentTreeComponentProps) => {\n const imodel = useActiveIModelConnection();\n\n if (!imodel) {\n return null;\n }\n\n return (\n <TelemetryContextProvider componentIdentifier={IModelContentTreeComponent.id} onFeatureUsed={onFeatureUsed} onPerformanceMeasured={onPerformanceMeasured}>\n <SelectableTree>\n <IModelContentTree actions={undefined} {...props} imodel={imodel} />\n </SelectableTree>\n </TelemetryContextProvider>\n );\n};\n\n/**\n * Id of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nIModelContentTreeComponent.id = \"imodel-content-tree-v2\";\n\n/**\n * Label of the component. May be used when a creating a `TreeDefinition` for `SelectableTree`.\n * @beta\n */\nIModelContentTreeComponent.getLabel = () => TreeWidget.translate(\"imodelContentTree.label\");\n"]}
@@ -14,7 +14,6 @@ export declare class IModelContentTreeDefinition implements HierarchyDefinition
14
14
  constructor(props: IModelContentTreeDefinitionProps);
15
15
  postProcessNode(node: ProcessedHierarchyNode): Promise<ProcessedHierarchyNode>;
16
16
  defineHierarchyLevel(props: DefineHierarchyLevelProps): Promise<HierarchyLevelDefinition>;
17
- private createRootHierarchyLevelDefinition;
18
17
  private createSubjectChildrenQuery;
19
18
  private createISubModeledElementChildrenQuery;
20
19
  private createGeometricModelChildrenQuery;
@@ -2,8 +2,9 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
+ import { IModel } from "@itwin/core-common";
5
6
  import { createNodesQueryClauseFactory, createPredicateBasedHierarchyDefinition, NodeSelectClauseColumnNames, ProcessedHierarchyNode, } from "@itwin/presentation-hierarchies";
6
- import { createBisInstanceLabelSelectClauseFactory, ECSql } from "@itwin/presentation-shared";
7
+ import { createBisInstanceLabelSelectClauseFactory } from "@itwin/presentation-shared";
7
8
  import { createIdsSelector, parseIdsSelectorResult } from "../common/Utils.js";
8
9
  export class IModelContentTreeDefinition {
9
10
  constructor(props) {
@@ -11,7 +12,7 @@ export class IModelContentTreeDefinition {
11
12
  this._impl = createPredicateBasedHierarchyDefinition({
12
13
  classHierarchyInspector: props.imodelAccess,
13
14
  hierarchy: {
14
- rootNodes: async (requestProps) => this.createRootHierarchyLevelDefinition(requestProps),
15
+ rootNodes: async (requestProps) => this.createSubjectChildrenQuery({ ...requestProps, parentNodeInstanceIds: [IModel.rootSubjectId] }),
15
16
  childNodes: [
16
17
  {
17
18
  parentInstancesNodePredicate: "BisCore.Subject",
@@ -78,42 +79,6 @@ export class IModelContentTreeDefinition {
78
79
  async defineHierarchyLevel(props) {
79
80
  return this._impl.defineHierarchyLevel(props);
80
81
  }
81
- async createRootHierarchyLevelDefinition(props) {
82
- const instanceFilterClauses = await this._selectQueryFactory.createFilterClauses({
83
- filter: props.instanceFilter,
84
- contentClass: { fullName: "BisCore.Subject", alias: "this" },
85
- });
86
- return [
87
- {
88
- fullClassName: "BisCore.Subject",
89
- query: {
90
- ecsql: `
91
- SELECT
92
- ${await this._selectQueryFactory.createSelectClause({
93
- ecClassId: { selector: ECSql.createRawPropertyValueSelector("this", "ECClassId") },
94
- ecInstanceId: { selector: "this.ECInstanceId" },
95
- nodeLabel: {
96
- selector: await this._nodeLabelSelectClauseFactory.createSelectClause({
97
- classAlias: "this",
98
- className: "BisCore.Subject",
99
- }),
100
- },
101
- extendedData: {
102
- imageId: "icon-imodel-hollow-2",
103
- },
104
- autoExpand: true,
105
- supportsFiltering: true,
106
- })}
107
- FROM ${instanceFilterClauses.from} this
108
- ${instanceFilterClauses.joins}
109
- WHERE
110
- this.Parent.Id IS NULL
111
- ${instanceFilterClauses.where ? `AND ${instanceFilterClauses.where}` : ""}
112
- `,
113
- },
114
- },
115
- ];
116
- }
117
82
  async createSubjectChildrenQuery({ parentNodeInstanceIds: subjectIds, instanceFilter, }) {
118
83
  const [subjectFilterClauses, modelFilterClauses] = await Promise.all([
119
84
  this._selectQueryFactory.createFilterClauses({