@itwin/appui-react 3.2.0-dev.22 → 3.2.0-dev.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -1
- package/lib/cjs/appui-react/backstage/BackstageComposerItem.d.ts.map +1 -1
- package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +4 -2
- package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/Frontstage.d.ts +5 -0
- package/lib/cjs/appui-react/frontstage/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/Frontstage.js +9 -1
- package/lib/cjs/appui-react/frontstage/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageComposer.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageComposer.js +2 -0
- package/lib/cjs/appui-react/frontstage/FrontstageComposer.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js +9 -4
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanel.d.ts +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanel.d.ts.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanel.js.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts +6 -4
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +6 -10
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/Indicator.d.ts +3 -3
- package/lib/cjs/appui-react/statusfields/Indicator.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/Indicator.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +2 -2
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +4 -3
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/utils/PropsHelper.d.ts +3 -1
- package/lib/cjs/appui-react/utils/PropsHelper.d.ts.map +1 -1
- package/lib/cjs/appui-react/utils/PropsHelper.js +10 -0
- package/lib/cjs/appui-react/utils/PropsHelper.js.map +1 -1
- package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/utils/UiShowHideManager.js +1 -0
- package/lib/cjs/appui-react/utils/UiShowHideManager.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +17 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +124 -123
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.scss +10 -0
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +8 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js +13 -3
- package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetHost.d.ts +1 -1
- package/lib/cjs/appui-react/widgets/WidgetHost.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetHost.js +56 -7
- package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetManager.js +1 -0
- package/lib/cjs/appui-react/widgets/WidgetManager.js.map +1 -1
- package/lib/esm/appui-react/backstage/BackstageComposerItem.d.ts.map +1 -1
- package/lib/esm/appui-react/backstage/BackstageComposerItem.js +5 -3
- package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
- package/lib/esm/appui-react/frontstage/Frontstage.d.ts +5 -0
- package/lib/esm/appui-react/frontstage/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/Frontstage.js +7 -0
- package/lib/esm/appui-react/frontstage/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageComposer.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageComposer.js +2 -0
- package/lib/esm/appui-react/frontstage/FrontstageComposer.js.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.js +9 -4
- package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanel.d.ts +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanel.d.ts.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanel.js.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts +6 -4
- package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js +6 -10
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/esm/appui-react/statusfields/Indicator.d.ts +3 -3
- package/lib/esm/appui-react/statusfields/Indicator.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/Indicator.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +2 -2
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +4 -3
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/utils/PropsHelper.d.ts +3 -1
- package/lib/esm/appui-react/utils/PropsHelper.d.ts.map +1 -1
- package/lib/esm/appui-react/utils/PropsHelper.js +11 -1
- package/lib/esm/appui-react/utils/PropsHelper.js.map +1 -1
- package/lib/esm/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
- package/lib/esm/appui-react/utils/UiShowHideManager.js +1 -0
- package/lib/esm/appui-react/utils/UiShowHideManager.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +17 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +125 -124
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.scss +10 -0
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts +8 -1
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js +13 -3
- package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetHost.d.ts +1 -1
- package/lib/esm/appui-react/widgets/WidgetHost.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetHost.js +56 -7
- package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetManager.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetManager.js +1 -0
- package/lib/esm/appui-react/widgets/WidgetManager.js.map +1 -1
- package/package.json +33 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Frontstage.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/** @packageDocumentation\r\n * @module Frontstage\r\n */\r\n\r\n// cSpell:ignore popout\r\n\r\nimport \"./Frontstage.scss\";\r\nimport produce, { castDraft, Draft } from \"immer\";\r\nimport * as React from \"react\";\r\nimport { assert, Logger, ProcessDetector } from \"@itwin/core-bentley\";\r\nimport { StagePanelLocation, UiItemsManager, WidgetState } from \"@itwin/appui-abstract\";\r\nimport { Size, SizeProps, UiStateStorageResult, UiStateStorageStatus } from \"@itwin/core-react\";\r\nimport { ToolbarPopupAutoHideContext } from \"@itwin/components-react\";\r\nimport {\r\n addPanelWidget, addTab, addWidgetTabToFloatingPanel, convertAllPopupWidgetContainersToFloating, createNineZoneState, createTabsState, createTabState,\r\n createWidgetState, findTab, findWidget, floatingWidgetBringToFront, FloatingWidgetHomeState, FloatingWidgets, getUniqueId, isFloatingLocation,\r\n isHorizontalPanelSide, NineZone, NineZoneActionTypes, NineZoneDispatch, NineZoneLabels, NineZoneState,\r\n NineZoneStateReducer, PanelSide, panelSides, PanelState, removeTab, TabState, toolSettingsTabId, WidgetPanels,\r\n} from \"@itwin/appui-layout-react\";\r\nimport { useActiveFrontstageDef } from \"../frontstage/Frontstage\";\r\nimport { FrontstageDef, FrontstageEventArgs, FrontstageNineZoneStateChangedEventArgs } from \"../frontstage/FrontstageDef\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { StagePanelMaxSizeSpec } from \"../stagepanels/StagePanel\";\r\nimport { StagePanelState, StagePanelZoneDefKeys } from \"../stagepanels/StagePanelDef\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\r\nimport { WidgetDef, WidgetEventArgs, WidgetStateChangedEventArgs } from \"../widgets/WidgetDef\";\r\nimport { ZoneState } from \"../zones/ZoneDef\";\r\nimport { WidgetContent } from \"./Content\";\r\nimport { WidgetPanelsFrontstageContent } from \"./FrontstageContent\";\r\nimport { ModalFrontstageComposer, useActiveModalFrontstageInfo } from \"./ModalFrontstageComposer\";\r\nimport { WidgetPanelsStatusBar } from \"./StatusBar\";\r\nimport { WidgetPanelsTab } from \"./Tab\";\r\nimport { WidgetPanelsToolbars } from \"./Toolbars\";\r\nimport { ToolSettingsContent, WidgetPanelsToolSettings } from \"./ToolSettings\";\r\nimport { useEscapeSetFocusToHome } from \"../hooks/useEscapeSetFocusToHome\";\r\nimport { FrameworkRootState } from \"../redux/StateManager\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useUiVisibility } from \"../hooks/useUiVisibility\";\r\n\r\nconst panelZoneKeys: StagePanelZoneDefKeys[] = [\"start\", \"middle\", \"end\"];\r\n\r\n// istanbul ignore next\r\nconst WidgetPanelsFrontstageComponent = React.memo(function WidgetPanelsFrontstageComponent() { // eslint-disable-line @typescript-eslint/naming-convention, no-shadow\r\n const activeModalFrontstageInfo = useActiveModalFrontstageInfo();\r\n const uiIsVisible = useUiVisibility();\r\n\r\n return (\r\n <>\r\n <ToolbarPopupAutoHideContext.Provider value={!uiIsVisible}>\r\n <ModalFrontstageComposer stageInfo={activeModalFrontstageInfo} />\r\n <WidgetPanelsToolSettings />\r\n <WidgetPanels\r\n className=\"uifw-widgetPanels\"\r\n centerContent={<WidgetPanelsToolbars />}\r\n >\r\n <WidgetPanelsFrontstageContent />\r\n </WidgetPanels>\r\n <WidgetPanelsStatusBar />\r\n <FloatingWidgets />\r\n </ToolbarPopupAutoHideContext.Provider>\r\n </>\r\n );\r\n});\r\n\r\nconst widgetContent = <WidgetContent />;\r\nconst toolSettingsContent = <ToolSettingsContent />;\r\nconst widgetPanelsFrontstage = <WidgetPanelsFrontstageComponent />;\r\n\r\n/** @internal */\r\nexport function useNineZoneState(frontstageDef: FrontstageDef) {\r\n const lastFrontstageDef = React.useRef(frontstageDef);\r\n const [nineZone, setNineZone] = React.useState(frontstageDef.nineZoneState);\r\n React.useEffect(() => {\r\n setNineZone(frontstageDef.nineZoneState);\r\n lastFrontstageDef.current = frontstageDef;\r\n }, [frontstageDef]);\r\n React.useEffect(() => {\r\n const listener = (args: FrontstageNineZoneStateChangedEventArgs) => {\r\n if (args.frontstageDef !== frontstageDef || frontstageDef.isStageClosing || frontstageDef.isApplicationClosing)\r\n return;\r\n setNineZone(args.state);\r\n };\r\n return FrontstageManager.onFrontstageNineZoneStateChangedEvent.addListener(listener);\r\n }, [frontstageDef]);\r\n return lastFrontstageDef.current === frontstageDef ? nineZone : frontstageDef.nineZoneState;\r\n}\r\n\r\n/** @returns Defined NineZoneState with fallback to last defined and default NineZoneState.\r\n * @internal\r\n */\r\nfunction useCachedNineZoneState(nineZone: NineZoneState | undefined): NineZoneState {\r\n const cached = React.useRef<NineZoneState>(nineZone || defaultNineZone);\r\n React.useEffect(() => {\r\n if (nineZone)\r\n cached.current = nineZone;\r\n }, [nineZone]);\r\n return nineZone || cached.current;\r\n}\r\n\r\n/** Update in-memory NineZoneState of newly activated frontstage with up to date size.\r\n * @internal\r\n */\r\nexport function useUpdateNineZoneSize(frontstageDef: FrontstageDef) {\r\n React.useEffect(() => {\r\n const size = FrontstageManager.nineZoneSize;\r\n let state = frontstageDef.nineZoneState;\r\n if (!size || !state)\r\n return;\r\n state = FrameworkStateReducer(state, {\r\n type: \"RESIZE\",\r\n size: {\r\n height: size.height,\r\n width: size.width,\r\n },\r\n }, frontstageDef);\r\n frontstageDef.nineZoneState = state;\r\n }, [frontstageDef]);\r\n}\r\n\r\nfunction FrameworkStateReducer(state: NineZoneState, action: NineZoneActionTypes, frontstageDef: FrontstageDef) {\r\n state = NineZoneStateReducer(state, action);\r\n if (action.type === \"RESIZE\") {\r\n state = produce(state, (draft) => {\r\n for (const panelSide of panelSides) {\r\n const panel = draft.panels[panelSide];\r\n const location = toStagePanelLocation(panelSide);\r\n const panelDef = frontstageDef.getStagePanelDef(location);\r\n if (panelDef?.maxSizeSpec) {\r\n panel.maxSize = getPanelMaxSize(panelDef.maxSizeSpec, panelSide, action.size);\r\n if (panel.size) {\r\n panel.size = Math.min(Math.max(panel.size, panel.minSize), panel.maxSize);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n return state;\r\n}\r\n\r\n/** @internal */\r\nexport function useNineZoneDispatch(frontstageDef: FrontstageDef) {\r\n const dispatch = React.useCallback<NineZoneDispatch>((action) => {\r\n if (action.type === \"RESIZE\") {\r\n FrontstageManager.nineZoneSize = Size.create(action.size);\r\n }\r\n // istanbul ignore if\r\n if (action.type === \"TOOL_SETTINGS_DRAG_START\") {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n UiFramework.postTelemetry(\"Tool Settings Undocking\", \"28B04E07-AE73-4533-A0BA-8E2A8DC99ADF\");\r\n }\r\n // istanbul ignore if\r\n if (action.type === \"TOOL_SETTINGS_DOCK\") {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n UiFramework.postTelemetry(\"Tool Settings Docking to Settings Bar\", \"BEDE684B-B3DB-4637-B3AF-DC3CBA223F94\");\r\n }\r\n if (action.type === \"WIDGET_TAB_POPOUT\") {\r\n const tabId = action.id;\r\n frontstageDef.popoutWidget(tabId);\r\n return;\r\n }\r\n if (action.type === \"FLOATING_WIDGET_SET_BOUNDS\") {\r\n frontstageDef.setFloatingWidgetBoundsInternal(action.id, action.bounds, true);\r\n return;\r\n }\r\n const nineZoneState = frontstageDef.nineZoneState;\r\n if (!nineZoneState)\r\n return;\r\n frontstageDef.nineZoneState = FrameworkStateReducer(nineZoneState, action, frontstageDef);\r\n }, [frontstageDef]);\r\n return dispatch;\r\n}\r\n\r\n/** @internal */\r\nexport const WidgetPanelsFrontstage = React.memo(function WidgetPanelsFrontstage() { // eslint-disable-line @typescript-eslint/naming-convention, no-shadow\r\n const frontstageDef = useActiveFrontstageDef();\r\n\r\n React.useEffect(() => {\r\n const triggerWidowCloseProcessing = () => {\r\n frontstageDef && frontstageDef.setIsApplicationClosing(true);\r\n };\r\n\r\n frontstageDef && frontstageDef.setIsApplicationClosing(false);\r\n\r\n window.addEventListener(\"beforeunload\", triggerWidowCloseProcessing);\r\n return () => {\r\n window.removeEventListener(\"beforeunload\", triggerWidowCloseProcessing);\r\n };\r\n }, [frontstageDef]);\r\n\r\n if (!frontstageDef)\r\n return null;\r\n return (\r\n <ActiveFrontstageDefProvider frontstageDef={frontstageDef} />\r\n );\r\n});\r\n\r\nconst defaultNineZone = createNineZoneState();\r\nconst tabElement = <WidgetPanelsTab />;\r\n\r\n/** @internal */\r\nexport function ActiveFrontstageDefProvider({ frontstageDef }: { frontstageDef: FrontstageDef }) {\r\n let nineZone = useNineZoneState(frontstageDef);\r\n nineZone = useCachedNineZoneState(nineZone);\r\n const dispatch = useNineZoneDispatch(frontstageDef);\r\n useUpdateNineZoneSize(frontstageDef);\r\n useSavedFrontstageState(frontstageDef);\r\n useSaveFrontstageSettings(frontstageDef);\r\n useFrontstageManager(frontstageDef);\r\n useItemsManager(frontstageDef);\r\n const labels = useLabels();\r\n const showWidgetIcon = useSelector((state: FrameworkRootState) => {\r\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\r\n return !!frameworkState.configurableUiState.showWidgetIcon;\r\n });\r\n\r\n const handleKeyDown = useEscapeSetFocusToHome();\r\n return (\r\n <div\r\n className=\"uifw-widgetPanels-frontstage\"\r\n onKeyDown={handleKeyDown}\r\n role=\"presentation\"\r\n >\r\n <NineZone\r\n dispatch={dispatch}\r\n labels={labels}\r\n state={nineZone}\r\n tab={tabElement}\r\n showWidgetIcon={showWidgetIcon}\r\n toolSettingsContent={toolSettingsContent}\r\n widgetContent={widgetContent}\r\n >\r\n {widgetPanelsFrontstage}\r\n </NineZone>\r\n </div>\r\n );\r\n}\r\n\r\n/** @internal */\r\nexport function useLabels() {\r\n return React.useMemo<NineZoneLabels>(() => ({\r\n dockToolSettingsTitle: UiFramework.translate(\"widget.tooltips.dockToolSettings\"),\r\n moreWidgetsTitle: UiFramework.translate(\"widget.tooltips.moreWidgets\"),\r\n moreToolSettingsTitle: UiFramework.translate(\"widget.tooltips.moreToolSettings\"),\r\n pinPanelTitle: UiFramework.translate(\"widget.tooltips.pinPanel\"),\r\n resizeGripTitle: UiFramework.translate(\"widget.tooltips.resizeGrip\"),\r\n sendWidgetHomeTitle: UiFramework.translate(\"widget.tooltips.sendHome\"),\r\n toolSettingsHandleTitle: UiFramework.translate(\"widget.tooltips.toolSettingsHandle\"),\r\n unpinPanelTitle: UiFramework.translate(\"widget.tooltips.unpinPanel\"),\r\n popoutActiveTab: UiFramework.translate(\"widget.tooltips.popoutActiveTab\"),\r\n }), []);\r\n}\r\n\r\n/** @internal */\r\nexport function addWidgets(state: NineZoneState, widgets: ReadonlyArray<WidgetDef>, side: PanelSide, widgetId: WidgetIdTypes): NineZoneState {\r\n const visibleWidgets = widgets.filter((w) => w.isVisible && (w.defaultState !== WidgetState.Floating));\r\n if (visibleWidgets.length === 0)\r\n return state;\r\n\r\n const tabs = new Array<string>();\r\n for (const widget of visibleWidgets) {\r\n const label = getWidgetLabel(widget.label);\r\n state = addTab(state, widget.id, {\r\n label,\r\n iconSpec: widget.iconSpec,\r\n preferredPanelWidgetSize: widget.preferredPanelSize,\r\n canPopout: widget.canPopout,\r\n isFloatingStateWindowResizable: widget.isFloatingStateWindowResizable,\r\n });\r\n tabs.push(widget.id);\r\n }\r\n\r\n const activeWidget = visibleWidgets.find((widget) => widget.isActive);\r\n const minimized = !activeWidget;\r\n // istanbul ignore else\r\n if (activeWidget?.defaultState !== WidgetState.Floating) {\r\n state = addPanelWidget(state, side, widgetId, tabs, {\r\n activeTabId: activeWidget ? activeWidget.id : tabs[0],\r\n minimized,\r\n });\r\n }\r\n\r\n return state;\r\n}\r\n\r\n/** @internal */\r\n// istanbul ignore next\r\nexport function appendWidgets(state: NineZoneState, widgetDefs: ReadonlyArray<WidgetDef>, side: PanelSide, preferredWidgetIndex: number): NineZoneState {\r\n if (widgetDefs.length === 0)\r\n return state;\r\n\r\n // Add new tabs.\r\n const tabs = new Array<string>();\r\n for (const widgetDef of widgetDefs) {\r\n const label = getWidgetLabel(widgetDef.label);\r\n const saveTab = state.tabs[widgetDef.id];\r\n const preferredPanelWidgetSize = saveTab ? saveTab.preferredPanelWidgetSize : widgetDef.preferredPanelSize;\r\n const preferredFloatingWidgetSize = saveTab ? saveTab.preferredFloatingWidgetSize : undefined;\r\n const preferredPopoutWidgetSize = saveTab ? saveTab.preferredPopoutWidgetSize : undefined;\r\n const userSized = saveTab ? saveTab.userSized : undefined;\r\n state = addTab(state, widgetDef.id, {\r\n label,\r\n iconSpec: widgetDef.iconSpec,\r\n canPopout: widgetDef.canPopout,\r\n preferredPanelWidgetSize,\r\n preferredFloatingWidgetSize,\r\n preferredPopoutWidgetSize,\r\n userSized,\r\n isFloatingStateWindowResizable: widgetDef.isFloatingStateWindowResizable,\r\n });\r\n if (widgetDef.isFloatingStateSupported && widgetDef.defaultState === WidgetState.Floating) {\r\n const floatingContainerId = widgetDef.floatingContainerId ?? getUniqueId();\r\n const widgetContainerId = getWidgetId(side, panelZoneKeys[preferredWidgetIndex]);\r\n const homePanelInfo: FloatingWidgetHomeState = { side, widgetId: widgetContainerId, widgetIndex: 0 };\r\n const preferredPosition = widgetDef.defaultFloatingPosition;\r\n state = addWidgetTabToFloatingPanel(state, floatingContainerId, widgetDef.id, homePanelInfo, preferredFloatingWidgetSize, preferredPosition, userSized, widgetDef.isFloatingStateWindowResizable);\r\n } else {\r\n tabs.push(widgetDef.id);\r\n }\r\n }\r\n\r\n if (tabs.length) {\r\n const panel = state.panels[side];\r\n preferredWidgetIndex = preferredWidgetIndex >= panel.maxWidgetCount ? panel.maxWidgetCount - 1 : preferredWidgetIndex;\r\n\r\n if (preferredWidgetIndex < panel.widgets.length) {\r\n // Append tabs to existing widget.\r\n const widgetId = panel.widgets[preferredWidgetIndex];\r\n state = produce(state, (draft) => {\r\n const widget = draft.widgets[widgetId];\r\n for (const tab of tabs) {\r\n widget.tabs.push(tab);\r\n }\r\n });\r\n } else {\r\n const newWidgetId = getNextAvailablePanelWidgetId(panel);\r\n const widget = createWidgetState(newWidgetId, tabs);\r\n state = produce(state, (draft) => {\r\n draft.panels[side].widgets.push(widget.id);\r\n draft.widgets[widget.id] = castDraft(widget);\r\n });\r\n }\r\n }\r\n\r\n return state;\r\n}\r\n\r\nfunction processPopoutWidgets(initialState: NineZoneState, frontstageDef: FrontstageDef): NineZoneState {\r\n // istanbul ignore next\r\n if (!initialState.popoutWidgets)\r\n return initialState;\r\n\r\n // istanbul ignore next - not unit testing electron case that reopens popout windows\r\n if (initialState.popoutWidgets && ProcessDetector.isElectronAppFrontend) {\r\n if (initialState.popoutWidgets.allIds.length && ProcessDetector.isElectronAppFrontend) {\r\n for (const widgetContainerId of initialState.popoutWidgets.allIds) {\r\n frontstageDef.openPopoutWidgetContainer(initialState, widgetContainerId);\r\n }\r\n }\r\n return initialState;\r\n }\r\n\r\n return convertAllPopupWidgetContainersToFloating(initialState);\r\n}\r\n\r\n/** Adds frontstageDef widgets that are missing in NineZoneState.\r\n * @internal\r\n */\r\nexport function addMissingWidgets(frontstageDef: FrontstageDef, initialState: NineZoneState): NineZoneState {\r\n let state = initialState;\r\n\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.centerLeft?.widgetDefs, initialState), \"left\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.leftPanel?.panelZones.start.widgetDefs, initialState), \"left\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomLeft?.widgetDefs, initialState), \"left\", 1);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.leftPanel?.panelZones.middle.widgetDefs, initialState), \"left\", 1);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.leftPanel?.panelWidgetDefs, initialState), \"left\", 2);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.leftPanel?.panelZones.end.widgetDefs, initialState), \"left\", 2);\r\n\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.centerRight?.widgetDefs, initialState), \"right\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.rightPanel?.panelZones.start.widgetDefs, initialState), \"right\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomRight?.widgetDefs, initialState), \"right\", 1);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.rightPanel?.panelZones.middle.widgetDefs, initialState), \"right\", 1);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.rightPanel?.panelWidgetDefs, initialState), \"right\", 2);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.rightPanel?.panelZones.end.widgetDefs, initialState), \"right\", 2);\r\n\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.topPanel?.panelWidgetDefs, initialState), \"top\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.topPanel?.panelZones.start.widgetDefs, initialState), \"top\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.topMostPanel?.panelWidgetDefs, initialState), \"top\", 1); // eslint-disable-line deprecation/deprecation\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.topPanel?.panelZones.end.widgetDefs, initialState), \"top\", 1);\r\n\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomPanel?.panelWidgetDefs, initialState), \"bottom\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomPanel?.panelZones.start.widgetDefs, initialState), \"bottom\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomMostPanel?.panelWidgetDefs, initialState), \"bottom\", 1); // eslint-disable-line deprecation/deprecation\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomPanel?.panelZones.end.widgetDefs, initialState), \"bottom\", 1);\r\n\r\n return state;\r\n}\r\n\r\n/** Removes widgets with Hidden defaultState. */\r\nfunction removeHiddenWidgets(state: NineZoneState, frontstageDef: FrontstageDef): NineZoneState {\r\n const tabs = Object.values(state.tabs);\r\n for (const tab of tabs) {\r\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\r\n if (!widgetDef)\r\n continue;\r\n\r\n if (widgetDef.defaultState === WidgetState.Hidden) {\r\n state = produce(state, (draft) => {\r\n hideWidget(draft, widgetDef);\r\n });\r\n }\r\n }\r\n\r\n return state;\r\n}\r\n\r\n/** Removes NineZoneState widgets that are missing in frontstageDef.\r\n * @internal\r\n */\r\nexport function removeMissingWidgets(frontstageDef: FrontstageDef, initialState: NineZoneState): NineZoneState {\r\n const state = produce(initialState, (draft) => {\r\n for (const [, tab] of Object.entries(draft.tabs)) {\r\n if (tab.id === toolSettingsTabId)\r\n continue;\r\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\r\n if (widgetDef)\r\n continue;\r\n removeTab(draft, tab.id);\r\n }\r\n });\r\n return state;\r\n}\r\n\r\nfunction getWidgetLabel(label: string) {\r\n return label === \"\" ? \"Widget\" : label;\r\n}\r\n\r\ntype WidgetIdTypes =\r\n \"leftStart\" |\r\n \"leftMiddle\" |\r\n \"leftEnd\" |\r\n \"rightStart\" |\r\n \"rightMiddle\" |\r\n \"rightEnd\" |\r\n \"topStart\" |\r\n \"topEnd\" |\r\n \"bottomStart\" |\r\n \"bottomEnd\";\r\n\r\nfunction toStagePanelLocation(side: PanelSide): StagePanelLocation {\r\n switch (side) {\r\n case \"bottom\":\r\n return StagePanelLocation.Bottom;\r\n case \"left\":\r\n return StagePanelLocation.Left;\r\n case \"right\":\r\n return StagePanelLocation.Right;\r\n case \"top\":\r\n return StagePanelLocation.Top;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getWidgetId(side: PanelSide, key: StagePanelZoneDefKeys): WidgetIdTypes {\r\n switch (side) {\r\n case \"left\": {\r\n if (key === \"start\") {\r\n return \"leftStart\";\r\n } else if (key === \"middle\") {\r\n return \"leftMiddle\";\r\n }\r\n return \"leftEnd\";\r\n }\r\n case \"right\": {\r\n if (key === \"start\") {\r\n return \"rightStart\";\r\n } else if (key === \"middle\") {\r\n return \"rightMiddle\";\r\n }\r\n return \"rightEnd\";\r\n }\r\n case \"top\": {\r\n if (key === \"start\") {\r\n return \"topStart\";\r\n }\r\n return \"topEnd\";\r\n }\r\n case \"bottom\": {\r\n if (key === \"start\")\r\n return \"bottomStart\";\r\n return \"bottomEnd\";\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nfunction getNextAvailablePanelWidgetId(panel: PanelState) {\r\n const index = panel.widgets.length;\r\n return getWidgetId(panel.side, panelZoneKeys[index]);\r\n}\r\n\r\nfunction isVerticalPanelSide(side: PanelSide) { return !isHorizontalPanelSide(side); }\r\n\r\n/** @internal */\r\nexport function getPanelZoneWidgets(frontstageDef: FrontstageDef, panelZone: WidgetIdTypes): WidgetDef[] {\r\n switch (panelZone) {\r\n case \"leftStart\": {\r\n return [\r\n ...frontstageDef.centerLeft?.widgetDefs || [],\r\n ...frontstageDef.leftPanel?.panelZones.start.widgetDefs || [],\r\n ];\r\n }\r\n case \"leftMiddle\": {\r\n return [\r\n ...frontstageDef.bottomLeft?.widgetDefs || [],\r\n ...frontstageDef.leftPanel?.panelZones.middle.widgetDefs || [],\r\n ];\r\n }\r\n case \"leftEnd\": {\r\n return [\r\n ...frontstageDef.leftPanel?.panelWidgetDefs || [],\r\n ...frontstageDef.leftPanel?.panelZones.end.widgetDefs || [],\r\n ];\r\n }\r\n case \"rightStart\": {\r\n return [\r\n ...frontstageDef.centerRight?.widgetDefs || [],\r\n ...frontstageDef.rightPanel?.panelZones.start.widgetDefs || [],\r\n ];\r\n }\r\n case \"rightMiddle\": {\r\n return [\r\n ...frontstageDef.bottomRight?.widgetDefs || [],\r\n ...frontstageDef.rightPanel?.panelZones.middle.widgetDefs || [],\r\n ];\r\n }\r\n case \"rightEnd\": {\r\n return [\r\n ...frontstageDef.rightPanel?.panelWidgetDefs || [],\r\n ...frontstageDef.rightPanel?.panelZones.end.widgetDefs || [],\r\n ];\r\n }\r\n case \"topStart\": {\r\n return [\r\n ...frontstageDef.topPanel?.panelWidgetDefs || [],\r\n ...frontstageDef.topPanel?.panelZones.start.widgetDefs || [],\r\n ];\r\n }\r\n case \"topEnd\": {\r\n return [\r\n ...frontstageDef.topMostPanel?.panelWidgetDefs || [], // eslint-disable-line deprecation/deprecation\r\n ...frontstageDef.topPanel?.panelZones.end.widgetDefs || [],\r\n ];\r\n }\r\n case \"bottomStart\": {\r\n return [\r\n ...frontstageDef.bottomPanel?.panelWidgetDefs || [],\r\n ...frontstageDef.bottomPanel?.panelZones.start.widgetDefs || [],\r\n ];\r\n }\r\n case \"bottomEnd\": {\r\n return [\r\n ...frontstageDef.bottomMostPanel?.panelWidgetDefs || [], // eslint-disable-line deprecation/deprecation\r\n ...frontstageDef.bottomPanel?.panelZones.end.widgetDefs || [],\r\n ];\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addPanelWidgets(\r\n state: NineZoneState,\r\n frontstageDef: FrontstageDef,\r\n side: PanelSide,\r\n): NineZoneState {\r\n const start = getWidgetId(side, \"start\");\r\n const startWidgets = getPanelZoneWidgets(frontstageDef, start);\r\n state = addWidgets(state, startWidgets, side, start);\r\n\r\n if (isVerticalPanelSide(side)) {\r\n const middle = getWidgetId(side, \"middle\");\r\n const middleWidgets = getPanelZoneWidgets(frontstageDef, middle);\r\n state = addWidgets(state, middleWidgets, side, middle);\r\n }\r\n\r\n const end = getWidgetId(side, \"end\");\r\n const endWidgets = getPanelZoneWidgets(frontstageDef, end);\r\n state = addWidgets(state, endWidgets, side, end);\r\n return state;\r\n}\r\n\r\n/** @internal */\r\nexport function isFrontstageStateSettingResult(settingsResult: UiStateStorageResult): settingsResult is { // eslint-disable-line deprecation/deprecation\r\n status: UiStateStorageStatus.Success;\r\n setting: WidgetPanelsFrontstageState;\r\n} {\r\n if (settingsResult.status === UiStateStorageStatus.Success)\r\n return true;\r\n return false;\r\n}\r\n\r\n/** @internal */\r\nexport function initializePanel(nineZone: NineZoneState, frontstageDef: FrontstageDef, panelSide: PanelSide) {\r\n nineZone = addPanelWidgets(nineZone, frontstageDef, panelSide);\r\n const location = toStagePanelLocation(panelSide);\r\n const panelDef = frontstageDef.getStagePanelDef(location);\r\n nineZone = produce(nineZone, (draft) => {\r\n const panel = draft.panels[panelSide];\r\n panel.minSize = panelDef?.minSize ?? panel.minSize;\r\n panel.pinned = panelDef?.pinned ?? panel.pinned;\r\n panel.resizable = panelDef?.resizable ?? panel.resizable;\r\n if (panelDef?.maxSizeSpec) {\r\n panel.maxSize = getPanelMaxSize(panelDef.maxSizeSpec, panelSide, nineZone.size);\r\n }\r\n\r\n const size = panelDef?.size;\r\n panel.size = size === undefined ? size : Math.min(Math.max(size, panel.minSize), panel.maxSize);\r\n });\r\n return nineZone;\r\n}\r\n\r\nfunction getPanelMaxSize(maxSizeSpec: StagePanelMaxSizeSpec, panel: PanelSide, nineZoneSize: SizeProps) {\r\n if (typeof maxSizeSpec === \"number\") {\r\n return maxSizeSpec;\r\n }\r\n const size = isHorizontalPanelSide(panel) ? nineZoneSize.height : nineZoneSize.width;\r\n return maxSizeSpec.percentage / 100 * size;\r\n}\r\n\r\nconst stateVersion = 11; // this needs to be bumped when NineZoneState is changed (to recreate layout).\r\n\r\n/** @internal */\r\nexport function initializeNineZoneState(frontstageDef: FrontstageDef): NineZoneState {\r\n let nineZone = defaultNineZone;\r\n nineZone = produce(nineZone, (stateDraft) => {\r\n // istanbul ignore next\r\n if (!FrontstageManager.nineZoneSize)\r\n return;\r\n stateDraft.size = {\r\n height: FrontstageManager.nineZoneSize.height,\r\n width: FrontstageManager.nineZoneSize.width,\r\n };\r\n });\r\n\r\n nineZone = initializePanel(nineZone, frontstageDef, \"left\");\r\n nineZone = initializePanel(nineZone, frontstageDef, \"right\");\r\n nineZone = initializePanel(nineZone, frontstageDef, \"top\");\r\n nineZone = initializePanel(nineZone, frontstageDef, \"bottom\");\r\n nineZone = produce(nineZone, (stateDraft) => {\r\n for (const [, panel] of Object.entries(stateDraft.panels)) {\r\n const expanded = panel.widgets.find((widgetId) => stateDraft.widgets[widgetId].minimized === false);\r\n const firstWidget = panel.widgets.length > 0 ? stateDraft.widgets[panel.widgets[0]] : undefined;\r\n if (!expanded && firstWidget) {\r\n firstWidget.minimized = false;\r\n }\r\n }\r\n stateDraft.panels.left.collapsed = isPanelCollapsed([\r\n frontstageDef.centerLeft?.zoneState,\r\n frontstageDef.bottomLeft?.zoneState,\r\n ], [frontstageDef.leftPanel?.panelState]);\r\n stateDraft.panels.right.collapsed = isPanelCollapsed([\r\n frontstageDef.centerRight?.zoneState,\r\n frontstageDef.bottomRight?.zoneState,\r\n ], [frontstageDef.rightPanel?.panelState]);\r\n stateDraft.panels.top.collapsed = isPanelCollapsed([], [\r\n // istanbul ignore next - ignore topMostPanel if topPanel is defined\r\n frontstageDef.topPanel ? frontstageDef.topPanel?.panelState : frontstageDef.topMostPanel?.panelState,// eslint-disable-line deprecation/deprecation\r\n ]);\r\n stateDraft.panels.bottom.collapsed = isPanelCollapsed([], [\r\n // istanbul ignore next - ignore bottomMostPanel if bottomPanel is defined\r\n frontstageDef.bottomPanel ? frontstageDef.bottomPanel?.panelState : frontstageDef.bottomMostPanel?.panelState, // eslint-disable-line deprecation/deprecation\r\n ]);\r\n\r\n const topCenterDef = frontstageDef.topCenter;\r\n const toolSettingsWidgetDef = topCenterDef?.getSingleWidgetDef();\r\n if (toolSettingsWidgetDef) {\r\n const toolSettingsTab = stateDraft.tabs[toolSettingsTabId];\r\n toolSettingsTab.preferredPanelWidgetSize = toolSettingsWidgetDef.preferredPanelSize;\r\n }\r\n });\r\n nineZone = addMissingWidgets(frontstageDef, nineZone);\r\n nineZone = removeHiddenWidgets(nineZone, frontstageDef);\r\n nineZone = processPopoutWidgets(nineZone, frontstageDef);\r\n\r\n return nineZone;\r\n}\r\n\r\n/** Converts from saved NineZoneState to NineZoneState.\r\n * @note Restores toolSettings tab.\r\n * @note Restores tab labels.\r\n * @internal\r\n */\r\nexport function restoreNineZoneState(frontstageDef: FrontstageDef, saved: SavedNineZoneState): NineZoneState {\r\n let restored: NineZoneState = {\r\n ...saved,\r\n tabs: createTabsState(),\r\n };\r\n restored = produce(restored, (draft) => {\r\n for (const [, tab] of Object.entries(saved.tabs)) {\r\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\r\n if (!widgetDef) {\r\n Logger.logInfo(UiFramework.loggerCategory(restoreNineZoneState), \"WidgetDef is not found for saved tab.\", () => ({\r\n frontstageId: frontstageDef.id,\r\n tabId: tab.id,\r\n }));\r\n removeTab(draft, tab.id);\r\n // let fall through so we preserve preferred sizes of widgets load via UiItemsProvider\r\n }\r\n draft.tabs[tab.id] = {\r\n ...tab,\r\n label: getWidgetLabel(widgetDef?.label ?? \"undefined\"),\r\n iconSpec: widgetDef?.iconSpec,\r\n canPopout: widgetDef?.canPopout,\r\n isFloatingStateWindowResizable: widgetDef?.isFloatingStateWindowResizable,\r\n };\r\n }\r\n return;\r\n });\r\n if (FrontstageManager.nineZoneSize && (0 !== FrontstageManager.nineZoneSize.height || 0 !== FrontstageManager.nineZoneSize.width)) {\r\n restored = FrameworkStateReducer(restored, {\r\n type: \"RESIZE\",\r\n size: {\r\n height: FrontstageManager.nineZoneSize.height,\r\n width: FrontstageManager.nineZoneSize.width,\r\n },\r\n }, frontstageDef);\r\n }\r\n return restored;\r\n}\r\n\r\n/** Prepares NineZoneState to be saved.\r\n * @note Removes toolSettings tab.\r\n * @note Removes tab labels and iconSpec.\r\n * @internal\r\n */\r\nexport function packNineZoneState(state: NineZoneState): SavedNineZoneState {\r\n let packed: SavedNineZoneState = {\r\n ...state,\r\n tabs: {},\r\n };\r\n packed = produce(packed, (draft) => {\r\n for (const [, tab] of Object.entries(state.tabs)) {\r\n if (tab.id === toolSettingsTabId)\r\n continue;\r\n draft.tabs[tab.id] = {\r\n id: tab.id,\r\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\r\n preferredPopoutWidgetSize: tab.preferredPopoutWidgetSize,\r\n allowedPanelTargets: tab.allowedPanelTargets,\r\n userSized: tab.userSized,\r\n };\r\n }\r\n });\r\n return packed;\r\n}\r\n\r\n/** @internal */\r\nexport function isPanelCollapsed(zoneStates: ReadonlyArray<ZoneState | undefined>, panelStates: ReadonlyArray<StagePanelState | undefined>) {\r\n const openZone = zoneStates.find((zoneState) => zoneState === ZoneState.Open);\r\n const openPanel = panelStates.find((panelState) => panelState === StagePanelState.Open);\r\n return !openZone && !openPanel;\r\n}\r\n\r\n/** FrontstageState is saved in UiStateStorage.\r\n * @internal\r\n */\r\nexport interface WidgetPanelsFrontstageState {\r\n nineZone: SavedNineZoneState;\r\n id: FrontstageDef[\"id\"];\r\n version: number;\r\n stateVersion: number;\r\n}\r\n\r\n// We don't save tab labels or if widget is allowed to \"pop-out\".\r\ntype SavedTabState = Omit<TabState, \"label\" | \"canPopout\" | \"isFloatingStateWindowResizable\" | \"iconSpec\">;\r\n\r\ninterface SavedTabsState {\r\n readonly [id: string]: SavedTabState;\r\n}\r\n\r\n// // We don't save if widget is allowed to \"pop-out\" or if floating widget can be resized.\r\n// type SavedWidgetState = Omit<WidgetState, | \"canPopout\" | \"isFloatingStateWindowResizable\">;\r\n//\r\n// interface SavedWidgetsState {\r\n// readonly [id: string]: SavedWidgetState;\r\n// }\r\n\r\ninterface SavedNineZoneState extends Omit<NineZoneState, \"tabs\"> {\r\n readonly tabs: SavedTabsState;\r\n // readonly widgets: SavedWidgetsState;\r\n}\r\n\r\nfunction addRemovedTab(nineZone: Draft<NineZoneState>, widgetDef: WidgetDef) {\r\n const newTab = createTabState(widgetDef.id, {\r\n label: getWidgetLabel(widgetDef.label),\r\n canPopout: widgetDef.canPopout,\r\n preferredPanelWidgetSize: widgetDef.preferredPanelSize,\r\n isFloatingStateWindowResizable: widgetDef.isFloatingStateWindowResizable,\r\n });\r\n nineZone.tabs[newTab.id] = newTab;\r\n if (widgetDef.tabLocation.widgetId in nineZone.widgets) {\r\n // Add to existing widget (by widget id).\r\n const widgetId = widgetDef.tabLocation.widgetId;\r\n const newTabWidget = nineZone.widgets[widgetId];\r\n newTabWidget.tabs.splice(widgetDef.tabLocation.tabIndex, 0, newTab.id);\r\n } else {\r\n const newTabPanel = nineZone.panels[widgetDef.tabLocation.side];\r\n if (newTabPanel.maxWidgetCount === newTabPanel.widgets.length) {\r\n // Add to existing panel widget.\r\n const widgetIndex = Math.min(newTabPanel.maxWidgetCount - 1, widgetDef.tabLocation.widgetIndex);\r\n const newTabWidgetId = newTabPanel.widgets[widgetIndex];\r\n const newTabWidget = nineZone.widgets[newTabWidgetId];\r\n newTabWidget.tabs.splice(widgetDef.tabLocation.tabIndex, 0, newTab.id);\r\n } else {\r\n // Create a new panel widget.\r\n const newWidget = createWidgetState(getUniqueId(), [newTab.id]);\r\n nineZone.widgets[newWidget.id] = castDraft(newWidget);\r\n newTabPanel.widgets.splice(widgetDef.tabLocation.widgetIndex, 0, newWidget.id);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const setWidgetState = produce((\r\n nineZone: Draft<NineZoneState>,\r\n widgetDef: WidgetDef,\r\n state: WidgetState,\r\n) => {\r\n if (state === WidgetState.Open) {\r\n const id = widgetDef.id;\r\n let location = findTab(nineZone, id);\r\n if (!location) {\r\n addRemovedTab(nineZone, widgetDef);\r\n location = findTab(nineZone, id);\r\n assert(!!location);\r\n }\r\n const widget = nineZone.widgets[location.widgetId];\r\n widget.minimized = false;\r\n widget.activeTabId = id;\r\n // ensure panel containing widget is not collapsed\r\n // istanbul ignore else\r\n if (\"side\" in location) {\r\n const panel = nineZone.panels[location.side];\r\n panel.collapsed && (panel.collapsed = false);\r\n // istanbul ignore next\r\n if (undefined === panel.size || 0 === panel.size) {\r\n panel.size = panel.minSize ?? 200;\r\n }\r\n }\r\n } else if (state === WidgetState.Closed) {\r\n const id = widgetDef.id;\r\n let location = findTab(nineZone, id);\r\n if (!location) {\r\n addRemovedTab(nineZone, widgetDef);\r\n location = findTab(nineZone, id);\r\n assert(!!location);\r\n }\r\n const widget = nineZone.widgets[location.widgetId];\r\n if (id !== widget.activeTabId)\r\n return;\r\n const minimized = widget.minimized;\r\n widget.minimized = true;\r\n if (\"side\" in location) {\r\n const panel = nineZone.panels[location.side];\r\n const maximized = panel.widgets.find((wId) => {\r\n const w = nineZone.widgets[wId];\r\n return !w.minimized;\r\n });\r\n if (maximized === undefined)\r\n widget.minimized = minimized;\r\n return;\r\n }\r\n } else if (state === WidgetState.Hidden) {\r\n hideWidget(nineZone, widgetDef);\r\n }\r\n});\r\n\r\n/** Stores widget location and hides it in the UI. */\r\nfunction hideWidget(state: Draft<NineZoneState>, widgetDef: WidgetDef) {\r\n const location = findTab(state, widgetDef.id);\r\n if (!location)\r\n return;\r\n const widgetId = location.widgetId;\r\n const side = \"side\" in location ? location.side : \"left\";\r\n const widgetIndex = \"side\" in location ? state.panels[side].widgets.indexOf(widgetId) : 0;\r\n const tabIndex = state.widgets[location.widgetId].tabs.indexOf(widgetDef.id);\r\n widgetDef.tabLocation = {\r\n side,\r\n tabIndex,\r\n widgetId,\r\n widgetIndex,\r\n };\r\n removeTab(state, widgetDef.id);\r\n}\r\n\r\n/** @internal */\r\nexport const showWidget = produce((nineZone: Draft<NineZoneState>, id: TabState[\"id\"]) => {\r\n const location = findTab(nineZone, id);\r\n if (!location)\r\n return;\r\n const widget = nineZone.widgets[location.widgetId];\r\n if (\"side\" in location) {\r\n const panel = nineZone.panels[location.side];\r\n panel.collapsed = false;\r\n widget.minimized = false;\r\n widget.activeTabId = id;\r\n return;\r\n }\r\n widget.activeTabId = id;\r\n widget.minimized = false;\r\n isFloatingLocation(location) && floatingWidgetBringToFront(nineZone, location.floatingWidgetId);\r\n});\r\n\r\n/** @internal */\r\nexport const expandWidget = produce((nineZone: Draft<NineZoneState>, id: TabState[\"id\"]) => {\r\n const location = findTab(nineZone, id);\r\n if (!location)\r\n return;\r\n const widget = nineZone.widgets[location.widgetId];\r\n if (\"side\" in location) {\r\n const panel = nineZone.panels[location.side];\r\n panel.widgets.forEach((wId) => {\r\n const w = nineZone.widgets[wId];\r\n w.minimized = true;\r\n });\r\n widget.minimized = false;\r\n return;\r\n }\r\n widget.minimized = false;\r\n return;\r\n});\r\n\r\n/** @internal */\r\nexport const setWidgetLabel = produce((nineZone: Draft<NineZoneState>, id: TabState[\"id\"], label: string) => {\r\n if (!(id in nineZone.tabs))\r\n return;\r\n\r\n const tab = nineZone.tabs[id];\r\n tab.label = label;\r\n});\r\n\r\n/** @internal */\r\nexport function useSavedFrontstageState(frontstageDef: FrontstageDef) {\r\n const uiStateStorage = useUiStateStorageHandler();\r\n const uiStateStorageRef = React.useRef(uiStateStorage);\r\n const isMountedRef = React.useRef(false);\r\n React.useEffect(() => {\r\n isMountedRef.current = true;\r\n return () => { isMountedRef.current = false; };\r\n }, []);\r\n React.useEffect(() => {\r\n uiStateStorageRef.current = uiStateStorage;\r\n }, [uiStateStorage]);\r\n React.useEffect(() => {\r\n async function fetchFrontstageState() {\r\n if (frontstageDef.nineZoneState) {\r\n frontstageDef.nineZoneState = processPopoutWidgets(frontstageDef.nineZoneState, frontstageDef);\r\n return;\r\n }\r\n const id = frontstageDef.id;\r\n const version = frontstageDef.version;\r\n const settingsResult = await uiStateStorageRef.current.getSetting(FRONTSTAGE_SETTINGS_NAMESPACE, getFrontstageStateSettingName(id));\r\n if (isMountedRef.current) {\r\n if (isFrontstageStateSettingResult(settingsResult) &&\r\n settingsResult.setting.version >= version &&\r\n settingsResult.setting.stateVersion >= stateVersion\r\n ) {\r\n const restored = restoreNineZoneState(frontstageDef, settingsResult.setting.nineZone);\r\n let state = addMissingWidgets(frontstageDef, restored);\r\n state = removeHiddenWidgets(state, frontstageDef);\r\n state = processPopoutWidgets(state, frontstageDef);\r\n frontstageDef.nineZoneState = state;\r\n return;\r\n }\r\n frontstageDef.nineZoneState = initializeNineZoneState(frontstageDef);\r\n }\r\n }\r\n fetchFrontstageState(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }, [frontstageDef]);\r\n}\r\n\r\n/** @internal */\r\nexport function useSaveFrontstageSettings(frontstageDef: FrontstageDef) {\r\n const nineZone = useNineZoneState(frontstageDef);\r\n const uiSettingsStorage = useUiStateStorageHandler();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const saveSetting = React.useCallback(debounce(async (id: string, version: number, state: NineZoneState) => {\r\n const setting: WidgetPanelsFrontstageState = {\r\n id,\r\n nineZone: packNineZoneState(state),\r\n stateVersion,\r\n version,\r\n };\r\n await uiSettingsStorage.saveSetting(FRONTSTAGE_SETTINGS_NAMESPACE, getFrontstageStateSettingName(id), setting);\r\n }, 1000), [uiSettingsStorage]);\r\n React.useEffect(() => {\r\n return () => {\r\n saveSetting.cancel();\r\n };\r\n }, [saveSetting]);\r\n React.useEffect(() => {\r\n if (!nineZone || nineZone.draggedTab)\r\n return;\r\n saveSetting(frontstageDef.id, frontstageDef.version, nineZone);\r\n }, [frontstageDef, nineZone, saveSetting]);\r\n}\r\n\r\n/** @internal */\r\nexport const FRONTSTAGE_SETTINGS_NAMESPACE = \"uifw-frontstageSettings\";\r\n\r\n/** @internal */\r\nexport function getFrontstageStateSettingName(frontstageId: WidgetPanelsFrontstageState[\"id\"]) {\r\n return `frontstageState[${frontstageId}]`;\r\n}\r\n\r\n// istanbul ignore next\r\nfunction debounce<T extends (...args: any[]) => any>(func: T, duration: number) {\r\n let timeout: number | undefined;\r\n const debounced = (...args: Parameters<T>) => {\r\n const handler = () => {\r\n timeout = undefined;\r\n return func(...args);\r\n };\r\n window.clearTimeout(timeout);\r\n timeout = window.setTimeout(handler, duration);\r\n };\r\n debounced.cancel = () => {\r\n window.clearTimeout(timeout);\r\n };\r\n return debounced;\r\n}\r\n\r\nconst createListener = <T extends (...args: any[]) => void>(frontstageDef: FrontstageDef, listener: T) => {\r\n return (...args: Parameters<T>) => {\r\n if (!frontstageDef.nineZoneState)\r\n return;\r\n listener(...args);\r\n };\r\n};\r\n\r\n/** @internal */\r\nexport function useFrontstageManager(frontstageDef: FrontstageDef) {\r\n React.useEffect(() => {\r\n const listener = createListener(frontstageDef, ({ widgetDef, widgetState }: WidgetStateChangedEventArgs) => {\r\n assert(!!frontstageDef.nineZoneState);\r\n frontstageDef.nineZoneState = setWidgetState(frontstageDef.nineZoneState, widgetDef, widgetState);\r\n });\r\n FrontstageManager.onWidgetStateChangedEvent.addListener(listener);\r\n return () => {\r\n FrontstageManager.onWidgetStateChangedEvent.removeListener(listener);\r\n };\r\n }, [frontstageDef]);\r\n React.useEffect(() => {\r\n const listener = createListener(frontstageDef, ({ widgetDef }: WidgetEventArgs) => {\r\n assert(!!frontstageDef.nineZoneState);\r\n frontstageDef.nineZoneState = showWidget(frontstageDef.nineZoneState, widgetDef.id);\r\n });\r\n FrontstageManager.onWidgetShowEvent.addListener(listener);\r\n return () => {\r\n FrontstageManager.onWidgetShowEvent.removeListener(listener);\r\n };\r\n }, [frontstageDef]);\r\n React.useEffect(() => {\r\n const listener = createListener(frontstageDef, ({ widgetDef }: WidgetEventArgs) => {\r\n assert(!!frontstageDef.nineZoneState);\r\n let nineZoneState = showWidget(frontstageDef.nineZoneState, widgetDef.id);\r\n nineZoneState = expandWidget(nineZoneState, widgetDef.id);\r\n frontstageDef.nineZoneState = nineZoneState;\r\n });\r\n FrontstageManager.onWidgetExpandEvent.addListener(listener);\r\n return () => {\r\n FrontstageManager.onWidgetExpandEvent.removeListener(listener);\r\n };\r\n }, [frontstageDef]);\r\n const uiSettingsStorage = useUiStateStorageHandler();\r\n React.useEffect(() => {\r\n const listener = (args: FrontstageEventArgs) => {\r\n // TODO: track restoring frontstages to support workflows: i.e. prevent loading frontstage OR saving layout when delete is pending\r\n uiSettingsStorage.deleteSetting(FRONTSTAGE_SETTINGS_NAMESPACE, getFrontstageStateSettingName(args.frontstageDef.id)); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n if (frontstageDef.id === args.frontstageDef.id) {\r\n args.frontstageDef.nineZoneState = initializeNineZoneState(frontstageDef);\r\n } else {\r\n args.frontstageDef.nineZoneState = undefined;\r\n }\r\n };\r\n FrontstageManager.onFrontstageRestoreLayoutEvent.addListener(listener);\r\n return () => {\r\n FrontstageManager.onFrontstageRestoreLayoutEvent.removeListener(listener);\r\n };\r\n }, [uiSettingsStorage, frontstageDef]);\r\n React.useEffect(() => {\r\n const listener = createListener(frontstageDef, ({ widgetDef }: WidgetEventArgs) => {\r\n assert(!!frontstageDef.nineZoneState);\r\n const label = widgetDef.label;\r\n frontstageDef.nineZoneState = setWidgetLabel(frontstageDef.nineZoneState, widgetDef.id, label);\r\n });\r\n FrontstageManager.onWidgetLabelChangedEvent.addListener(listener);\r\n return () => {\r\n FrontstageManager.onWidgetLabelChangedEvent.removeListener(listener);\r\n };\r\n }, [frontstageDef]);\r\n}\r\n\r\n/** @internal */\r\n// istanbul ignore next\r\nexport function useItemsManager(frontstageDef: FrontstageDef) {\r\n const refreshNineZoneState = (def: FrontstageDef) => {\r\n // Fired for both registered/unregistered. Update definitions and remove/add missing widgets.\r\n def.updateWidgetDefs();\r\n let state = def.nineZoneState;\r\n if (!state)\r\n return;\r\n state = addMissingWidgets(def, state);\r\n state = removeMissingWidgets(def, state);\r\n state = removeHiddenWidgets(state, def); // TODO: should only apply to widgets provided by registered provider in onUiProviderRegisteredEvent.\r\n def.nineZoneState = state;\r\n };\r\n\r\n React.useEffect(() => {\r\n const remove = UiItemsManager.onUiProviderRegisteredEvent.addListener(() => {\r\n refreshNineZoneState(frontstageDef);\r\n });\r\n // Need to refresh anytime frontstageDef changes because uiItemsProvider may have added something to\r\n // another stage before it was possibly unloaded in this stage.\r\n refreshNineZoneState(frontstageDef);\r\n return remove;\r\n }, [frontstageDef]);\r\n}\r\n\r\nfunction tabShownInCurrentWidget(def: WidgetDef, state: NineZoneState) {\r\n for (const [, widget] of Object.entries(state.widgets)) {\r\n const foundTab = widget.tabs.find((tabId) => tabId === def.id);\r\n // istanbul ignore else\r\n if (foundTab)\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n// istanbul ignore next\r\nfunction determineNewWidgets(defs: readonly WidgetDef[] | undefined, state: NineZoneState) {\r\n // if tab for widget.id is not found or the label does not match widget label (label is set to \"undefined\" when widgetDef is not initially available)\r\n return (defs || []).filter((def) => !(def.id in state.tabs) || !tabShownInCurrentWidget(def, state));\r\n}\r\n\r\n/** @internal */\r\nexport async function saveFrontstagePopoutWidgetSizeAndPosition(state: NineZoneState, stageId: string, stageVersion: number, childWindowId: string, childWindow: Window) {\r\n const location = findWidget(state, childWindowId);\r\n // istanbul ignore else\r\n if (location) {\r\n const adjustmentWidth = ProcessDetector.isElectronAppFrontend ? 16 : 0;\r\n const adjustmentHeight = ProcessDetector.isElectronAppFrontend ? 39 : 0;\r\n const newState = produce(state, (draft) => {\r\n const widget = draft.widgets[childWindowId];\r\n const tab = draft.tabs[widget.activeTabId];\r\n tab.preferredPopoutWidgetSize = {\r\n x: childWindow.screenX,\r\n y: childWindow.screenY,\r\n width: childWindow.innerWidth + adjustmentWidth,\r\n height: childWindow.innerHeight + adjustmentHeight,\r\n };\r\n });\r\n\r\n const setting: WidgetPanelsFrontstageState = {\r\n id: stageId,\r\n nineZone: packNineZoneState(newState),\r\n stateVersion,\r\n version: stageVersion,\r\n };\r\n await UiFramework.getUiStateStorage().saveSetting(FRONTSTAGE_SETTINGS_NAMESPACE, getFrontstageStateSettingName(stageId), setting);\r\n return newState;\r\n }\r\n // istanbul ignore next\r\n return state;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Frontstage.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F,4CAA4C;;;AAE5C;;GAEG;AAEH,uBAAuB;AAEvB,6BAA2B;AAC3B,iCAAkD;AAClD,+BAA+B;AAC/B,sDAAsE;AACtE,0DAAwF;AACxF,kDAAgG;AAChG,8DAAsE;AACtE,kEAKmC;AACnC,yDAAkE;AAElE,uEAAoE;AAEpE,gEAAsF;AACtF,gDAA6C;AAC7C,oEAAwE;AAExE,8CAA6C;AAC7C,uCAA0C;AAC1C,2DAAoE;AACpE,uEAAkG;AAClG,2CAAoD;AACpD,+BAAwC;AACxC,yCAAkD;AAClD,iDAA+E;AAC/E,8EAA2E;AAE3E,6CAA0C;AAC1C,8DAA2D;AAE3D,MAAM,aAAa,GAA4B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAEhE,uBAAuB;AACvB,MAAM,+BAA+B,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,+BAA+B;IACzF,MAAM,yBAAyB,GAAG,IAAA,sDAA4B,GAAE,CAAC;IACjE,MAAM,WAAW,GAAG,IAAA,iCAAe,GAAE,CAAC;IAEtC,OAAO,CACL;QACE,oBAAC,8CAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,CAAC,WAAW;YACvD,oBAAC,iDAAuB,IAAC,SAAS,EAAE,yBAAyB,GAAI;YACjE,oBAAC,uCAAwB,OAAG;YAC5B,oBAAC,iCAAY,IACX,SAAS,EAAC,mBAAmB,EAC7B,aAAa,EAAE,oBAAC,+BAAoB,OAAG;gBAEvC,oBAAC,iDAA6B,OAAG,CACpB;YACf,oBAAC,iCAAqB,OAAG;YACzB,oBAAC,oCAAe,OAAG,CACkB,CACtC,CACJ,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,oBAAC,uBAAa,OAAG,CAAC;AACxC,MAAM,mBAAmB,GAAG,oBAAC,kCAAmB,OAAG,CAAC;AACpD,MAAM,sBAAsB,GAAG,oBAAC,+BAA+B,OAAG,CAAC;AAEnE,gBAAgB;AAChB,SAAgB,gBAAgB,CAAC,aAA4B;IAC3D,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC5E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACzC,iBAAiB,CAAC,OAAO,GAAG,aAAa,CAAC;IAC5C,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACpB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,CAAC,IAA6C,EAAE,EAAE;YACjE,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa,IAAI,aAAa,CAAC,cAAc,IAAI,aAAa,CAAC,oBAAoB;gBAC5G,OAAO;YACT,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,OAAO,qCAAiB,CAAC,qCAAqC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvF,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACpB,OAAO,iBAAiB,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC;AAC9F,CAAC;AAhBD,4CAgBC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,QAAmC;IACjE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAgB,QAAQ,IAAI,eAAe,CAAC,CAAC;IACxE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,QAAQ;YACV,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC9B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACf,OAAO,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,aAA4B;IAChE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,IAAI,GAAG,qCAAiB,CAAC,YAAY,CAAC;QAC5C,IAAI,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;YACjB,OAAO;QACT,KAAK,GAAG,qBAAqB,CAAC,KAAK,EAAE;YACnC,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB;SACF,EAAE,aAAa,CAAC,CAAC;QAClB,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC;IACtC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AACtB,CAAC;AAfD,sDAeC;AAED,SAAS,qBAAqB,CAAC,KAAoB,EAAE,MAA2B,EAAE,aAA4B;IAC5G,KAAK,GAAG,IAAA,yCAAoB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC5B,KAAK,GAAG,IAAA,eAAO,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YAC/B,KAAK,MAAM,SAAS,IAAI,+BAAU,EAAE;gBAClC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACtC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAC1D,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,EAAE;oBACzB,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC9E,IAAI,KAAK,CAAC,IAAI,EAAE;wBACd,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;qBAC3E;iBACF;aACF;QACH,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gBAAgB;AAChB,SAAgB,mBAAmB,CAAC,aAA4B;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAmB,CAAC,MAAM,EAAE,EAAE;QAC9D,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC5B,qCAAiB,CAAC,YAAY,GAAG,iBAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC3D;QACD,qBAAqB;QACrB,IAAI,MAAM,CAAC,IAAI,KAAK,0BAA0B,EAAE;YAC9C,mEAAmE;YACnE,yBAAW,CAAC,aAAa,CAAC,yBAAyB,EAAE,sCAAsC,CAAC,CAAC;SAC9F;QACD,qBAAqB;QACrB,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,EAAE;YACxC,mEAAmE;YACnE,yBAAW,CAAC,aAAa,CAAC,uCAAuC,EAAE,sCAAsC,CAAC,CAAC;SAC5G;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;YACxB,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;SACR;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,4BAA4B,EAAE;YAChD,aAAa,CAAC,+BAA+B,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9E,OAAO;SACR;QACD,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC;QAClD,IAAI,CAAC,aAAa;YAChB,OAAO;QACT,aAAa,CAAC,aAAa,GAAG,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAC5F,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACpB,OAAO,QAAQ,CAAC;AAClB,CAAC;AA9BD,kDA8BC;AAED,gBAAgB;AACH,QAAA,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,sBAAsB;IAC9E,MAAM,aAAa,GAAG,IAAA,mCAAsB,GAAE,CAAC;IAE/C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,2BAA2B,GAAG,GAAG,EAAE;YACvC,aAAa,IAAI,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC;QAEF,aAAa,IAAI,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAE9D,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;QACrE,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;QAC1E,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,IAAI,CAAC,aAAa;QAChB,OAAO,IAAI,CAAC;IACd,OAAO,CACL,oBAAC,2BAA2B,IAAC,aAAa,EAAE,aAAa,GAAI,CAC9D,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,IAAA,wCAAmB,GAAE,CAAC;AAC9C,MAAM,UAAU,GAAG,oBAAC,qBAAe,OAAG,CAAC;AAEvC,gBAAgB;AAChB,SAAgB,2BAA2B,CAAC,EAAE,aAAa,EAAoC;IAC7F,IAAI,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC/C,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACpD,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACrC,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACvC,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACzC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACpC,eAAe,CAAC,aAAa,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,cAAc,GAAG,IAAA,yBAAW,EAAC,CAAC,KAAyB,EAAE,EAAE;QAC/D,MAAM,cAAc,GAAI,KAAa,CAAC,yBAAW,CAAC,iBAAiB,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,cAAc,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAA,iDAAuB,GAAE,CAAC;IAChD,OAAO,CACL,6BACE,SAAS,EAAC,8BAA8B,EACxC,SAAS,EAAE,aAAa,EACxB,IAAI,EAAC,cAAc;QAEnB,oBAAC,6BAAQ,IACP,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,UAAU,EACf,cAAc,EAAE,cAAc,EAC9B,mBAAmB,EAAE,mBAAmB,EACxC,aAAa,EAAE,aAAa,IAE3B,sBAAsB,CACd,CACP,CACP,CAAC;AACJ,CAAC;AAnCD,kEAmCC;AAED,gBAAgB;AAChB,SAAgB,SAAS;IACvB,OAAO,KAAK,CAAC,OAAO,CAAiB,GAAG,EAAE,CAAC,CAAC;QAC1C,qBAAqB,EAAE,yBAAW,CAAC,SAAS,CAAC,kCAAkC,CAAC;QAChF,gBAAgB,EAAE,yBAAW,CAAC,SAAS,CAAC,6BAA6B,CAAC;QACtE,qBAAqB,EAAE,yBAAW,CAAC,SAAS,CAAC,kCAAkC,CAAC;QAChF,aAAa,EAAE,yBAAW,CAAC,SAAS,CAAC,0BAA0B,CAAC;QAChE,eAAe,EAAE,yBAAW,CAAC,SAAS,CAAC,4BAA4B,CAAC;QACpE,mBAAmB,EAAE,yBAAW,CAAC,SAAS,CAAC,0BAA0B,CAAC;QACtE,uBAAuB,EAAE,yBAAW,CAAC,SAAS,CAAC,oCAAoC,CAAC;QACpF,eAAe,EAAE,yBAAW,CAAC,SAAS,CAAC,4BAA4B,CAAC;QACpE,eAAe,EAAE,yBAAW,CAAC,SAAS,CAAC,iCAAiC,CAAC;KAC1E,CAAC,EAAE,EAAE,CAAC,CAAC;AACV,CAAC;AAZD,8BAYC;AAED,gBAAgB;AAChB,SAAgB,UAAU,CAAC,KAAoB,EAAE,OAAiC,EAAE,IAAe,EAAE,QAAuB;IAC1H,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,4BAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvG,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAC7B,OAAO,KAAK,CAAC;IAEf,MAAM,IAAI,GAAG,IAAI,KAAK,EAAU,CAAC;IACjC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE;QACnC,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,GAAG,IAAA,2BAAM,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE;YAC/B,KAAK;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,wBAAwB,EAAE,MAAM,CAAC,kBAAkB;YACnD,2BAA2B,EAAE,MAAM,CAAC,mBAAmB;YACvD,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,8BAA8B,EAAE,MAAM,CAAC,8BAA8B;SACtE,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KACtB;IAED,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,CAAC,YAAY,CAAC;IAChC,uBAAuB;IACvB,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,YAAY,MAAK,4BAAW,CAAC,QAAQ,EAAE;QACvD,KAAK,GAAG,IAAA,mCAAc,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClD,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,SAAS;SACV,CAAC,CAAC;KACJ;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AA9BD,gCA8BC;AAED,gBAAgB;AAChB,uBAAuB;AACvB,SAAgB,aAAa,CAAC,KAAoB,EAAE,UAAoC,EAAE,IAAe,EAAE,oBAA4B;;IACrI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QACzB,OAAO,KAAK,CAAC;IAEf,2BAA2B;IAC3B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;QAClC,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,wBAAwB,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC;QAC3G,MAAM,2BAA2B,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC;QAClH,MAAM,yBAAyB,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,kIAAkI;QAClI,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,mBAAmB,IAAI,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC;YACzH,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC;QACpC,KAAK,GAAG,IAAA,2BAAM,EAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE;YAClC,KAAK;YACL,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,wBAAwB;YACxB,2BAA2B;YAC3B,yBAAyB;YACzB,SAAS;YACT,8BAA8B,EAAE,SAAS,CAAC,8BAA8B;SACzE,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,wBAAwB,IAAI,SAAS,CAAC,YAAY,KAAK,4BAAW,CAAC,QAAQ,EAAE;YACzF,MAAM,mBAAmB,GAAG,MAAA,SAAS,CAAC,mBAAmB,mCAAI,IAAA,gCAAW,GAAE,CAAC;YAC3E,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACjF,MAAM,aAAa,GAA4B,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;YACrG,MAAM,iBAAiB,GAAG,SAAS,CAAC,uBAAuB,CAAC;YAC5D,KAAK,GAAG,IAAA,gDAA2B,EAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,CAAC,EAAE,EAAE,aAAa,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,CAAC,8BAA8B,CAAC,CAAC;SACnM;aAAM;YACL,MAAM,oBAAoB,GAAG,IAAA,4CAAuB,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;YAClF,KAAK,GAAG,IAAA,+CAA0B,EAAC,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;SACrF;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AArCD,sCAqCC;AAED,SAAS,oBAAoB,CAAC,YAA2B,EAAE,aAA4B;IACrF,uBAAuB;IACvB,IAAI,CAAC,YAAY,CAAC,aAAa;QAC7B,OAAO,YAAY,CAAC;IAEtB,oFAAoF;IACpF,IAAI,YAAY,CAAC,aAAa,IAAI,8BAAe,CAAC,qBAAqB,EAAE;QACvE,IAAI,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,IAAI,8BAAe,CAAC,qBAAqB,EAAE;YACrF,KAAK,MAAM,iBAAiB,IAAI,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE;gBACjE,aAAa,CAAC,yBAAyB,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;aAC1E;SACF;QACD,OAAO,YAAY,CAAC;KACrB;IAED,OAAO,IAAA,8DAAyC,EAAC,YAAY,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,aAA4B,EAAE,YAA2B;;IACzF,IAAI,KAAK,GAAG,YAAY,CAAC;IAEzB,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,UAAU,0CAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACjH,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,SAAS,0CAAE,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACjI,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,UAAU,0CAAE,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACjH,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,SAAS,0CAAE,eAAe,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACrH,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,SAAS,0CAAE,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAE/H,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,WAAW,0CAAE,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACnH,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,UAAU,0CAAE,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACnI,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,WAAW,0CAAE,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACnH,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,UAAU,0CAAE,eAAe,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACvH,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,UAAU,0CAAE,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAEjI,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,QAAQ,0CAAE,eAAe,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACnH,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,QAAQ,0CAAE,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/H,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,YAAY,0CAAE,eAAe,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,8CAA8C;IACtK,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,QAAQ,0CAAE,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7H,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,WAAW,0CAAE,eAAe,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzH,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,WAAW,0CAAE,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrI,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,eAAe,0CAAE,eAAe,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,8CAA8C;IAC5K,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAA,aAAa,CAAC,WAAW,0CAAE,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEnI,OAAO,KAAK,CAAC;AACf,CAAC;AA1BD,8CA0BC;AAED,gDAAgD;AAChD,SAAS,mBAAmB,CAAC,KAAoB,EAAE,aAA4B;IAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS;YACZ,SAAS;QAEX,IAAI,SAAS,CAAC,YAAY,KAAK,4BAAW,CAAC,MAAM,EAAE;YACjD,KAAK,GAAG,IAAA,eAAO,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC/B,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;SACJ;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,aAA4B,EAAE,YAA2B;IAC5F,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5C,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAChD,IAAI,GAAG,CAAC,EAAE,KAAK,sCAAiB;gBAC9B,SAAS;YACX,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,SAAS;gBACX,SAAS;YACX,IAAA,8BAAS,EAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;SAC1B;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,oDAYC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACzC,CAAC;AAYD,SAAS,oBAAoB,CAAC,IAAe;IAC3C,QAAQ,IAAI,EAAE;QACZ,KAAK,QAAQ;YACX,OAAO,mCAAkB,CAAC,MAAM,CAAC;QACnC,KAAK,MAAM;YACT,OAAO,mCAAkB,CAAC,IAAI,CAAC;QACjC,KAAK,OAAO;YACV,OAAO,mCAAkB,CAAC,KAAK,CAAC;QAClC,KAAK,KAAK;YACR,OAAO,mCAAkB,CAAC,GAAG,CAAC;KACjC;AACH,CAAC;AAED,gBAAgB;AAChB,SAAgB,WAAW,CAAC,IAAe,EAAE,GAA0B;IACrE,QAAQ,IAAI,EAAE;QACZ,KAAK,MAAM,CAAC,CAAC;YACX,IAAI,GAAG,KAAK,OAAO,EAAE;gBACnB,OAAO,WAAW,CAAC;aACpB;YACD,OAAO,SAAS,CAAC;SAClB;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,IAAI,GAAG,KAAK,OAAO,EAAE;gBACnB,OAAO,YAAY,CAAC;aACrB;YACD,OAAO,UAAU,CAAC;SACnB;QACD,KAAK,KAAK,CAAC,CAAC;YACV,IAAI,GAAG,KAAK,OAAO,EAAE;gBACnB,OAAO,UAAU,CAAC;aACnB;YACD,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,IAAI,GAAG,KAAK,OAAO;gBACjB,OAAO,aAAa,CAAC;YACvB,OAAO,WAAW,CAAC;SACpB;KACF;AACH,CAAC;AA1BD,kCA0BC;AAED,gBAAgB;AAChB,SAAgB,mBAAmB,CAAC,aAA4B,EAAE,SAAwB;;IACxF,QAAQ,SAAS,EAAE;QACjB,KAAK,WAAW,CAAC,CAAC;YAChB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAA,MAAA,aAAa,CAAC,UAAU,0CAAE,UAAU,KAAI,EAAE,CAAC,CAAC;YACjE,MAAA,aAAa,CAAC,SAAS,0CAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAC,EAAE;gBACxE,uBAAuB;gBACvB,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;oBACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,SAAS,CAAC,CAAC;YACd,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAA,MAAA,aAAa,CAAC,UAAU,0CAAE,UAAU,KAAI,EAAE,CAAC,CAAC;YACjE,MAAA,aAAa,CAAC,SAAS,0CAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAC,EAAE;gBACtE,uBAAuB;gBACvB,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;oBACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,MAAA,aAAa,CAAC,SAAS,0CAAE,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,EAAC,EAAE;gBAC5D,uBAAuB;gBACvB,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;oBACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,YAAY,CAAC,CAAC;YACjB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,UAAU,KAAI,EAAE,CAAC,CAAC;YAClE,MAAA,aAAa,CAAC,UAAU,0CAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAC,EAAE;gBACzE,uBAAuB;gBACvB,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;oBACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,UAAU,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,UAAU,KAAI,EAAE,CAAC,CAAC;YAClE,MAAA,aAAa,CAAC,UAAU,0CAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAC,EAAE;gBACvE,uBAAuB;gBACvB,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;oBACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,MAAA,aAAa,CAAC,UAAU,0CAAE,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,EAAC,EAAE;gBAC7D,uBAAuB;gBACvB,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;oBACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,UAAU,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAA,MAAA,aAAa,CAAC,QAAQ,0CAAE,eAAe,KAAI,EAAE,CAAC,CAAC;YACpE,MAAA,aAAa,CAAC,QAAQ,0CAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAC,EAAE;gBACvE,uBAAuB;gBACvB,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;oBACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAA,MAAA,aAAa,CAAC,YAAY,0CAAE,eAAe,KAAI,EAAE,CAAC,CAAC,CAAC,8CAA8C;YACvH,MAAA,aAAa,CAAC,QAAQ,0CAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAC,EAAE;gBACrE,uBAAuB;gBACvB,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;oBACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,aAAa,CAAC,CAAC;YAClB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,eAAe,KAAI,EAAE,CAAC,CAAC;YACvE,MAAA,aAAa,CAAC,WAAW,0CAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAC,EAAE;gBAC1E,uBAAuB;gBACvB,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;oBACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;SACjB;QACD,KAAK,WAAW,CAAC,CAAC;YAChB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAA,MAAA,aAAa,CAAC,eAAe,0CAAE,eAAe,KAAI,EAAE,CAAC,CAAC,CAAC,8CAA8C;YAC1H,MAAA,aAAa,CAAC,WAAW,0CAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAC,EAAE;gBACxE,uBAAuB;gBACvB,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;oBACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;SACjB;KACF;AACH,CAAC;AArFD,kDAqFC;AAED,gBAAgB;AAChB,SAAgB,eAAe,CAC7B,KAAoB,EACpB,aAA4B,EAC5B,IAAe;IAEf,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC/D,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC3D,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC;AACf,CAAC;AAbD,0CAaC;AAED,gBAAgB;AAChB,SAAgB,8BAA8B,CAAC,cAAoC;IAIjF,IAAI,cAAc,CAAC,MAAM,KAAK,iCAAoB,CAAC,OAAO;QACxD,OAAO,IAAI,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC;AAPD,wEAOC;AAED,gBAAgB;AAChB,SAAgB,eAAe,CAAC,QAAuB,EAAE,aAA4B,EAAE,SAAoB;IACzG,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1D,QAAQ,GAAG,IAAA,eAAO,EAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,KAAK,CAAC,OAAO,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,mCAAI,KAAK,CAAC,OAAO,CAAC;QACnD,KAAK,CAAC,MAAM,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,mCAAI,KAAK,CAAC,MAAM,CAAC;QAChD,KAAK,CAAC,SAAS,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,mCAAI,KAAK,CAAC,SAAS,CAAC;QACzD,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,EAAE;YACzB,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;SACjF;QAED,MAAM,IAAI,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC;QAC5B,KAAK,CAAC,IAAI,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAjBD,0CAiBC;AAED,SAAS,eAAe,CAAC,WAAkC,EAAE,KAAgB,EAAE,YAAuB;IACpG,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,OAAO,WAAW,CAAC;KACpB;IACD,MAAM,IAAI,GAAG,IAAA,0CAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;IACrF,OAAO,WAAW,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,8EAA8E;AAEvG,gBAAgB;AAChB,SAAgB,uBAAuB,CAAC,aAA4B;IAClE,IAAI,QAAQ,GAAG,eAAe,CAAC;IAC/B,QAAQ,GAAG,IAAA,eAAO,EAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE;QAC1C,uBAAuB;QACvB,IAAI,CAAC,qCAAiB,CAAC,YAAY;YACjC,OAAO;QACT,UAAU,CAAC,IAAI,GAAG;YAChB,MAAM,EAAE,qCAAiB,CAAC,YAAY,CAAC,MAAM;YAC7C,KAAK,EAAE,qCAAiB,CAAC,YAAY,CAAC,KAAK;SAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC7D,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAC3D,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC9D,QAAQ,GAAG,IAAA,eAAO,EAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE;;QAC1C,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC;YACpG,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChG,IAAI,CAAC,QAAQ,IAAI,WAAW,EAAE;gBAC5B,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;aAC/B;SACF;QACD,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAClD,MAAA,aAAa,CAAC,UAAU,0CAAE,SAAS;YACnC,MAAA,aAAa,CAAC,UAAU,0CAAE,SAAS;SACpC,EAAE,CAAC,MAAA,aAAa,CAAC,SAAS,0CAAE,UAAU,CAAC,CAAC,CAAC;QAC1C,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC;YACnD,MAAA,aAAa,CAAC,WAAW,0CAAE,SAAS;YACpC,MAAA,aAAa,CAAC,WAAW,0CAAE,SAAS;SACrC,EAAE,CAAC,MAAA,aAAa,CAAC,UAAU,0CAAE,UAAU,CAAC,CAAC,CAAC;QAC3C,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,gBAAgB,CAAC,EAAE,EAAE;YACrD,oEAAoE;YACpE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAA,aAAa,CAAC,QAAQ,0CAAE,UAAU,CAAC,CAAC,CAAC,MAAA,aAAa,CAAC,YAAY,0CAAE,UAAU,EAAC,8CAA8C;SACpJ,CAAC,CAAC;QACH,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,gBAAgB,CAAC,EAAE,EAAE;YACxD,0EAA0E;YAC1E,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,MAAA,aAAa,CAAC,WAAW,0CAAE,UAAU,CAAC,CAAC,CAAC,MAAA,aAAa,CAAC,eAAe,0CAAE,UAAU,EAAE,8CAA8C;SAC9J,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC;QAC7C,MAAM,qBAAqB,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,kBAAkB,EAAE,CAAC;QACjE,IAAI,qBAAqB,EAAE;YACzB,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,sCAAiB,CAAC,CAAC;YAC3D,eAAe,CAAC,wBAAwB,GAAG,qBAAqB,CAAC,kBAAkB,CAAC;SACrF;IACH,CAAC,CAAC,CAAC;IACH,QAAQ,GAAG,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACtD,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACxD,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAEzD,OAAO,QAAQ,CAAC;AAClB,CAAC;AArDD,0DAqDC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,aAA4B,EAAE,KAAyB;IAC1F,IAAI,QAAQ,GAAkB;QAC5B,GAAG,KAAK;QACR,IAAI,EAAE,IAAA,oCAAe,GAAE;KACxB,CAAC;IACF,QAAQ,GAAG,IAAA,eAAO,EAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;;QACrC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAChD,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,EAAE;gBACd,qBAAM,CAAC,OAAO,CAAC,yBAAW,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE,uCAAuC,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC/G,YAAY,EAAE,aAAa,CAAC,EAAE;oBAC9B,KAAK,EAAE,GAAG,CAAC,EAAE;iBACd,CAAC,CAAC,CAAC;gBACJ,IAAA,8BAAS,EAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzB,sFAAsF;aACvF;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;gBACnB,GAAG,GAAG;gBACN,KAAK,EAAE,cAAc,CAAC,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,mCAAI,WAAW,CAAC;gBACtD,QAAQ,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ;gBAC7B,SAAS,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS;gBAC/B,8BAA8B,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,8BAA8B;aAC1E,CAAC;SACH;QAED,sEAAsE;QACtE,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;QAClG,uBAAuB;QACvB,IAAI,CAAC,CAAC,KAAK,kBAAkB,EAAE;YAC7B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;YAChG,IAAI,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;gBAC9B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAC,EAAE,CAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aACpF;iBAAM;gBACL,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,EAAC,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAC,CAAC;gBACtD,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;aACjC;SACF;QAED,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC;QACrG,uBAAuB;QACvB,IAAI,CAAC,CAAC,KAAK,mBAAmB,EAAE;YAC9B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC;YACnG,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,EAAE;gBAC/B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAC,EAAE,CAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aACtF;iBAAM;gBACL,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAC,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAC,CAAC;gBACxD,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;aAClC;SACF;QAED,OAAO;IACT,CAAC,CAAC,CAAC;IACH,IAAI,qCAAiB,CAAC,YAAY,IAAI,CAAC,CAAC,KAAK,qCAAiB,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,KAAK,qCAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QACjI,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE;YACzC,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE;gBACJ,MAAM,EAAE,qCAAiB,CAAC,YAAY,CAAC,MAAM;gBAC7C,KAAK,EAAE,qCAAiB,CAAC,YAAY,CAAC,KAAK;aAC5C;SACF,EAAE,aAAa,CAAC,CAAC;KACnB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AA9DD,oDA8DC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,KAAoB;IACpD,IAAI,MAAM,GAAuB;QAC/B,GAAG,KAAK;QACR,IAAI,EAAE,EAAE;KACT,CAAC;IACF,MAAM,GAAG,IAAA,eAAO,EAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QACjC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAChD,IAAI,GAAG,CAAC,EAAE,KAAK,sCAAiB;gBAC9B,SAAS;YACX,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;gBACnB,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,2BAA2B,EAAE,GAAG,CAAC,2BAA2B;gBAC5D,yBAAyB,EAAE,GAAG,CAAC,yBAAyB;gBACxD,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;gBAC5C,SAAS,EAAE,GAAG,CAAC,SAAS;aACzB,CAAC;SACH;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAnBD,8CAmBC;AAED,gBAAgB;AAChB,SAAgB,gBAAgB,CAAC,UAAgD,EAAE,WAAuD;IACxI,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,mBAAS,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,+BAAe,CAAC,IAAI,CAAC,CAAC;IACxF,OAAO,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC;AACjC,CAAC;AAJD,4CAIC;AA+BD,SAAS,aAAa,CAAC,QAA8B,EAAE,SAAoB;IACzE,MAAM,MAAM,GAAG,IAAA,mCAAc,EAAC,SAAS,CAAC,EAAE,EAAE;QAC1C,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC;QACtC,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,wBAAwB,EAAE,SAAS,CAAC,kBAAkB;QACtD,8BAA8B,EAAE,SAAS,CAAC,8BAA8B;KACzE,CAAC,CAAC;IACH,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAClC,IAAI,SAAS,CAAC,WAAW,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE;QACtD,yCAAyC;QACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC;QAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;KACxE;SAAM;QACL,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,WAAW,CAAC,cAAc,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE;YAC7D,gCAAgC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAChG,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACxD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACtD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;SACxE;aAAM;YACL,6BAA6B;YAC7B,MAAM,SAAS,GAAG,IAAA,sCAAiB,EAAC,IAAA,gCAAW,GAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,IAAA,iBAAS,EAAC,SAAS,CAAC,CAAC;YACtD,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;SAChF;KACF;AACH,CAAC;AAED,gBAAgB;AACH,QAAA,cAAc,GAAG,IAAA,eAAO,EAAC,CACpC,QAA8B,EAC9B,SAAoB,EACpB,KAAkB,EAClB,EAAE;;IACF,IAAI,KAAK,KAAK,4BAAW,CAAC,IAAI,EAAE;QAC9B,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QACxB,IAAI,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,EAAE;YACb,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACnC,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACjC,IAAA,qBAAM,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;SACpB;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;QACxB,kDAAkD;QAClD,uBAAuB;QACvB,IAAI,MAAM,IAAI,QAAQ,EAAE;YACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7C,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;YAC7C,uBAAuB;YACvB,IAAI,SAAS,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE;gBAChD,KAAK,CAAC,IAAI,GAAG,MAAA,KAAK,CAAC,OAAO,mCAAI,GAAG,CAAC;aACnC;SACF;KACF;SAAM,IAAI,KAAK,KAAK,4BAAW,CAAC,MAAM,EAAE;QACvC,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QACxB,IAAI,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,EAAE;YACb,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACnC,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACjC,IAAA,qBAAM,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;SACpB;QACD,IAAI,IAAA,uCAAkB,EAAC,QAAQ,CAAC,EAAE;YAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,EAAE,KAAK,MAAM,CAAC,WAAW;gBAC3B,OAAO;YACT,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;KACF;SAAO,IAAI,KAAK,KAAK,4BAAW,CAAC,MAAM,EAAE;QACxC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;KACjC;AACH,CAAC,CAAC,CAAC;AAEH,qDAAqD;AACrD,SAAS,UAAU,CAAC,KAA2B,EAAE,SAAoB;IACnE,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ;QACX,OAAO;IACT,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,WAAW,GAAG,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC7E,SAAS,CAAC,WAAW,GAAG;QACtB,IAAI;QACJ,QAAQ;QACR,QAAQ;QACR,WAAW;KACZ,CAAC;IACF,IAAA,8BAAS,EAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,gBAAgB;AACH,QAAA,UAAU,GAAG,IAAA,eAAO,EAAC,CAAC,QAA8B,EAAE,EAAkB,EAAE,EAAE;IACvF,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ;QACX,OAAO;IACT,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,MAAM,IAAI,QAAQ,EAAE;QACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QACxB,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;QACxB,OAAO;KACR;IACD,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,IAAA,uCAAkB,EAAC,QAAQ,CAAC,IAAI,IAAA,+CAA0B,EAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAClG,CAAC,CAAC,CAAC;AAEH,gBAAgB;AACH,QAAA,YAAY,GAAG,IAAA,eAAO,EAAC,CAAC,QAA8B,EAAE,EAAkB,EAAE,EAAE;IACzF,MAAM,QAAQ,GAAG,IAAA,4BAAO,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ;QACX,OAAO;IACT,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,MAAM,IAAI,QAAQ,EAAE;QACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5B,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,OAAO;KACR;IACD,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,OAAO;AACT,CAAC,CAAC,CAAC;AAEH,gBAAgB;AACH,QAAA,cAAc,GAAG,IAAA,eAAO,EAAC,CAAC,QAA8B,EAAE,EAAkB,EAAE,KAAa,EAAE,EAAE;IAC1G,IAAI,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC;QACxB,OAAO;IAET,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,gBAAgB;AAChB,SAAgB,uBAAuB,CAAC,aAA4B;IAClE,MAAM,cAAc,GAAG,IAAA,4CAAwB,GAAE,CAAC;IAClD,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;QAC5B,OAAO,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,iBAAiB,CAAC,OAAO,GAAG,cAAc,CAAC;IAC7C,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACrB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,KAAK,UAAU,oBAAoB;YACjC,IAAI,aAAa,CAAC,aAAa,EAAE;gBAC/B,aAAa,CAAC,aAAa,GAAG,oBAAoB,CAAC,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;gBAC/F,OAAO;aACR;YACD,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;YACtC,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,qCAA6B,EAAE,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;YACpI,IAAI,YAAY,CAAC,OAAO,EAAE;gBACxB,IAAI,8BAA8B,CAAC,cAAc,CAAC;oBAChD,cAAc,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO;oBACzC,cAAc,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,EACnD;oBACA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,aAAa,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACtF,IAAI,KAAK,GAAG,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;oBACvD,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;oBAClD,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;oBACnD,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC;oBACpC,OAAO;iBACR;gBACD,aAAa,CAAC,aAAa,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;aACtE;QACH,CAAC;QACD,oBAAoB,EAAE,CAAC,CAAC,8DAA8D;IACxF,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AACtB,CAAC;AArCD,0DAqCC;AAED,gBAAgB;AAChB,SAAgB,yBAAyB,CAAC,aAA4B;IACpE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACjD,MAAM,iBAAiB,GAAG,IAAA,4CAAwB,GAAE,CAAC;IACrD,uDAAuD;IACvD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAU,EAAE,OAAe,EAAE,KAAoB,EAAE,EAAE;QACzG,MAAM,OAAO,GAAgC;YAC3C,EAAE;YACF,QAAQ,EAAE,iBAAiB,CAAC,KAAK,CAAC;YAClC,YAAY;YACZ,OAAO;SACR,CAAC;QACF,MAAM,iBAAiB,CAAC,WAAW,CAAC,qCAA6B,EAAE,6BAA6B,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACjH,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC/B,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,OAAO,GAAG,EAAE;YACV,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAClB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU;YAClC,OAAO;QACT,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7C,CAAC;AAvBD,8DAuBC;AAED,gBAAgB;AACH,QAAA,6BAA6B,GAAG,yBAAyB,CAAC;AAEvE,gBAAgB;AAChB,SAAgB,6BAA6B,CAAC,YAA+C;IAC3F,OAAO,mBAAmB,YAAY,GAAG,CAAC;AAC5C,CAAC;AAFD,sEAEC;AAED,uBAAuB;AACvB,SAAS,QAAQ,CAAoC,IAAO,EAAE,QAAgB;IAC5E,IAAI,OAA2B,CAAC;IAChC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAmB,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,OAAO,GAAG,SAAS,CAAC;YACpB,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC;IACF,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE;QACtB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,cAAc,GAAG,CAAqC,aAA4B,EAAE,QAAW,EAAE,EAAE;IACvG,OAAO,CAAC,GAAG,IAAmB,EAAE,EAAE;QAChC,IAAI,CAAC,aAAa,CAAC,aAAa;YAC9B,OAAO;QACT,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB;AAChB,SAAgB,oBAAoB,CAAC,aAA4B;IAC/D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAA+B,EAAE,EAAE;YACzG,IAAA,qBAAM,EAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YACtC,aAAa,CAAC,aAAa,GAAG,IAAA,sBAAc,EAAC,aAAa,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;QACH,qCAAiB,CAAC,yBAAyB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAClE,OAAO,GAAG,EAAE;YACV,qCAAiB,CAAC,yBAAyB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACpB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,EAAE,SAAS,EAAmB,EAAE,EAAE;YAChF,IAAA,qBAAM,EAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YACtC,aAAa,CAAC,aAAa,GAAG,IAAA,kBAAU,EAAC,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,qCAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE;YACV,qCAAiB,CAAC,iBAAiB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACpB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,EAAE,SAAS,EAAmB,EAAE,EAAE;YAChF,IAAA,qBAAM,EAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YACtC,IAAI,aAAa,GAAG,IAAA,kBAAU,EAAC,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1E,aAAa,GAAG,IAAA,oBAAY,EAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YAC1D,aAAa,CAAC,aAAa,GAAG,aAAa,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,qCAAiB,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5D,OAAO,GAAG,EAAE;YACV,qCAAiB,CAAC,mBAAmB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACpB,MAAM,iBAAiB,GAAG,IAAA,4CAAwB,GAAE,CAAC;IACrD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,CAAC,IAAyB,EAAE,EAAE;YAC7C,mIAAmI;YACnI,iBAAiB,CAAC,aAAa,CAAC,qCAA6B,EAAE,6BAA6B,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,8DAA8D;YACpL,IAAI,aAAa,CAAC,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE;gBAC9C,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;aAC3E;iBAAM;gBACL,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,SAAS,CAAC;aAC9C;QACH,CAAC,CAAC;QACF,qCAAiB,CAAC,8BAA8B,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvE,OAAO,GAAG,EAAE;YACV,qCAAiB,CAAC,8BAA8B,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC5E,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;IACvC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,EAAE,SAAS,EAAmB,EAAE,EAAE;YAChF,IAAA,qBAAM,EAAC,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;YAC9B,aAAa,CAAC,aAAa,GAAG,IAAA,sBAAc,EAAC,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;QACH,qCAAiB,CAAC,yBAAyB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAClE,OAAO,GAAG,EAAE;YACV,qCAAiB,CAAC,yBAAyB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AACtB,CAAC;AA5DD,oDA4DC;AAED,gBAAgB;AAChB,uBAAuB;AACvB,SAAgB,eAAe,CAAC,aAA4B;IAC1D,MAAM,oBAAoB,GAAG,CAAC,GAAkB,EAAE,EAAE;QAClD,6FAA6F;QAC7F,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACvB,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC;QAC9B,IAAI,CAAC,KAAK;YACR,OAAO;QACT,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,KAAK,GAAG,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzC,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,qGAAqG;QAC9I,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5B,CAAC,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,MAAM,GAAG,+BAAc,CAAC,2BAA2B,CAAC,WAAW,CAAC,GAAG,EAAE;YACzE,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,oGAAoG;QACpG,+DAA+D;QAC/D,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AACtB,CAAC;AAtBD,0CAsBC;AAED,SAAS,uBAAuB,CAAC,GAAc,EAAE,KAAoB;IACnE,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/D,uBAAuB;QACvB,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uBAAuB;AACvB,SAAS,mBAAmB,CAAC,IAAsC,EAAE,KAAoB;IACvF,qJAAqJ;IACrJ,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACvG,CAAC;AAED,gBAAgB;AACT,KAAK,UAAU,yCAAyC,CAAC,KAAoB,EAAE,OAAe,EAAE,YAAoB,EAAE,aAAqB,EAAE,WAAmB;IACrK,MAAM,QAAQ,GAAG,IAAA,+BAAU,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAClD,uBAAuB;IACvB,IAAI,QAAQ,EAAE;QACZ,MAAM,eAAe,GAAG,8BAAe,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,gBAAgB,GAAG,8BAAe,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAA,eAAO,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3C,GAAG,CAAC,yBAAyB,GAAG;gBAC9B,CAAC,EAAE,WAAW,CAAC,OAAO;gBACtB,CAAC,EAAE,WAAW,CAAC,OAAO;gBACtB,KAAK,EAAE,WAAW,CAAC,UAAU,GAAG,eAAe;gBAC/C,MAAM,EAAE,WAAW,CAAC,WAAW,GAAG,gBAAgB;aACnD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAgC;YAC3C,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC;YACrC,YAAY;YACZ,OAAO,EAAE,YAAY;SACtB,CAAC;QACF,MAAM,yBAAW,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,qCAA6B,EAAE,6BAA6B,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAClI,OAAO,QAAQ,CAAC;KACjB;IACD,uBAAuB;IACvB,OAAO,KAAK,CAAC;AACf,CAAC;AA5BD,8FA4BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/** @packageDocumentation\r\n * @module Frontstage\r\n */\r\n\r\n// cSpell:ignore popout\r\n\r\nimport \"./Frontstage.scss\";\r\nimport produce, { castDraft, Draft } from \"immer\";\r\nimport * as React from \"react\";\r\nimport { assert, Logger, ProcessDetector } from \"@itwin/core-bentley\";\r\nimport { StagePanelLocation, UiItemsManager, WidgetState } from \"@itwin/appui-abstract\";\r\nimport { Size, SizeProps, UiStateStorageResult, UiStateStorageStatus } from \"@itwin/core-react\";\r\nimport { ToolbarPopupAutoHideContext } from \"@itwin/components-react\";\r\nimport {\r\n addPanelWidget, addTab, addWidgetTabToFloatingPanel, addWidgetTabToPanelSection, convertAllPopupWidgetContainersToFloating, createNineZoneState, createTabsState, createTabState,\r\n createWidgetState, findTab, findWidget, floatingWidgetBringToFront, FloatingWidgetHomeState, FloatingWidgets, getUniqueId, getWidgetPanelSectionId, isFloatingLocation,\r\n isHorizontalPanelSide, NineZone, NineZoneActionTypes, NineZoneDispatch, NineZoneLabels, NineZoneState,\r\n NineZoneStateReducer, PanelSide, panelSides, removeTab, TabState, toolSettingsTabId, WidgetPanels,\r\n} from \"@itwin/appui-layout-react\";\r\nimport { useActiveFrontstageDef } from \"../frontstage/Frontstage\";\r\nimport { FrontstageDef, FrontstageEventArgs, FrontstageNineZoneStateChangedEventArgs } from \"../frontstage/FrontstageDef\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { StagePanelMaxSizeSpec } from \"../stagepanels/StagePanel\";\r\nimport { StagePanelState, StagePanelZoneDefKeys } from \"../stagepanels/StagePanelDef\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\r\nimport { WidgetDef, WidgetEventArgs, WidgetStateChangedEventArgs } from \"../widgets/WidgetDef\";\r\nimport { ZoneState } from \"../zones/ZoneDef\";\r\nimport { WidgetContent } from \"./Content\";\r\nimport { WidgetPanelsFrontstageContent } from \"./FrontstageContent\";\r\nimport { ModalFrontstageComposer, useActiveModalFrontstageInfo } from \"./ModalFrontstageComposer\";\r\nimport { WidgetPanelsStatusBar } from \"./StatusBar\";\r\nimport { WidgetPanelsTab } from \"./Tab\";\r\nimport { WidgetPanelsToolbars } from \"./Toolbars\";\r\nimport { ToolSettingsContent, WidgetPanelsToolSettings } from \"./ToolSettings\";\r\nimport { useEscapeSetFocusToHome } from \"../hooks/useEscapeSetFocusToHome\";\r\nimport { FrameworkRootState } from \"../redux/StateManager\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useUiVisibility } from \"../hooks/useUiVisibility\";\r\n\r\nconst panelZoneKeys: StagePanelZoneDefKeys[] = [\"start\", \"end\"];\r\n\r\n// istanbul ignore next\r\nconst WidgetPanelsFrontstageComponent = React.memo(function WidgetPanelsFrontstageComponent() { // eslint-disable-line @typescript-eslint/naming-convention, no-shadow\r\n const activeModalFrontstageInfo = useActiveModalFrontstageInfo();\r\n const uiIsVisible = useUiVisibility();\r\n\r\n return (\r\n <>\r\n <ToolbarPopupAutoHideContext.Provider value={!uiIsVisible}>\r\n <ModalFrontstageComposer stageInfo={activeModalFrontstageInfo} />\r\n <WidgetPanelsToolSettings />\r\n <WidgetPanels\r\n className=\"uifw-widgetPanels\"\r\n centerContent={<WidgetPanelsToolbars />}\r\n >\r\n <WidgetPanelsFrontstageContent />\r\n </WidgetPanels>\r\n <WidgetPanelsStatusBar />\r\n <FloatingWidgets />\r\n </ToolbarPopupAutoHideContext.Provider>\r\n </>\r\n );\r\n});\r\n\r\nconst widgetContent = <WidgetContent />;\r\nconst toolSettingsContent = <ToolSettingsContent />;\r\nconst widgetPanelsFrontstage = <WidgetPanelsFrontstageComponent />;\r\n\r\n/** @internal */\r\nexport function useNineZoneState(frontstageDef: FrontstageDef) {\r\n const lastFrontstageDef = React.useRef(frontstageDef);\r\n const [nineZone, setNineZone] = React.useState(frontstageDef.nineZoneState);\r\n React.useEffect(() => {\r\n setNineZone(frontstageDef.nineZoneState);\r\n lastFrontstageDef.current = frontstageDef;\r\n }, [frontstageDef]);\r\n React.useEffect(() => {\r\n const listener = (args: FrontstageNineZoneStateChangedEventArgs) => {\r\n if (args.frontstageDef !== frontstageDef || frontstageDef.isStageClosing || frontstageDef.isApplicationClosing)\r\n return;\r\n setNineZone(args.state);\r\n };\r\n return FrontstageManager.onFrontstageNineZoneStateChangedEvent.addListener(listener);\r\n }, [frontstageDef]);\r\n return lastFrontstageDef.current === frontstageDef ? nineZone : frontstageDef.nineZoneState;\r\n}\r\n\r\n/** @returns Defined NineZoneState with fallback to last defined and default NineZoneState.\r\n * @internal\r\n */\r\nfunction useCachedNineZoneState(nineZone: NineZoneState | undefined): NineZoneState {\r\n const cached = React.useRef<NineZoneState>(nineZone || defaultNineZone);\r\n React.useEffect(() => {\r\n if (nineZone)\r\n cached.current = nineZone;\r\n }, [nineZone]);\r\n return nineZone || cached.current;\r\n}\r\n\r\n/** Update in-memory NineZoneState of newly activated frontstage with up to date size.\r\n * @internal\r\n */\r\nexport function useUpdateNineZoneSize(frontstageDef: FrontstageDef) {\r\n React.useEffect(() => {\r\n const size = FrontstageManager.nineZoneSize;\r\n let state = frontstageDef.nineZoneState;\r\n if (!size || !state)\r\n return;\r\n state = FrameworkStateReducer(state, {\r\n type: \"RESIZE\",\r\n size: {\r\n height: size.height,\r\n width: size.width,\r\n },\r\n }, frontstageDef);\r\n frontstageDef.nineZoneState = state;\r\n }, [frontstageDef]);\r\n}\r\n\r\nfunction FrameworkStateReducer(state: NineZoneState, action: NineZoneActionTypes, frontstageDef: FrontstageDef) {\r\n state = NineZoneStateReducer(state, action);\r\n if (action.type === \"RESIZE\") {\r\n state = produce(state, (draft) => {\r\n for (const panelSide of panelSides) {\r\n const panel = draft.panels[panelSide];\r\n const location = toStagePanelLocation(panelSide);\r\n const panelDef = frontstageDef.getStagePanelDef(location);\r\n if (panelDef?.maxSizeSpec) {\r\n panel.maxSize = getPanelMaxSize(panelDef.maxSizeSpec, panelSide, action.size);\r\n if (panel.size) {\r\n panel.size = Math.min(Math.max(panel.size, panel.minSize), panel.maxSize);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n return state;\r\n}\r\n\r\n/** @internal */\r\nexport function useNineZoneDispatch(frontstageDef: FrontstageDef) {\r\n const dispatch = React.useCallback<NineZoneDispatch>((action) => {\r\n if (action.type === \"RESIZE\") {\r\n FrontstageManager.nineZoneSize = Size.create(action.size);\r\n }\r\n // istanbul ignore if\r\n if (action.type === \"TOOL_SETTINGS_DRAG_START\") {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n UiFramework.postTelemetry(\"Tool Settings Undocking\", \"28B04E07-AE73-4533-A0BA-8E2A8DC99ADF\");\r\n }\r\n // istanbul ignore if\r\n if (action.type === \"TOOL_SETTINGS_DOCK\") {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n UiFramework.postTelemetry(\"Tool Settings Docking to Settings Bar\", \"BEDE684B-B3DB-4637-B3AF-DC3CBA223F94\");\r\n }\r\n if (action.type === \"WIDGET_TAB_POPOUT\") {\r\n const tabId = action.id;\r\n frontstageDef.popoutWidget(tabId);\r\n return;\r\n }\r\n if (action.type === \"FLOATING_WIDGET_SET_BOUNDS\") {\r\n frontstageDef.setFloatingWidgetBoundsInternal(action.id, action.bounds, true);\r\n return;\r\n }\r\n const nineZoneState = frontstageDef.nineZoneState;\r\n if (!nineZoneState)\r\n return;\r\n frontstageDef.nineZoneState = FrameworkStateReducer(nineZoneState, action, frontstageDef);\r\n }, [frontstageDef]);\r\n return dispatch;\r\n}\r\n\r\n/** @internal */\r\nexport const WidgetPanelsFrontstage = React.memo(function WidgetPanelsFrontstage() { // eslint-disable-line @typescript-eslint/naming-convention, no-shadow\r\n const frontstageDef = useActiveFrontstageDef();\r\n\r\n React.useEffect(() => {\r\n const triggerWidowCloseProcessing = () => {\r\n frontstageDef && frontstageDef.setIsApplicationClosing(true);\r\n };\r\n\r\n frontstageDef && frontstageDef.setIsApplicationClosing(false);\r\n\r\n window.addEventListener(\"beforeunload\", triggerWidowCloseProcessing);\r\n return () => {\r\n window.removeEventListener(\"beforeunload\", triggerWidowCloseProcessing);\r\n };\r\n }, [frontstageDef]);\r\n\r\n if (!frontstageDef)\r\n return null;\r\n return (\r\n <ActiveFrontstageDefProvider frontstageDef={frontstageDef} />\r\n );\r\n});\r\n\r\nconst defaultNineZone = createNineZoneState();\r\nconst tabElement = <WidgetPanelsTab />;\r\n\r\n/** @internal */\r\nexport function ActiveFrontstageDefProvider({ frontstageDef }: { frontstageDef: FrontstageDef }) {\r\n let nineZone = useNineZoneState(frontstageDef);\r\n nineZone = useCachedNineZoneState(nineZone);\r\n const dispatch = useNineZoneDispatch(frontstageDef);\r\n useUpdateNineZoneSize(frontstageDef);\r\n useSavedFrontstageState(frontstageDef);\r\n useSaveFrontstageSettings(frontstageDef);\r\n useFrontstageManager(frontstageDef);\r\n useItemsManager(frontstageDef);\r\n const labels = useLabels();\r\n const showWidgetIcon = useSelector((state: FrameworkRootState) => {\r\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\r\n return !!frameworkState.configurableUiState.showWidgetIcon;\r\n });\r\n\r\n const handleKeyDown = useEscapeSetFocusToHome();\r\n return (\r\n <div\r\n className=\"uifw-widgetPanels-frontstage\"\r\n onKeyDown={handleKeyDown}\r\n role=\"presentation\"\r\n >\r\n <NineZone\r\n dispatch={dispatch}\r\n labels={labels}\r\n state={nineZone}\r\n tab={tabElement}\r\n showWidgetIcon={showWidgetIcon}\r\n toolSettingsContent={toolSettingsContent}\r\n widgetContent={widgetContent}\r\n >\r\n {widgetPanelsFrontstage}\r\n </NineZone>\r\n </div>\r\n );\r\n}\r\n\r\n/** @internal */\r\nexport function useLabels() {\r\n return React.useMemo<NineZoneLabels>(() => ({\r\n dockToolSettingsTitle: UiFramework.translate(\"widget.tooltips.dockToolSettings\"),\r\n moreWidgetsTitle: UiFramework.translate(\"widget.tooltips.moreWidgets\"),\r\n moreToolSettingsTitle: UiFramework.translate(\"widget.tooltips.moreToolSettings\"),\r\n pinPanelTitle: UiFramework.translate(\"widget.tooltips.pinPanel\"),\r\n resizeGripTitle: UiFramework.translate(\"widget.tooltips.resizeGrip\"),\r\n sendWidgetHomeTitle: UiFramework.translate(\"widget.tooltips.sendHome\"),\r\n toolSettingsHandleTitle: UiFramework.translate(\"widget.tooltips.toolSettingsHandle\"),\r\n unpinPanelTitle: UiFramework.translate(\"widget.tooltips.unpinPanel\"),\r\n popoutActiveTab: UiFramework.translate(\"widget.tooltips.popoutActiveTab\"),\r\n }), []);\r\n}\r\n\r\n/** @internal */\r\nexport function addWidgets(state: NineZoneState, widgets: ReadonlyArray<WidgetDef>, side: PanelSide, widgetId: WidgetIdTypes): NineZoneState {\r\n const visibleWidgets = widgets.filter((w) => w.isVisible && (w.defaultState !== WidgetState.Floating));\r\n if (visibleWidgets.length === 0)\r\n return state;\r\n\r\n const tabs = new Array<string>();\r\n for (const widget of visibleWidgets) {\r\n const label = getWidgetLabel(widget.label);\r\n state = addTab(state, widget.id, {\r\n label,\r\n iconSpec: widget.iconSpec,\r\n preferredPanelWidgetSize: widget.preferredPanelSize,\r\n preferredFloatingWidgetSize: widget.defaultFloatingSize,\r\n canPopout: widget.canPopout,\r\n isFloatingStateWindowResizable: widget.isFloatingStateWindowResizable,\r\n });\r\n tabs.push(widget.id);\r\n }\r\n\r\n const activeWidget = visibleWidgets.find((widget) => widget.isActive);\r\n const minimized = !activeWidget;\r\n // istanbul ignore else\r\n if (activeWidget?.defaultState !== WidgetState.Floating) {\r\n state = addPanelWidget(state, side, widgetId, tabs, {\r\n activeTabId: activeWidget ? activeWidget.id : tabs[0],\r\n minimized,\r\n });\r\n }\r\n\r\n return state;\r\n}\r\n\r\n/** @internal */\r\n// istanbul ignore next\r\nexport function appendWidgets(state: NineZoneState, widgetDefs: ReadonlyArray<WidgetDef>, side: PanelSide, preferredWidgetIndex: number): NineZoneState {\r\n if (widgetDefs.length === 0)\r\n return state;\r\n\r\n // Add missing widget tabs.\r\n for (const widgetDef of widgetDefs) {\r\n const label = getWidgetLabel(widgetDef.label);\r\n const saveTab = state.tabs[widgetDef.id];\r\n const preferredPanelWidgetSize = saveTab ? saveTab.preferredPanelWidgetSize : widgetDef.preferredPanelSize;\r\n const preferredFloatingWidgetSize = saveTab ? saveTab.preferredFloatingWidgetSize : widgetDef.defaultFloatingSize;\r\n const preferredPopoutWidgetSize = saveTab ? saveTab.preferredPopoutWidgetSize : undefined;\r\n // if a defaultFloatingSize is specified then this mean the widget can't determine its intrinsic size and must be explicitly sized\r\n const userSized = saveTab ? (saveTab.userSized || !!widgetDef.defaultFloatingSize && !!saveTab.preferredFloatingWidgetSize)\r\n : !!widgetDef.defaultFloatingSize;\r\n state = addTab(state, widgetDef.id, {\r\n label,\r\n iconSpec: widgetDef.iconSpec,\r\n canPopout: widgetDef.canPopout,\r\n preferredPanelWidgetSize,\r\n preferredFloatingWidgetSize,\r\n preferredPopoutWidgetSize,\r\n userSized,\r\n isFloatingStateWindowResizable: widgetDef.isFloatingStateWindowResizable,\r\n });\r\n if (widgetDef.isFloatingStateSupported && widgetDef.defaultState === WidgetState.Floating) {\r\n const floatingContainerId = widgetDef.floatingContainerId ?? getUniqueId();\r\n const widgetContainerId = getWidgetId(side, panelZoneKeys[preferredWidgetIndex]);\r\n const homePanelInfo: FloatingWidgetHomeState = { side, widgetId: widgetContainerId, widgetIndex: 0 };\r\n const preferredPosition = widgetDef.defaultFloatingPosition;\r\n state = addWidgetTabToFloatingPanel(state, floatingContainerId, widgetDef.id, homePanelInfo, preferredFloatingWidgetSize, preferredPosition, userSized, widgetDef.isFloatingStateWindowResizable);\r\n } else {\r\n const widgetPanelSectionId = getWidgetPanelSectionId (side, preferredWidgetIndex);\r\n state = addWidgetTabToPanelSection(state, side, widgetPanelSectionId, widgetDef.id);\r\n }\r\n }\r\n\r\n return state;\r\n}\r\n\r\nfunction processPopoutWidgets(initialState: NineZoneState, frontstageDef: FrontstageDef): NineZoneState {\r\n // istanbul ignore next\r\n if (!initialState.popoutWidgets)\r\n return initialState;\r\n\r\n // istanbul ignore next - not unit testing electron case that reopens popout windows\r\n if (initialState.popoutWidgets && ProcessDetector.isElectronAppFrontend) {\r\n if (initialState.popoutWidgets.allIds.length && ProcessDetector.isElectronAppFrontend) {\r\n for (const widgetContainerId of initialState.popoutWidgets.allIds) {\r\n frontstageDef.openPopoutWidgetContainer(initialState, widgetContainerId);\r\n }\r\n }\r\n return initialState;\r\n }\r\n\r\n return convertAllPopupWidgetContainersToFloating(initialState);\r\n}\r\n\r\n/** Adds frontstageDef widgets that are missing in NineZoneState.\r\n * @internal\r\n */\r\nexport function addMissingWidgets(frontstageDef: FrontstageDef, initialState: NineZoneState): NineZoneState {\r\n let state = initialState;\r\n\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.centerLeft?.widgetDefs, initialState), \"left\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.leftPanel?.panelZones.start.widgetDefs, initialState), \"left\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomLeft?.widgetDefs, initialState), \"left\", 1);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.leftPanel?.panelWidgetDefs, initialState), \"left\", 1);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.leftPanel?.panelZones.end.widgetDefs, initialState), \"left\", 1);\r\n\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.centerRight?.widgetDefs, initialState), \"right\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.rightPanel?.panelZones.start.widgetDefs, initialState), \"right\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomRight?.widgetDefs, initialState), \"right\", 1);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.rightPanel?.panelWidgetDefs, initialState), \"right\", 1);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.rightPanel?.panelZones.end.widgetDefs, initialState), \"right\", 1);\r\n\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.topPanel?.panelWidgetDefs, initialState), \"top\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.topPanel?.panelZones.start.widgetDefs, initialState), \"top\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.topMostPanel?.panelWidgetDefs, initialState), \"top\", 1); // eslint-disable-line deprecation/deprecation\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.topPanel?.panelZones.end.widgetDefs, initialState), \"top\", 1);\r\n\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomPanel?.panelWidgetDefs, initialState), \"bottom\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomPanel?.panelZones.start.widgetDefs, initialState), \"bottom\", 0);\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomMostPanel?.panelWidgetDefs, initialState), \"bottom\", 1); // eslint-disable-line deprecation/deprecation\r\n state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomPanel?.panelZones.end.widgetDefs, initialState), \"bottom\", 1);\r\n\r\n return state;\r\n}\r\n\r\n/** Removes widgets with Hidden defaultState. */\r\nfunction removeHiddenWidgets(state: NineZoneState, frontstageDef: FrontstageDef): NineZoneState {\r\n const tabs = Object.values(state.tabs);\r\n for (const tab of tabs) {\r\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\r\n if (!widgetDef)\r\n continue;\r\n\r\n if (widgetDef.defaultState === WidgetState.Hidden) {\r\n state = produce(state, (draft) => {\r\n hideWidget(draft, widgetDef);\r\n });\r\n }\r\n }\r\n\r\n return state;\r\n}\r\n\r\n/** Removes NineZoneState widgets that are missing in frontstageDef.\r\n * @internal\r\n */\r\nexport function removeMissingWidgets(frontstageDef: FrontstageDef, initialState: NineZoneState): NineZoneState {\r\n const state = produce(initialState, (draft) => {\r\n for (const [, tab] of Object.entries(draft.tabs)) {\r\n if (tab.id === toolSettingsTabId)\r\n continue;\r\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\r\n if (widgetDef)\r\n continue;\r\n removeTab(draft, tab.id);\r\n }\r\n });\r\n return state;\r\n}\r\n\r\nfunction getWidgetLabel(label: string) {\r\n return label === \"\" ? \"Widget\" : label;\r\n}\r\n\r\ntype WidgetIdTypes =\r\n \"leftStart\" |\r\n \"leftEnd\" |\r\n \"rightStart\" |\r\n \"rightEnd\" |\r\n \"topStart\" |\r\n \"topEnd\" |\r\n \"bottomStart\" |\r\n \"bottomEnd\";\r\n\r\nfunction toStagePanelLocation(side: PanelSide): StagePanelLocation {\r\n switch (side) {\r\n case \"bottom\":\r\n return StagePanelLocation.Bottom;\r\n case \"left\":\r\n return StagePanelLocation.Left;\r\n case \"right\":\r\n return StagePanelLocation.Right;\r\n case \"top\":\r\n return StagePanelLocation.Top;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getWidgetId(side: PanelSide, key: StagePanelZoneDefKeys): WidgetIdTypes {\r\n switch (side) {\r\n case \"left\": {\r\n if (key === \"start\") {\r\n return \"leftStart\";\r\n }\r\n return \"leftEnd\";\r\n }\r\n case \"right\": {\r\n if (key === \"start\") {\r\n return \"rightStart\";\r\n }\r\n return \"rightEnd\";\r\n }\r\n case \"top\": {\r\n if (key === \"start\") {\r\n return \"topStart\";\r\n }\r\n return \"topEnd\";\r\n }\r\n case \"bottom\": {\r\n if (key === \"start\")\r\n return \"bottomStart\";\r\n return \"bottomEnd\";\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getPanelZoneWidgets(frontstageDef: FrontstageDef, panelZone: WidgetIdTypes): WidgetDef[] {\r\n switch (panelZone) {\r\n case \"leftStart\": {\r\n const outArray = [...frontstageDef.centerLeft?.widgetDefs || []];\r\n frontstageDef.leftPanel?.panelZones.start.widgetDefs.forEach((widgetDef)=> {\r\n // istanbul ignore else\r\n if (undefined === outArray.find((widget)=> widget.id === widgetDef.id))\r\n outArray.push(widgetDef);\r\n });\r\n return outArray;\r\n }\r\n case \"leftEnd\": {\r\n const outArray = [...frontstageDef.bottomLeft?.widgetDefs || []];\r\n frontstageDef.leftPanel?.panelZones.end.widgetDefs.forEach((widgetDef)=> {\r\n // istanbul ignore else\r\n if (undefined === outArray.find((widget)=> widget.id === widgetDef.id))\r\n outArray.push(widgetDef);\r\n });\r\n frontstageDef.leftPanel?.panelWidgetDefs.forEach((widgetDef)=> {\r\n // istanbul ignore else\r\n if (undefined === outArray.find((widget)=> widget.id === widgetDef.id))\r\n outArray.push(widgetDef);\r\n });\r\n return outArray;\r\n }\r\n case \"rightStart\": {\r\n const outArray = [...frontstageDef.centerRight?.widgetDefs || []];\r\n frontstageDef.rightPanel?.panelZones.start.widgetDefs.forEach((widgetDef)=> {\r\n // istanbul ignore else\r\n if (undefined === outArray.find((widget)=> widget.id === widgetDef.id))\r\n outArray.push(widgetDef);\r\n });\r\n return outArray;\r\n }\r\n case \"rightEnd\": {\r\n const outArray = [...frontstageDef.bottomRight?.widgetDefs || []];\r\n frontstageDef.rightPanel?.panelZones.end.widgetDefs.forEach((widgetDef)=> {\r\n // istanbul ignore else\r\n if (undefined === outArray.find((widget)=> widget.id === widgetDef.id))\r\n outArray.push(widgetDef);\r\n });\r\n frontstageDef.rightPanel?.panelWidgetDefs.forEach((widgetDef)=> {\r\n // istanbul ignore else\r\n if (undefined === outArray.find((widget)=> widget.id === widgetDef.id))\r\n outArray.push(widgetDef);\r\n });\r\n return outArray;\r\n }\r\n case \"topStart\": {\r\n const outArray = [...frontstageDef.topPanel?.panelWidgetDefs || []];\r\n frontstageDef.topPanel?.panelZones.start.widgetDefs.forEach((widgetDef)=> {\r\n // istanbul ignore else\r\n if (undefined === outArray.find((widget)=> widget.id === widgetDef.id))\r\n outArray.push(widgetDef);\r\n });\r\n return outArray;\r\n }\r\n case \"topEnd\": {\r\n const outArray = [...frontstageDef.topMostPanel?.panelWidgetDefs || []]; // eslint-disable-line deprecation/deprecation\r\n frontstageDef.topPanel?.panelZones.end.widgetDefs.forEach((widgetDef)=> {\r\n // istanbul ignore else\r\n if (undefined === outArray.find((widget)=> widget.id === widgetDef.id))\r\n outArray.push(widgetDef);\r\n });\r\n return outArray;\r\n }\r\n case \"bottomStart\": {\r\n const outArray = [...frontstageDef.bottomPanel?.panelWidgetDefs || []];\r\n frontstageDef.bottomPanel?.panelZones.start.widgetDefs.forEach((widgetDef)=> {\r\n // istanbul ignore else\r\n if (undefined === outArray.find((widget)=> widget.id === widgetDef.id))\r\n outArray.push(widgetDef);\r\n });\r\n return outArray;\r\n }\r\n case \"bottomEnd\": {\r\n const outArray = [...frontstageDef.bottomMostPanel?.panelWidgetDefs || []]; // eslint-disable-line deprecation/deprecation\r\n frontstageDef.bottomPanel?.panelZones.end.widgetDefs.forEach((widgetDef)=> {\r\n // istanbul ignore else\r\n if (undefined === outArray.find((widget)=> widget.id === widgetDef.id))\r\n outArray.push(widgetDef);\r\n });\r\n return outArray;\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function addPanelWidgets(\r\n state: NineZoneState,\r\n frontstageDef: FrontstageDef,\r\n side: PanelSide,\r\n): NineZoneState {\r\n const start = getWidgetId(side, \"start\");\r\n const startWidgets = getPanelZoneWidgets(frontstageDef, start);\r\n state = addWidgets(state, startWidgets, side, start);\r\n\r\n const end = getWidgetId(side, \"end\");\r\n const endWidgets = getPanelZoneWidgets(frontstageDef, end);\r\n state = addWidgets(state, endWidgets, side, end);\r\n return state;\r\n}\r\n\r\n/** @internal */\r\nexport function isFrontstageStateSettingResult(settingsResult: UiStateStorageResult): settingsResult is { // eslint-disable-line deprecation/deprecation\r\n status: UiStateStorageStatus.Success;\r\n setting: WidgetPanelsFrontstageState;\r\n} {\r\n if (settingsResult.status === UiStateStorageStatus.Success)\r\n return true;\r\n return false;\r\n}\r\n\r\n/** @internal */\r\nexport function initializePanel(nineZone: NineZoneState, frontstageDef: FrontstageDef, panelSide: PanelSide) {\r\n nineZone = addPanelWidgets(nineZone, frontstageDef, panelSide);\r\n const location = toStagePanelLocation(panelSide);\r\n const panelDef = frontstageDef.getStagePanelDef(location);\r\n nineZone = produce(nineZone, (draft) => {\r\n const panel = draft.panels[panelSide];\r\n panel.minSize = panelDef?.minSize ?? panel.minSize;\r\n panel.pinned = panelDef?.pinned ?? panel.pinned;\r\n panel.resizable = panelDef?.resizable ?? panel.resizable;\r\n if (panelDef?.maxSizeSpec) {\r\n panel.maxSize = getPanelMaxSize(panelDef.maxSizeSpec, panelSide, nineZone.size);\r\n }\r\n\r\n const size = panelDef?.size;\r\n panel.size = size === undefined ? size : Math.min(Math.max(size, panel.minSize), panel.maxSize);\r\n });\r\n return nineZone;\r\n}\r\n\r\nfunction getPanelMaxSize(maxSizeSpec: StagePanelMaxSizeSpec, panel: PanelSide, nineZoneSize: SizeProps) {\r\n if (typeof maxSizeSpec === \"number\") {\r\n return maxSizeSpec;\r\n }\r\n const size = isHorizontalPanelSide(panel) ? nineZoneSize.height : nineZoneSize.width;\r\n return maxSizeSpec.percentage / 100 * size;\r\n}\r\n\r\nconst stateVersion = 12; // this needs to be bumped when NineZoneState is changed (to recreate layout).\r\n\r\n/** @internal */\r\nexport function initializeNineZoneState(frontstageDef: FrontstageDef): NineZoneState {\r\n let nineZone = defaultNineZone;\r\n nineZone = produce(nineZone, (stateDraft) => {\r\n // istanbul ignore next\r\n if (!FrontstageManager.nineZoneSize)\r\n return;\r\n stateDraft.size = {\r\n height: FrontstageManager.nineZoneSize.height,\r\n width: FrontstageManager.nineZoneSize.width,\r\n };\r\n });\r\n\r\n nineZone = initializePanel(nineZone, frontstageDef, \"left\");\r\n nineZone = initializePanel(nineZone, frontstageDef, \"right\");\r\n nineZone = initializePanel(nineZone, frontstageDef, \"top\");\r\n nineZone = initializePanel(nineZone, frontstageDef, \"bottom\");\r\n nineZone = produce(nineZone, (stateDraft) => {\r\n for (const [, panel] of Object.entries(stateDraft.panels)) {\r\n const expanded = panel.widgets.find((widgetId) => stateDraft.widgets[widgetId].minimized === false);\r\n const firstWidget = panel.widgets.length > 0 ? stateDraft.widgets[panel.widgets[0]] : undefined;\r\n if (!expanded && firstWidget) {\r\n firstWidget.minimized = false;\r\n }\r\n }\r\n stateDraft.panels.left.collapsed = isPanelCollapsed([\r\n frontstageDef.centerLeft?.zoneState,\r\n frontstageDef.bottomLeft?.zoneState,\r\n ], [frontstageDef.leftPanel?.panelState]);\r\n stateDraft.panels.right.collapsed = isPanelCollapsed([\r\n frontstageDef.centerRight?.zoneState,\r\n frontstageDef.bottomRight?.zoneState,\r\n ], [frontstageDef.rightPanel?.panelState]);\r\n stateDraft.panels.top.collapsed = isPanelCollapsed([], [\r\n // istanbul ignore next - ignore topMostPanel if topPanel is defined\r\n frontstageDef.topPanel ? frontstageDef.topPanel?.panelState : frontstageDef.topMostPanel?.panelState,// eslint-disable-line deprecation/deprecation\r\n ]);\r\n stateDraft.panels.bottom.collapsed = isPanelCollapsed([], [\r\n // istanbul ignore next - ignore bottomMostPanel if bottomPanel is defined\r\n frontstageDef.bottomPanel ? frontstageDef.bottomPanel?.panelState : frontstageDef.bottomMostPanel?.panelState, // eslint-disable-line deprecation/deprecation\r\n ]);\r\n\r\n const topCenterDef = frontstageDef.topCenter;\r\n const toolSettingsWidgetDef = topCenterDef?.getSingleWidgetDef();\r\n if (toolSettingsWidgetDef) {\r\n const toolSettingsTab = stateDraft.tabs[toolSettingsTabId];\r\n toolSettingsTab.preferredPanelWidgetSize = toolSettingsWidgetDef.preferredPanelSize;\r\n }\r\n });\r\n nineZone = addMissingWidgets(frontstageDef, nineZone);\r\n nineZone = removeHiddenWidgets(nineZone, frontstageDef);\r\n nineZone = processPopoutWidgets(nineZone, frontstageDef);\r\n\r\n return nineZone;\r\n}\r\n\r\n/** Converts from saved NineZoneState to NineZoneState.\r\n * @note Restores toolSettings tab.\r\n * @note Restores tab labels.\r\n * @internal\r\n */\r\nexport function restoreNineZoneState(frontstageDef: FrontstageDef, saved: SavedNineZoneState): NineZoneState {\r\n let restored: NineZoneState = {\r\n ...saved,\r\n tabs: createTabsState(),\r\n };\r\n restored = produce(restored, (draft) => {\r\n for (const [, tab] of Object.entries(saved.tabs)) {\r\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\r\n if (!widgetDef) {\r\n Logger.logInfo(UiFramework.loggerCategory(restoreNineZoneState), \"WidgetDef is not found for saved tab.\", () => ({\r\n frontstageId: frontstageDef.id,\r\n tabId: tab.id,\r\n }));\r\n removeTab(draft, tab.id);\r\n // let fall through so we preserve preferred sizes of widgets load via UiItemsProvider\r\n }\r\n draft.tabs[tab.id] = {\r\n ...tab,\r\n label: getWidgetLabel(widgetDef?.label ?? \"undefined\"),\r\n iconSpec: widgetDef?.iconSpec,\r\n canPopout: widgetDef?.canPopout,\r\n isFloatingStateWindowResizable: widgetDef?.isFloatingStateWindowResizable,\r\n };\r\n }\r\n\r\n // remove center panel section if one is found in left or right panels\r\n const oldLeftMiddleIndex = saved.panels.left.widgets.findIndex((value) => value === \"leftMiddle\");\r\n // istanbul ignore next\r\n if (-1 !== oldLeftMiddleIndex) {\r\n draft.panels.left.widgets = saved.panels.left.widgets.filter((value) => value !== \"leftMiddle\");\r\n if (\"leftEnd\" in draft.widgets) {\r\n draft.widgets.leftMiddle.tabs.forEach((tab)=>draft.widgets.leftEnd.tabs.push(tab));\r\n } else {\r\n draft.widgets.leftEnd = {...draft.widgets.leftMiddle};\r\n delete draft.widgets.leftMiddle;\r\n }\r\n }\r\n\r\n const oldRightMiddleIndex = saved.panels.right.widgets.findIndex((value) => value === \"rightMiddle\");\r\n // istanbul ignore next\r\n if (-1 !== oldRightMiddleIndex) {\r\n draft.panels.right.widgets = saved.panels.right.widgets.filter((value) => value !== \"rightMiddle\");\r\n if (\"rightEnd\" in draft.widgets) {\r\n draft.widgets.rightMiddle.tabs.forEach((tab)=>draft.widgets.rightEnd.tabs.push(tab));\r\n } else {\r\n draft.widgets.rightEnd = {...draft.widgets.rightMiddle};\r\n delete draft.widgets.rightMiddle;\r\n }\r\n }\r\n\r\n return;\r\n });\r\n if (FrontstageManager.nineZoneSize && (0 !== FrontstageManager.nineZoneSize.height || 0 !== FrontstageManager.nineZoneSize.width)) {\r\n restored = FrameworkStateReducer(restored, {\r\n type: \"RESIZE\",\r\n size: {\r\n height: FrontstageManager.nineZoneSize.height,\r\n width: FrontstageManager.nineZoneSize.width,\r\n },\r\n }, frontstageDef);\r\n }\r\n return restored;\r\n}\r\n\r\n/** Prepares NineZoneState to be saved.\r\n * @note Removes toolSettings tab.\r\n * @note Removes tab labels and iconSpec.\r\n * @internal\r\n */\r\nexport function packNineZoneState(state: NineZoneState): SavedNineZoneState {\r\n let packed: SavedNineZoneState = {\r\n ...state,\r\n tabs: {},\r\n };\r\n packed = produce(packed, (draft) => {\r\n for (const [, tab] of Object.entries(state.tabs)) {\r\n if (tab.id === toolSettingsTabId)\r\n continue;\r\n draft.tabs[tab.id] = {\r\n id: tab.id,\r\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\r\n preferredPopoutWidgetSize: tab.preferredPopoutWidgetSize,\r\n allowedPanelTargets: tab.allowedPanelTargets,\r\n userSized: tab.userSized,\r\n };\r\n }\r\n });\r\n return packed;\r\n}\r\n\r\n/** @internal */\r\nexport function isPanelCollapsed(zoneStates: ReadonlyArray<ZoneState | undefined>, panelStates: ReadonlyArray<StagePanelState | undefined>) {\r\n const openZone = zoneStates.find((zoneState) => zoneState === ZoneState.Open);\r\n const openPanel = panelStates.find((panelState) => panelState === StagePanelState.Open);\r\n return !openZone && !openPanel;\r\n}\r\n\r\n/** FrontstageState is saved in UiStateStorage.\r\n * @internal\r\n */\r\nexport interface WidgetPanelsFrontstageState {\r\n nineZone: SavedNineZoneState;\r\n id: FrontstageDef[\"id\"];\r\n version: number;\r\n stateVersion: number;\r\n}\r\n\r\n// We don't save tab labels or if widget is allowed to \"pop-out\".\r\ntype SavedTabState = Omit<TabState, \"label\" | \"canPopout\" | \"isFloatingStateWindowResizable\" | \"iconSpec\">;\r\n\r\ninterface SavedTabsState {\r\n readonly [id: string]: SavedTabState;\r\n}\r\n\r\n// // We don't save if widget is allowed to \"pop-out\" or if floating widget can be resized.\r\n// type SavedWidgetState = Omit<WidgetState, | \"canPopout\" | \"isFloatingStateWindowResizable\">;\r\n//\r\n// interface SavedWidgetsState {\r\n// readonly [id: string]: SavedWidgetState;\r\n// }\r\n\r\ninterface SavedNineZoneState extends Omit<NineZoneState, \"tabs\"> {\r\n readonly tabs: SavedTabsState;\r\n // readonly widgets: SavedWidgetsState;\r\n}\r\n\r\nfunction addRemovedTab(nineZone: Draft<NineZoneState>, widgetDef: WidgetDef) {\r\n const newTab = createTabState(widgetDef.id, {\r\n label: getWidgetLabel(widgetDef.label),\r\n canPopout: widgetDef.canPopout,\r\n iconSpec: widgetDef.iconSpec,\r\n preferredPanelWidgetSize: widgetDef.preferredPanelSize,\r\n isFloatingStateWindowResizable: widgetDef.isFloatingStateWindowResizable,\r\n });\r\n nineZone.tabs[newTab.id] = newTab;\r\n if (widgetDef.tabLocation.widgetId in nineZone.widgets) {\r\n // Add to existing widget (by widget id).\r\n const widgetId = widgetDef.tabLocation.widgetId;\r\n const newTabWidget = nineZone.widgets[widgetId];\r\n newTabWidget.tabs.splice(widgetDef.tabLocation.tabIndex, 0, newTab.id);\r\n } else {\r\n const newTabPanel = nineZone.panels[widgetDef.tabLocation.side];\r\n if (newTabPanel.maxWidgetCount === newTabPanel.widgets.length) {\r\n // Add to existing panel widget.\r\n const widgetIndex = Math.min(newTabPanel.maxWidgetCount - 1, widgetDef.tabLocation.widgetIndex);\r\n const newTabWidgetId = newTabPanel.widgets[widgetIndex];\r\n const newTabWidget = nineZone.widgets[newTabWidgetId];\r\n newTabWidget.tabs.splice(widgetDef.tabLocation.tabIndex, 0, newTab.id);\r\n } else {\r\n // Create a new panel widget.\r\n const newWidget = createWidgetState(getUniqueId(), [newTab.id]);\r\n nineZone.widgets[newWidget.id] = castDraft(newWidget);\r\n newTabPanel.widgets.splice(widgetDef.tabLocation.widgetIndex, 0, newWidget.id);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const setWidgetState = produce((\r\n nineZone: Draft<NineZoneState>,\r\n widgetDef: WidgetDef,\r\n state: WidgetState,\r\n) => {\r\n if (state === WidgetState.Open) {\r\n const id = widgetDef.id;\r\n let location = findTab(nineZone, id);\r\n if (!location) {\r\n addRemovedTab(nineZone, widgetDef);\r\n location = findTab(nineZone, id);\r\n assert(!!location);\r\n }\r\n const widget = nineZone.widgets[location.widgetId];\r\n widget.minimized = false;\r\n widget.activeTabId = id;\r\n // ensure panel containing widget is not collapsed\r\n // istanbul ignore else\r\n if (\"side\" in location) {\r\n const panel = nineZone.panels[location.side];\r\n panel.collapsed && (panel.collapsed = false);\r\n // istanbul ignore next\r\n if (undefined === panel.size || 0 === panel.size) {\r\n panel.size = panel.minSize ?? 200;\r\n }\r\n }\r\n } else if (state === WidgetState.Closed) {\r\n const id = widgetDef.id;\r\n let location = findTab(nineZone, id);\r\n if (!location) {\r\n addRemovedTab(nineZone, widgetDef);\r\n location = findTab(nineZone, id);\r\n assert(!!location);\r\n }\r\n if (isFloatingLocation(location)) {\r\n const widget = nineZone.widgets[location.widgetId];\r\n if (id !== widget.activeTabId)\r\n return;\r\n widget.minimized = true;\r\n }\r\n } else if (state === WidgetState.Hidden) {\r\n hideWidget(nineZone, widgetDef);\r\n }\r\n});\r\n\r\n/** Stores widget location and hides it in the UI. */\r\nfunction hideWidget(state: Draft<NineZoneState>, widgetDef: WidgetDef) {\r\n const location = findTab(state, widgetDef.id);\r\n if (!location)\r\n return;\r\n const widgetId = location.widgetId;\r\n const side = \"side\" in location ? location.side : \"left\";\r\n const widgetIndex = \"side\" in location ? state.panels[side].widgets.indexOf(widgetId) : 0;\r\n const tabIndex = state.widgets[location.widgetId].tabs.indexOf(widgetDef.id);\r\n widgetDef.tabLocation = {\r\n side,\r\n tabIndex,\r\n widgetId,\r\n widgetIndex,\r\n };\r\n removeTab(state, widgetDef.id);\r\n}\r\n\r\n/** @internal */\r\nexport const showWidget = produce((nineZone: Draft<NineZoneState>, id: TabState[\"id\"]) => {\r\n const location = findTab(nineZone, id);\r\n if (!location)\r\n return;\r\n const widget = nineZone.widgets[location.widgetId];\r\n if (\"side\" in location) {\r\n const panel = nineZone.panels[location.side];\r\n panel.collapsed = false;\r\n widget.minimized = false;\r\n widget.activeTabId = id;\r\n return;\r\n }\r\n widget.activeTabId = id;\r\n widget.minimized = false;\r\n isFloatingLocation(location) && floatingWidgetBringToFront(nineZone, location.floatingWidgetId);\r\n});\r\n\r\n/** @internal */\r\nexport const expandWidget = produce((nineZone: Draft<NineZoneState>, id: TabState[\"id\"]) => {\r\n const location = findTab(nineZone, id);\r\n if (!location)\r\n return;\r\n const widget = nineZone.widgets[location.widgetId];\r\n if (\"side\" in location) {\r\n const panel = nineZone.panels[location.side];\r\n panel.widgets.forEach((wId) => {\r\n const w = nineZone.widgets[wId];\r\n w.minimized = true;\r\n });\r\n widget.minimized = false;\r\n return;\r\n }\r\n widget.minimized = false;\r\n return;\r\n});\r\n\r\n/** @internal */\r\nexport const setWidgetLabel = produce((nineZone: Draft<NineZoneState>, id: TabState[\"id\"], label: string) => {\r\n if (!(id in nineZone.tabs))\r\n return;\r\n\r\n const tab = nineZone.tabs[id];\r\n tab.label = label;\r\n});\r\n\r\n/** @internal */\r\nexport function useSavedFrontstageState(frontstageDef: FrontstageDef) {\r\n const uiStateStorage = useUiStateStorageHandler();\r\n const uiStateStorageRef = React.useRef(uiStateStorage);\r\n const isMountedRef = React.useRef(false);\r\n React.useEffect(() => {\r\n isMountedRef.current = true;\r\n return () => { isMountedRef.current = false; };\r\n }, []);\r\n React.useEffect(() => {\r\n uiStateStorageRef.current = uiStateStorage;\r\n }, [uiStateStorage]);\r\n React.useEffect(() => {\r\n async function fetchFrontstageState() {\r\n if (frontstageDef.nineZoneState) {\r\n frontstageDef.nineZoneState = processPopoutWidgets(frontstageDef.nineZoneState, frontstageDef);\r\n return;\r\n }\r\n const id = frontstageDef.id;\r\n const version = frontstageDef.version;\r\n const settingsResult = await uiStateStorageRef.current.getSetting(FRONTSTAGE_SETTINGS_NAMESPACE, getFrontstageStateSettingName(id));\r\n if (isMountedRef.current) {\r\n if (isFrontstageStateSettingResult(settingsResult) &&\r\n settingsResult.setting.version >= version &&\r\n settingsResult.setting.stateVersion >= stateVersion\r\n ) {\r\n const restored = restoreNineZoneState(frontstageDef, settingsResult.setting.nineZone);\r\n let state = addMissingWidgets(frontstageDef, restored);\r\n state = removeHiddenWidgets(state, frontstageDef);\r\n state = processPopoutWidgets(state, frontstageDef);\r\n frontstageDef.nineZoneState = state;\r\n return;\r\n }\r\n frontstageDef.nineZoneState = initializeNineZoneState(frontstageDef);\r\n }\r\n }\r\n fetchFrontstageState(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }, [frontstageDef]);\r\n}\r\n\r\n/** @internal */\r\nexport function useSaveFrontstageSettings(frontstageDef: FrontstageDef) {\r\n const nineZone = useNineZoneState(frontstageDef);\r\n const uiSettingsStorage = useUiStateStorageHandler();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const saveSetting = React.useCallback(debounce(async (id: string, version: number, state: NineZoneState) => {\r\n const setting: WidgetPanelsFrontstageState = {\r\n id,\r\n nineZone: packNineZoneState(state),\r\n stateVersion,\r\n version,\r\n };\r\n await uiSettingsStorage.saveSetting(FRONTSTAGE_SETTINGS_NAMESPACE, getFrontstageStateSettingName(id), setting);\r\n }, 1000), [uiSettingsStorage]);\r\n React.useEffect(() => {\r\n return () => {\r\n saveSetting.cancel();\r\n };\r\n }, [saveSetting]);\r\n React.useEffect(() => {\r\n if (!nineZone || nineZone.draggedTab)\r\n return;\r\n saveSetting(frontstageDef.id, frontstageDef.version, nineZone);\r\n }, [frontstageDef, nineZone, saveSetting]);\r\n}\r\n\r\n/** @internal */\r\nexport const FRONTSTAGE_SETTINGS_NAMESPACE = \"uifw-frontstageSettings\";\r\n\r\n/** @internal */\r\nexport function getFrontstageStateSettingName(frontstageId: WidgetPanelsFrontstageState[\"id\"]) {\r\n return `frontstageState[${frontstageId}]`;\r\n}\r\n\r\n// istanbul ignore next\r\nfunction debounce<T extends (...args: any[]) => any>(func: T, duration: number) {\r\n let timeout: number | undefined;\r\n const debounced = (...args: Parameters<T>) => {\r\n const handler = () => {\r\n timeout = undefined;\r\n return func(...args);\r\n };\r\n window.clearTimeout(timeout);\r\n timeout = window.setTimeout(handler, duration);\r\n };\r\n debounced.cancel = () => {\r\n window.clearTimeout(timeout);\r\n };\r\n return debounced;\r\n}\r\n\r\nconst createListener = <T extends (...args: any[]) => void>(frontstageDef: FrontstageDef, listener: T) => {\r\n return (...args: Parameters<T>) => {\r\n if (!frontstageDef.nineZoneState)\r\n return;\r\n listener(...args);\r\n };\r\n};\r\n\r\n/** @internal */\r\nexport function useFrontstageManager(frontstageDef: FrontstageDef) {\r\n React.useEffect(() => {\r\n const listener = createListener(frontstageDef, ({ widgetDef, widgetState }: WidgetStateChangedEventArgs) => {\r\n assert(!!frontstageDef.nineZoneState);\r\n frontstageDef.nineZoneState = setWidgetState(frontstageDef.nineZoneState, widgetDef, widgetState);\r\n });\r\n FrontstageManager.onWidgetStateChangedEvent.addListener(listener);\r\n return () => {\r\n FrontstageManager.onWidgetStateChangedEvent.removeListener(listener);\r\n };\r\n }, [frontstageDef]);\r\n React.useEffect(() => {\r\n const listener = createListener(frontstageDef, ({ widgetDef }: WidgetEventArgs) => {\r\n assert(!!frontstageDef.nineZoneState);\r\n frontstageDef.nineZoneState = showWidget(frontstageDef.nineZoneState, widgetDef.id);\r\n });\r\n FrontstageManager.onWidgetShowEvent.addListener(listener);\r\n return () => {\r\n FrontstageManager.onWidgetShowEvent.removeListener(listener);\r\n };\r\n }, [frontstageDef]);\r\n React.useEffect(() => {\r\n const listener = createListener(frontstageDef, ({ widgetDef }: WidgetEventArgs) => {\r\n assert(!!frontstageDef.nineZoneState);\r\n let nineZoneState = showWidget(frontstageDef.nineZoneState, widgetDef.id);\r\n nineZoneState = expandWidget(nineZoneState, widgetDef.id);\r\n frontstageDef.nineZoneState = nineZoneState;\r\n });\r\n FrontstageManager.onWidgetExpandEvent.addListener(listener);\r\n return () => {\r\n FrontstageManager.onWidgetExpandEvent.removeListener(listener);\r\n };\r\n }, [frontstageDef]);\r\n const uiSettingsStorage = useUiStateStorageHandler();\r\n React.useEffect(() => {\r\n const listener = (args: FrontstageEventArgs) => {\r\n // TODO: track restoring frontstages to support workflows: i.e. prevent loading frontstage OR saving layout when delete is pending\r\n uiSettingsStorage.deleteSetting(FRONTSTAGE_SETTINGS_NAMESPACE, getFrontstageStateSettingName(args.frontstageDef.id)); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n if (frontstageDef.id === args.frontstageDef.id) {\r\n args.frontstageDef.nineZoneState = initializeNineZoneState(frontstageDef);\r\n } else {\r\n args.frontstageDef.nineZoneState = undefined;\r\n }\r\n };\r\n FrontstageManager.onFrontstageRestoreLayoutEvent.addListener(listener);\r\n return () => {\r\n FrontstageManager.onFrontstageRestoreLayoutEvent.removeListener(listener);\r\n };\r\n }, [uiSettingsStorage, frontstageDef]);\r\n React.useEffect(() => {\r\n const listener = createListener(frontstageDef, ({ widgetDef }: WidgetEventArgs) => {\r\n assert(!!frontstageDef.nineZoneState);\r\n const label = widgetDef.label;\r\n frontstageDef.nineZoneState = setWidgetLabel(frontstageDef.nineZoneState, widgetDef.id, label);\r\n });\r\n FrontstageManager.onWidgetLabelChangedEvent.addListener(listener);\r\n return () => {\r\n FrontstageManager.onWidgetLabelChangedEvent.removeListener(listener);\r\n };\r\n }, [frontstageDef]);\r\n}\r\n\r\n/** @internal */\r\n// istanbul ignore next\r\nexport function useItemsManager(frontstageDef: FrontstageDef) {\r\n const refreshNineZoneState = (def: FrontstageDef) => {\r\n // Fired for both registered/unregistered. Update definitions and remove/add missing widgets.\r\n def.updateWidgetDefs();\r\n let state = def.nineZoneState;\r\n if (!state)\r\n return;\r\n state = addMissingWidgets(def, state);\r\n state = removeMissingWidgets(def, state);\r\n state = removeHiddenWidgets(state, def); // TODO: should only apply to widgets provided by registered provider in onUiProviderRegisteredEvent.\r\n def.nineZoneState = state;\r\n };\r\n\r\n React.useEffect(() => {\r\n const remove = UiItemsManager.onUiProviderRegisteredEvent.addListener(() => {\r\n refreshNineZoneState(frontstageDef);\r\n });\r\n // Need to refresh anytime frontstageDef changes because uiItemsProvider may have added something to\r\n // another stage before it was possibly unloaded in this stage.\r\n refreshNineZoneState(frontstageDef);\r\n return remove;\r\n }, [frontstageDef]);\r\n}\r\n\r\nfunction tabShownInCurrentWidget(def: WidgetDef, state: NineZoneState) {\r\n for (const [, widget] of Object.entries(state.widgets)) {\r\n const foundTab = widget.tabs.find((tabId) => tabId === def.id);\r\n // istanbul ignore else\r\n if (foundTab)\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n// istanbul ignore next\r\nfunction determineNewWidgets(defs: readonly WidgetDef[] | undefined, state: NineZoneState) {\r\n // if tab for widget.id is not found or the label does not match widget label (label is set to \"undefined\" when widgetDef is not initially available)\r\n return (defs || []).filter((def) => !(def.id in state.tabs) || !tabShownInCurrentWidget(def, state));\r\n}\r\n\r\n/** @internal */\r\nexport async function saveFrontstagePopoutWidgetSizeAndPosition(state: NineZoneState, stageId: string, stageVersion: number, childWindowId: string, childWindow: Window) {\r\n const location = findWidget(state, childWindowId);\r\n // istanbul ignore else\r\n if (location) {\r\n const adjustmentWidth = ProcessDetector.isElectronAppFrontend ? 16 : 0;\r\n const adjustmentHeight = ProcessDetector.isElectronAppFrontend ? 39 : 0;\r\n const newState = produce(state, (draft) => {\r\n const widget = draft.widgets[childWindowId];\r\n const tab = draft.tabs[widget.activeTabId];\r\n tab.preferredPopoutWidgetSize = {\r\n x: childWindow.screenX,\r\n y: childWindow.screenY,\r\n width: childWindow.innerWidth + adjustmentWidth,\r\n height: childWindow.innerHeight + adjustmentHeight,\r\n };\r\n });\r\n\r\n const setting: WidgetPanelsFrontstageState = {\r\n id: stageId,\r\n nineZone: packNineZoneState(newState),\r\n stateVersion,\r\n version: stageVersion,\r\n };\r\n await UiFramework.getUiStateStorage().saveSetting(FRONTSTAGE_SETTINGS_NAMESPACE, getFrontstageStateSettingName(stageId), setting);\r\n return newState;\r\n }\r\n // istanbul ignore next\r\n return state;\r\n}\r\n"]}
|
|
@@ -9,6 +9,7 @@ import { CommandItemDef } from "../shared/CommandItemDef";
|
|
|
9
9
|
import { ItemList } from "../shared/ItemMap";
|
|
10
10
|
import { WidgetControl } from "./WidgetControl";
|
|
11
11
|
import { WidgetProps } from "./WidgetProps";
|
|
12
|
+
import { IconSpec, SizeProps } from "@itwin/core-react";
|
|
12
13
|
/** Widget State Changed Event Args interface.
|
|
13
14
|
* @public
|
|
14
15
|
*/
|
|
@@ -102,11 +103,13 @@ export declare class WidgetDef {
|
|
|
102
103
|
private _widgetType;
|
|
103
104
|
private _applicationData?;
|
|
104
105
|
private _iconSpec?;
|
|
106
|
+
private _internalData?;
|
|
105
107
|
private _badgeType?;
|
|
106
108
|
private _onWidgetStateChanged?;
|
|
107
109
|
private _saveTransientState?;
|
|
108
110
|
private _restoreTransientState?;
|
|
109
111
|
private _preferredPanelSize;
|
|
112
|
+
private _defaultFloatingSize;
|
|
110
113
|
private _canPopout?;
|
|
111
114
|
private _floatingContainerId?;
|
|
112
115
|
private _defaultFloatingPosition;
|
|
@@ -127,7 +130,8 @@ export declare class WidgetDef {
|
|
|
127
130
|
get stateFunc(): WidgetStateFunc | undefined;
|
|
128
131
|
get applicationData(): any | undefined;
|
|
129
132
|
get isFloating(): boolean;
|
|
130
|
-
get iconSpec():
|
|
133
|
+
get iconSpec(): IconSpec;
|
|
134
|
+
set iconSpec(spec: IconSpec);
|
|
131
135
|
get badgeType(): BadgeType | undefined;
|
|
132
136
|
get initialProps(): WidgetProps | undefined;
|
|
133
137
|
get widgetType(): WidgetType;
|
|
@@ -139,6 +143,9 @@ export declare class WidgetDef {
|
|
|
139
143
|
get defaultFloatingPosition(): PointProps | undefined;
|
|
140
144
|
set defaultFloatingPosition(position: PointProps | undefined);
|
|
141
145
|
/** @internal */
|
|
146
|
+
get defaultFloatingSize(): SizeProps | undefined;
|
|
147
|
+
set defaultFloatingSize(size: SizeProps | undefined);
|
|
148
|
+
/** @internal */
|
|
142
149
|
get defaultState(): WidgetState;
|
|
143
150
|
constructor(widgetProps: WidgetProps);
|
|
144
151
|
static initializeFromWidgetProps(widgetProps: WidgetProps, me: WidgetDef): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetDef.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widgets/WidgetDef.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,sBAAsB,EAAE,UAAU,EAAE,YAAY,EAAW,OAAO,EAAmB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzK,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAA0B,gCAAgC,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAG9I,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetDef.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widgets/WidgetDef.tsx"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ const SyncUiEventDispatcher_1 = require("../syncui/SyncUiEventDispatcher");
|
|
|
16
16
|
const UiFramework_1 = require("../UiFramework");
|
|
17
17
|
const PropsHelper_1 = require("../utils/PropsHelper");
|
|
18
18
|
const StatusBarWidgetComposerControl_1 = require("./StatusBarWidgetComposerControl");
|
|
19
|
+
const core_react_1 = require("@itwin/core-react");
|
|
19
20
|
const widgetStateNameMap = new Map([
|
|
20
21
|
[appui_abstract_1.WidgetState.Closed, "Closed"],
|
|
21
22
|
[appui_abstract_1.WidgetState.Floating, "Floating"],
|
|
@@ -90,8 +91,9 @@ class WidgetDef {
|
|
|
90
91
|
if ("1" === UiFramework_1.UiFramework.uiVersion)
|
|
91
92
|
return this._state;
|
|
92
93
|
const frontstageDef = FrontstageManager_1.FrontstageManager.activeFrontstageDef;
|
|
93
|
-
if (frontstageDef
|
|
94
|
+
if (frontstageDef && frontstageDef.findWidgetDef(this.id)) {
|
|
94
95
|
const currentState = frontstageDef.getWidgetCurrentState(this);
|
|
96
|
+
// istanbul ignore else
|
|
95
97
|
if (undefined !== currentState)
|
|
96
98
|
return currentState;
|
|
97
99
|
}
|
|
@@ -111,7 +113,8 @@ class WidgetDef {
|
|
|
111
113
|
get stateFunc() { return this._stateFunc; }
|
|
112
114
|
get applicationData() { return this._applicationData; }
|
|
113
115
|
get isFloating() { return this.state === appui_abstract_1.WidgetState.Floating; }
|
|
114
|
-
get iconSpec() { return this._iconSpec; }
|
|
116
|
+
get iconSpec() { return this._iconSpec === core_react_1.IconHelper.reactIconKey ? core_react_1.IconHelper.getIconReactNode(this._iconSpec, this._internalData) : this._iconSpec; }
|
|
117
|
+
set iconSpec(spec) { this._iconSpec = this._internalData ? core_react_1.IconHelper.getIconData(spec, this._internalData) : spec; }
|
|
115
118
|
get badgeType() { return this._badgeType; }
|
|
116
119
|
get initialProps() { return this._initialProps; }
|
|
117
120
|
get widgetType() { return this._widgetType; }
|
|
@@ -123,6 +126,9 @@ class WidgetDef {
|
|
|
123
126
|
get defaultFloatingPosition() { return this._defaultFloatingPosition; }
|
|
124
127
|
set defaultFloatingPosition(position) { this._defaultFloatingPosition = position; }
|
|
125
128
|
/** @internal */
|
|
129
|
+
get defaultFloatingSize() { return this._defaultFloatingSize; }
|
|
130
|
+
set defaultFloatingSize(size) { this._defaultFloatingSize = size; }
|
|
131
|
+
/** @internal */
|
|
126
132
|
get defaultState() { return this._defaultState; }
|
|
127
133
|
static initializeFromWidgetProps(widgetProps, me) {
|
|
128
134
|
me._initialProps = widgetProps;
|
|
@@ -145,6 +151,7 @@ class WidgetDef {
|
|
|
145
151
|
me._classId = widgetProps.classId;
|
|
146
152
|
if (widgetProps.defaultState !== undefined) {
|
|
147
153
|
me._defaultState = widgetProps.defaultState;
|
|
154
|
+
// istanbul ignore next
|
|
148
155
|
if ("1" === UiFramework_1.UiFramework.uiVersion)
|
|
149
156
|
me._state = widgetProps.defaultState === appui_abstract_1.WidgetState.Floating ? appui_abstract_1.WidgetState.Open : widgetProps.defaultState;
|
|
150
157
|
}
|
|
@@ -168,12 +175,15 @@ class WidgetDef {
|
|
|
168
175
|
me._widgetReactNode = widgetProps.element;
|
|
169
176
|
if (widgetProps.iconSpec !== undefined)
|
|
170
177
|
me._iconSpec = widgetProps.iconSpec;
|
|
178
|
+
if (widgetProps.internalData)
|
|
179
|
+
me._internalData = widgetProps.internalData;
|
|
171
180
|
// istanbul ignore if
|
|
172
|
-
if (widgetProps.icon !== undefined)
|
|
181
|
+
if (widgetProps.icon !== undefined && me._iconSpec === undefined)
|
|
173
182
|
me._iconSpec = widgetProps.icon;
|
|
174
183
|
if (widgetProps.badgeType !== undefined)
|
|
175
184
|
me._badgeType = widgetProps.badgeType;
|
|
176
185
|
me._preferredPanelSize = widgetProps.preferredPanelSize;
|
|
186
|
+
me._defaultFloatingSize = widgetProps.defaultFloatingSize;
|
|
177
187
|
me._onWidgetStateChanged = widgetProps.onWidgetStateChanged;
|
|
178
188
|
me._saveTransientState = widgetProps.saveTransientState;
|
|
179
189
|
me._restoreTransientState = widgetProps.restoreTransientState;
|