@itwin/appui-react 4.6.3 → 4.6.4
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 +11 -1
- package/lib/cjs/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/FloatingViewportContent.js +1 -2
- package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +22 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js +23 -7
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js +1 -0
- package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/esm/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
- package/lib/esm/appui-react/content/FloatingViewportContent.js +1 -2
- package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +22 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.js +23 -7
- package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js +1 -0
- package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
# Change Log - @itwin/appui-react
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Mon, 20 Nov 2023 19:07:50 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 4.6.4
|
|
6
|
+
Mon, 20 Nov 2023 19:07:50 GMT
|
|
7
|
+
|
|
8
|
+
### Updates
|
|
9
|
+
|
|
10
|
+
- Hidden widget will now open to default position and size of CanFloat property when set to floating
|
|
11
|
+
- Fixed an issue where frontstage state changes would be lost when it is closed too soon after the change.
|
|
12
|
+
- Remove unneeded `changeView` call on `FloatingViewportComponent`
|
|
13
|
+
- Refresh tool setting values when undocking
|
|
4
14
|
|
|
5
15
|
## 4.6.3
|
|
6
16
|
Wed, 25 Oct 2023 09:39:22 GMT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatingViewportContent.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/content/FloatingViewportContent.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAOpE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,wFAAwF;IACxF,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC;IACjD,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,iIAAiI;IACjI,gBAAgB,EAAE,aAAa,CAAC;IAChC,wDAAwD;IACxD,WAAW,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;CACzC;AAED,YAAY;AACZ,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,eAO1E;AAED,aAAa;AACb,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACrC;AAED,aAAa;AACb,wBAAgB,8BAA8B,CAAC,EAC7C,QAAQ,GACT,EAAE,mCAAmC,eAarC;AAED,aAAa;AACb,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,4BAA4B;;
|
|
1
|
+
{"version":3,"file":"FloatingViewportContent.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/content/FloatingViewportContent.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAOpE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,wFAAwF;IACxF,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC;IACjD,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,iIAAiI;IACjI,gBAAgB,EAAE,aAAa,CAAC;IAChC,wDAAwD;IACxD,WAAW,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;CACzC;AAED,YAAY;AACZ,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,eAO1E;AAED,aAAa;AACb,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACrC;AAED,aAAa;AACb,wBAAgB,8BAA8B,CAAC,EAC7C,QAAQ,GACT,EAAE,mCAAmC,eAarC;AAED,aAAa;AACb,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,4BAA4B;;EAwErE"}
|
|
@@ -61,9 +61,8 @@ function useFloatingViewport(args) {
|
|
|
61
61
|
if (null === contentControl.current.reactNode) {
|
|
62
62
|
contentControl.current.reactNode = viewportControl;
|
|
63
63
|
}
|
|
64
|
-
void contentControl.current.viewport.changeView(viewState);
|
|
65
64
|
}
|
|
66
|
-
}, [
|
|
65
|
+
}, [viewport, viewportControl]);
|
|
67
66
|
React.useEffect(() => {
|
|
68
67
|
const onViewClose = (vp) => {
|
|
69
68
|
if (contentControl.current?.viewport === vp) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatingViewportContent.js","sourceRoot":"","sources":["../../../../src/appui-react/content/FloatingViewportContent.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FloatingViewportContent.js","sourceRoot":"","sources":["../../../../src/appui-react/content/FloatingViewportContent.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ContentView\n */\n\nimport * as React from \"react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type { ViewStateProp } from \"@itwin/imodel-components-react\";\nimport { ViewportComponent } from \"@itwin/imodel-components-react\";\nimport { FloatingViewportContentControl } from \"./ViewportContentControl\";\nimport { ContentWrapper } from \"./ContentLayout\";\nimport { UiFramework } from \"../UiFramework\";\nimport { useRefs } from \"@itwin/core-react\";\n\n/**\n * @beta\n */\nexport interface FloatingViewportContentProps {\n /** callback used to construct context menu when user right-clicks on canvas/viewport */\n onContextMenu?: (e: React.MouseEvent) => boolean;\n /** viewport/content control uniqueId */\n contentId: string;\n /** The initial view state used to create the viewport, or a function that returns it (will refresh when the function changes) */\n initialViewState: ViewStateProp;\n /** Function to get a reference to the ScreenViewport */\n viewportRef?: React.Ref<ScreenViewport>;\n}\n\n/** @beta */\nexport function FloatingViewportContent(props: FloatingViewportContentProps) {\n const { viewportControl } = useFloatingViewport(props);\n return (\n <FloatingViewportContentWrapper>\n {viewportControl}\n </FloatingViewportContentWrapper>\n );\n}\n\n/** @alpha */\nexport interface FloatingViewportContentWrapperProps {\n readonly children?: React.ReactNode;\n}\n\n/** @alpha */\nexport function FloatingViewportContentWrapper({\n children,\n}: FloatingViewportContentWrapperProps) {\n return (\n <div\n onMouseMove={UiFramework.visibility.handleContentMouseMove}\n className=\"uifw-dialog-imodel-content\"\n style={{ height: \"100%\", position: \"relative\" }}\n >\n <ContentWrapper\n content={children}\n style={{ height: \"100%\", position: \"relative\" }}\n />\n </div>\n );\n}\n\n/** @alpha */\nexport function useFloatingViewport(args: FloatingViewportContentProps) {\n const { contentId, initialViewState, onContextMenu, viewportRef } = args;\n const [viewport, setViewport] = React.useState<ScreenViewport | undefined>();\n const contentControl = React.useRef<\n FloatingViewportContentControl | undefined\n >();\n\n const viewState = React.useMemo(\n () =>\n typeof initialViewState === \"function\"\n ? initialViewState()\n : initialViewState,\n [initialViewState]\n );\n const ref = React.useCallback((v: ScreenViewport) => {\n setViewport(v);\n }, []);\n\n const refs = useRefs(ref, viewportRef);\n const viewportControl = React.useMemo(() => {\n const node = (\n <ViewportComponent\n key={contentId}\n imodel={viewState.iModel}\n viewState={viewState}\n controlId={contentId}\n onContextMenu={onContextMenu}\n viewportRef={refs}\n />\n );\n return node;\n }, [refs, onContextMenu, viewState, contentId]);\n\n React.useEffect(() => {\n if (!contentControl.current) {\n contentControl.current = new FloatingViewportContentControl(\n contentId,\n contentId,\n null\n );\n UiFramework.content.addFloatingContentControl(contentControl.current);\n }\n return () => {\n if (contentControl.current) {\n UiFramework.content.dropFloatingContentControl(contentControl.current);\n contentControl.current = undefined;\n }\n };\n }, [contentId]);\n\n React.useEffect(() => {\n if (viewport && contentControl.current) {\n contentControl.current.viewport = viewport;\n if (null === contentControl.current.reactNode) {\n contentControl.current.reactNode = viewportControl;\n }\n }\n }, [viewport, viewportControl]);\n\n React.useEffect(() => {\n const onViewClose = (vp: ScreenViewport) => {\n if (contentControl.current?.viewport === vp) {\n UiFramework.content.dropFloatingContentControl(contentControl.current);\n contentControl.current = undefined;\n }\n };\n return IModelApp.viewManager.onViewClose.addListener(onViewClose);\n }, []);\n\n return {\n viewportControl,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -674,6 +674,7 @@ exports.useSavedFrontstageState = useSavedFrontstageState;
|
|
|
674
674
|
/** @internal */
|
|
675
675
|
function useSaveFrontstageSettings(frontstageDef, store) {
|
|
676
676
|
const uiSettingsStorage = (0, useUiStateStorage_1.useUiStateStorageHandler)();
|
|
677
|
+
const pendingSave = React.useRef(() => { });
|
|
677
678
|
const saveSetting = React.useMemo(() => {
|
|
678
679
|
const debounced = debounce(async (frontstage, state) => {
|
|
679
680
|
const id = frontstage.id;
|
|
@@ -691,6 +692,7 @@ function useSaveFrontstageSettings(frontstageDef, store) {
|
|
|
691
692
|
debounced(frontstage, state);
|
|
692
693
|
};
|
|
693
694
|
save.cancel = debounced.cancel;
|
|
695
|
+
pendingSave.current = debounced.immediate;
|
|
694
696
|
return save;
|
|
695
697
|
}, [uiSettingsStorage]);
|
|
696
698
|
React.useEffect(() => {
|
|
@@ -706,6 +708,11 @@ function useSaveFrontstageSettings(frontstageDef, store) {
|
|
|
706
708
|
saveSetting(frontstageDef, store.getState());
|
|
707
709
|
});
|
|
708
710
|
}, [saveSetting, frontstageDef, store]);
|
|
711
|
+
React.useEffect(() => {
|
|
712
|
+
return () => {
|
|
713
|
+
pendingSave.current();
|
|
714
|
+
};
|
|
715
|
+
}, [frontstageDef]);
|
|
709
716
|
}
|
|
710
717
|
exports.useSaveFrontstageSettings = useSaveFrontstageSettings;
|
|
711
718
|
/** @internal */
|
|
@@ -718,16 +725,30 @@ exports.getFrontstageStateSettingName = getFrontstageStateSettingName;
|
|
|
718
725
|
// istanbul ignore next
|
|
719
726
|
function debounce(func, duration) {
|
|
720
727
|
let timeout;
|
|
728
|
+
let handler;
|
|
721
729
|
const debounced = (...args) => {
|
|
722
|
-
|
|
730
|
+
handler = () => {
|
|
723
731
|
timeout = undefined;
|
|
724
732
|
return func(...args);
|
|
725
733
|
};
|
|
726
734
|
window.clearTimeout(timeout);
|
|
727
735
|
timeout = window.setTimeout(handler, duration);
|
|
728
736
|
};
|
|
737
|
+
/**
|
|
738
|
+
* Will cancel the timeout without running the function.
|
|
739
|
+
*/
|
|
729
740
|
debounced.cancel = () => {
|
|
730
741
|
window.clearTimeout(timeout);
|
|
742
|
+
timeout = undefined;
|
|
743
|
+
};
|
|
744
|
+
/**
|
|
745
|
+
* If not already ran, will run the function immediately and remove the timeout.
|
|
746
|
+
*/
|
|
747
|
+
debounced.immediate = () => {
|
|
748
|
+
if (timeout === undefined)
|
|
749
|
+
return;
|
|
750
|
+
debounced.cancel();
|
|
751
|
+
handler?.();
|
|
731
752
|
};
|
|
732
753
|
return debounced;
|
|
733
754
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Frontstage.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\n// cSpell:ignore popout\n\nimport \"./Frontstage.scss\";\nimport produce from \"immer\";\nimport * as React from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport { Logger, ProcessDetector } from \"@itwin/core-bentley\";\nimport type { UiStateStorageResult } from \"@itwin/core-react\";\nimport { Rectangle, UiStateStorageStatus } from \"@itwin/core-react\";\nimport { ToolbarPopupAutoHideContext } from \"@itwin/components-react\";\nimport type {\n FloatingWidgetHomeState,\n LayoutStore,\n NineZoneLabels,\n NineZoneState,\n PanelSide,\n TabState,\n} from \"@itwin/appui-layout-react\";\nimport {\n addDockedToolSettings,\n addFloatingWidget,\n addPanelWidget,\n addRemovedTab,\n addTab,\n addTabToWidget,\n createLayoutStore,\n createNineZoneState,\n floatingWidgetBringToFront,\n FloatingWidgets,\n getTabLocation,\n getUniqueId,\n getWidgetPanelSectionId,\n isFloatingTabLocation,\n isPanelTabLocation,\n NineZone,\n NineZoneStateReducer,\n removeTab,\n WidgetPanels,\n} from \"@itwin/appui-layout-react\";\nimport {\n type FrontstageDef,\n useActiveFrontstageDef,\n} from \"../frontstage/FrontstageDef\";\nimport { StagePanelState, toPanelSide } from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport type { WidgetDef } from \"../widgets/WidgetDef\";\nimport { WidgetContent } from \"./Content\";\nimport { WidgetPanelsFrontstageContent } from \"./FrontstageContent\";\nimport {\n ModalFrontstageComposer,\n useActiveModalFrontstageInfo,\n} from \"./ModalFrontstageComposer\";\nimport { WidgetPanelsStatusBar } from \"./StatusBar\";\nimport { WidgetPanelsTab } from \"./Tab\";\nimport { WidgetPanelsToolbars } from \"./Toolbars\";\nimport { ToolSettingsContent, WidgetPanelsToolSettings } from \"./ToolSettings\";\nimport { useEscapeSetFocusToHome } from \"../hooks/useEscapeSetFocusToHome\";\nimport type { FrameworkRootState } from \"../redux/StateManager\";\nimport { useSelector } from \"react-redux\";\nimport { useUiVisibility } from \"../hooks/useUiVisibility\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { FloatingWidget } from \"./FloatingWidget\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager\";\nimport { WidgetState } from \"../widgets/WidgetState\";\nimport { StagePanelSection } from \"../stagepanels/StagePanelSection\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport { UiItemsManager } from \"../ui-items-provider/UiItemsManager\";\n\nfunction WidgetPanelsFrontstageComponent() {\n const activeModalFrontstageInfo = useActiveModalFrontstageInfo();\n const uiIsVisible = useUiVisibility();\n\n return (\n <>\n <WidgetPanelsToolSettings />\n <ToolbarPopupAutoHideContext.Provider value={!uiIsVisible}>\n <ModalFrontstageComposer stageInfo={activeModalFrontstageInfo} />\n <WidgetPanels\n className=\"uifw-widgetPanels\"\n centerContent={<WidgetPanelsToolbars />}\n >\n <WidgetPanelsFrontstageContent />\n </WidgetPanels>\n <WidgetPanelsStatusBar />\n <FloatingWidgets />\n </ToolbarPopupAutoHideContext.Provider>\n </>\n );\n}\n\nconst widgetContent = <WidgetContent />;\nconst toolSettingsContent = <ToolSettingsContent />;\nconst widgetPanelsFrontstage = <WidgetPanelsFrontstageComponent />;\n\n/** @internal */\nexport function useLayoutStore(frontstageDef: FrontstageDef | undefined) {\n const layoutStore = React.useMemo(\n () => createLayoutStore(frontstageDef?.nineZoneState),\n [frontstageDef]\n );\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n unstable_batchedUpdates(() => {\n // https://github.com/pmndrs/zustand/blob/main/docs/guides/event-handler-in-pre-react-18.md\n layoutStore.setState(args.state || defaultNineZone);\n });\n }\n );\n }, [frontstageDef, layoutStore]);\n return layoutStore;\n}\n\n/** Update in-memory NineZoneState of newly activated frontstage with up to date size.\n * @internal\n */\nexport function useUpdateNineZoneSize(frontstageDef: FrontstageDef) {\n React.useEffect(() => {\n const size = InternalFrontstageManager.nineZoneSize;\n const state = frontstageDef.nineZoneState;\n if (!size || !state) return;\n frontstageDef.dispatch({\n type: \"RESIZE\",\n size: {\n height: size.height,\n width: size.width,\n },\n });\n }, [frontstageDef]);\n}\n\n/** @internal */\nexport function useNineZoneDispatch(frontstageDef: FrontstageDef) {\n return React.useMemo(() => frontstageDef.dispatch, [frontstageDef]);\n}\n\n/** @internal */\nexport function WidgetPanelsFrontstage() {\n const frontstageDef = useActiveFrontstageDef();\n const layout = useLayoutStore(frontstageDef);\n\n React.useEffect(() => {\n const triggerWidowCloseProcessing = () => {\n frontstageDef && frontstageDef.setIsApplicationClosing(true);\n };\n window.addEventListener(\"unload\", triggerWidowCloseProcessing);\n return () => {\n window.removeEventListener(\"unload\", triggerWidowCloseProcessing);\n };\n }, [frontstageDef]);\n\n if (!frontstageDef) return null;\n return (\n <ActiveFrontstageDefProvider\n frontstageDef={frontstageDef}\n layout={layout}\n />\n );\n}\n\nconst defaultNineZone = createNineZoneState();\nconst tabElement = <WidgetPanelsTab />;\nconst floatingWidgetElement = <FloatingWidget />;\n\ninterface ActiveFrontstageDefProviderProps {\n layout: LayoutStore;\n frontstageDef: FrontstageDef;\n}\n\n/** @internal */\nexport function ActiveFrontstageDefProvider({\n frontstageDef,\n layout,\n}: ActiveFrontstageDefProviderProps) {\n const dispatch = useNineZoneDispatch(frontstageDef);\n useUpdateNineZoneSize(frontstageDef);\n useSavedFrontstageState(frontstageDef);\n useSaveFrontstageSettings(frontstageDef, layout);\n useItemsManager(frontstageDef);\n const labels = useLabels();\n const uiIsVisible = useUiVisibility();\n const showWidgetIcon = useSelector((state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.showWidgetIcon;\n });\n const autoCollapseUnpinnedPanels = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.autoCollapseUnpinnedPanels;\n }\n );\n const animateToolSettings = useSelector((state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.animateToolSettings;\n });\n const useToolAsToolSettingsLabel = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.useToolAsToolSettingsLabel;\n }\n );\n useFrontstageManager(frontstageDef, useToolAsToolSettingsLabel);\n\n const handleKeyDown = useEscapeSetFocusToHome();\n\n return (\n <div\n className=\"uifw-widgetPanels-frontstage\"\n onKeyDown={handleKeyDown}\n role=\"presentation\"\n >\n <NineZone\n dispatch={dispatch}\n labels={labels}\n layout={layout}\n tab={tabElement}\n floatingWidget={floatingWidgetElement}\n showWidgetIcon={showWidgetIcon}\n autoCollapseUnpinnedPanels={autoCollapseUnpinnedPanels}\n toolSettingsContent={toolSettingsContent}\n widgetContent={widgetContent}\n animateDockedToolSettings={animateToolSettings}\n uiIsVisible={uiIsVisible}\n >\n {widgetPanelsFrontstage}\n </NineZone>\n </div>\n );\n}\n\n/** @internal */\nexport function useLabels() {\n return React.useMemo<NineZoneLabels>(\n () => ({\n dockToolSettingsTitle: UiFramework.translate(\n \"widget.tooltips.dockToolSettings\"\n ),\n moreWidgetsTitle: UiFramework.translate(\"widget.tooltips.moreWidgets\"),\n moreToolSettingsTitle: UiFramework.translate(\n \"widget.tooltips.moreToolSettings\"\n ),\n pinPanelTitle: UiFramework.translate(\"widget.tooltips.pinPanel\"),\n resizeGripTitle: UiFramework.translate(\"widget.tooltips.resizeGrip\"),\n sendWidgetHomeTitle: UiFramework.translate(\"widget.tooltips.sendHome\"),\n toolSettingsHandleTitle: UiFramework.translate(\n \"widget.tooltips.toolSettingsHandle\"\n ),\n unpinPanelTitle: UiFramework.translate(\"widget.tooltips.unpinPanel\"),\n popoutActiveTab: UiFramework.translate(\"widget.tooltips.popoutActiveTab\"),\n }),\n []\n );\n}\n\nfunction toTabArgs(widget: WidgetDef) {\n const label = getWidgetLabel(widget.label);\n const args = {\n allowedPanelTargets: widget.allowedPanelTargets?.map((location) =>\n toPanelSide(location)\n ),\n hideWithUiWhenFloating: !!widget.hideWithUiWhenFloating,\n canPopout: widget.canPopout,\n iconSpec: widget.iconSpec,\n isFloatingWidgetResizable: widget.isFloatingStateWindowResizable,\n label,\n preferredFloatingWidgetSize: widget.defaultFloatingSize,\n preferredPanelWidgetSize: widget.preferredPanelSize,\n };\n return args satisfies Pick<TabState, keyof typeof args>;\n}\n\n/** @internal */\nexport function addWidgets(\n state: NineZoneState,\n widgets: ReadonlyArray<WidgetDef>,\n side: PanelSide,\n widgetId: WidgetId\n): NineZoneState {\n const visibleWidgets = widgets.filter(\n (w) => w.isVisible && w.defaultState !== WidgetState.Floating\n );\n if (visibleWidgets.length === 0) return state;\n\n const tabs = new Array<string>();\n for (const widget of visibleWidgets) {\n state = addTab(state, widget.id, toTabArgs(widget));\n tabs.push(widget.id);\n }\n\n const activeWidget = visibleWidgets.find((widget) => widget.isActive);\n const minimized = false;\n // istanbul ignore else\n if (activeWidget?.defaultState !== WidgetState.Floating) {\n state = addPanelWidget(state, side, widgetId, tabs, {\n activeTabId: activeWidget ? activeWidget.id : tabs[0],\n minimized,\n });\n }\n\n return state;\n}\n\n/** @internal */\n// istanbul ignore next\nexport function appendWidgets(\n state: NineZoneState,\n widgetDefs: ReadonlyArray<WidgetDef>,\n location: StagePanelLocation,\n section: StagePanelSection\n): NineZoneState {\n const side = toPanelSide(location);\n\n // Add missing widget tabs.\n for (const widgetDef of widgetDefs) {\n const saveTab = state.tabs[widgetDef.id];\n const preferredPanelWidgetSize = saveTab\n ? saveTab.preferredPanelWidgetSize\n : widgetDef.preferredPanelSize;\n const preferredFloatingWidgetSize = saveTab\n ? saveTab.preferredFloatingWidgetSize\n : widgetDef.defaultFloatingSize;\n // if a defaultFloatingSize is specified then this mean the widget can't determine its intrinsic size and must be explicitly sized\n const userSized = saveTab\n ? saveTab.userSized ||\n (!!widgetDef.defaultFloatingSize &&\n !!saveTab.preferredFloatingWidgetSize)\n : !!widgetDef.defaultFloatingSize;\n state = addTab(state, widgetDef.id, {\n ...toTabArgs(widgetDef),\n preferredFloatingWidgetSize,\n preferredPanelWidgetSize,\n userSized,\n });\n\n const savedTab = state.savedTabs.byId[widgetDef.id];\n if (savedTab) {\n state = addRemovedTab(state, widgetDef.id);\n } else if (\n widgetDef.isFloatingStateSupported &&\n widgetDef.defaultState === WidgetState.Floating\n ) {\n const floatingContainerId = widgetDef.floatingContainerId\n ? widgetDef.floatingContainerId\n : getUniqueId();\n const widgetContainerId = getWidgetId(location, section);\n const home: FloatingWidgetHomeState = {\n side,\n widgetId: widgetContainerId,\n widgetIndex: 0,\n };\n const preferredPosition = widgetDef.defaultFloatingPosition;\n\n if (floatingContainerId in state.widgets) {\n state = addTabToWidget(state, widgetDef.id, floatingContainerId);\n } else {\n const tab = state.tabs[widgetDef.id];\n\n const size = {\n height: 200,\n width: 300,\n ...tab.preferredFloatingWidgetSize,\n };\n const preferredPoint = preferredPosition ?? {\n x: (state.size.width - size.width) / 2,\n y: (state.size.height - size.height) / 2,\n };\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.createFromSize(size).offset(preferredPoint);\n const containedBounds = bounds.containIn(nzBounds);\n\n state = addFloatingWidget(state, floatingContainerId, [widgetDef.id], {\n bounds: containedBounds.toProps(),\n home,\n userSized,\n });\n }\n } else {\n const preferredWidgetIndex: number = section;\n const widgetPanelSectionId = getWidgetPanelSectionId(\n side,\n preferredWidgetIndex\n );\n if (widgetPanelSectionId in state.widgets) {\n state = addTabToWidget(state, widgetDef.id, widgetPanelSectionId);\n } else {\n const panel = state.panels[side];\n if (panel.widgets.length < panel.maxWidgetCount) {\n state = addPanelWidget(state, side, widgetPanelSectionId, [\n widgetDef.id,\n ]);\n } else {\n const widgetIndex = Math.min(\n preferredWidgetIndex,\n panel.widgets.length - 1\n );\n const widgetId = panel.widgets[widgetIndex];\n state = addTabToWidget(state, widgetDef.id, widgetId);\n }\n }\n }\n\n if (widgetDef.defaultState === WidgetState.Hidden) {\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: widgetDef.id,\n });\n }\n }\n\n return state;\n}\n\nfunction processPopoutWidgets(state: NineZoneState): NineZoneState {\n // Electron reopens popout windows\n if (ProcessDetector.isElectronAppFrontend) {\n return state;\n }\n\n for (const popoutWidgetId of state.popoutWidgets.allIds) {\n const widget = state.widgets[popoutWidgetId];\n const id = widget.tabs[0];\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_FLOAT\",\n id,\n });\n }\n return state;\n}\n\n/** Adds frontstageDef widgets that are missing in NineZoneState.\n * @internal\n */\nexport function addMissingWidgets(\n frontstageDef: FrontstageDef,\n initialState: NineZoneState\n): NineZoneState {\n let state = initialState;\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.leftPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Left,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.leftPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Left,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.rightPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Right,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.rightPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Right,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.topPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Top,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.topPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Top,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.bottomPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Bottom,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.bottomPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Bottom,\n StagePanelSection.End\n );\n\n if (frontstageDef.toolSettings) {\n const newToolSettingsWidgets = determineNewWidgets(\n [frontstageDef.toolSettings],\n state\n );\n for (const newToolSettingsWidget of newToolSettingsWidgets) {\n state = addTab(\n state,\n newToolSettingsWidget.id,\n toTabArgs(newToolSettingsWidget)\n );\n }\n }\n\n return state;\n}\n\n/** Hide widgets with Hidden defaultState. */\nfunction hideWidgets(\n state: NineZoneState,\n frontstageDef: FrontstageDef\n): NineZoneState {\n const tabs = Object.values(state.tabs);\n for (const tab of tabs) {\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (!widgetDef) continue;\n\n if (widgetDef.defaultState === WidgetState.Hidden) {\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: widgetDef.id,\n });\n }\n }\n\n return state;\n}\n\n/** Removes NineZoneState widgets that are missing in frontstageDef.\n * @internal\n */\nfunction removeMissingWidgets(\n frontstageDef: FrontstageDef,\n state: NineZoneState\n): NineZoneState {\n const toolSettingsTabId = state.toolSettings?.tabId;\n for (const [, tab] of Object.entries(state.tabs)) {\n if (tab.id === toolSettingsTabId) continue;\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (widgetDef) continue;\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: tab.id,\n });\n state = removeTab(state, tab.id);\n }\n return state;\n}\n\nfunction getWidgetLabel(label: string) {\n return label === \"\" ? \"Widget\" : label;\n}\n\ntype WidgetId =\n | \"leftStart\"\n | \"leftEnd\"\n | \"rightStart\"\n | \"rightEnd\"\n | \"topStart\"\n | \"topEnd\"\n | \"bottomStart\"\n | \"bottomEnd\";\n\n/** @internal */\nexport function getWidgetId(\n location: StagePanelLocation,\n section: StagePanelSection\n): WidgetId {\n switch (location) {\n case StagePanelLocation.Left: {\n if (section === StagePanelSection.Start) return \"leftStart\";\n return \"leftEnd\";\n }\n case StagePanelLocation.Right: {\n if (section === StagePanelSection.Start) return \"rightStart\";\n return \"rightEnd\";\n }\n case StagePanelLocation.Top: {\n if (section === StagePanelSection.Start) return \"topStart\";\n return \"topEnd\";\n }\n case StagePanelLocation.Bottom: {\n if (section === StagePanelSection.Start) return \"bottomStart\";\n return \"bottomEnd\";\n }\n }\n}\n\n/** @internal */\nexport function getPanelSectionWidgets(\n frontstageDef: FrontstageDef,\n location: StagePanelLocation,\n section: StagePanelSection\n): ReadonlyArray<WidgetDef> {\n const stagePanel = frontstageDef.getStagePanelDef(location);\n const panelSection = stagePanel?.getPanelSectionDef(section);\n return panelSection?.widgetDefs || [];\n}\n\n/** @internal */\nexport function addPanelWidgets(\n state: NineZoneState,\n frontstageDef: FrontstageDef,\n location: StagePanelLocation\n): NineZoneState {\n const side = toPanelSide(location);\n\n const start = getWidgetId(location, StagePanelSection.Start);\n const startWidgets = getPanelSectionWidgets(\n frontstageDef,\n location,\n StagePanelSection.Start\n );\n state = addWidgets(\n state,\n determineNewWidgets(startWidgets, state),\n side,\n start\n );\n\n const end = getWidgetId(location, StagePanelSection.End);\n const endWidgets = getPanelSectionWidgets(\n frontstageDef,\n location,\n StagePanelSection.End\n );\n state = addWidgets(state, determineNewWidgets(endWidgets, state), side, end);\n return state;\n}\n\n/** @internal */\nexport function isFrontstageStateSettingResult(\n settingsResult: UiStateStorageResult\n): settingsResult is {\n status: UiStateStorageStatus.Success;\n setting: WidgetPanelsFrontstageState;\n} {\n if (settingsResult.status === UiStateStorageStatus.Success) return true;\n return false;\n}\n\n/** @internal */\nexport function initializePanel(\n state: NineZoneState,\n frontstageDef: FrontstageDef,\n location: StagePanelLocation\n) {\n const side = toPanelSide(location);\n\n state = addPanelWidgets(state, frontstageDef, location);\n const panelDef = frontstageDef.getStagePanelDef(location);\n state = produce(state, (draft) => {\n const panel = draft.panels[side];\n panel.minSize = panelDef?.initialConfig?.minSize ?? panel.minSize;\n panel.pinned = panelDef?.pinned ?? panel.pinned;\n panel.resizable = panelDef?.resizable ?? panel.resizable;\n panel.maxSize = panelDef?.initialConfig?.maxSize ?? panel.maxSize;\n });\n if (panelDef?.size !== undefined) {\n state = NineZoneStateReducer(state, {\n type: \"PANEL_SET_SIZE\",\n side,\n size: panelDef.size,\n });\n }\n\n return state;\n}\n\n/** @internal */\nexport const stateVersion = 16; // this needs to be bumped when NineZoneState is changed (to recreate the layout).\n\n/** @internal */\nexport function initializeNineZoneState(\n frontstageDef: FrontstageDef\n): NineZoneState {\n let nineZone = defaultNineZone;\n nineZone = produce(nineZone, (stateDraft) => {\n // istanbul ignore next\n if (!InternalFrontstageManager.nineZoneSize) return;\n stateDraft.size = {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n };\n });\n\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Left);\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Right);\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Top);\n nineZone = initializePanel(\n nineZone,\n frontstageDef,\n StagePanelLocation.Bottom\n );\n nineZone = produce(nineZone, (draft) => {\n for (const [, panel] of Object.entries(draft.panels)) {\n const expanded = panel.widgets.find(\n (widgetId) => draft.widgets[widgetId].minimized === false\n );\n const firstWidget =\n panel.widgets.length > 0 ? draft.widgets[panel.widgets[0]] : undefined;\n // istanbul ignore next\n if (!expanded && firstWidget) {\n firstWidget.minimized = false;\n }\n }\n draft.panels.left.collapsed = isPanelCollapsed(\n frontstageDef.leftPanel?.panelState\n );\n draft.panels.right.collapsed = isPanelCollapsed(\n frontstageDef.rightPanel?.panelState\n );\n draft.panels.top.collapsed = isPanelCollapsed(\n frontstageDef.topPanel?.panelState\n );\n draft.panels.bottom.collapsed = isPanelCollapsed(\n frontstageDef.bottomPanel?.panelState\n );\n });\n\n nineZone = addMissingWidgets(frontstageDef, nineZone);\n\n const toolSettingsWidgetDef = frontstageDef.toolSettings;\n if (toolSettingsWidgetDef) {\n const toolSettingsTabId = toolSettingsWidgetDef.id;\n nineZone = addDockedToolSettings(nineZone, toolSettingsTabId);\n }\n\n nineZone = hideWidgets(nineZone, frontstageDef);\n nineZone = processPopoutWidgets(nineZone);\n\n return nineZone;\n}\n\n/** Converts from saved NineZoneState to NineZoneState.\n * @note Restores toolSettings tab.\n * @note Restores tab labels.\n * @internal\n */\nexport function restoreNineZoneState(\n frontstageDef: FrontstageDef,\n saved: SavedNineZoneState\n): NineZoneState {\n let state: NineZoneState = {\n ...saved,\n tabs: {},\n };\n\n for (const [, tab] of Object.entries(saved.tabs)) {\n // Re-add the placeholder tab in order to correctly remove it from the state if WidgetDef is not found.\n state = addTab(state, tab.id);\n\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (!widgetDef) {\n Logger.logInfo(\n UiFramework.loggerCategory(restoreNineZoneState),\n \"WidgetDef is not found for saved tab.\",\n () => ({\n frontstageId: frontstageDef.id,\n tabId: tab.id,\n })\n );\n state = removeTab(state, tab.id);\n continue;\n }\n state = produce(state, (draft) => {\n draft.tabs[tab.id] = {\n ...tab,\n ...toTabArgs(widgetDef),\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n preferredPanelWidgetSize: tab.preferredPanelWidgetSize,\n };\n });\n }\n state = produce(state, (draft) => {\n // remove center panel section if one is found in left or right panels\n const oldLeftMiddleIndex = saved.panels.left.widgets.findIndex(\n (value) => value === \"leftMiddle\"\n );\n // istanbul ignore next\n if (-1 !== oldLeftMiddleIndex) {\n draft.panels.left.widgets = saved.panels.left.widgets.filter(\n (value) => value !== \"leftMiddle\"\n );\n if (\"leftEnd\" in draft.widgets) {\n draft.widgets.leftMiddle.tabs.forEach((tab) =>\n draft.widgets.leftEnd.tabs.push(tab)\n );\n } else {\n draft.widgets.leftEnd = { ...draft.widgets.leftMiddle };\n delete draft.widgets.leftMiddle;\n }\n }\n\n const oldRightMiddleIndex = saved.panels.right.widgets.findIndex(\n (value) => value === \"rightMiddle\"\n );\n // istanbul ignore next\n if (-1 !== oldRightMiddleIndex) {\n draft.panels.right.widgets = saved.panels.right.widgets.filter(\n (value) => value !== \"rightMiddle\"\n );\n if (\"rightEnd\" in draft.widgets) {\n draft.widgets.rightMiddle.tabs.forEach((tab) =>\n draft.widgets.rightEnd.tabs.push(tab)\n );\n } else {\n draft.widgets.rightEnd = { ...draft.widgets.rightMiddle };\n delete draft.widgets.rightMiddle;\n }\n }\n\n return;\n });\n\n if (\n InternalFrontstageManager.nineZoneSize &&\n (0 !== InternalFrontstageManager.nineZoneSize.height ||\n 0 !== InternalFrontstageManager.nineZoneSize.width)\n ) {\n state = NineZoneStateReducer(state, {\n type: \"RESIZE\",\n size: {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n },\n });\n }\n\n state = addMissingWidgets(frontstageDef, state);\n state = hideWidgets(state, frontstageDef);\n state = processPopoutWidgets(state);\n return state;\n}\n\n/** Prepares NineZoneState to be saved.\n * @note Removes toolSettings tab.\n * @note Removes tab labels and iconSpec.\n * @internal\n */\nexport function packNineZoneState(state: NineZoneState): SavedNineZoneState {\n let packed: SavedNineZoneState = {\n ...state,\n tabs: {},\n };\n packed = produce(packed, (draft) => {\n for (const [, tab] of Object.entries(state.tabs)) {\n draft.tabs[tab.id] = {\n id: tab.id,\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n userSized: tab.userSized,\n };\n }\n });\n return packed;\n}\n\n/** @internal */\nexport function isPanelCollapsed(panelState: StagePanelState | undefined) {\n return panelState !== StagePanelState.Open;\n}\n\n/** FrontstageState is saved in UiStateStorage.\n * @internal\n */\nexport interface WidgetPanelsFrontstageState {\n nineZone: SavedNineZoneState;\n id: FrontstageDef[\"id\"];\n /** Frontstage version used to create the frontstage state. Allows to invalidate the layout from the frontstage. */\n version: number;\n /** Platform provided frontstage version. Allows to invalidate the layout from the platform. */\n stateVersion: number;\n}\n\n// We don't save tab labels or if widget is allowed to \"pop-out\".\ntype SavedTabState = Omit<\n TabState,\n \"label\" | \"canPopout\" | \"isFloatingStateWindowResizable\" | \"iconSpec\"\n>;\n\ninterface SavedTabsState {\n readonly [id: string]: SavedTabState;\n}\n\ninterface SavedNineZoneState extends Omit<NineZoneState, \"tabs\"> {\n readonly tabs: SavedTabsState;\n}\n\n/** @internal */\nexport function showWidget(state: NineZoneState, id: TabState[\"id\"]) {\n const location = getTabLocation(state, id);\n if (!location) return state;\n state = produce(state, (draft) => {\n const widget = draft.widgets[location.widgetId];\n widget.activeTabId = id;\n widget.minimized = false;\n if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.collapsed = false;\n }\n });\n if (isFloatingTabLocation(location)) {\n state = floatingWidgetBringToFront(state, location.floatingWidgetId);\n }\n return state;\n}\n\n/** @internal */\nexport function expandWidget(state: NineZoneState, id: TabState[\"id\"]) {\n const location = getTabLocation(state, id);\n if (!location) return state;\n\n return produce(state, (draft) => {\n const widget = draft.widgets[location.widgetId];\n if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.splitterPercent =\n panel.widgets.findIndex((wId) => wId === location.widgetId) === 0\n ? 100\n : 0;\n }\n widget.minimized = false;\n });\n}\n\n/** @internal */\nexport function useSavedFrontstageState(frontstageDef: FrontstageDef) {\n const uiStateStorage = useUiStateStorageHandler();\n const uiStateStorageRef = React.useRef(uiStateStorage);\n const isMountedRef = React.useRef(false);\n React.useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n React.useEffect(() => {\n uiStateStorageRef.current = uiStateStorage;\n }, [uiStateStorage]);\n React.useEffect(() => {\n async function fetchFrontstageState() {\n if (frontstageDef.nineZoneState) {\n frontstageDef.nineZoneState = processPopoutWidgets(\n frontstageDef.nineZoneState\n );\n return;\n }\n\n const id = frontstageDef.id;\n const version = frontstageDef.version;\n const settingResult = await uiStateStorageRef.current.getSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(id)\n );\n if (!isMountedRef.current) return;\n\n if (isFrontstageStateSettingResult(settingResult)) {\n const setting = settingResult.setting;\n if (\n setting.version === version &&\n setting.stateVersion === stateVersion\n ) {\n frontstageDef.nineZoneState = restoreNineZoneState(\n frontstageDef,\n setting.nineZone\n );\n return;\n }\n }\n frontstageDef.nineZoneState = initializeNineZoneState(frontstageDef);\n }\n void fetchFrontstageState();\n }, [frontstageDef]);\n}\n\n/** @internal */\nexport function useSaveFrontstageSettings(\n frontstageDef: FrontstageDef,\n store: LayoutStore\n) {\n const uiSettingsStorage = useUiStateStorageHandler();\n const saveSetting = React.useMemo(() => {\n const debounced = debounce(\n async (frontstage: FrontstageDef, state: NineZoneState) => {\n const id = frontstage.id;\n const setting: WidgetPanelsFrontstageState = {\n id,\n version: frontstage.version,\n stateVersion,\n nineZone: packNineZoneState(state),\n };\n await uiSettingsStorage.saveSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(id),\n setting\n );\n },\n 1000\n );\n\n const save = (frontstage: FrontstageDef, state: NineZoneState) => {\n if (state.draggedTab) return;\n debounced(frontstage, state);\n };\n save.cancel = debounced.cancel;\n return save;\n }, [uiSettingsStorage]);\n React.useEffect(() => {\n return () => {\n saveSetting.cancel();\n };\n }, [saveSetting]);\n\n React.useEffect(() => {\n saveSetting(frontstageDef, store.getState());\n }, [saveSetting, frontstageDef, store]);\n React.useEffect(() => {\n return store.subscribe(() => {\n saveSetting(frontstageDef, store.getState());\n });\n }, [saveSetting, frontstageDef, store]);\n}\n\n/** @internal */\nexport const FRONTSTAGE_SETTINGS_NAMESPACE = \"uifw-frontstageSettings\";\n\n/** @internal */\nexport function getFrontstageStateSettingName(\n frontstageId: WidgetPanelsFrontstageState[\"id\"]\n) {\n return `frontstageState[${frontstageId}]`;\n}\n\n// istanbul ignore next\nfunction debounce<T extends (...args: any[]) => any>(\n func: T,\n duration: number\n) {\n let timeout: number | undefined;\n const debounced = (...args: Parameters<T>) => {\n const handler = () => {\n timeout = undefined;\n return func(...args);\n };\n window.clearTimeout(timeout);\n timeout = window.setTimeout(handler, duration);\n };\n debounced.cancel = () => {\n window.clearTimeout(timeout);\n };\n return debounced;\n}\n\n/** @internal */\nexport function useFrontstageManager(\n frontstageDef: FrontstageDef,\n useToolAsToolSettingsLabel?: boolean\n) {\n const uiSettingsStorage = useUiStateStorageHandler();\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n (args) => {\n // TODO: track restoring frontstages to support workflows: i.e. prevent loading frontstage OR saving layout when delete is pending\n void uiSettingsStorage.deleteSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(args.frontstageDef.id)\n );\n if (frontstageDef.id === args.frontstageDef.id) {\n args.frontstageDef.nineZoneState =\n initializeNineZoneState(frontstageDef);\n } else {\n args.frontstageDef.nineZoneState = undefined;\n }\n }\n );\n }, [uiSettingsStorage, frontstageDef]);\n const defaultLabel = React.useMemo(\n () => UiFramework.translate(\"widget.labels.toolSettings\"),\n []\n );\n React.useEffect(() => {\n const updateLabel = () => {\n const state = frontstageDef.nineZoneState;\n if (!state) return;\n const toolSettingsTabId = state.toolSettings?.tabId;\n if (!toolSettingsTabId) return;\n\n const toolId = UiFramework.frontstages.activeToolId;\n const label = useToolAsToolSettingsLabel\n ? IModelApp.tools.find(toolId)?.flyover || defaultLabel\n : defaultLabel;\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SET_LABEL\",\n id: toolSettingsTabId,\n label,\n });\n };\n // Whenever the frontstageDef or the useTool... changes, keep the label up to date.\n updateLabel();\n\n const removeListenerFuncs: (() => void)[] = [];\n // If useTool... is true, listen for events to keep up the label up to date.\n if (useToolAsToolSettingsLabel) {\n removeListenerFuncs.push(\n UiFramework.frontstages.onFrontstageReadyEvent.addListener(updateLabel),\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n updateLabel\n ),\n UiFramework.frontstages.onToolActivatedEvent.addListener(updateLabel),\n UiFramework.frontstages.onToolSettingsReloadEvent.addListener(\n updateLabel\n )\n );\n }\n return () => {\n removeListenerFuncs.forEach((removeListener) => removeListener());\n };\n }, [frontstageDef, useToolAsToolSettingsLabel, defaultLabel]);\n}\n\n/** @internal */\n// istanbul ignore next\nexport function useItemsManager(frontstageDef: FrontstageDef) {\n const refreshNineZoneState = (def: FrontstageDef) => {\n // Fired for both registered/unregistered. Update definitions and remove/add missing widgets.\n def.updateWidgetDefs();\n let state = def.nineZoneState;\n if (!state) return;\n state = addMissingWidgets(def, state);\n state = removeMissingWidgets(def, state);\n def.nineZoneState = state;\n };\n\n React.useEffect(() => {\n // Need to refresh anytime frontstageDef changes because uiItemsProvider may have added something to\n // another stage before it was possibly unloaded in this stage.\n refreshNineZoneState(frontstageDef);\n }, [frontstageDef]);\n React.useEffect(() => {\n return UiItemsManager.onUiProviderRegisteredEvent.addListener(() => {\n refreshNineZoneState(frontstageDef);\n });\n }, [frontstageDef]);\n}\n\n// istanbul ignore next\nfunction determineNewWidgets(\n defs: readonly WidgetDef[] | undefined,\n state: NineZoneState\n) {\n defs = defs || [];\n const uniqueDefs = defs.filter((def, index, array) => {\n return index === array.findIndex((def1) => def.id === def1.id);\n });\n return uniqueDefs.filter((def) => !(def.id in state.tabs));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Frontstage.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\n// cSpell:ignore popout\n\nimport \"./Frontstage.scss\";\nimport produce from \"immer\";\nimport * as React from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport { Logger, ProcessDetector } from \"@itwin/core-bentley\";\nimport type { UiStateStorageResult } from \"@itwin/core-react\";\nimport { Rectangle, UiStateStorageStatus } from \"@itwin/core-react\";\nimport { ToolbarPopupAutoHideContext } from \"@itwin/components-react\";\nimport type {\n FloatingWidgetHomeState,\n LayoutStore,\n NineZoneLabels,\n NineZoneState,\n PanelSide,\n TabState,\n} from \"@itwin/appui-layout-react\";\nimport {\n addDockedToolSettings,\n addFloatingWidget,\n addPanelWidget,\n addRemovedTab,\n addTab,\n addTabToWidget,\n createLayoutStore,\n createNineZoneState,\n floatingWidgetBringToFront,\n FloatingWidgets,\n getTabLocation,\n getUniqueId,\n getWidgetPanelSectionId,\n isFloatingTabLocation,\n isPanelTabLocation,\n NineZone,\n NineZoneStateReducer,\n removeTab,\n WidgetPanels,\n} from \"@itwin/appui-layout-react\";\nimport {\n type FrontstageDef,\n useActiveFrontstageDef,\n} from \"../frontstage/FrontstageDef\";\nimport { StagePanelState, toPanelSide } from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport type { WidgetDef } from \"../widgets/WidgetDef\";\nimport { WidgetContent } from \"./Content\";\nimport { WidgetPanelsFrontstageContent } from \"./FrontstageContent\";\nimport {\n ModalFrontstageComposer,\n useActiveModalFrontstageInfo,\n} from \"./ModalFrontstageComposer\";\nimport { WidgetPanelsStatusBar } from \"./StatusBar\";\nimport { WidgetPanelsTab } from \"./Tab\";\nimport { WidgetPanelsToolbars } from \"./Toolbars\";\nimport { ToolSettingsContent, WidgetPanelsToolSettings } from \"./ToolSettings\";\nimport { useEscapeSetFocusToHome } from \"../hooks/useEscapeSetFocusToHome\";\nimport type { FrameworkRootState } from \"../redux/StateManager\";\nimport { useSelector } from \"react-redux\";\nimport { useUiVisibility } from \"../hooks/useUiVisibility\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { FloatingWidget } from \"./FloatingWidget\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager\";\nimport { WidgetState } from \"../widgets/WidgetState\";\nimport { StagePanelSection } from \"../stagepanels/StagePanelSection\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport { UiItemsManager } from \"../ui-items-provider/UiItemsManager\";\n\nfunction WidgetPanelsFrontstageComponent() {\n const activeModalFrontstageInfo = useActiveModalFrontstageInfo();\n const uiIsVisible = useUiVisibility();\n\n return (\n <>\n <WidgetPanelsToolSettings />\n <ToolbarPopupAutoHideContext.Provider value={!uiIsVisible}>\n <ModalFrontstageComposer stageInfo={activeModalFrontstageInfo} />\n <WidgetPanels\n className=\"uifw-widgetPanels\"\n centerContent={<WidgetPanelsToolbars />}\n >\n <WidgetPanelsFrontstageContent />\n </WidgetPanels>\n <WidgetPanelsStatusBar />\n <FloatingWidgets />\n </ToolbarPopupAutoHideContext.Provider>\n </>\n );\n}\n\nconst widgetContent = <WidgetContent />;\nconst toolSettingsContent = <ToolSettingsContent />;\nconst widgetPanelsFrontstage = <WidgetPanelsFrontstageComponent />;\n\n/** @internal */\nexport function useLayoutStore(frontstageDef: FrontstageDef | undefined) {\n const layoutStore = React.useMemo(\n () => createLayoutStore(frontstageDef?.nineZoneState),\n [frontstageDef]\n );\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n unstable_batchedUpdates(() => {\n // https://github.com/pmndrs/zustand/blob/main/docs/guides/event-handler-in-pre-react-18.md\n layoutStore.setState(args.state || defaultNineZone);\n });\n }\n );\n }, [frontstageDef, layoutStore]);\n return layoutStore;\n}\n\n/** Update in-memory NineZoneState of newly activated frontstage with up to date size.\n * @internal\n */\nexport function useUpdateNineZoneSize(frontstageDef: FrontstageDef) {\n React.useEffect(() => {\n const size = InternalFrontstageManager.nineZoneSize;\n const state = frontstageDef.nineZoneState;\n if (!size || !state) return;\n frontstageDef.dispatch({\n type: \"RESIZE\",\n size: {\n height: size.height,\n width: size.width,\n },\n });\n }, [frontstageDef]);\n}\n\n/** @internal */\nexport function useNineZoneDispatch(frontstageDef: FrontstageDef) {\n return React.useMemo(() => frontstageDef.dispatch, [frontstageDef]);\n}\n\n/** @internal */\nexport function WidgetPanelsFrontstage() {\n const frontstageDef = useActiveFrontstageDef();\n const layout = useLayoutStore(frontstageDef);\n\n React.useEffect(() => {\n const triggerWidowCloseProcessing = () => {\n frontstageDef && frontstageDef.setIsApplicationClosing(true);\n };\n window.addEventListener(\"unload\", triggerWidowCloseProcessing);\n return () => {\n window.removeEventListener(\"unload\", triggerWidowCloseProcessing);\n };\n }, [frontstageDef]);\n\n if (!frontstageDef) return null;\n return (\n <ActiveFrontstageDefProvider\n frontstageDef={frontstageDef}\n layout={layout}\n />\n );\n}\n\nconst defaultNineZone = createNineZoneState();\nconst tabElement = <WidgetPanelsTab />;\nconst floatingWidgetElement = <FloatingWidget />;\n\ninterface ActiveFrontstageDefProviderProps {\n layout: LayoutStore;\n frontstageDef: FrontstageDef;\n}\n\n/** @internal */\nexport function ActiveFrontstageDefProvider({\n frontstageDef,\n layout,\n}: ActiveFrontstageDefProviderProps) {\n const dispatch = useNineZoneDispatch(frontstageDef);\n useUpdateNineZoneSize(frontstageDef);\n useSavedFrontstageState(frontstageDef);\n useSaveFrontstageSettings(frontstageDef, layout);\n useItemsManager(frontstageDef);\n const labels = useLabels();\n const uiIsVisible = useUiVisibility();\n const showWidgetIcon = useSelector((state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.showWidgetIcon;\n });\n const autoCollapseUnpinnedPanels = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.autoCollapseUnpinnedPanels;\n }\n );\n const animateToolSettings = useSelector((state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.animateToolSettings;\n });\n const useToolAsToolSettingsLabel = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.useToolAsToolSettingsLabel;\n }\n );\n useFrontstageManager(frontstageDef, useToolAsToolSettingsLabel);\n\n const handleKeyDown = useEscapeSetFocusToHome();\n\n return (\n <div\n className=\"uifw-widgetPanels-frontstage\"\n onKeyDown={handleKeyDown}\n role=\"presentation\"\n >\n <NineZone\n dispatch={dispatch}\n labels={labels}\n layout={layout}\n tab={tabElement}\n floatingWidget={floatingWidgetElement}\n showWidgetIcon={showWidgetIcon}\n autoCollapseUnpinnedPanels={autoCollapseUnpinnedPanels}\n toolSettingsContent={toolSettingsContent}\n widgetContent={widgetContent}\n animateDockedToolSettings={animateToolSettings}\n uiIsVisible={uiIsVisible}\n >\n {widgetPanelsFrontstage}\n </NineZone>\n </div>\n );\n}\n\n/** @internal */\nexport function useLabels() {\n return React.useMemo<NineZoneLabels>(\n () => ({\n dockToolSettingsTitle: UiFramework.translate(\n \"widget.tooltips.dockToolSettings\"\n ),\n moreWidgetsTitle: UiFramework.translate(\"widget.tooltips.moreWidgets\"),\n moreToolSettingsTitle: UiFramework.translate(\n \"widget.tooltips.moreToolSettings\"\n ),\n pinPanelTitle: UiFramework.translate(\"widget.tooltips.pinPanel\"),\n resizeGripTitle: UiFramework.translate(\"widget.tooltips.resizeGrip\"),\n sendWidgetHomeTitle: UiFramework.translate(\"widget.tooltips.sendHome\"),\n toolSettingsHandleTitle: UiFramework.translate(\n \"widget.tooltips.toolSettingsHandle\"\n ),\n unpinPanelTitle: UiFramework.translate(\"widget.tooltips.unpinPanel\"),\n popoutActiveTab: UiFramework.translate(\"widget.tooltips.popoutActiveTab\"),\n }),\n []\n );\n}\n\nfunction toTabArgs(widget: WidgetDef) {\n const label = getWidgetLabel(widget.label);\n const args = {\n allowedPanelTargets: widget.allowedPanelTargets?.map((location) =>\n toPanelSide(location)\n ),\n hideWithUiWhenFloating: !!widget.hideWithUiWhenFloating,\n canPopout: widget.canPopout,\n iconSpec: widget.iconSpec,\n isFloatingWidgetResizable: widget.isFloatingStateWindowResizable,\n label,\n preferredFloatingWidgetSize: widget.defaultFloatingSize,\n preferredPanelWidgetSize: widget.preferredPanelSize,\n };\n return args satisfies Pick<TabState, keyof typeof args>;\n}\n\n/** @internal */\nexport function addWidgets(\n state: NineZoneState,\n widgets: ReadonlyArray<WidgetDef>,\n side: PanelSide,\n widgetId: WidgetId\n): NineZoneState {\n const visibleWidgets = widgets.filter(\n (w) => w.isVisible && w.defaultState !== WidgetState.Floating\n );\n if (visibleWidgets.length === 0) return state;\n\n const tabs = new Array<string>();\n for (const widget of visibleWidgets) {\n state = addTab(state, widget.id, toTabArgs(widget));\n tabs.push(widget.id);\n }\n\n const activeWidget = visibleWidgets.find((widget) => widget.isActive);\n const minimized = false;\n // istanbul ignore else\n if (activeWidget?.defaultState !== WidgetState.Floating) {\n state = addPanelWidget(state, side, widgetId, tabs, {\n activeTabId: activeWidget ? activeWidget.id : tabs[0],\n minimized,\n });\n }\n\n return state;\n}\n\n/** @internal */\n// istanbul ignore next\nexport function appendWidgets(\n state: NineZoneState,\n widgetDefs: ReadonlyArray<WidgetDef>,\n location: StagePanelLocation,\n section: StagePanelSection\n): NineZoneState {\n const side = toPanelSide(location);\n\n // Add missing widget tabs.\n for (const widgetDef of widgetDefs) {\n const saveTab = state.tabs[widgetDef.id];\n const preferredPanelWidgetSize = saveTab\n ? saveTab.preferredPanelWidgetSize\n : widgetDef.preferredPanelSize;\n const preferredFloatingWidgetSize = saveTab\n ? saveTab.preferredFloatingWidgetSize\n : widgetDef.defaultFloatingSize;\n // if a defaultFloatingSize is specified then this mean the widget can't determine its intrinsic size and must be explicitly sized\n const userSized = saveTab\n ? saveTab.userSized ||\n (!!widgetDef.defaultFloatingSize &&\n !!saveTab.preferredFloatingWidgetSize)\n : !!widgetDef.defaultFloatingSize;\n state = addTab(state, widgetDef.id, {\n ...toTabArgs(widgetDef),\n preferredFloatingWidgetSize,\n preferredPanelWidgetSize,\n userSized,\n });\n\n const savedTab = state.savedTabs.byId[widgetDef.id];\n if (savedTab) {\n state = addRemovedTab(state, widgetDef.id);\n } else if (\n widgetDef.isFloatingStateSupported &&\n widgetDef.defaultState === WidgetState.Floating\n ) {\n const floatingContainerId = widgetDef.floatingContainerId\n ? widgetDef.floatingContainerId\n : getUniqueId();\n const widgetContainerId = getWidgetId(location, section);\n const home: FloatingWidgetHomeState = {\n side,\n widgetId: widgetContainerId,\n widgetIndex: 0,\n };\n const preferredPosition = widgetDef.defaultFloatingPosition;\n\n if (floatingContainerId in state.widgets) {\n state = addTabToWidget(state, widgetDef.id, floatingContainerId);\n } else {\n const tab = state.tabs[widgetDef.id];\n\n const size = {\n height: 200,\n width: 300,\n ...tab.preferredFloatingWidgetSize,\n };\n const preferredPoint = preferredPosition ?? {\n x: (state.size.width - size.width) / 2,\n y: (state.size.height - size.height) / 2,\n };\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.createFromSize(size).offset(preferredPoint);\n const containedBounds = bounds.containIn(nzBounds);\n\n state = addFloatingWidget(state, floatingContainerId, [widgetDef.id], {\n bounds: containedBounds.toProps(),\n home,\n userSized,\n });\n }\n } else {\n const preferredWidgetIndex: number = section;\n const widgetPanelSectionId = getWidgetPanelSectionId(\n side,\n preferredWidgetIndex\n );\n if (widgetPanelSectionId in state.widgets) {\n state = addTabToWidget(state, widgetDef.id, widgetPanelSectionId);\n } else {\n const panel = state.panels[side];\n if (panel.widgets.length < panel.maxWidgetCount) {\n state = addPanelWidget(state, side, widgetPanelSectionId, [\n widgetDef.id,\n ]);\n } else {\n const widgetIndex = Math.min(\n preferredWidgetIndex,\n panel.widgets.length - 1\n );\n const widgetId = panel.widgets[widgetIndex];\n state = addTabToWidget(state, widgetDef.id, widgetId);\n }\n }\n }\n\n if (widgetDef.defaultState === WidgetState.Hidden) {\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: widgetDef.id,\n });\n }\n }\n\n return state;\n}\n\nfunction processPopoutWidgets(state: NineZoneState): NineZoneState {\n // Electron reopens popout windows\n if (ProcessDetector.isElectronAppFrontend) {\n return state;\n }\n\n for (const popoutWidgetId of state.popoutWidgets.allIds) {\n const widget = state.widgets[popoutWidgetId];\n const id = widget.tabs[0];\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_FLOAT\",\n id,\n });\n }\n return state;\n}\n\n/** Adds frontstageDef widgets that are missing in NineZoneState.\n * @internal\n */\nexport function addMissingWidgets(\n frontstageDef: FrontstageDef,\n initialState: NineZoneState\n): NineZoneState {\n let state = initialState;\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.leftPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Left,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.leftPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Left,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.rightPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Right,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.rightPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Right,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.topPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Top,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.topPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Top,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.bottomPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Bottom,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.bottomPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Bottom,\n StagePanelSection.End\n );\n\n if (frontstageDef.toolSettings) {\n const newToolSettingsWidgets = determineNewWidgets(\n [frontstageDef.toolSettings],\n state\n );\n for (const newToolSettingsWidget of newToolSettingsWidgets) {\n state = addTab(\n state,\n newToolSettingsWidget.id,\n toTabArgs(newToolSettingsWidget)\n );\n }\n }\n\n return state;\n}\n\n/** Hide widgets with Hidden defaultState. */\nfunction hideWidgets(\n state: NineZoneState,\n frontstageDef: FrontstageDef\n): NineZoneState {\n const tabs = Object.values(state.tabs);\n for (const tab of tabs) {\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (!widgetDef) continue;\n\n if (widgetDef.defaultState === WidgetState.Hidden) {\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: widgetDef.id,\n });\n }\n }\n\n return state;\n}\n\n/** Removes NineZoneState widgets that are missing in frontstageDef.\n * @internal\n */\nfunction removeMissingWidgets(\n frontstageDef: FrontstageDef,\n state: NineZoneState\n): NineZoneState {\n const toolSettingsTabId = state.toolSettings?.tabId;\n for (const [, tab] of Object.entries(state.tabs)) {\n if (tab.id === toolSettingsTabId) continue;\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (widgetDef) continue;\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: tab.id,\n });\n state = removeTab(state, tab.id);\n }\n return state;\n}\n\nfunction getWidgetLabel(label: string) {\n return label === \"\" ? \"Widget\" : label;\n}\n\ntype WidgetId =\n | \"leftStart\"\n | \"leftEnd\"\n | \"rightStart\"\n | \"rightEnd\"\n | \"topStart\"\n | \"topEnd\"\n | \"bottomStart\"\n | \"bottomEnd\";\n\n/** @internal */\nexport function getWidgetId(\n location: StagePanelLocation,\n section: StagePanelSection\n): WidgetId {\n switch (location) {\n case StagePanelLocation.Left: {\n if (section === StagePanelSection.Start) return \"leftStart\";\n return \"leftEnd\";\n }\n case StagePanelLocation.Right: {\n if (section === StagePanelSection.Start) return \"rightStart\";\n return \"rightEnd\";\n }\n case StagePanelLocation.Top: {\n if (section === StagePanelSection.Start) return \"topStart\";\n return \"topEnd\";\n }\n case StagePanelLocation.Bottom: {\n if (section === StagePanelSection.Start) return \"bottomStart\";\n return \"bottomEnd\";\n }\n }\n}\n\n/** @internal */\nexport function getPanelSectionWidgets(\n frontstageDef: FrontstageDef,\n location: StagePanelLocation,\n section: StagePanelSection\n): ReadonlyArray<WidgetDef> {\n const stagePanel = frontstageDef.getStagePanelDef(location);\n const panelSection = stagePanel?.getPanelSectionDef(section);\n return panelSection?.widgetDefs || [];\n}\n\n/** @internal */\nexport function addPanelWidgets(\n state: NineZoneState,\n frontstageDef: FrontstageDef,\n location: StagePanelLocation\n): NineZoneState {\n const side = toPanelSide(location);\n\n const start = getWidgetId(location, StagePanelSection.Start);\n const startWidgets = getPanelSectionWidgets(\n frontstageDef,\n location,\n StagePanelSection.Start\n );\n state = addWidgets(\n state,\n determineNewWidgets(startWidgets, state),\n side,\n start\n );\n\n const end = getWidgetId(location, StagePanelSection.End);\n const endWidgets = getPanelSectionWidgets(\n frontstageDef,\n location,\n StagePanelSection.End\n );\n state = addWidgets(state, determineNewWidgets(endWidgets, state), side, end);\n return state;\n}\n\n/** @internal */\nexport function isFrontstageStateSettingResult(\n settingsResult: UiStateStorageResult\n): settingsResult is {\n status: UiStateStorageStatus.Success;\n setting: WidgetPanelsFrontstageState;\n} {\n if (settingsResult.status === UiStateStorageStatus.Success) return true;\n return false;\n}\n\n/** @internal */\nexport function initializePanel(\n state: NineZoneState,\n frontstageDef: FrontstageDef,\n location: StagePanelLocation\n) {\n const side = toPanelSide(location);\n\n state = addPanelWidgets(state, frontstageDef, location);\n const panelDef = frontstageDef.getStagePanelDef(location);\n state = produce(state, (draft) => {\n const panel = draft.panels[side];\n panel.minSize = panelDef?.initialConfig?.minSize ?? panel.minSize;\n panel.pinned = panelDef?.pinned ?? panel.pinned;\n panel.resizable = panelDef?.resizable ?? panel.resizable;\n panel.maxSize = panelDef?.initialConfig?.maxSize ?? panel.maxSize;\n });\n if (panelDef?.size !== undefined) {\n state = NineZoneStateReducer(state, {\n type: \"PANEL_SET_SIZE\",\n side,\n size: panelDef.size,\n });\n }\n\n return state;\n}\n\n/** @internal */\nexport const stateVersion = 16; // this needs to be bumped when NineZoneState is changed (to recreate the layout).\n\n/** @internal */\nexport function initializeNineZoneState(\n frontstageDef: FrontstageDef\n): NineZoneState {\n let nineZone = defaultNineZone;\n nineZone = produce(nineZone, (stateDraft) => {\n // istanbul ignore next\n if (!InternalFrontstageManager.nineZoneSize) return;\n stateDraft.size = {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n };\n });\n\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Left);\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Right);\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Top);\n nineZone = initializePanel(\n nineZone,\n frontstageDef,\n StagePanelLocation.Bottom\n );\n nineZone = produce(nineZone, (draft) => {\n for (const [, panel] of Object.entries(draft.panels)) {\n const expanded = panel.widgets.find(\n (widgetId) => draft.widgets[widgetId].minimized === false\n );\n const firstWidget =\n panel.widgets.length > 0 ? draft.widgets[panel.widgets[0]] : undefined;\n // istanbul ignore next\n if (!expanded && firstWidget) {\n firstWidget.minimized = false;\n }\n }\n draft.panels.left.collapsed = isPanelCollapsed(\n frontstageDef.leftPanel?.panelState\n );\n draft.panels.right.collapsed = isPanelCollapsed(\n frontstageDef.rightPanel?.panelState\n );\n draft.panels.top.collapsed = isPanelCollapsed(\n frontstageDef.topPanel?.panelState\n );\n draft.panels.bottom.collapsed = isPanelCollapsed(\n frontstageDef.bottomPanel?.panelState\n );\n });\n\n nineZone = addMissingWidgets(frontstageDef, nineZone);\n\n const toolSettingsWidgetDef = frontstageDef.toolSettings;\n if (toolSettingsWidgetDef) {\n const toolSettingsTabId = toolSettingsWidgetDef.id;\n nineZone = addDockedToolSettings(nineZone, toolSettingsTabId);\n }\n\n nineZone = hideWidgets(nineZone, frontstageDef);\n nineZone = processPopoutWidgets(nineZone);\n\n return nineZone;\n}\n\n/** Converts from saved NineZoneState to NineZoneState.\n * @note Restores toolSettings tab.\n * @note Restores tab labels.\n * @internal\n */\nexport function restoreNineZoneState(\n frontstageDef: FrontstageDef,\n saved: SavedNineZoneState\n): NineZoneState {\n let state: NineZoneState = {\n ...saved,\n tabs: {},\n };\n\n for (const [, tab] of Object.entries(saved.tabs)) {\n // Re-add the placeholder tab in order to correctly remove it from the state if WidgetDef is not found.\n state = addTab(state, tab.id);\n\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (!widgetDef) {\n Logger.logInfo(\n UiFramework.loggerCategory(restoreNineZoneState),\n \"WidgetDef is not found for saved tab.\",\n () => ({\n frontstageId: frontstageDef.id,\n tabId: tab.id,\n })\n );\n state = removeTab(state, tab.id);\n continue;\n }\n state = produce(state, (draft) => {\n draft.tabs[tab.id] = {\n ...tab,\n ...toTabArgs(widgetDef),\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n preferredPanelWidgetSize: tab.preferredPanelWidgetSize,\n };\n });\n }\n state = produce(state, (draft) => {\n // remove center panel section if one is found in left or right panels\n const oldLeftMiddleIndex = saved.panels.left.widgets.findIndex(\n (value) => value === \"leftMiddle\"\n );\n // istanbul ignore next\n if (-1 !== oldLeftMiddleIndex) {\n draft.panels.left.widgets = saved.panels.left.widgets.filter(\n (value) => value !== \"leftMiddle\"\n );\n if (\"leftEnd\" in draft.widgets) {\n draft.widgets.leftMiddle.tabs.forEach((tab) =>\n draft.widgets.leftEnd.tabs.push(tab)\n );\n } else {\n draft.widgets.leftEnd = { ...draft.widgets.leftMiddle };\n delete draft.widgets.leftMiddle;\n }\n }\n\n const oldRightMiddleIndex = saved.panels.right.widgets.findIndex(\n (value) => value === \"rightMiddle\"\n );\n // istanbul ignore next\n if (-1 !== oldRightMiddleIndex) {\n draft.panels.right.widgets = saved.panels.right.widgets.filter(\n (value) => value !== \"rightMiddle\"\n );\n if (\"rightEnd\" in draft.widgets) {\n draft.widgets.rightMiddle.tabs.forEach((tab) =>\n draft.widgets.rightEnd.tabs.push(tab)\n );\n } else {\n draft.widgets.rightEnd = { ...draft.widgets.rightMiddle };\n delete draft.widgets.rightMiddle;\n }\n }\n\n return;\n });\n\n if (\n InternalFrontstageManager.nineZoneSize &&\n (0 !== InternalFrontstageManager.nineZoneSize.height ||\n 0 !== InternalFrontstageManager.nineZoneSize.width)\n ) {\n state = NineZoneStateReducer(state, {\n type: \"RESIZE\",\n size: {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n },\n });\n }\n\n state = addMissingWidgets(frontstageDef, state);\n state = hideWidgets(state, frontstageDef);\n state = processPopoutWidgets(state);\n return state;\n}\n\n/** Prepares NineZoneState to be saved.\n * @note Removes toolSettings tab.\n * @note Removes tab labels and iconSpec.\n * @internal\n */\nexport function packNineZoneState(state: NineZoneState): SavedNineZoneState {\n let packed: SavedNineZoneState = {\n ...state,\n tabs: {},\n };\n packed = produce(packed, (draft) => {\n for (const [, tab] of Object.entries(state.tabs)) {\n draft.tabs[tab.id] = {\n id: tab.id,\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n userSized: tab.userSized,\n };\n }\n });\n return packed;\n}\n\n/** @internal */\nexport function isPanelCollapsed(panelState: StagePanelState | undefined) {\n return panelState !== StagePanelState.Open;\n}\n\n/** FrontstageState is saved in UiStateStorage.\n * @internal\n */\nexport interface WidgetPanelsFrontstageState {\n nineZone: SavedNineZoneState;\n id: FrontstageDef[\"id\"];\n /** Frontstage version used to create the frontstage state. Allows to invalidate the layout from the frontstage. */\n version: number;\n /** Platform provided frontstage version. Allows to invalidate the layout from the platform. */\n stateVersion: number;\n}\n\n// We don't save tab labels or if widget is allowed to \"pop-out\".\ntype SavedTabState = Omit<\n TabState,\n \"label\" | \"canPopout\" | \"isFloatingStateWindowResizable\" | \"iconSpec\"\n>;\n\ninterface SavedTabsState {\n readonly [id: string]: SavedTabState;\n}\n\ninterface SavedNineZoneState extends Omit<NineZoneState, \"tabs\"> {\n readonly tabs: SavedTabsState;\n}\n\n/** @internal */\nexport function showWidget(state: NineZoneState, id: TabState[\"id\"]) {\n const location = getTabLocation(state, id);\n if (!location) return state;\n state = produce(state, (draft) => {\n const widget = draft.widgets[location.widgetId];\n widget.activeTabId = id;\n widget.minimized = false;\n if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.collapsed = false;\n }\n });\n if (isFloatingTabLocation(location)) {\n state = floatingWidgetBringToFront(state, location.floatingWidgetId);\n }\n return state;\n}\n\n/** @internal */\nexport function expandWidget(state: NineZoneState, id: TabState[\"id\"]) {\n const location = getTabLocation(state, id);\n if (!location) return state;\n\n return produce(state, (draft) => {\n const widget = draft.widgets[location.widgetId];\n if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.splitterPercent =\n panel.widgets.findIndex((wId) => wId === location.widgetId) === 0\n ? 100\n : 0;\n }\n widget.minimized = false;\n });\n}\n\n/** @internal */\nexport function useSavedFrontstageState(frontstageDef: FrontstageDef) {\n const uiStateStorage = useUiStateStorageHandler();\n const uiStateStorageRef = React.useRef(uiStateStorage);\n const isMountedRef = React.useRef(false);\n React.useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n React.useEffect(() => {\n uiStateStorageRef.current = uiStateStorage;\n }, [uiStateStorage]);\n React.useEffect(() => {\n async function fetchFrontstageState() {\n if (frontstageDef.nineZoneState) {\n frontstageDef.nineZoneState = processPopoutWidgets(\n frontstageDef.nineZoneState\n );\n return;\n }\n\n const id = frontstageDef.id;\n const version = frontstageDef.version;\n const settingResult = await uiStateStorageRef.current.getSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(id)\n );\n if (!isMountedRef.current) return;\n\n if (isFrontstageStateSettingResult(settingResult)) {\n const setting = settingResult.setting;\n if (\n setting.version === version &&\n setting.stateVersion === stateVersion\n ) {\n frontstageDef.nineZoneState = restoreNineZoneState(\n frontstageDef,\n setting.nineZone\n );\n return;\n }\n }\n frontstageDef.nineZoneState = initializeNineZoneState(frontstageDef);\n }\n void fetchFrontstageState();\n }, [frontstageDef]);\n}\n\n/** @internal */\nexport function useSaveFrontstageSettings(\n frontstageDef: FrontstageDef,\n store: LayoutStore\n) {\n const uiSettingsStorage = useUiStateStorageHandler();\n const pendingSave = React.useRef(() => {});\n const saveSetting = React.useMemo(() => {\n const debounced = debounce(\n async (frontstage: FrontstageDef, state: NineZoneState) => {\n const id = frontstage.id;\n const setting: WidgetPanelsFrontstageState = {\n id,\n version: frontstage.version,\n stateVersion,\n nineZone: packNineZoneState(state),\n };\n await uiSettingsStorage.saveSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(id),\n setting\n );\n },\n 1000\n );\n\n const save = (frontstage: FrontstageDef, state: NineZoneState) => {\n if (state.draggedTab) return;\n debounced(frontstage, state);\n };\n save.cancel = debounced.cancel;\n pendingSave.current = debounced.immediate;\n return save;\n }, [uiSettingsStorage]);\n React.useEffect(() => {\n return () => {\n saveSetting.cancel();\n };\n }, [saveSetting]);\n\n React.useEffect(() => {\n saveSetting(frontstageDef, store.getState());\n }, [saveSetting, frontstageDef, store]);\n React.useEffect(() => {\n return store.subscribe(() => {\n saveSetting(frontstageDef, store.getState());\n });\n }, [saveSetting, frontstageDef, store]);\n React.useEffect(() => {\n return () => {\n pendingSave.current();\n };\n }, [frontstageDef]);\n}\n\n/** @internal */\nexport const FRONTSTAGE_SETTINGS_NAMESPACE = \"uifw-frontstageSettings\";\n\n/** @internal */\nexport function getFrontstageStateSettingName(\n frontstageId: WidgetPanelsFrontstageState[\"id\"]\n) {\n return `frontstageState[${frontstageId}]`;\n}\n\n// istanbul ignore next\nfunction debounce<T extends (...args: any[]) => any>(\n func: T,\n duration: number\n) {\n let timeout: number | undefined;\n let handler: () => any | undefined;\n const debounced = (...args: Parameters<T>) => {\n handler = () => {\n timeout = undefined;\n return func(...args);\n };\n window.clearTimeout(timeout);\n timeout = window.setTimeout(handler, duration);\n };\n /**\n * Will cancel the timeout without running the function.\n */\n debounced.cancel = () => {\n window.clearTimeout(timeout);\n timeout = undefined;\n };\n /**\n * If not already ran, will run the function immediately and remove the timeout.\n */\n debounced.immediate = () => {\n if (timeout === undefined) return;\n debounced.cancel();\n handler?.();\n };\n return debounced;\n}\n\n/** @internal */\nexport function useFrontstageManager(\n frontstageDef: FrontstageDef,\n useToolAsToolSettingsLabel?: boolean\n) {\n const uiSettingsStorage = useUiStateStorageHandler();\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n (args) => {\n // TODO: track restoring frontstages to support workflows: i.e. prevent loading frontstage OR saving layout when delete is pending\n void uiSettingsStorage.deleteSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(args.frontstageDef.id)\n );\n if (frontstageDef.id === args.frontstageDef.id) {\n args.frontstageDef.nineZoneState =\n initializeNineZoneState(frontstageDef);\n } else {\n args.frontstageDef.nineZoneState = undefined;\n }\n }\n );\n }, [uiSettingsStorage, frontstageDef]);\n const defaultLabel = React.useMemo(\n () => UiFramework.translate(\"widget.labels.toolSettings\"),\n []\n );\n React.useEffect(() => {\n const updateLabel = () => {\n const state = frontstageDef.nineZoneState;\n if (!state) return;\n const toolSettingsTabId = state.toolSettings?.tabId;\n if (!toolSettingsTabId) return;\n\n const toolId = UiFramework.frontstages.activeToolId;\n const label = useToolAsToolSettingsLabel\n ? IModelApp.tools.find(toolId)?.flyover || defaultLabel\n : defaultLabel;\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SET_LABEL\",\n id: toolSettingsTabId,\n label,\n });\n };\n // Whenever the frontstageDef or the useTool... changes, keep the label up to date.\n updateLabel();\n\n const removeListenerFuncs: (() => void)[] = [];\n // If useTool... is true, listen for events to keep up the label up to date.\n if (useToolAsToolSettingsLabel) {\n removeListenerFuncs.push(\n UiFramework.frontstages.onFrontstageReadyEvent.addListener(updateLabel),\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n updateLabel\n ),\n UiFramework.frontstages.onToolActivatedEvent.addListener(updateLabel),\n UiFramework.frontstages.onToolSettingsReloadEvent.addListener(\n updateLabel\n )\n );\n }\n return () => {\n removeListenerFuncs.forEach((removeListener) => removeListener());\n };\n }, [frontstageDef, useToolAsToolSettingsLabel, defaultLabel]);\n}\n\n/** @internal */\n// istanbul ignore next\nexport function useItemsManager(frontstageDef: FrontstageDef) {\n const refreshNineZoneState = (def: FrontstageDef) => {\n // Fired for both registered/unregistered. Update definitions and remove/add missing widgets.\n def.updateWidgetDefs();\n let state = def.nineZoneState;\n if (!state) return;\n state = addMissingWidgets(def, state);\n state = removeMissingWidgets(def, state);\n def.nineZoneState = state;\n };\n\n React.useEffect(() => {\n // Need to refresh anytime frontstageDef changes because uiItemsProvider may have added something to\n // another stage before it was possibly unloaded in this stage.\n refreshNineZoneState(frontstageDef);\n }, [frontstageDef]);\n React.useEffect(() => {\n return UiItemsManager.onUiProviderRegisteredEvent.addListener(() => {\n refreshNineZoneState(frontstageDef);\n });\n }, [frontstageDef]);\n}\n\n// istanbul ignore next\nfunction determineNewWidgets(\n defs: readonly WidgetDef[] | undefined,\n state: NineZoneState\n) {\n defs = defs || [];\n const uniqueDefs = defs.filter((def, index, array) => {\n return index === array.findIndex((def1) => def.id === def1.id);\n });\n return uniqueDefs.filter((def) => !(def.id in state.tabs));\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolSettings.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/ToolSettings.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAEhC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAiCD,gBAAgB;AAChB,wBAAgB,wBAAwB,uBASvC;AAED,gBAAgB;AAChB,wBAAgB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"ToolSettings.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/ToolSettings.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAEhC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAiCD,gBAAgB;AAChB,wBAAgB,wBAAwB,uBASvC;AAED,gBAAgB;AAChB,wBAAgB,yBAAyB,gBAoBxC;AAED,gBAAgB;AAChB,wBAAgB,6BAA6B,wBAkC5C;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE,qBAAqB,eAgBnE;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,2KAwClC;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,uBAKlC;AAED,gBAAgB;AAChB,wBAAgB,yBAAyB,gBAoCxC"}
|
|
@@ -50,12 +50,7 @@ exports.WidgetPanelsToolSettings = WidgetPanelsToolSettings;
|
|
|
50
50
|
/** @internal */
|
|
51
51
|
function ToolSettingsDockedContent() {
|
|
52
52
|
const settings = useHorizontalToolSettingNodes();
|
|
53
|
-
const
|
|
54
|
-
React.useEffect(() => {
|
|
55
|
-
// We cant work with the content of the settings, but we can force refresh when
|
|
56
|
-
// the array is different.
|
|
57
|
-
setForceRefreshKey(Date.now());
|
|
58
|
-
}, [settings]);
|
|
53
|
+
const forceRefreshKey = useRefreshKey(settings);
|
|
59
54
|
// for the overflow to work properly each setting in the DockedToolSettings should be wrapped by a DockedToolSetting component
|
|
60
55
|
return (React.createElement(appui_layout_react_1.DockedToolSettings, { itemId: InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider?.uniqueId ?? "none", key: forceRefreshKey }, settings &&
|
|
61
56
|
settings.map((entry, index) => (React.createElement(appui_layout_react_1.DockedToolSetting, { key: index },
|
|
@@ -65,6 +60,9 @@ function ToolSettingsDockedContent() {
|
|
|
65
60
|
exports.ToolSettingsDockedContent = ToolSettingsDockedContent;
|
|
66
61
|
/** @internal */
|
|
67
62
|
function useHorizontalToolSettingNodes() {
|
|
63
|
+
React.useEffect(() => {
|
|
64
|
+
UiFramework_1.UiFramework.frontstages.activeToolInformation?.toolUiProvider?.reloadPropertiesFromTool();
|
|
65
|
+
}, []);
|
|
68
66
|
const [settings, setSettings] = React.useState(InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider
|
|
69
67
|
?.horizontalToolSettingNodes);
|
|
70
68
|
const [emptySettings, setEmptySettings] = React.useState(() => [
|
|
@@ -107,6 +105,9 @@ function ToolSettingsGrid({ settings }) {
|
|
|
107
105
|
exports.ToolSettingsGrid = ToolSettingsGrid;
|
|
108
106
|
/** @internal */
|
|
109
107
|
function useToolSettingsNode() {
|
|
108
|
+
React.useEffect(() => {
|
|
109
|
+
UiFramework_1.UiFramework.frontstages.activeToolInformation?.toolUiProvider?.reloadPropertiesFromTool();
|
|
110
|
+
}, []);
|
|
110
111
|
const [settings, setSettings] = React.useState(InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider?.toolSettingsNode);
|
|
111
112
|
React.useEffect(() => {
|
|
112
113
|
const handleToolActivatedEvent = () => {
|
|
@@ -144,6 +145,7 @@ exports.ToolSettingsContent = ToolSettingsContent;
|
|
|
144
145
|
function ToolSettingsWidgetContent() {
|
|
145
146
|
const floatingToolSettingsContainerRef = React.useRef(null);
|
|
146
147
|
const node = useToolSettingsNode();
|
|
148
|
+
const forceRefreshKey = useRefreshKey(node);
|
|
147
149
|
// if no tool settings hide the floating widgets tab
|
|
148
150
|
React.useEffect(() => {
|
|
149
151
|
// istanbul ignore else
|
|
@@ -159,8 +161,22 @@ function ToolSettingsWidgetContent() {
|
|
|
159
161
|
}, [node]);
|
|
160
162
|
// istanbul ignore next
|
|
161
163
|
const providerId = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider?.uniqueId ?? "none";
|
|
162
|
-
return (React.createElement("div", { "data-toolsettings-provider": providerId, className: "uifw-floating-toolsettings-container", ref: floatingToolSettingsContainerRef },
|
|
164
|
+
return (React.createElement("div", { "data-toolsettings-provider": providerId, className: "uifw-floating-toolsettings-container", ref: floatingToolSettingsContainerRef, key: forceRefreshKey },
|
|
163
165
|
React.createElement(appui_layout_react_1.ScrollableWidgetContent, null, node)));
|
|
164
166
|
}
|
|
165
167
|
exports.ToolSettingsWidgetContent = ToolSettingsWidgetContent;
|
|
168
|
+
/**
|
|
169
|
+
* Hook that returns a key that can be used to force refresh the tool settings.
|
|
170
|
+
* @param toolSettingNodes Nodes that are used to determine if the tool settings should be refreshed.
|
|
171
|
+
* @returns a new key if the dependency changes.
|
|
172
|
+
*/
|
|
173
|
+
function useRefreshKey(toolSettingNodes) {
|
|
174
|
+
const [forceRefreshKey, setForceRefreshKey] = React.useState(Date.now());
|
|
175
|
+
React.useEffect(() => {
|
|
176
|
+
// We cant work with the content of the settings, but we can force refresh when
|
|
177
|
+
// the array is different.
|
|
178
|
+
setForceRefreshKey(Date.now());
|
|
179
|
+
}, [toolSettingNodes]);
|
|
180
|
+
return forceRefreshKey;
|
|
181
|
+
}
|
|
166
182
|
//# sourceMappingURL=ToolSettings.js.map
|