@itwin/tree-widget-react 0.4.7 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/TreeWidget.js +4 -2
- package/lib/cjs/TreeWidget.js.map +1 -1
- package/lib/cjs/components/TreeWidgetUiItemsProvider.js +20 -12
- package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +1 -1
- package/lib/cjs/components/rulesets/ClassificationSystems.json +122 -0
- package/lib/cjs/components/rulesets/IModelContent.json +407 -407
- package/lib/cjs/components/trees/Common.d.ts +21 -0
- package/lib/cjs/components/trees/Common.js +21 -0
- package/lib/cjs/components/trees/Common.js.map +1 -0
- package/lib/cjs/components/trees/VisibilityTreeBase.scss +53 -0
- package/lib/cjs/components/trees/VisibilityTreeEventHandler.d.ts +67 -0
- package/lib/cjs/components/trees/VisibilityTreeEventHandler.js +147 -0
- package/lib/cjs/components/trees/VisibilityTreeEventHandler.js.map +1 -0
- package/lib/cjs/components/trees/VisibilityTreeRenderer.d.ts +43 -0
- package/lib/cjs/components/trees/VisibilityTreeRenderer.js +81 -0
- package/lib/cjs/components/trees/VisibilityTreeRenderer.js.map +1 -0
- package/lib/cjs/components/trees/category-tree/Categories.json +102 -0
- package/lib/cjs/components/trees/category-tree/CategoriesTree.d.ts +65 -0
- package/lib/cjs/components/trees/category-tree/CategoriesTree.js +121 -0
- package/lib/cjs/components/trees/category-tree/CategoriesTree.js.map +1 -0
- package/lib/{esm/components/trees → cjs/components/trees/category-tree}/CategoriesTree.scss +5 -0
- package/lib/cjs/components/trees/{CategoriesTree.d.ts → category-tree/CategoriesTreeComponent.d.ts} +2 -2
- package/lib/cjs/components/trees/{CategoriesTree.js → category-tree/CategoriesTreeComponent.js} +14 -13
- package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -0
- package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.d.ts +54 -0
- package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js +213 -0
- package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -0
- package/lib/cjs/components/trees/index.d.ts +10 -3
- package/lib/cjs/components/trees/index.js +13 -6
- package/lib/cjs/components/trees/index.js.map +1 -1
- package/lib/cjs/components/trees/models-tree/Hierarchy.GroupedByClass.json +392 -0
- package/lib/cjs/components/trees/models-tree/Hierarchy.json +387 -0
- package/lib/cjs/components/trees/models-tree/ModelsTree.d.ts +82 -0
- package/lib/cjs/components/trees/models-tree/ModelsTree.js +144 -0
- package/lib/cjs/components/trees/models-tree/ModelsTree.js.map +1 -0
- package/lib/cjs/components/trees/{ModelsTree.scss → models-tree/ModelsTree.scss} +5 -1
- package/lib/{esm/components/trees/ModelsTree.d.ts → cjs/components/trees/models-tree/ModelsTreeComponent.d.ts} +2 -2
- package/lib/cjs/components/trees/{ModelsTree.js → models-tree/ModelsTreeComponent.js} +6 -5
- package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +1 -0
- package/lib/cjs/components/trees/models-tree/ModelsTreeSearch.json +239 -0
- package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.d.ts +100 -0
- package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js +477 -0
- package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js.map +1 -0
- package/lib/cjs/components/trees/models-tree/Utils.d.ts +10 -0
- package/lib/cjs/components/trees/models-tree/Utils.js +27 -0
- package/lib/cjs/components/trees/models-tree/Utils.js.map +1 -0
- package/lib/cjs/components/trees/{SpatialTree.d.ts → spatial-tree/SpatialTreeComponent.d.ts} +2 -2
- package/lib/cjs/components/trees/{SpatialTree.js → spatial-tree/SpatialTreeComponent.js} +2 -2
- package/lib/cjs/components/trees/spatial-tree/SpatialTreeComponent.js.map +1 -0
- package/lib/cjs/tree-widget-react.js +3 -3
- package/lib/cjs/tree-widget-react.js.map +1 -1
- package/lib/cjs/types.d.ts +7 -1
- package/lib/cjs/types.js +4 -0
- package/lib/cjs/types.js.map +1 -1
- package/lib/esm/TreeWidget.js +4 -2
- package/lib/esm/TreeWidget.js.map +1 -1
- package/lib/esm/components/TreeWidgetUiItemsProvider.js +17 -9
- package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +1 -1
- package/lib/esm/components/rulesets/ClassificationSystems.json +122 -0
- package/lib/esm/components/rulesets/IModelContent.json +407 -407
- package/lib/esm/components/trees/Common.d.ts +21 -0
- package/lib/esm/components/trees/Common.js +18 -0
- package/lib/esm/components/trees/Common.js.map +1 -0
- package/lib/esm/components/trees/VisibilityTreeBase.scss +53 -0
- package/lib/esm/components/trees/VisibilityTreeEventHandler.d.ts +67 -0
- package/lib/esm/components/trees/VisibilityTreeEventHandler.js +143 -0
- package/lib/esm/components/trees/VisibilityTreeEventHandler.js.map +1 -0
- package/lib/esm/components/trees/VisibilityTreeRenderer.d.ts +43 -0
- package/lib/esm/components/trees/VisibilityTreeRenderer.js +54 -0
- package/lib/esm/components/trees/VisibilityTreeRenderer.js.map +1 -0
- package/lib/esm/components/trees/category-tree/Categories.json +102 -0
- package/lib/esm/components/trees/category-tree/CategoriesTree.d.ts +65 -0
- package/lib/esm/components/trees/category-tree/CategoriesTree.js +96 -0
- package/lib/esm/components/trees/category-tree/CategoriesTree.js.map +1 -0
- package/lib/{cjs/components/trees → esm/components/trees/category-tree}/CategoriesTree.scss +5 -0
- package/lib/esm/components/trees/{CategoriesTree.d.ts → category-tree/CategoriesTreeComponent.d.ts} +2 -2
- package/lib/esm/components/trees/{CategoriesTree.js → category-tree/CategoriesTreeComponent.js} +8 -7
- package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -0
- package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.d.ts +54 -0
- package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js +188 -0
- package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -0
- package/lib/esm/components/trees/index.d.ts +10 -3
- package/lib/esm/components/trees/index.js +13 -6
- package/lib/esm/components/trees/index.js.map +1 -1
- package/lib/esm/components/trees/models-tree/Hierarchy.GroupedByClass.json +392 -0
- package/lib/esm/components/trees/models-tree/Hierarchy.json +387 -0
- package/lib/esm/components/trees/models-tree/ModelsTree.d.ts +82 -0
- package/lib/esm/components/trees/models-tree/ModelsTree.js +121 -0
- package/lib/esm/components/trees/models-tree/ModelsTree.js.map +1 -0
- package/lib/esm/components/trees/{ModelsTree.scss → models-tree/ModelsTree.scss} +5 -1
- package/lib/{cjs/components/trees/ModelsTree.d.ts → esm/components/trees/models-tree/ModelsTreeComponent.d.ts} +2 -2
- package/lib/esm/components/trees/{ModelsTree.js → models-tree/ModelsTreeComponent.js} +6 -5
- package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +1 -0
- package/lib/esm/components/trees/models-tree/ModelsTreeSearch.json +239 -0
- package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.d.ts +100 -0
- package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js +472 -0
- package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js.map +1 -0
- package/lib/esm/components/trees/models-tree/Utils.d.ts +10 -0
- package/lib/esm/components/trees/models-tree/Utils.js +23 -0
- package/lib/esm/components/trees/models-tree/Utils.js.map +1 -0
- package/lib/esm/components/trees/{SpatialTree.d.ts → spatial-tree/SpatialTreeComponent.d.ts} +2 -2
- package/lib/esm/components/trees/{SpatialTree.js → spatial-tree/SpatialTreeComponent.js} +2 -2
- package/lib/esm/components/trees/spatial-tree/SpatialTreeComponent.js.map +1 -0
- package/lib/esm/tree-widget-react.js +3 -3
- package/lib/esm/tree-widget-react.js.map +1 -1
- package/lib/esm/types.d.ts +7 -1
- package/lib/esm/types.js +3 -1
- package/lib/esm/types.js.map +1 -1
- package/lib/public/locales/en/TreeWidget.json +39 -2
- package/package.json +54 -32
- package/lib/cjs/components/trees/CategoriesTree.js.map +0 -1
- package/lib/cjs/components/trees/ModelsTree.js.map +0 -1
- package/lib/cjs/components/trees/SpatialTree.js.map +0 -1
- package/lib/esm/components/trees/CategoriesTree.js.map +0 -1
- package/lib/esm/components/trees/ModelsTree.js.map +0 -1
- package/lib/esm/components/trees/SpatialTree.js.map +0 -1
|
@@ -0,0 +1,121 @@
|
|
|
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.getCategories = exports.toggleAllCategories = exports.CategoryTree = exports.RULESET_CATEGORIES = void 0;
|
|
27
|
+
require("./CategoriesTree.scss");
|
|
28
|
+
const React = __importStar(require("react"));
|
|
29
|
+
const components_react_1 = require("@itwin/components-react");
|
|
30
|
+
const core_frontend_1 = require("@itwin/core-frontend");
|
|
31
|
+
const core_react_1 = require("@itwin/core-react");
|
|
32
|
+
const presentation_components_1 = require("@itwin/presentation-components");
|
|
33
|
+
const presentation_frontend_1 = require("@itwin/presentation-frontend");
|
|
34
|
+
const TreeWidget_1 = require("../../../TreeWidget");
|
|
35
|
+
const VisibilityTreeEventHandler_1 = require("../VisibilityTreeEventHandler");
|
|
36
|
+
const VisibilityTreeRenderer_1 = require("../VisibilityTreeRenderer");
|
|
37
|
+
const CategoryVisibilityHandler_1 = require("./CategoryVisibilityHandler");
|
|
38
|
+
const PAGING_SIZE = 20;
|
|
39
|
+
/**
|
|
40
|
+
* Presentation rules used by ControlledCategoriesTree
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
exports.RULESET_CATEGORIES = require("./Categories.json"); // eslint-disable-line @typescript-eslint/no-var-requires
|
|
44
|
+
/**
|
|
45
|
+
* Tree which displays and manages categories contained in an iModel.
|
|
46
|
+
* @public
|
|
47
|
+
*/
|
|
48
|
+
function CategoryTree(props) {
|
|
49
|
+
var _a;
|
|
50
|
+
const { nodeLoader } = presentation_components_1.usePresentationTreeNodeLoader({
|
|
51
|
+
imodel: props.iModel,
|
|
52
|
+
ruleset: exports.RULESET_CATEGORIES,
|
|
53
|
+
pagingSize: PAGING_SIZE,
|
|
54
|
+
});
|
|
55
|
+
const { filteredNodeLoader, isFiltering, nodeHighlightingProps } = VisibilityTreeRenderer_1.useVisibilityTreeFiltering(nodeLoader, props.filterInfo, props.onFilterApplied);
|
|
56
|
+
// istanbul ignore next
|
|
57
|
+
const viewManager = (_a = props.viewManager) !== null && _a !== void 0 ? _a : core_frontend_1.IModelApp.viewManager;
|
|
58
|
+
const { activeView, allViewports, categoryVisibilityHandler } = props;
|
|
59
|
+
const currentActiveView = activeView !== null && activeView !== void 0 ? activeView : viewManager.getFirstOpenView();
|
|
60
|
+
const categories = CategoryVisibilityHandler_1.useCategories(viewManager, props.iModel, currentActiveView);
|
|
61
|
+
const visibilityHandler = useCategoryVisibilityHandler(viewManager, props.iModel, categories, currentActiveView, allViewports, categoryVisibilityHandler);
|
|
62
|
+
React.useEffect(() => {
|
|
63
|
+
setViewType(currentActiveView); // eslint-disable-line @typescript-eslint/no-floating-promises
|
|
64
|
+
}, [currentActiveView]);
|
|
65
|
+
const eventHandler = core_react_1.useDisposable(React.useCallback(() => new VisibilityTreeEventHandler_1.VisibilityTreeEventHandler({
|
|
66
|
+
nodeLoader: filteredNodeLoader,
|
|
67
|
+
visibilityHandler,
|
|
68
|
+
collapsedChildrenDisposalEnabled: true,
|
|
69
|
+
}), [filteredNodeLoader, visibilityHandler]));
|
|
70
|
+
const treeModel = components_react_1.useTreeModel(filteredNodeLoader.modelSource);
|
|
71
|
+
const treeRenderer = VisibilityTreeRenderer_1.useVisibilityTreeRenderer(false, true);
|
|
72
|
+
const overlay = isFiltering ? React.createElement("div", { className: "filteredTreeOverlay" }) : undefined;
|
|
73
|
+
const filterApplied = filteredNodeLoader !== nodeLoader;
|
|
74
|
+
const noFilteredDataRenderer = React.useCallback(() => {
|
|
75
|
+
return React.createElement(VisibilityTreeRenderer_1.VisibilityTreeNoFilteredData, { title: TreeWidget_1.TreeWidget.translate("categoriesTree.noCategoryFound"), message: TreeWidget_1.TreeWidget.translate("categoriesTree.noMatchingCategoryNames") });
|
|
76
|
+
}, []);
|
|
77
|
+
return (React.createElement("div", { className: "tree-widget-categories-tree" },
|
|
78
|
+
React.createElement(components_react_1.ControlledTree, { nodeLoader: filteredNodeLoader, model: treeModel, selectionMode: components_react_1.SelectionMode.None, eventsHandler: eventHandler, treeRenderer: treeRenderer, descriptionsEnabled: true, nodeHighlightingProps: nodeHighlightingProps, noDataRenderer: filterApplied ? noFilteredDataRenderer : undefined, width: props.width, height: props.height }),
|
|
79
|
+
overlay));
|
|
80
|
+
}
|
|
81
|
+
exports.CategoryTree = CategoryTree;
|
|
82
|
+
function useCategoryVisibilityHandler(viewManager, imodel, categories, activeView, allViewports, visibilityHandler) {
|
|
83
|
+
return core_react_1.useDisposable(React.useCallback(() =>
|
|
84
|
+
// istanbul ignore next
|
|
85
|
+
visibilityHandler !== null && visibilityHandler !== void 0 ? visibilityHandler : new CategoryVisibilityHandler_1.CategoryVisibilityHandler({ viewManager, imodel, categories, activeView, allViewports }), [viewManager, imodel, categories, activeView, allViewports, visibilityHandler]));
|
|
86
|
+
}
|
|
87
|
+
async function setViewType(activeView) {
|
|
88
|
+
if (!activeView)
|
|
89
|
+
return;
|
|
90
|
+
const view = activeView.view;
|
|
91
|
+
const viewType = view.is3d() ? "3d" : "2d";
|
|
92
|
+
await presentation_frontend_1.Presentation.presentation.vars(exports.RULESET_CATEGORIES.id).setString("ViewType", viewType);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Toggles visibility of categories to show or hide.
|
|
96
|
+
* @alpha
|
|
97
|
+
*/
|
|
98
|
+
async function toggleAllCategories(viewManager, imodel, display, viewport, forAllViewports, filteredProvider) {
|
|
99
|
+
// istanbul ignore next
|
|
100
|
+
const activeView = viewport !== null && viewport !== void 0 ? viewport : viewManager.getFirstOpenView();
|
|
101
|
+
const ids = await getCategories(imodel, activeView, filteredProvider);
|
|
102
|
+
// istanbul ignore else
|
|
103
|
+
if (ids.length > 0) {
|
|
104
|
+
CategoryVisibilityHandler_1.CategoryVisibilityHandler.enableCategory(viewManager, imodel, ids, display, forAllViewports !== null && forAllViewports !== void 0 ? forAllViewports : false);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.toggleAllCategories = toggleAllCategories;
|
|
108
|
+
/**
|
|
109
|
+
* Gets ids of all categories or categories from filtered data provider.
|
|
110
|
+
* @alpha
|
|
111
|
+
*/
|
|
112
|
+
async function getCategories(imodel, viewport, filteredProvider) {
|
|
113
|
+
if (filteredProvider) {
|
|
114
|
+
const nodes = await filteredProvider.getNodes();
|
|
115
|
+
return nodes.map((node) => CategoryVisibilityHandler_1.CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(filteredProvider.getNodeKey(node)));
|
|
116
|
+
}
|
|
117
|
+
const categories = await CategoryVisibilityHandler_1.loadCategoriesFromViewport(imodel, viewport);
|
|
118
|
+
return categories.map((category) => category.key);
|
|
119
|
+
}
|
|
120
|
+
exports.getCategories = getCategories;
|
|
121
|
+
//# sourceMappingURL=CategoriesTree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoriesTree.js","sourceRoot":"","sources":["../../../../../src/components/trees/category-tree/CategoriesTree.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport \"./CategoriesTree.scss\";\nimport * as React from \"react\";\nimport { ControlledTree, SelectionMode, useTreeModel } from \"@itwin/components-react\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { useDisposable } from \"@itwin/core-react\";\nimport { usePresentationTreeNodeLoader } from \"@itwin/presentation-components\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { TreeWidget } from \"../../../TreeWidget\";\nimport { VisibilityTreeEventHandler } from \"../VisibilityTreeEventHandler\";\nimport { useVisibilityTreeFiltering, useVisibilityTreeRenderer, VisibilityTreeNoFilteredData } from \"../VisibilityTreeRenderer\";\nimport { CategoryVisibilityHandler, loadCategoriesFromViewport, useCategories } from \"./CategoryVisibilityHandler\";\nimport type { IModelConnection, SpatialViewState, ViewManager, Viewport } from \"@itwin/core-frontend\";\nimport type { Ruleset } from \"@itwin/presentation-common\";\nimport type { IPresentationTreeDataProvider } from \"@itwin/presentation-components\";\nimport type { VisibilityTreeFilterInfo } from \"../Common\";\nimport type { Category } from \"./CategoryVisibilityHandler\";\n\nconst PAGING_SIZE = 20;\n\n/**\n * Presentation rules used by ControlledCategoriesTree\n * @internal\n */\nexport const RULESET_CATEGORIES: Ruleset = require(\"./Categories.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\n\n/**\n * Properties for the [[CategoryTree]] component\n * @public\n */\nexport interface CategoryTreeProps {\n /** Flag for accommodating all viewports */\n allViewports?: boolean;\n /** Active viewport */\n activeView?: Viewport;\n /**\n * An IModel to pull data from\n */\n iModel: IModelConnection;\n /** Width of the component */\n width: number;\n /** Height of the component */\n height: number;\n /**\n * Information for tree filtering.\n * @alpha\n */\n filterInfo?: VisibilityTreeFilterInfo;\n /**\n * Callback invoked when tree is filtered.\n */\n onFilterApplied?: (filteredDataProvider: IPresentationTreeDataProvider, matchesCount: number) => void;\n /**\n * Custom category visibility handler to use for testing\n * @internal\n */\n categoryVisibilityHandler?: CategoryVisibilityHandler;\n /**\n * Custom view manager to use for testing\n * @internal\n */\n viewManager?: ViewManager;\n}\n\n/**\n * Tree which displays and manages categories contained in an iModel.\n * @public\n */\nexport function CategoryTree(props: CategoryTreeProps) {\n const { nodeLoader } = usePresentationTreeNodeLoader({\n imodel: props.iModel,\n ruleset: RULESET_CATEGORIES,\n pagingSize: PAGING_SIZE,\n });\n\n const { filteredNodeLoader, isFiltering, nodeHighlightingProps } = useVisibilityTreeFiltering(nodeLoader, props.filterInfo, props.onFilterApplied);\n // istanbul ignore next\n const viewManager = props.viewManager ?? IModelApp.viewManager;\n const { activeView, allViewports, categoryVisibilityHandler } = props;\n const currentActiveView = activeView ?? viewManager.getFirstOpenView();\n const categories = useCategories(viewManager, props.iModel, currentActiveView);\n const visibilityHandler = useCategoryVisibilityHandler(viewManager, props.iModel, categories, currentActiveView, allViewports, categoryVisibilityHandler);\n\n React.useEffect(() => {\n setViewType(currentActiveView); // eslint-disable-line @typescript-eslint/no-floating-promises\n }, [currentActiveView]);\n\n const eventHandler = useDisposable(React.useCallback(() => new VisibilityTreeEventHandler({\n nodeLoader: filteredNodeLoader,\n visibilityHandler,\n collapsedChildrenDisposalEnabled: true,\n }), [filteredNodeLoader, visibilityHandler]));\n\n const treeModel = useTreeModel(filteredNodeLoader.modelSource);\n const treeRenderer = useVisibilityTreeRenderer(false, true);\n const overlay = isFiltering ? <div className=\"filteredTreeOverlay\" /> : undefined;\n const filterApplied = filteredNodeLoader !== nodeLoader;\n\n const noFilteredDataRenderer = React.useCallback(() => {\n return <VisibilityTreeNoFilteredData\n title={TreeWidget.translate(\"categoriesTree.noCategoryFound\")}\n message={TreeWidget.translate(\"categoriesTree.noMatchingCategoryNames\")}\n />;\n }, []);\n\n return (\n <div className=\"tree-widget-categories-tree\">\n <ControlledTree\n nodeLoader={filteredNodeLoader}\n model={treeModel}\n selectionMode={SelectionMode.None}\n eventsHandler={eventHandler}\n treeRenderer={treeRenderer}\n descriptionsEnabled={true}\n nodeHighlightingProps={nodeHighlightingProps}\n noDataRenderer={filterApplied ? noFilteredDataRenderer : undefined}\n width={props.width}\n height={props.height}\n />\n {overlay}\n </div>\n );\n}\n\nfunction useCategoryVisibilityHandler(viewManager: ViewManager, imodel: IModelConnection, categories: Category[], activeView?: Viewport, allViewports?: boolean, visibilityHandler?: CategoryVisibilityHandler) {\n return useDisposable(React.useCallback(\n () =>\n // istanbul ignore next\n visibilityHandler ?? new CategoryVisibilityHandler({ viewManager, imodel, categories, activeView, allViewports }),\n [viewManager, imodel, categories, activeView, allViewports, visibilityHandler]),\n );\n}\n\nasync function setViewType(activeView?: Viewport) {\n if (!activeView)\n return;\n\n const view = activeView.view as SpatialViewState;\n const viewType = view.is3d() ? \"3d\" : \"2d\";\n await Presentation.presentation.vars(RULESET_CATEGORIES.id).setString(\"ViewType\", viewType);\n}\n\n/**\n * Toggles visibility of categories to show or hide.\n * @alpha\n */\nexport async function toggleAllCategories(viewManager: ViewManager, imodel: IModelConnection, display: boolean, viewport?: Viewport, forAllViewports?: boolean, filteredProvider?: IPresentationTreeDataProvider) {\n // istanbul ignore next\n const activeView = viewport ?? viewManager.getFirstOpenView();\n const ids = await getCategories(imodel, activeView, filteredProvider);\n\n // istanbul ignore else\n if (ids.length > 0) {\n CategoryVisibilityHandler.enableCategory(viewManager, imodel, ids, display, forAllViewports ?? false);\n }\n}\n\n/**\n * Gets ids of all categories or categories from filtered data provider.\n * @alpha\n */\nexport async function getCategories(imodel: IModelConnection, viewport?: Viewport, filteredProvider?: IPresentationTreeDataProvider) {\n if (filteredProvider) {\n const nodes = await filteredProvider.getNodes();\n return nodes.map((node) => CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(filteredProvider.getNodeKey(node)));\n }\n\n const categories = await loadCategoriesFromViewport(imodel, viewport);\n return categories.map((category) => category.key);\n}\n"]}
|
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
@import "~@itwin/core-react/lib/cjs/core-react/index";
|
|
6
|
+
@import "../VisibilityTreeBase";
|
|
7
|
+
|
|
8
|
+
.tree-widget-categories-tree {
|
|
9
|
+
@include tree-widget-visibility-tree-base;
|
|
10
|
+
}
|
|
6
11
|
|
|
7
12
|
.tree-widget-category-tree-search-bar {
|
|
8
13
|
margin-bottom: $uicore-s;
|
package/lib/cjs/components/trees/{CategoriesTree.d.ts → category-tree/CategoriesTreeComponent.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import "./CategoriesTree.scss";
|
|
3
|
-
import type { CategoriesTreeProps } from "
|
|
3
|
+
import type { CategoriesTreeProps } from "../../../types";
|
|
4
4
|
export declare function CategoriesTreeComponent(props: CategoriesTreeProps): JSX.Element;
|
|
5
|
-
//# sourceMappingURL=
|
|
5
|
+
//# sourceMappingURL=CategoriesTreeComponent.d.ts.map
|
package/lib/cjs/components/trees/{CategoriesTree.js → category-tree/CategoriesTreeComponent.js}
RENAMED
|
@@ -24,14 +24,15 @@ exports.CategoriesTreeComponent = void 0;
|
|
|
24
24
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
25
25
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
26
26
|
*--------------------------------------------------------------------------------------------*/
|
|
27
|
+
require("./CategoriesTree.scss");
|
|
27
28
|
const react_1 = __importStar(require("react"));
|
|
28
|
-
const core_frontend_1 = require("@itwin/core-frontend");
|
|
29
29
|
const appui_react_1 = require("@itwin/appui-react");
|
|
30
|
-
const
|
|
31
|
-
require("./CategoriesTree
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
const
|
|
30
|
+
const core_frontend_1 = require("@itwin/core-frontend");
|
|
31
|
+
const CategoriesTree_1 = require("./CategoriesTree");
|
|
32
|
+
const CategoryVisibilityHandler_1 = require("./CategoryVisibilityHandler");
|
|
33
|
+
const TreeHeader_1 = require("../../header/TreeHeader");
|
|
34
|
+
const TreeFilteringState_1 = require("../../TreeFilteringState");
|
|
35
|
+
const AutoSizer_1 = require("../../utils/AutoSizer");
|
|
35
36
|
function CategoriesTreeComponent(props) {
|
|
36
37
|
const iModel = appui_react_1.useActiveIModelConnection();
|
|
37
38
|
const viewport = appui_react_1.useActiveViewport();
|
|
@@ -39,17 +40,17 @@ function CategoriesTreeComponent(props) {
|
|
|
39
40
|
const showAll = react_1.useCallback(async () => {
|
|
40
41
|
if (!iModel)
|
|
41
42
|
return;
|
|
42
|
-
return
|
|
43
|
+
return CategoriesTree_1.toggleAllCategories(core_frontend_1.IModelApp.viewManager, iModel, true, undefined, true, filteredProvider);
|
|
43
44
|
}, [iModel, filteredProvider]);
|
|
44
45
|
const hideAll = react_1.useCallback(async () => {
|
|
45
46
|
if (!iModel)
|
|
46
47
|
return;
|
|
47
|
-
return
|
|
48
|
+
return CategoriesTree_1.toggleAllCategories(core_frontend_1.IModelApp.viewManager, iModel, false, undefined, true, filteredProvider);
|
|
48
49
|
}, [iModel, filteredProvider]);
|
|
49
50
|
const invert = react_1.useCallback(async () => {
|
|
50
51
|
if (!iModel || !viewport)
|
|
51
52
|
return;
|
|
52
|
-
const ids = await
|
|
53
|
+
const ids = await CategoriesTree_1.getCategories(iModel, viewport, filteredProvider);
|
|
53
54
|
const enabled = [];
|
|
54
55
|
const disabled = [];
|
|
55
56
|
for (const id of ids) {
|
|
@@ -61,14 +62,14 @@ function CategoriesTreeComponent(props) {
|
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
// Disable enabled
|
|
64
|
-
|
|
65
|
+
CategoryVisibilityHandler_1.CategoryVisibilityHandler.enableCategory(core_frontend_1.IModelApp.viewManager, iModel, enabled, false, true);
|
|
65
66
|
// Enable disabled
|
|
66
|
-
|
|
67
|
+
CategoryVisibilityHandler_1.CategoryVisibilityHandler.enableCategory(core_frontend_1.IModelApp.viewManager, iModel, disabled, true, true);
|
|
67
68
|
}, [iModel, viewport, filteredProvider]);
|
|
68
69
|
return (react_1.default.createElement(react_1.default.Fragment, null, iModel && viewport &&
|
|
69
70
|
react_1.default.createElement(react_1.default.Fragment, null,
|
|
70
71
|
react_1.default.createElement(TreeHeader_1.TreeHeaderComponent, { searchOptions: searchOptions, showAll: showAll, hideAll: hideAll, invert: invert }),
|
|
71
|
-
react_1.default.createElement(AutoSizer_1.AutoSizer, null, ({ width, height }) => (react_1.default.createElement(
|
|
72
|
+
react_1.default.createElement(AutoSizer_1.AutoSizer, null, ({ width, height }) => (react_1.default.createElement(CategoriesTree_1.CategoryTree, { ...props, iModel: iModel, width: width, height: height, filterInfo: { filter: filterString, activeMatchIndex }, onFilterApplied: onFilterApplied }))))));
|
|
72
73
|
}
|
|
73
74
|
exports.CategoriesTreeComponent = CategoriesTreeComponent;
|
|
74
|
-
//# sourceMappingURL=
|
|
75
|
+
//# sourceMappingURL=CategoriesTreeComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoriesTreeComponent.js","sourceRoot":"","sources":["../../../../../src/components/trees/category-tree/CategoriesTreeComponent.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,iCAA+B;AAC/B,+CAA2C;AAC3C,oDAAkF;AAClF,wDAAiD;AACjD,qDAAoF;AACpF,2EAAwE;AACxE,wDAA8D;AAC9D,iEAAiE;AACjE,qDAAkD;AAGlD,SAAgB,uBAAuB,CAAC,KAA0B;IAChE,MAAM,MAAM,GAAG,uCAAyB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,+BAAiB,EAAE,CAAC;IAErC,MAAM,EACJ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,GAAG,0CAAqB,EAAE,CAAC;IAE5B,MAAM,OAAO,GAAG,mBAAW,CAAC,KAAK,IAAI,EAAE;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,OAAO,oCAAmB,CACxB,yBAAS,CAAC,WAAW,EACrB,MAAM,EACN,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,gBAAgB,CACjB,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE/B,MAAM,OAAO,GAAG,mBAAW,CAAC,KAAK,IAAI,EAAE;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,OAAO,oCAAmB,CACxB,yBAAS,CAAC,WAAW,EACrB,MAAM,EACN,KAAK,EACL,SAAS,EACT,IAAI,EACJ,gBAAgB,CACjB,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE/B,MAAM,MAAM,GAAG,mBAAW,CAAC,KAAK,IAAI,EAAE;QACpC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEjC,MAAM,GAAG,GAAG,MAAM,8BAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACpE,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;YACpB,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;gBACnC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAClB;iBAAM;gBACL,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACnB;SACF;QACD,kBAAkB;QAClB,qDAAyB,CAAC,cAAc,CACtC,yBAAS,CAAC,WAAW,EACrB,MAAM,EACN,OAAO,EACP,KAAK,EACL,IAAI,CACL,CAAC;QACF,kBAAkB;QAClB,qDAAyB,CAAC,cAAc,CACtC,yBAAS,CAAC,WAAW,EACrB,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,IAAI,CACL,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEzC,OAAO,CACL,8DACG,MAAM,IAAI,QAAQ;QACjB;YACE,8BAAC,gCAAmB,IAClB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GACd;YACF,8BAAC,qBAAS,QACP,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CACtB,8BAAC,6BAAY,OACP,KAAK,EACT,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,EACtD,eAAe,EAAE,eAAe,GAChC,CACH,CACS,CACX,CAEJ,CACJ,CAAC;AACJ,CAAC;AA9FD,0DA8FC","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 \"./CategoriesTree.scss\";\nimport React, { useCallback } from \"react\";\nimport { useActiveIModelConnection, useActiveViewport } from \"@itwin/appui-react\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { CategoryTree, getCategories, toggleAllCategories } from \"./CategoriesTree\";\nimport { CategoryVisibilityHandler } from \"./CategoryVisibilityHandler\";\nimport { TreeHeaderComponent } from \"../../header/TreeHeader\";\nimport { useTreeFilteringState } from \"../../TreeFilteringState\";\nimport { AutoSizer } from \"../../utils/AutoSizer\";\nimport type { CategoriesTreeProps } from \"../../../types\";\n\nexport function CategoriesTreeComponent(props: CategoriesTreeProps) {\n const iModel = useActiveIModelConnection();\n const viewport = useActiveViewport();\n\n const {\n searchOptions,\n filterString,\n activeMatchIndex,\n onFilterApplied,\n filteredProvider,\n } = useTreeFilteringState();\n\n const showAll = useCallback(async () => {\n if (!iModel) return;\n\n return toggleAllCategories(\n IModelApp.viewManager,\n iModel,\n true,\n undefined,\n true,\n filteredProvider\n );\n }, [iModel, filteredProvider]);\n\n const hideAll = useCallback(async () => {\n if (!iModel) return;\n return toggleAllCategories(\n IModelApp.viewManager,\n iModel,\n false,\n undefined,\n true,\n filteredProvider\n );\n }, [iModel, filteredProvider]);\n\n const invert = useCallback(async () => {\n if (!iModel || !viewport) return;\n\n const ids = await getCategories(iModel, viewport, filteredProvider);\n const enabled: string[] = [];\n const disabled: string[] = [];\n for (const id of ids) {\n if (viewport.view.viewsCategory(id)) {\n enabled.push(id);\n } else {\n disabled.push(id);\n }\n }\n // Disable enabled\n CategoryVisibilityHandler.enableCategory(\n IModelApp.viewManager,\n iModel,\n enabled,\n false,\n true\n );\n // Enable disabled\n CategoryVisibilityHandler.enableCategory(\n IModelApp.viewManager,\n iModel,\n disabled,\n true,\n true\n );\n }, [iModel, viewport, filteredProvider]);\n\n return (\n <>\n {iModel && viewport &&\n <>\n <TreeHeaderComponent\n searchOptions={searchOptions}\n showAll={showAll}\n hideAll={hideAll}\n invert={invert}\n />\n <AutoSizer>\n {({ width, height }) => (\n <CategoryTree\n {...props}\n iModel={iModel}\n width={width}\n height={height}\n filterInfo={{ filter: filterString, activeMatchIndex }}\n onFilterApplied={onFilterApplied}\n />\n )}\n </AutoSizer>\n </>\n }\n </>\n );\n}\n"]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { BeEvent } from "@itwin/core-bentley";
|
|
2
|
+
import { NodeKey } from "@itwin/presentation-common";
|
|
3
|
+
import type { IModelConnection, ViewManager, Viewport } from "@itwin/core-frontend";
|
|
4
|
+
import type { TreeNodeItem } from "@itwin/components-react";
|
|
5
|
+
import type { IVisibilityHandler, VisibilityChangeListener, VisibilityStatus } from "../VisibilityTreeEventHandler";
|
|
6
|
+
/**
|
|
7
|
+
* Loads categories from viewport or uses provided list of categories.
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare function useCategories(viewManager: ViewManager, imodel: IModelConnection, view?: Viewport): Category[];
|
|
11
|
+
/** @internal */
|
|
12
|
+
export declare function loadCategoriesFromViewport(iModel?: IModelConnection, vp?: Viewport): Promise<Category[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Data structure that describes category.
|
|
15
|
+
* @alpha
|
|
16
|
+
*/
|
|
17
|
+
export interface Category {
|
|
18
|
+
key: string;
|
|
19
|
+
children?: string[];
|
|
20
|
+
}
|
|
21
|
+
/** @alpha */
|
|
22
|
+
export interface CategoryVisibilityHandlerParams {
|
|
23
|
+
viewManager: ViewManager;
|
|
24
|
+
imodel: IModelConnection;
|
|
25
|
+
categories: Category[];
|
|
26
|
+
activeView?: Viewport;
|
|
27
|
+
allViewports?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/** @alpha */
|
|
30
|
+
export declare class CategoryVisibilityHandler implements IVisibilityHandler {
|
|
31
|
+
private _viewManager;
|
|
32
|
+
private _imodel;
|
|
33
|
+
private _pendingVisibilityChange;
|
|
34
|
+
private _activeView?;
|
|
35
|
+
private _useAllViewports;
|
|
36
|
+
private _categories;
|
|
37
|
+
constructor(params: CategoryVisibilityHandlerParams);
|
|
38
|
+
dispose(): void;
|
|
39
|
+
onVisibilityChange: BeEvent<VisibilityChangeListener>;
|
|
40
|
+
getVisibilityStatus(node: TreeNodeItem, nodeKey: NodeKey): VisibilityStatus;
|
|
41
|
+
changeVisibility(node: TreeNodeItem, nodeKey: NodeKey, shouldDisplay: boolean): Promise<void>;
|
|
42
|
+
getSubCategoryVisibility(id: string): "visible" | "hidden";
|
|
43
|
+
getCategoryVisibility(id: string): "visible" | "hidden";
|
|
44
|
+
getParent(key: string): Category | undefined;
|
|
45
|
+
private onDisplayStyleChanged;
|
|
46
|
+
private onViewedCategoriesChanged;
|
|
47
|
+
private onVisibilityChangeInternal;
|
|
48
|
+
static getInstanceIdFromTreeNodeKey(nodeKey: NodeKey): string;
|
|
49
|
+
/** Changes category display in the viewport */
|
|
50
|
+
static enableCategory(viewManager: ViewManager, imodel: IModelConnection, ids: string[], enabled: boolean, forAllViewports: boolean, enableAllSubCategories?: boolean): void;
|
|
51
|
+
/** Changes subcategory display in the viewport */
|
|
52
|
+
static enableSubCategory(viewManager: ViewManager, key: string, enabled: boolean, forAllViewports?: boolean): void;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=CategoryVisibilityHandler.d.ts.map
|
|
@@ -0,0 +1,213 @@
|
|
|
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.CategoryVisibilityHandler = exports.loadCategoriesFromViewport = exports.useCategories = void 0;
|
|
27
|
+
const React = __importStar(require("react"));
|
|
28
|
+
const components_react_1 = require("@itwin/components-react");
|
|
29
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
30
|
+
const core_common_1 = require("@itwin/core-common");
|
|
31
|
+
const core_frontend_1 = require("@itwin/core-frontend");
|
|
32
|
+
const presentation_common_1 = require("@itwin/presentation-common");
|
|
33
|
+
const EMPTY_CATEGORIES_ARRAY = [];
|
|
34
|
+
/**
|
|
35
|
+
* Loads categories from viewport or uses provided list of categories.
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
function useCategories(viewManager, imodel, view) {
|
|
39
|
+
var _a;
|
|
40
|
+
const currentView = view || viewManager.getFirstOpenView();
|
|
41
|
+
const categoriesPromise = React.useMemo(async () => loadCategoriesFromViewport(imodel, currentView), [imodel, currentView]);
|
|
42
|
+
return (_a = components_react_1.useAsyncValue(categoriesPromise)) !== null && _a !== void 0 ? _a : EMPTY_CATEGORIES_ARRAY;
|
|
43
|
+
}
|
|
44
|
+
exports.useCategories = useCategories;
|
|
45
|
+
/** @internal */
|
|
46
|
+
async function loadCategoriesFromViewport(iModel, vp) {
|
|
47
|
+
if (!vp)
|
|
48
|
+
return EMPTY_CATEGORIES_ARRAY;
|
|
49
|
+
// Query categories and add them to state
|
|
50
|
+
const selectUsedSpatialCategoryIds = "SELECT DISTINCT Category.Id as id from BisCore.GeometricElement3d WHERE Category.Id IN (SELECT ECInstanceId from BisCore.SpatialCategory)";
|
|
51
|
+
const selectUsedDrawingCategoryIds = "SELECT DISTINCT Category.Id as id from BisCore.GeometricElement2d WHERE Model.Id=? AND Category.Id IN (SELECT ECInstanceId from BisCore.DrawingCategory)";
|
|
52
|
+
const ecsql = vp.view.is3d() ? selectUsedSpatialCategoryIds : selectUsedDrawingCategoryIds;
|
|
53
|
+
const ecsql2 = `SELECT ECInstanceId as id, UserLabel as label, CodeValue as code FROM ${vp.view.is3d() ? "BisCore.SpatialCategory" : "BisCore.DrawingCategory"} WHERE ECInstanceId IN (${ecsql})`;
|
|
54
|
+
const categories = [];
|
|
55
|
+
// istanbul ignore else
|
|
56
|
+
if (iModel) {
|
|
57
|
+
const rowIterator = iModel.query(ecsql2, undefined, { rowFormat: core_common_1.QueryRowFormat.UseJsPropertyNames });
|
|
58
|
+
// istanbul ignore next
|
|
59
|
+
for await (const row of rowIterator) {
|
|
60
|
+
const subCategoryIds = iModel.subcategories.getSubCategories(row.id);
|
|
61
|
+
categories.push({ key: row.id, children: (subCategoryIds) ? [...subCategoryIds] : undefined });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return categories;
|
|
65
|
+
}
|
|
66
|
+
exports.loadCategoriesFromViewport = loadCategoriesFromViewport;
|
|
67
|
+
/** @alpha */
|
|
68
|
+
class CategoryVisibilityHandler {
|
|
69
|
+
constructor(params) {
|
|
70
|
+
var _a;
|
|
71
|
+
this.onVisibilityChange = new core_bentley_1.BeEvent();
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
73
|
+
this.onDisplayStyleChanged = () => {
|
|
74
|
+
this.onVisibilityChangeInternal();
|
|
75
|
+
};
|
|
76
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
77
|
+
this.onViewedCategoriesChanged = () => {
|
|
78
|
+
this.onVisibilityChangeInternal();
|
|
79
|
+
};
|
|
80
|
+
this._viewManager = params.viewManager;
|
|
81
|
+
this._imodel = params.imodel;
|
|
82
|
+
this._activeView = params.activeView;
|
|
83
|
+
// istanbul ignore next
|
|
84
|
+
this._useAllViewports = (_a = params.allViewports) !== null && _a !== void 0 ? _a : false;
|
|
85
|
+
this._categories = params.categories;
|
|
86
|
+
if (this._activeView) {
|
|
87
|
+
this._activeView.onDisplayStyleChanged.addListener(this.onDisplayStyleChanged);
|
|
88
|
+
this._activeView.onViewedCategoriesChanged.addListener(this.onViewedCategoriesChanged);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
dispose() {
|
|
92
|
+
if (this._activeView) {
|
|
93
|
+
this._activeView.onDisplayStyleChanged.removeListener(this.onDisplayStyleChanged);
|
|
94
|
+
this._activeView.onViewedCategoriesChanged.removeListener(this.onViewedCategoriesChanged);
|
|
95
|
+
}
|
|
96
|
+
clearTimeout(this._pendingVisibilityChange);
|
|
97
|
+
}
|
|
98
|
+
getVisibilityStatus(node, nodeKey) {
|
|
99
|
+
const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);
|
|
100
|
+
return { state: node.parentId ? this.getSubCategoryVisibility(instanceId) : this.getCategoryVisibility(instanceId) };
|
|
101
|
+
}
|
|
102
|
+
async changeVisibility(node, nodeKey, shouldDisplay) {
|
|
103
|
+
var _a;
|
|
104
|
+
// handle subcategory visibility change
|
|
105
|
+
if (node.parentId) {
|
|
106
|
+
const childId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);
|
|
107
|
+
// istanbul ignore next
|
|
108
|
+
const parentId = (_a = this.getParent(childId)) === null || _a === void 0 ? void 0 : _a.key;
|
|
109
|
+
// make sure parent category is enabled
|
|
110
|
+
if (shouldDisplay && parentId)
|
|
111
|
+
CategoryVisibilityHandler.enableCategory(this._viewManager, this._imodel, [parentId], true, this._useAllViewports, false);
|
|
112
|
+
CategoryVisibilityHandler.enableSubCategory(this._viewManager, childId, shouldDisplay, this._useAllViewports);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);
|
|
116
|
+
CategoryVisibilityHandler.enableCategory(this._viewManager, this._imodel, [instanceId], shouldDisplay, true);
|
|
117
|
+
}
|
|
118
|
+
getSubCategoryVisibility(id) {
|
|
119
|
+
const parentItem = this.getParent(id);
|
|
120
|
+
if (!parentItem || !this._activeView)
|
|
121
|
+
return "hidden";
|
|
122
|
+
const isVisible = this._activeView.view.viewsCategory(parentItem.key) && this._activeView.isSubCategoryVisible(id);
|
|
123
|
+
return isVisible ? "visible" : "hidden";
|
|
124
|
+
}
|
|
125
|
+
getCategoryVisibility(id) {
|
|
126
|
+
if (!this._activeView)
|
|
127
|
+
return "hidden";
|
|
128
|
+
return this._activeView.view.viewsCategory(id) ? "visible" : "hidden";
|
|
129
|
+
}
|
|
130
|
+
getParent(key) {
|
|
131
|
+
for (const category of this._categories) {
|
|
132
|
+
// istanbul ignore else
|
|
133
|
+
if (category.children) {
|
|
134
|
+
if (category.children.indexOf(key) !== -1)
|
|
135
|
+
return category;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
onVisibilityChangeInternal() {
|
|
141
|
+
if (this._pendingVisibilityChange)
|
|
142
|
+
return;
|
|
143
|
+
this._pendingVisibilityChange = setTimeout(() => {
|
|
144
|
+
this.onVisibilityChange.raiseEvent();
|
|
145
|
+
this._pendingVisibilityChange = undefined;
|
|
146
|
+
}, 0);
|
|
147
|
+
}
|
|
148
|
+
static getInstanceIdFromTreeNodeKey(nodeKey) {
|
|
149
|
+
return (presentation_common_1.NodeKey.isInstancesNodeKey(nodeKey) && nodeKey.instanceKeys.length > 0) ? nodeKey.instanceKeys[0].id : /* istanbul ignore next */ "";
|
|
150
|
+
}
|
|
151
|
+
/** Changes category display in the viewport */
|
|
152
|
+
static enableCategory(viewManager, imodel, ids, enabled, forAllViewports, enableAllSubCategories = true) {
|
|
153
|
+
if (!viewManager.selectedView)
|
|
154
|
+
return;
|
|
155
|
+
const updateViewport = (vp) => {
|
|
156
|
+
// Only act on viewports that are both 3D or both 2D. Important if we have multiple viewports opened and we
|
|
157
|
+
// are using 'allViewports' property
|
|
158
|
+
if (viewManager.selectedView && viewManager.selectedView.view.is3d() === vp.view.is3d()) {
|
|
159
|
+
vp.changeCategoryDisplay(ids, enabled, enableAllSubCategories);
|
|
160
|
+
// remove category overrides per model
|
|
161
|
+
const modelsContainingOverrides = [];
|
|
162
|
+
for (const ovr of vp.perModelCategoryVisibility) {
|
|
163
|
+
// istanbul ignore else
|
|
164
|
+
if (ids.findIndex((id) => id === ovr.categoryId) !== -1)
|
|
165
|
+
modelsContainingOverrides.push(ovr.modelId);
|
|
166
|
+
}
|
|
167
|
+
vp.perModelCategoryVisibility.setOverride(modelsContainingOverrides, ids, core_frontend_1.PerModelCategoryVisibility.Override.None);
|
|
168
|
+
// changeCategoryDisplay only enables subcategories, it does not disabled them. So we must do that ourselves.
|
|
169
|
+
if (false === enabled) {
|
|
170
|
+
ids.forEach((id) => {
|
|
171
|
+
const subCategoryIds = imodel.subcategories.getSubCategories(id);
|
|
172
|
+
// istanbul ignore else
|
|
173
|
+
if (subCategoryIds) {
|
|
174
|
+
subCategoryIds.forEach((subCategoryId) => CategoryVisibilityHandler.enableSubCategory(viewManager, subCategoryId, false, forAllViewports));
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
// This property let us act on all viewports or just on the selected one, configurable by the app
|
|
181
|
+
if (forAllViewports) {
|
|
182
|
+
for (const viewport of viewManager) {
|
|
183
|
+
updateViewport(viewport);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
updateViewport(viewManager.selectedView);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/** Changes subcategory display in the viewport */
|
|
191
|
+
static enableSubCategory(viewManager, key, enabled, forAllViewports) {
|
|
192
|
+
if (!viewManager.selectedView)
|
|
193
|
+
return;
|
|
194
|
+
const updateViewport = (vp) => {
|
|
195
|
+
// Only act on viewports that are both 3D or both 2D. Important if we have multiple viewports opened and we
|
|
196
|
+
// are using 'allViewports' property
|
|
197
|
+
if (viewManager.selectedView && viewManager.selectedView.view.is3d() === vp.view.is3d()) {
|
|
198
|
+
vp.changeSubCategoryDisplay(key, enabled);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
// This property let us act on all viewports or just on the selected one, configurable by the app
|
|
202
|
+
if (forAllViewports) {
|
|
203
|
+
for (const viewport of viewManager) {
|
|
204
|
+
updateViewport(viewport);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
updateViewport(viewManager.selectedView);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.CategoryVisibilityHandler = CategoryVisibilityHandler;
|
|
213
|
+
//# sourceMappingURL=CategoryVisibilityHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoryVisibilityHandler.js","sourceRoot":"","sources":["../../../../../src/components/trees/category-tree/CategoryVisibilityHandler.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport * as React from \"react\";\nimport { useAsyncValue } from \"@itwin/components-react\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { QueryRowFormat } from \"@itwin/core-common\";\nimport { PerModelCategoryVisibility } from \"@itwin/core-frontend\";\nimport { NodeKey } from \"@itwin/presentation-common\";\nimport type { IModelConnection, ViewManager, Viewport } from \"@itwin/core-frontend\";\nimport type { TreeNodeItem } from \"@itwin/components-react\";\nimport type { IVisibilityHandler, VisibilityChangeListener, VisibilityStatus } from \"../VisibilityTreeEventHandler\";\n\nconst EMPTY_CATEGORIES_ARRAY: Category[] = [];\n\n/**\n * Loads categories from viewport or uses provided list of categories.\n * @internal\n */\nexport function useCategories(viewManager: ViewManager, imodel: IModelConnection, view?: Viewport) {\n const currentView = view || viewManager.getFirstOpenView();\n const categoriesPromise = React.useMemo(async () => loadCategoriesFromViewport(imodel, currentView), [imodel, currentView]);\n return useAsyncValue(categoriesPromise) ?? EMPTY_CATEGORIES_ARRAY;\n}\n\n/** @internal */\nexport async function loadCategoriesFromViewport(iModel?: IModelConnection, vp?: Viewport) {\n if (!vp)\n return EMPTY_CATEGORIES_ARRAY;\n\n // Query categories and add them to state\n const selectUsedSpatialCategoryIds = \"SELECT DISTINCT Category.Id as id from BisCore.GeometricElement3d WHERE Category.Id IN (SELECT ECInstanceId from BisCore.SpatialCategory)\";\n const selectUsedDrawingCategoryIds = \"SELECT DISTINCT Category.Id as id from BisCore.GeometricElement2d WHERE Model.Id=? AND Category.Id IN (SELECT ECInstanceId from BisCore.DrawingCategory)\";\n const ecsql = vp.view.is3d() ? selectUsedSpatialCategoryIds : selectUsedDrawingCategoryIds;\n const ecsql2 = `SELECT ECInstanceId as id, UserLabel as label, CodeValue as code FROM ${vp.view.is3d() ? \"BisCore.SpatialCategory\" : \"BisCore.DrawingCategory\"} WHERE ECInstanceId IN (${ecsql})`;\n\n const categories: Category[] = [];\n\n // istanbul ignore else\n if (iModel) {\n const rowIterator = iModel.query(ecsql2, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });\n // istanbul ignore next\n for await (const row of rowIterator) {\n const subCategoryIds = iModel.subcategories.getSubCategories(row.id);\n categories.push({ key: row.id, children: (subCategoryIds) ? [...subCategoryIds] : undefined });\n }\n }\n\n return categories;\n}\n\n/**\n * Data structure that describes category.\n * @alpha\n */\nexport interface Category {\n key: string;\n children?: string[];\n}\n\n/** @alpha */\nexport interface CategoryVisibilityHandlerParams {\n viewManager: ViewManager;\n imodel: IModelConnection;\n categories: Category[];\n activeView?: Viewport;\n allViewports?: boolean;\n}\n\n/** @alpha */\nexport class CategoryVisibilityHandler implements IVisibilityHandler {\n private _viewManager: ViewManager;\n private _imodel: IModelConnection;\n private _pendingVisibilityChange: any | undefined;\n private _activeView?: Viewport;\n private _useAllViewports: boolean;\n private _categories: Category[];\n\n constructor(params: CategoryVisibilityHandlerParams) {\n this._viewManager = params.viewManager;\n this._imodel = params.imodel;\n this._activeView = params.activeView;\n // istanbul ignore next\n this._useAllViewports = params.allViewports ?? false;\n this._categories = params.categories;\n if (this._activeView) {\n this._activeView.onDisplayStyleChanged.addListener(this.onDisplayStyleChanged);\n this._activeView.onViewedCategoriesChanged.addListener(this.onViewedCategoriesChanged);\n }\n }\n\n public dispose() {\n if (this._activeView) {\n this._activeView.onDisplayStyleChanged.removeListener(this.onDisplayStyleChanged);\n this._activeView.onViewedCategoriesChanged.removeListener(this.onViewedCategoriesChanged);\n }\n clearTimeout(this._pendingVisibilityChange);\n }\n\n public onVisibilityChange = new BeEvent<VisibilityChangeListener>();\n\n public getVisibilityStatus(node: TreeNodeItem, nodeKey: NodeKey): VisibilityStatus {\n const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\n return { state: node.parentId ? this.getSubCategoryVisibility(instanceId) : this.getCategoryVisibility(instanceId) };\n }\n\n public async changeVisibility(node: TreeNodeItem, nodeKey: NodeKey, shouldDisplay: boolean): Promise<void> {\n // handle subcategory visibility change\n if (node.parentId) {\n const childId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\n // istanbul ignore next\n const parentId = this.getParent(childId)?.key;\n\n // make sure parent category is enabled\n if (shouldDisplay && parentId)\n CategoryVisibilityHandler.enableCategory(this._viewManager, this._imodel, [parentId], true, this._useAllViewports, false);\n\n CategoryVisibilityHandler.enableSubCategory(this._viewManager, childId, shouldDisplay, this._useAllViewports);\n return;\n }\n\n const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\n CategoryVisibilityHandler.enableCategory(this._viewManager, this._imodel, [instanceId], shouldDisplay, true);\n }\n\n public getSubCategoryVisibility(id: string) {\n const parentItem = this.getParent(id);\n if (!parentItem || !this._activeView)\n return \"hidden\";\n\n const isVisible = this._activeView.view.viewsCategory(parentItem.key) && this._activeView.isSubCategoryVisible(id);\n return isVisible ? \"visible\" : \"hidden\";\n }\n\n public getCategoryVisibility(id: string) {\n if (!this._activeView)\n return \"hidden\";\n return this._activeView.view.viewsCategory(id) ? \"visible\" : \"hidden\";\n }\n\n public getParent(key: string): Category | undefined {\n for (const category of this._categories) {\n // istanbul ignore else\n if (category.children) {\n if (category.children.indexOf(key) !== -1)\n return category;\n }\n }\n\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private onDisplayStyleChanged = () => {\n this.onVisibilityChangeInternal();\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private onViewedCategoriesChanged = () => {\n this.onVisibilityChangeInternal();\n };\n\n private onVisibilityChangeInternal() {\n if (this._pendingVisibilityChange)\n return;\n\n this._pendingVisibilityChange = setTimeout(() => {\n this.onVisibilityChange.raiseEvent();\n this._pendingVisibilityChange = undefined;\n }, 0);\n }\n\n public static getInstanceIdFromTreeNodeKey(nodeKey: NodeKey) {\n return (NodeKey.isInstancesNodeKey(nodeKey) && nodeKey.instanceKeys.length > 0) ? nodeKey.instanceKeys[0].id : /* istanbul ignore next */ \"\";\n }\n\n /** Changes category display in the viewport */\n public static enableCategory(viewManager: ViewManager, imodel: IModelConnection, ids: string[], enabled: boolean, forAllViewports: boolean, enableAllSubCategories = true) {\n if (!viewManager.selectedView)\n return;\n\n const updateViewport = (vp: Viewport) => {\n // Only act on viewports that are both 3D or both 2D. Important if we have multiple viewports opened and we\n // are using 'allViewports' property\n if (viewManager.selectedView && viewManager.selectedView.view.is3d() === vp.view.is3d()) {\n vp.changeCategoryDisplay(ids, enabled, enableAllSubCategories);\n\n // remove category overrides per model\n const modelsContainingOverrides: string[] = [];\n for (const ovr of vp.perModelCategoryVisibility) {\n // istanbul ignore else\n if (ids.findIndex((id) => id === ovr.categoryId) !== -1)\n modelsContainingOverrides.push(ovr.modelId);\n }\n vp.perModelCategoryVisibility.setOverride(modelsContainingOverrides, ids, PerModelCategoryVisibility.Override.None);\n\n // changeCategoryDisplay only enables subcategories, it does not disabled them. So we must do that ourselves.\n if (false === enabled) {\n ids.forEach((id) => {\n const subCategoryIds = imodel.subcategories.getSubCategories(id);\n // istanbul ignore else\n if (subCategoryIds) {\n subCategoryIds.forEach((subCategoryId) => CategoryVisibilityHandler.enableSubCategory(viewManager, subCategoryId, false, forAllViewports));\n }\n });\n }\n }\n };\n\n // This property let us act on all viewports or just on the selected one, configurable by the app\n if (forAllViewports) {\n for (const viewport of viewManager) {\n updateViewport(viewport);\n }\n } else {\n updateViewport(viewManager.selectedView);\n }\n }\n\n /** Changes subcategory display in the viewport */\n public static enableSubCategory(viewManager: ViewManager, key: string, enabled: boolean, forAllViewports?: boolean) {\n if (!viewManager.selectedView)\n return;\n\n const updateViewport = (vp: Viewport) => {\n // Only act on viewports that are both 3D or both 2D. Important if we have multiple viewports opened and we\n // are using 'allViewports' property\n if (viewManager.selectedView && viewManager.selectedView.view.is3d() === vp.view.is3d()) {\n vp.changeSubCategoryDisplay(key, enabled);\n }\n };\n\n // This property let us act on all viewports or just on the selected one, configurable by the app\n if (forAllViewports) {\n for (const viewport of viewManager) {\n updateViewport(viewport);\n }\n } else {\n updateViewport(viewManager.selectedView);\n }\n }\n}\n"]}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
export * from "./
|
|
2
|
-
export * from "./CategoriesTree";
|
|
3
|
-
export * from "./SpatialTree";
|
|
1
|
+
export * from "./Common";
|
|
4
2
|
export * from "./IModelContentTree";
|
|
3
|
+
export * from "./VisibilityTreeEventHandler";
|
|
4
|
+
export * from "./VisibilityTreeRenderer";
|
|
5
|
+
export * from "./category-tree/CategoriesTree";
|
|
6
|
+
export * from "./category-tree/CategoriesTreeComponent";
|
|
7
|
+
export * from "./category-tree/CategoryVisibilityHandler";
|
|
8
|
+
export * from "./models-tree/ModelsTree";
|
|
9
|
+
export * from "./models-tree/ModelsTreeComponent";
|
|
10
|
+
export * from "./models-tree/ModelsVisibilityHandler";
|
|
11
|
+
export * from "./spatial-tree/SpatialTreeComponent";
|
|
5
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
6
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
7
|
if (k2 === undefined) k2 = k;
|
|
8
8
|
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
@@ -14,8 +14,15 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
__exportStar(require("./CategoriesTree"), exports);
|
|
19
|
-
__exportStar(require("./SpatialTree"), exports);
|
|
17
|
+
__exportStar(require("./Common"), exports);
|
|
20
18
|
__exportStar(require("./IModelContentTree"), exports);
|
|
19
|
+
__exportStar(require("./VisibilityTreeEventHandler"), exports);
|
|
20
|
+
__exportStar(require("./VisibilityTreeRenderer"), exports);
|
|
21
|
+
__exportStar(require("./category-tree/CategoriesTree"), exports);
|
|
22
|
+
__exportStar(require("./category-tree/CategoriesTreeComponent"), exports);
|
|
23
|
+
__exportStar(require("./category-tree/CategoryVisibilityHandler"), exports);
|
|
24
|
+
__exportStar(require("./models-tree/ModelsTree"), exports);
|
|
25
|
+
__exportStar(require("./models-tree/ModelsTreeComponent"), exports);
|
|
26
|
+
__exportStar(require("./models-tree/ModelsVisibilityHandler"), exports);
|
|
27
|
+
__exportStar(require("./spatial-tree/SpatialTreeComponent"), exports);
|
|
21
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/trees/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/trees/index.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;;;;;;;;;;AAE/F,2CAAyB;AACzB,sDAAoC;AACpC,+DAA6C;AAC7C,2DAAyC;AACzC,iEAA+C;AAC/C,0EAAwD;AACxD,4EAA0D;AAC1D,2DAAyC;AACzC,oEAAkD;AAClD,wEAAsD;AACtD,sEAAoD","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nexport * from \"./Common\";\nexport * from \"./IModelContentTree\";\nexport * from \"./VisibilityTreeEventHandler\";\nexport * from \"./VisibilityTreeRenderer\";\nexport * from \"./category-tree/CategoriesTree\";\nexport * from \"./category-tree/CategoriesTreeComponent\";\nexport * from \"./category-tree/CategoryVisibilityHandler\";\nexport * from \"./models-tree/ModelsTree\";\nexport * from \"./models-tree/ModelsTreeComponent\";\nexport * from \"./models-tree/ModelsVisibilityHandler\";\nexport * from \"./spatial-tree/SpatialTreeComponent\";\n"]}
|