@itwin/appui-react 5.1.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/lib/appui-react/UiFramework.d.ts +2 -2
  3. package/lib/appui-react/UiFramework.d.ts.map +1 -1
  4. package/lib/appui-react/UiFramework.js +4 -2
  5. package/lib/appui-react/UiFramework.js.map +1 -1
  6. package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts +16 -2
  7. package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  8. package/lib/appui-react/configurableui/ConfigurableUiContent.js +41 -23
  9. package/lib/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  10. package/lib/appui-react/cursor/CursorInformation.d.ts +7 -0
  11. package/lib/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  12. package/lib/appui-react/cursor/CursorInformation.js +13 -0
  13. package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
  14. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js +1 -1
  15. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  16. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +3 -0
  17. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  18. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +45 -30
  19. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  20. package/lib/appui-react/cursor/cursorprompt/CursorPrompt.d.ts +12 -15
  21. package/lib/appui-react/cursor/cursorprompt/CursorPrompt.d.ts.map +1 -1
  22. package/lib/appui-react/cursor/cursorprompt/CursorPrompt.js +47 -38
  23. package/lib/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  24. package/lib/appui-react/frontstage/FrontstageConfig.d.ts +6 -0
  25. package/lib/appui-react/frontstage/FrontstageConfig.d.ts.map +1 -1
  26. package/lib/appui-react/frontstage/FrontstageConfig.js.map +1 -1
  27. package/lib/appui-react/frontstage/FrontstageDef.d.ts +2 -0
  28. package/lib/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  29. package/lib/appui-react/frontstage/FrontstageDef.js +4 -0
  30. package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
  31. package/lib/appui-react/layout/StandardLayout.d.ts.map +1 -1
  32. package/lib/appui-react/layout/StandardLayout.js +5 -1
  33. package/lib/appui-react/layout/StandardLayout.js.map +1 -1
  34. package/lib/appui-react/layout/base/NineZone.d.ts +0 -5
  35. package/lib/appui-react/layout/base/NineZone.d.ts.map +1 -1
  36. package/lib/appui-react/layout/base/NineZone.js.map +1 -1
  37. package/lib/appui-react/layout/widget/Dock.d.ts.map +1 -1
  38. package/lib/appui-react/layout/widget/Dock.js +6 -4
  39. package/lib/appui-react/layout/widget/Dock.js.map +1 -1
  40. package/lib/appui-react/layout/widget/PinToggle.d.ts.map +1 -1
  41. package/lib/appui-react/layout/widget/PinToggle.js +7 -5
  42. package/lib/appui-react/layout/widget/PinToggle.js.map +1 -1
  43. package/lib/appui-react/layout/widget/PopoutToggle.d.ts.map +1 -1
  44. package/lib/appui-react/layout/widget/PopoutToggle.js +6 -4
  45. package/lib/appui-react/layout/widget/PopoutToggle.js.map +1 -1
  46. package/lib/appui-react/layout/widget/SendBack.d.ts.map +1 -1
  47. package/lib/appui-react/layout/widget/SendBack.js +6 -6
  48. package/lib/appui-react/layout/widget/SendBack.js.map +1 -1
  49. package/lib/appui-react/layout/widget/TabBar.d.ts.map +1 -1
  50. package/lib/appui-react/layout/widget/TabBar.js +4 -2
  51. package/lib/appui-react/layout/widget/TabBar.js.map +1 -1
  52. package/lib/appui-react/layout/widget/WidgetAction.d.ts +16 -0
  53. package/lib/appui-react/layout/widget/WidgetAction.d.ts.map +1 -0
  54. package/lib/appui-react/{preview/widget-action-dropdown/Button.js → layout/widget/WidgetAction.js} +13 -9
  55. package/lib/appui-react/layout/widget/WidgetAction.js.map +1 -0
  56. package/lib/appui-react/layout/widget/WidgetActions.d.ts +45 -0
  57. package/lib/appui-react/layout/widget/WidgetActions.d.ts.map +1 -0
  58. package/lib/appui-react/layout/widget/{Buttons.js → WidgetActions.js} +35 -29
  59. package/lib/appui-react/layout/widget/WidgetActions.js.map +1 -0
  60. package/lib/appui-react/layout/widget/{Buttons.scss → WidgetActions.scss} +1 -1
  61. package/lib/appui-react/layout/widget-panels/useAnimatePanel.d.ts +1 -1
  62. package/lib/appui-react/preview/control-widget-visibility/CloseWidgetButton.js +2 -2
  63. package/lib/appui-react/preview/control-widget-visibility/CloseWidgetButton.js.map +1 -1
  64. package/lib/appui-react/preview/enable-maximized-widget/MaximizeToggle.js +2 -2
  65. package/lib/appui-react/preview/enable-maximized-widget/MaximizeToggle.js.map +1 -1
  66. package/lib/appui-react/preview/widget-action-dropdown/MoreButton.d.ts +2 -2
  67. package/lib/appui-react/preview/widget-action-dropdown/MoreButton.d.ts.map +1 -1
  68. package/lib/appui-react/preview/widget-action-dropdown/MoreButton.js +4 -4
  69. package/lib/appui-react/preview/widget-action-dropdown/MoreButton.js.map +1 -1
  70. package/lib/appui-react/redux/FrameworkState.d.ts +1 -1
  71. package/lib/appui-react/redux/SessionState.d.ts +2 -2
  72. package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +11 -7
  73. package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  74. package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.js +22 -4
  75. package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  76. package/lib/appui-react/theme/ThemeManager.d.ts +1 -1
  77. package/lib/appui-react/theme/ThemeManager.js +1 -1
  78. package/lib/appui-react/theme/ThemeManager.js.map +1 -1
  79. package/lib/appui-react/toolbar/ToolbarItem.d.ts +4 -0
  80. package/lib/appui-react/toolbar/ToolbarItem.d.ts.map +1 -1
  81. package/lib/appui-react/toolbar/ToolbarItem.js.map +1 -1
  82. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts +1 -1
  83. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts.map +1 -1
  84. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  85. package/lib/appui-react/ui-items-provider/UiItemsManager.d.ts +25 -23
  86. package/lib/appui-react/ui-items-provider/UiItemsManager.d.ts.map +1 -1
  87. package/lib/appui-react/ui-items-provider/UiItemsManager.js +67 -40
  88. package/lib/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  89. package/lib/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  90. package/lib/appui-react/widget-panels/Frontstage.js +2 -5
  91. package/lib/appui-react/widget-panels/Frontstage.js.map +1 -1
  92. package/lib/appui-react/widgets/Widget.d.ts +15 -2
  93. package/lib/appui-react/widgets/Widget.d.ts.map +1 -1
  94. package/lib/appui-react/widgets/Widget.js.map +1 -1
  95. package/lib/appui-react/widgets/useWidget.d.ts +1 -1
  96. package/lib/appui-react.d.ts +3 -1
  97. package/lib/appui-react.d.ts.map +1 -1
  98. package/lib/appui-react.js +3 -1
  99. package/lib/appui-react.js.map +1 -1
  100. package/lib/cjs/appui-react/layout/widget/{Buttons.scss → WidgetActions.scss} +1 -1
  101. package/lib/esm/appui-react/layout/widget/{Buttons.scss → WidgetActions.scss} +1 -1
  102. package/package.json +11 -12
  103. package/lib/appui-react/layout/widget/Buttons.d.ts +0 -12
  104. package/lib/appui-react/layout/widget/Buttons.d.ts.map +0 -1
  105. package/lib/appui-react/layout/widget/Buttons.js.map +0 -1
  106. package/lib/appui-react/preview/widget-action-dropdown/Button.d.ts +0 -17
  107. package/lib/appui-react/preview/widget-action-dropdown/Button.d.ts.map +0 -1
  108. package/lib/appui-react/preview/widget-action-dropdown/Button.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FrontstageDef.js","sourceRoot":"","sources":["../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { BentleyStatus } from \"@itwin/core-bentley\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { Rectangle } from \"@itwin/core-react/internal\";\nimport * as React from \"react\";\nimport { appUi, UiFramework } from \"../UiFramework.js\";\nimport { ChildWindowWidget } from \"../childwindow/ChildWindowWidget.js\";\nimport { TimeTracker } from \"../configurableui/TimeTracker.js\";\nimport type { ContentControl } from \"../content/ContentControl.js\";\nimport type { ContentGroup } from \"../content/ContentGroup.js\";\nimport { ContentGroupProvider } from \"../content/ContentGroup.js\";\nimport type { ContentLayoutDef } from \"../content/ContentLayout.js\";\nimport { InternalContentDialogManager } from \"../dialog/InternalContentDialogManager.js\";\nimport type { ChildWindowLocationProps } from \"../framework/FrameworkChildWindows.js\";\nimport type { NineZoneDispatch } from \"../layout/base/NineZone.js\";\nimport type { NineZoneState } from \"../layout/state/NineZoneState.js\";\nimport { NineZoneStateReducer } from \"../layout/state/NineZoneStateReducer.js\";\nimport {\n getTabLocation,\n isFloatingTabLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n} from \"../layout/state/TabLocation.js\";\nimport {\n getWidgetLocation,\n isFloatingWidgetLocation,\n isPopoutWidgetLocation,\n} from \"../layout/state/WidgetLocation.js\";\nimport type { PanelSide } from \"../layout/widget-panels/PanelTypes.js\";\nimport { panelSides } from \"../layout/widget-panels/Panel.js\";\nimport type { StagePanelConfig } from \"../stagepanels/StagePanelConfig.js\";\nimport { StagePanelDef } from \"../stagepanels/StagePanelDef.js\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation.js\";\nimport { StagePanelState } from \"../stagepanels/StagePanelState.js\";\nimport type { WidgetConfig } from \"../widgets/WidgetConfig.js\";\nimport type { WidgetControl } from \"../widgets/WidgetControl.js\";\nimport { getWidgetState, WidgetDef, WidgetType } from \"../widgets/WidgetDef.js\";\nimport { WidgetState } from \"../widgets/WidgetState.js\";\nimport type { FrontstageProvider } from \"./FrontstageProvider.js\";\nimport { InternalFrontstageManager } from \"./InternalFrontstageManager.js\";\nimport { StageUsage } from \"./StageUsage.js\";\nimport type { Frontstage } from \"./Frontstage.js\";\nimport { UiItemsProvider } from \"../ui-items-provider/UiItemsProvider.js\";\nimport { FrameworkContent } from \"../framework/FrameworkContent.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\nimport type { RectangleProps } from \"../utils/RectangleProps.js\";\nimport {\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName,\n} from \"../widget-panels/Frontstage.js\";\n\n/** FrontstageDef class provides an API for a Frontstage.\n * @public\n */\nexport class FrontstageDef {\n private _id: string = \"\";\n private _initialConfig?: Frontstage;\n private _isStageClosing = false;\n private _isReady = false;\n private _isApplicationClosing = false;\n private _usage?: string;\n private _version: number = 0;\n private _toolSettings?: WidgetDef;\n private _activeToolEmptyNode?: React.ReactNode;\n private _statusBar?: WidgetDef;\n private _contentManipulation?: WidgetDef;\n private _viewNavigation?: WidgetDef;\n private _topPanel?: StagePanelDef;\n private _leftPanel?: StagePanelDef;\n private _rightPanel?: StagePanelDef;\n private _bottomPanel?: StagePanelDef;\n private _contentLayoutDef?: ContentLayoutDef;\n private _contentGroup?: ContentGroup;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _frontstageProvider?: FrontstageProvider;\n private _timeTracker = new TimeTracker();\n private _nineZoneState?: NineZoneState;\n private _contentGroupProvider?: ContentGroupProvider;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _floatingContentControls?: ContentControl[];\n private _toolAdminDefaultToolId?: string;\n private _dispatch?: NineZoneDispatch;\n private _batching = false;\n\n public get id(): string {\n return this._id;\n }\n public get usage(): string {\n return this._usage !== undefined ? this._usage : StageUsage.General;\n }\n public get version(): number {\n return this._version;\n }\n public get contentGroupProvider(): ContentGroupProvider | undefined {\n return this._contentGroupProvider;\n }\n /** @deprecated in 4.17.0. Returns instances of a deprecated {@link ContentControl} type. */\n public get floatingContentControls() {\n return this._floatingContentControls;\n }\n\n public get toolSettings(): WidgetDef | undefined {\n return this._toolSettings;\n }\n /** @internal */\n public get activeToolEmptyNode(): React.ReactNode | undefined {\n return this._activeToolEmptyNode;\n }\n public get statusBar(): WidgetDef | undefined {\n return this._statusBar;\n }\n public get contentManipulation(): WidgetDef | undefined {\n return this._contentManipulation;\n }\n public get viewNavigation(): WidgetDef | undefined {\n return this._viewNavigation;\n }\n\n public get topPanel(): StagePanelDef | undefined {\n return this._topPanel;\n }\n public get leftPanel(): StagePanelDef | undefined {\n return this._leftPanel;\n }\n public get rightPanel(): StagePanelDef | undefined {\n return this._rightPanel;\n }\n public get bottomPanel(): StagePanelDef | undefined {\n return this._bottomPanel;\n }\n\n public get contentLayoutDef(): ContentLayoutDef | undefined {\n return this._contentLayoutDef;\n }\n public get contentGroup(): ContentGroup | undefined {\n return this._contentGroup;\n }\n\n private toStagePanelLocation(side: PanelSide): StagePanelLocation {\n switch (side) {\n case \"bottom\":\n return StagePanelLocation.Bottom;\n case \"left\":\n return StagePanelLocation.Left;\n case \"right\":\n return StagePanelLocation.Right;\n case \"top\":\n return StagePanelLocation.Top;\n }\n }\n\n private populateStateMaps(nineZone: NineZoneState) {\n const panelMap = new Map<StagePanelDef, StagePanelState>();\n const widgetMap = new Map<WidgetDef, WidgetState>();\n\n for (const panelSide of panelSides) {\n const panel = nineZone.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n const panelState = panel.collapsed\n ? StagePanelState.Minimized\n : StagePanelState.Open;\n panelMap.set(panelDef, panelState);\n }\n\n for (const widgetDef of this.widgetDefs) {\n const widgetState = getWidgetState(widgetDef.id, nineZone);\n widgetMap.set(widgetDef, widgetState);\n }\n return { panelMap, widgetMap };\n }\n\n private triggerStateChangeEvents(oldState: NineZoneState) {\n const newState = this.nineZoneState;\n if (!newState) return;\n\n if (this._isStageClosing || this._isApplicationClosing) return;\n\n const { panelMap, widgetMap } = this.populateStateMaps(oldState);\n const { panelMap: newPanelMap, widgetMap: newWidgetMap } =\n this.populateStateMaps(newState);\n\n // Now walk and trigger set state events\n newWidgetMap.forEach((newWidgetState, widgetDef) => {\n const originalState = widgetMap.get(widgetDef);\n if (originalState === newWidgetState) return;\n widgetDef.handleWidgetStateChanged(newWidgetState);\n });\n newPanelMap.forEach((newPanelState, panelDef) => {\n const originalState = panelMap.get(panelDef);\n if (originalState === newPanelState) return;\n panelDef.handlePanelStateChanged(newPanelState);\n });\n\n for (const panelSide of panelSides) {\n const panel = newState.panels[panelSide];\n const oldPanel = oldState.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n\n if (panel.size !== oldPanel.size) {\n panelDef.handleSizeChanged(panel.size);\n }\n\n if (panel.pinned !== oldPanel.pinned) {\n panelDef.handlePinnedChanged(panel.pinned);\n }\n }\n }\n\n private handlePopouts(oldState: NineZoneState | undefined) {\n const newState = this.nineZoneState;\n\n const oldPopouts = oldState?.popoutWidgets.allIds || [];\n const newPopouts = newState?.popoutWidgets.allIds || [];\n const popoutsToClose = oldPopouts.filter((p) => !newPopouts.includes(p));\n const popoutsToOpen = newPopouts.filter((p) => !oldPopouts.includes(p));\n\n for (const popoutId of popoutsToClose) {\n UiFramework.childWindows.close(popoutId, true);\n }\n\n for (const popoutId of popoutsToOpen) {\n const result = this.openPopoutWidgetContainer(popoutId, oldState);\n if (!result) return result;\n }\n\n return true;\n }\n\n /** @internal */\n public get nineZoneState(): NineZoneState | undefined {\n return this._nineZoneState;\n }\n public set nineZoneState(state: NineZoneState | undefined) {\n if (this._nineZoneState === state) return;\n\n const oldState = this._nineZoneState;\n this._nineZoneState = state;\n\n if (this._batching) return;\n\n const popoutResult = this.handlePopouts(oldState);\n if (oldState) {\n this.triggerStateChangeEvents(oldState);\n }\n\n const isClosing = this._isStageClosing || this._isApplicationClosing;\n if (isClosing && !this.isReady) return;\n if (popoutResult === false) {\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(\n OutputMessagePriority.Error,\n UiFramework.translate(\"widget.errorMessage.widgetPopoutFail\"),\n undefined,\n OutputMessageType.Toast\n )\n );\n return;\n }\n InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.emit({\n frontstageDef: this,\n state,\n });\n }\n\n /** @internal */\n public get dispatch(): NineZoneDispatch {\n return (this._dispatch ??= (action) => {\n const state = this.nineZoneState;\n if (!state) return;\n this.nineZoneState = NineZoneStateReducer(state, action);\n });\n }\n public set dispatch(dispatch: NineZoneDispatch) {\n this._dispatch = dispatch;\n }\n\n /** Dispatch multiple actions inside `fn`, but trigger events once.\n * @internal\n */\n public batch(fn: () => void): void {\n const initialState = this._nineZoneState;\n\n this._batching = true;\n fn();\n this._batching = false;\n\n const updatedState = this._nineZoneState;\n this._nineZoneState = initialState;\n this.nineZoneState = updatedState;\n }\n\n /** @internal */\n public get timeTracker(): TimeTracker {\n return this._timeTracker;\n }\n\n /** Creates a [[FrontstageDef]] and initializes it. */\n public static async create(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n providerOrFrontstage: FrontstageProvider | Frontstage\n ) {\n const def = new FrontstageDef();\n\n let config;\n if (\"frontstageConfig\" in providerOrFrontstage) {\n def._frontstageProvider = providerOrFrontstage;\n config = providerOrFrontstage.frontstageConfig();\n } else {\n config = providerOrFrontstage;\n }\n\n await def.initializeFromConfig(config);\n return def;\n }\n\n /** Handles when the Frontstage becomes activated */\n protected async _onActivated() {}\n\n /** Handles when the Frontstage becomes activated */\n public async onActivated() {\n this.updateWidgetDefs();\n\n const provider = this._contentGroupProvider;\n if (provider && this._initialConfig) {\n this._contentGroup = await provider.contentGroup(this._initialConfig);\n }\n\n if (!this._contentGroup)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n UiFramework.loggerCategory(\"FrontstageDef\"),\n `onActivated: Content Group not defined`\n );\n\n this._contentLayoutDef = UiFramework.content.layouts.getForGroup(\n this._contentGroup\n );\n UiFramework.frontstages.onContentLayoutActivatedEvent.emit({\n contentLayout: this._contentLayoutDef,\n contentGroup: this._contentGroup,\n });\n\n this._timeTracker.startTiming();\n await this._onActivated();\n }\n\n /** Handles when the Frontstage becomes inactive */\n protected async _onDeactivated() {}\n\n /** Handles when the Frontstage becomes inactive */\n public async onDeactivated() {\n for (const control of this._widgetControls) {\n control.onFrontstageDeactivated();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n for (const control of this.contentControls) {\n control.onFrontstageDeactivated();\n }\n\n if (this.contentGroup) this.contentGroup.onFrontstageDeactivated();\n if (this.contentGroupProvider)\n await this.contentGroupProvider.onFrontstageDeactivated();\n\n this._timeTracker.stopTiming();\n\n this._isStageClosing = true; // this keeps widgets in child windows from automatically re-docking\n UiFramework.childWindows.closeAll();\n\n if (this._floatingContentControls) {\n InternalContentDialogManager.closeAll();\n this._floatingContentControls = undefined;\n }\n\n if (this._toolAdminDefaultToolId) {\n IModelApp.toolAdmin.defaultToolId = this._toolAdminDefaultToolId;\n this._toolAdminDefaultToolId = undefined;\n }\n\n await this._onDeactivated();\n this._isStageClosing = false;\n }\n\n /** @internal */\n public setIsApplicationClosing(value: boolean) {\n this._isApplicationClosing = value;\n }\n\n /** Returns once the contained widgets and content controls are ready to use */\n public async waitUntilReady(): Promise<void> {\n this._isReady = false;\n // create an array of control-ready promises\n const controlReadyPromises = new Array<Promise<void>>();\n this._widgetControls.forEach((control) => {\n controlReadyPromises.push(control.isReady);\n });\n\n if (this.contentLayoutDef) {\n const usedContentIndexes = this.contentLayoutDef.getUsedContentIndexes();\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.contentControls.forEach((control, index) => {\n if (usedContentIndexes.includes(index))\n controlReadyPromises.push(control.isReady);\n });\n }\n\n await Promise.all(controlReadyPromises);\n // Frontstage ready\n this._isReady = true;\n }\n\n /** Handles when the Frontstage becomes active */\n protected _onFrontstageReady(): void {}\n\n /** Handles when the Frontstage becomes active */\n public onFrontstageReady(): void {\n for (const control of this._widgetControls) {\n control.onFrontstageReady();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n for (const control of this.contentControls) {\n control.onFrontstageReady();\n }\n\n if (this.contentGroup) this.contentGroup.onFrontstageReady();\n\n if (IModelApp.toolAdmin && IModelApp.viewManager && this._initialConfig) {\n const defaultTool = this._initialConfig.defaultTool;\n if (defaultTool) {\n this._toolAdminDefaultToolId = IModelApp.toolAdmin.defaultToolId;\n IModelApp.toolAdmin.defaultToolId = defaultTool;\n void IModelApp.tools.run(defaultTool);\n } else {\n void IModelApp.toolAdmin.startDefaultTool();\n }\n }\n\n this._onFrontstageReady();\n }\n\n /** Sets the Content Layout and Content Group */\n public setContentLayoutAndGroup(\n contentLayoutDef: ContentLayoutDef,\n contentGroup: ContentGroup\n ): void {\n this._contentLayoutDef = contentLayoutDef;\n this._contentGroup = contentGroup;\n }\n\n /** Sets the active view content to the default or first. */\n public async setActiveContent(): Promise<boolean> {\n const content = this.contentGroup?.contentPropsList?.[0];\n if (!content) return false;\n\n let contentReactNode = content.content;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n let control: ContentControl | undefined;\n if (!contentReactNode) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n control = this.contentGroup.getContentControl(content, 0);\n contentReactNode = control?.reactNode;\n }\n\n if (!contentReactNode) return false;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.content.setActive(contentReactNode, true);\n if (!control?.viewport) return true;\n\n const status = await IModelApp.viewManager.setSelectedView(\n control.viewport\n );\n return status === BentleyStatus.SUCCESS;\n }\n\n /** Gets a [[StagePanelDef]] based on a given panel location\n * @beta\n */\n public getStagePanelDef(\n location: StagePanelLocation\n ): StagePanelDef | undefined {\n let panelDef: StagePanelDef | undefined;\n\n switch (location) {\n case StagePanelLocation.Top:\n panelDef = this.topPanel;\n break;\n case StagePanelLocation.Left:\n panelDef = this.leftPanel;\n break;\n case StagePanelLocation.Right:\n panelDef = this.rightPanel;\n break;\n case StagePanelLocation.Bottom:\n panelDef = this.bottomPanel;\n break;\n }\n\n // Panels can be undefined in a Frontstage\n return panelDef;\n }\n\n /** Gets a list of [[StagePanelDef]]s\n * @beta\n */\n public get panelDefs(): StagePanelDef[] {\n const locations = [\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n StagePanelLocation.Top,\n StagePanelLocation.Bottom,\n ];\n const panels: StagePanelDef[] = [];\n\n locations.forEach((location: StagePanelLocation) => {\n const panel = this.getStagePanelDef(location);\n if (panel) panels.push(panel);\n });\n\n return panels;\n }\n\n /** Finds a [[WidgetDef]] based on a given id */\n public findWidgetDef(id: string): WidgetDef | undefined {\n for (const widgetDef of this.widgetDefs) {\n if (widgetDef.id === id) return widgetDef;\n }\n return undefined;\n }\n\n /** Gets the list of [[WidgetControl]]s */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private get _widgetControls(): WidgetControl[] {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const widgetControls = new Array<WidgetControl>();\n\n this.panelDefs.forEach((panelDef) => {\n panelDef.widgetDefs.forEach((widgetDef) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const widgetControl = widgetDef.widgetControl;\n if (widgetControl) widgetControls.push(widgetControl);\n });\n });\n\n return widgetControls;\n }\n\n /** Initializes a FrontstageDef from frontstage.\n * @internal\n */\n public async initializeFromConfig(config: Frontstage): Promise<void> {\n this._id = config.id;\n this._initialConfig = config;\n\n if (config.contentGroup instanceof ContentGroupProvider) {\n this._contentGroupProvider = config.contentGroup;\n } else {\n this._contentGroup = config.contentGroup;\n }\n\n this._usage = config.usage;\n this._version = config.version;\n\n this._toolSettings = createWidgetDef(\n config.toolSettings,\n WidgetType.ToolSettings\n );\n this._activeToolEmptyNode = config.toolSettings?.activeToolEmptyNode;\n this._statusBar = createWidgetDef(config.statusBar, WidgetType.StatusBar);\n this._contentManipulation = createWidgetDef(\n config.contentManipulation,\n WidgetType.Tool\n );\n this._viewNavigation = createWidgetDef(\n config.viewNavigation,\n WidgetType.Navigation\n );\n this._topPanel = createStagePanelDef(config, StagePanelLocation.Top);\n this._leftPanel = createStagePanelDef(config, StagePanelLocation.Left);\n this._rightPanel = createStagePanelDef(config, StagePanelLocation.Right);\n this._bottomPanel = createStagePanelDef(config, StagePanelLocation.Bottom);\n }\n\n /** @internal */\n public updateWidgetDefs(): void {\n // Tracks provided widgets to prevent duplicates.\n const allStageWidgetDefs: WidgetDef[] = [];\n\n // Process panels before zones so extension can explicitly target a widget for a StagePanelSection\n this.panelDefs.forEach((stagePanelDef: StagePanelDef) => {\n stagePanelDef.updateDynamicWidgetDefs(\n this.id,\n this.usage,\n stagePanelDef.location,\n undefined,\n allStageWidgetDefs\n );\n });\n\n InternalFrontstageManager.onFrontstageWidgetsChangedEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** Restores frontstage layout to initial configuration.\n * @beta\n */\n public restoreLayout() {\n for (const panelDef of this.panelDefs) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n panelDef.size = panelDef.initialConfig?.size;\n panelDef.sizeSpec = panelDef.initialConfig?.sizeSpec;\n panelDef.panelState = panelDef.defaultState;\n panelDef.pinned = panelDef.initialConfig?.pinned ?? true;\n }\n for (const widgetDef of this.widgetDefs) {\n widgetDef.setWidgetState(widgetDef.defaultState);\n }\n\n const storage = UiFramework.getUiStateStorage();\n void storage.deleteSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(this.id)\n );\n this.nineZoneState = undefined;\n\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.emit({\n frontstageDef: this,\n });\n }\n\n public isPopoutWidget(widgetId: string) {\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location) return isPopoutTabLocation(location);\n }\n\n return false;\n }\n\n public isFloatingWidget(widgetId: string) {\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location) return isFloatingTabLocation(location);\n }\n\n return false;\n }\n\n /** Create a new floating panel that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:400, width:400} is used.\n * @beta\n */\n public floatWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n /** Check widget and panel state to determine whether the widget is currently displayed\n * @param widgetId case-sensitive Widget Id\n * @public\n */\n public isWidgetDisplayed(widgetId: string): boolean {\n if (!this.nineZoneState) return false;\n\n const tabLocation = getTabLocation(this.nineZoneState, widgetId);\n if (!tabLocation) return false;\n\n if (isPanelTabLocation(tabLocation)) {\n const panel = this.nineZoneState.panels[tabLocation.side];\n const widgetDef = this.findWidgetDef(widgetId);\n const isVisible =\n !!widgetDef && widgetDef.state === WidgetState.Open && !panel.collapsed;\n return isVisible;\n }\n\n return true;\n }\n\n /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.\n * @internal\n */\n public openPopoutWidgetContainer(\n widgetContainerId: string,\n oldState: NineZoneState | undefined\n ): boolean {\n const state = this.nineZoneState;\n if (!state) return false;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return false;\n if (!isPopoutWidgetLocation(location)) return false;\n\n const widget = state.widgets[widgetContainerId];\n // Popout widget should only contain a single tab.\n if (widget.tabs.length !== 1) return false;\n\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return false;\n\n const popoutContent = (\n <ChildWindowWidget\n widgetContainerId={widgetContainerId}\n widgetDef={widgetDef}\n />\n );\n\n const popoutWidget = state.popoutWidgets.byId[location.popoutWidgetId];\n const bounds = Rectangle.create(popoutWidget.bounds);\n const position: ChildWindowLocationProps = {\n width: bounds.getWidth(),\n height: bounds.getHeight(),\n left: bounds.left,\n top: bounds.top,\n };\n\n const childWindow = appUi.windowManager.openWindow({\n childWindowId: widgetContainerId,\n title: widgetDef.label,\n content: popoutContent,\n location: position,\n useDefaultPopoutUrl: UiFramework.useDefaultPopoutUrl,\n tabId,\n });\n\n // Use outer size if available to avoid inner size + browser zoom issues: https://github.com/iTwin/appui/issues/563\n const savedTab = state.savedTabs.byId[tabId];\n if (childWindow && savedTab?.popout?.size) {\n childWindow.resizeTo(\n savedTab.popout.size.width,\n savedTab.popout.size.height\n );\n }\n\n if (!childWindow && oldState) {\n this.nineZoneState = oldState;\n return false;\n }\n\n return true;\n }\n\n /** Create a new popout/child window that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:800, width:600} is used.\n * @beta\n */\n public popoutWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_POPOUT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n public get isStageClosing() {\n return this._isStageClosing;\n }\n\n public get isApplicationClosing() {\n return this._isApplicationClosing;\n }\n\n public get isReady() {\n return this._isReady;\n }\n\n /** @internal */\n public saveChildWindowSizeAndPosition(\n childWindowId: string,\n childWindow: Window\n ) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, childWindowId);\n if (!location || !isPopoutWidgetLocation(location)) return;\n\n const widget = state.widgets[location.popoutWidgetId];\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_SET_POPOUT_BOUNDS\",\n id: tabId,\n position: {\n x: childWindow.screenLeft,\n y: childWindow.screenTop,\n },\n size: {\n height: childWindow.outerHeight,\n width: childWindow.outerWidth,\n },\n contentSize: {\n height: childWindow.innerHeight,\n width: childWindow.innerWidth,\n },\n });\n }\n\n /** @internal */\n public dockWidgetContainerByContainerId(widgetContainerId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return;\n\n if (isFloatingWidgetLocation(location)) {\n this.dispatch({\n type: \"FLOATING_WIDGET_SEND_BACK\",\n id: location.floatingWidgetId,\n });\n return;\n }\n if (isPopoutWidgetLocation(location)) {\n this.dispatch({\n type: \"POPOUT_WIDGET_SEND_BACK\",\n id: location.popoutWidgetId,\n });\n return;\n }\n }\n\n /** Finds the container with the specified widget and re-docks all widgets\n * back to the panel zone location that was used when the floating container\n * was generated.\n * @param widgetId case sensitive Widget Id.\n * @beta\n */\n public dockWidgetContainer(widgetId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getTabLocation(state, widgetId);\n if (!location) return;\n\n this.dockWidgetContainerByContainerId(location.widgetId);\n }\n\n public setFloatingWidgetContainerBounds(\n floatingWidgetId: string,\n bounds: RectangleProps\n ) {\n if (\n !this.nineZoneState ||\n !(floatingWidgetId in this.nineZoneState.floatingWidgets.byId)\n )\n return false;\n\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_BOUNDS\",\n id: floatingWidgetId,\n bounds,\n });\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_USER_SIZED\",\n id: floatingWidgetId,\n userSized: true,\n });\n return true;\n }\n\n public getFloatingWidgetContainerIds(): string[] {\n if (!this.nineZoneState) return [];\n\n return [...this.nineZoneState.floatingWidgets.allIds];\n }\n\n public getFloatingWidgetContainerIdByWidgetId(\n widgetId: string\n ): string | undefined {\n if (!this.nineZoneState) return undefined;\n\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location && isFloatingTabLocation(location)) {\n return location.floatingWidgetId;\n }\n return undefined;\n }\n\n public getFloatingWidgetContainerBounds(\n floatingWidgetId: string | undefined\n ) {\n if (!floatingWidgetId) return undefined;\n\n if (\n this.nineZoneState &&\n floatingWidgetId in this.nineZoneState.floatingWidgets.byId\n ) {\n const foundWidget = document.querySelector(\n `div.nz-widget-floatingWidget[data-widget-id='${floatingWidgetId}']`\n );\n if (foundWidget) {\n const domRect = foundWidget.getBoundingClientRect();\n return {\n left: domRect.left,\n right: domRect.right,\n top: domRect.top,\n bottom: domRect.bottom,\n };\n }\n return this.nineZoneState.floatingWidgets.byId[floatingWidgetId].bounds;\n }\n return undefined;\n }\n\n private *_widgetDefs(): Iterator<WidgetDef> {\n for (const panelDef of this.panelDefs) {\n for (const widgetDef of panelDef.widgetDefs) {\n yield widgetDef;\n }\n }\n if (this.toolSettings) yield this.toolSettings;\n if (this.statusBar) yield this.statusBar;\n return undefined;\n }\n\n /** Iterable of all widget definitions in a frontstage.\n * @internal\n */\n public get widgetDefs() {\n const defs = this._widgetDefs();\n return {\n [Symbol.iterator]() {\n return defs;\n },\n };\n }\n\n /* eslint-disable @typescript-eslint/no-deprecated */\n\n /** @deprecated in 4.15.0. Use {@link FrontstageDef.id} to look up a frontstage. */\n public get frontstageProvider(): FrontstageProvider | undefined {\n return this._frontstageProvider;\n }\n\n /** Sets the active view content control.\n * @deprecated in 4.16.0. Uses a deprecated class {@link ContentControl}.\n */\n public setActiveView(\n newContent: ContentControl,\n oldContent?: ContentControl\n ): void {\n if (oldContent) oldContent.onDeactivated();\n newContent.onActivated();\n UiFramework.frontstages.onContentControlActivatedEvent.emit({\n activeContentControl: newContent,\n oldContentControl: oldContent,\n });\n }\n\n /** @deprecated in 4.16.0. Use {@link UiItemsProvider} to provide a floating widget. */\n public addFloatingContentControl(contentControl?: ContentControl) {\n if (!contentControl) return;\n if (!this._floatingContentControls)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._floatingContentControls = new Array<ContentControl>();\n\n this._floatingContentControls.push(contentControl);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n\n /** @deprecated in 4.16.0. Unregister {@link UiItemsProvider} to remove a floating widget. */\n public dropFloatingContentControl(contentControl?: ContentControl) {\n if (!contentControl || !this._floatingContentControls) return;\n\n const index = this._floatingContentControls.indexOf(contentControl);\n if (index > -1) {\n this._floatingContentControls.splice(index, 1);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n }\n\n /** Gets the list of {@link ContentControl}s.\n * @deprecated in 4.16.0. Uses a deprecated class {@link ContentControl}.\n */\n public get contentControls(): ContentControl[] {\n const contentControls = new Array<ContentControl>();\n if (this.contentGroup) {\n contentControls.push(...this.contentGroup.getContentControls());\n }\n if (this._floatingContentControls) {\n contentControls.push(...this._floatingContentControls);\n }\n return contentControls;\n }\n\n /** Sets the active view content control based on the selected viewport.\n * @deprecated in 4.16.0. Use {@link FrameworkContent.setActiveId} instead.\n */\n public setActiveViewFromViewport(viewport: ScreenViewport): boolean {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const contentControl = this.contentControls.find(\n (control) => control.viewport === viewport\n );\n if (contentControl) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.content.setActive(contentControl.reactNode, true);\n return true;\n }\n\n return false;\n }\n\n /* eslint-enable @typescript-eslint/no-deprecated */\n}\n\nfunction createWidgetDef(\n config: WidgetConfig | undefined,\n type: WidgetType\n): WidgetDef | undefined {\n if (!config) return undefined;\n\n const widgetDef = WidgetDef.create(config, type);\n return widgetDef;\n}\n\nfunction createStagePanelDef(\n frontstage: Frontstage,\n location: StagePanelLocation\n): StagePanelDef {\n const config = getStagePanel(location, frontstage);\n\n const panelDef = new StagePanelDef();\n panelDef.initializeFromConfig(config, location);\n return panelDef;\n}\n\nfunction getStagePanel(\n location: StagePanelLocation,\n config: Frontstage\n): StagePanelConfig | undefined {\n switch (location) {\n case StagePanelLocation.Top:\n return config.topPanel;\n case StagePanelLocation.Left:\n return config.leftPanel;\n case StagePanelLocation.Right:\n return config.rightPanel;\n case StagePanelLocation.Bottom:\n return config.bottomPanel;\n }\n}\n\n/** Hook that returns active frontstage id.\n * @public\n */\nexport const useActiveFrontstageId = () => {\n const def = useActiveFrontstageDef();\n const id = React.useMemo(() => (def ? def.id : \"\"), [def]);\n return id;\n};\n\n/** Hook to return the active Frontstage def.\n * @public\n */\nexport function useActiveFrontstageDef() {\n const [def, setDef] = React.useState(\n UiFramework.frontstages.activeFrontstageDef\n );\n React.useEffect(() => {\n return UiFramework.frontstages.onFrontstageActivatedEvent.addListener(\n (args) => {\n setDef(args.activatedFrontstageDef);\n }\n );\n }, []);\n return def;\n}\n\n/** Hook that returns the widgetDef for a specific widgetId within the active frontstage.\n * @public\n */\nexport function useSpecificWidgetDef(widgetId: string) {\n const frontstageDef = useActiveFrontstageDef();\n const [widgetDef, setWidgetDef] = React.useState(() =>\n frontstageDef?.findWidgetDef(widgetId)\n );\n React.useEffect(() => {\n setWidgetDef(frontstageDef?.findWidgetDef(widgetId));\n return InternalFrontstageManager.onFrontstageWidgetsChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n setWidgetDef(frontstageDef.findWidgetDef(widgetId));\n }\n );\n }, [frontstageDef, widgetId]);\n return widgetDef;\n}\n"]}
1
+ {"version":3,"file":"FrontstageDef.js","sourceRoot":"","sources":["../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAG/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AAIzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGpE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,MAAM,OAAO,aAAa;IAA1B;QACU,QAAG,GAAW,EAAE,CAAC;QAEjB,oBAAe,GAAG,KAAK,CAAC;QACxB,aAAQ,GAAG,KAAK,CAAC;QACjB,0BAAqB,GAAG,KAAK,CAAC;QAE9B,aAAQ,GAAW,CAAC,CAAC;QAcrB,iBAAY,GAAG,IAAI,WAAW,EAAE,CAAC;QAOjC,cAAS,GAAG,KAAK,CAAC;QA+7B1B,oDAAoD;IACtD,CAAC;IA97BC,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;IACtE,CAAC;IACD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACD,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IACD,4FAA4F;IAC5F,IAAW,uBAAuB;QAChC,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IACD,gBAAgB;IAChB,IAAW,mBAAmB;QAC5B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IACD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAW,mBAAmB;QAC5B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IACD,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IACD,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,gBAAgB;IAChB,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEO,oBAAoB,CAAC,IAAe;QAC1C,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,kBAAkB,CAAC,MAAM,CAAC;YACnC,KAAK,MAAM;gBACT,OAAO,kBAAkB,CAAC,IAAI,CAAC;YACjC,KAAK,OAAO;gBACV,OAAO,kBAAkB,CAAC,KAAK,CAAC;YAClC,KAAK,KAAK;gBACR,OAAO,kBAAkB,CAAC,GAAG,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,QAAuB;QAC/C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkC,CAAC;QAC3D,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;QAEpD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ;gBAAE,SAAS;YACxB,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS;gBAChC,CAAC,CAAC,eAAe,CAAC,SAAS;gBAC3B,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;YACzB,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC3D,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IAEO,wBAAwB,CAAC,QAAuB;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACpC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,qBAAqB;YAAE,OAAO;QAE/D,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,GACtD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEnC,wCAAwC;QACxC,YAAY,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE;YACjD,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,aAAa,KAAK,cAAc;gBAAE,OAAO;YAC7C,SAAS,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,WAAW,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE;YAC9C,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,aAAa,KAAK,aAAa;gBAAE,OAAO;YAC5C,QAAQ,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,QAAmC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpC,MAAM,UAAU,GAAG,QAAQ,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,QAAQ,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC;QACxD,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAExE,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;YACtC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IAChB,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,IAAW,aAAa,CAAC,KAAgC;QACvD,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK;YAAE,OAAO;QAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAE5B,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,qBAAqB,CAAC;QACrE,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QACvC,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YAC3B,SAAS,CAAC,aAAa,CAAC,aAAa,CACnC,IAAI,oBAAoB,CACtB,qBAAqB,CAAC,KAAK,EAC3B,WAAW,CAAC,SAAS,CAAC,sCAAsC,CAAC,EAC7D,SAAS,EACT,iBAAiB,CAAC,KAAK,CACxB,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,yBAAyB,CAAC,qCAAqC,CAAC,IAAI,CAAC;YACnE,aAAa,EAAE,IAAI;YACnB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,IAAW,QAAQ;QACjB,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;YACjC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAW,QAAQ,CAAC,QAA0B;QAC5C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,EAAc;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;QAEzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,EAAE,EAAE,CAAC;QACL,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,gBAAgB;IAChB,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,sDAAsD;IAC/C,MAAM,CAAC,KAAK,CAAC,MAAM;IACxB,4DAA4D;IAC5D,oBAAqD;QAErD,MAAM,GAAG,GAAG,IAAI,aAAa,EAAE,CAAC;QAEhC,IAAI,MAAM,CAAC;QACX,IAAI,kBAAkB,IAAI,oBAAoB,EAAE,CAAC;YAC/C,GAAG,CAAC,mBAAmB,GAAG,oBAAoB,CAAC;YAC/C,MAAM,GAAG,oBAAoB,CAAC,gBAAgB,EAAE,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,oBAAoB,CAAC;QAChC,CAAC;QAED,MAAM,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,oDAAoD;IAC1C,KAAK,CAAC,YAAY,KAAI,CAAC;IAEjC,oDAAoD;IAC7C,KAAK,CAAC,WAAW;QACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC5C,IAAI,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACpC,IAAI,CAAC,aAAa,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,aAAa;YACrB,4DAA4D;YAC5D,MAAM,IAAI,OAAO,CACf,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,EAC3C,wCAAwC,CACzC,CAAC;QAEJ,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAC9D,IAAI,CAAC,aAAa,CACnB,CAAC;QACF,WAAW,CAAC,WAAW,CAAC,6BAA6B,CAAC,IAAI,CAAC;YACzD,aAAa,EAAE,IAAI,CAAC,iBAAiB;YACrC,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,mDAAmD;IACzC,KAAK,CAAC,cAAc,KAAI,CAAC;IAEnC,mDAAmD;IAC5C,KAAK,CAAC,aAAa;QACxB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACpC,CAAC;QAED,4DAA4D;QAC5D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,oBAAoB;YAC3B,MAAM,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,CAAC;QAE5D,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAE/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,oEAAoE;QACjG,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,4BAA4B,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;QAC5C,CAAC;QAED,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC;YACjE,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;QAC3C,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,gBAAgB;IACT,uBAAuB,CAAC,KAAc;QAC3C,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,+EAA+E;IACxE,KAAK,CAAC,cAAc;QACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,4CAA4C;QAC5C,MAAM,oBAAoB,GAAG,IAAI,KAAK,EAAiB,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACvC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;YACzE,4DAA4D;YAC5D,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBAC9C,IAAI,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACpC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACxC,mBAAmB;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,iDAAiD;IACvC,kBAAkB,KAAU,CAAC;IAEvC,iDAAiD;IAC1C,iBAAiB;QACtB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,CAAC;QAED,4DAA4D;QAC5D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;QAE7D,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;YACpD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC;gBACjE,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,WAAW,CAAC;gBAChD,KAAK,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,KAAK,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,gDAAgD;IACzC,wBAAwB,CAC7B,gBAAkC,EAClC,YAA0B;QAE1B,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,4DAA4D;IACrD,KAAK,CAAC,gBAAgB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAE3B,IAAI,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;QACvC,4DAA4D;QAC5D,IAAI,OAAmC,CAAC;QACxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,4DAA4D;YAC5D,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC1D,gBAAgB,GAAG,OAAO,EAAE,SAAS,CAAC;QACxC,CAAC;QAED,IAAI,CAAC,gBAAgB;YAAE,OAAO,KAAK,CAAC;QAEpC,4DAA4D;QAC5D,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,QAAQ;YAAE,OAAO,IAAI,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,eAAe,CACxD,OAAO,CAAC,QAAQ,CACjB,CAAC;QACF,OAAO,MAAM,KAAK,aAAa,CAAC,OAAO,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,gBAAgB,CACrB,QAA4B;QAE5B,IAAI,QAAmC,CAAC;QAExC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,kBAAkB,CAAC,GAAG;gBACzB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACzB,MAAM;YACR,KAAK,kBAAkB,CAAC,IAAI;gBAC1B,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC1B,MAAM;YACR,KAAK,kBAAkB,CAAC,KAAK;gBAC3B,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC3B,MAAM;YACR,KAAK,kBAAkB,CAAC,MAAM;gBAC5B,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC5B,MAAM;QACV,CAAC;QAED,0CAA0C;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAClB,MAAM,SAAS,GAAG;YAChB,kBAAkB,CAAC,IAAI;YACvB,kBAAkB,CAAC,KAAK;YACxB,kBAAkB,CAAC,GAAG;YACtB,kBAAkB,CAAC,MAAM;SAC1B,CAAC;QACF,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,SAAS,CAAC,OAAO,CAAC,CAAC,QAA4B,EAAE,EAAE;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gDAAgD;IACzC,aAAa,CAAC,EAAU;QAC7B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE;gBAAE,OAAO,SAAS,CAAC;QAC5C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,0CAA0C;IAC1C,4DAA4D;IAC5D,IAAY,eAAe;QACzB,4DAA4D;QAC5D,MAAM,cAAc,GAAG,IAAI,KAAK,EAAiB,CAAC;QAElD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAClC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBACxC,4DAA4D;gBAC5D,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;gBAC9C,IAAI,aAAa;oBAAE,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,oBAAoB,CAAC,MAAkB;QAClD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAE7B,IAAI,MAAM,CAAC,YAAY,YAAY,oBAAoB,EAAE,CAAC;YACxD,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,YAAY,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,aAAa,GAAG,eAAe,CAClC,MAAM,CAAC,YAAY,EACnB,UAAU,CAAC,YAAY,CACxB,CAAC;QACF,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;QACrE,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1E,IAAI,CAAC,oBAAoB,GAAG,eAAe,CACzC,MAAM,CAAC,mBAAmB,EAC1B,UAAU,CAAC,IAAI,CAChB,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,eAAe,CACpC,MAAM,CAAC,cAAc,EACrB,UAAU,CAAC,UAAU,CACtB,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;IAED,gBAAgB;IACT,gBAAgB;QACrB,iDAAiD;QACjD,MAAM,kBAAkB,GAAgB,EAAE,CAAC;QAE3C,kGAAkG;QAClG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,aAA4B,EAAE,EAAE;YACtD,aAAa,CAAC,uBAAuB,CACnC,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,KAAK,EACV,aAAa,CAAC,QAAQ,EACtB,SAAS,EACT,kBAAkB,CACnB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,yBAAyB,CAAC,+BAA+B,CAAC,IAAI,CAAC;YAC7D,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,4DAA4D;YAC5D,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;YAC7C,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC;YACrD,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;YAC5C,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,IAAI,CAAC;QAC3D,CAAC;QACD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,iBAAiB,EAAE,CAAC;QAChD,KAAK,OAAO,CAAC,aAAa,CACxB,6BAA6B,EAC7B,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC,CACvC,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAE/B,yBAAyB,CAAC,8BAA8B,CAAC,IAAI,CAAC;YAC5D,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IAEM,cAAc,CAAC,QAAgB;QACpC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC9D,IAAI,QAAQ;gBAAE,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,gBAAgB,CAAC,QAAgB;QACtC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC9D,IAAI,QAAQ;gBAAE,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACI,WAAW,CAAC,QAAgB,EAAE,QAAgB,EAAE,IAAgB;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,kBAAkB;YACxB,EAAE,EAAE,QAAQ;YACZ,QAAQ;YACR,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,QAAgB;QACvC,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC;QAEtC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAE/B,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,SAAS,GACb,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAC1E,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,yBAAyB,CAC9B,iBAAyB,EACzB,QAAmC;QAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAEzB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAEpD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAChD,kDAAkD;QAClD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAE3C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAE7B,MAAM,aAAa,GAAG,CACpB,oBAAC,iBAAiB,IAChB,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;QAEF,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,QAAQ,GAA6B;YACzC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;YACxB,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;YAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC;QAEF,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;YACjD,aAAa,EAAE,iBAAiB;YAChC,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,OAAO,EAAE,aAAa;YACtB,QAAQ,EAAE,QAAQ;YAClB,mBAAmB,EAAE,WAAW,CAAC,mBAAmB;YACpD,KAAK;SACN,CAAC,CAAC;QAEH,mHAAmH;QACnH,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,WAAW,IAAI,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC1C,WAAW,CAAC,QAAQ,CAClB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAC1B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAC5B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACI,YAAY,CAAC,QAAgB,EAAE,QAAgB,EAAE,IAAgB;QACtE,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,mBAAmB;YACzB,EAAE,EAAE,QAAQ;YACZ,QAAQ;YACR,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,gBAAgB;IACT,8BAA8B,CACnC,aAAqB,EACrB,WAAmB;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;YAAE,OAAO;QAE3D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,8BAA8B;YACpC,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE;gBACR,CAAC,EAAE,WAAW,CAAC,UAAU;gBACzB,CAAC,EAAE,WAAW,CAAC,SAAS;aACzB;YACD,IAAI,EAAE;gBACJ,MAAM,EAAE,WAAW,CAAC,WAAW;gBAC/B,KAAK,EAAE,WAAW,CAAC,UAAU;aAC9B;YACD,WAAW,EAAE;gBACX,MAAM,EAAE,WAAW,CAAC,WAAW;gBAC/B,KAAK,EAAE,WAAW,CAAC,UAAU;aAC9B;SACF,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IACT,gCAAgC,CAAC,iBAAyB;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,2BAA2B;gBACjC,EAAE,EAAE,QAAQ,CAAC,gBAAgB;aAC9B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,yBAAyB;gBAC/B,EAAE,EAAE,QAAQ,CAAC,cAAc;aAC5B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,mBAAmB,CAAC,QAAgB;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAEM,gCAAgC,CACrC,gBAAwB,EACxB,MAAsB;QAEtB,IACE,CAAC,IAAI,CAAC,aAAa;YACnB,CAAC,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;YAE9D,OAAO,KAAK,CAAC;QAEf,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,4BAA4B;YAClC,EAAE,EAAE,gBAAgB;YACpB,MAAM;SACP,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,gCAAgC;YACtC,EAAE,EAAE,gBAAgB;YACpB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,6BAA6B;QAClC,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,EAAE,CAAC;QAEnC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAEM,sCAAsC,CAC3C,QAAgB;QAEhB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,SAAS,CAAC;QAE1C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC9D,IAAI,QAAQ,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,OAAO,QAAQ,CAAC,gBAAgB,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,gCAAgC,CACrC,gBAAoC;QAEpC,IAAI,CAAC,gBAAgB;YAAE,OAAO,SAAS,CAAC;QAExC,IACE,IAAI,CAAC,aAAa;YAClB,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,EAC3D,CAAC;YACD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CACxC,gDAAgD,gBAAgB,IAAI,CACrE,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;gBACpD,OAAO;oBACL,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC;QAC1E,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,CAAC,WAAW;QAClB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC5C,MAAM,SAAS,CAAC;YAClB,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,CAAC,YAAY,CAAC;QAC/C,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,CAAC,SAAS,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO;YACL,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACf,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC;IACJ,CAAC;IAED,qDAAqD;IAErD,mFAAmF;IACnF,IAAW,kBAAkB;QAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,aAAa,CAClB,UAA0B,EAC1B,UAA2B;QAE3B,IAAI,UAAU;YAAE,UAAU,CAAC,aAAa,EAAE,CAAC;QAC3C,UAAU,CAAC,WAAW,EAAE,CAAC;QACzB,WAAW,CAAC,WAAW,CAAC,8BAA8B,CAAC,IAAI,CAAC;YAC1D,oBAAoB,EAAE,UAAU;YAChC,iBAAiB,EAAE,UAAU;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,uFAAuF;IAChF,yBAAyB,CAAC,cAA+B;QAC9D,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,IAAI,CAAC,IAAI,CAAC,wBAAwB;YAChC,4DAA4D;YAC5D,IAAI,CAAC,wBAAwB,GAAG,IAAI,KAAK,EAAkB,CAAC;QAE9D,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnD,WAAW,CAAC,OAAO,CAAC,8BAA8B,CAAC,IAAI,CAAC;YACtD,SAAS,EAAE,cAAc,CAAC,QAAQ;SACnC,CAAC,CAAC;IACL,CAAC;IAED,6FAA6F;IACtF,0BAA0B,CAAC,cAA+B;QAC/D,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,wBAAwB;YAAE,OAAO;QAE9D,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACpE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC/C,WAAW,CAAC,OAAO,CAAC,8BAA8B,CAAC,IAAI,CAAC;gBACtD,SAAS,EAAE,cAAc,CAAC,QAAQ;aACnC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACxB,MAAM,eAAe,GAAG,IAAI,KAAK,EAAkB,CAAC;QACpD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,yBAAyB,CAAC,QAAwB;QACvD,4DAA4D;QAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAC3C,CAAC;QACF,IAAI,cAAc,EAAE,CAAC;YACnB,4DAA4D;YAC5D,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CAGF;AAED,SAAS,eAAe,CACtB,MAAgC,EAChC,IAAgB;IAEhB,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAsB,EACtB,QAA4B;IAE5B,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IACrC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CACpB,QAA4B,EAC5B,MAAkB;IAElB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,kBAAkB,CAAC,GAAG;YACzB,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,KAAK,kBAAkB,CAAC,IAAI;YAC1B,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,KAAK,kBAAkB,CAAC,KAAK;YAC3B,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B,KAAK,kBAAkB,CAAC,MAAM;YAC5B,OAAO,MAAM,CAAC,WAAW,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAC;IACrC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAClC,WAAW,CAAC,WAAW,CAAC,mBAAmB,CAC5C,CAAC;IACF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,OAAO,WAAW,CAAC,WAAW,CAAC,0BAA0B,CAAC,WAAW,CACnE,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC,CACF,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,aAAa,GAAG,sBAAsB,EAAE,CAAC;IAC/C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CACpD,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,CACvC,CAAC;IACF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrD,OAAO,yBAAyB,CAAC,+BAA+B,CAAC,WAAW,CAC1E,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa;gBAAE,OAAO;YACjD,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtD,CAAC,CACF,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9B,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { BentleyStatus } from \"@itwin/core-bentley\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { Rectangle } from \"@itwin/core-react/internal\";\nimport * as React from \"react\";\nimport { appUi, UiFramework } from \"../UiFramework.js\";\nimport { ChildWindowWidget } from \"../childwindow/ChildWindowWidget.js\";\nimport { TimeTracker } from \"../configurableui/TimeTracker.js\";\nimport type { ContentControl } from \"../content/ContentControl.js\";\nimport type { ContentGroup } from \"../content/ContentGroup.js\";\nimport { ContentGroupProvider } from \"../content/ContentGroup.js\";\nimport type { ContentLayoutDef } from \"../content/ContentLayout.js\";\nimport { InternalContentDialogManager } from \"../dialog/InternalContentDialogManager.js\";\nimport type { ChildWindowLocationProps } from \"../framework/FrameworkChildWindows.js\";\nimport type { NineZoneDispatch } from \"../layout/base/NineZone.js\";\nimport type { NineZoneState } from \"../layout/state/NineZoneState.js\";\nimport { NineZoneStateReducer } from \"../layout/state/NineZoneStateReducer.js\";\nimport {\n getTabLocation,\n isFloatingTabLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n} from \"../layout/state/TabLocation.js\";\nimport {\n getWidgetLocation,\n isFloatingWidgetLocation,\n isPopoutWidgetLocation,\n} from \"../layout/state/WidgetLocation.js\";\nimport type { PanelSide } from \"../layout/widget-panels/PanelTypes.js\";\nimport { panelSides } from \"../layout/widget-panels/Panel.js\";\nimport type { StagePanelConfig } from \"../stagepanels/StagePanelConfig.js\";\nimport { StagePanelDef } from \"../stagepanels/StagePanelDef.js\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation.js\";\nimport { StagePanelState } from \"../stagepanels/StagePanelState.js\";\nimport type { WidgetConfig } from \"../widgets/WidgetConfig.js\";\nimport type { WidgetControl } from \"../widgets/WidgetControl.js\";\nimport { getWidgetState, WidgetDef, WidgetType } from \"../widgets/WidgetDef.js\";\nimport { WidgetState } from \"../widgets/WidgetState.js\";\nimport type { FrontstageProvider } from \"./FrontstageProvider.js\";\nimport { InternalFrontstageManager } from \"./InternalFrontstageManager.js\";\nimport { StageUsage } from \"./StageUsage.js\";\nimport type { Frontstage } from \"./Frontstage.js\";\nimport { UiItemsProvider } from \"../ui-items-provider/UiItemsProvider.js\";\nimport { FrameworkContent } from \"../framework/FrameworkContent.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\nimport type { RectangleProps } from \"../utils/RectangleProps.js\";\nimport {\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName,\n} from \"../widget-panels/Frontstage.js\";\n\n/** FrontstageDef class provides an API for a Frontstage.\n * @public\n */\nexport class FrontstageDef {\n private _id: string = \"\";\n private _initialConfig?: Frontstage;\n private _isStageClosing = false;\n private _isReady = false;\n private _isApplicationClosing = false;\n private _usage?: string;\n private _version: number = 0;\n private _toolSettings?: WidgetDef;\n private _activeToolEmptyNode?: React.ReactNode;\n private _statusBar?: WidgetDef;\n private _contentManipulation?: WidgetDef;\n private _viewNavigation?: WidgetDef;\n private _topPanel?: StagePanelDef;\n private _leftPanel?: StagePanelDef;\n private _rightPanel?: StagePanelDef;\n private _bottomPanel?: StagePanelDef;\n private _contentLayoutDef?: ContentLayoutDef;\n private _contentGroup?: ContentGroup;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _frontstageProvider?: FrontstageProvider;\n private _timeTracker = new TimeTracker();\n private _nineZoneState?: NineZoneState;\n private _contentGroupProvider?: ContentGroupProvider;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _floatingContentControls?: ContentControl[];\n private _toolAdminDefaultToolId?: string;\n private _dispatch?: NineZoneDispatch;\n private _batching = false;\n\n public get id(): string {\n return this._id;\n }\n public get usage(): string {\n return this._usage !== undefined ? this._usage : StageUsage.General;\n }\n public get version(): number {\n return this._version;\n }\n public get contentGroupProvider(): ContentGroupProvider | undefined {\n return this._contentGroupProvider;\n }\n /** @deprecated in 4.17.0. Returns instances of a deprecated {@link ContentControl} type. */\n public get floatingContentControls() {\n return this._floatingContentControls;\n }\n\n public get toolSettings(): WidgetDef | undefined {\n return this._toolSettings;\n }\n /** @internal */\n public get activeToolEmptyNode(): React.ReactNode | undefined {\n return this._activeToolEmptyNode;\n }\n public get statusBar(): WidgetDef | undefined {\n return this._statusBar;\n }\n public get contentManipulation(): WidgetDef | undefined {\n return this._contentManipulation;\n }\n public get viewNavigation(): WidgetDef | undefined {\n return this._viewNavigation;\n }\n\n public get topPanel(): StagePanelDef | undefined {\n return this._topPanel;\n }\n public get leftPanel(): StagePanelDef | undefined {\n return this._leftPanel;\n }\n public get rightPanel(): StagePanelDef | undefined {\n return this._rightPanel;\n }\n public get bottomPanel(): StagePanelDef | undefined {\n return this._bottomPanel;\n }\n\n public get contentLayoutDef(): ContentLayoutDef | undefined {\n return this._contentLayoutDef;\n }\n public get contentGroup(): ContentGroup | undefined {\n return this._contentGroup;\n }\n\n /** @internal */\n public get initialConfig(): Frontstage | undefined {\n return this._initialConfig;\n }\n\n private toStagePanelLocation(side: PanelSide): StagePanelLocation {\n switch (side) {\n case \"bottom\":\n return StagePanelLocation.Bottom;\n case \"left\":\n return StagePanelLocation.Left;\n case \"right\":\n return StagePanelLocation.Right;\n case \"top\":\n return StagePanelLocation.Top;\n }\n }\n\n private populateStateMaps(nineZone: NineZoneState) {\n const panelMap = new Map<StagePanelDef, StagePanelState>();\n const widgetMap = new Map<WidgetDef, WidgetState>();\n\n for (const panelSide of panelSides) {\n const panel = nineZone.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n const panelState = panel.collapsed\n ? StagePanelState.Minimized\n : StagePanelState.Open;\n panelMap.set(panelDef, panelState);\n }\n\n for (const widgetDef of this.widgetDefs) {\n const widgetState = getWidgetState(widgetDef.id, nineZone);\n widgetMap.set(widgetDef, widgetState);\n }\n return { panelMap, widgetMap };\n }\n\n private triggerStateChangeEvents(oldState: NineZoneState) {\n const newState = this.nineZoneState;\n if (!newState) return;\n\n if (this._isStageClosing || this._isApplicationClosing) return;\n\n const { panelMap, widgetMap } = this.populateStateMaps(oldState);\n const { panelMap: newPanelMap, widgetMap: newWidgetMap } =\n this.populateStateMaps(newState);\n\n // Now walk and trigger set state events\n newWidgetMap.forEach((newWidgetState, widgetDef) => {\n const originalState = widgetMap.get(widgetDef);\n if (originalState === newWidgetState) return;\n widgetDef.handleWidgetStateChanged(newWidgetState);\n });\n newPanelMap.forEach((newPanelState, panelDef) => {\n const originalState = panelMap.get(panelDef);\n if (originalState === newPanelState) return;\n panelDef.handlePanelStateChanged(newPanelState);\n });\n\n for (const panelSide of panelSides) {\n const panel = newState.panels[panelSide];\n const oldPanel = oldState.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n\n if (panel.size !== oldPanel.size) {\n panelDef.handleSizeChanged(panel.size);\n }\n\n if (panel.pinned !== oldPanel.pinned) {\n panelDef.handlePinnedChanged(panel.pinned);\n }\n }\n }\n\n private handlePopouts(oldState: NineZoneState | undefined) {\n const newState = this.nineZoneState;\n\n const oldPopouts = oldState?.popoutWidgets.allIds || [];\n const newPopouts = newState?.popoutWidgets.allIds || [];\n const popoutsToClose = oldPopouts.filter((p) => !newPopouts.includes(p));\n const popoutsToOpen = newPopouts.filter((p) => !oldPopouts.includes(p));\n\n for (const popoutId of popoutsToClose) {\n UiFramework.childWindows.close(popoutId, true);\n }\n\n for (const popoutId of popoutsToOpen) {\n const result = this.openPopoutWidgetContainer(popoutId, oldState);\n if (!result) return result;\n }\n\n return true;\n }\n\n /** @internal */\n public get nineZoneState(): NineZoneState | undefined {\n return this._nineZoneState;\n }\n public set nineZoneState(state: NineZoneState | undefined) {\n if (this._nineZoneState === state) return;\n\n const oldState = this._nineZoneState;\n this._nineZoneState = state;\n\n if (this._batching) return;\n\n const popoutResult = this.handlePopouts(oldState);\n if (oldState) {\n this.triggerStateChangeEvents(oldState);\n }\n\n const isClosing = this._isStageClosing || this._isApplicationClosing;\n if (isClosing && !this.isReady) return;\n if (popoutResult === false) {\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(\n OutputMessagePriority.Error,\n UiFramework.translate(\"widget.errorMessage.widgetPopoutFail\"),\n undefined,\n OutputMessageType.Toast\n )\n );\n return;\n }\n InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.emit({\n frontstageDef: this,\n state,\n });\n }\n\n /** @internal */\n public get dispatch(): NineZoneDispatch {\n return (this._dispatch ??= (action) => {\n const state = this.nineZoneState;\n if (!state) return;\n this.nineZoneState = NineZoneStateReducer(state, action);\n });\n }\n public set dispatch(dispatch: NineZoneDispatch) {\n this._dispatch = dispatch;\n }\n\n /** Dispatch multiple actions inside `fn`, but trigger events once.\n * @internal\n */\n public batch(fn: () => void): void {\n const initialState = this._nineZoneState;\n\n this._batching = true;\n fn();\n this._batching = false;\n\n const updatedState = this._nineZoneState;\n this._nineZoneState = initialState;\n this.nineZoneState = updatedState;\n }\n\n /** @internal */\n public get timeTracker(): TimeTracker {\n return this._timeTracker;\n }\n\n /** Creates a [[FrontstageDef]] and initializes it. */\n public static async create(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n providerOrFrontstage: FrontstageProvider | Frontstage\n ) {\n const def = new FrontstageDef();\n\n let config;\n if (\"frontstageConfig\" in providerOrFrontstage) {\n def._frontstageProvider = providerOrFrontstage;\n config = providerOrFrontstage.frontstageConfig();\n } else {\n config = providerOrFrontstage;\n }\n\n await def.initializeFromConfig(config);\n return def;\n }\n\n /** Handles when the Frontstage becomes activated */\n protected async _onActivated() {}\n\n /** Handles when the Frontstage becomes activated */\n public async onActivated() {\n this.updateWidgetDefs();\n\n const provider = this._contentGroupProvider;\n if (provider && this._initialConfig) {\n this._contentGroup = await provider.contentGroup(this._initialConfig);\n }\n\n if (!this._contentGroup)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n UiFramework.loggerCategory(\"FrontstageDef\"),\n `onActivated: Content Group not defined`\n );\n\n this._contentLayoutDef = UiFramework.content.layouts.getForGroup(\n this._contentGroup\n );\n UiFramework.frontstages.onContentLayoutActivatedEvent.emit({\n contentLayout: this._contentLayoutDef,\n contentGroup: this._contentGroup,\n });\n\n this._timeTracker.startTiming();\n await this._onActivated();\n }\n\n /** Handles when the Frontstage becomes inactive */\n protected async _onDeactivated() {}\n\n /** Handles when the Frontstage becomes inactive */\n public async onDeactivated() {\n for (const control of this._widgetControls) {\n control.onFrontstageDeactivated();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n for (const control of this.contentControls) {\n control.onFrontstageDeactivated();\n }\n\n if (this.contentGroup) this.contentGroup.onFrontstageDeactivated();\n if (this.contentGroupProvider)\n await this.contentGroupProvider.onFrontstageDeactivated();\n\n this._timeTracker.stopTiming();\n\n this._isStageClosing = true; // this keeps widgets in child windows from automatically re-docking\n UiFramework.childWindows.closeAll();\n\n if (this._floatingContentControls) {\n InternalContentDialogManager.closeAll();\n this._floatingContentControls = undefined;\n }\n\n if (this._toolAdminDefaultToolId) {\n IModelApp.toolAdmin.defaultToolId = this._toolAdminDefaultToolId;\n this._toolAdminDefaultToolId = undefined;\n }\n\n await this._onDeactivated();\n this._isStageClosing = false;\n }\n\n /** @internal */\n public setIsApplicationClosing(value: boolean) {\n this._isApplicationClosing = value;\n }\n\n /** Returns once the contained widgets and content controls are ready to use */\n public async waitUntilReady(): Promise<void> {\n this._isReady = false;\n // create an array of control-ready promises\n const controlReadyPromises = new Array<Promise<void>>();\n this._widgetControls.forEach((control) => {\n controlReadyPromises.push(control.isReady);\n });\n\n if (this.contentLayoutDef) {\n const usedContentIndexes = this.contentLayoutDef.getUsedContentIndexes();\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.contentControls.forEach((control, index) => {\n if (usedContentIndexes.includes(index))\n controlReadyPromises.push(control.isReady);\n });\n }\n\n await Promise.all(controlReadyPromises);\n // Frontstage ready\n this._isReady = true;\n }\n\n /** Handles when the Frontstage becomes active */\n protected _onFrontstageReady(): void {}\n\n /** Handles when the Frontstage becomes active */\n public onFrontstageReady(): void {\n for (const control of this._widgetControls) {\n control.onFrontstageReady();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n for (const control of this.contentControls) {\n control.onFrontstageReady();\n }\n\n if (this.contentGroup) this.contentGroup.onFrontstageReady();\n\n if (IModelApp.toolAdmin && IModelApp.viewManager && this._initialConfig) {\n const defaultTool = this._initialConfig.defaultTool;\n if (defaultTool) {\n this._toolAdminDefaultToolId = IModelApp.toolAdmin.defaultToolId;\n IModelApp.toolAdmin.defaultToolId = defaultTool;\n void IModelApp.tools.run(defaultTool);\n } else {\n void IModelApp.toolAdmin.startDefaultTool();\n }\n }\n\n this._onFrontstageReady();\n }\n\n /** Sets the Content Layout and Content Group */\n public setContentLayoutAndGroup(\n contentLayoutDef: ContentLayoutDef,\n contentGroup: ContentGroup\n ): void {\n this._contentLayoutDef = contentLayoutDef;\n this._contentGroup = contentGroup;\n }\n\n /** Sets the active view content to the default or first. */\n public async setActiveContent(): Promise<boolean> {\n const content = this.contentGroup?.contentPropsList?.[0];\n if (!content) return false;\n\n let contentReactNode = content.content;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n let control: ContentControl | undefined;\n if (!contentReactNode) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n control = this.contentGroup.getContentControl(content, 0);\n contentReactNode = control?.reactNode;\n }\n\n if (!contentReactNode) return false;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.content.setActive(contentReactNode, true);\n if (!control?.viewport) return true;\n\n const status = await IModelApp.viewManager.setSelectedView(\n control.viewport\n );\n return status === BentleyStatus.SUCCESS;\n }\n\n /** Gets a [[StagePanelDef]] based on a given panel location\n * @beta\n */\n public getStagePanelDef(\n location: StagePanelLocation\n ): StagePanelDef | undefined {\n let panelDef: StagePanelDef | undefined;\n\n switch (location) {\n case StagePanelLocation.Top:\n panelDef = this.topPanel;\n break;\n case StagePanelLocation.Left:\n panelDef = this.leftPanel;\n break;\n case StagePanelLocation.Right:\n panelDef = this.rightPanel;\n break;\n case StagePanelLocation.Bottom:\n panelDef = this.bottomPanel;\n break;\n }\n\n // Panels can be undefined in a Frontstage\n return panelDef;\n }\n\n /** Gets a list of [[StagePanelDef]]s\n * @beta\n */\n public get panelDefs(): StagePanelDef[] {\n const locations = [\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n StagePanelLocation.Top,\n StagePanelLocation.Bottom,\n ];\n const panels: StagePanelDef[] = [];\n\n locations.forEach((location: StagePanelLocation) => {\n const panel = this.getStagePanelDef(location);\n if (panel) panels.push(panel);\n });\n\n return panels;\n }\n\n /** Finds a [[WidgetDef]] based on a given id */\n public findWidgetDef(id: string): WidgetDef | undefined {\n for (const widgetDef of this.widgetDefs) {\n if (widgetDef.id === id) return widgetDef;\n }\n return undefined;\n }\n\n /** Gets the list of [[WidgetControl]]s */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private get _widgetControls(): WidgetControl[] {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const widgetControls = new Array<WidgetControl>();\n\n this.panelDefs.forEach((panelDef) => {\n panelDef.widgetDefs.forEach((widgetDef) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const widgetControl = widgetDef.widgetControl;\n if (widgetControl) widgetControls.push(widgetControl);\n });\n });\n\n return widgetControls;\n }\n\n /** Initializes a FrontstageDef from frontstage.\n * @internal\n */\n public async initializeFromConfig(config: Frontstage): Promise<void> {\n this._id = config.id;\n this._initialConfig = config;\n\n if (config.contentGroup instanceof ContentGroupProvider) {\n this._contentGroupProvider = config.contentGroup;\n } else {\n this._contentGroup = config.contentGroup;\n }\n\n this._usage = config.usage;\n this._version = config.version;\n\n this._toolSettings = createWidgetDef(\n config.toolSettings,\n WidgetType.ToolSettings\n );\n this._activeToolEmptyNode = config.toolSettings?.activeToolEmptyNode;\n this._statusBar = createWidgetDef(config.statusBar, WidgetType.StatusBar);\n this._contentManipulation = createWidgetDef(\n config.contentManipulation,\n WidgetType.Tool\n );\n this._viewNavigation = createWidgetDef(\n config.viewNavigation,\n WidgetType.Navigation\n );\n this._topPanel = createStagePanelDef(config, StagePanelLocation.Top);\n this._leftPanel = createStagePanelDef(config, StagePanelLocation.Left);\n this._rightPanel = createStagePanelDef(config, StagePanelLocation.Right);\n this._bottomPanel = createStagePanelDef(config, StagePanelLocation.Bottom);\n }\n\n /** @internal */\n public updateWidgetDefs(): void {\n // Tracks provided widgets to prevent duplicates.\n const allStageWidgetDefs: WidgetDef[] = [];\n\n // Process panels before zones so extension can explicitly target a widget for a StagePanelSection\n this.panelDefs.forEach((stagePanelDef: StagePanelDef) => {\n stagePanelDef.updateDynamicWidgetDefs(\n this.id,\n this.usage,\n stagePanelDef.location,\n undefined,\n allStageWidgetDefs\n );\n });\n\n InternalFrontstageManager.onFrontstageWidgetsChangedEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** Restores frontstage layout to initial configuration.\n * @beta\n */\n public restoreLayout() {\n for (const panelDef of this.panelDefs) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n panelDef.size = panelDef.initialConfig?.size;\n panelDef.sizeSpec = panelDef.initialConfig?.sizeSpec;\n panelDef.panelState = panelDef.defaultState;\n panelDef.pinned = panelDef.initialConfig?.pinned ?? true;\n }\n for (const widgetDef of this.widgetDefs) {\n widgetDef.setWidgetState(widgetDef.defaultState);\n }\n\n const storage = UiFramework.getUiStateStorage();\n void storage.deleteSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(this.id)\n );\n this.nineZoneState = undefined;\n\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.emit({\n frontstageDef: this,\n });\n }\n\n public isPopoutWidget(widgetId: string) {\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location) return isPopoutTabLocation(location);\n }\n\n return false;\n }\n\n public isFloatingWidget(widgetId: string) {\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location) return isFloatingTabLocation(location);\n }\n\n return false;\n }\n\n /** Create a new floating panel that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:400, width:400} is used.\n * @beta\n */\n public floatWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n /** Check widget and panel state to determine whether the widget is currently displayed\n * @param widgetId case-sensitive Widget Id\n * @public\n */\n public isWidgetDisplayed(widgetId: string): boolean {\n if (!this.nineZoneState) return false;\n\n const tabLocation = getTabLocation(this.nineZoneState, widgetId);\n if (!tabLocation) return false;\n\n if (isPanelTabLocation(tabLocation)) {\n const panel = this.nineZoneState.panels[tabLocation.side];\n const widgetDef = this.findWidgetDef(widgetId);\n const isVisible =\n !!widgetDef && widgetDef.state === WidgetState.Open && !panel.collapsed;\n return isVisible;\n }\n\n return true;\n }\n\n /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.\n * @internal\n */\n public openPopoutWidgetContainer(\n widgetContainerId: string,\n oldState: NineZoneState | undefined\n ): boolean {\n const state = this.nineZoneState;\n if (!state) return false;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return false;\n if (!isPopoutWidgetLocation(location)) return false;\n\n const widget = state.widgets[widgetContainerId];\n // Popout widget should only contain a single tab.\n if (widget.tabs.length !== 1) return false;\n\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return false;\n\n const popoutContent = (\n <ChildWindowWidget\n widgetContainerId={widgetContainerId}\n widgetDef={widgetDef}\n />\n );\n\n const popoutWidget = state.popoutWidgets.byId[location.popoutWidgetId];\n const bounds = Rectangle.create(popoutWidget.bounds);\n const position: ChildWindowLocationProps = {\n width: bounds.getWidth(),\n height: bounds.getHeight(),\n left: bounds.left,\n top: bounds.top,\n };\n\n const childWindow = appUi.windowManager.openWindow({\n childWindowId: widgetContainerId,\n title: widgetDef.label,\n content: popoutContent,\n location: position,\n useDefaultPopoutUrl: UiFramework.useDefaultPopoutUrl,\n tabId,\n });\n\n // Use outer size if available to avoid inner size + browser zoom issues: https://github.com/iTwin/appui/issues/563\n const savedTab = state.savedTabs.byId[tabId];\n if (childWindow && savedTab?.popout?.size) {\n childWindow.resizeTo(\n savedTab.popout.size.width,\n savedTab.popout.size.height\n );\n }\n\n if (!childWindow && oldState) {\n this.nineZoneState = oldState;\n return false;\n }\n\n return true;\n }\n\n /** Create a new popout/child window that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:800, width:600} is used.\n * @beta\n */\n public popoutWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_POPOUT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n public get isStageClosing() {\n return this._isStageClosing;\n }\n\n public get isApplicationClosing() {\n return this._isApplicationClosing;\n }\n\n public get isReady() {\n return this._isReady;\n }\n\n /** @internal */\n public saveChildWindowSizeAndPosition(\n childWindowId: string,\n childWindow: Window\n ) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, childWindowId);\n if (!location || !isPopoutWidgetLocation(location)) return;\n\n const widget = state.widgets[location.popoutWidgetId];\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_SET_POPOUT_BOUNDS\",\n id: tabId,\n position: {\n x: childWindow.screenLeft,\n y: childWindow.screenTop,\n },\n size: {\n height: childWindow.outerHeight,\n width: childWindow.outerWidth,\n },\n contentSize: {\n height: childWindow.innerHeight,\n width: childWindow.innerWidth,\n },\n });\n }\n\n /** @internal */\n public dockWidgetContainerByContainerId(widgetContainerId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return;\n\n if (isFloatingWidgetLocation(location)) {\n this.dispatch({\n type: \"FLOATING_WIDGET_SEND_BACK\",\n id: location.floatingWidgetId,\n });\n return;\n }\n if (isPopoutWidgetLocation(location)) {\n this.dispatch({\n type: \"POPOUT_WIDGET_SEND_BACK\",\n id: location.popoutWidgetId,\n });\n return;\n }\n }\n\n /** Finds the container with the specified widget and re-docks all widgets\n * back to the panel zone location that was used when the floating container\n * was generated.\n * @param widgetId case sensitive Widget Id.\n * @beta\n */\n public dockWidgetContainer(widgetId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getTabLocation(state, widgetId);\n if (!location) return;\n\n this.dockWidgetContainerByContainerId(location.widgetId);\n }\n\n public setFloatingWidgetContainerBounds(\n floatingWidgetId: string,\n bounds: RectangleProps\n ) {\n if (\n !this.nineZoneState ||\n !(floatingWidgetId in this.nineZoneState.floatingWidgets.byId)\n )\n return false;\n\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_BOUNDS\",\n id: floatingWidgetId,\n bounds,\n });\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_USER_SIZED\",\n id: floatingWidgetId,\n userSized: true,\n });\n return true;\n }\n\n public getFloatingWidgetContainerIds(): string[] {\n if (!this.nineZoneState) return [];\n\n return [...this.nineZoneState.floatingWidgets.allIds];\n }\n\n public getFloatingWidgetContainerIdByWidgetId(\n widgetId: string\n ): string | undefined {\n if (!this.nineZoneState) return undefined;\n\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location && isFloatingTabLocation(location)) {\n return location.floatingWidgetId;\n }\n return undefined;\n }\n\n public getFloatingWidgetContainerBounds(\n floatingWidgetId: string | undefined\n ) {\n if (!floatingWidgetId) return undefined;\n\n if (\n this.nineZoneState &&\n floatingWidgetId in this.nineZoneState.floatingWidgets.byId\n ) {\n const foundWidget = document.querySelector(\n `div.nz-widget-floatingWidget[data-widget-id='${floatingWidgetId}']`\n );\n if (foundWidget) {\n const domRect = foundWidget.getBoundingClientRect();\n return {\n left: domRect.left,\n right: domRect.right,\n top: domRect.top,\n bottom: domRect.bottom,\n };\n }\n return this.nineZoneState.floatingWidgets.byId[floatingWidgetId].bounds;\n }\n return undefined;\n }\n\n private *_widgetDefs(): Iterator<WidgetDef> {\n for (const panelDef of this.panelDefs) {\n for (const widgetDef of panelDef.widgetDefs) {\n yield widgetDef;\n }\n }\n if (this.toolSettings) yield this.toolSettings;\n if (this.statusBar) yield this.statusBar;\n return undefined;\n }\n\n /** Iterable of all widget definitions in a frontstage.\n * @internal\n */\n public get widgetDefs() {\n const defs = this._widgetDefs();\n return {\n [Symbol.iterator]() {\n return defs;\n },\n };\n }\n\n /* eslint-disable @typescript-eslint/no-deprecated */\n\n /** @deprecated in 4.15.0. Use {@link FrontstageDef.id} to look up a frontstage. */\n public get frontstageProvider(): FrontstageProvider | undefined {\n return this._frontstageProvider;\n }\n\n /** Sets the active view content control.\n * @deprecated in 4.16.0. Uses a deprecated class {@link ContentControl}.\n */\n public setActiveView(\n newContent: ContentControl,\n oldContent?: ContentControl\n ): void {\n if (oldContent) oldContent.onDeactivated();\n newContent.onActivated();\n UiFramework.frontstages.onContentControlActivatedEvent.emit({\n activeContentControl: newContent,\n oldContentControl: oldContent,\n });\n }\n\n /** @deprecated in 4.16.0. Use {@link UiItemsProvider} to provide a floating widget. */\n public addFloatingContentControl(contentControl?: ContentControl) {\n if (!contentControl) return;\n if (!this._floatingContentControls)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._floatingContentControls = new Array<ContentControl>();\n\n this._floatingContentControls.push(contentControl);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n\n /** @deprecated in 4.16.0. Unregister {@link UiItemsProvider} to remove a floating widget. */\n public dropFloatingContentControl(contentControl?: ContentControl) {\n if (!contentControl || !this._floatingContentControls) return;\n\n const index = this._floatingContentControls.indexOf(contentControl);\n if (index > -1) {\n this._floatingContentControls.splice(index, 1);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n }\n\n /** Gets the list of {@link ContentControl}s.\n * @deprecated in 4.16.0. Uses a deprecated class {@link ContentControl}.\n */\n public get contentControls(): ContentControl[] {\n const contentControls = new Array<ContentControl>();\n if (this.contentGroup) {\n contentControls.push(...this.contentGroup.getContentControls());\n }\n if (this._floatingContentControls) {\n contentControls.push(...this._floatingContentControls);\n }\n return contentControls;\n }\n\n /** Sets the active view content control based on the selected viewport.\n * @deprecated in 4.16.0. Use {@link FrameworkContent.setActiveId} instead.\n */\n public setActiveViewFromViewport(viewport: ScreenViewport): boolean {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const contentControl = this.contentControls.find(\n (control) => control.viewport === viewport\n );\n if (contentControl) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.content.setActive(contentControl.reactNode, true);\n return true;\n }\n\n return false;\n }\n\n /* eslint-enable @typescript-eslint/no-deprecated */\n}\n\nfunction createWidgetDef(\n config: WidgetConfig | undefined,\n type: WidgetType\n): WidgetDef | undefined {\n if (!config) return undefined;\n\n const widgetDef = WidgetDef.create(config, type);\n return widgetDef;\n}\n\nfunction createStagePanelDef(\n frontstage: Frontstage,\n location: StagePanelLocation\n): StagePanelDef {\n const config = getStagePanel(location, frontstage);\n\n const panelDef = new StagePanelDef();\n panelDef.initializeFromConfig(config, location);\n return panelDef;\n}\n\nfunction getStagePanel(\n location: StagePanelLocation,\n config: Frontstage\n): StagePanelConfig | undefined {\n switch (location) {\n case StagePanelLocation.Top:\n return config.topPanel;\n case StagePanelLocation.Left:\n return config.leftPanel;\n case StagePanelLocation.Right:\n return config.rightPanel;\n case StagePanelLocation.Bottom:\n return config.bottomPanel;\n }\n}\n\n/** Hook that returns active frontstage id.\n * @public\n */\nexport const useActiveFrontstageId = () => {\n const def = useActiveFrontstageDef();\n const id = React.useMemo(() => (def ? def.id : \"\"), [def]);\n return id;\n};\n\n/** Hook to return the active Frontstage def.\n * @public\n */\nexport function useActiveFrontstageDef() {\n const [def, setDef] = React.useState(\n UiFramework.frontstages.activeFrontstageDef\n );\n React.useEffect(() => {\n return UiFramework.frontstages.onFrontstageActivatedEvent.addListener(\n (args) => {\n setDef(args.activatedFrontstageDef);\n }\n );\n }, []);\n return def;\n}\n\n/** Hook that returns the widgetDef for a specific widgetId within the active frontstage.\n * @public\n */\nexport function useSpecificWidgetDef(widgetId: string) {\n const frontstageDef = useActiveFrontstageDef();\n const [widgetDef, setWidgetDef] = React.useState(() =>\n frontstageDef?.findWidgetDef(widgetId)\n );\n React.useEffect(() => {\n setWidgetDef(frontstageDef?.findWidgetDef(widgetId));\n return InternalFrontstageManager.onFrontstageWidgetsChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n setWidgetDef(frontstageDef.findWidgetDef(widgetId));\n }\n );\n }, [frontstageDef, widgetId]);\n return widgetDef;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StandardLayout.d.ts","sourceRoot":"","sources":["../../../src/appui-react/layout/StandardLayout.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AASrD,UAAU,mBAAoB,SAAQ,WAAW;IAC/C,gHAAgH;IAChH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,wGAAwG;IACxG,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBAsBxD"}
1
+ {"version":3,"file":"StandardLayout.d.ts","sourceRoot":"","sources":["../../../src/appui-react/layout/StandardLayout.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAWrD,UAAU,mBAAoB,SAAQ,WAAW;IAC/C,gHAAgH;IAChH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,wGAAwG;IACxG,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBAwBxD"}
@@ -13,16 +13,20 @@ import { useContentAlwaysMaxSize } from "../preview/content-always-max-size/useC
13
13
  import { useMaximizedPanelLayout } from "../preview/enable-maximized-widget/useMaximizedWidget.js";
14
14
  import { useHorizontalPanelAlignment } from "../preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js";
15
15
  import { usePanelsAutoCollapse } from "./widget-panels/usePanelsAutoCollapse.js";
16
+ import { ConfigurableUiContext } from "../configurableui/ConfigurableUiContent.js";
17
+ import { useRefs } from "@itwin/core-react/internal";
16
18
  /** Component that displays widgets in a standard layout.
17
19
  * @internal
18
20
  */
19
21
  export function StandardLayout(props) {
22
+ const { contentElementRef } = React.useContext(ConfigurableUiContext);
20
23
  const pinned = usePinnedPanels();
21
24
  const appContentRef = usePanelsAutoCollapse();
25
+ const refs = useRefs(contentElementRef, appContentRef);
22
26
  const className = classnames("nz-standardLayout", pinned, props.className);
23
27
  const contentAlwaysMaxSize = useContentAlwaysMaxSize();
24
28
  return (React.createElement("div", { className: className, style: props.style },
25
- React.createElement("div", { className: classnames("nz-appContent", contentAlwaysMaxSize), ref: appContentRef }, props.children),
29
+ React.createElement("div", { className: classnames("nz-appContent", contentAlwaysMaxSize), ref: refs }, props.children),
26
30
  React.createElement("div", { className: "nz-centerContent" }, props.centerContent),
27
31
  React.createElement(Panel, { side: "left" }, props.leftPanel),
28
32
  React.createElement(Panel, { side: "right" }, props.rightPanel),
@@ -1 +1 @@
1
- {"version":3,"file":"StandardLayout.js","sourceRoot":"","sources":["../../../src/appui-react/layout/StandardLayout.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+DAA+D,CAAC;AACxG,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAC;AACnG,OAAO,EAAE,2BAA2B,EAAE,MAAM,sEAAsE,CAAC;AACnH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAiBjF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,aAAa,GAAG,qBAAqB,EAAkB,CAAC;IAC9D,MAAM,SAAS,GAAG,UAAU,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3E,MAAM,oBAAoB,GAAG,uBAAuB,EAAE,CAAC;IACvD,OAAO,CACL,6BAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;QAC3C,6BACE,SAAS,EAAE,UAAU,CAAC,eAAe,EAAE,oBAAoB,CAAC,EAC5D,GAAG,EAAE,aAAa,IAEjB,KAAK,CAAC,QAAQ,CACX;QACN,6BAAK,SAAS,EAAC,kBAAkB,IAAE,KAAK,CAAC,aAAa,CAAO;QAC7D,oBAAC,KAAK,IAAC,IAAI,EAAC,MAAM,IAAE,KAAK,CAAC,SAAS,CAAS;QAC5C,oBAAC,KAAK,IAAC,IAAI,EAAC,OAAO,IAAE,KAAK,CAAC,UAAU,CAAS;QAC9C,oBAAC,KAAK,IAAC,IAAI,EAAC,KAAK,IAAE,KAAK,CAAC,QAAQ,CAAS;QAC1C,oBAAC,KAAK,IAAC,IAAI,EAAC,QAAQ,IAAE,KAAK,CAAC,WAAW,CAAS;QAChD,6BAAK,SAAS,EAAC,iBAAiB,IAAE,KAAK,CAAC,YAAY,CAAO;QAC3D,6BAAK,SAAS,EAAC,cAAc,IAAE,KAAK,CAAC,SAAS,CAAO,CACjD,CACP,CAAC;AACJ,CAAC;AAMD,SAAS,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAuC;IACpE,MAAM,eAAe,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,mBAAmB,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,UAAU,CAC1B,qBAAqB,IAAI,OAAO,EAChC,eAAe,EACf,mBAAmB,CAAC,UAAU,CAC/B,CAAC;IACF,OAAO,CACL,6BAAK,SAAS,EAAE,SAAS,KAAM,mBAAmB,CAAC,UAAU,IAC1D,QAAQ,CACL,CACP,CAAC;AACJ,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtE,OAAO;QACL,gBAAgB,EAAE,UAAU;QAC5B,iBAAiB,EAAE,WAAW;QAC9B,eAAe,EAAE,SAAS;QAC1B,kBAAkB,EAAE,YAAY;KACjC,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WidgetPanels\n */\n\nimport \"./StandardLayout.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { useLayout } from \"./base/LayoutStore.js\";\nimport { useContentAlwaysMaxSize } from \"../preview/content-always-max-size/useContentAlwaysMaxSize.js\";\nimport { useMaximizedPanelLayout } from \"../preview/enable-maximized-widget/useMaximizedWidget.js\";\nimport { useHorizontalPanelAlignment } from \"../preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js\";\nimport { usePanelsAutoCollapse } from \"./widget-panels/usePanelsAutoCollapse.js\";\nimport type { PanelSide } from \"./widget-panels/PanelTypes.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\ninterface StandardLayoutProps extends CommonProps {\n /** Main content area of the application (i.e. viewport) that will change bounds based on panel pinned state. */\n children?: React.ReactNode;\n /** Component that displays center content (i.e. toolbars). Content is always bound by widget panels. */\n centerContent?: React.ReactNode;\n toolSettings?: React.ReactNode;\n statusBar?: React.ReactNode;\n topPanel?: React.ReactNode;\n leftPanel?: React.ReactNode;\n rightPanel?: React.ReactNode;\n bottomPanel?: React.ReactNode;\n}\n\n/** Component that displays widgets in a standard layout.\n * @internal\n */\nexport function StandardLayout(props: StandardLayoutProps) {\n const pinned = usePinnedPanels();\n const appContentRef = usePanelsAutoCollapse<HTMLDivElement>();\n const className = classnames(\"nz-standardLayout\", pinned, props.className);\n const contentAlwaysMaxSize = useContentAlwaysMaxSize();\n return (\n <div className={className} style={props.style}>\n <div\n className={classnames(\"nz-appContent\", contentAlwaysMaxSize)}\n ref={appContentRef}\n >\n {props.children}\n </div>\n <div className=\"nz-centerContent\">{props.centerContent}</div>\n <Panel side=\"left\">{props.leftPanel}</Panel>\n <Panel side=\"right\">{props.rightPanel}</Panel>\n <Panel side=\"top\">{props.topPanel}</Panel>\n <Panel side=\"bottom\">{props.bottomPanel}</Panel>\n <div className=\"nz-toolSettings\">{props.toolSettings}</div>\n <div className=\"nz-statusBar\">{props.statusBar}</div>\n </div>\n );\n}\n\ninterface PanelProps {\n side: PanelSide;\n}\n\nfunction Panel({ children, side }: React.PropsWithChildren<PanelProps>) {\n const maximizedWidget = useMaximizedPanelLayout(side);\n const horizontalAlignment = useHorizontalPanelAlignment(side);\n const className = classnames(\n `nz-standardLayout_${side}Panel`,\n maximizedWidget,\n horizontalAlignment.classNames\n );\n return (\n <div className={className} {...horizontalAlignment.attributes}>\n {children}\n </div>\n );\n}\n\nfunction usePinnedPanels() {\n const leftPinned = useLayout((state) => state.panels.left.pinned);\n const rightPinned = useLayout((state) => state.panels.right.pinned);\n const topPinned = useLayout((state) => state.panels.top.pinned);\n const bottomPinned = useLayout((state) => state.panels.bottom.pinned);\n return {\n \"nz-pinned-left\": leftPinned,\n \"nz-pinned-right\": rightPinned,\n \"nz-pinned-top\": topPinned,\n \"nz-pinned-bottom\": bottomPinned,\n };\n}\n"]}
1
+ {"version":3,"file":"StandardLayout.js","sourceRoot":"","sources":["../../../src/appui-react/layout/StandardLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WidgetPanels\n */\n\nimport \"./StandardLayout.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { useLayout } from \"./base/LayoutStore.js\";\nimport { useContentAlwaysMaxSize } from \"../preview/content-always-max-size/useContentAlwaysMaxSize.js\";\nimport { useMaximizedPanelLayout } from \"../preview/enable-maximized-widget/useMaximizedWidget.js\";\nimport { useHorizontalPanelAlignment } from \"../preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js\";\nimport { usePanelsAutoCollapse } from \"./widget-panels/usePanelsAutoCollapse.js\";\nimport type { PanelSide } from \"./widget-panels/PanelTypes.js\";\nimport { ConfigurableUiContext } from \"../configurableui/ConfigurableUiContent.js\";\nimport { useRefs } from \"@itwin/core-react/internal\";\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\ninterface StandardLayoutProps extends CommonProps {\n /** Main content area of the application (i.e. viewport) that will change bounds based on panel pinned state. */\n children?: React.ReactNode;\n /** Component that displays center content (i.e. toolbars). Content is always bound by widget panels. */\n centerContent?: React.ReactNode;\n toolSettings?: React.ReactNode;\n statusBar?: React.ReactNode;\n topPanel?: React.ReactNode;\n leftPanel?: React.ReactNode;\n rightPanel?: React.ReactNode;\n bottomPanel?: React.ReactNode;\n}\n\n/** Component that displays widgets in a standard layout.\n * @internal\n */\nexport function StandardLayout(props: StandardLayoutProps) {\n const { contentElementRef } = React.useContext(ConfigurableUiContext);\n const pinned = usePinnedPanels();\n const appContentRef = usePanelsAutoCollapse<HTMLDivElement>();\n const refs = useRefs(contentElementRef, appContentRef);\n const className = classnames(\"nz-standardLayout\", pinned, props.className);\n const contentAlwaysMaxSize = useContentAlwaysMaxSize();\n return (\n <div className={className} style={props.style}>\n <div\n className={classnames(\"nz-appContent\", contentAlwaysMaxSize)}\n ref={refs}\n >\n {props.children}\n </div>\n <div className=\"nz-centerContent\">{props.centerContent}</div>\n <Panel side=\"left\">{props.leftPanel}</Panel>\n <Panel side=\"right\">{props.rightPanel}</Panel>\n <Panel side=\"top\">{props.topPanel}</Panel>\n <Panel side=\"bottom\">{props.bottomPanel}</Panel>\n <div className=\"nz-toolSettings\">{props.toolSettings}</div>\n <div className=\"nz-statusBar\">{props.statusBar}</div>\n </div>\n );\n}\n\ninterface PanelProps {\n side: PanelSide;\n}\n\nfunction Panel({ children, side }: React.PropsWithChildren<PanelProps>) {\n const maximizedWidget = useMaximizedPanelLayout(side);\n const horizontalAlignment = useHorizontalPanelAlignment(side);\n const className = classnames(\n `nz-standardLayout_${side}Panel`,\n maximizedWidget,\n horizontalAlignment.classNames\n );\n return (\n <div className={className} {...horizontalAlignment.attributes}>\n {children}\n </div>\n );\n}\n\nfunction usePinnedPanels() {\n const leftPinned = useLayout((state) => state.panels.left.pinned);\n const rightPinned = useLayout((state) => state.panels.right.pinned);\n const topPinned = useLayout((state) => state.panels.top.pinned);\n const bottomPinned = useLayout((state) => state.panels.bottom.pinned);\n return {\n \"nz-pinned-left\": leftPinned,\n \"nz-pinned-right\": rightPinned,\n \"nz-pinned-top\": topPinned,\n \"nz-pinned-bottom\": bottomPinned,\n };\n}\n"]}
@@ -27,15 +27,10 @@ export interface NineZoneProps {
27
27
  }
28
28
  /** @internal */
29
29
  export interface NineZoneLabels {
30
- dockToolSettingsTitle?: string;
31
30
  moreWidgetsTitle?: string;
32
31
  moreToolSettingsTitle?: string;
33
- pinPanelTitle?: string;
34
32
  resizeGripTitle?: string;
35
- sendWidgetHomeTitle?: string;
36
33
  toolSettingsHandleTitle?: string;
37
- unpinPanelTitle?: string;
38
- popoutActiveTab?: string;
39
34
  }
40
35
  /** @internal */
41
36
  export declare function NineZone(props: NineZoneProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"NineZone.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NineZone.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"NineZone.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Base\n */\n\nimport * as React from \"react\";\nimport { assert, Guid } from \"@itwin/core-bentley\";\nimport {\n Rectangle,\n useRefs,\n useResizeObserver,\n} from \"@itwin/core-react/internal\";\nimport type { CursorType } from \"../widget-panels/CursorOverlay.js\";\nimport type { PanelSide } from \"../widget-panels/PanelTypes.js\";\nimport { WidgetContentManager } from \"../widget/ContentManager.js\";\nimport type { FloatingWidgetResizeHandle } from \"../widget/FloatingWidget.js\";\nimport { FloatingWidget } from \"../widget/FloatingWidget.js\";\nimport {\n DraggedPanelSideContext,\n DraggedResizeHandleContext,\n DraggedWidgetIdContext,\n DragProvider,\n} from \"./DragManager.js\";\nimport { WidgetTab } from \"../widget/Tab.js\";\nimport type { NineZoneAction } from \"../state/NineZoneAction.js\";\nimport type { LayoutStore } from \"./LayoutStore.js\";\nimport { LayoutStoreContext, useLayout } from \"./LayoutStore.js\";\n\n/** @internal */\nexport type NineZoneDispatch = (action: NineZoneAction) => void;\n\n/** @internal */\nexport interface NineZoneProps {\n children?: React.ReactNode;\n dispatch: NineZoneDispatch;\n layout: LayoutStore;\n labels?: NineZoneLabels;\n toolSettingsContent?: React.ReactNode;\n widgetContent?: React.ReactNode;\n tab?: React.ReactNode;\n floatingWidget?: React.ReactNode;\n showWidgetIcon?: boolean;\n autoCollapseUnpinnedPanels?: boolean;\n animateDockedToolSettings?: boolean;\n uiIsVisible?: boolean;\n}\n\n/** @internal */\nexport interface NineZoneLabels {\n dockToolSettingsTitle?: string;\n moreWidgetsTitle?: string;\n moreToolSettingsTitle?: string;\n pinPanelTitle?: string;\n resizeGripTitle?: string;\n sendWidgetHomeTitle?: string;\n toolSettingsHandleTitle?: string;\n unpinPanelTitle?: string;\n popoutActiveTab?: string;\n}\n\n/** @internal */\nexport function NineZone(props: NineZoneProps) {\n const { children, ...providerProps } = props;\n const measurerRef = React.useRef<HTMLDivElement>(null);\n const measure = React.useCallback<() => Rectangle>(() => {\n assert(!!measurerRef.current);\n return Rectangle.create(measurerRef.current.getBoundingClientRect());\n }, []);\n return (\n <NineZoneProvider measure={measure} {...providerProps}>\n <Measurer ref={measurerRef} />\n {children}\n </NineZoneProvider>\n );\n}\n\n/** @internal */\nexport interface NineZoneProviderProps extends NineZoneProps {\n measure: () => Rectangle;\n}\n\nconst tab = <WidgetTab />;\nconst floatingWidget = <FloatingWidget />;\n\n/** @internal */\nexport function NineZoneProvider(props: NineZoneProviderProps) {\n return (\n <LayoutStoreContext.Provider value={props.layout}>\n <NineZoneDispatchContext.Provider value={props.dispatch}>\n <NineZoneLabelsContext.Provider value={props.labels}>\n <UiIsVisibleContext.Provider value={!!props.uiIsVisible}>\n <ShowWidgetIconContext.Provider value={!!props.showWidgetIcon}>\n <AutoCollapseUnpinnedPanelsContext.Provider\n value={!!props.autoCollapseUnpinnedPanels}\n >\n <WidgetContentNodeContext.Provider value={props.widgetContent}>\n <ToolSettingsNodeContext.Provider\n value={props.toolSettingsContent}\n >\n <TabNodeContext.Provider value={props.tab || tab}>\n <FloatingWidgetNodeContext.Provider\n value={props.floatingWidget || floatingWidget}\n >\n <AnimateDockedToolSettingsContext.Provider\n value={!!props.animateDockedToolSettings}\n >\n <DragProvider>\n <CursorTypeProvider>\n <WidgetContentManager>\n <MeasureContext.Provider value={props.measure}>\n {props.children}\n </MeasureContext.Provider>\n </WidgetContentManager>\n </CursorTypeProvider>\n </DragProvider>\n </AnimateDockedToolSettingsContext.Provider>\n </FloatingWidgetNodeContext.Provider>\n </TabNodeContext.Provider>\n </ToolSettingsNodeContext.Provider>\n </WidgetContentNodeContext.Provider>\n </AutoCollapseUnpinnedPanelsContext.Provider>\n </ShowWidgetIconContext.Provider>\n </UiIsVisibleContext.Provider>\n </NineZoneLabelsContext.Provider>\n </NineZoneDispatchContext.Provider>\n </LayoutStoreContext.Provider>\n );\n}\n\n/** @internal */\nexport const NineZoneDispatchContext = React.createContext<NineZoneDispatch>(\n null!\n);\nNineZoneDispatchContext.displayName = \"nz:NineZoneDispatchContext\";\n\n/** @internal */\nexport const NineZoneLabelsContext = React.createContext<\n NineZoneLabels | undefined\n>(undefined);\nNineZoneLabelsContext.displayName = \"nz:NineZoneLabelsContext\";\n\n/** @internal */\nexport const CursorTypeContext = React.createContext<CursorType | undefined>(\n undefined\n);\nCursorTypeContext.displayName = \"nz:CursorTypeContext\";\n\n/** @internal */\nexport const WidgetContentNodeContext =\n React.createContext<React.ReactNode>(undefined);\nWidgetContentNodeContext.displayName = \"nz:WidgetContentNodeContext\";\n\n/** @internal */\nexport const ShowWidgetIconContext = React.createContext<boolean>(false);\nShowWidgetIconContext.displayName = \"nz:ShowWidgetIconContext\";\n\n/** @internal */\nexport const AutoCollapseUnpinnedPanelsContext =\n React.createContext<boolean>(false);\nAutoCollapseUnpinnedPanelsContext.displayName =\n \"nz:AutoCollapseUnpinnedPanelsContext\";\n\n/** @internal */\nexport const AnimateDockedToolSettingsContext =\n React.createContext<boolean>(false);\nAnimateDockedToolSettingsContext.displayName =\n \"nz:AnimateDockedToolSettingsContext\";\n\n/** @internal */\nexport const ToolSettingsNodeContext =\n React.createContext<React.ReactNode>(undefined);\nToolSettingsNodeContext.displayName = \"nz:ToolSettingsNodeContext\";\n\n/** @internal */\nexport const TabNodeContext = React.createContext<React.ReactNode>(undefined);\nTabNodeContext.displayName = \"nz:TabNodeContext\";\n\n/** @internal */\nexport const FloatingWidgetNodeContext =\n React.createContext<React.ReactNode>(undefined);\nFloatingWidgetNodeContext.displayName = \"nz:FloatingWidgetNodeContext\";\n\n/** @internal */\nexport const MeasureContext = React.createContext<() => Rectangle>(null!);\nMeasureContext.displayName = \"nz:MeasureContext\";\n\n/** @internal */\nexport const UiIsVisibleContext = React.createContext<boolean>(false);\nUiIsVisibleContext.displayName = \"nz:UiIsVisibleContext\";\n\nfunction CursorTypeProvider(props: { children?: React.ReactNode }) {\n const draggedTab = useLayout((state) => !!state.draggedTab);\n const draggedWidgetId = React.useContext(DraggedWidgetIdContext);\n const draggedPanelSide = React.useContext(DraggedPanelSideContext);\n const draggedResizeHandle = React.useContext(DraggedResizeHandleContext);\n let type: CursorType | undefined;\n if (draggedTab || draggedWidgetId) type = \"grabbing\";\n else if (draggedPanelSide) type = sideToCursorType(draggedPanelSide);\n else if (draggedResizeHandle) type = handleToCursorType(draggedResizeHandle);\n return (\n <CursorTypeContext.Provider value={type}>\n {props.children}\n </CursorTypeContext.Provider>\n );\n}\n\nconst Measurer = React.forwardRef<HTMLDivElement>(function Measurer(_, ref) {\n const size = React.useRef<{ height?: number; width?: number }>({});\n const dispatch = React.useContext(NineZoneDispatchContext);\n const handleResize = React.useCallback(\n (width: number, height: number) => {\n if (size.current.width === width && size.current.height === height)\n return;\n size.current.height = height;\n size.current.width = width;\n dispatch({\n type: \"RESIZE\",\n size: {\n height,\n width,\n },\n });\n },\n [dispatch]\n );\n const roRef = useResizeObserver(handleResize);\n const refs = useRefs(ref, roRef);\n return (\n <div\n ref={refs}\n style={{\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n top: \"0\",\n left: \"0\",\n visibility: \"hidden\",\n }}\n />\n );\n});\n\n/** @internal */\nexport function sideToCursorType(side: PanelSide): CursorType {\n switch (side) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n }\n}\n\n/** @internal */\nexport function handleToCursorType(\n handle: FloatingWidgetResizeHandle\n): CursorType {\n switch (handle) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n case \"topLeft\":\n case \"bottomRight\":\n return \"nwse-resize\";\n case \"topRight\":\n case \"bottomLeft\":\n return \"nesw-resize\";\n }\n}\n\n/** @internal */\nexport function getUniqueId() {\n return Guid.createValue();\n}\n\n/** @internal */\nexport function useLabel(labelKey: keyof NineZoneLabels) {\n const labels = React.useContext(NineZoneLabelsContext);\n return labels?.[labelKey];\n}\n"]}
1
+ {"version":3,"file":"NineZone.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Base\n */\n\nimport * as React from \"react\";\nimport { assert, Guid } from \"@itwin/core-bentley\";\nimport {\n Rectangle,\n useRefs,\n useResizeObserver,\n} from \"@itwin/core-react/internal\";\nimport type { CursorType } from \"../widget-panels/CursorOverlay.js\";\nimport type { PanelSide } from \"../widget-panels/PanelTypes.js\";\nimport { WidgetContentManager } from \"../widget/ContentManager.js\";\nimport type { FloatingWidgetResizeHandle } from \"../widget/FloatingWidget.js\";\nimport { FloatingWidget } from \"../widget/FloatingWidget.js\";\nimport {\n DraggedPanelSideContext,\n DraggedResizeHandleContext,\n DraggedWidgetIdContext,\n DragProvider,\n} from \"./DragManager.js\";\nimport { WidgetTab } from \"../widget/Tab.js\";\nimport type { NineZoneAction } from \"../state/NineZoneAction.js\";\nimport type { LayoutStore } from \"./LayoutStore.js\";\nimport { LayoutStoreContext, useLayout } from \"./LayoutStore.js\";\n\n/** @internal */\nexport type NineZoneDispatch = (action: NineZoneAction) => void;\n\n/** @internal */\nexport interface NineZoneProps {\n children?: React.ReactNode;\n dispatch: NineZoneDispatch;\n layout: LayoutStore;\n labels?: NineZoneLabels;\n toolSettingsContent?: React.ReactNode;\n widgetContent?: React.ReactNode;\n tab?: React.ReactNode;\n floatingWidget?: React.ReactNode;\n showWidgetIcon?: boolean;\n autoCollapseUnpinnedPanels?: boolean;\n animateDockedToolSettings?: boolean;\n uiIsVisible?: boolean;\n}\n\n/** @internal */\nexport interface NineZoneLabels {\n moreWidgetsTitle?: string;\n moreToolSettingsTitle?: string;\n resizeGripTitle?: string;\n toolSettingsHandleTitle?: string;\n}\n\n/** @internal */\nexport function NineZone(props: NineZoneProps) {\n const { children, ...providerProps } = props;\n const measurerRef = React.useRef<HTMLDivElement>(null);\n const measure = React.useCallback<() => Rectangle>(() => {\n assert(!!measurerRef.current);\n return Rectangle.create(measurerRef.current.getBoundingClientRect());\n }, []);\n return (\n <NineZoneProvider measure={measure} {...providerProps}>\n <Measurer ref={measurerRef} />\n {children}\n </NineZoneProvider>\n );\n}\n\n/** @internal */\nexport interface NineZoneProviderProps extends NineZoneProps {\n measure: () => Rectangle;\n}\n\nconst tab = <WidgetTab />;\nconst floatingWidget = <FloatingWidget />;\n\n/** @internal */\nexport function NineZoneProvider(props: NineZoneProviderProps) {\n return (\n <LayoutStoreContext.Provider value={props.layout}>\n <NineZoneDispatchContext.Provider value={props.dispatch}>\n <NineZoneLabelsContext.Provider value={props.labels}>\n <UiIsVisibleContext.Provider value={!!props.uiIsVisible}>\n <ShowWidgetIconContext.Provider value={!!props.showWidgetIcon}>\n <AutoCollapseUnpinnedPanelsContext.Provider\n value={!!props.autoCollapseUnpinnedPanels}\n >\n <WidgetContentNodeContext.Provider value={props.widgetContent}>\n <ToolSettingsNodeContext.Provider\n value={props.toolSettingsContent}\n >\n <TabNodeContext.Provider value={props.tab || tab}>\n <FloatingWidgetNodeContext.Provider\n value={props.floatingWidget || floatingWidget}\n >\n <AnimateDockedToolSettingsContext.Provider\n value={!!props.animateDockedToolSettings}\n >\n <DragProvider>\n <CursorTypeProvider>\n <WidgetContentManager>\n <MeasureContext.Provider value={props.measure}>\n {props.children}\n </MeasureContext.Provider>\n </WidgetContentManager>\n </CursorTypeProvider>\n </DragProvider>\n </AnimateDockedToolSettingsContext.Provider>\n </FloatingWidgetNodeContext.Provider>\n </TabNodeContext.Provider>\n </ToolSettingsNodeContext.Provider>\n </WidgetContentNodeContext.Provider>\n </AutoCollapseUnpinnedPanelsContext.Provider>\n </ShowWidgetIconContext.Provider>\n </UiIsVisibleContext.Provider>\n </NineZoneLabelsContext.Provider>\n </NineZoneDispatchContext.Provider>\n </LayoutStoreContext.Provider>\n );\n}\n\n/** @internal */\nexport const NineZoneDispatchContext = React.createContext<NineZoneDispatch>(\n null!\n);\nNineZoneDispatchContext.displayName = \"nz:NineZoneDispatchContext\";\n\n/** @internal */\nexport const NineZoneLabelsContext = React.createContext<\n NineZoneLabels | undefined\n>(undefined);\nNineZoneLabelsContext.displayName = \"nz:NineZoneLabelsContext\";\n\n/** @internal */\nexport const CursorTypeContext = React.createContext<CursorType | undefined>(\n undefined\n);\nCursorTypeContext.displayName = \"nz:CursorTypeContext\";\n\n/** @internal */\nexport const WidgetContentNodeContext =\n React.createContext<React.ReactNode>(undefined);\nWidgetContentNodeContext.displayName = \"nz:WidgetContentNodeContext\";\n\n/** @internal */\nexport const ShowWidgetIconContext = React.createContext<boolean>(false);\nShowWidgetIconContext.displayName = \"nz:ShowWidgetIconContext\";\n\n/** @internal */\nexport const AutoCollapseUnpinnedPanelsContext =\n React.createContext<boolean>(false);\nAutoCollapseUnpinnedPanelsContext.displayName =\n \"nz:AutoCollapseUnpinnedPanelsContext\";\n\n/** @internal */\nexport const AnimateDockedToolSettingsContext =\n React.createContext<boolean>(false);\nAnimateDockedToolSettingsContext.displayName =\n \"nz:AnimateDockedToolSettingsContext\";\n\n/** @internal */\nexport const ToolSettingsNodeContext =\n React.createContext<React.ReactNode>(undefined);\nToolSettingsNodeContext.displayName = \"nz:ToolSettingsNodeContext\";\n\n/** @internal */\nexport const TabNodeContext = React.createContext<React.ReactNode>(undefined);\nTabNodeContext.displayName = \"nz:TabNodeContext\";\n\n/** @internal */\nexport const FloatingWidgetNodeContext =\n React.createContext<React.ReactNode>(undefined);\nFloatingWidgetNodeContext.displayName = \"nz:FloatingWidgetNodeContext\";\n\n/** @internal */\nexport const MeasureContext = React.createContext<() => Rectangle>(null!);\nMeasureContext.displayName = \"nz:MeasureContext\";\n\n/** @internal */\nexport const UiIsVisibleContext = React.createContext<boolean>(false);\nUiIsVisibleContext.displayName = \"nz:UiIsVisibleContext\";\n\nfunction CursorTypeProvider(props: { children?: React.ReactNode }) {\n const draggedTab = useLayout((state) => !!state.draggedTab);\n const draggedWidgetId = React.useContext(DraggedWidgetIdContext);\n const draggedPanelSide = React.useContext(DraggedPanelSideContext);\n const draggedResizeHandle = React.useContext(DraggedResizeHandleContext);\n let type: CursorType | undefined;\n if (draggedTab || draggedWidgetId) type = \"grabbing\";\n else if (draggedPanelSide) type = sideToCursorType(draggedPanelSide);\n else if (draggedResizeHandle) type = handleToCursorType(draggedResizeHandle);\n return (\n <CursorTypeContext.Provider value={type}>\n {props.children}\n </CursorTypeContext.Provider>\n );\n}\n\nconst Measurer = React.forwardRef<HTMLDivElement>(function Measurer(_, ref) {\n const size = React.useRef<{ height?: number; width?: number }>({});\n const dispatch = React.useContext(NineZoneDispatchContext);\n const handleResize = React.useCallback(\n (width: number, height: number) => {\n if (size.current.width === width && size.current.height === height)\n return;\n size.current.height = height;\n size.current.width = width;\n dispatch({\n type: \"RESIZE\",\n size: {\n height,\n width,\n },\n });\n },\n [dispatch]\n );\n const roRef = useResizeObserver(handleResize);\n const refs = useRefs(ref, roRef);\n return (\n <div\n ref={refs}\n style={{\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n top: \"0\",\n left: \"0\",\n visibility: \"hidden\",\n }}\n />\n );\n});\n\n/** @internal */\nexport function sideToCursorType(side: PanelSide): CursorType {\n switch (side) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n }\n}\n\n/** @internal */\nexport function handleToCursorType(\n handle: FloatingWidgetResizeHandle\n): CursorType {\n switch (handle) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n case \"topLeft\":\n case \"bottomRight\":\n return \"nwse-resize\";\n case \"topRight\":\n case \"bottomLeft\":\n return \"nesw-resize\";\n }\n}\n\n/** @internal */\nexport function getUniqueId() {\n return Guid.createValue();\n}\n\n/** @internal */\nexport function useLabel(labelKey: keyof NineZoneLabels) {\n const labels = React.useContext(NineZoneLabelsContext);\n return labels?.[labelKey];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Dock.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Dock.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,gBAAgB;AAChB,wBAAgB,IAAI,sBAcnB;AAED,gBAAgB;AAChB,wBAAgB,OAAO,YAItB"}
1
+ {"version":3,"file":"Dock.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Dock.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,gBAAgB;AAChB,wBAAgB,IAAI,sBAenB;AAED,gBAAgB;AAChB,wBAAgB,OAAO,YAItB"}
@@ -7,15 +7,17 @@
7
7
  */
8
8
  import * as React from "react";
9
9
  import { SvgDockTop } from "@itwin/itwinui-icons-react";
10
- import { NineZoneDispatchContext, useLabel } from "../base/NineZone.js";
11
- import { ActionButton } from "../../preview/widget-action-dropdown/Button.js";
10
+ import { NineZoneDispatchContext } from "../base/NineZone.js";
11
+ import { WidgetAction } from "./WidgetAction.js";
12
12
  import { useIsToolSettingsTab } from "./useIsToolSettingsTab.js";
13
13
  import { useIsMaximizedWidget } from "../../preview/enable-maximized-widget/useMaximizedWidget.js";
14
+ import { useTranslation } from "../../hooks/useTranslation.js";
14
15
  /** @internal */
15
16
  export function Dock() {
16
17
  const dispatch = React.useContext(NineZoneDispatchContext);
17
- const label = useLabel("dockToolSettingsTitle");
18
- return (React.createElement(ActionButton, { icon: React.createElement(SvgDockTop, null), label: label, onClick: () => {
18
+ const { translate } = useTranslation();
19
+ const label = translate("widget.tooltips.dockToolSettings");
20
+ return (React.createElement(WidgetAction, { icon: React.createElement(SvgDockTop, null), label: label, onClick: () => {
19
21
  dispatch({
20
22
  type: "TOOL_SETTINGS_DOCK",
21
23
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Dock.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Dock.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AAEnG,gBAAgB;AAChB,MAAM,UAAU,IAAI;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IAChD,OAAO,CACL,oBAAC,YAAY,IACX,IAAI,EAAE,oBAAC,UAAU,OAAG,EACpB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC;gBACP,IAAI,EAAE,oBAAoB;aAC3B,CAAC,CAAC;QACL,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,OAAO;IACrB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,OAAO,cAAc,IAAI,CAAC,iBAAiB,CAAC;AAC9C,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { SvgDockTop } from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext, useLabel } from \"../base/NineZone.js\";\nimport { ActionButton } from \"../../preview/widget-action-dropdown/Button.js\";\nimport { useIsToolSettingsTab } from \"./useIsToolSettingsTab.js\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\n\n/** @internal */\nexport function Dock() {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const label = useLabel(\"dockToolSettingsTitle\");\n return (\n <ActionButton\n icon={<SvgDockTop />}\n label={label}\n onClick={() => {\n dispatch({\n type: \"TOOL_SETTINGS_DOCK\",\n });\n }}\n />\n );\n}\n\n/** @internal */\nexport function useDock() {\n const isToolSettings = useIsToolSettingsTab();\n const isMaximizedWidget = useIsMaximizedWidget();\n return isToolSettings && !isMaximizedWidget;\n}\n"]}
1
+ {"version":3,"file":"Dock.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Dock.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,gBAAgB;AAChB,MAAM,UAAU,IAAI;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC5D,OAAO,CACL,oBAAC,YAAY,IACX,IAAI,EAAE,oBAAC,UAAU,OAAG,EACpB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC;gBACP,IAAI,EAAE,oBAAoB;aAC3B,CAAC,CAAC;QACL,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,OAAO;IACrB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,OAAO,cAAc,IAAI,CAAC,iBAAiB,CAAC;AAC9C,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { SvgDockTop } from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext } from \"../base/NineZone.js\";\nimport { WidgetAction } from \"./WidgetAction.js\";\nimport { useIsToolSettingsTab } from \"./useIsToolSettingsTab.js\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\nimport { useTranslation } from \"../../hooks/useTranslation.js\";\n\n/** @internal */\nexport function Dock() {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const { translate } = useTranslation();\n const label = translate(\"widget.tooltips.dockToolSettings\");\n return (\n <WidgetAction\n icon={<SvgDockTop />}\n label={label}\n onClick={() => {\n dispatch({\n type: \"TOOL_SETTINGS_DOCK\",\n });\n }}\n />\n );\n}\n\n/** @internal */\nexport function useDock() {\n const isToolSettings = useIsToolSettingsTab();\n const isMaximizedWidget = useIsMaximizedWidget();\n return isToolSettings && !isMaximizedWidget;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PinToggle.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PinToggle.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,gBAAgB;AAChB,wBAAgB,SAAS,sBAoBxB;AAED,gBAAgB;AAChB,wBAAgB,YAAY,YAI3B"}
1
+ {"version":3,"file":"PinToggle.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PinToggle.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,gBAAgB;AAChB,wBAAgB,SAAS,sBAqBxB;AAED,gBAAgB;AAChB,wBAAgB,YAAY,YAI3B"}
@@ -8,21 +8,23 @@
8
8
  import * as React from "react";
9
9
  import { assert } from "@itwin/core-bentley";
10
10
  import { SvgPin, SvgPinHollow } from "@itwin/itwinui-icons-react";
11
- import { NineZoneDispatchContext, useLabel } from "../base/NineZone.js";
11
+ import { NineZoneDispatchContext } from "../base/NineZone.js";
12
12
  import { PanelSideContext } from "../widget-panels/Panel.js";
13
13
  import { useLayout } from "../base/LayoutStore.js";
14
- import { ActionButton } from "../../preview/widget-action-dropdown/Button.js";
14
+ import { WidgetAction } from "./WidgetAction.js";
15
15
  import { useMainPanelWidgetId } from "./usePanelWidgetId.js";
16
16
  import { useIsMaximizedWidget } from "../../preview/enable-maximized-widget/useMaximizedWidget.js";
17
+ import { useTranslation } from "../../hooks/useTranslation.js";
17
18
  /** @internal */
18
19
  export function PinToggle() {
19
20
  const side = React.useContext(PanelSideContext);
20
21
  assert(!!side);
21
22
  const dispatch = React.useContext(NineZoneDispatchContext);
22
- const pinLabel = useLabel("pinPanelTitle");
23
- const unpinLabel = useLabel("unpinPanelTitle");
23
+ const { translate } = useTranslation();
24
+ const pinLabel = translate("widget.tooltips.pinPanel");
25
+ const unpinLabel = translate("widget.tooltips.unpinPanel");
24
26
  const pinned = useLayout((state) => state.panels[side].pinned);
25
- return (React.createElement(ActionButton, { icon: pinned ? React.createElement(SvgPin, null) : React.createElement(SvgPinHollow, null), label: pinned ? unpinLabel : pinLabel, onClick: () => {
27
+ return (React.createElement(WidgetAction, { icon: pinned ? React.createElement(SvgPin, null) : React.createElement(SvgPinHollow, null), label: pinned ? unpinLabel : pinLabel, onClick: () => {
26
28
  dispatch({
27
29
  side,
28
30
  type: "PANEL_TOGGLE_PINNED",
@@ -1 +1 @@
1
- {"version":3,"file":"PinToggle.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PinToggle.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AAEnG,gBAAgB;AAChB,MAAM,UAAU,SAAS;IACvB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;IAE/D,OAAO,CACL,oBAAC,YAAY,IACX,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAC,MAAM,OAAG,CAAC,CAAC,CAAC,oBAAC,YAAY,OAAG,EAC5C,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EACrC,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC;gBACP,IAAI;gBACJ,IAAI,EAAE,qBAAqB;aAC5B,CAAC,CAAC;QACL,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,YAAY;IAC1B,MAAM,iBAAiB,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAC;IACnD,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,OAAO,iBAAiB,IAAI,CAAC,iBAAiB,CAAC;AACjD,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { SvgPin, SvgPinHollow } from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext, useLabel } from \"../base/NineZone.js\";\nimport { PanelSideContext } from \"../widget-panels/Panel.js\";\nimport { useLayout } from \"../base/LayoutStore.js\";\nimport { ActionButton } from \"../../preview/widget-action-dropdown/Button.js\";\nimport { useMainPanelWidgetId } from \"./usePanelWidgetId.js\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\n\n/** @internal */\nexport function PinToggle() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const pinLabel = useLabel(\"pinPanelTitle\");\n const unpinLabel = useLabel(\"unpinPanelTitle\");\n const pinned = useLayout((state) => state.panels[side].pinned);\n\n return (\n <ActionButton\n icon={pinned ? <SvgPin /> : <SvgPinHollow />}\n label={pinned ? unpinLabel : pinLabel}\n onClick={() => {\n dispatch({\n side,\n type: \"PANEL_TOGGLE_PINNED\",\n });\n }}\n />\n );\n}\n\n/** @internal */\nexport function usePinToggle() {\n const isMainPanelWidget = !!useMainPanelWidgetId();\n const isMaximizedWidget = useIsMaximizedWidget();\n return isMainPanelWidget && !isMaximizedWidget;\n}\n"]}
1
+ {"version":3,"file":"PinToggle.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PinToggle.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,gBAAgB;AAChB,MAAM,UAAU,SAAS;IACvB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,SAAS,CAAC,4BAA4B,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;IAE/D,OAAO,CACL,oBAAC,YAAY,IACX,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAC,MAAM,OAAG,CAAC,CAAC,CAAC,oBAAC,YAAY,OAAG,EAC5C,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EACrC,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC;gBACP,IAAI;gBACJ,IAAI,EAAE,qBAAqB;aAC5B,CAAC,CAAC;QACL,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,YAAY;IAC1B,MAAM,iBAAiB,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAC;IACnD,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,OAAO,iBAAiB,IAAI,CAAC,iBAAiB,CAAC;AACjD,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { SvgPin, SvgPinHollow } from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext } from \"../base/NineZone.js\";\nimport { PanelSideContext } from \"../widget-panels/Panel.js\";\nimport { useLayout } from \"../base/LayoutStore.js\";\nimport { WidgetAction } from \"./WidgetAction.js\";\nimport { useMainPanelWidgetId } from \"./usePanelWidgetId.js\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\nimport { useTranslation } from \"../../hooks/useTranslation.js\";\n\n/** @internal */\nexport function PinToggle() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const { translate } = useTranslation();\n const pinLabel = translate(\"widget.tooltips.pinPanel\");\n const unpinLabel = translate(\"widget.tooltips.unpinPanel\");\n const pinned = useLayout((state) => state.panels[side].pinned);\n\n return (\n <WidgetAction\n icon={pinned ? <SvgPin /> : <SvgPinHollow />}\n label={pinned ? unpinLabel : pinLabel}\n onClick={() => {\n dispatch({\n side,\n type: \"PANEL_TOGGLE_PINNED\",\n });\n }}\n />\n );\n}\n\n/** @internal */\nexport function usePinToggle() {\n const isMainPanelWidget = !!useMainPanelWidgetId();\n const isMaximizedWidget = useIsMaximizedWidget();\n return isMainPanelWidget && !isMaximizedWidget;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PopoutToggle.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PopoutToggle.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,gBAAgB;AAChB,wBAAgB,YAAY,sBAiB3B;AAED,gBAAgB;AAChB,wBAAgB,eAAe,YAM9B"}
1
+ {"version":3,"file":"PopoutToggle.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PopoutToggle.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,gBAAgB;AAChB,wBAAgB,YAAY,sBAkB3B;AAED,gBAAgB;AAChB,wBAAgB,eAAe,YAM9B"}