@itwin/appui-react 3.6.0-dev.5 → 3.6.0-dev.51
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/CHANGELOG.md +33 -1
- package/LICENSE.md +1 -1
- package/lib/cjs/appui-react/content/ContentLayout.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/ContentLayout.js +18 -1
- package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/cjs/appui-react/content/ContentViewManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/ContentViewManager.js +19 -1
- package/lib/cjs/appui-react/content/ContentViewManager.js.map +1 -1
- package/lib/cjs/appui-react/content/FloatingViewportContent.d.ts +6 -3
- package/lib/cjs/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/FloatingViewportContent.js +19 -8
- package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +0 -2
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js +12 -12
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/cjs/appui-react/imodel-components/Common.d.ts +2 -0
- package/lib/cjs/appui-react/imodel-components/Common.d.ts.map +1 -1
- package/lib/cjs/appui-react/imodel-components/Common.js +1 -0
- package/lib/cjs/appui-react/imodel-components/Common.js.map +1 -1
- package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts +6 -0
- package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts.map +1 -1
- package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.js +2 -0
- package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.js.map +1 -1
- package/lib/cjs/appui-react/imodel-components/VisibilityTreeRenderer.d.ts +6 -0
- package/lib/cjs/appui-react/imodel-components/VisibilityTreeRenderer.d.ts.map +1 -1
- package/lib/cjs/appui-react/imodel-components/VisibilityTreeRenderer.js +6 -0
- package/lib/cjs/appui-react/imodel-components/VisibilityTreeRenderer.js.map +1 -1
- package/lib/cjs/appui-react/imodel-components/category-tree/CategoriesTree.d.ts +5 -1
- package/lib/cjs/appui-react/imodel-components/category-tree/CategoriesTree.d.ts.map +1 -1
- package/lib/cjs/appui-react/imodel-components/category-tree/CategoriesTree.js +4 -0
- package/lib/cjs/appui-react/imodel-components/category-tree/CategoriesTree.js.map +1 -1
- package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts +9 -2
- package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts.map +1 -1
- package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js +5 -1
- package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js.map +1 -1
- package/lib/cjs/appui-react/imodel-components/models-tree/ModelsTree.d.ts +2 -0
- package/lib/cjs/appui-react/imodel-components/models-tree/ModelsTree.d.ts.map +1 -1
- package/lib/cjs/appui-react/imodel-components/models-tree/ModelsTree.js +2 -0
- package/lib/cjs/appui-react/imodel-components/models-tree/ModelsTree.js.map +1 -1
- package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts +3 -0
- package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts.map +1 -1
- package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js +2 -0
- package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js.map +1 -1
- package/lib/cjs/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.d.ts +2 -0
- package/lib/cjs/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.d.ts.map +1 -1
- package/lib/cjs/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.js +2 -0
- package/lib/cjs/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.js.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.js +3 -1
- package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +3 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +3 -5
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
- package/lib/esm/appui-react/content/ContentLayout.js +18 -1
- package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/esm/appui-react/content/ContentViewManager.d.ts.map +1 -1
- package/lib/esm/appui-react/content/ContentViewManager.js +19 -1
- package/lib/esm/appui-react/content/ContentViewManager.js.map +1 -1
- package/lib/esm/appui-react/content/FloatingViewportContent.d.ts +6 -3
- package/lib/esm/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
- package/lib/esm/appui-react/content/FloatingViewportContent.js +19 -8
- package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +0 -2
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.js +13 -13
- package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/esm/appui-react/imodel-components/Common.d.ts +2 -0
- package/lib/esm/appui-react/imodel-components/Common.d.ts.map +1 -1
- package/lib/esm/appui-react/imodel-components/Common.js +1 -0
- package/lib/esm/appui-react/imodel-components/Common.js.map +1 -1
- package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts +6 -0
- package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts.map +1 -1
- package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.js +2 -0
- package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.js.map +1 -1
- package/lib/esm/appui-react/imodel-components/VisibilityTreeRenderer.d.ts +6 -0
- package/lib/esm/appui-react/imodel-components/VisibilityTreeRenderer.d.ts.map +1 -1
- package/lib/esm/appui-react/imodel-components/VisibilityTreeRenderer.js +6 -0
- package/lib/esm/appui-react/imodel-components/VisibilityTreeRenderer.js.map +1 -1
- package/lib/esm/appui-react/imodel-components/category-tree/CategoriesTree.d.ts +5 -1
- package/lib/esm/appui-react/imodel-components/category-tree/CategoriesTree.d.ts.map +1 -1
- package/lib/esm/appui-react/imodel-components/category-tree/CategoriesTree.js +4 -0
- package/lib/esm/appui-react/imodel-components/category-tree/CategoriesTree.js.map +1 -1
- package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts +9 -2
- package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts.map +1 -1
- package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js +5 -1
- package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js.map +1 -1
- package/lib/esm/appui-react/imodel-components/models-tree/ModelsTree.d.ts +2 -0
- package/lib/esm/appui-react/imodel-components/models-tree/ModelsTree.d.ts.map +1 -1
- package/lib/esm/appui-react/imodel-components/models-tree/ModelsTree.js +2 -0
- package/lib/esm/appui-react/imodel-components/models-tree/ModelsTree.js.map +1 -1
- package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts +3 -0
- package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts.map +1 -1
- package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js +2 -0
- package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js.map +1 -1
- package/lib/esm/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.d.ts +2 -0
- package/lib/esm/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.d.ts.map +1 -1
- package/lib/esm/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.js +2 -0
- package/lib/esm/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.js.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.js +3 -1
- package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +3 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +2 -5
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/package.json +33 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelsVisibilityHandler.js","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelComponents\r\n */\r\n\r\nimport { TreeNodeItem } from \"@itwin/components-react\";\r\nimport { BeEvent, Id64String } from \"@itwin/core-bentley\";\r\nimport { QueryBinder, QueryRowFormat } from \"@itwin/core-common\";\r\nimport { IModelConnection, PerModelCategoryVisibility, Viewport } from \"@itwin/core-frontend\";\r\nimport { ECClassGroupingNodeKey, GroupingNodeKey, Keys, KeySet, NodeKey } from \"@itwin/presentation-common\";\r\nimport { IFilteredPresentationTreeDataProvider, IPresentationTreeDataProvider } from \"@itwin/presentation-components\";\r\nimport { Presentation } from \"@itwin/presentation-frontend\";\r\nimport { UiFramework } from \"../../UiFramework\";\r\nimport { IVisibilityHandler, VisibilityChangeListener, VisibilityStatus } from \"../VisibilityTreeEventHandler\";\r\nimport { CachingElementIdsContainer } from \"./Utils\";\r\n\r\n/**\r\n * Visibility tree node types.\r\n * @beta\r\n */\r\nexport enum ModelsTreeNodeType {\r\n Unknown,\r\n Subject,\r\n Model,\r\n Category,\r\n Element,\r\n Grouping,\r\n}\r\n\r\n/**\r\n * Type definition of predicate used to decide if node can be selected\r\n * @beta\r\n */\r\nexport type ModelsTreeSelectionPredicate = (key: NodeKey, type: ModelsTreeNodeType) => boolean;\r\n\r\n/**\r\n * Props for [[ModelsVisibilityHandler]]\r\n * @alpha\r\n */\r\nexport interface ModelsVisibilityHandlerProps {\r\n rulesetId: string;\r\n viewport: Viewport;\r\n hierarchyAutoUpdateEnabled?: boolean;\r\n /** @internal */\r\n subjectModelIdsCache?: SubjectModelIdsCache;\r\n}\r\n\r\n/**\r\n * Visibility handler used by [[ModelsTree]] to control visibility of the tree items.\r\n * @alpha\r\n */\r\nexport class ModelsVisibilityHandler implements IVisibilityHandler {\r\n private _props: ModelsVisibilityHandlerProps;\r\n private _pendingVisibilityChange: any | undefined;\r\n private _subjectModelIdsCache: SubjectModelIdsCache;\r\n private _filteredDataProvider?: IFilteredPresentationTreeDataProvider;\r\n private _elementIdsCache: ElementIdsCache;\r\n private _listeners = new Array<() => void>();\r\n\r\n constructor(props: ModelsVisibilityHandlerProps) {\r\n this._props = props;\r\n this._subjectModelIdsCache = props.subjectModelIdsCache ?? new SubjectModelIdsCache(this._props.viewport.iModel);\r\n this._elementIdsCache = new ElementIdsCache(this._props.viewport.iModel, this._props.rulesetId);\r\n this._listeners.push(this._props.viewport.onViewedCategoriesPerModelChanged.addListener(this.onViewChanged));\r\n this._listeners.push(this._props.viewport.onViewedCategoriesChanged.addListener(this.onViewChanged));\r\n this._listeners.push(this._props.viewport.onViewedModelsChanged.addListener(this.onViewChanged));\r\n this._listeners.push(this._props.viewport.onAlwaysDrawnChanged.addListener(this.onElementAlwaysDrawnChanged));\r\n this._listeners.push(this._props.viewport.onNeverDrawnChanged.addListener(this.onElementNeverDrawnChanged));\r\n if (this._props.hierarchyAutoUpdateEnabled) {\r\n this._listeners.push(Presentation.presentation.onIModelHierarchyChanged.addListener(/* istanbul ignore next */() => this._elementIdsCache.clear()));\r\n }\r\n }\r\n\r\n public dispose() {\r\n this._listeners.forEach((remove) => remove());\r\n clearTimeout(this._pendingVisibilityChange);\r\n }\r\n\r\n public onVisibilityChange = new BeEvent<VisibilityChangeListener>();\r\n\r\n /** Sets data provider that is used to get filtered tree hierarchy. */\r\n public setFilteredDataProvider(provider: IFilteredPresentationTreeDataProvider | undefined) { this._filteredDataProvider = provider; }\r\n\r\n public static getNodeType(item: TreeNodeItem, dataProvider: IPresentationTreeDataProvider) {\r\n if (NodeKey.isClassGroupingNodeKey(dataProvider.getNodeKey(item)))\r\n return ModelsTreeNodeType.Grouping;\r\n\r\n if (!item.extendedData)\r\n return ModelsTreeNodeType.Unknown;\r\n\r\n if (this.isSubjectNode(item))\r\n return ModelsTreeNodeType.Subject;\r\n if (this.isModelNode(item))\r\n return ModelsTreeNodeType.Model;\r\n if (this.isCategoryNode(item))\r\n return ModelsTreeNodeType.Category;\r\n return ModelsTreeNodeType.Element;\r\n }\r\n\r\n public static isSubjectNode(node: TreeNodeItem) {\r\n return node.extendedData && node.extendedData.isSubject;\r\n }\r\n public static isModelNode(node: TreeNodeItem) {\r\n return node.extendedData && node.extendedData.isModel;\r\n }\r\n public static isCategoryNode(node: TreeNodeItem) {\r\n return node.extendedData && node.extendedData.isCategory;\r\n }\r\n\r\n /** Returns visibility status of the tree node. */\r\n public getVisibilityStatus(node: TreeNodeItem, nodeKey: NodeKey): VisibilityStatus | Promise<VisibilityStatus> {\r\n if (NodeKey.isClassGroupingNodeKey(nodeKey))\r\n return this.getElementGroupingNodeDisplayStatus(node.id, nodeKey);\r\n\r\n if (!NodeKey.isInstancesNodeKey(nodeKey))\r\n return { state: \"hidden\", isDisabled: true };\r\n\r\n if (ModelsVisibilityHandler.isSubjectNode(node)) {\r\n // note: subject nodes may be merged to represent multiple subject instances\r\n return this.getSubjectNodeVisibility(nodeKey.instanceKeys.map((key) => key.id), node);\r\n }\r\n if (ModelsVisibilityHandler.isModelNode(node))\r\n return this.getModelDisplayStatus(nodeKey.instanceKeys[0].id);\r\n if (ModelsVisibilityHandler.isCategoryNode(node))\r\n return this.getCategoryDisplayStatus(nodeKey.instanceKeys[0].id, this.getCategoryParentModelId(node));\r\n return this.getElementDisplayStatus(nodeKey.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node));\r\n }\r\n\r\n /** Changes visibility of the items represented by the tree node. */\r\n public async changeVisibility(node: TreeNodeItem, nodeKey: NodeKey, on: boolean) {\r\n if (NodeKey.isClassGroupingNodeKey(nodeKey)) {\r\n await this.changeElementGroupingNodeState(nodeKey, on);\r\n return;\r\n }\r\n\r\n if (!NodeKey.isInstancesNodeKey(nodeKey))\r\n return;\r\n\r\n if (ModelsVisibilityHandler.isSubjectNode(node)) {\r\n await this.changeSubjectNodeState(nodeKey.instanceKeys.map((key) => key.id), node, on);\r\n } else if (ModelsVisibilityHandler.isModelNode(node)) {\r\n await this.changeModelState(nodeKey.instanceKeys[0].id, on);\r\n } else if (ModelsVisibilityHandler.isCategoryNode(node)) {\r\n this.changeCategoryState(nodeKey.instanceKeys[0].id, this.getCategoryParentModelId(node), on);\r\n } else {\r\n await this.changeElementState(nodeKey.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node), on);\r\n }\r\n }\r\n\r\n protected async getSubjectNodeVisibility(ids: Id64String[], node: TreeNodeItem): Promise<VisibilityStatus> {\r\n if (!this._props.viewport.view.isSpatialView())\r\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"subject.nonSpatialView\") };\r\n\r\n if (this._filteredDataProvider)\r\n return this.getFilteredSubjectDisplayStatus(this._filteredDataProvider, ids, node);\r\n\r\n return this.getSubjectDisplayStatus(ids);\r\n }\r\n\r\n private async getSubjectDisplayStatus(ids: Id64String[]): Promise<VisibilityStatus> {\r\n const modelIds = await this.getSubjectModelIds(ids);\r\n const isDisplayed = modelIds.some((modelId) => this.getModelDisplayStatus(modelId).state === \"visible\");\r\n if (isDisplayed)\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"subject.atLeastOneModelVisible\") };\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"subject.allModelsHidden\") };\r\n }\r\n\r\n private async getFilteredSubjectDisplayStatus(provider: IFilteredPresentationTreeDataProvider, ids: Id64String[], node: TreeNodeItem): Promise<VisibilityStatus> {\r\n if (provider.nodeMatchesFilter(node))\r\n return this.getSubjectDisplayStatus(ids);\r\n\r\n const children = await provider.getNodes(node);\r\n const childrenDisplayStatuses = await Promise.all(children.map((childNode) => this.getVisibilityStatus(childNode, provider.getNodeKey(childNode))));\r\n if (childrenDisplayStatuses.some((status) => status.state === \"visible\"))\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"subject.atLeastOneModelVisible\") };\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"subject.allModelsHidden\") };\r\n }\r\n\r\n protected getModelDisplayStatus(id: Id64String): VisibilityStatus {\r\n if (!this._props.viewport.view.isSpatialView())\r\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"model.nonSpatialView\") };\r\n const isDisplayed = this._props.viewport.view.viewsModel(id);\r\n return { state: isDisplayed ? \"visible\" : \"hidden\", tooltip: createTooltip(isDisplayed ? \"visible\" : \"hidden\", undefined) };\r\n }\r\n\r\n protected getCategoryDisplayStatus(id: Id64String, parentModelId: Id64String | undefined): VisibilityStatus {\r\n if (parentModelId) {\r\n if (this.getModelDisplayStatus(parentModelId).state === \"hidden\")\r\n return { state: \"hidden\", isDisabled: true, tooltip: createTooltip(\"disabled\", \"category.modelNotDisplayed\") };\r\n\r\n const override = this._props.viewport.perModelCategoryVisibility.getOverride(parentModelId, id);\r\n switch (override) {\r\n case PerModelCategoryVisibility.Override.Show:\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"category.displayedThroughPerModelOverride\") };\r\n case PerModelCategoryVisibility.Override.Hide:\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"category.hiddenThroughPerModelOverride\") };\r\n }\r\n }\r\n const isDisplayed = this._props.viewport.view.viewsCategory(id);\r\n return {\r\n state: isDisplayed ? \"visible\" : \"hidden\",\r\n tooltip: isDisplayed\r\n ? createTooltip(\"visible\", \"category.displayedThroughCategorySelector\")\r\n : createTooltip(\"hidden\", \"category.hiddenThroughCategorySelector\"),\r\n };\r\n }\r\n\r\n protected async getElementGroupingNodeDisplayStatus(_id: string, key: ECClassGroupingNodeKey): Promise<VisibilityStatus> {\r\n const { modelId, categoryId, elementIds } = await this.getGroupedElementIds(key);\r\n\r\n if (!modelId || !this._props.viewport.view.viewsModel(modelId))\r\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"element.modelNotDisplayed\") };\r\n\r\n if (this._props.viewport.alwaysDrawn !== undefined && this._props.viewport.alwaysDrawn.size > 0) {\r\n let atLeastOneElementForceDisplayed = false;\r\n for await (const elementId of elementIds.getElementIds()) {\r\n if (this._props.viewport.alwaysDrawn.has(elementId)) {\r\n atLeastOneElementForceDisplayed = true;\r\n break;\r\n }\r\n }\r\n if (atLeastOneElementForceDisplayed)\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"element.displayedThroughAlwaysDrawnList\") };\r\n }\r\n\r\n if (this._props.viewport.alwaysDrawn !== undefined && this._props.viewport.alwaysDrawn.size !== 0 && this._props.viewport.isAlwaysDrawnExclusive)\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn\") };\r\n\r\n // istanbul ignore else\r\n if (this._props.viewport.neverDrawn !== undefined && this._props.viewport.neverDrawn.size > 0) {\r\n let allElementsForceHidden = true;\r\n for await (const elementId of elementIds.getElementIds()) {\r\n if (!this._props.viewport.neverDrawn.has(elementId)) {\r\n allElementsForceHidden = false;\r\n break;\r\n }\r\n }\r\n if (allElementsForceHidden)\r\n return { state: \"hidden\", tooltip: createTooltip(\"visible\", \"element.hiddenThroughNeverDrawnList\") };\r\n }\r\n\r\n if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\")\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", undefined) };\r\n\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughCategory\") };\r\n }\r\n\r\n protected getElementDisplayStatus(elementId: Id64String, modelId: Id64String | undefined, categoryId: Id64String | undefined): VisibilityStatus {\r\n if (!modelId || !this._props.viewport.view.viewsModel(modelId))\r\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"element.modelNotDisplayed\") };\r\n if (this._props.viewport.neverDrawn !== undefined && this._props.viewport.neverDrawn.has(elementId))\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughNeverDrawnList\") };\r\n if (this._props.viewport.alwaysDrawn !== undefined) {\r\n if (this._props.viewport.alwaysDrawn.has(elementId))\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"element.displayedThroughAlwaysDrawnList\") };\r\n if (this._props.viewport.alwaysDrawn.size !== 0 && this._props.viewport.isAlwaysDrawnExclusive)\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn\") };\r\n }\r\n if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\")\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", undefined) };\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughCategory\") };\r\n }\r\n\r\n protected async changeSubjectNodeState(ids: Id64String[], node: TreeNodeItem, on: boolean) {\r\n if (!this._props.viewport.view.isSpatialView())\r\n return;\r\n\r\n if (this._filteredDataProvider)\r\n return this.changeFilteredSubjectState(this._filteredDataProvider, ids, node, on);\r\n\r\n return this.changeSubjectState(ids, on);\r\n }\r\n\r\n private async changeFilteredSubjectState(provider: IFilteredPresentationTreeDataProvider, ids: Id64String[], node: TreeNodeItem, on: boolean) {\r\n if (provider.nodeMatchesFilter(node))\r\n return this.changeSubjectState(ids, on);\r\n\r\n const children = await provider.getNodes(node);\r\n return Promise.all(children.map(async (childNode) => this.changeVisibility(childNode, provider.getNodeKey(childNode), on)));\r\n }\r\n\r\n private async changeSubjectState(ids: Id64String[], on: boolean) {\r\n const modelIds = await this.getSubjectModelIds(ids);\r\n return this.changeModelsVisibility(modelIds, on);\r\n }\r\n\r\n protected async changeModelState(id: Id64String, on: boolean) {\r\n if (!this._props.viewport.view.isSpatialView())\r\n return;\r\n\r\n return this.changeModelsVisibility([id], on);\r\n }\r\n\r\n protected async changeModelsVisibility(ids: Id64String[], visible: boolean) {\r\n if (visible)\r\n return this._props.viewport.addViewedModels(ids);\r\n else\r\n this._props.viewport.changeModelDisplay(ids, false);\r\n }\r\n\r\n protected changeCategoryState(categoryId: Id64String, parentModelId: Id64String | undefined, on: boolean) {\r\n if (parentModelId) {\r\n const isDisplayedInSelector = this._props.viewport.view.viewsCategory(categoryId);\r\n const ovr = (on === isDisplayedInSelector) ? PerModelCategoryVisibility.Override.None\r\n : on ? PerModelCategoryVisibility.Override.Show : PerModelCategoryVisibility.Override.Hide;\r\n this._props.viewport.perModelCategoryVisibility.setOverride(parentModelId, categoryId, ovr);\r\n if (ovr === PerModelCategoryVisibility.Override.None && on) {\r\n // we took off the override which means the category is displayed in selector, but\r\n // doesn't mean all its subcategories are displayed - this call ensures that\r\n this._props.viewport.changeCategoryDisplay([categoryId], true, true);\r\n }\r\n return;\r\n }\r\n this._props.viewport.changeCategoryDisplay([categoryId], on, on ? true : false);\r\n }\r\n\r\n protected async changeElementGroupingNodeState(key: ECClassGroupingNodeKey, on: boolean) {\r\n const { modelId, categoryId, elementIds } = await this.getGroupedElementIds(key);\r\n await this.changeElementsState(modelId, categoryId, elementIds.getElementIds(), on);\r\n }\r\n\r\n protected async changeElementState(id: Id64String, modelId: Id64String | undefined, categoryId: Id64String | undefined, on: boolean) {\r\n const childIdsContainer = this.getAssemblyElementIds(id);\r\n async function* elementIds() {\r\n yield id;\r\n for await (const childId of childIdsContainer.getElementIds())\r\n yield childId;\r\n }\r\n await this.changeElementsState(modelId, categoryId, elementIds(), on);\r\n }\r\n\r\n protected async changeElementsState(modelId: Id64String | undefined, categoryId: Id64String | undefined, elementIds: AsyncGenerator<Id64String>, on: boolean) {\r\n const isDisplayedByDefault = modelId && this.getModelDisplayStatus(modelId).state === \"visible\"\r\n && categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\";\r\n const isHiddenDueToExclusiveAlwaysDrawnElements = this._props.viewport.isAlwaysDrawnExclusive && this._props.viewport.alwaysDrawn && 0 !== this._props.viewport.alwaysDrawn.size;\r\n const currNeverDrawn = new Set(this._props.viewport.neverDrawn ? this._props.viewport.neverDrawn : []);\r\n const currAlwaysDrawn = new Set(this._props.viewport.alwaysDrawn ?\r\n this._props.viewport.alwaysDrawn : /* istanbul ignore next */[],\r\n );\r\n for await (const elementId of elementIds) {\r\n if (on) {\r\n currNeverDrawn.delete(elementId);\r\n if (!isDisplayedByDefault || isHiddenDueToExclusiveAlwaysDrawnElements)\r\n currAlwaysDrawn.add(elementId);\r\n } else {\r\n currAlwaysDrawn.delete(elementId);\r\n if (isDisplayedByDefault && !isHiddenDueToExclusiveAlwaysDrawnElements)\r\n currNeverDrawn.add(elementId);\r\n }\r\n }\r\n this._props.viewport.setNeverDrawn(currNeverDrawn);\r\n this._props.viewport.setAlwaysDrawn(currAlwaysDrawn, this._props.viewport.isAlwaysDrawnExclusive);\r\n }\r\n\r\n private onVisibilityChangeInternal() {\r\n if (this._pendingVisibilityChange)\r\n return;\r\n\r\n this._pendingVisibilityChange = setTimeout(() => {\r\n this.onVisibilityChange.raiseEvent();\r\n this._pendingVisibilityChange = undefined;\r\n }, 0);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onViewChanged = (_vp: Viewport) => {\r\n this.onVisibilityChangeInternal();\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onElementAlwaysDrawnChanged = () => {\r\n this.onVisibilityChangeInternal();\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onElementNeverDrawnChanged = () => {\r\n this.onVisibilityChangeInternal();\r\n };\r\n\r\n private getCategoryParentModelId(categoryNode: TreeNodeItem): Id64String | undefined {\r\n return categoryNode.extendedData ? categoryNode.extendedData.modelId : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n private getElementModelId(elementNode: TreeNodeItem): Id64String | undefined {\r\n return elementNode.extendedData ? elementNode.extendedData.modelId : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n private getElementCategoryId(elementNode: TreeNodeItem): Id64String | undefined {\r\n return elementNode.extendedData ? elementNode.extendedData.categoryId : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n private async getSubjectModelIds(subjectIds: Id64String[]) {\r\n return (await Promise.all(subjectIds.map(async (id) => this._subjectModelIdsCache.getSubjectModelIds(id))))\r\n .reduce((allModelIds: Id64String[], curr: Id64String[]) => [...allModelIds, ...curr], []);\r\n }\r\n\r\n // istanbul ignore next\r\n private getAssemblyElementIds(assemblyId: Id64String) {\r\n return this._elementIdsCache.getAssemblyElementIds(assemblyId);\r\n }\r\n\r\n // istanbul ignore next\r\n private async getGroupedElementIds(groupingNodeKey: GroupingNodeKey) {\r\n return this._elementIdsCache.getGroupedElementIds(groupingNodeKey);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class SubjectModelIdsCache {\r\n private _imodel: IModelConnection;\r\n private _subjectsHierarchy: Map<Id64String, Id64String[]> | undefined;\r\n private _subjectModels: Map<Id64String, Id64String[]> | undefined;\r\n private _init: Promise<void> | undefined;\r\n\r\n constructor(imodel: IModelConnection) {\r\n this._imodel = imodel;\r\n }\r\n\r\n private async initSubjectModels() {\r\n const querySubjects = (): AsyncIterableIterator<{ id: Id64String, parentId?: Id64String, targetPartitionId?: Id64String }> => {\r\n const subjectsQuery = `\r\n SELECT ECInstanceId id, Parent.Id parentId, json_extract(JsonProperties, '$.Subject.Model.TargetPartition') targetPartitionId\r\n FROM bis.Subject\r\n `;\r\n return this._imodel.query(subjectsQuery, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });\r\n };\r\n const queryModels = (): AsyncIterableIterator<{ id: Id64String, parentId: Id64String }> => {\r\n const modelsQuery = `\r\n SELECT p.ECInstanceId id, p.Parent.Id parentId\r\n FROM bis.InformationPartitionElement p\r\n INNER JOIN bis.GeometricModel3d m ON m.ModeledElement.Id = p.ECInstanceId\r\n WHERE NOT m.IsPrivate\r\n `;\r\n return this._imodel.query(modelsQuery, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });\r\n };\r\n\r\n function pushToMap<TKey, TValue>(map: Map<TKey, TValue[]>, key: TKey, value: TValue) {\r\n let list = map.get(key);\r\n if (!list) {\r\n list = [];\r\n map.set(key, list);\r\n }\r\n list.push(value);\r\n }\r\n\r\n this._subjectsHierarchy = new Map();\r\n const targetPartitionSubjects = new Map<Id64String, Id64String[]>();\r\n for await (const subject of querySubjects()) {\r\n // istanbul ignore else\r\n if (subject.parentId)\r\n pushToMap(this._subjectsHierarchy, subject.parentId, subject.id);\r\n // istanbul ignore if\r\n if (subject.targetPartitionId)\r\n pushToMap(targetPartitionSubjects, subject.targetPartitionId, subject.id);\r\n }\r\n\r\n this._subjectModels = new Map();\r\n for await (const model of queryModels()) {\r\n // istanbul ignore next\r\n const subjectIds = targetPartitionSubjects.get(model.id) ?? [];\r\n // istanbul ignore else\r\n if (!subjectIds.includes(model.parentId))\r\n subjectIds.push(model.parentId);\r\n\r\n subjectIds.forEach((subjectId) => {\r\n pushToMap(this._subjectModels!, subjectId, model.id);\r\n });\r\n }\r\n }\r\n\r\n private async initCache() {\r\n if (!this._init) {\r\n this._init = this.initSubjectModels().then(() => { });\r\n }\r\n return this._init;\r\n }\r\n\r\n private appendSubjectModelsRecursively(modelIds: Id64String[], subjectId: Id64String) {\r\n const subjectModelIds = this._subjectModels!.get(subjectId);\r\n if (subjectModelIds)\r\n modelIds.push(...subjectModelIds);\r\n\r\n const childSubjectIds = this._subjectsHierarchy!.get(subjectId);\r\n if (childSubjectIds)\r\n childSubjectIds.forEach((cs) => this.appendSubjectModelsRecursively(modelIds, cs));\r\n }\r\n\r\n public async getSubjectModelIds(subjectId: Id64String): Promise<Id64String[]> {\r\n await this.initCache();\r\n const modelIds = new Array<Id64String>();\r\n this.appendSubjectModelsRecursively(modelIds, subjectId);\r\n return modelIds;\r\n }\r\n}\r\n\r\ninterface GroupedElementIds {\r\n modelId?: string;\r\n categoryId?: string;\r\n elementIds: CachingElementIdsContainer;\r\n}\r\n\r\n// istanbul ignore next\r\nclass ElementIdsCache {\r\n private _assemblyElementIdsCache = new Map<string, CachingElementIdsContainer>();\r\n private _groupedElementIdsCache = new Map<string, GroupedElementIds>();\r\n\r\n constructor(private _imodel: IModelConnection, private _rulesetId: string) {\r\n }\r\n\r\n public clear() {\r\n this._assemblyElementIdsCache.clear();\r\n this._groupedElementIdsCache.clear();\r\n }\r\n\r\n public getAssemblyElementIds(assemblyId: Id64String) {\r\n const ids = this._assemblyElementIdsCache.get(assemblyId);\r\n if (ids)\r\n return ids;\r\n\r\n const container = createAssemblyElementIdsContainer(this._imodel, this._rulesetId, assemblyId);\r\n this._assemblyElementIdsCache.set(assemblyId, container);\r\n return container;\r\n }\r\n\r\n public async getGroupedElementIds(groupingNodeKey: GroupingNodeKey): Promise<GroupedElementIds> {\r\n const keyString = JSON.stringify(groupingNodeKey);\r\n const ids = this._groupedElementIdsCache.get(keyString);\r\n if (ids)\r\n return ids;\r\n const info = await createGroupedElementsInfo(this._imodel, this._rulesetId, groupingNodeKey);\r\n this._groupedElementIdsCache.set(keyString, info);\r\n return info;\r\n }\r\n}\r\n\r\n// istanbul ignore next\r\nasync function* createInstanceIdsGenerator(imodel: IModelConnection, rulesetId: string, displayType: string, inputKeys: Keys) {\r\n const res = await Presentation.presentation.getContentInstanceKeys({\r\n imodel,\r\n rulesetOrId: rulesetId,\r\n displayType,\r\n keys: new KeySet(inputKeys),\r\n });\r\n for await (const key of res.items()) {\r\n yield key.id;\r\n }\r\n}\r\n\r\n// istanbul ignore next\r\nfunction createAssemblyElementIdsContainer(imodel: IModelConnection, rulesetId: string, assemblyId: Id64String) {\r\n return new CachingElementIdsContainer(createInstanceIdsGenerator(imodel, rulesetId, \"AssemblyElementsRequest\", [{ className: \"BisCore:Element\", id: assemblyId }]));\r\n}\r\n\r\n// istanbul ignore next\r\nasync function createGroupedElementsInfo(imodel: IModelConnection, rulesetId: string, groupingNodeKey: GroupingNodeKey) {\r\n const groupedElementIdsContainer = new CachingElementIdsContainer(createInstanceIdsGenerator(imodel, rulesetId, \"AssemblyElementsRequest\", [groupingNodeKey]));\r\n const elementId = await groupedElementIdsContainer.getElementIds().next();\r\n if (elementId.done)\r\n throw new Error(\"Invalid grouping node key\");\r\n\r\n let modelId, categoryId;\r\n const query = `SELECT Model.Id AS modelId, Category.Id AS categoryId FROM bis.GeometricElement3d WHERE ECInstanceId = ? LIMIT 1`;\r\n for await (const modelAndCategoryIds of imodel.query(query, QueryBinder.from([elementId.value]), { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\r\n modelId = modelAndCategoryIds.modelId;\r\n categoryId = modelAndCategoryIds.categoryId;\r\n break;\r\n }\r\n return { modelId, categoryId, elementIds: groupedElementIdsContainer };\r\n}\r\n\r\nconst createTooltip = (status: \"visible\" | \"hidden\" | \"disabled\", tooltipStringId: string | undefined): string => {\r\n const statusStringId = `UiFramework:modelTree.status.${status}`;\r\n const statusString = UiFramework.localization.getLocalizedString(statusStringId);\r\n if (!tooltipStringId)\r\n return statusString;\r\n\r\n tooltipStringId = `UiFramework:modelTree.tooltips.${tooltipStringId}`;\r\n const tooltipString = UiFramework.localization.getLocalizedString(tooltipStringId);\r\n return `${statusString}: ${tooltipString}`;\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"ModelsVisibilityHandler.js","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelComponents\r\n */\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\nimport { TreeNodeItem } from \"@itwin/components-react\";\r\nimport { BeEvent, Id64String } from \"@itwin/core-bentley\";\r\nimport { QueryBinder, QueryRowFormat } from \"@itwin/core-common\";\r\nimport { IModelConnection, PerModelCategoryVisibility, Viewport } from \"@itwin/core-frontend\";\r\nimport { ECClassGroupingNodeKey, GroupingNodeKey, Keys, KeySet, NodeKey } from \"@itwin/presentation-common\";\r\nimport { IFilteredPresentationTreeDataProvider, IPresentationTreeDataProvider } from \"@itwin/presentation-components\";\r\nimport { Presentation } from \"@itwin/presentation-frontend\";\r\nimport { UiFramework } from \"../../UiFramework\";\r\nimport { IVisibilityHandler, VisibilityChangeListener, VisibilityStatus } from \"../VisibilityTreeEventHandler\";\r\nimport { CachingElementIdsContainer } from \"./Utils\";\r\n\r\n/**\r\n * Visibility tree node types.\r\n * @beta\r\n * @deprecated Was moved to `@itwin/tree-widget-react` package.\r\n */\r\nexport enum ModelsTreeNodeType {\r\n Unknown,\r\n Subject,\r\n Model,\r\n Category,\r\n Element,\r\n Grouping,\r\n}\r\n\r\n/**\r\n * Type definition of predicate used to decide if node can be selected\r\n * @beta\r\n * @deprecated Was moved to `@itwin/tree-widget-react` package.\r\n */\r\nexport type ModelsTreeSelectionPredicate = (key: NodeKey, type: ModelsTreeNodeType) => boolean;\r\n\r\n/**\r\n * Props for [[ModelsVisibilityHandler]]\r\n * @alpha\r\n */\r\nexport interface ModelsVisibilityHandlerProps {\r\n rulesetId: string;\r\n viewport: Viewport;\r\n hierarchyAutoUpdateEnabled?: boolean;\r\n /** @internal */\r\n subjectModelIdsCache?: SubjectModelIdsCache;\r\n}\r\n\r\n/**\r\n * Visibility handler used by [[ModelsTree]] to control visibility of the tree items.\r\n * @alpha\r\n * @deprecated Was moved to `@itwin/tree-widget-react` package.\r\n */\r\nexport class ModelsVisibilityHandler implements IVisibilityHandler {\r\n private _props: ModelsVisibilityHandlerProps;\r\n private _pendingVisibilityChange: any | undefined;\r\n private _subjectModelIdsCache: SubjectModelIdsCache;\r\n private _filteredDataProvider?: IFilteredPresentationTreeDataProvider;\r\n private _elementIdsCache: ElementIdsCache;\r\n private _listeners = new Array<() => void>();\r\n\r\n constructor(props: ModelsVisibilityHandlerProps) {\r\n this._props = props;\r\n this._subjectModelIdsCache = props.subjectModelIdsCache ?? new SubjectModelIdsCache(this._props.viewport.iModel);\r\n this._elementIdsCache = new ElementIdsCache(this._props.viewport.iModel, this._props.rulesetId);\r\n this._listeners.push(this._props.viewport.onViewedCategoriesPerModelChanged.addListener(this.onViewChanged));\r\n this._listeners.push(this._props.viewport.onViewedCategoriesChanged.addListener(this.onViewChanged));\r\n this._listeners.push(this._props.viewport.onViewedModelsChanged.addListener(this.onViewChanged));\r\n this._listeners.push(this._props.viewport.onAlwaysDrawnChanged.addListener(this.onElementAlwaysDrawnChanged));\r\n this._listeners.push(this._props.viewport.onNeverDrawnChanged.addListener(this.onElementNeverDrawnChanged));\r\n if (this._props.hierarchyAutoUpdateEnabled) {\r\n this._listeners.push(Presentation.presentation.onIModelHierarchyChanged.addListener(/* istanbul ignore next */() => this._elementIdsCache.clear()));\r\n }\r\n }\r\n\r\n public dispose() {\r\n this._listeners.forEach((remove) => remove());\r\n clearTimeout(this._pendingVisibilityChange);\r\n }\r\n\r\n public onVisibilityChange = new BeEvent<VisibilityChangeListener>();\r\n\r\n /** Sets data provider that is used to get filtered tree hierarchy. */\r\n public setFilteredDataProvider(provider: IFilteredPresentationTreeDataProvider | undefined) { this._filteredDataProvider = provider; }\r\n\r\n public static getNodeType(item: TreeNodeItem, dataProvider: IPresentationTreeDataProvider) {\r\n if (NodeKey.isClassGroupingNodeKey(dataProvider.getNodeKey(item)))\r\n return ModelsTreeNodeType.Grouping;\r\n\r\n if (!item.extendedData)\r\n return ModelsTreeNodeType.Unknown;\r\n\r\n if (this.isSubjectNode(item))\r\n return ModelsTreeNodeType.Subject;\r\n if (this.isModelNode(item))\r\n return ModelsTreeNodeType.Model;\r\n if (this.isCategoryNode(item))\r\n return ModelsTreeNodeType.Category;\r\n return ModelsTreeNodeType.Element;\r\n }\r\n\r\n public static isSubjectNode(node: TreeNodeItem) {\r\n return node.extendedData && node.extendedData.isSubject;\r\n }\r\n public static isModelNode(node: TreeNodeItem) {\r\n return node.extendedData && node.extendedData.isModel;\r\n }\r\n public static isCategoryNode(node: TreeNodeItem) {\r\n return node.extendedData && node.extendedData.isCategory;\r\n }\r\n\r\n /** Returns visibility status of the tree node. */\r\n public getVisibilityStatus(node: TreeNodeItem, nodeKey: NodeKey): VisibilityStatus | Promise<VisibilityStatus> {\r\n if (NodeKey.isClassGroupingNodeKey(nodeKey))\r\n return this.getElementGroupingNodeDisplayStatus(node.id, nodeKey);\r\n\r\n if (!NodeKey.isInstancesNodeKey(nodeKey))\r\n return { state: \"hidden\", isDisabled: true };\r\n\r\n if (ModelsVisibilityHandler.isSubjectNode(node)) {\r\n // note: subject nodes may be merged to represent multiple subject instances\r\n return this.getSubjectNodeVisibility(nodeKey.instanceKeys.map((key) => key.id), node);\r\n }\r\n if (ModelsVisibilityHandler.isModelNode(node))\r\n return this.getModelDisplayStatus(nodeKey.instanceKeys[0].id);\r\n if (ModelsVisibilityHandler.isCategoryNode(node))\r\n return this.getCategoryDisplayStatus(nodeKey.instanceKeys[0].id, this.getCategoryParentModelId(node));\r\n return this.getElementDisplayStatus(nodeKey.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node));\r\n }\r\n\r\n /** Changes visibility of the items represented by the tree node. */\r\n public async changeVisibility(node: TreeNodeItem, nodeKey: NodeKey, on: boolean) {\r\n if (NodeKey.isClassGroupingNodeKey(nodeKey)) {\r\n await this.changeElementGroupingNodeState(nodeKey, on);\r\n return;\r\n }\r\n\r\n if (!NodeKey.isInstancesNodeKey(nodeKey))\r\n return;\r\n\r\n if (ModelsVisibilityHandler.isSubjectNode(node)) {\r\n await this.changeSubjectNodeState(nodeKey.instanceKeys.map((key) => key.id), node, on);\r\n } else if (ModelsVisibilityHandler.isModelNode(node)) {\r\n await this.changeModelState(nodeKey.instanceKeys[0].id, on);\r\n } else if (ModelsVisibilityHandler.isCategoryNode(node)) {\r\n this.changeCategoryState(nodeKey.instanceKeys[0].id, this.getCategoryParentModelId(node), on);\r\n } else {\r\n await this.changeElementState(nodeKey.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node), on);\r\n }\r\n }\r\n\r\n protected async getSubjectNodeVisibility(ids: Id64String[], node: TreeNodeItem): Promise<VisibilityStatus> {\r\n if (!this._props.viewport.view.isSpatialView())\r\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"subject.nonSpatialView\") };\r\n\r\n if (this._filteredDataProvider)\r\n return this.getFilteredSubjectDisplayStatus(this._filteredDataProvider, ids, node);\r\n\r\n return this.getSubjectDisplayStatus(ids);\r\n }\r\n\r\n private async getSubjectDisplayStatus(ids: Id64String[]): Promise<VisibilityStatus> {\r\n const modelIds = await this.getSubjectModelIds(ids);\r\n const isDisplayed = modelIds.some((modelId) => this.getModelDisplayStatus(modelId).state === \"visible\");\r\n if (isDisplayed)\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"subject.atLeastOneModelVisible\") };\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"subject.allModelsHidden\") };\r\n }\r\n\r\n private async getFilteredSubjectDisplayStatus(provider: IFilteredPresentationTreeDataProvider, ids: Id64String[], node: TreeNodeItem): Promise<VisibilityStatus> {\r\n if (provider.nodeMatchesFilter(node))\r\n return this.getSubjectDisplayStatus(ids);\r\n\r\n const children = await provider.getNodes(node);\r\n const childrenDisplayStatuses = await Promise.all(children.map((childNode) => this.getVisibilityStatus(childNode, provider.getNodeKey(childNode))));\r\n if (childrenDisplayStatuses.some((status) => status.state === \"visible\"))\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"subject.atLeastOneModelVisible\") };\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"subject.allModelsHidden\") };\r\n }\r\n\r\n protected getModelDisplayStatus(id: Id64String): VisibilityStatus {\r\n if (!this._props.viewport.view.isSpatialView())\r\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"model.nonSpatialView\") };\r\n const isDisplayed = this._props.viewport.view.viewsModel(id);\r\n return { state: isDisplayed ? \"visible\" : \"hidden\", tooltip: createTooltip(isDisplayed ? \"visible\" : \"hidden\", undefined) };\r\n }\r\n\r\n protected getCategoryDisplayStatus(id: Id64String, parentModelId: Id64String | undefined): VisibilityStatus {\r\n if (parentModelId) {\r\n if (this.getModelDisplayStatus(parentModelId).state === \"hidden\")\r\n return { state: \"hidden\", isDisabled: true, tooltip: createTooltip(\"disabled\", \"category.modelNotDisplayed\") };\r\n\r\n const override = this._props.viewport.perModelCategoryVisibility.getOverride(parentModelId, id);\r\n switch (override) {\r\n case PerModelCategoryVisibility.Override.Show:\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"category.displayedThroughPerModelOverride\") };\r\n case PerModelCategoryVisibility.Override.Hide:\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"category.hiddenThroughPerModelOverride\") };\r\n }\r\n }\r\n const isDisplayed = this._props.viewport.view.viewsCategory(id);\r\n return {\r\n state: isDisplayed ? \"visible\" : \"hidden\",\r\n tooltip: isDisplayed\r\n ? createTooltip(\"visible\", \"category.displayedThroughCategorySelector\")\r\n : createTooltip(\"hidden\", \"category.hiddenThroughCategorySelector\"),\r\n };\r\n }\r\n\r\n protected async getElementGroupingNodeDisplayStatus(_id: string, key: ECClassGroupingNodeKey): Promise<VisibilityStatus> {\r\n const { modelId, categoryId, elementIds } = await this.getGroupedElementIds(key);\r\n\r\n if (!modelId || !this._props.viewport.view.viewsModel(modelId))\r\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"element.modelNotDisplayed\") };\r\n\r\n if (this._props.viewport.alwaysDrawn !== undefined && this._props.viewport.alwaysDrawn.size > 0) {\r\n let atLeastOneElementForceDisplayed = false;\r\n for await (const elementId of elementIds.getElementIds()) {\r\n if (this._props.viewport.alwaysDrawn.has(elementId)) {\r\n atLeastOneElementForceDisplayed = true;\r\n break;\r\n }\r\n }\r\n if (atLeastOneElementForceDisplayed)\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"element.displayedThroughAlwaysDrawnList\") };\r\n }\r\n\r\n if (this._props.viewport.alwaysDrawn !== undefined && this._props.viewport.alwaysDrawn.size !== 0 && this._props.viewport.isAlwaysDrawnExclusive)\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn\") };\r\n\r\n // istanbul ignore else\r\n if (this._props.viewport.neverDrawn !== undefined && this._props.viewport.neverDrawn.size > 0) {\r\n let allElementsForceHidden = true;\r\n for await (const elementId of elementIds.getElementIds()) {\r\n if (!this._props.viewport.neverDrawn.has(elementId)) {\r\n allElementsForceHidden = false;\r\n break;\r\n }\r\n }\r\n if (allElementsForceHidden)\r\n return { state: \"hidden\", tooltip: createTooltip(\"visible\", \"element.hiddenThroughNeverDrawnList\") };\r\n }\r\n\r\n if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\")\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", undefined) };\r\n\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughCategory\") };\r\n }\r\n\r\n protected getElementDisplayStatus(elementId: Id64String, modelId: Id64String | undefined, categoryId: Id64String | undefined): VisibilityStatus {\r\n if (!modelId || !this._props.viewport.view.viewsModel(modelId))\r\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"element.modelNotDisplayed\") };\r\n if (this._props.viewport.neverDrawn !== undefined && this._props.viewport.neverDrawn.has(elementId))\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughNeverDrawnList\") };\r\n if (this._props.viewport.alwaysDrawn !== undefined) {\r\n if (this._props.viewport.alwaysDrawn.has(elementId))\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"element.displayedThroughAlwaysDrawnList\") };\r\n if (this._props.viewport.alwaysDrawn.size !== 0 && this._props.viewport.isAlwaysDrawnExclusive)\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn\") };\r\n }\r\n if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\")\r\n return { state: \"visible\", tooltip: createTooltip(\"visible\", undefined) };\r\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughCategory\") };\r\n }\r\n\r\n protected async changeSubjectNodeState(ids: Id64String[], node: TreeNodeItem, on: boolean) {\r\n if (!this._props.viewport.view.isSpatialView())\r\n return;\r\n\r\n if (this._filteredDataProvider)\r\n return this.changeFilteredSubjectState(this._filteredDataProvider, ids, node, on);\r\n\r\n return this.changeSubjectState(ids, on);\r\n }\r\n\r\n private async changeFilteredSubjectState(provider: IFilteredPresentationTreeDataProvider, ids: Id64String[], node: TreeNodeItem, on: boolean) {\r\n if (provider.nodeMatchesFilter(node))\r\n return this.changeSubjectState(ids, on);\r\n\r\n const children = await provider.getNodes(node);\r\n return Promise.all(children.map(async (childNode) => this.changeVisibility(childNode, provider.getNodeKey(childNode), on)));\r\n }\r\n\r\n private async changeSubjectState(ids: Id64String[], on: boolean) {\r\n const modelIds = await this.getSubjectModelIds(ids);\r\n return this.changeModelsVisibility(modelIds, on);\r\n }\r\n\r\n protected async changeModelState(id: Id64String, on: boolean) {\r\n if (!this._props.viewport.view.isSpatialView())\r\n return;\r\n\r\n return this.changeModelsVisibility([id], on);\r\n }\r\n\r\n protected async changeModelsVisibility(ids: Id64String[], visible: boolean) {\r\n if (visible)\r\n return this._props.viewport.addViewedModels(ids);\r\n else\r\n this._props.viewport.changeModelDisplay(ids, false);\r\n }\r\n\r\n protected changeCategoryState(categoryId: Id64String, parentModelId: Id64String | undefined, on: boolean) {\r\n if (parentModelId) {\r\n const isDisplayedInSelector = this._props.viewport.view.viewsCategory(categoryId);\r\n const ovr = (on === isDisplayedInSelector) ? PerModelCategoryVisibility.Override.None\r\n : on ? PerModelCategoryVisibility.Override.Show : PerModelCategoryVisibility.Override.Hide;\r\n this._props.viewport.perModelCategoryVisibility.setOverride(parentModelId, categoryId, ovr);\r\n if (ovr === PerModelCategoryVisibility.Override.None && on) {\r\n // we took off the override which means the category is displayed in selector, but\r\n // doesn't mean all its subcategories are displayed - this call ensures that\r\n this._props.viewport.changeCategoryDisplay([categoryId], true, true);\r\n }\r\n return;\r\n }\r\n this._props.viewport.changeCategoryDisplay([categoryId], on, on ? true : false);\r\n }\r\n\r\n protected async changeElementGroupingNodeState(key: ECClassGroupingNodeKey, on: boolean) {\r\n const { modelId, categoryId, elementIds } = await this.getGroupedElementIds(key);\r\n await this.changeElementsState(modelId, categoryId, elementIds.getElementIds(), on);\r\n }\r\n\r\n protected async changeElementState(id: Id64String, modelId: Id64String | undefined, categoryId: Id64String | undefined, on: boolean) {\r\n const childIdsContainer = this.getAssemblyElementIds(id);\r\n async function* elementIds() {\r\n yield id;\r\n for await (const childId of childIdsContainer.getElementIds())\r\n yield childId;\r\n }\r\n await this.changeElementsState(modelId, categoryId, elementIds(), on);\r\n }\r\n\r\n protected async changeElementsState(modelId: Id64String | undefined, categoryId: Id64String | undefined, elementIds: AsyncGenerator<Id64String>, on: boolean) {\r\n const isDisplayedByDefault = modelId && this.getModelDisplayStatus(modelId).state === \"visible\"\r\n && categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\";\r\n const isHiddenDueToExclusiveAlwaysDrawnElements = this._props.viewport.isAlwaysDrawnExclusive && this._props.viewport.alwaysDrawn && 0 !== this._props.viewport.alwaysDrawn.size;\r\n const currNeverDrawn = new Set(this._props.viewport.neverDrawn ? this._props.viewport.neverDrawn : []);\r\n const currAlwaysDrawn = new Set(this._props.viewport.alwaysDrawn ?\r\n this._props.viewport.alwaysDrawn : /* istanbul ignore next */[],\r\n );\r\n for await (const elementId of elementIds) {\r\n if (on) {\r\n currNeverDrawn.delete(elementId);\r\n if (!isDisplayedByDefault || isHiddenDueToExclusiveAlwaysDrawnElements)\r\n currAlwaysDrawn.add(elementId);\r\n } else {\r\n currAlwaysDrawn.delete(elementId);\r\n if (isDisplayedByDefault && !isHiddenDueToExclusiveAlwaysDrawnElements)\r\n currNeverDrawn.add(elementId);\r\n }\r\n }\r\n this._props.viewport.setNeverDrawn(currNeverDrawn);\r\n this._props.viewport.setAlwaysDrawn(currAlwaysDrawn, this._props.viewport.isAlwaysDrawnExclusive);\r\n }\r\n\r\n private onVisibilityChangeInternal() {\r\n if (this._pendingVisibilityChange)\r\n return;\r\n\r\n this._pendingVisibilityChange = setTimeout(() => {\r\n this.onVisibilityChange.raiseEvent();\r\n this._pendingVisibilityChange = undefined;\r\n }, 0);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onViewChanged = (_vp: Viewport) => {\r\n this.onVisibilityChangeInternal();\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onElementAlwaysDrawnChanged = () => {\r\n this.onVisibilityChangeInternal();\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onElementNeverDrawnChanged = () => {\r\n this.onVisibilityChangeInternal();\r\n };\r\n\r\n private getCategoryParentModelId(categoryNode: TreeNodeItem): Id64String | undefined {\r\n return categoryNode.extendedData ? categoryNode.extendedData.modelId : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n private getElementModelId(elementNode: TreeNodeItem): Id64String | undefined {\r\n return elementNode.extendedData ? elementNode.extendedData.modelId : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n private getElementCategoryId(elementNode: TreeNodeItem): Id64String | undefined {\r\n return elementNode.extendedData ? elementNode.extendedData.categoryId : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n private async getSubjectModelIds(subjectIds: Id64String[]) {\r\n return (await Promise.all(subjectIds.map(async (id) => this._subjectModelIdsCache.getSubjectModelIds(id))))\r\n .reduce((allModelIds: Id64String[], curr: Id64String[]) => [...allModelIds, ...curr], []);\r\n }\r\n\r\n // istanbul ignore next\r\n private getAssemblyElementIds(assemblyId: Id64String) {\r\n return this._elementIdsCache.getAssemblyElementIds(assemblyId);\r\n }\r\n\r\n // istanbul ignore next\r\n private async getGroupedElementIds(groupingNodeKey: GroupingNodeKey) {\r\n return this._elementIdsCache.getGroupedElementIds(groupingNodeKey);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class SubjectModelIdsCache {\r\n private _imodel: IModelConnection;\r\n private _subjectsHierarchy: Map<Id64String, Id64String[]> | undefined;\r\n private _subjectModels: Map<Id64String, Id64String[]> | undefined;\r\n private _init: Promise<void> | undefined;\r\n\r\n constructor(imodel: IModelConnection) {\r\n this._imodel = imodel;\r\n }\r\n\r\n private async initSubjectModels() {\r\n const querySubjects = (): AsyncIterableIterator<{ id: Id64String, parentId?: Id64String, targetPartitionId?: Id64String }> => {\r\n const subjectsQuery = `\r\n SELECT ECInstanceId id, Parent.Id parentId, json_extract(JsonProperties, '$.Subject.Model.TargetPartition') targetPartitionId\r\n FROM bis.Subject\r\n `;\r\n return this._imodel.query(subjectsQuery, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });\r\n };\r\n const queryModels = (): AsyncIterableIterator<{ id: Id64String, parentId: Id64String }> => {\r\n const modelsQuery = `\r\n SELECT p.ECInstanceId id, p.Parent.Id parentId\r\n FROM bis.InformationPartitionElement p\r\n INNER JOIN bis.GeometricModel3d m ON m.ModeledElement.Id = p.ECInstanceId\r\n WHERE NOT m.IsPrivate\r\n `;\r\n return this._imodel.query(modelsQuery, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });\r\n };\r\n\r\n function pushToMap<TKey, TValue>(map: Map<TKey, TValue[]>, key: TKey, value: TValue) {\r\n let list = map.get(key);\r\n if (!list) {\r\n list = [];\r\n map.set(key, list);\r\n }\r\n list.push(value);\r\n }\r\n\r\n this._subjectsHierarchy = new Map();\r\n const targetPartitionSubjects = new Map<Id64String, Id64String[]>();\r\n for await (const subject of querySubjects()) {\r\n // istanbul ignore else\r\n if (subject.parentId)\r\n pushToMap(this._subjectsHierarchy, subject.parentId, subject.id);\r\n // istanbul ignore if\r\n if (subject.targetPartitionId)\r\n pushToMap(targetPartitionSubjects, subject.targetPartitionId, subject.id);\r\n }\r\n\r\n this._subjectModels = new Map();\r\n for await (const model of queryModels()) {\r\n // istanbul ignore next\r\n const subjectIds = targetPartitionSubjects.get(model.id) ?? [];\r\n // istanbul ignore else\r\n if (!subjectIds.includes(model.parentId))\r\n subjectIds.push(model.parentId);\r\n\r\n subjectIds.forEach((subjectId) => {\r\n pushToMap(this._subjectModels!, subjectId, model.id);\r\n });\r\n }\r\n }\r\n\r\n private async initCache() {\r\n if (!this._init) {\r\n this._init = this.initSubjectModels().then(() => { });\r\n }\r\n return this._init;\r\n }\r\n\r\n private appendSubjectModelsRecursively(modelIds: Id64String[], subjectId: Id64String) {\r\n const subjectModelIds = this._subjectModels!.get(subjectId);\r\n if (subjectModelIds)\r\n modelIds.push(...subjectModelIds);\r\n\r\n const childSubjectIds = this._subjectsHierarchy!.get(subjectId);\r\n if (childSubjectIds)\r\n childSubjectIds.forEach((cs) => this.appendSubjectModelsRecursively(modelIds, cs));\r\n }\r\n\r\n public async getSubjectModelIds(subjectId: Id64String): Promise<Id64String[]> {\r\n await this.initCache();\r\n const modelIds = new Array<Id64String>();\r\n this.appendSubjectModelsRecursively(modelIds, subjectId);\r\n return modelIds;\r\n }\r\n}\r\n\r\ninterface GroupedElementIds {\r\n modelId?: string;\r\n categoryId?: string;\r\n elementIds: CachingElementIdsContainer;\r\n}\r\n\r\n// istanbul ignore next\r\nclass ElementIdsCache {\r\n private _assemblyElementIdsCache = new Map<string, CachingElementIdsContainer>();\r\n private _groupedElementIdsCache = new Map<string, GroupedElementIds>();\r\n\r\n constructor(private _imodel: IModelConnection, private _rulesetId: string) {\r\n }\r\n\r\n public clear() {\r\n this._assemblyElementIdsCache.clear();\r\n this._groupedElementIdsCache.clear();\r\n }\r\n\r\n public getAssemblyElementIds(assemblyId: Id64String) {\r\n const ids = this._assemblyElementIdsCache.get(assemblyId);\r\n if (ids)\r\n return ids;\r\n\r\n const container = createAssemblyElementIdsContainer(this._imodel, this._rulesetId, assemblyId);\r\n this._assemblyElementIdsCache.set(assemblyId, container);\r\n return container;\r\n }\r\n\r\n public async getGroupedElementIds(groupingNodeKey: GroupingNodeKey): Promise<GroupedElementIds> {\r\n const keyString = JSON.stringify(groupingNodeKey);\r\n const ids = this._groupedElementIdsCache.get(keyString);\r\n if (ids)\r\n return ids;\r\n const info = await createGroupedElementsInfo(this._imodel, this._rulesetId, groupingNodeKey);\r\n this._groupedElementIdsCache.set(keyString, info);\r\n return info;\r\n }\r\n}\r\n\r\n// istanbul ignore next\r\nasync function* createInstanceIdsGenerator(imodel: IModelConnection, rulesetId: string, displayType: string, inputKeys: Keys) {\r\n const res = await Presentation.presentation.getContentInstanceKeys({\r\n imodel,\r\n rulesetOrId: rulesetId,\r\n displayType,\r\n keys: new KeySet(inputKeys),\r\n });\r\n for await (const key of res.items()) {\r\n yield key.id;\r\n }\r\n}\r\n\r\n// istanbul ignore next\r\nfunction createAssemblyElementIdsContainer(imodel: IModelConnection, rulesetId: string, assemblyId: Id64String) {\r\n return new CachingElementIdsContainer(createInstanceIdsGenerator(imodel, rulesetId, \"AssemblyElementsRequest\", [{ className: \"BisCore:Element\", id: assemblyId }]));\r\n}\r\n\r\n// istanbul ignore next\r\nasync function createGroupedElementsInfo(imodel: IModelConnection, rulesetId: string, groupingNodeKey: GroupingNodeKey) {\r\n const groupedElementIdsContainer = new CachingElementIdsContainer(createInstanceIdsGenerator(imodel, rulesetId, \"AssemblyElementsRequest\", [groupingNodeKey]));\r\n const elementId = await groupedElementIdsContainer.getElementIds().next();\r\n if (elementId.done)\r\n throw new Error(\"Invalid grouping node key\");\r\n\r\n let modelId, categoryId;\r\n const query = `SELECT Model.Id AS modelId, Category.Id AS categoryId FROM bis.GeometricElement3d WHERE ECInstanceId = ? LIMIT 1`;\r\n for await (const modelAndCategoryIds of imodel.query(query, QueryBinder.from([elementId.value]), { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\r\n modelId = modelAndCategoryIds.modelId;\r\n categoryId = modelAndCategoryIds.categoryId;\r\n break;\r\n }\r\n return { modelId, categoryId, elementIds: groupedElementIdsContainer };\r\n}\r\n\r\nconst createTooltip = (status: \"visible\" | \"hidden\" | \"disabled\", tooltipStringId: string | undefined): string => {\r\n const statusStringId = `UiFramework:modelTree.status.${status}`;\r\n const statusString = UiFramework.localization.getLocalizedString(statusStringId);\r\n if (!tooltipStringId)\r\n return statusString;\r\n\r\n tooltipStringId = `UiFramework:modelTree.tooltips.${tooltipStringId}`;\r\n const tooltipString = UiFramework.localization.getLocalizedString(tooltipStringId);\r\n return `${statusString}: ${tooltipString}`;\r\n};\r\n"]}
|
|
@@ -13,6 +13,7 @@ export declare const RULESET_SPATIAL_BREAKDOWN_GROUPED_BY_CLASS: Ruleset;
|
|
|
13
13
|
/**
|
|
14
14
|
* Properties for the [[SpatialContainmentTree]] component
|
|
15
15
|
* @public
|
|
16
|
+
* @deprecated Use 'SpatialContainmentTree' from `@itwin/breakdown-trees-react` package.
|
|
16
17
|
*/
|
|
17
18
|
export interface SpatialContainmentTreeProps {
|
|
18
19
|
iModel: IModelConnection;
|
|
@@ -29,6 +30,7 @@ export interface SpatialContainmentTreeProps {
|
|
|
29
30
|
/**
|
|
30
31
|
* Tree which displays and manages models or categories contained in an iModel.
|
|
31
32
|
* @public
|
|
33
|
+
* @deprecated Use 'SpatialContainmentTree' from `@itwin/breakdown-trees-react` package.
|
|
32
34
|
*/
|
|
33
35
|
export declare function SpatialContainmentTree(props: SpatialContainmentTreeProps): JSX.Element;
|
|
34
36
|
//# sourceMappingURL=SpatialContainmentTree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpatialContainmentTree.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.tsx"],"names":[],"mappings":"AAIA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"SpatialContainmentTree.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAIH,OAAO,+BAA+B,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAIrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAIhD,gBAAgB;AAChB,eAAO,MAAM,yBAAyB,EAAE,OAA4C,CAAC;AACrF,gBAAgB;AAChB,eAAO,MAAM,0CAA0C,EAAE,OAA2D,CAAC;AAErH;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,gBAAgB,CAAC;IACzB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,eA0BxE"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module IModelComponents
|
|
7
7
|
*/
|
|
8
|
+
/* eslint-disable deprecation/deprecation */
|
|
8
9
|
import "./SpatialContainmentTree.scss";
|
|
9
10
|
import * as React from "react";
|
|
10
11
|
import { UnifiedSelectionTreeEventHandler, usePresentationTreeNodeLoader } from "@itwin/presentation-components";
|
|
@@ -19,6 +20,7 @@ export const RULESET_SPATIAL_BREAKDOWN_GROUPED_BY_CLASS = require("./SpatialBrea
|
|
|
19
20
|
/**
|
|
20
21
|
* Tree which displays and manages models or categories contained in an iModel.
|
|
21
22
|
* @public
|
|
23
|
+
* @deprecated Use 'SpatialContainmentTree' from `@itwin/breakdown-trees-react` package.
|
|
22
24
|
*/
|
|
23
25
|
export function SpatialContainmentTree(props) {
|
|
24
26
|
const { nodeLoader } = usePresentationTreeNodeLoader({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpatialContainmentTree.js","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,+BAA+B,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,gCAAgC,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AACjH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,gBAAgB;AAChB,MAAM,CAAC,MAAM,yBAAyB,GAAY,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,yDAAyD;AAC/I,gBAAgB;AAChB,MAAM,CAAC,MAAM,0CAA0C,GAAY,OAAO,CAAC,wCAAwC,CAAC,CAAC,CAAC,yDAAyD;
|
|
1
|
+
{"version":3,"file":"SpatialContainmentTree.js","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/spatial-tree/SpatialContainmentTree.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,4CAA4C;AAE5C,OAAO,+BAA+B,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,gCAAgC,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AACjH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,gBAAgB;AAChB,MAAM,CAAC,MAAM,yBAAyB,GAAY,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,yDAAyD;AAC/I,gBAAgB;AAChB,MAAM,CAAC,MAAM,0CAA0C,GAAY,OAAO,CAAC,wCAAwC,CAAC,CAAC,CAAC,yDAAyD;AAoB/K;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAkC;IACvE,MAAM,EAAE,UAAU,EAAE,GAAG,6BAA6B,CAAC;QACnD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,0BAA0B,CAAC,0CAA0C;QACjJ,mCAAmC,EAAE,CAAC,KAAK,CAAC,2BAA2B,KAAK,mBAAmB,CAAC,aAAa,CAAC;QAC9G,UAAU,EAAE,WAAW;KACxB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,gCAAgC,CAAC;QAC9F,UAAU;QACV,gCAAgC,EAAE,IAAI;KACvC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACnB,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAEvD,OAAO,CACL,6BAAK,SAAS,EAAC,oBAAoB;QACjC,oBAAC,cAAc,IACb,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,YAAY,EAC3B,aAAa,EAAE,aAAa,CAAC,QAAQ,EACrC,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,GACpB,CACE,CACP,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelComponents\r\n */\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\nimport \"./SpatialContainmentTree.scss\";\r\nimport * as React from \"react\";\r\nimport { IModelConnection } from \"@itwin/core-frontend\";\r\nimport { Ruleset } from \"@itwin/presentation-common\";\r\nimport { UnifiedSelectionTreeEventHandler, usePresentationTreeNodeLoader } from \"@itwin/presentation-components\";\r\nimport { ControlledTree, SelectionMode, useTreeModel } from \"@itwin/components-react\";\r\nimport { useDisposable } from \"@itwin/core-react\";\r\nimport { ClassGroupingOption } from \"../Common\";\r\n\r\nconst PAGING_SIZE = 20;\r\n\r\n/** @internal */\r\nexport const RULESET_SPATIAL_BREAKDOWN: Ruleset = require(\"./SpatialBreakdown.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\r\n/** @internal */\r\nexport const RULESET_SPATIAL_BREAKDOWN_GROUPED_BY_CLASS: Ruleset = require(\"./SpatialBreakdown.GroupedByClass.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\r\n\r\n/**\r\n * Properties for the [[SpatialContainmentTree]] component\r\n * @public\r\n * @deprecated Use 'SpatialContainmentTree' from `@itwin/breakdown-trees-react` package.\r\n */\r\nexport interface SpatialContainmentTreeProps {\r\n iModel: IModelConnection;\r\n /** Width of the component */\r\n width: number;\r\n /** Height of the component */\r\n height: number;\r\n /**\r\n * Should the tree group displayed element nodes by class.\r\n * @beta\r\n */\r\n enableElementsClassGrouping?: ClassGroupingOption;\r\n}\r\n\r\n/**\r\n * Tree which displays and manages models or categories contained in an iModel.\r\n * @public\r\n * @deprecated Use 'SpatialContainmentTree' from `@itwin/breakdown-trees-react` package.\r\n */\r\nexport function SpatialContainmentTree(props: SpatialContainmentTreeProps) {\r\n const { nodeLoader } = usePresentationTreeNodeLoader({\r\n imodel: props.iModel,\r\n ruleset: (!props.enableElementsClassGrouping) ? RULESET_SPATIAL_BREAKDOWN : /* istanbul ignore next */ RULESET_SPATIAL_BREAKDOWN_GROUPED_BY_CLASS,\r\n appendChildrenCountForGroupingNodes: (props.enableElementsClassGrouping === ClassGroupingOption.YesWithCounts),\r\n pagingSize: PAGING_SIZE,\r\n });\r\n\r\n const eventHandler = useDisposable(React.useCallback(() => new UnifiedSelectionTreeEventHandler({\r\n nodeLoader,\r\n collapsedChildrenDisposalEnabled: true,\r\n }), [nodeLoader]));\r\n const treeModel = useTreeModel(nodeLoader.modelSource);\r\n\r\n return (\r\n <div className=\"ui-fw-spatial-tree\">\r\n <ControlledTree\r\n model={treeModel}\r\n nodeLoader={nodeLoader}\r\n eventsHandler={eventHandler}\r\n selectionMode={SelectionMode.Extended}\r\n width={props.width}\r\n height={props.height}\r\n />\r\n </div>\r\n );\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MessageManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"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"}
|
|
@@ -161,7 +161,9 @@ export class MessageManager {
|
|
|
161
161
|
const content = React.createElement(React.Fragment, null,
|
|
162
162
|
message.briefMessage,
|
|
163
163
|
message.detailedMessage &&
|
|
164
|
-
React.createElement(
|
|
164
|
+
React.createElement(React.Fragment, null,
|
|
165
|
+
React.createElement("br", null),
|
|
166
|
+
React.createElement(Small, null, message.detailedMessage.reactNode || message.detailedMessage)));
|
|
165
167
|
switch (message.priority) {
|
|
166
168
|
case OutputMessagePriority.Warning:
|
|
167
169
|
return toaster.warning(content, toastOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageManager.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as _ from \"lodash\";\r\nimport * as React from \"react\";\r\nimport { XAndY } from \"@itwin/core-geometry\";\r\nimport {\r\n ActivityMessageDetails, IModelApp, MessageBoxIconType, MessageBoxType, MessageBoxValue, OutputMessageAlert, OutputMessagePriority,\r\n OutputMessageType, ToolAssistanceInstructions, ToolTipOptions,\r\n} from \"@itwin/core-frontend\";\r\nimport { MessageSeverity, UiEvent } from \"@itwin/appui-abstract\";\r\nimport { MessageContainer, ReactMessage } from \"@itwin/core-react\";\r\nimport { ConfigurableUiActionId } from \"../configurableui/state\";\r\nimport { ModalDialogManager } from \"../dialog/ModalDialogManager\";\r\nimport { StandardMessageBox } from \"../dialog/StandardMessageBox\";\r\nimport { ElementTooltip } from \"../feedback/ElementTooltip\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { MessageSpan } from \"./MessageSpan\";\r\nimport { PointerMessage } from \"./Pointer\";\r\nimport { NotifyMessageDetailsType, NotifyMessageType } from \"./ReactNotifyMessageDetails\";\r\nimport { StatusMessageManager } from \"./StatusMessageManager\";\r\nimport { Small, toaster, ToastOptions } from \"@itwin/itwinui-react\";\r\nimport { ToasterSettings } from \"@itwin/itwinui-react/cjs/core/Toast/Toaster\";\r\n\r\nclass MessageBoxCallbacks {\r\n constructor(\r\n public readonly onFulfilled: (result: MessageBoxValue) => void,\r\n public readonly onRejected: (result: any) => void,\r\n ) { }\r\n\r\n public handleMessageBoxResult = (result: MessageBoxValue) => {\r\n this.onFulfilled(result);\r\n };\r\n}\r\n\r\n/** [[MessageAddedEvent]] arguments.\r\n * @public\r\n */\r\nexport interface MessageAddedEventArgs {\r\n /** Message details for the message added */\r\n message: NotifyMessageDetailsType;\r\n}\r\n\r\n/** Activity Message Event arguments.\r\n * @public\r\n */\r\nexport interface ActivityMessageEventArgs {\r\n /** Current message for the activity */\r\n message: NotifyMessageType;\r\n /** Current percentage for the activity */\r\n percentage: number;\r\n /** Message details set by calling NotificationManager.setupActivityMessage */\r\n details?: ActivityMessageDetails;\r\n /** Indicates whether the activity message popup is being restored */\r\n restored?: boolean;\r\n}\r\n\r\n/** Input Field Message Event arguments.\r\n * @public\r\n */\r\nexport interface InputFieldMessageEventArgs {\r\n /** Target HTML element for the Input Field message */\r\n target: Element;\r\n /** Message to be displayed near the input field */\r\n messageText: NotifyMessageType;\r\n /** Detailed message to be displayed near the input field */\r\n detailedMessage: NotifyMessageType;\r\n /** Priority of the input field message */\r\n priority: OutputMessagePriority;\r\n}\r\n\r\n/** Tool Assistance Changed event arguments.\r\n * @public\r\n */\r\nexport interface ToolAssistanceChangedEventArgs {\r\n /** Tool Assistance instructions for the active tool */\r\n instructions: ToolAssistanceInstructions | undefined;\r\n}\r\n\r\n/** Message Added Event class.\r\n * @public\r\n */\r\nexport class MessageAddedEvent extends UiEvent<MessageAddedEventArgs> { }\r\n\r\n/** Messages Updated Event class.\r\n * @public\r\n */\r\nexport class MessagesUpdatedEvent extends UiEvent<{}> { }\r\n\r\n/** Activity Message Added Event class.\r\n * @public\r\n */\r\nexport class ActivityMessageUpdatedEvent extends UiEvent<ActivityMessageEventArgs> { }\r\n\r\n/** Activity Message Cancelled Event class.\r\n * @public\r\n */\r\nexport class ActivityMessageCancelledEvent extends UiEvent<{}> { }\r\n\r\n/** Input Field Message Added Event class\r\n * @public\r\n */\r\nexport class InputFieldMessageAddedEvent extends UiEvent<InputFieldMessageEventArgs> { }\r\n\r\n/** Input Field Message Removed Event class.\r\n * @public\r\n */\r\nexport class InputFieldMessageRemovedEvent extends UiEvent<{}> { }\r\n\r\n/** Open Message Center Event class.\r\n * @public\r\n */\r\nexport class OpenMessageCenterEvent extends UiEvent<{}> { }\r\n\r\n/** Tool Assistance Changed event class\r\n * @public\r\n */\r\nexport class ToolAssistanceChangedEvent extends UiEvent<ToolAssistanceChangedEventArgs> { }\r\n\r\n/**\r\n * Keeps track of the current activity message, and updates whenever\r\n * setupActivityMessageDetails() or setupActivityMessageValues()\r\n * is called.\r\n * Used to display tracked progress in ActivityMessage.\r\n */\r\nclass OngoingActivityMessage {\r\n public message: NotifyMessageType = \"\";\r\n public percentage: number = 0;\r\n public details: ActivityMessageDetails = new ActivityMessageDetails(true, true, true);\r\n public isRestored: boolean = false;\r\n}\r\n\r\n/** The MessageManager class manages messages and prompts. It is used by the [[AppNotificationManager]] class.\r\n * @public\r\n */\r\nexport class MessageManager {\r\n private static _maxCachedMessages = 500;\r\n private static _maxDisplayedStickyMessages = 3;\r\n private static _messages: NotifyMessageDetailsType[] = [];\r\n private static _ongoingActivityMessage: OngoingActivityMessage = new OngoingActivityMessage();\r\n private static _lastMessage?: NotifyMessageDetailsType;\r\n private static _activeMessageManager = new StatusMessageManager();\r\n private static _animateOutToElement: HTMLElement | null;\r\n\r\n /** The MessageAddedEvent is fired when a message is added via outputMessage(). */\r\n public static readonly onMessageAddedEvent = new MessageAddedEvent();\r\n\r\n /** The MessagesUpdatedEvent is fired when a message is added or the messages are cleared. */\r\n public static readonly onMessagesUpdatedEvent = new MessagesUpdatedEvent();\r\n\r\n /** The ActivityMessageUpdatedEvent is fired when an Activity message updates via outputActivityMessage(). */\r\n public static readonly onActivityMessageUpdatedEvent = new ActivityMessageUpdatedEvent();\r\n\r\n /** The ActivityMessageCancelledEvent is fired when an Activity message is cancelled via\r\n * endActivityMessage(ActivityMessageEndReason.Cancelled) or\r\n * by the user clicking the 'Cancel' link.\r\n */\r\n public static readonly onActivityMessageCancelledEvent = new ActivityMessageCancelledEvent();\r\n\r\n public static readonly onInputFieldMessageAddedEvent = new InputFieldMessageAddedEvent();\r\n public static readonly onInputFieldMessageRemovedEvent = new InputFieldMessageRemovedEvent();\r\n\r\n public static readonly onOpenMessageCenterEvent = new OpenMessageCenterEvent();\r\n\r\n /** The ToolAssistanceChangedEvent is fired when a tool calls IModelApp.notifications.setToolAssistance().\r\n * @public\r\n */\r\n public static readonly onToolAssistanceChangedEvent = new ToolAssistanceChangedEvent();\r\n\r\n /** List of messages as NotifyMessageDetailsType. */\r\n public static get messages(): Readonly<NotifyMessageDetailsType[]> { return this._messages; }\r\n\r\n /** Manager of active messages. */\r\n public static get activeMessageManager(): StatusMessageManager { return this._activeMessageManager; }\r\n\r\n /** Clear the message list. */\r\n public static clearMessages(): void {\r\n this._messages.splice(0);\r\n this._activeMessageManager.initialize();\r\n\r\n this.onMessagesUpdatedEvent.emit({});\r\n this._lastMessage = undefined;\r\n }\r\n\r\n /** Update the message list. */\r\n public static updateMessages(): void {\r\n this.onMessagesUpdatedEvent.emit({});\r\n }\r\n\r\n /** Set the maximum number of cached message. */\r\n public static setMaxCachedMessages(max: number): void {\r\n this._maxCachedMessages = max;\r\n this.checkMaxCachedMessages();\r\n }\r\n\r\n /** The maximum number of displayed Sticky messages. */\r\n public static get maxDisplayedStickyMessages(): number { return this._maxDisplayedStickyMessages; }\r\n public static set maxDisplayedStickyMessages(max: number) { this._maxDisplayedStickyMessages = max; }\r\n\r\n /** Output a message and/or alert to the user.\r\n * @param message Details about the message to output.\r\n */\r\n public static outputMessage(message: NotifyMessageDetailsType): void {\r\n if (message.msgType === OutputMessageType.Pointer) {\r\n PointerMessage.showMessage(message);\r\n } else if (message.msgType === OutputMessageType.InputField) {\r\n if (message.inputField)\r\n MessageManager.displayInputFieldMessage(message.inputField, message.briefMessage, message.detailedMessage, message.priority);\r\n else\r\n message.msgType = OutputMessageType.Sticky; // Note: Changing the message.msgType here for InputField without inputField\r\n } else if (message.msgType === OutputMessageType.Alert) {\r\n if (message.openAlert === OutputMessageAlert.Balloon)\r\n message.msgType = OutputMessageType.Sticky; // Note: Changing the message.msgType here for Balloon\r\n else\r\n MessageManager.showAlertMessageBox(message);\r\n }\r\n\r\n MessageManager.addMessage(message);\r\n }\r\n\r\n /** Set the element where messages should be animated out to on exit.\r\n * @param element `HTMLElement` to animate out to.\r\n */\r\n public static registerAnimateOutToElement(element: HTMLElement | null) {\r\n this._animateOutToElement = element;\r\n }\r\n\r\n /** Display a message.\r\n * Works only with `Sticky` and `Toast` message types.\r\n * @param message Details about the message to display.\r\n * @param options Optionally override individual toast parameters.\r\n * @param settings Optionally override all toasts settings (i.e. placement or order).\r\n * @returns Object with reference to the message (i.e. to close it programmatically) if it was displayed.\r\n */\r\n public static displayMessage(message: NotifyMessageDetailsType, options?: ToastOptions, settings?: ToasterSettings) {\r\n if (message.msgType !== OutputMessageType.Sticky && message.msgType !== OutputMessageType.Toast) {\r\n return;\r\n }\r\n const toastOptions: ToastOptions = {\r\n hasCloseButton: true,\r\n duration: message.displayTime.milliseconds,\r\n type:\r\n message.msgType === OutputMessageType.Sticky\r\n ? \"persisting\"\r\n : \"temporary\",\r\n animateOutTo: this._animateOutToElement,\r\n ...options,\r\n };\r\n toaster.setSettings({ placement: \"bottom\", order: \"ascending\", ...settings });\r\n const content = <>\r\n {message.briefMessage}\r\n {message.detailedMessage &&\r\n <Small>{(message.detailedMessage as ReactMessage).reactNode || message.detailedMessage}</Small>\r\n }\r\n </>;\r\n switch (message.priority) {\r\n case OutputMessagePriority.Warning:\r\n return toaster.warning(content, toastOptions);\r\n case OutputMessagePriority.Info:\r\n return toaster.informational(content, toastOptions);\r\n case OutputMessagePriority.Error:\r\n case OutputMessagePriority.Fatal:\r\n return toaster.negative(content, toastOptions);\r\n default:\r\n return toaster.positive(content, toastOptions);\r\n }\r\n }\r\n\r\n /** Output a message and/or alert to the user.\r\n * @param message Details about the message to output.\r\n */\r\n public static addMessage(message: NotifyMessageDetailsType): void {\r\n if (!_.isEqual(message, this._lastMessage)) {\r\n this.addToMessageCenter(message);\r\n this._lastMessage = message;\r\n }\r\n\r\n this._activeMessageManager.add(message);\r\n\r\n this.onMessageAddedEvent.emit({ message });\r\n }\r\n\r\n /** Add a message to the Message Center.\r\n * @param message Details about the message to output.\r\n */\r\n public static addToMessageCenter(message: NotifyMessageDetailsType): void {\r\n this._messages.push(message);\r\n this.onMessagesUpdatedEvent.emit({});\r\n this.checkMaxCachedMessages();\r\n }\r\n\r\n /** Checks number of messages against the maximum. */\r\n private static checkMaxCachedMessages(): void {\r\n if (this._messages.length > this._maxCachedMessages) {\r\n const numToErase = this._maxCachedMessages / 4;\r\n this._messages.splice(0, numToErase);\r\n this.onMessagesUpdatedEvent.emit({});\r\n }\r\n }\r\n\r\n /**\r\n * Sets details for setting up an Activity message.\r\n * @param details Details for setup of ActivityMessage\r\n * @returns true if details is valid and can be used to display ActivityMessage\r\n */\r\n public static setupActivityMessageDetails(details: ActivityMessageDetails): boolean {\r\n this._ongoingActivityMessage.details = details;\r\n this._ongoingActivityMessage.isRestored = details.showDialogInitially;\r\n return true;\r\n }\r\n\r\n /**\r\n * Output an activity message to the user.\r\n * @param message The message text.\r\n * @param percentComplete The percentage of completion.\r\n * @return true if the message was displayed, false if the message could not be displayed.\r\n */\r\n public static outputActivityMessage(message: NotifyMessageType, percentComplete: number): boolean {\r\n return MessageManager.setupActivityMessageValues(message, percentComplete);\r\n }\r\n\r\n /**\r\n * Sets values on _OngoingActivityMessage to be referenced when displaying\r\n * an ActivityMessage.\r\n * @param message Message of the process that ActivityMessage is tracking\r\n * @param percentage Progress made by activity in percentage\r\n * @param restored True if original ActivityMessage has been closed and\r\n * is now being restored from the status bar.\r\n * @returns true if details is valid and can be used to display ActivityMessage\r\n */\r\n public static setupActivityMessageValues(message: NotifyMessageType, percentage: number, restored?: boolean): boolean {\r\n this._ongoingActivityMessage.message = message;\r\n this._ongoingActivityMessage.percentage = percentage;\r\n\r\n this.onActivityMessageUpdatedEvent.emit({\r\n message,\r\n percentage,\r\n details: this._ongoingActivityMessage.details,\r\n restored: (restored !== undefined) ? restored : this._ongoingActivityMessage.isRestored,\r\n });\r\n\r\n this._ongoingActivityMessage.isRestored = false;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Dismisses current ActivityMessage and ends activity if canceled.\r\n * @param isCompleted True if the activity was completed, false if it was canceled\r\n * @returns True if both ActivityMessage and activity process are ended.\r\n */\r\n public static endActivityMessage(isCompleted: boolean): boolean {\r\n this.endActivityProcessing(isCompleted);\r\n this.onActivityMessageCancelledEvent.emit({});\r\n return true;\r\n }\r\n\r\n /**\r\n * Ends processing for activity according to message definition.\r\n * @param isCompleted True if the activity was completed, false if it was canceled\r\n */\r\n private static endActivityProcessing(isCompleted: boolean): void {\r\n if (isCompleted)\r\n this._ongoingActivityMessage.details.onActivityCompleted();\r\n else\r\n this._ongoingActivityMessage.details.onActivityCancelled();\r\n }\r\n\r\n /**\r\n * Displays an input field message near target element.\r\n * @param target The currently focused or recently focused element to place the\r\n * input field message near.\r\n * @param messageText Text to display in the message.\r\n * @param detailedMessage Optional detailed message text to display.\r\n * @param priority Optional message priority which controls icon to display.\r\n */\r\n public static displayInputFieldMessage(target: HTMLElement, messageText: NotifyMessageType, detailedMessage: NotifyMessageType = \"\", priority = OutputMessagePriority.Error) {\r\n this.onInputFieldMessageAddedEvent.emit({\r\n target,\r\n messageText,\r\n detailedMessage,\r\n priority,\r\n });\r\n }\r\n\r\n /**\r\n * Hides the currently displayed input field message.\r\n */\r\n public static hideInputFieldMessage() {\r\n this.onInputFieldMessageRemovedEvent.emit({});\r\n }\r\n\r\n /**\r\n * Opens message center.\r\n */\r\n public static openMessageCenter() {\r\n this.onOpenMessageCenterEvent.emit({});\r\n }\r\n\r\n /** Output a prompt to the user. A 'prompt' indicates an action the user should take to proceed. */\r\n public static outputPrompt(prompt: string): void {\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetToolPrompt, prompt, true);\r\n }\r\n\r\n /** Gets an icon CSS class name based on a given NotifyMessageDetailsType. */\r\n public static getIconClassName(details: NotifyMessageDetailsType): string {\r\n const severity = MessageManager.getSeverity(details);\r\n const className = MessageContainer.getIconClassName(severity, false);\r\n const iconClassName = classnames(\"icon\", \"notifymessage-icon\", className);\r\n\r\n return iconClassName;\r\n }\r\n\r\n /** Gets a MessageSeverity based on a given NotifyMessageDetailsType. */\r\n public static getSeverity(details: NotifyMessageDetailsType): MessageSeverity {\r\n let severity = MessageSeverity.None;\r\n\r\n switch (details.priority) {\r\n case OutputMessagePriority.None:\r\n severity = MessageSeverity.Success;\r\n break;\r\n case OutputMessagePriority.Success:\r\n severity = MessageSeverity.Success;\r\n break;\r\n case OutputMessagePriority.Info:\r\n severity = MessageSeverity.Information;\r\n break;\r\n case OutputMessagePriority.Warning:\r\n severity = MessageSeverity.Warning;\r\n break;\r\n case OutputMessagePriority.Error:\r\n severity = MessageSeverity.Error;\r\n break;\r\n case OutputMessagePriority.Fatal:\r\n severity = MessageSeverity.Fatal;\r\n break;\r\n }\r\n\r\n return severity;\r\n }\r\n\r\n /** Gets a MessageBoxIconType based on a given NotifyMessageDetailsType. */\r\n public static getIconType(details: NotifyMessageDetailsType): MessageBoxIconType {\r\n let iconType = MessageBoxIconType.NoSymbol;\r\n\r\n switch (details.priority) {\r\n case OutputMessagePriority.None:\r\n iconType = MessageBoxIconType.NoSymbol;\r\n break;\r\n case OutputMessagePriority.Success:\r\n iconType = MessageBoxIconType.Success;\r\n break;\r\n case OutputMessagePriority.Info:\r\n iconType = MessageBoxIconType.Information;\r\n break;\r\n case OutputMessagePriority.Warning:\r\n iconType = MessageBoxIconType.Warning;\r\n break;\r\n case OutputMessagePriority.Error:\r\n iconType = MessageBoxIconType.Critical;\r\n break;\r\n case OutputMessagePriority.Fatal:\r\n iconType = MessageBoxIconType.Critical;\r\n break;\r\n }\r\n\r\n return iconType;\r\n }\r\n\r\n /** Output a MessageBox and wait for response from the user.\r\n * @param mbType The MessageBox type.\r\n * @param message The message to display.\r\n * @param icon The MessageBox icon type.\r\n * @return the response from the user.\r\n */\r\n public static async openMessageBox(mbType: MessageBoxType, message: NotifyMessageType, icon: MessageBoxIconType): Promise<MessageBoxValue> {\r\n const title = UiFramework.translate(\"general.alert\");\r\n\r\n return new Promise((onFulfilled: (result: MessageBoxValue) => void, onRejected: (reason: any) => void) => {\r\n const messageBoxCallbacks = new MessageBoxCallbacks(onFulfilled, onRejected);\r\n const messageElement = <MessageSpan message={message} />;\r\n ModalDialogManager.openDialog(this.standardMessageBox(mbType, icon, title, messageElement, messageBoxCallbacks));\r\n });\r\n }\r\n\r\n /** @internal */\r\n public static showAlertMessageBox(messageDetails: NotifyMessageDetailsType): void {\r\n const title = UiFramework.translate(\"general.alert\");\r\n const iconType = this.getIconType(messageDetails);\r\n const content = (\r\n <>\r\n <MessageSpan message={messageDetails.briefMessage} />\r\n {\r\n messageDetails.detailedMessage && (\r\n <p>\r\n <MessageSpan message={messageDetails.detailedMessage} />\r\n </p>\r\n )\r\n }\r\n </>\r\n );\r\n ModalDialogManager.openDialog(this.standardMessageBox(MessageBoxType.Ok, iconType, title, content));\r\n }\r\n\r\n private static standardMessageBox(mbType: MessageBoxType, iconType: MessageBoxIconType, title: string, messageElement: React.ReactNode, callbacks?: MessageBoxCallbacks): React.ReactNode {\r\n const onResult = (callbacks !== undefined) ? callbacks.handleMessageBoxResult : undefined;\r\n return (\r\n <StandardMessageBox\r\n opened={true}\r\n messageBoxType={mbType}\r\n iconType={iconType}\r\n title={title}\r\n onResult={onResult}\r\n >\r\n {messageElement}\r\n </StandardMessageBox>\r\n );\r\n }\r\n\r\n /** Setup tool assistance instructions for a tool. The instructions include the main instruction, which includes the current prompt.\r\n * @param instructions The tool assistance instructions.\r\n * @public\r\n */\r\n public static setToolAssistance(instructions: ToolAssistanceInstructions | undefined) {\r\n MessageManager.onToolAssistanceChangedEvent.emit({ instructions });\r\n }\r\n\r\n /** Show a tooltip window. Saves tooltip location for AccuSnap to test if cursor has moved far enough away to close tooltip.\r\n * @param htmlElement The HTMLElement that anchors the tooltip.\r\n * @param message What to display inside the tooltip.\r\n * @param location An optional location, relative to the origin of htmlElement, for the tooltip. If undefined, center of `htmlElement`.\r\n * @param options Options that supply additional information about how the tooltip should function.\r\n */\r\n public static openToolTip(htmlElement: HTMLElement, message: NotifyMessageType, location?: XAndY, options?: ToolTipOptions): void {\r\n IModelApp.notifications.toolTipLocation.setFrom(location);\r\n ElementTooltip.showTooltip(htmlElement, message, location, options);\r\n }\r\n\r\n /** @internal */\r\n public static closeAllMessages(): void {\r\n ElementTooltip.hideTooltip();\r\n PointerMessage.hideMessage();\r\n MessageManager.clearMessages();\r\n MessageManager.hideInputFieldMessage();\r\n MessageManager.endActivityMessage(false);\r\n }\r\n\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"MessageManager.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as _ from \"lodash\";\r\nimport * as React from \"react\";\r\nimport { XAndY } from \"@itwin/core-geometry\";\r\nimport {\r\n ActivityMessageDetails, IModelApp, MessageBoxIconType, MessageBoxType, MessageBoxValue, OutputMessageAlert, OutputMessagePriority,\r\n OutputMessageType, ToolAssistanceInstructions, ToolTipOptions,\r\n} from \"@itwin/core-frontend\";\r\nimport { MessageSeverity, UiEvent } from \"@itwin/appui-abstract\";\r\nimport { MessageContainer, ReactMessage } from \"@itwin/core-react\";\r\nimport { ConfigurableUiActionId } from \"../configurableui/state\";\r\nimport { ModalDialogManager } from \"../dialog/ModalDialogManager\";\r\nimport { StandardMessageBox } from \"../dialog/StandardMessageBox\";\r\nimport { ElementTooltip } from \"../feedback/ElementTooltip\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { MessageSpan } from \"./MessageSpan\";\r\nimport { PointerMessage } from \"./Pointer\";\r\nimport { NotifyMessageDetailsType, NotifyMessageType } from \"./ReactNotifyMessageDetails\";\r\nimport { StatusMessageManager } from \"./StatusMessageManager\";\r\nimport { Small, toaster, ToastOptions } from \"@itwin/itwinui-react\";\r\nimport { ToasterSettings } from \"@itwin/itwinui-react/cjs/core/Toast/Toaster\";\r\n\r\nclass MessageBoxCallbacks {\r\n constructor(\r\n public readonly onFulfilled: (result: MessageBoxValue) => void,\r\n public readonly onRejected: (result: any) => void,\r\n ) { }\r\n\r\n public handleMessageBoxResult = (result: MessageBoxValue) => {\r\n this.onFulfilled(result);\r\n };\r\n}\r\n\r\n/** [[MessageAddedEvent]] arguments.\r\n * @public\r\n */\r\nexport interface MessageAddedEventArgs {\r\n /** Message details for the message added */\r\n message: NotifyMessageDetailsType;\r\n}\r\n\r\n/** Activity Message Event arguments.\r\n * @public\r\n */\r\nexport interface ActivityMessageEventArgs {\r\n /** Current message for the activity */\r\n message: NotifyMessageType;\r\n /** Current percentage for the activity */\r\n percentage: number;\r\n /** Message details set by calling NotificationManager.setupActivityMessage */\r\n details?: ActivityMessageDetails;\r\n /** Indicates whether the activity message popup is being restored */\r\n restored?: boolean;\r\n}\r\n\r\n/** Input Field Message Event arguments.\r\n * @public\r\n */\r\nexport interface InputFieldMessageEventArgs {\r\n /** Target HTML element for the Input Field message */\r\n target: Element;\r\n /** Message to be displayed near the input field */\r\n messageText: NotifyMessageType;\r\n /** Detailed message to be displayed near the input field */\r\n detailedMessage: NotifyMessageType;\r\n /** Priority of the input field message */\r\n priority: OutputMessagePriority;\r\n}\r\n\r\n/** Tool Assistance Changed event arguments.\r\n * @public\r\n */\r\nexport interface ToolAssistanceChangedEventArgs {\r\n /** Tool Assistance instructions for the active tool */\r\n instructions: ToolAssistanceInstructions | undefined;\r\n}\r\n\r\n/** Message Added Event class.\r\n * @public\r\n */\r\nexport class MessageAddedEvent extends UiEvent<MessageAddedEventArgs> { }\r\n\r\n/** Messages Updated Event class.\r\n * @public\r\n */\r\nexport class MessagesUpdatedEvent extends UiEvent<{}> { }\r\n\r\n/** Activity Message Added Event class.\r\n * @public\r\n */\r\nexport class ActivityMessageUpdatedEvent extends UiEvent<ActivityMessageEventArgs> { }\r\n\r\n/** Activity Message Cancelled Event class.\r\n * @public\r\n */\r\nexport class ActivityMessageCancelledEvent extends UiEvent<{}> { }\r\n\r\n/** Input Field Message Added Event class\r\n * @public\r\n */\r\nexport class InputFieldMessageAddedEvent extends UiEvent<InputFieldMessageEventArgs> { }\r\n\r\n/** Input Field Message Removed Event class.\r\n * @public\r\n */\r\nexport class InputFieldMessageRemovedEvent extends UiEvent<{}> { }\r\n\r\n/** Open Message Center Event class.\r\n * @public\r\n */\r\nexport class OpenMessageCenterEvent extends UiEvent<{}> { }\r\n\r\n/** Tool Assistance Changed event class\r\n * @public\r\n */\r\nexport class ToolAssistanceChangedEvent extends UiEvent<ToolAssistanceChangedEventArgs> { }\r\n\r\n/**\r\n * Keeps track of the current activity message, and updates whenever\r\n * setupActivityMessageDetails() or setupActivityMessageValues()\r\n * is called.\r\n * Used to display tracked progress in ActivityMessage.\r\n */\r\nclass OngoingActivityMessage {\r\n public message: NotifyMessageType = \"\";\r\n public percentage: number = 0;\r\n public details: ActivityMessageDetails = new ActivityMessageDetails(true, true, true);\r\n public isRestored: boolean = false;\r\n}\r\n\r\n/** The MessageManager class manages messages and prompts. It is used by the [[AppNotificationManager]] class.\r\n * @public\r\n */\r\nexport class MessageManager {\r\n private static _maxCachedMessages = 500;\r\n private static _maxDisplayedStickyMessages = 3;\r\n private static _messages: NotifyMessageDetailsType[] = [];\r\n private static _ongoingActivityMessage: OngoingActivityMessage = new OngoingActivityMessage();\r\n private static _lastMessage?: NotifyMessageDetailsType;\r\n private static _activeMessageManager = new StatusMessageManager();\r\n private static _animateOutToElement: HTMLElement | null;\r\n\r\n /** The MessageAddedEvent is fired when a message is added via outputMessage(). */\r\n public static readonly onMessageAddedEvent = new MessageAddedEvent();\r\n\r\n /** The MessagesUpdatedEvent is fired when a message is added or the messages are cleared. */\r\n public static readonly onMessagesUpdatedEvent = new MessagesUpdatedEvent();\r\n\r\n /** The ActivityMessageUpdatedEvent is fired when an Activity message updates via outputActivityMessage(). */\r\n public static readonly onActivityMessageUpdatedEvent = new ActivityMessageUpdatedEvent();\r\n\r\n /** The ActivityMessageCancelledEvent is fired when an Activity message is cancelled via\r\n * endActivityMessage(ActivityMessageEndReason.Cancelled) or\r\n * by the user clicking the 'Cancel' link.\r\n */\r\n public static readonly onActivityMessageCancelledEvent = new ActivityMessageCancelledEvent();\r\n\r\n public static readonly onInputFieldMessageAddedEvent = new InputFieldMessageAddedEvent();\r\n public static readonly onInputFieldMessageRemovedEvent = new InputFieldMessageRemovedEvent();\r\n\r\n public static readonly onOpenMessageCenterEvent = new OpenMessageCenterEvent();\r\n\r\n /** The ToolAssistanceChangedEvent is fired when a tool calls IModelApp.notifications.setToolAssistance().\r\n * @public\r\n */\r\n public static readonly onToolAssistanceChangedEvent = new ToolAssistanceChangedEvent();\r\n\r\n /** List of messages as NotifyMessageDetailsType. */\r\n public static get messages(): Readonly<NotifyMessageDetailsType[]> { return this._messages; }\r\n\r\n /** Manager of active messages. */\r\n public static get activeMessageManager(): StatusMessageManager { return this._activeMessageManager; }\r\n\r\n /** Clear the message list. */\r\n public static clearMessages(): void {\r\n this._messages.splice(0);\r\n this._activeMessageManager.initialize();\r\n\r\n this.onMessagesUpdatedEvent.emit({});\r\n this._lastMessage = undefined;\r\n }\r\n\r\n /** Update the message list. */\r\n public static updateMessages(): void {\r\n this.onMessagesUpdatedEvent.emit({});\r\n }\r\n\r\n /** Set the maximum number of cached message. */\r\n public static setMaxCachedMessages(max: number): void {\r\n this._maxCachedMessages = max;\r\n this.checkMaxCachedMessages();\r\n }\r\n\r\n /** The maximum number of displayed Sticky messages. */\r\n public static get maxDisplayedStickyMessages(): number { return this._maxDisplayedStickyMessages; }\r\n public static set maxDisplayedStickyMessages(max: number) { this._maxDisplayedStickyMessages = max; }\r\n\r\n /** Output a message and/or alert to the user.\r\n * @param message Details about the message to output.\r\n */\r\n public static outputMessage(message: NotifyMessageDetailsType): void {\r\n if (message.msgType === OutputMessageType.Pointer) {\r\n PointerMessage.showMessage(message);\r\n } else if (message.msgType === OutputMessageType.InputField) {\r\n if (message.inputField)\r\n MessageManager.displayInputFieldMessage(message.inputField, message.briefMessage, message.detailedMessage, message.priority);\r\n else\r\n message.msgType = OutputMessageType.Sticky; // Note: Changing the message.msgType here for InputField without inputField\r\n } else if (message.msgType === OutputMessageType.Alert) {\r\n if (message.openAlert === OutputMessageAlert.Balloon)\r\n message.msgType = OutputMessageType.Sticky; // Note: Changing the message.msgType here for Balloon\r\n else\r\n MessageManager.showAlertMessageBox(message);\r\n }\r\n\r\n MessageManager.addMessage(message);\r\n }\r\n\r\n /** Set the element where messages should be animated out to on exit.\r\n * @param element `HTMLElement` to animate out to.\r\n */\r\n public static registerAnimateOutToElement(element: HTMLElement | null) {\r\n this._animateOutToElement = element;\r\n }\r\n\r\n /** Display a message.\r\n * Works only with `Sticky` and `Toast` message types.\r\n * @param message Details about the message to display.\r\n * @param options Optionally override individual toast parameters.\r\n * @param settings Optionally override all toasts settings (i.e. placement or order).\r\n * @returns Object with reference to the message (i.e. to close it programmatically) if it was displayed.\r\n */\r\n public static displayMessage(message: NotifyMessageDetailsType, options?: ToastOptions, settings?: ToasterSettings) {\r\n if (message.msgType !== OutputMessageType.Sticky && message.msgType !== OutputMessageType.Toast) {\r\n return;\r\n }\r\n const toastOptions: ToastOptions = {\r\n hasCloseButton: true,\r\n duration: message.displayTime.milliseconds,\r\n type:\r\n message.msgType === OutputMessageType.Sticky\r\n ? \"persisting\"\r\n : \"temporary\",\r\n animateOutTo: this._animateOutToElement,\r\n ...options,\r\n };\r\n toaster.setSettings({ placement: \"bottom\", order: \"ascending\", ...settings });\r\n const content = <>\r\n {message.briefMessage}\r\n {message.detailedMessage &&\r\n <>\r\n <br/>\r\n <Small>{(message.detailedMessage as ReactMessage).reactNode || message.detailedMessage}</Small>\r\n </>\r\n }\r\n </>;\r\n switch (message.priority) {\r\n case OutputMessagePriority.Warning:\r\n return toaster.warning(content, toastOptions);\r\n case OutputMessagePriority.Info:\r\n return toaster.informational(content, toastOptions);\r\n case OutputMessagePriority.Error:\r\n case OutputMessagePriority.Fatal:\r\n return toaster.negative(content, toastOptions);\r\n default:\r\n return toaster.positive(content, toastOptions);\r\n }\r\n }\r\n\r\n /** Output a message and/or alert to the user.\r\n * @param message Details about the message to output.\r\n */\r\n public static addMessage(message: NotifyMessageDetailsType): void {\r\n if (!_.isEqual(message, this._lastMessage)) {\r\n this.addToMessageCenter(message);\r\n this._lastMessage = message;\r\n }\r\n\r\n this._activeMessageManager.add(message);\r\n\r\n this.onMessageAddedEvent.emit({ message });\r\n }\r\n\r\n /** Add a message to the Message Center.\r\n * @param message Details about the message to output.\r\n */\r\n public static addToMessageCenter(message: NotifyMessageDetailsType): void {\r\n this._messages.push(message);\r\n this.onMessagesUpdatedEvent.emit({});\r\n this.checkMaxCachedMessages();\r\n }\r\n\r\n /** Checks number of messages against the maximum. */\r\n private static checkMaxCachedMessages(): void {\r\n if (this._messages.length > this._maxCachedMessages) {\r\n const numToErase = this._maxCachedMessages / 4;\r\n this._messages.splice(0, numToErase);\r\n this.onMessagesUpdatedEvent.emit({});\r\n }\r\n }\r\n\r\n /**\r\n * Sets details for setting up an Activity message.\r\n * @param details Details for setup of ActivityMessage\r\n * @returns true if details is valid and can be used to display ActivityMessage\r\n */\r\n public static setupActivityMessageDetails(details: ActivityMessageDetails): boolean {\r\n this._ongoingActivityMessage.details = details;\r\n this._ongoingActivityMessage.isRestored = details.showDialogInitially;\r\n return true;\r\n }\r\n\r\n /**\r\n * Output an activity message to the user.\r\n * @param message The message text.\r\n * @param percentComplete The percentage of completion.\r\n * @return true if the message was displayed, false if the message could not be displayed.\r\n */\r\n public static outputActivityMessage(message: NotifyMessageType, percentComplete: number): boolean {\r\n return MessageManager.setupActivityMessageValues(message, percentComplete);\r\n }\r\n\r\n /**\r\n * Sets values on _OngoingActivityMessage to be referenced when displaying\r\n * an ActivityMessage.\r\n * @param message Message of the process that ActivityMessage is tracking\r\n * @param percentage Progress made by activity in percentage\r\n * @param restored True if original ActivityMessage has been closed and\r\n * is now being restored from the status bar.\r\n * @returns true if details is valid and can be used to display ActivityMessage\r\n */\r\n public static setupActivityMessageValues(message: NotifyMessageType, percentage: number, restored?: boolean): boolean {\r\n this._ongoingActivityMessage.message = message;\r\n this._ongoingActivityMessage.percentage = percentage;\r\n\r\n this.onActivityMessageUpdatedEvent.emit({\r\n message,\r\n percentage,\r\n details: this._ongoingActivityMessage.details,\r\n restored: (restored !== undefined) ? restored : this._ongoingActivityMessage.isRestored,\r\n });\r\n\r\n this._ongoingActivityMessage.isRestored = false;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Dismisses current ActivityMessage and ends activity if canceled.\r\n * @param isCompleted True if the activity was completed, false if it was canceled\r\n * @returns True if both ActivityMessage and activity process are ended.\r\n */\r\n public static endActivityMessage(isCompleted: boolean): boolean {\r\n this.endActivityProcessing(isCompleted);\r\n this.onActivityMessageCancelledEvent.emit({});\r\n return true;\r\n }\r\n\r\n /**\r\n * Ends processing for activity according to message definition.\r\n * @param isCompleted True if the activity was completed, false if it was canceled\r\n */\r\n private static endActivityProcessing(isCompleted: boolean): void {\r\n if (isCompleted)\r\n this._ongoingActivityMessage.details.onActivityCompleted();\r\n else\r\n this._ongoingActivityMessage.details.onActivityCancelled();\r\n }\r\n\r\n /**\r\n * Displays an input field message near target element.\r\n * @param target The currently focused or recently focused element to place the\r\n * input field message near.\r\n * @param messageText Text to display in the message.\r\n * @param detailedMessage Optional detailed message text to display.\r\n * @param priority Optional message priority which controls icon to display.\r\n */\r\n public static displayInputFieldMessage(target: HTMLElement, messageText: NotifyMessageType, detailedMessage: NotifyMessageType = \"\", priority = OutputMessagePriority.Error) {\r\n this.onInputFieldMessageAddedEvent.emit({\r\n target,\r\n messageText,\r\n detailedMessage,\r\n priority,\r\n });\r\n }\r\n\r\n /**\r\n * Hides the currently displayed input field message.\r\n */\r\n public static hideInputFieldMessage() {\r\n this.onInputFieldMessageRemovedEvent.emit({});\r\n }\r\n\r\n /**\r\n * Opens message center.\r\n */\r\n public static openMessageCenter() {\r\n this.onOpenMessageCenterEvent.emit({});\r\n }\r\n\r\n /** Output a prompt to the user. A 'prompt' indicates an action the user should take to proceed. */\r\n public static outputPrompt(prompt: string): void {\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetToolPrompt, prompt, true);\r\n }\r\n\r\n /** Gets an icon CSS class name based on a given NotifyMessageDetailsType. */\r\n public static getIconClassName(details: NotifyMessageDetailsType): string {\r\n const severity = MessageManager.getSeverity(details);\r\n const className = MessageContainer.getIconClassName(severity, false);\r\n const iconClassName = classnames(\"icon\", \"notifymessage-icon\", className);\r\n\r\n return iconClassName;\r\n }\r\n\r\n /** Gets a MessageSeverity based on a given NotifyMessageDetailsType. */\r\n public static getSeverity(details: NotifyMessageDetailsType): MessageSeverity {\r\n let severity = MessageSeverity.None;\r\n\r\n switch (details.priority) {\r\n case OutputMessagePriority.None:\r\n severity = MessageSeverity.Success;\r\n break;\r\n case OutputMessagePriority.Success:\r\n severity = MessageSeverity.Success;\r\n break;\r\n case OutputMessagePriority.Info:\r\n severity = MessageSeverity.Information;\r\n break;\r\n case OutputMessagePriority.Warning:\r\n severity = MessageSeverity.Warning;\r\n break;\r\n case OutputMessagePriority.Error:\r\n severity = MessageSeverity.Error;\r\n break;\r\n case OutputMessagePriority.Fatal:\r\n severity = MessageSeverity.Fatal;\r\n break;\r\n }\r\n\r\n return severity;\r\n }\r\n\r\n /** Gets a MessageBoxIconType based on a given NotifyMessageDetailsType. */\r\n public static getIconType(details: NotifyMessageDetailsType): MessageBoxIconType {\r\n let iconType = MessageBoxIconType.NoSymbol;\r\n\r\n switch (details.priority) {\r\n case OutputMessagePriority.None:\r\n iconType = MessageBoxIconType.NoSymbol;\r\n break;\r\n case OutputMessagePriority.Success:\r\n iconType = MessageBoxIconType.Success;\r\n break;\r\n case OutputMessagePriority.Info:\r\n iconType = MessageBoxIconType.Information;\r\n break;\r\n case OutputMessagePriority.Warning:\r\n iconType = MessageBoxIconType.Warning;\r\n break;\r\n case OutputMessagePriority.Error:\r\n iconType = MessageBoxIconType.Critical;\r\n break;\r\n case OutputMessagePriority.Fatal:\r\n iconType = MessageBoxIconType.Critical;\r\n break;\r\n }\r\n\r\n return iconType;\r\n }\r\n\r\n /** Output a MessageBox and wait for response from the user.\r\n * @param mbType The MessageBox type.\r\n * @param message The message to display.\r\n * @param icon The MessageBox icon type.\r\n * @return the response from the user.\r\n */\r\n public static async openMessageBox(mbType: MessageBoxType, message: NotifyMessageType, icon: MessageBoxIconType): Promise<MessageBoxValue> {\r\n const title = UiFramework.translate(\"general.alert\");\r\n\r\n return new Promise((onFulfilled: (result: MessageBoxValue) => void, onRejected: (reason: any) => void) => {\r\n const messageBoxCallbacks = new MessageBoxCallbacks(onFulfilled, onRejected);\r\n const messageElement = <MessageSpan message={message} />;\r\n ModalDialogManager.openDialog(this.standardMessageBox(mbType, icon, title, messageElement, messageBoxCallbacks));\r\n });\r\n }\r\n\r\n /** @internal */\r\n public static showAlertMessageBox(messageDetails: NotifyMessageDetailsType): void {\r\n const title = UiFramework.translate(\"general.alert\");\r\n const iconType = this.getIconType(messageDetails);\r\n const content = (\r\n <>\r\n <MessageSpan message={messageDetails.briefMessage} />\r\n {\r\n messageDetails.detailedMessage && (\r\n <p>\r\n <MessageSpan message={messageDetails.detailedMessage} />\r\n </p>\r\n )\r\n }\r\n </>\r\n );\r\n ModalDialogManager.openDialog(this.standardMessageBox(MessageBoxType.Ok, iconType, title, content));\r\n }\r\n\r\n private static standardMessageBox(mbType: MessageBoxType, iconType: MessageBoxIconType, title: string, messageElement: React.ReactNode, callbacks?: MessageBoxCallbacks): React.ReactNode {\r\n const onResult = (callbacks !== undefined) ? callbacks.handleMessageBoxResult : undefined;\r\n return (\r\n <StandardMessageBox\r\n opened={true}\r\n messageBoxType={mbType}\r\n iconType={iconType}\r\n title={title}\r\n onResult={onResult}\r\n >\r\n {messageElement}\r\n </StandardMessageBox>\r\n );\r\n }\r\n\r\n /** Setup tool assistance instructions for a tool. The instructions include the main instruction, which includes the current prompt.\r\n * @param instructions The tool assistance instructions.\r\n * @public\r\n */\r\n public static setToolAssistance(instructions: ToolAssistanceInstructions | undefined) {\r\n MessageManager.onToolAssistanceChangedEvent.emit({ instructions });\r\n }\r\n\r\n /** Show a tooltip window. Saves tooltip location for AccuSnap to test if cursor has moved far enough away to close tooltip.\r\n * @param htmlElement The HTMLElement that anchors the tooltip.\r\n * @param message What to display inside the tooltip.\r\n * @param location An optional location, relative to the origin of htmlElement, for the tooltip. If undefined, center of `htmlElement`.\r\n * @param options Options that supply additional information about how the tooltip should function.\r\n */\r\n public static openToolTip(htmlElement: HTMLElement, message: NotifyMessageType, location?: XAndY, options?: ToolTipOptions): void {\r\n IModelApp.notifications.toolTipLocation.setFrom(location);\r\n ElementTooltip.showTooltip(htmlElement, message, location, options);\r\n }\r\n\r\n /** @internal */\r\n public static closeAllMessages(): void {\r\n ElementTooltip.hideTooltip();\r\n PointerMessage.hideMessage();\r\n MessageManager.clearMessages();\r\n MessageManager.hideInputFieldMessage();\r\n MessageManager.endActivityMessage(false);\r\n }\r\n\r\n}\r\n"]}
|
|
@@ -5,7 +5,7 @@ import "./Frontstage.scss";
|
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { WidgetState } from "@itwin/appui-abstract";
|
|
7
7
|
import { RectangleProps, UiStateStorageResult, UiStateStorageStatus } from "@itwin/core-react";
|
|
8
|
-
import { NineZoneDispatch, NineZoneLabels, NineZoneState, PanelSide, TabState } from "@itwin/appui-layout-react";
|
|
8
|
+
import { NineZoneAction, NineZoneDispatch, NineZoneLabels, NineZoneState, PanelSide, TabState } from "@itwin/appui-layout-react";
|
|
9
9
|
import { FrontstageDef } from "../frontstage/FrontstageDef";
|
|
10
10
|
import { StagePanelState, StagePanelZoneDefKeys } from "../stagepanels/StagePanelDef";
|
|
11
11
|
import { TabLocation, WidgetDef } from "../widgets/WidgetDef";
|
|
@@ -17,6 +17,8 @@ export declare function useNineZoneState(frontstageDef: FrontstageDef): NineZone
|
|
|
17
17
|
*/
|
|
18
18
|
export declare function useUpdateNineZoneSize(frontstageDef: FrontstageDef): void;
|
|
19
19
|
/** @internal */
|
|
20
|
+
export declare function FrameworkStateReducer(state: NineZoneState, action: NineZoneAction, frontstageDef: FrontstageDef): NineZoneState;
|
|
21
|
+
/** @internal */
|
|
20
22
|
export declare function useNineZoneDispatch(frontstageDef: FrontstageDef): NineZoneDispatch;
|
|
21
23
|
/** @internal */
|
|
22
24
|
export declare const WidgetPanelsFrontstage: React.NamedExoticComponent<object>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"AAMA;;GAEG;AAIH,OAAO,mBAAmB,CAAC;AAE3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAsC,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAa,cAAc,EAAmB,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE3H,OAAO,
|
|
1
|
+
{"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -102,7 +102,8 @@ export function useUpdateNineZoneSize(frontstageDef) {
|
|
|
102
102
|
frontstageDef.nineZoneState = state;
|
|
103
103
|
}, [frontstageDef]);
|
|
104
104
|
}
|
|
105
|
-
|
|
105
|
+
/** @internal */
|
|
106
|
+
export function FrameworkStateReducer(state, action, frontstageDef) {
|
|
106
107
|
state = NineZoneStateReducer(state, action);
|
|
107
108
|
if (action.type === "RESIZE") {
|
|
108
109
|
state = produce(state, (draft) => {
|
|
@@ -142,10 +143,6 @@ export function useNineZoneDispatch(frontstageDef) {
|
|
|
142
143
|
frontstageDef.popoutWidget(tabId);
|
|
143
144
|
return;
|
|
144
145
|
}
|
|
145
|
-
if (action.type === "FLOATING_WIDGET_SET_BOUNDS") {
|
|
146
|
-
frontstageDef.setFloatingWidgetBoundsInternal(action.id, action.bounds, true);
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
146
|
const nineZoneState = frontstageDef.nineZoneState;
|
|
150
147
|
if (!nineZoneState)
|
|
151
148
|
return;
|