@itwin/tree-widget-react 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +32 -0
  3. package/lib/cjs/TreeWidget.d.ts +27 -0
  4. package/lib/cjs/TreeWidget.js +57 -0
  5. package/lib/cjs/TreeWidget.js.map +1 -0
  6. package/lib/cjs/components/IconButton.d.ts +14 -0
  7. package/lib/cjs/components/IconButton.js +42 -0
  8. package/lib/cjs/components/IconButton.js.map +1 -0
  9. package/lib/cjs/components/IconButton.scss +73 -0
  10. package/lib/cjs/components/TreeFilteringState.d.ts +16 -0
  11. package/lib/cjs/components/TreeFilteringState.js +67 -0
  12. package/lib/cjs/components/TreeFilteringState.js.map +1 -0
  13. package/lib/cjs/components/TreeWidgetComponent.d.ts +8 -0
  14. package/lib/cjs/components/TreeWidgetComponent.js +41 -0
  15. package/lib/cjs/components/TreeWidgetComponent.js.map +1 -0
  16. package/lib/cjs/components/TreeWidgetComponent.scss +64 -0
  17. package/lib/cjs/components/TreeWidgetControl.d.ts +25 -0
  18. package/lib/cjs/components/TreeWidgetControl.js +64 -0
  19. package/lib/cjs/components/TreeWidgetControl.js.map +1 -0
  20. package/lib/cjs/components/TreeWidgetUiItemsProvider.d.ts +19 -0
  21. package/lib/cjs/components/TreeWidgetUiItemsProvider.js +81 -0
  22. package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +1 -0
  23. package/lib/cjs/components/header/TreeHeader.d.ts +14 -0
  24. package/lib/cjs/components/header/TreeHeader.js +43 -0
  25. package/lib/cjs/components/header/TreeHeader.js.map +1 -0
  26. package/lib/cjs/components/header/TreeHeader.scss +19 -0
  27. package/lib/cjs/components/rulesets/ClassificationSystems.json +122 -0
  28. package/lib/cjs/components/search-bar/Popup.d.ts +50 -0
  29. package/lib/cjs/components/search-bar/Popup.js +246 -0
  30. package/lib/cjs/components/search-bar/Popup.js.map +1 -0
  31. package/lib/cjs/components/search-bar/Popup.scss +316 -0
  32. package/lib/cjs/components/search-bar/SearchBar.d.ts +53 -0
  33. package/lib/cjs/components/search-bar/SearchBar.js +97 -0
  34. package/lib/cjs/components/search-bar/SearchBar.js.map +1 -0
  35. package/lib/cjs/components/search-bar/SearchBar.scss +110 -0
  36. package/lib/cjs/components/search-bar/SearchBox.d.ts +76 -0
  37. package/lib/cjs/components/search-bar/SearchBox.js +184 -0
  38. package/lib/cjs/components/search-bar/SearchBox.js.map +1 -0
  39. package/lib/cjs/components/search-bar/SearchBox.scss +91 -0
  40. package/lib/cjs/components/trees/CategoriesTree.d.ts +9 -0
  41. package/lib/cjs/components/trees/CategoriesTree.js +76 -0
  42. package/lib/cjs/components/trees/CategoriesTree.js.map +1 -0
  43. package/lib/cjs/components/trees/CategoriesTree.scss +13 -0
  44. package/lib/cjs/components/trees/ClassificationsTree.d.ts +6 -0
  45. package/lib/cjs/components/trees/ClassificationsTree.js +43 -0
  46. package/lib/cjs/components/trees/ClassificationsTree.js.map +1 -0
  47. package/lib/cjs/components/trees/ModelsTree.d.ts +10 -0
  48. package/lib/cjs/components/trees/ModelsTree.js +135 -0
  49. package/lib/cjs/components/trees/ModelsTree.js.map +1 -0
  50. package/lib/cjs/components/trees/ModelsTree.scss +14 -0
  51. package/lib/cjs/components/trees/SpatialTree.d.ts +3 -0
  52. package/lib/cjs/components/trees/SpatialTree.js +41 -0
  53. package/lib/cjs/components/trees/SpatialTree.js.map +1 -0
  54. package/lib/cjs/components/trees/TreeWithRuleset.d.ts +35 -0
  55. package/lib/cjs/components/trees/TreeWithRuleset.js +108 -0
  56. package/lib/cjs/components/trees/TreeWithRuleset.js.map +1 -0
  57. package/lib/cjs/components/trees/TreeWithRulesetTree.scss +17 -0
  58. package/lib/cjs/components/trees/index.d.ts +6 -0
  59. package/lib/cjs/components/trees/index.js +22 -0
  60. package/lib/cjs/components/trees/index.js.map +1 -0
  61. package/lib/cjs/tree-widget-react.d.ts +7 -0
  62. package/lib/cjs/tree-widget-react.js +23 -0
  63. package/lib/cjs/tree-widget-react.js.map +1 -0
  64. package/lib/esm/TreeWidget.d.ts +27 -0
  65. package/lib/esm/TreeWidget.js +53 -0
  66. package/lib/esm/TreeWidget.js.map +1 -0
  67. package/lib/esm/components/IconButton.d.ts +14 -0
  68. package/lib/esm/components/IconButton.js +16 -0
  69. package/lib/esm/components/IconButton.js.map +1 -0
  70. package/lib/esm/components/IconButton.scss +73 -0
  71. package/lib/esm/components/TreeFilteringState.d.ts +16 -0
  72. package/lib/esm/components/TreeFilteringState.js +44 -0
  73. package/lib/esm/components/TreeFilteringState.js.map +1 -0
  74. package/lib/esm/components/TreeWidgetComponent.d.ts +8 -0
  75. package/lib/esm/components/TreeWidgetComponent.js +18 -0
  76. package/lib/esm/components/TreeWidgetComponent.js.map +1 -0
  77. package/lib/esm/components/TreeWidgetComponent.scss +64 -0
  78. package/lib/esm/components/TreeWidgetControl.d.ts +25 -0
  79. package/lib/esm/components/TreeWidgetControl.js +57 -0
  80. package/lib/esm/components/TreeWidgetControl.js.map +1 -0
  81. package/lib/esm/components/TreeWidgetUiItemsProvider.d.ts +19 -0
  82. package/lib/esm/components/TreeWidgetUiItemsProvider.js +74 -0
  83. package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +1 -0
  84. package/lib/esm/components/header/TreeHeader.d.ts +14 -0
  85. package/lib/esm/components/header/TreeHeader.js +20 -0
  86. package/lib/esm/components/header/TreeHeader.js.map +1 -0
  87. package/lib/esm/components/header/TreeHeader.scss +19 -0
  88. package/lib/esm/components/rulesets/ClassificationSystems.json +122 -0
  89. package/lib/esm/components/search-bar/Popup.d.ts +50 -0
  90. package/lib/esm/components/search-bar/Popup.js +220 -0
  91. package/lib/esm/components/search-bar/Popup.js.map +1 -0
  92. package/lib/esm/components/search-bar/Popup.scss +316 -0
  93. package/lib/esm/components/search-bar/SearchBar.d.ts +53 -0
  94. package/lib/esm/components/search-bar/SearchBar.js +71 -0
  95. package/lib/esm/components/search-bar/SearchBar.js.map +1 -0
  96. package/lib/esm/components/search-bar/SearchBar.scss +110 -0
  97. package/lib/esm/components/search-bar/SearchBox.d.ts +76 -0
  98. package/lib/esm/components/search-bar/SearchBox.js +158 -0
  99. package/lib/esm/components/search-bar/SearchBox.js.map +1 -0
  100. package/lib/esm/components/search-bar/SearchBox.scss +91 -0
  101. package/lib/esm/components/trees/CategoriesTree.d.ts +9 -0
  102. package/lib/esm/components/trees/CategoriesTree.js +53 -0
  103. package/lib/esm/components/trees/CategoriesTree.js.map +1 -0
  104. package/lib/esm/components/trees/CategoriesTree.scss +13 -0
  105. package/lib/esm/components/trees/ClassificationsTree.d.ts +6 -0
  106. package/lib/esm/components/trees/ClassificationsTree.js +17 -0
  107. package/lib/esm/components/trees/ClassificationsTree.js.map +1 -0
  108. package/lib/esm/components/trees/ModelsTree.d.ts +10 -0
  109. package/lib/esm/components/trees/ModelsTree.js +112 -0
  110. package/lib/esm/components/trees/ModelsTree.js.map +1 -0
  111. package/lib/esm/components/trees/ModelsTree.scss +14 -0
  112. package/lib/esm/components/trees/SpatialTree.d.ts +3 -0
  113. package/lib/esm/components/trees/SpatialTree.js +18 -0
  114. package/lib/esm/components/trees/SpatialTree.js.map +1 -0
  115. package/lib/esm/components/trees/TreeWithRuleset.d.ts +35 -0
  116. package/lib/esm/components/trees/TreeWithRuleset.js +83 -0
  117. package/lib/esm/components/trees/TreeWithRuleset.js.map +1 -0
  118. package/lib/esm/components/trees/TreeWithRulesetTree.scss +17 -0
  119. package/lib/esm/components/trees/index.d.ts +6 -0
  120. package/lib/esm/components/trees/index.js +10 -0
  121. package/lib/esm/components/trees/index.js.map +1 -0
  122. package/lib/esm/tree-widget-react.d.ts +7 -0
  123. package/lib/esm/tree-widget-react.js +11 -0
  124. package/lib/esm/tree-widget-react.js.map +1 -0
  125. package/lib/public/locales/en/TreeWidget.json +16 -0
  126. package/package.json +97 -0
package/LICENSE.md ADDED
@@ -0,0 +1,9 @@
1
+ # MIT License
2
+
3
+ Copyright © 2020-2022 Bentley Systems, Inc. All rights reserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # @itwin/tree-widget-react
2
+
3
+ Copyright © Bentley Systems, Incorporated. All rights reserved.
4
+
5
+ The tree-widget-react package provides React components to access Models and Categories within an iModel via a UiProvider, `TreeWidgetUiItemsProvider`.
6
+
7
+ The package also provides the underlying component, `TreeWidgetComponent`, which you can wrap within your own custom UiProvider and pass in your own custom trees to display.
8
+
9
+ ## Usage
10
+
11
+ ### What to add in your iTwin AppUI based application
12
+
13
+ With a few short lines, you can add the tree widget to your app.
14
+
15
+ #### Call TreeWidget.initialize() **_before_** making use of the provided Tree Widget Provider
16
+
17
+ ```ts
18
+ import { TreeWidget } from "@itwin/tree-widget-react";
19
+ ...
20
+ await TreeWidget.initialize(IModelApp.localization);
21
+ ```
22
+
23
+ #### Register Tree Widget Provider
24
+
25
+ ```ts
26
+ import { UiItemsManager } from "@itwin/appui-abstract";
27
+ import { TreeWidgetUiItemsProvider } from "@itwin/tree-widget-react";
28
+ ...
29
+ UiItemsManager.register(
30
+ new TreeWidgetUiItemsProvider({ ...TreeWidgetControlOptions })
31
+ );
32
+ ```
@@ -0,0 +1,27 @@
1
+ import { Localization } from "@itwin/core-common";
2
+ import { LocalizationOptions } from "@itwin/core-i18n";
3
+ /**
4
+ * Entry point for static initialization required by various components used in the package.
5
+ * @public
6
+ */
7
+ export declare class TreeWidget {
8
+ private static _i18n?;
9
+ private static _initialized?;
10
+ /**
11
+ * Called by IModelApp to initialize the Tree Widget
12
+ * @param i18n - The internationalization service created by the IModelApp.
13
+ */
14
+ static initialize(i18n?: Localization): Promise<void>;
15
+ /** Unregisters the TreeWidget internationalization service namespace */
16
+ static terminate(): void;
17
+ /** The internationalization service created by the IModelApp. */
18
+ static get i18n(): Localization;
19
+ /** The internationalization service namespace. */
20
+ static get i18nNamespace(): string;
21
+ static get packageName(): string;
22
+ /** Calls i18n.translateWithNamespace with the "TreeWidget" namespace. Do NOT include the namespace in the key.
23
+ */
24
+ static translate(key: string | string[], options?: LocalizationOptions): string;
25
+ static loggerCategory(obj: any): string;
26
+ }
27
+ //# sourceMappingURL=TreeWidget.d.ts.map
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TreeWidget = void 0;
8
+ const appui_abstract_1 = require("@itwin/appui-abstract");
9
+ const core_frontend_1 = require("@itwin/core-frontend");
10
+ /**
11
+ * Entry point for static initialization required by various components used in the package.
12
+ * @public
13
+ */
14
+ class TreeWidget {
15
+ /**
16
+ * Called by IModelApp to initialize the Tree Widget
17
+ * @param i18n - The internationalization service created by the IModelApp.
18
+ */
19
+ static async initialize(i18n) {
20
+ if (this._initialized)
21
+ return;
22
+ this._initialized = true;
23
+ TreeWidget._i18n = i18n !== null && i18n !== void 0 ? i18n : core_frontend_1.IModelApp.localization;
24
+ return TreeWidget._i18n.registerNamespace(TreeWidget.i18nNamespace);
25
+ }
26
+ /** Unregisters the TreeWidget internationalization service namespace */
27
+ static terminate() {
28
+ if (TreeWidget._i18n)
29
+ TreeWidget._i18n.unregisterNamespace(TreeWidget.i18nNamespace);
30
+ TreeWidget._i18n = undefined;
31
+ }
32
+ /** The internationalization service created by the IModelApp. */
33
+ static get i18n() {
34
+ if (!TreeWidget._i18n)
35
+ throw new appui_abstract_1.UiError(TreeWidget.loggerCategory(this), "TreeWidget not initialized");
36
+ return TreeWidget._i18n;
37
+ }
38
+ /** The internationalization service namespace. */
39
+ static get i18nNamespace() {
40
+ return "TreeWidget";
41
+ }
42
+ static get packageName() {
43
+ return "tree-widget-react";
44
+ }
45
+ /** Calls i18n.translateWithNamespace with the "TreeWidget" namespace. Do NOT include the namespace in the key.
46
+ */
47
+ static translate(key, options) {
48
+ return TreeWidget.i18n.getLocalizedStringWithNamespace(TreeWidget.i18nNamespace, key, options);
49
+ }
50
+ static loggerCategory(obj) {
51
+ const className = appui_abstract_1.getClassName(obj);
52
+ const category = TreeWidget.packageName + (className ? `.${className}` : "");
53
+ return category;
54
+ }
55
+ }
56
+ exports.TreeWidget = TreeWidget;
57
+ //# sourceMappingURL=TreeWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeWidget.js","sourceRoot":"","sources":["../../src/TreeWidget.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,0DAA8D;AAC9D,wDAAiD;AAIjD;;;GAGG;AACH,MAAa,UAAU;IAIrB;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAmB;QAChD,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QAE9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,UAAU,CAAC,KAAK,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,yBAAS,CAAC,YAAY,CAAC;QAElD,OAAO,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;IAED,wEAAwE;IACjE,MAAM,CAAC,SAAS;QACrB,IAAI,UAAU,CAAC,KAAK;YAClB,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACjE,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,iEAAiE;IAC1D,MAAM,KAAK,IAAI;QACpB,IAAI,CAAC,UAAU,CAAC,KAAK;YACnB,MAAM,IAAI,wBAAO,CACf,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,EAC/B,4BAA4B,CAC7B,CAAC;QACJ,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,aAAa;QAC7B,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,MAAM,KAAK,WAAW;QAC3B,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED;OACG;IACI,MAAM,CAAC,SAAS,CACrB,GAAsB,EACtB,OAA6B;QAE7B,OAAO,UAAU,CAAC,IAAI,CAAC,+BAA+B,CACpD,UAAU,CAAC,aAAa,EACxB,GAAG,EACH,OAAO,CACR,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,GAAQ;QACnC,MAAM,SAAS,GAAG,6BAAY,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,QAAQ,GACZ,UAAU,CAAC,WAAW,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA9DD,gCA8DC","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 { UiError, getClassName } from \"@itwin/appui-abstract\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { Localization } from \"@itwin/core-common\";\nimport { LocalizationOptions } from \"@itwin/core-i18n\";\n\n/**\n * Entry point for static initialization required by various components used in the package.\n * @public\n */\nexport class TreeWidget {\n private static _i18n?: Localization;\n private static _initialized?: boolean;\n\n /**\n * Called by IModelApp to initialize the Tree Widget\n * @param i18n - The internationalization service created by the IModelApp.\n */\n public static async initialize(i18n?: Localization): Promise<void> {\n if (this._initialized) return;\n\n this._initialized = true;\n TreeWidget._i18n = i18n ?? IModelApp.localization;\n\n return TreeWidget._i18n.registerNamespace(TreeWidget.i18nNamespace);\n }\n\n /** Unregisters the TreeWidget internationalization service namespace */\n public static terminate() {\n if (TreeWidget._i18n)\n TreeWidget._i18n.unregisterNamespace(TreeWidget.i18nNamespace);\n TreeWidget._i18n = undefined;\n }\n\n /** The internationalization service created by the IModelApp. */\n public static get i18n(): Localization {\n if (!TreeWidget._i18n)\n throw new UiError(\n TreeWidget.loggerCategory(this),\n \"TreeWidget not initialized\"\n );\n return TreeWidget._i18n;\n }\n\n /** The internationalization service namespace. */\n public static get i18nNamespace(): string {\n return \"TreeWidget\";\n }\n\n public static get packageName(): string {\n return \"tree-widget-react\";\n }\n\n /** Calls i18n.translateWithNamespace with the \"TreeWidget\" namespace. Do NOT include the namespace in the key.\n */\n public static translate(\n key: string | string[],\n options?: LocalizationOptions\n ): string {\n return TreeWidget.i18n.getLocalizedStringWithNamespace(\n TreeWidget.i18nNamespace,\n key,\n options\n );\n }\n\n public static loggerCategory(obj: any): string {\n const className = getClassName(obj);\n const category =\n TreeWidget.packageName + (className ? `.${className}` : \"\");\n return category;\n }\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ import { CommonProps } from "@itwin/core-react";
3
+ import "./IconButton.scss";
4
+ /** Properties for [[IconButton]] component */
5
+ export interface IconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, CommonProps {
6
+ /** Icon name */
7
+ icon: string;
8
+ /** A function to be run when the element is clicked */
9
+ onClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
10
+ label?: string;
11
+ }
12
+ /** Generic icon button component */
13
+ export declare function IconButton({ className, icon, onClick, label, ...otherProps }: IconButtonProps): JSX.Element;
14
+ //# sourceMappingURL=IconButton.d.ts.map
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.IconButton = void 0;
26
+ /*---------------------------------------------------------------------------------------------
27
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
28
+ * See LICENSE.md in the project root for license terms and full copyright notice.
29
+ *--------------------------------------------------------------------------------------------*/
30
+ const React = __importStar(require("react"));
31
+ const classnames_1 = __importDefault(require("classnames"));
32
+ require("./IconButton.scss");
33
+ /** Generic icon button component */
34
+ function IconButton({ className, icon, onClick, label, ...otherProps }) {
35
+ return (React.createElement(React.Fragment, null,
36
+ label &&
37
+ React.createElement("span", { className: classnames_1.default("tree-widget-icon-label", className) }, label),
38
+ React.createElement("button", { ...otherProps, className: classnames_1.default("tree-widget-icon-button", className), onClick: onClick },
39
+ React.createElement("span", { className: classnames_1.default("icon", icon) }))));
40
+ }
41
+ exports.IconButton = IconButton;
42
+ //# sourceMappingURL=IconButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconButton.js","sourceRoot":"","sources":["../../../src/components/IconButton.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,6CAA+B;AAC/B,4DAAoC;AAEpC,6BAA2B;AAc3B,oCAAoC;AACpC,SAAgB,UAAU,CAAC,EACzB,SAAS,EACT,IAAI,EACJ,OAAO,EACP,KAAK,EACL,GAAG,UAAU,EACG;IAChB,OAAO,CACL;QACG,KAAK;YACJ,8BAAM,SAAS,EAAE,oBAAU,CAAC,wBAAwB,EAAE,SAAS,CAAC,IAC7D,KAAK,CACD;QAET,mCACM,UAAU,EACd,SAAS,EAAE,oBAAU,CAAC,yBAAyB,EAAE,SAAS,CAAC,EAC3D,OAAO,EAAE,OAAO;YAEhB,8BAAM,SAAS,EAAE,oBAAU,CAAC,MAAM,EAAE,IAAI,CAAC,GAAI,CACtC,CACR,CACJ,CAAC;AACJ,CAAC;AAvBD,gCAuBC","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*--------------------------------------------------------------------------------------------*/\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport { CommonProps } from \"@itwin/core-react\";\nimport \"./IconButton.scss\";\n\n/** Properties for [[IconButton]] component */\nexport interface IconButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n CommonProps {\n /** Icon name */\n icon: string;\n /** A function to be run when the element is clicked */\n onClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n //** An optional text label to display to the left of the button */\n label?: string;\n}\n\n/** Generic icon button component */\nexport function IconButton({\n className,\n icon,\n onClick,\n label,\n ...otherProps\n}: IconButtonProps) {\n return (\n <>\n {label &&\n <span className={classnames(\"tree-widget-icon-label\", className)}>\n {label}\n </span>\n }\n <button\n {...otherProps}\n className={classnames(\"tree-widget-icon-button\", className)}\n onClick={onClick}\n >\n <span className={classnames(\"icon\", icon)} />\n </button>\n </>\n );\n}\n"]}
@@ -0,0 +1,73 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @import "~@itwin/core-react/lib/esm/core-react/index";
6
+ @import "~@itwin/appui-layout-react/lib/esm/appui-layout-react/footer/_variables";
7
+
8
+ .tree-widget-icon-button {
9
+ display: inline-block;
10
+ align-items: center;
11
+ justify-content: center;
12
+ width: 32px;
13
+ height: 32px;
14
+ border: 0;
15
+ color: $buic-icon-color;
16
+ background-color: transparent;
17
+ outline: none;
18
+ box-shadow: none;
19
+ font-family: $uicore-font-family;
20
+ font-size: $uicore-font-size;
21
+ text-decoration: none;
22
+ cursor: pointer;
23
+ transition: color 0.25s;
24
+
25
+ &:hover {
26
+ text-decoration: none;
27
+ color: $buic-foreground-primary;
28
+ }
29
+
30
+ &:active {
31
+ outline: none;
32
+ box-shadow: none;
33
+ text-decoration: none;
34
+ background-color: transparent;
35
+ }
36
+
37
+ &:focus {
38
+ outline: none;
39
+ box-shadow: none;
40
+ text-decoration: none;
41
+ background-color: transparent;
42
+ }
43
+
44
+ &[disabled],
45
+ &[disabled]:hover,
46
+ &[disabled]:active,
47
+ &[disabled]:focus {
48
+ opacity: 0.4;
49
+ color: $uicore-gray;
50
+ background: transparent;
51
+ cursor: not-allowed;
52
+ pointer-events: none;
53
+ }
54
+ }
55
+
56
+ .tree-widget-icon-label {
57
+ display: inline-flex;
58
+ align-items: center;
59
+ justify-content: center;
60
+ height: 32px;
61
+ font-family: $uicore-font-family;
62
+ font-size: $uicore-font-size;
63
+ color: $buic-icon-color;
64
+ margin-left: 5px;
65
+
66
+ &[disabled] {
67
+ opacity: 0.4;
68
+ color: $uicore-gray;
69
+ background: transparent;
70
+ cursor: not-allowed;
71
+ pointer-events: none;
72
+ }
73
+ }
@@ -0,0 +1,16 @@
1
+ import { IPresentationTreeDataProvider } from "@itwin/presentation-components";
2
+ export interface SearchOptions {
3
+ isFiltering: boolean;
4
+ onFilterCancel: () => void;
5
+ onFilterStart: (newFilter: string) => void;
6
+ onResultSelectedChanged: (index: number) => void;
7
+ matchedResultCount: number | undefined;
8
+ }
9
+ export declare const useTreeFilteringState: () => {
10
+ searchOptions: SearchOptions;
11
+ filterString: string;
12
+ activeMatchIndex: number | undefined;
13
+ onFilterApplied: (provider: IPresentationTreeDataProvider, matches: number) => void;
14
+ filteredProvider: IPresentationTreeDataProvider | undefined;
15
+ };
16
+ //# sourceMappingURL=TreeFilteringState.d.ts.map
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.useTreeFilteringState = void 0;
23
+ /*---------------------------------------------------------------------------------------------
24
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
25
+ * See LICENSE.md in the project root for license terms and full copyright notice.
26
+ *--------------------------------------------------------------------------------------------*/
27
+ const react_1 = __importStar(require("react"));
28
+ const useTreeFilteringState = () => {
29
+ const [filterString, setFilterString] = react_1.useState("");
30
+ const [matchedResultCount, setMatchedResultCount] = react_1.useState();
31
+ const [activeMatchIndex, setActiveMatchIndex] = react_1.useState();
32
+ const [filteredProvider, setFilteredProvider] = react_1.useState();
33
+ const onFilterCancel = react_1.default.useCallback(() => {
34
+ setFilterString("");
35
+ setMatchedResultCount(undefined);
36
+ setFilteredProvider(undefined);
37
+ }, []);
38
+ const onFilterStart = react_1.default.useCallback((newFilter) => {
39
+ setFilterString(newFilter);
40
+ setMatchedResultCount(undefined);
41
+ setFilteredProvider(undefined);
42
+ }, []);
43
+ const onResultSelectedChanged = react_1.default.useCallback((index) => {
44
+ setActiveMatchIndex(index);
45
+ }, []);
46
+ const onFilterApplied = react_1.default.useCallback((provider, matches) => {
47
+ setFilteredProvider(provider);
48
+ setMatchedResultCount(matches);
49
+ }, []);
50
+ const isFiltering = !!filterString && matchedResultCount === undefined;
51
+ const searchOptions = {
52
+ isFiltering,
53
+ onFilterCancel,
54
+ onFilterStart,
55
+ onResultSelectedChanged,
56
+ matchedResultCount,
57
+ };
58
+ return {
59
+ searchOptions,
60
+ filterString,
61
+ activeMatchIndex,
62
+ onFilterApplied,
63
+ filteredProvider,
64
+ };
65
+ };
66
+ exports.useTreeFilteringState = useTreeFilteringState;
67
+ //# sourceMappingURL=TreeFilteringState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeFilteringState.js","sourceRoot":"","sources":["../../../src/components/TreeFilteringState.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,+CAAwC;AAWjC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,gBAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,gBAAQ,EAAU,CAAC;IACvE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,gBAAQ,EAAU,CAAC;IACnE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,gBAAQ,EAAiC,CAAC;IAE1F,MAAM,cAAc,GAAG,eAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC5C,eAAe,CAAC,EAAE,CAAC,CAAC;QACpB,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,eAAK,CAAC,WAAW,CAAC,CAAC,SAAiB,EAAE,EAAE;QAC5D,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3B,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,uBAAuB,GAAG,eAAK,CAAC,WAAW,CAAC,CAAC,KAAa,EAAE,EAAE;QAClE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,eAAK,CAAC,WAAW,CAAC,CAAC,QAAuC,EAAE,OAAe,EAAE,EAAE;QACrG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,CAAC,CAAC,YAAY,IAAI,kBAAkB,KAAK,SAAS,CAAC;IACvE,MAAM,aAAa,GAAkB;QACnC,WAAW;QACX,cAAc;QACd,aAAa;QACb,uBAAuB;QACvB,kBAAkB;KACnB,CAAC;IAEF,OAAO;QACL,aAAa;QACb,YAAY;QACZ,gBAAgB;QAChB,eAAe;QACf,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AA3CW,QAAA,qBAAqB,yBA2ChC","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*--------------------------------------------------------------------------------------------*/\nimport React, { useState } from \"react\";\nimport { IPresentationTreeDataProvider } from \"@itwin/presentation-components\";\n\nexport interface SearchOptions {\n isFiltering: boolean;\n onFilterCancel: () => void;\n onFilterStart: (newFilter: string) => void;\n onResultSelectedChanged: (index: number) => void;\n matchedResultCount: number | undefined;\n}\n\nexport const useTreeFilteringState = () => {\n const [filterString, setFilterString] = useState(\"\");\n const [matchedResultCount, setMatchedResultCount] = useState<number>();\n const [activeMatchIndex, setActiveMatchIndex] = useState<number>();\n const [filteredProvider, setFilteredProvider] = useState<IPresentationTreeDataProvider>();\n\n const onFilterCancel = React.useCallback(() => {\n setFilterString(\"\");\n setMatchedResultCount(undefined);\n setFilteredProvider(undefined);\n }, []);\n\n const onFilterStart = React.useCallback((newFilter: string) => {\n setFilterString(newFilter);\n setMatchedResultCount(undefined);\n setFilteredProvider(undefined);\n }, []);\n\n const onResultSelectedChanged = React.useCallback((index: number) => {\n setActiveMatchIndex(index);\n }, []);\n\n const onFilterApplied = React.useCallback((provider: IPresentationTreeDataProvider, matches: number) => {\n setFilteredProvider(provider);\n setMatchedResultCount(matches);\n }, []);\n\n const isFiltering = !!filterString && matchedResultCount === undefined;\n const searchOptions: SearchOptions = {\n isFiltering,\n onFilterCancel,\n onFilterStart,\n onResultSelectedChanged,\n matchedResultCount,\n };\n\n return {\n searchOptions,\n filterString,\n activeMatchIndex,\n onFilterApplied,\n filteredProvider,\n };\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import "./TreeWidgetComponent.scss";
2
+ import { SelectableContentDefinition } from "@itwin/components-react";
3
+ interface TreeWidgetComponentProps {
4
+ trees?: SelectableContentDefinition[];
5
+ }
6
+ export declare function TreeWidgetComponent(props: TreeWidgetComponentProps): JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=TreeWidgetComponent.d.ts.map
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.TreeWidgetComponent = void 0;
23
+ /*---------------------------------------------------------------------------------------------
24
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
25
+ * See LICENSE.md in the project root for license terms and full copyright notice.
26
+ *--------------------------------------------------------------------------------------------*/
27
+ const React = __importStar(require("react"));
28
+ require("./TreeWidgetComponent.scss");
29
+ const components_react_1 = require("@itwin/components-react");
30
+ function TreeWidgetComponent(props) {
31
+ const trees = [];
32
+ if (props.trees && props.trees.length !== 0) {
33
+ for (const entry of props.trees) {
34
+ trees.push(entry);
35
+ }
36
+ }
37
+ return (React.createElement("div", { className: "tree-widget-visibility-widget" },
38
+ React.createElement(components_react_1.SelectableContent, { children: trees, defaultSelectedContentId: trees[0].id })));
39
+ }
40
+ exports.TreeWidgetComponent = TreeWidgetComponent;
41
+ //# sourceMappingURL=TreeWidgetComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeWidgetComponent.js","sourceRoot":"","sources":["../../../src/components/TreeWidgetComponent.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,6CAA+B;AAC/B,sCAAoC;AAEpC,8DAGiC;AAMjC,SAAgB,mBAAmB,CAAC,KAA+B;IACjE,MAAM,KAAK,GAAkC,EAAE,CAAC;IAEhD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnB;KACF;IAED,OAAO,CACL,6BAAK,SAAS,EAAC,+BAA+B;QAC5C,oBAAC,oCAAiB,IAChB,QAAQ,EAAE,KAAK,EACf,wBAAwB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GACrC,CACE,CACP,CAAC;AACJ,CAAC;AAjBD,kDAiBC","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*--------------------------------------------------------------------------------------------*/\nimport * as React from \"react\";\nimport \"./TreeWidgetComponent.scss\";\nimport { useState } from \"react\";\nimport {\n SelectableContent,\n SelectableContentDefinition,\n} from \"@itwin/components-react\";\n\ninterface TreeWidgetComponentProps {\n trees?: SelectableContentDefinition[];\n}\n\nexport function TreeWidgetComponent(props: TreeWidgetComponentProps) {\n const trees: SelectableContentDefinition[] = [];\n\n if (props.trees && props.trees.length !== 0) {\n for (const entry of props.trees) {\n trees.push(entry);\n }\n }\n\n return (\n <div className=\"tree-widget-visibility-widget\">\n <SelectableContent\n children={trees}\n defaultSelectedContentId={trees[0].id}\n />\n </div>\n );\n}\n"]}
@@ -0,0 +1,64 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @import "~@itwin/core-react/lib/esm/core-react/index";
6
+
7
+ .tree-widget-visibility-widget {
8
+ padding: $uicore-s;
9
+ width: 100%;
10
+ height: 100%;
11
+ box-sizing: border-box;
12
+ display: flex;
13
+ flex-direction: column;
14
+
15
+ .components-selectable-content {
16
+ flex: 1;
17
+ }
18
+
19
+ .components-selectable-content-header {
20
+ display: flex;
21
+ align-items: center;
22
+ margin-bottom: $uicore-xs;
23
+
24
+ .uicore-reactSelectTop {
25
+ flex: 1;
26
+ }
27
+ }
28
+
29
+ .components-selectable-content-wrapper {
30
+ display: flex;
31
+ flex-direction: column;
32
+ flex-grow: 1;
33
+ height: 100%;
34
+ }
35
+
36
+ .visibility-tree-toolbar {
37
+ display: flex;
38
+ flex-direction: row;
39
+ align-items: center;
40
+ margin-bottom: $uicore-xs;
41
+
42
+ .tree-toolbar-searchbox {
43
+ margin-left: auto;
44
+
45
+ .components-filtering-input {
46
+ margin: 0;
47
+ }
48
+ }
49
+ }
50
+ }
51
+
52
+ .tree-widget-select {
53
+ margin-bottom: $uicore-xs;
54
+ }
55
+
56
+ .tree-widget-tree-container {
57
+ flex: 1;
58
+ display: flex;
59
+ flex-direction: column;
60
+ }
61
+
62
+ .tree-widget-search-bar {
63
+ margin-bottom: $uicore-s;
64
+ }
@@ -0,0 +1,25 @@
1
+ import { WidgetControl, ConfigurableCreateInfo } from "@itwin/appui-react";
2
+ import React from "react";
3
+ import { IModelConnection, Viewport } from "@itwin/core-frontend";
4
+ import { SelectableContentDefinition } from "@itwin/components-react";
5
+ export interface TreeWidgetControlOptions {
6
+ iModelConnection: IModelConnection;
7
+ activeView?: Viewport;
8
+ enableElementsClassGrouping?: boolean;
9
+ allViewports?: boolean;
10
+ additionalTrees?: SelectableContentDefinition[];
11
+ additionalProps?: {
12
+ modelsTree?: {};
13
+ categoriesTree?: {};
14
+ spatialTree?: {};
15
+ };
16
+ treeReplacements?: {
17
+ modelsTree?: () => React.ReactNode;
18
+ categoriesTree?: () => React.ReactNode;
19
+ spatialTree?: () => React.ReactNode;
20
+ };
21
+ }
22
+ export declare class TreeWidgetControl extends WidgetControl {
23
+ constructor(info: ConfigurableCreateInfo, options: TreeWidgetControlOptions);
24
+ }
25
+ //# sourceMappingURL=TreeWidgetControl.d.ts.map
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TreeWidgetControl = void 0;
11
+ const appui_react_1 = require("@itwin/appui-react");
12
+ const react_1 = __importDefault(require("react"));
13
+ const trees_1 = require("./trees");
14
+ const TreeWidgetComponent_1 = require("./TreeWidgetComponent");
15
+ const TreeWidget_1 = require("../TreeWidget");
16
+ class TreeWidgetControl extends appui_react_1.WidgetControl {
17
+ constructor(info, options) {
18
+ var _a, _b, _c, _d, _e, _f;
19
+ super(info, options);
20
+ const { iModelConnection: imodel, activeView } = options;
21
+ const modelsTreeProps = (_a = options.additionalProps) === null || _a === void 0 ? void 0 : _a.modelsTree;
22
+ const categoriesTreeProps = (_b = options.additionalProps) === null || _b === void 0 ? void 0 : _b.categoriesTree;
23
+ const spatialTreeProps = (_c = options.additionalProps) === null || _c === void 0 ? void 0 : _c.spatialTree;
24
+ const enableElementsClassGrouping = options.enableElementsClassGrouping;
25
+ const allViewPorts = options.allViewports;
26
+ const additionalTrees = options.additionalTrees;
27
+ const modelsTreeReplacement = (_d = options.treeReplacements) === null || _d === void 0 ? void 0 : _d.modelsTree;
28
+ const categoriesTreeReplacement = (_e = options.treeReplacements) === null || _e === void 0 ? void 0 : _e.categoriesTree;
29
+ const spatialTreeReplacement = (_f = options.treeReplacements) === null || _f === void 0 ? void 0 : _f.spatialTree;
30
+ const modelsTreeComponent = (react_1.default.createElement(trees_1.ModelsTreeComponent, { iModel: imodel, allViewports: allViewPorts, activeView: activeView, enableElementsClassGrouping: enableElementsClassGrouping, ...modelsTreeProps }));
31
+ const categoriesTreeComponent = (react_1.default.createElement(trees_1.CategoriesTreeComponent, { iModel: imodel, allViewports: allViewPorts, activeView: activeView, ...categoriesTreeProps }));
32
+ const spatialContainmentComponent = (react_1.default.createElement(trees_1.SpatialTreeComponent, { iModel: imodel, enableElementsClassGrouping: enableElementsClassGrouping
33
+ ? appui_react_1.ClassGroupingOption.Yes
34
+ : appui_react_1.ClassGroupingOption.No, ...spatialTreeProps }));
35
+ const trees = [
36
+ {
37
+ label: TreeWidget_1.TreeWidget.translate("modeltree"),
38
+ id: "model-tree",
39
+ render: modelsTreeReplacement
40
+ ? modelsTreeReplacement
41
+ : () => modelsTreeComponent,
42
+ },
43
+ {
44
+ label: TreeWidget_1.TreeWidget.translate("categories"),
45
+ id: "categories-tree",
46
+ render: categoriesTreeReplacement
47
+ ? categoriesTreeReplacement
48
+ : () => categoriesTreeComponent,
49
+ },
50
+ {
51
+ label: TreeWidget_1.TreeWidget.translate("containment"),
52
+ id: "spatial-containment-tree",
53
+ render: spatialTreeReplacement
54
+ ? spatialTreeReplacement
55
+ : () => spatialContainmentComponent,
56
+ },
57
+ ];
58
+ if (additionalTrees)
59
+ trees.push(...additionalTrees);
60
+ this.reactNode = react_1.default.createElement(TreeWidgetComponent_1.TreeWidgetComponent, { trees: trees });
61
+ }
62
+ }
63
+ exports.TreeWidgetControl = TreeWidgetControl;
64
+ //# sourceMappingURL=TreeWidgetControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeWidgetControl.js","sourceRoot":"","sources":["../../../src/components/TreeWidgetControl.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;AAE/F,oDAI4B;AAC5B,kDAA0B;AAC1B,mCAIiB;AAEjB,+DAA4D;AAE5D,8CAA2C;AAoB3C,MAAa,iBAAkB,SAAQ,2BAAa;IAClD,YAAY,IAA4B,EAAE,OAAiC;;QACzE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QACzD,MAAM,eAAe,GAAG,MAAA,OAAO,CAAC,eAAe,0CAAE,UAAU,CAAC;QAC5D,MAAM,mBAAmB,GAAG,MAAA,OAAO,CAAC,eAAe,0CAAE,cAAc,CAAC;QACpE,MAAM,gBAAgB,GAAG,MAAA,OAAO,CAAC,eAAe,0CAAE,WAAW,CAAC;QAC9D,MAAM,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC;QACxE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAChD,MAAM,qBAAqB,GAAG,MAAA,OAAO,CAAC,gBAAgB,0CAAE,UAAU,CAAC;QACnE,MAAM,yBAAyB,GAAG,MAAA,OAAO,CAAC,gBAAgB,0CAAE,cAAc,CAAC;QAC3E,MAAM,sBAAsB,GAAG,MAAA,OAAO,CAAC,gBAAgB,0CAAE,WAAW,CAAC;QAErE,MAAM,mBAAmB,GAAG,CAC1B,8BAAC,2BAAmB,IAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,2BAA2B,EAAE,2BAA2B,KACpD,eAAe,GACnB,CACH,CAAC;QAEF,MAAM,uBAAuB,GAAG,CAC9B,8BAAC,+BAAuB,IACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,KAClB,mBAAmB,GACvB,CACH,CAAC;QAEF,MAAM,2BAA2B,GAAG,CAClC,8BAAC,4BAAoB,IACnB,MAAM,EAAE,MAAM,EACd,2BAA2B,EACzB,2BAA2B;gBACzB,CAAC,CAAC,iCAAmB,CAAC,GAAG;gBACzB,CAAC,CAAC,iCAAmB,CAAC,EAAE,KAExB,gBAAgB,GACpB,CACH,CAAC;QAEF,MAAM,KAAK,GAAkC;YAC3C;gBACE,KAAK,EAAE,uBAAU,CAAC,SAAS,CAAC,WAAW,CAAC;gBACxC,EAAE,EAAE,YAAY;gBAChB,MAAM,EAAE,qBAAqB;oBAC3B,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,GAAG,EAAE,CAAC,mBAAmB;aAC9B;YACD;gBACE,KAAK,EAAE,uBAAU,CAAC,SAAS,CAAC,YAAY,CAAC;gBACzC,EAAE,EAAE,iBAAiB;gBACrB,MAAM,EAAE,yBAAyB;oBAC/B,CAAC,CAAC,yBAAyB;oBAC3B,CAAC,CAAC,GAAG,EAAE,CAAC,uBAAuB;aAClC;YACD;gBACE,KAAK,EAAE,uBAAU,CAAC,SAAS,CAAC,aAAa,CAAC;gBAC1C,EAAE,EAAE,0BAA0B;gBAC9B,MAAM,EAAE,sBAAsB;oBAC5B,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,GAAG,EAAE,CAAC,2BAA2B;aACtC;SACF,CAAC;QAEF,IAAI,eAAe;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;QAEpD,IAAI,CAAC,SAAS,GAAG,8BAAC,yCAAmB,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC;IACzD,CAAC;CACF;AA1ED,8CA0EC","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 {\n WidgetControl,\n ConfigurableCreateInfo,\n ClassGroupingOption,\n} from \"@itwin/appui-react\";\nimport React from \"react\";\nimport {\n ModelsTreeComponent,\n CategoriesTreeComponent,\n SpatialTreeComponent,\n} from \"./trees\";\nimport { IModelConnection, Viewport } from \"@itwin/core-frontend\";\nimport { TreeWidgetComponent } from \"./TreeWidgetComponent\";\nimport { SelectableContentDefinition } from \"@itwin/components-react\";\nimport { TreeWidget } from \"../TreeWidget\";\n\nexport interface TreeWidgetControlOptions {\n iModelConnection: IModelConnection;\n activeView?: Viewport;\n enableElementsClassGrouping?: boolean;\n allViewports?: boolean;\n additionalTrees?: SelectableContentDefinition[];\n additionalProps?: {\n modelsTree?: {};\n categoriesTree?: {};\n spatialTree?: {};\n };\n treeReplacements?: {\n modelsTree?: () => React.ReactNode;\n categoriesTree?: () => React.ReactNode;\n spatialTree?: () => React.ReactNode;\n };\n}\n\nexport class TreeWidgetControl extends WidgetControl {\n constructor(info: ConfigurableCreateInfo, options: TreeWidgetControlOptions) {\n super(info, options);\n\n const { iModelConnection: imodel, activeView } = options;\n const modelsTreeProps = options.additionalProps?.modelsTree;\n const categoriesTreeProps = options.additionalProps?.categoriesTree;\n const spatialTreeProps = options.additionalProps?.spatialTree;\n const enableElementsClassGrouping = options.enableElementsClassGrouping;\n const allViewPorts = options.allViewports;\n const additionalTrees = options.additionalTrees;\n const modelsTreeReplacement = options.treeReplacements?.modelsTree;\n const categoriesTreeReplacement = options.treeReplacements?.categoriesTree;\n const spatialTreeReplacement = options.treeReplacements?.spatialTree;\n\n const modelsTreeComponent = (\n <ModelsTreeComponent\n iModel={imodel}\n allViewports={allViewPorts}\n activeView={activeView}\n enableElementsClassGrouping={enableElementsClassGrouping}\n {...modelsTreeProps}\n />\n );\n\n const categoriesTreeComponent = (\n <CategoriesTreeComponent\n iModel={imodel}\n allViewports={allViewPorts}\n activeView={activeView}\n {...categoriesTreeProps}\n />\n );\n\n const spatialContainmentComponent = (\n <SpatialTreeComponent\n iModel={imodel}\n enableElementsClassGrouping={\n enableElementsClassGrouping\n ? ClassGroupingOption.Yes\n : ClassGroupingOption.No\n }\n {...spatialTreeProps}\n />\n );\n\n const trees: SelectableContentDefinition[] = [\n {\n label: TreeWidget.translate(\"modeltree\"),\n id: \"model-tree\",\n render: modelsTreeReplacement\n ? modelsTreeReplacement\n : () => modelsTreeComponent,\n },\n {\n label: TreeWidget.translate(\"categories\"),\n id: \"categories-tree\",\n render: categoriesTreeReplacement\n ? categoriesTreeReplacement\n : () => categoriesTreeComponent,\n },\n {\n label: TreeWidget.translate(\"containment\"),\n id: \"spatial-containment-tree\",\n render: spatialTreeReplacement\n ? spatialTreeReplacement\n : () => spatialContainmentComponent,\n },\n ];\n\n if (additionalTrees) trees.push(...additionalTrees);\n\n this.reactNode = <TreeWidgetComponent trees={trees} />;\n }\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import { AbstractWidgetProps, StagePanelLocation, StagePanelSection, UiItemsProvider } from "@itwin/appui-abstract";
2
+ import { TreeWidgetControlOptions } from "./TreeWidgetControl";
3
+ export declare class TreeWidgetUiItemsProvider implements UiItemsProvider {
4
+ readonly id = "TreeWidgetUiitemsProvider";
5
+ private _imodel?;
6
+ private _activeView?;
7
+ private _enableElementsClassGrouping?;
8
+ private _allViewports?;
9
+ private _additionalTrees?;
10
+ private _modelsTreeProps?;
11
+ private _categoriesTreeProps?;
12
+ private _spatialTreeProps?;
13
+ private _modelsTreeReplacement?;
14
+ private _categoriesTreeReplacement?;
15
+ private _spatialTreeReplacement?;
16
+ constructor(props?: Partial<TreeWidgetControlOptions>);
17
+ provideWidgets(_stageId: string, stageUsage: string, location: StagePanelLocation, _section: StagePanelSection | undefined): ReadonlyArray<AbstractWidgetProps>;
18
+ }
19
+ //# sourceMappingURL=TreeWidgetUiItemsProvider.d.ts.map