@itwin/appui-react 3.0.0-dev.127 → 3.0.0-dev.131

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/lib/cjs/appui-react/UiFramework.js +2 -2
  2. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  3. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js +3 -3
  4. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js.map +1 -1
  5. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js +2 -2
  6. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  7. package/lib/cjs/appui-react/tools/MarkupToolDefinitions.d.ts +2 -2
  8. package/lib/cjs/appui-react/tools/MarkupToolDefinitions.js +2 -2
  9. package/lib/cjs/appui-react/tools/MarkupToolDefinitions.js.map +1 -1
  10. package/lib/cjs/appui-react.d.ts +0 -8
  11. package/lib/cjs/appui-react.d.ts.map +1 -1
  12. package/lib/cjs/appui-react.js +0 -8
  13. package/lib/cjs/appui-react.js.map +1 -1
  14. package/lib/esm/appui-react/UiFramework.js +1 -1
  15. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  16. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js +3 -3
  17. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js.map +1 -1
  18. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js +2 -2
  19. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  20. package/lib/esm/appui-react/tools/MarkupToolDefinitions.d.ts +2 -2
  21. package/lib/esm/appui-react/tools/MarkupToolDefinitions.js +2 -2
  22. package/lib/esm/appui-react/tools/MarkupToolDefinitions.js.map +1 -1
  23. package/lib/esm/appui-react.d.ts +0 -8
  24. package/lib/esm/appui-react.d.ts.map +1 -1
  25. package/lib/esm/appui-react.js +0 -8
  26. package/lib/esm/appui-react.js.map +1 -1
  27. package/package.json +35 -37
@@ -1 +1 @@
1
- {"version":3,"file":"UiFramework.js","sourceRoot":"","sources":["../../../src/appui-react/UiFramework.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 Utilities\r\n */\r\n\r\n// cSpell:ignore configurableui clientservices\r\n\r\nimport { Store } from \"redux\";\r\nimport { GuidString, Logger, ProcessDetector } from \"@itwin/core-bentley\";\r\nimport { Localization, RpcActivity } from \"@itwin/core-common\";\r\nimport { IModelApp, IModelConnection, SnapMode, ViewState } from \"@itwin/core-frontend\";\r\nimport { Presentation } from \"@itwin/presentation-frontend\";\r\nimport { TelemetryEvent } from \"@bentley/telemetry-client\";\r\nimport { getClassName, UiAdmin, UiError } from \"@itwin/appui-abstract\";\r\nimport { LocalSettingsStorage, SettingsManager, UiEvent, UiSettingsStorage } from \"@itwin/core-react\";\r\nimport { UiIModelComponents } from \"@itwin/imodel-components-react\";\r\nimport { BackstageManager } from \"./backstage/BackstageManager\";\r\nimport { ChildWindowManager } from \"./childwindow/ChildWindowManager\";\r\nimport { ConfigurableUiManager } from \"./configurableui/ConfigurableUiManager\";\r\nimport { ConfigurableUiActionId } from \"./configurableui/state\";\r\nimport { FrameworkState } from \"./redux/FrameworkState\";\r\nimport { CursorMenuData, PresentationSelectionScope, SessionStateActionId } from \"./redux/SessionState\";\r\nimport { StateManager } from \"./redux/StateManager\";\r\nimport { HideIsolateEmphasizeActionHandler, HideIsolateEmphasizeManager } from \"./selection/HideIsolateEmphasizeManager\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"./syncui/SyncUiEventDispatcher\";\r\nimport { SYSTEM_PREFERRED_COLOR_THEME, WIDGET_OPACITY_DEFAULT } from \"./theme/ThemeManager\";\r\nimport * as keyinPaletteTools from \"./tools/KeyinPaletteTools\";\r\nimport * as openSettingTools from \"./tools/OpenSettingsTool\";\r\nimport * as restoreLayoutTools from \"./tools/RestoreLayoutTool\";\r\nimport * as toolSettingTools from \"./tools/ToolSettingsTools\";\r\nimport { UserInfo } from \"./UserInfo\";\r\nimport { UiShowHideManager, UiShowHideSettingsProvider } from \"./utils/UiShowHideManager\";\r\nimport { WidgetManager } from \"./widgets/WidgetManager\";\r\nimport { FrontstageManager } from \"./frontstage/FrontstageManager\";\r\n\r\n// cSpell:ignore Mobi\r\n\r\n/** Defined that available Ui Versions. It is recommended to always use the latest version available.\r\n * @public\r\n */\r\nexport type FrameworkVersionId = \"1\" | \"2\";\r\n\r\n/** Interface to be implemented but any classes that wants to load their user settings when the UiSetting storage class is set.\r\n * @public\r\n */\r\nexport interface UserSettingsProvider {\r\n /** Unique provider Id */\r\n providerId: string;\r\n /** Function to load settings from settings storage */\r\n loadUserSettings(storage: UiSettingsStorage): Promise<void>; // eslint-disable-line deprecation/deprecation\r\n}\r\n\r\n/** UiVisibility Event Args interface.\r\n * @public\r\n */\r\nexport interface UiVisibilityEventArgs {\r\n visible: boolean;\r\n}\r\n\r\n/** UiVisibility Event class.\r\n * @public\r\n */\r\nexport class UiVisibilityChangedEvent extends UiEvent<UiVisibilityEventArgs> { }\r\n\r\n/** FrameworkVersion Changed Event Args interface.\r\n * @internal\r\n */\r\nexport interface FrameworkVersionChangedEventArgs {\r\n oldVersion: FrameworkVersionId;\r\n version: FrameworkVersionId;\r\n}\r\n\r\n/** FrameworkVersion Changed Event class.\r\n * @internal\r\n */\r\nexport class FrameworkVersionChangedEvent extends UiEvent<FrameworkVersionChangedEventArgs> { }\r\n\r\n/** TrackingTime time argument used by our feature tracking manager as an option argument to the TelemetryClient\r\n * @internal\r\n */\r\nexport interface TrackingTime {\r\n startTime: Date;\r\n endTime: Date;\r\n}\r\n\r\n/**\r\n * Manages the Redux store, localization service and iModel, Project and Login services for the ui-framework package.\r\n * @public\r\n */\r\nexport class UiFramework {\r\n private static _initialized = false;\r\n private static _store?: Store<any>;\r\n private static _complaint = \"UiFramework not initialized\";\r\n private static _frameworkStateKeyInStore: string = \"frameworkState\"; // default name\r\n private static _backstageManager?: BackstageManager;\r\n private static _widgetManager?: WidgetManager;\r\n private static _uiVersion: FrameworkVersionId = \"2\";\r\n private static _hideIsolateEmphasizeActionHandler?: HideIsolateEmphasizeActionHandler;\r\n /** this provides a default storage location for settings */\r\n private static _uiSettingsStorage: UiSettingsStorage = new LocalSettingsStorage(); // eslint-disable-line deprecation/deprecation\r\n private static _settingsManager?: SettingsManager;\r\n private static _uiSettingsProviderRegistry: Map<string, UserSettingsProvider> = new Map<string, UserSettingsProvider>();\r\n private static _PopupWindowManager = new ChildWindowManager();\r\n public static useDefaultPopoutUrl = false;\r\n\r\n /** @public */\r\n public static get childWindowManager(): ChildWindowManager {\r\n return UiFramework._PopupWindowManager;\r\n }\r\n\r\n /** Registers class that will be informed when the UserSettingsStorage location has been set or changed. This allows\r\n * classes to load any previously saved settings from the new storage location. Common storage locations are the browser's\r\n * local storage, or the iTwin Product Settings cloud storage available via the SettingsAdmin see `IModelApp.settingsAdmin`.\r\n * @beta\r\n */\r\n public static registerUserSettingsProvider(entry: UserSettingsProvider) {\r\n if (this._uiSettingsProviderRegistry.has(entry.providerId))\r\n return false;\r\n\r\n this._uiSettingsProviderRegistry.set(entry.providerId, entry);\r\n return true;\r\n }\r\n\r\n /** Get Show Ui event.\r\n * @public\r\n */\r\n public static readonly onUiVisibilityChanged = new UiVisibilityChangedEvent();\r\n\r\n /**\r\n * Called by the application to initialize the UiFramework. Also initializes UIIModelComponents, UiComponents, UiCore.\r\n * @param store The single Redux store created by the host application. If this is `undefined` then it is assumed that the [[StateManager]] is being used to provide the Redux store.\r\n * @param frameworkStateKey The name of the key used by the app when adding the UiFramework state into the Redux store. If not defined \"frameworkState\" is assumed. This value is ignored if [[StateManager]] is being used. The StateManager use \"frameworkState\".\r\n */\r\n public static async initialize(store: Store<any> | undefined, frameworkStateKey?: string): Promise<void> {\r\n return this.initializeEx(store, frameworkStateKey);\r\n }\r\n\r\n /**\r\n * Called by the application to initialize the UiFramework. Also initializes UIIModelComponents, UiComponents, UiCore.\r\n * @param store The single Redux store created by the host application. If this is `undefined` then it is assumed that the [[StateManager]] is being used to provide the Redux store.\r\n * @param frameworkStateKey The name of the key used by the app when adding the UiFramework state into the Redux store. If not defined \"frameworkState\" is assumed. This value is ignored if [[StateManager]] is being used. The StateManager use \"frameworkState\".\r\n *\r\n * @internal\r\n */\r\n public static async initializeEx(store: Store<any> | undefined, frameworkStateKey?: string): Promise<void> {\r\n if (UiFramework._initialized) {\r\n Logger.logInfo(UiFramework.loggerCategory(UiFramework), `UiFramework.initialize already called`);\r\n return;\r\n }\r\n\r\n /* if store is undefined then the StateManager class should have been initialized by parent app and the apps default set of reducers registered with it.\r\n If the app has no reducers to add and does not initialize a StateManager then just initialize the StateManager with the default framework reducer now */\r\n if (undefined === store && !StateManager.isInitialized(true))\r\n new StateManager();\r\n\r\n UiFramework._store = store;\r\n // ignore setting _frameworkStateKeyInStore if not using store\r\n if (frameworkStateKey && store)\r\n UiFramework._frameworkStateKeyInStore = frameworkStateKey;\r\n\r\n // set up namespace and register all tools from package\r\n const frameworkNamespace = IModelApp.localization?.registerNamespace(UiFramework.localizationNamespace);\r\n [\r\n restoreLayoutTools,\r\n keyinPaletteTools,\r\n openSettingTools,\r\n toolSettingTools,\r\n ].forEach((tool) => IModelApp.tools.registerModule(tool, this.localizationNamespace));\r\n\r\n UiFramework._backstageManager = new BackstageManager();\r\n UiFramework._hideIsolateEmphasizeActionHandler = new HideIsolateEmphasizeManager(); // this allows user to override the default HideIsolateEmphasizeManager implementation.\r\n UiFramework._widgetManager = new WidgetManager();\r\n\r\n // Initialize ui-imodel-components, ui-components, ui-core & ui-abstract\r\n await UiIModelComponents.initialize();\r\n\r\n UiFramework.settingsManager.onSettingsProvidersChanged.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.SettingsProvidersChanged);\r\n });\r\n\r\n // Initialize the MessagePresenter interface in UiAdmin for Editor notifications\r\n UiAdmin.messagePresenter = IModelApp.notifications;\r\n\r\n UiFramework._initialized = true;\r\n\r\n // initialize any standalone settings providers that don't need to have defaults set by iModelApp\r\n UiShowHideSettingsProvider.initialize();\r\n\r\n ConfigurableUiManager.initialize();\r\n\r\n return frameworkNamespace;\r\n }\r\n\r\n /** Un-registers the UiFramework internationalization service namespace */\r\n public static terminate() {\r\n UiFramework._store = undefined;\r\n UiFramework._frameworkStateKeyInStore = \"frameworkState\";\r\n if (StateManager.isInitialized(true))\r\n StateManager.clearStore();\r\n // istanbul ignore next\r\n IModelApp.localization?.unregisterNamespace(UiFramework.localizationNamespace);\r\n UiFramework._backstageManager = undefined;\r\n UiFramework._widgetManager = undefined;\r\n UiFramework._hideIsolateEmphasizeActionHandler = undefined;\r\n UiFramework._settingsManager = undefined;\r\n\r\n UiIModelComponents.terminate();\r\n UiShowHideManager.terminate();\r\n UiFramework._initialized = false;\r\n }\r\n\r\n /** Determines if UiFramework has been initialized */\r\n public static get initialized(): boolean { return UiFramework._initialized; }\r\n\r\n /** Property that returns the SettingManager used by AppUI-based applications.\r\n * @public */\r\n public static get settingsManager() {\r\n if (undefined === UiFramework._settingsManager)\r\n UiFramework._settingsManager = new SettingsManager();\r\n return UiFramework._settingsManager;\r\n }\r\n\r\n /** @public */\r\n public static get frameworkStateKey(): string {\r\n return UiFramework._frameworkStateKeyInStore;\r\n }\r\n\r\n /** The UiFramework state maintained by Redux\r\n * @public\r\n */\r\n public static get frameworkState(): FrameworkState | undefined {\r\n try {\r\n // eslint-disable-next-line dot-notation\r\n return UiFramework.store.getState()[UiFramework.frameworkStateKey];\r\n } catch (_e) {\r\n return undefined;\r\n }\r\n }\r\n\r\n /** The Redux store */\r\n public static get store(): Store<any> {\r\n if (UiFramework._store)\r\n return UiFramework._store;\r\n\r\n // istanbul ignore else\r\n if (!StateManager.isInitialized(true))\r\n throw new UiError(UiFramework.loggerCategory(this), `Error trying to access redux store before either store or StateManager has been initialized.`);\r\n\r\n // istanbul ignore next\r\n return StateManager.store;\r\n }\r\n\r\n /** The internationalization service created by the app.\r\n * @internal\r\n */\r\n public static get localization(): Localization {\r\n // istanbul ignore next\r\n if (!IModelApp.localization)\r\n throw new UiError(UiFramework.loggerCategory(this), `IModelApp.localization has not been defined.`);\r\n return IModelApp.localization;\r\n }\r\n\r\n /** The internationalization service namespace. */\r\n public static get localizationNamespace(): string {\r\n return \"UiFramework\";\r\n }\r\n\r\n /** @public */\r\n public static get backstageManager(): BackstageManager {\r\n // istanbul ignore next\r\n if (!UiFramework._backstageManager)\r\n throw new UiError(UiFramework.loggerCategory(this), UiFramework._complaint);\r\n return UiFramework._backstageManager;\r\n }\r\n\r\n /** @alpha */\r\n public static get hideIsolateEmphasizeActionHandler(): HideIsolateEmphasizeActionHandler {\r\n // istanbul ignore next\r\n if (!UiFramework._hideIsolateEmphasizeActionHandler)\r\n throw new UiError(UiFramework.loggerCategory(this), UiFramework._complaint);\r\n return UiFramework._hideIsolateEmphasizeActionHandler;\r\n }\r\n\r\n /** @alpha */\r\n public static setHideIsolateEmphasizeActionHandler(handler: HideIsolateEmphasizeActionHandler | undefined) {\r\n // istanbul ignore else\r\n if (handler)\r\n UiFramework._hideIsolateEmphasizeActionHandler = handler;\r\n else\r\n UiFramework._hideIsolateEmphasizeActionHandler = new HideIsolateEmphasizeManager();\r\n }\r\n\r\n /** @alpha */\r\n public static get widgetManager(): WidgetManager {\r\n // istanbul ignore next\r\n if (!UiFramework._widgetManager)\r\n throw new UiError(UiFramework.loggerCategory(this), UiFramework._complaint);\r\n return UiFramework._widgetManager;\r\n }\r\n\r\n /** Calls localization.getLocalizedStringWithNamespace with the \"UiFramework\" namespace. Do NOT include the namespace in the key.\r\n * @internal\r\n */\r\n public static translate(key: string | string[]): string {\r\n return IModelApp.localization.getLocalizedStringWithNamespace(UiFramework.localizationNamespace, key);\r\n }\r\n\r\n /** @internal */\r\n public static get packageName(): string {\r\n return \"appui-react\";\r\n }\r\n\r\n /** @internal */\r\n public static loggerCategory(obj: any): string {\r\n const className = getClassName(obj);\r\n const category = UiFramework.packageName + (className ? `.${className}` : \"\");\r\n return category;\r\n }\r\n\r\n public static dispatchActionToStore(type: string, payload: any, immediateSync = false) {\r\n UiFramework.store.dispatch({ type, payload });\r\n if (immediateSync)\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(type);\r\n else\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(type);\r\n }\r\n\r\n public static setAccudrawSnapMode(snapMode: SnapMode) {\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetSnapMode, snapMode, true);\r\n }\r\n\r\n public static getAccudrawSnapMode(): SnapMode {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.configurableUiState.snapMode : /* istanbul ignore next */ SnapMode.NearestKeypoint;\r\n }\r\n\r\n public static getActiveSelectionScope(): string {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.activeSelectionScope : /* istanbul ignore next */ \"element\";\r\n }\r\n\r\n public static setActiveSelectionScope(selectionScopeId: string): void {\r\n // istanbul ignore else\r\n if (UiFramework.frameworkState) {\r\n const foundIndex = UiFramework.frameworkState.sessionState.availableSelectionScopes.findIndex((selectionScope: PresentationSelectionScope) => selectionScope.id === selectionScopeId);\r\n if (-1 !== foundIndex) {\r\n const scope = UiFramework.frameworkState.sessionState.availableSelectionScopes[foundIndex];\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetSelectionScope, scope.id);\r\n Presentation.selection.scopes.activeScope = scope.id;\r\n }\r\n }\r\n }\r\n\r\n /** @public */\r\n public static openCursorMenu(menuData: CursorMenuData | undefined): void {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.UpdateCursorMenu, menuData);\r\n }\r\n\r\n /** @public */\r\n public static closeCursorMenu(): void {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.UpdateCursorMenu, undefined);\r\n }\r\n\r\n /** @public */\r\n public static getCursorMenuData(): CursorMenuData | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.cursorMenuData : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n public static getActiveIModelId(): string {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.iModelId : /* istanbul ignore next */ \"\";\r\n }\r\n\r\n public static setActiveIModelId(iModelId: string): void {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetActiveIModelId, iModelId);\r\n }\r\n\r\n public static setIModelConnection(iModelConnection: IModelConnection | undefined, immediateSync = false) {\r\n const oldConnection = UiFramework.getIModelConnection();\r\n if (oldConnection !== iModelConnection) {\r\n if (oldConnection?.iModelId)\r\n FrontstageManager.clearFrontstageDefsForIModelId(oldConnection.iModelId);\r\n oldConnection && undefined === iModelConnection && SyncUiEventDispatcher.clearConnectionEvents(oldConnection);\r\n iModelConnection && SyncUiEventDispatcher.initializeConnectionEvents(iModelConnection);\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetIModelConnection, iModelConnection, immediateSync);\r\n }\r\n UiFramework.setActiveIModelId(iModelConnection?.iModelId ?? \"\");\r\n }\r\n\r\n public static getIModelConnection(): IModelConnection | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.iModelConnection : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n /** @public */\r\n public static async setUiSettingsStorage(storage: UiSettingsStorage, immediateSync = false) { // eslint-disable-line deprecation/deprecation\r\n if (UiFramework._uiSettingsStorage === storage)\r\n return;\r\n\r\n UiFramework._uiSettingsStorage = storage;\r\n\r\n // let any registered providers to load values from the new storage location\r\n const providerKeys = [...this._uiSettingsProviderRegistry.keys()];\r\n for await (const key of providerKeys) {\r\n await this._uiSettingsProviderRegistry.get(key)!.loadUserSettings(storage);\r\n }\r\n\r\n // istanbul ignore next\r\n if (immediateSync)\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.UiSettingsChanged);\r\n else\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.UiSettingsChanged);\r\n }\r\n\r\n /** @public */\r\n public static getUiSettingsStorage(): UiSettingsStorage { // eslint-disable-line deprecation/deprecation\r\n return UiFramework._uiSettingsStorage;\r\n }\r\n\r\n /** @public */\r\n public static setUserInfo(userInfo: UserInfo | undefined, immediateSync = false) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetUserInfo, userInfo, immediateSync);\r\n }\r\n\r\n /** @public */\r\n public static getUserInfo(): UserInfo | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.userInfo : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n public static setDefaultIModelViewportControlId(iModelViewportControlId: string, immediateSync = false) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetDefaultIModelViewportControlId, iModelViewportControlId, immediateSync);\r\n }\r\n\r\n public static getDefaultIModelViewportControlId(): string | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.defaultIModelViewportControlId : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n public static setDefaultViewId(viewId: string, immediateSync = false) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetDefaultViewId, viewId, immediateSync);\r\n }\r\n\r\n public static getDefaultViewId(): string | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.defaultViewId : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n public static setDefaultViewState(viewState: ViewState, immediateSync = false) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetDefaultViewState, viewState, immediateSync);\r\n }\r\n public static getDefaultViewState(): ViewState | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.defaultViewState : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n /** @public */\r\n public static getAvailableSelectionScopes(): PresentationSelectionScope[] {\r\n return UiFramework.frameworkState ?\r\n UiFramework.frameworkState.sessionState.availableSelectionScopes :\r\n /* istanbul ignore next */\r\n [{ id: \"element\", label: \"Element\" } as PresentationSelectionScope];\r\n }\r\n\r\n public static getIsUiVisible() {\r\n return UiShowHideManager.isUiVisible;\r\n }\r\n\r\n public static setIsUiVisible(visible: boolean) {\r\n if (UiShowHideManager.isUiVisible !== visible) {\r\n UiShowHideManager.isUiVisible = visible;\r\n UiFramework.onUiVisibilityChanged.emit({ visible });\r\n }\r\n }\r\n\r\n public static setColorTheme(theme: string) {\r\n if (UiFramework.getColorTheme() === theme)\r\n return;\r\n\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetTheme, theme, true);\r\n }\r\n\r\n public static getColorTheme(): string {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.configurableUiState.theme : /* istanbul ignore next */ SYSTEM_PREFERRED_COLOR_THEME;\r\n }\r\n\r\n public static setWidgetOpacity(opacity: number) {\r\n if (UiFramework.getWidgetOpacity() === opacity)\r\n return;\r\n\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetWidgetOpacity, opacity, true);\r\n }\r\n\r\n public static getWidgetOpacity(): number {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.configurableUiState.widgetOpacity : /* istanbul ignore next */ WIDGET_OPACITY_DEFAULT;\r\n }\r\n\r\n public static isMobile() { // eslint-disable-line @itwin/prefer-get\r\n return ProcessDetector.isMobileBrowser;\r\n }\r\n\r\n /** Returns the Ui Version.\r\n * @public\r\n */\r\n public static get uiVersion(): FrameworkVersionId {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.configurableUiState.frameworkVersion : this._uiVersion;\r\n }\r\n\r\n public static setUiVersion(version: FrameworkVersionId) {\r\n if (UiFramework.uiVersion === version)\r\n return;\r\n\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetFrameworkVersion, version === \"1\" ? \"1\" : \"2\", true);\r\n }\r\n\r\n public static get useDragInteraction(): boolean {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.configurableUiState.useDragInteraction : false;\r\n }\r\n\r\n public static setUseDragInteraction(useDragInteraction: boolean) {\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetDragInteraction, useDragInteraction, true);\r\n }\r\n\r\n /** Send logging message to the telemetry system\r\n * @internal\r\n */\r\n // istanbul ignore next\r\n public static async postTelemetry(eventName: string, eventId?: GuidString, iTwinId?: GuidString, iModeId?: GuidString, changeSetId?: string, time?: TrackingTime, additionalProperties?: { [key: string]: any }): Promise<void> {\r\n if (!IModelApp.authorizationClient)\r\n return;\r\n\r\n try {\r\n const activity: RpcActivity = {\r\n sessionId: IModelApp.sessionId,\r\n activityId: \"\",\r\n applicationId: IModelApp.applicationId,\r\n applicationVersion: IModelApp.applicationVersion,\r\n accessToken: (await IModelApp.authorizationClient.getAccessToken()) ?? \"\",\r\n };\r\n const telemetryEvent = new TelemetryEvent(eventName, eventId, iTwinId, iModeId, changeSetId, time, additionalProperties);\r\n await IModelApp.telemetry.postTelemetry(activity, telemetryEvent);\r\n } catch { }\r\n }\r\n private static _handleFrameworkVersionChangedEvent = (args: FrameworkVersionChangedEventArgs) => {\r\n // Log Ui Version used\r\n Logger.logInfo(UiFramework.loggerCategory(UiFramework), `Ui Version changed to ${args.version} `);\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n UiFramework.postTelemetry(`Ui Version changed to ${args.version} `, \"F2772C81-962D-4755-807C-2D675A5FF399\");\r\n UiFramework.setUiVersion(args.version);\r\n };\r\n\r\n /** Determines whether a ContextMenu is open\r\n * @alpha\r\n * */\r\n public static get isContextMenuOpen(): boolean {\r\n const contextMenu = document.querySelector(\"div.core-context-menu-opened\");\r\n return contextMenu !== null && contextMenu !== undefined;\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"UiFramework.js","sourceRoot":"","sources":["../../../src/appui-react/UiFramework.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 Utilities\r\n */\r\n\r\n// cSpell:ignore configurableui clientservices\r\n\r\nimport { Store } from \"redux\";\r\nimport { GuidString, Logger, ProcessDetector } from \"@itwin/core-bentley\";\r\nimport { Localization, RpcActivity } from \"@itwin/core-common\";\r\nimport { IModelApp, IModelConnection, SnapMode, ViewState } from \"@itwin/core-frontend\";\r\nimport { Presentation } from \"@itwin/presentation-frontend\";\r\nimport { TelemetryEvent } from \"@itwin/core-telemetry\";\r\nimport { getClassName, UiAdmin, UiError } from \"@itwin/appui-abstract\";\r\nimport { LocalSettingsStorage, SettingsManager, UiEvent, UiSettingsStorage } from \"@itwin/core-react\";\r\nimport { UiIModelComponents } from \"@itwin/imodel-components-react\";\r\nimport { BackstageManager } from \"./backstage/BackstageManager\";\r\nimport { ChildWindowManager } from \"./childwindow/ChildWindowManager\";\r\nimport { ConfigurableUiManager } from \"./configurableui/ConfigurableUiManager\";\r\nimport { ConfigurableUiActionId } from \"./configurableui/state\";\r\nimport { FrameworkState } from \"./redux/FrameworkState\";\r\nimport { CursorMenuData, PresentationSelectionScope, SessionStateActionId } from \"./redux/SessionState\";\r\nimport { StateManager } from \"./redux/StateManager\";\r\nimport { HideIsolateEmphasizeActionHandler, HideIsolateEmphasizeManager } from \"./selection/HideIsolateEmphasizeManager\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"./syncui/SyncUiEventDispatcher\";\r\nimport { SYSTEM_PREFERRED_COLOR_THEME, WIDGET_OPACITY_DEFAULT } from \"./theme/ThemeManager\";\r\nimport * as keyinPaletteTools from \"./tools/KeyinPaletteTools\";\r\nimport * as openSettingTools from \"./tools/OpenSettingsTool\";\r\nimport * as restoreLayoutTools from \"./tools/RestoreLayoutTool\";\r\nimport * as toolSettingTools from \"./tools/ToolSettingsTools\";\r\nimport { UserInfo } from \"./UserInfo\";\r\nimport { UiShowHideManager, UiShowHideSettingsProvider } from \"./utils/UiShowHideManager\";\r\nimport { WidgetManager } from \"./widgets/WidgetManager\";\r\nimport { FrontstageManager } from \"./frontstage/FrontstageManager\";\r\n\r\n// cSpell:ignore Mobi\r\n\r\n/** Defined that available Ui Versions. It is recommended to always use the latest version available.\r\n * @public\r\n */\r\nexport type FrameworkVersionId = \"1\" | \"2\";\r\n\r\n/** Interface to be implemented but any classes that wants to load their user settings when the UiSetting storage class is set.\r\n * @public\r\n */\r\nexport interface UserSettingsProvider {\r\n /** Unique provider Id */\r\n providerId: string;\r\n /** Function to load settings from settings storage */\r\n loadUserSettings(storage: UiSettingsStorage): Promise<void>; // eslint-disable-line deprecation/deprecation\r\n}\r\n\r\n/** UiVisibility Event Args interface.\r\n * @public\r\n */\r\nexport interface UiVisibilityEventArgs {\r\n visible: boolean;\r\n}\r\n\r\n/** UiVisibility Event class.\r\n * @public\r\n */\r\nexport class UiVisibilityChangedEvent extends UiEvent<UiVisibilityEventArgs> { }\r\n\r\n/** FrameworkVersion Changed Event Args interface.\r\n * @internal\r\n */\r\nexport interface FrameworkVersionChangedEventArgs {\r\n oldVersion: FrameworkVersionId;\r\n version: FrameworkVersionId;\r\n}\r\n\r\n/** FrameworkVersion Changed Event class.\r\n * @internal\r\n */\r\nexport class FrameworkVersionChangedEvent extends UiEvent<FrameworkVersionChangedEventArgs> { }\r\n\r\n/** TrackingTime time argument used by our feature tracking manager as an option argument to the TelemetryClient\r\n * @internal\r\n */\r\nexport interface TrackingTime {\r\n startTime: Date;\r\n endTime: Date;\r\n}\r\n\r\n/**\r\n * Manages the Redux store, localization service and iModel, Project and Login services for the ui-framework package.\r\n * @public\r\n */\r\nexport class UiFramework {\r\n private static _initialized = false;\r\n private static _store?: Store<any>;\r\n private static _complaint = \"UiFramework not initialized\";\r\n private static _frameworkStateKeyInStore: string = \"frameworkState\"; // default name\r\n private static _backstageManager?: BackstageManager;\r\n private static _widgetManager?: WidgetManager;\r\n private static _uiVersion: FrameworkVersionId = \"2\";\r\n private static _hideIsolateEmphasizeActionHandler?: HideIsolateEmphasizeActionHandler;\r\n /** this provides a default storage location for settings */\r\n private static _uiSettingsStorage: UiSettingsStorage = new LocalSettingsStorage(); // eslint-disable-line deprecation/deprecation\r\n private static _settingsManager?: SettingsManager;\r\n private static _uiSettingsProviderRegistry: Map<string, UserSettingsProvider> = new Map<string, UserSettingsProvider>();\r\n private static _PopupWindowManager = new ChildWindowManager();\r\n public static useDefaultPopoutUrl = false;\r\n\r\n /** @public */\r\n public static get childWindowManager(): ChildWindowManager {\r\n return UiFramework._PopupWindowManager;\r\n }\r\n\r\n /** Registers class that will be informed when the UserSettingsStorage location has been set or changed. This allows\r\n * classes to load any previously saved settings from the new storage location. Common storage locations are the browser's\r\n * local storage, or the iTwin Product Settings cloud storage available via the SettingsAdmin see `IModelApp.settingsAdmin`.\r\n * @beta\r\n */\r\n public static registerUserSettingsProvider(entry: UserSettingsProvider) {\r\n if (this._uiSettingsProviderRegistry.has(entry.providerId))\r\n return false;\r\n\r\n this._uiSettingsProviderRegistry.set(entry.providerId, entry);\r\n return true;\r\n }\r\n\r\n /** Get Show Ui event.\r\n * @public\r\n */\r\n public static readonly onUiVisibilityChanged = new UiVisibilityChangedEvent();\r\n\r\n /**\r\n * Called by the application to initialize the UiFramework. Also initializes UIIModelComponents, UiComponents, UiCore.\r\n * @param store The single Redux store created by the host application. If this is `undefined` then it is assumed that the [[StateManager]] is being used to provide the Redux store.\r\n * @param frameworkStateKey The name of the key used by the app when adding the UiFramework state into the Redux store. If not defined \"frameworkState\" is assumed. This value is ignored if [[StateManager]] is being used. The StateManager use \"frameworkState\".\r\n */\r\n public static async initialize(store: Store<any> | undefined, frameworkStateKey?: string): Promise<void> {\r\n return this.initializeEx(store, frameworkStateKey);\r\n }\r\n\r\n /**\r\n * Called by the application to initialize the UiFramework. Also initializes UIIModelComponents, UiComponents, UiCore.\r\n * @param store The single Redux store created by the host application. If this is `undefined` then it is assumed that the [[StateManager]] is being used to provide the Redux store.\r\n * @param frameworkStateKey The name of the key used by the app when adding the UiFramework state into the Redux store. If not defined \"frameworkState\" is assumed. This value is ignored if [[StateManager]] is being used. The StateManager use \"frameworkState\".\r\n *\r\n * @internal\r\n */\r\n public static async initializeEx(store: Store<any> | undefined, frameworkStateKey?: string): Promise<void> {\r\n if (UiFramework._initialized) {\r\n Logger.logInfo(UiFramework.loggerCategory(UiFramework), `UiFramework.initialize already called`);\r\n return;\r\n }\r\n\r\n /* if store is undefined then the StateManager class should have been initialized by parent app and the apps default set of reducers registered with it.\r\n If the app has no reducers to add and does not initialize a StateManager then just initialize the StateManager with the default framework reducer now */\r\n if (undefined === store && !StateManager.isInitialized(true))\r\n new StateManager();\r\n\r\n UiFramework._store = store;\r\n // ignore setting _frameworkStateKeyInStore if not using store\r\n if (frameworkStateKey && store)\r\n UiFramework._frameworkStateKeyInStore = frameworkStateKey;\r\n\r\n // set up namespace and register all tools from package\r\n const frameworkNamespace = IModelApp.localization?.registerNamespace(UiFramework.localizationNamespace);\r\n [\r\n restoreLayoutTools,\r\n keyinPaletteTools,\r\n openSettingTools,\r\n toolSettingTools,\r\n ].forEach((tool) => IModelApp.tools.registerModule(tool, this.localizationNamespace));\r\n\r\n UiFramework._backstageManager = new BackstageManager();\r\n UiFramework._hideIsolateEmphasizeActionHandler = new HideIsolateEmphasizeManager(); // this allows user to override the default HideIsolateEmphasizeManager implementation.\r\n UiFramework._widgetManager = new WidgetManager();\r\n\r\n // Initialize ui-imodel-components, ui-components, ui-core & ui-abstract\r\n await UiIModelComponents.initialize();\r\n\r\n UiFramework.settingsManager.onSettingsProvidersChanged.addListener(() => {\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.SettingsProvidersChanged);\r\n });\r\n\r\n // Initialize the MessagePresenter interface in UiAdmin for Editor notifications\r\n UiAdmin.messagePresenter = IModelApp.notifications;\r\n\r\n UiFramework._initialized = true;\r\n\r\n // initialize any standalone settings providers that don't need to have defaults set by iModelApp\r\n UiShowHideSettingsProvider.initialize();\r\n\r\n ConfigurableUiManager.initialize();\r\n\r\n return frameworkNamespace;\r\n }\r\n\r\n /** Un-registers the UiFramework internationalization service namespace */\r\n public static terminate() {\r\n UiFramework._store = undefined;\r\n UiFramework._frameworkStateKeyInStore = \"frameworkState\";\r\n if (StateManager.isInitialized(true))\r\n StateManager.clearStore();\r\n // istanbul ignore next\r\n IModelApp.localization?.unregisterNamespace(UiFramework.localizationNamespace);\r\n UiFramework._backstageManager = undefined;\r\n UiFramework._widgetManager = undefined;\r\n UiFramework._hideIsolateEmphasizeActionHandler = undefined;\r\n UiFramework._settingsManager = undefined;\r\n\r\n UiIModelComponents.terminate();\r\n UiShowHideManager.terminate();\r\n UiFramework._initialized = false;\r\n }\r\n\r\n /** Determines if UiFramework has been initialized */\r\n public static get initialized(): boolean { return UiFramework._initialized; }\r\n\r\n /** Property that returns the SettingManager used by AppUI-based applications.\r\n * @public */\r\n public static get settingsManager() {\r\n if (undefined === UiFramework._settingsManager)\r\n UiFramework._settingsManager = new SettingsManager();\r\n return UiFramework._settingsManager;\r\n }\r\n\r\n /** @public */\r\n public static get frameworkStateKey(): string {\r\n return UiFramework._frameworkStateKeyInStore;\r\n }\r\n\r\n /** The UiFramework state maintained by Redux\r\n * @public\r\n */\r\n public static get frameworkState(): FrameworkState | undefined {\r\n try {\r\n // eslint-disable-next-line dot-notation\r\n return UiFramework.store.getState()[UiFramework.frameworkStateKey];\r\n } catch (_e) {\r\n return undefined;\r\n }\r\n }\r\n\r\n /** The Redux store */\r\n public static get store(): Store<any> {\r\n if (UiFramework._store)\r\n return UiFramework._store;\r\n\r\n // istanbul ignore else\r\n if (!StateManager.isInitialized(true))\r\n throw new UiError(UiFramework.loggerCategory(this), `Error trying to access redux store before either store or StateManager has been initialized.`);\r\n\r\n // istanbul ignore next\r\n return StateManager.store;\r\n }\r\n\r\n /** The internationalization service created by the app.\r\n * @internal\r\n */\r\n public static get localization(): Localization {\r\n // istanbul ignore next\r\n if (!IModelApp.localization)\r\n throw new UiError(UiFramework.loggerCategory(this), `IModelApp.localization has not been defined.`);\r\n return IModelApp.localization;\r\n }\r\n\r\n /** The internationalization service namespace. */\r\n public static get localizationNamespace(): string {\r\n return \"UiFramework\";\r\n }\r\n\r\n /** @public */\r\n public static get backstageManager(): BackstageManager {\r\n // istanbul ignore next\r\n if (!UiFramework._backstageManager)\r\n throw new UiError(UiFramework.loggerCategory(this), UiFramework._complaint);\r\n return UiFramework._backstageManager;\r\n }\r\n\r\n /** @alpha */\r\n public static get hideIsolateEmphasizeActionHandler(): HideIsolateEmphasizeActionHandler {\r\n // istanbul ignore next\r\n if (!UiFramework._hideIsolateEmphasizeActionHandler)\r\n throw new UiError(UiFramework.loggerCategory(this), UiFramework._complaint);\r\n return UiFramework._hideIsolateEmphasizeActionHandler;\r\n }\r\n\r\n /** @alpha */\r\n public static setHideIsolateEmphasizeActionHandler(handler: HideIsolateEmphasizeActionHandler | undefined) {\r\n // istanbul ignore else\r\n if (handler)\r\n UiFramework._hideIsolateEmphasizeActionHandler = handler;\r\n else\r\n UiFramework._hideIsolateEmphasizeActionHandler = new HideIsolateEmphasizeManager();\r\n }\r\n\r\n /** @alpha */\r\n public static get widgetManager(): WidgetManager {\r\n // istanbul ignore next\r\n if (!UiFramework._widgetManager)\r\n throw new UiError(UiFramework.loggerCategory(this), UiFramework._complaint);\r\n return UiFramework._widgetManager;\r\n }\r\n\r\n /** Calls localization.getLocalizedStringWithNamespace with the \"UiFramework\" namespace. Do NOT include the namespace in the key.\r\n * @internal\r\n */\r\n public static translate(key: string | string[]): string {\r\n return IModelApp.localization.getLocalizedStringWithNamespace(UiFramework.localizationNamespace, key);\r\n }\r\n\r\n /** @internal */\r\n public static get packageName(): string {\r\n return \"appui-react\";\r\n }\r\n\r\n /** @internal */\r\n public static loggerCategory(obj: any): string {\r\n const className = getClassName(obj);\r\n const category = UiFramework.packageName + (className ? `.${className}` : \"\");\r\n return category;\r\n }\r\n\r\n public static dispatchActionToStore(type: string, payload: any, immediateSync = false) {\r\n UiFramework.store.dispatch({ type, payload });\r\n if (immediateSync)\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(type);\r\n else\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(type);\r\n }\r\n\r\n public static setAccudrawSnapMode(snapMode: SnapMode) {\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetSnapMode, snapMode, true);\r\n }\r\n\r\n public static getAccudrawSnapMode(): SnapMode {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.configurableUiState.snapMode : /* istanbul ignore next */ SnapMode.NearestKeypoint;\r\n }\r\n\r\n public static getActiveSelectionScope(): string {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.activeSelectionScope : /* istanbul ignore next */ \"element\";\r\n }\r\n\r\n public static setActiveSelectionScope(selectionScopeId: string): void {\r\n // istanbul ignore else\r\n if (UiFramework.frameworkState) {\r\n const foundIndex = UiFramework.frameworkState.sessionState.availableSelectionScopes.findIndex((selectionScope: PresentationSelectionScope) => selectionScope.id === selectionScopeId);\r\n if (-1 !== foundIndex) {\r\n const scope = UiFramework.frameworkState.sessionState.availableSelectionScopes[foundIndex];\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetSelectionScope, scope.id);\r\n Presentation.selection.scopes.activeScope = scope.id;\r\n }\r\n }\r\n }\r\n\r\n /** @public */\r\n public static openCursorMenu(menuData: CursorMenuData | undefined): void {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.UpdateCursorMenu, menuData);\r\n }\r\n\r\n /** @public */\r\n public static closeCursorMenu(): void {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.UpdateCursorMenu, undefined);\r\n }\r\n\r\n /** @public */\r\n public static getCursorMenuData(): CursorMenuData | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.cursorMenuData : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n public static getActiveIModelId(): string {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.iModelId : /* istanbul ignore next */ \"\";\r\n }\r\n\r\n public static setActiveIModelId(iModelId: string): void {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetActiveIModelId, iModelId);\r\n }\r\n\r\n public static setIModelConnection(iModelConnection: IModelConnection | undefined, immediateSync = false) {\r\n const oldConnection = UiFramework.getIModelConnection();\r\n if (oldConnection !== iModelConnection) {\r\n if (oldConnection?.iModelId)\r\n FrontstageManager.clearFrontstageDefsForIModelId(oldConnection.iModelId);\r\n oldConnection && undefined === iModelConnection && SyncUiEventDispatcher.clearConnectionEvents(oldConnection);\r\n iModelConnection && SyncUiEventDispatcher.initializeConnectionEvents(iModelConnection);\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetIModelConnection, iModelConnection, immediateSync);\r\n }\r\n UiFramework.setActiveIModelId(iModelConnection?.iModelId ?? \"\");\r\n }\r\n\r\n public static getIModelConnection(): IModelConnection | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.iModelConnection : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n /** @public */\r\n public static async setUiSettingsStorage(storage: UiSettingsStorage, immediateSync = false) { // eslint-disable-line deprecation/deprecation\r\n if (UiFramework._uiSettingsStorage === storage)\r\n return;\r\n\r\n UiFramework._uiSettingsStorage = storage;\r\n\r\n // let any registered providers to load values from the new storage location\r\n const providerKeys = [...this._uiSettingsProviderRegistry.keys()];\r\n for await (const key of providerKeys) {\r\n await this._uiSettingsProviderRegistry.get(key)!.loadUserSettings(storage);\r\n }\r\n\r\n // istanbul ignore next\r\n if (immediateSync)\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.UiSettingsChanged);\r\n else\r\n SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.UiSettingsChanged);\r\n }\r\n\r\n /** @public */\r\n public static getUiSettingsStorage(): UiSettingsStorage { // eslint-disable-line deprecation/deprecation\r\n return UiFramework._uiSettingsStorage;\r\n }\r\n\r\n /** @public */\r\n public static setUserInfo(userInfo: UserInfo | undefined, immediateSync = false) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetUserInfo, userInfo, immediateSync);\r\n }\r\n\r\n /** @public */\r\n public static getUserInfo(): UserInfo | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.userInfo : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n public static setDefaultIModelViewportControlId(iModelViewportControlId: string, immediateSync = false) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetDefaultIModelViewportControlId, iModelViewportControlId, immediateSync);\r\n }\r\n\r\n public static getDefaultIModelViewportControlId(): string | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.defaultIModelViewportControlId : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n public static setDefaultViewId(viewId: string, immediateSync = false) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetDefaultViewId, viewId, immediateSync);\r\n }\r\n\r\n public static getDefaultViewId(): string | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.defaultViewId : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n public static setDefaultViewState(viewState: ViewState, immediateSync = false) {\r\n UiFramework.dispatchActionToStore(SessionStateActionId.SetDefaultViewState, viewState, immediateSync);\r\n }\r\n public static getDefaultViewState(): ViewState | undefined {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.sessionState.defaultViewState : /* istanbul ignore next */ undefined;\r\n }\r\n\r\n /** @public */\r\n public static getAvailableSelectionScopes(): PresentationSelectionScope[] {\r\n return UiFramework.frameworkState ?\r\n UiFramework.frameworkState.sessionState.availableSelectionScopes :\r\n /* istanbul ignore next */\r\n [{ id: \"element\", label: \"Element\" } as PresentationSelectionScope];\r\n }\r\n\r\n public static getIsUiVisible() {\r\n return UiShowHideManager.isUiVisible;\r\n }\r\n\r\n public static setIsUiVisible(visible: boolean) {\r\n if (UiShowHideManager.isUiVisible !== visible) {\r\n UiShowHideManager.isUiVisible = visible;\r\n UiFramework.onUiVisibilityChanged.emit({ visible });\r\n }\r\n }\r\n\r\n public static setColorTheme(theme: string) {\r\n if (UiFramework.getColorTheme() === theme)\r\n return;\r\n\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetTheme, theme, true);\r\n }\r\n\r\n public static getColorTheme(): string {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.configurableUiState.theme : /* istanbul ignore next */ SYSTEM_PREFERRED_COLOR_THEME;\r\n }\r\n\r\n public static setWidgetOpacity(opacity: number) {\r\n if (UiFramework.getWidgetOpacity() === opacity)\r\n return;\r\n\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetWidgetOpacity, opacity, true);\r\n }\r\n\r\n public static getWidgetOpacity(): number {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.configurableUiState.widgetOpacity : /* istanbul ignore next */ WIDGET_OPACITY_DEFAULT;\r\n }\r\n\r\n public static isMobile() { // eslint-disable-line @itwin/prefer-get\r\n return ProcessDetector.isMobileBrowser;\r\n }\r\n\r\n /** Returns the Ui Version.\r\n * @public\r\n */\r\n public static get uiVersion(): FrameworkVersionId {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.configurableUiState.frameworkVersion : this._uiVersion;\r\n }\r\n\r\n public static setUiVersion(version: FrameworkVersionId) {\r\n if (UiFramework.uiVersion === version)\r\n return;\r\n\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetFrameworkVersion, version === \"1\" ? \"1\" : \"2\", true);\r\n }\r\n\r\n public static get useDragInteraction(): boolean {\r\n return UiFramework.frameworkState ? UiFramework.frameworkState.configurableUiState.useDragInteraction : false;\r\n }\r\n\r\n public static setUseDragInteraction(useDragInteraction: boolean) {\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetDragInteraction, useDragInteraction, true);\r\n }\r\n\r\n /** Send logging message to the telemetry system\r\n * @internal\r\n */\r\n // istanbul ignore next\r\n public static async postTelemetry(eventName: string, eventId?: GuidString, iTwinId?: GuidString, iModeId?: GuidString, changeSetId?: string, time?: TrackingTime, additionalProperties?: { [key: string]: any }): Promise<void> {\r\n if (!IModelApp.authorizationClient)\r\n return;\r\n\r\n try {\r\n const activity: RpcActivity = {\r\n sessionId: IModelApp.sessionId,\r\n activityId: \"\",\r\n applicationId: IModelApp.applicationId,\r\n applicationVersion: IModelApp.applicationVersion,\r\n accessToken: (await IModelApp.authorizationClient.getAccessToken()) ?? \"\",\r\n };\r\n const telemetryEvent = new TelemetryEvent(eventName, eventId, iTwinId, iModeId, changeSetId, time, additionalProperties);\r\n await IModelApp.telemetry.postTelemetry(activity, telemetryEvent);\r\n } catch { }\r\n }\r\n private static _handleFrameworkVersionChangedEvent = (args: FrameworkVersionChangedEventArgs) => {\r\n // Log Ui Version used\r\n Logger.logInfo(UiFramework.loggerCategory(UiFramework), `Ui Version changed to ${args.version} `);\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n UiFramework.postTelemetry(`Ui Version changed to ${args.version} `, \"F2772C81-962D-4755-807C-2D675A5FF399\");\r\n UiFramework.setUiVersion(args.version);\r\n };\r\n\r\n /** Determines whether a ContextMenu is open\r\n * @alpha\r\n * */\r\n public static get isContextMenuOpen(): boolean {\r\n const contextMenu = document.querySelector(\"div.core-context-menu-opened\");\r\n return contextMenu !== null && contextMenu !== undefined;\r\n }\r\n\r\n}\r\n"]}
@@ -332,7 +332,7 @@ class SubjectModelIdsCache {
332
332
  async initSubjectsHierarchy() {
333
333
  this._subjectsHierarchy = new Map();
334
334
  const ecsql = `SELECT ECInstanceId id, Parent.Id parentId FROM bis.Subject WHERE Parent IS NOT NULL`;
335
- const result = this._imodel.query(ecsql, undefined, QueryRowFormat.UseJsPropertyNames);
335
+ const result = this._imodel.query(ecsql, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });
336
336
  for await (const row of result) {
337
337
  let list = this._subjectsHierarchy.get(row.parentId);
338
338
  if (!list) {
@@ -350,7 +350,7 @@ class SubjectModelIdsCache {
350
350
  INNER JOIN bis.GeometricModel3d m ON m.ModeledElement.Id = p.ECInstanceId
351
351
  INNER JOIN bis.Subject s ON (s.ECInstanceId = p.Parent.Id OR json_extract(s.JsonProperties, '$.Subject.Model.TargetPartition') = printf('0x%x', p.ECInstanceId))
352
352
  WHERE NOT m.IsPrivate`;
353
- const result = this._imodel.query(ecsql, undefined, QueryRowFormat.UseJsPropertyNames);
353
+ const result = this._imodel.query(ecsql, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });
354
354
  for await (const row of result) {
355
355
  let list = this._subjectModels.get(row.subjectId);
356
356
  if (!list) {
@@ -449,7 +449,7 @@ async function createGroupedElementsInfo(imodel, rulesetId, groupingNodeKey) {
449
449
  throw new Error("Invalid grouping node key");
450
450
  let modelId, categoryId;
451
451
  const query = `SELECT Model.Id AS modelId, Category.Id AS categoryId FROM bis.GeometricElement3d WHERE ECInstanceId = ? LIMIT 1`;
452
- for await (const modelAndCategoryIds of imodel.query(query, QueryBinder.from([elementId.value]), QueryRowFormat.UseJsPropertyNames)) {
452
+ for await (const modelAndCategoryIds of imodel.query(query, QueryBinder.from([elementId.value]), { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
453
453
  modelId = modelAndCategoryIds.modelId;
454
454
  categoryId = modelAndCategoryIds.categoryId;
455
455
  break;
@@ -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\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}\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 = 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 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\ninterface ModelInfo {\r\n id: Id64String;\r\n isHidden: boolean;\r\n}\r\n\r\nclass SubjectModelIdsCache {\r\n private _imodel: IModelConnection;\r\n private _subjectsHierarchy: Map<Id64String, Id64String[]> | undefined;\r\n private _subjectModels: Map<Id64String, ModelInfo[]> | 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 initSubjectsHierarchy() {\r\n this._subjectsHierarchy = new Map();\r\n const ecsql = `SELECT ECInstanceId id, Parent.Id parentId FROM bis.Subject WHERE Parent IS NOT NULL`;\r\n const result = this._imodel.query(ecsql, undefined, QueryRowFormat.UseJsPropertyNames);\r\n for await (const row of result) {\r\n let list = this._subjectsHierarchy.get(row.parentId);\r\n if (!list) {\r\n list = [];\r\n this._subjectsHierarchy.set(row.parentId, list);\r\n }\r\n list.push(row.id);\r\n }\r\n }\r\n\r\n private async initSubjectModels() {\r\n this._subjectModels = new Map();\r\n const ecsql = `\r\n SELECT p.ECInstanceId id, s.ECInstanceId subjectId, json_extract(p.JsonProperties, '$.PhysicalPartition.Model.Content') content\r\n FROM bis.InformationPartitionElement p\r\n INNER JOIN bis.GeometricModel3d m ON m.ModeledElement.Id = p.ECInstanceId\r\n INNER JOIN bis.Subject s ON (s.ECInstanceId = p.Parent.Id OR json_extract(s.JsonProperties, '$.Subject.Model.TargetPartition') = printf('0x%x', p.ECInstanceId))\r\n WHERE NOT m.IsPrivate`;\r\n const result = this._imodel.query(ecsql, undefined, QueryRowFormat.UseJsPropertyNames);\r\n for await (const row of result) {\r\n let list = this._subjectModels.get(row.subjectId);\r\n if (!list) {\r\n list = [];\r\n this._subjectModels.set(row.subjectId, list);\r\n }\r\n const isHidden = row.content !== undefined;\r\n list.push({ id: row.id, isHidden });\r\n }\r\n }\r\n\r\n private async initCache() {\r\n if (!this._init) {\r\n this._init = Promise.all([this.initSubjectModels(), this.initSubjectsHierarchy()]).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.map((info) => info.id));\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\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\nclass CachingElementIdsContainer {\r\n private _generator;\r\n private _ids;\r\n constructor(generator: AsyncGenerator<Id64String>) {\r\n this._generator = generator;\r\n this._ids = new Array<Id64String>();\r\n }\r\n public async* getElementIds() {\r\n for (const id of this._ids) {\r\n yield id;\r\n }\r\n for await (const id of this._generator) {\r\n this._ids.push(id);\r\n yield id;\r\n }\r\n }\r\n}\r\n\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\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]), 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\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\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}\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 = 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 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\ninterface ModelInfo {\r\n id: Id64String;\r\n isHidden: boolean;\r\n}\r\n\r\nclass SubjectModelIdsCache {\r\n private _imodel: IModelConnection;\r\n private _subjectsHierarchy: Map<Id64String, Id64String[]> | undefined;\r\n private _subjectModels: Map<Id64String, ModelInfo[]> | 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 initSubjectsHierarchy() {\r\n this._subjectsHierarchy = new Map();\r\n const ecsql = `SELECT ECInstanceId id, Parent.Id parentId FROM bis.Subject WHERE Parent IS NOT NULL`;\r\n const result = this._imodel.query(ecsql, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });\r\n for await (const row of result) {\r\n let list = this._subjectsHierarchy.get(row.parentId);\r\n if (!list) {\r\n list = [];\r\n this._subjectsHierarchy.set(row.parentId, list);\r\n }\r\n list.push(row.id);\r\n }\r\n }\r\n\r\n private async initSubjectModels() {\r\n this._subjectModels = new Map();\r\n const ecsql = `\r\n SELECT p.ECInstanceId id, s.ECInstanceId subjectId, json_extract(p.JsonProperties, '$.PhysicalPartition.Model.Content') content\r\n FROM bis.InformationPartitionElement p\r\n INNER JOIN bis.GeometricModel3d m ON m.ModeledElement.Id = p.ECInstanceId\r\n INNER JOIN bis.Subject s ON (s.ECInstanceId = p.Parent.Id OR json_extract(s.JsonProperties, '$.Subject.Model.TargetPartition') = printf('0x%x', p.ECInstanceId))\r\n WHERE NOT m.IsPrivate`;\r\n const result = this._imodel.query(ecsql, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });\r\n for await (const row of result) {\r\n let list = this._subjectModels.get(row.subjectId);\r\n if (!list) {\r\n list = [];\r\n this._subjectModels.set(row.subjectId, list);\r\n }\r\n const isHidden = row.content !== undefined;\r\n list.push({ id: row.id, isHidden });\r\n }\r\n }\r\n\r\n private async initCache() {\r\n if (!this._init) {\r\n this._init = Promise.all([this.initSubjectModels(), this.initSubjectsHierarchy()]).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.map((info) => info.id));\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\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\nclass CachingElementIdsContainer {\r\n private _generator;\r\n private _ids;\r\n constructor(generator: AsyncGenerator<Id64String>) {\r\n this._generator = generator;\r\n this._ids = new Array<Id64String>();\r\n }\r\n public async* getElementIds() {\r\n for (const id of this._ids) {\r\n yield id;\r\n }\r\n for await (const id of this._generator) {\r\n this._ids.push(id);\r\n yield id;\r\n }\r\n }\r\n}\r\n\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\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"]}
@@ -84,7 +84,7 @@ class SubjectModelIdsCache {
84
84
  async initSubjectsHierarchy() {
85
85
  this._subjectsHierarchy = new Map();
86
86
  const ecsql = `SELECT ECInstanceId id, Parent.Id parentId FROM bis.Subject WHERE Parent IS NOT NULL`;
87
- const result = this._imodel.query(ecsql, undefined, 1000);
87
+ const result = this._imodel.query(ecsql, undefined, { limit: { count: 1000 } });
88
88
  for await (const row of result) {
89
89
  let list = this._subjectsHierarchy.get(row.parentId);
90
90
  if (!list) {
@@ -97,7 +97,7 @@ class SubjectModelIdsCache {
97
97
  async initSubjectModels() {
98
98
  this._subjectModels = new Map();
99
99
  const ecsql = `SELECT p.ECInstanceId id, p.Parent.Id subjectId FROM bis.InformationPartitionElement p JOIN bis.Model m ON m.ModeledElement.Id = p.ECInstanceId`;
100
- const result = this._imodel.query(ecsql, undefined, 1000);
100
+ const result = this._imodel.query(ecsql, undefined, { limit: { count: 1000 } });
101
101
  for await (const row of result) {
102
102
  let list = this._subjectModels.get(row.subjectId);
103
103
  if (!list) {