@itwin/appui-react 5.30.0 → 5.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/lib/appui-react/accudraw/AccuDrawStoreProvider.d.ts +7 -0
  3. package/lib/appui-react/accudraw/AccuDrawStoreProvider.d.ts.map +1 -0
  4. package/lib/appui-react/accudraw/AccuDrawStoreProvider.js +26 -0
  5. package/lib/appui-react/accudraw/AccuDrawStoreProvider.js.map +1 -0
  6. package/lib/appui-react/accudraw/FrameworkAccuDraw.d.ts +1 -1
  7. package/lib/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
  8. package/lib/appui-react/accudraw/FrameworkAccuDraw.js +1 -4
  9. package/lib/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  10. package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts +12 -0
  11. package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  12. package/lib/appui-react/configurableui/ConfigurableUiContent.js +3 -1
  13. package/lib/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  14. package/lib/appui-react/frontstage/ModalFrontstage.d.ts +27 -15
  15. package/lib/appui-react/frontstage/ModalFrontstage.d.ts.map +1 -1
  16. package/lib/appui-react/frontstage/ModalFrontstage.js +16 -20
  17. package/lib/appui-react/frontstage/ModalFrontstage.js.map +1 -1
  18. package/lib/appui-react/frontstage/ModalFrontstage.scss +11 -17
  19. package/lib/appui-react/hooks/useActiveModalFrontstage.d.ts +8 -0
  20. package/lib/appui-react/hooks/useActiveModalFrontstage.d.ts.map +1 -0
  21. package/lib/appui-react/hooks/useActiveModalFrontstage.js +23 -0
  22. package/lib/appui-react/hooks/useActiveModalFrontstage.js.map +1 -0
  23. package/lib/appui-react/hooks/useListeners.d.ts +8 -0
  24. package/lib/appui-react/hooks/useListeners.d.ts.map +1 -0
  25. package/lib/appui-react/hooks/useListeners.js +25 -0
  26. package/lib/appui-react/hooks/useListeners.js.map +1 -0
  27. package/lib/appui-react/hooks/useViewports.d.ts +9 -0
  28. package/lib/appui-react/hooks/useViewports.d.ts.map +1 -0
  29. package/lib/appui-react/hooks/useViewports.js +35 -0
  30. package/lib/appui-react/hooks/useViewports.js.map +1 -0
  31. package/lib/appui-react/layout/StandardLayout.d.ts +1 -2
  32. package/lib/appui-react/layout/StandardLayout.d.ts.map +1 -1
  33. package/lib/appui-react/layout/StandardLayout.js +9 -9
  34. package/lib/appui-react/layout/StandardLayout.js.map +1 -1
  35. package/lib/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  36. package/lib/appui-react/widget-panels/Frontstage.js +9 -4
  37. package/lib/appui-react/widget-panels/Frontstage.js.map +1 -1
  38. package/lib/appui-react/widget-panels/ModalFrontstageComposer.d.ts +1 -6
  39. package/lib/appui-react/widget-panels/ModalFrontstageComposer.d.ts.map +1 -1
  40. package/lib/appui-react/widget-panels/ModalFrontstageComposer.js +7 -16
  41. package/lib/appui-react/widget-panels/ModalFrontstageComposer.js.map +1 -1
  42. package/lib/cjs/appui-react/frontstage/ModalFrontstage.scss +11 -17
  43. package/lib/esm/appui-react/frontstage/ModalFrontstage.scss +11 -17
  44. package/package.json +7 -7
@@ -0,0 +1,23 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module Hooks
7
+ */
8
+ import { useSyncExternalStore } from "react";
9
+ import { UiFramework } from "../UiFramework.js";
10
+ const subscribe = (onStoreChange) => {
11
+ return UiFramework.frontstages.onModalFrontstageChangedEvent.addListener(onStoreChange);
12
+ };
13
+ const getSnapshot = () => {
14
+ return UiFramework.frontstages.activeModalFrontstage;
15
+ };
16
+ /** React hook that returns the active modal frontstage.
17
+ * @internal
18
+ */
19
+ export function useActiveModalFrontstage() {
20
+ const frontstage = useSyncExternalStore(subscribe, getSnapshot);
21
+ return frontstage;
22
+ }
23
+ //# sourceMappingURL=useActiveModalFrontstage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActiveModalFrontstage.js","sourceRoot":"","sources":["../../../src/appui-react/hooks/useActiveModalFrontstage.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,SAAS,GAAG,CAAC,aAAyB,EAAE,EAAE;IAC9C,OAAO,WAAW,CAAC,WAAW,CAAC,6BAA6B,CAAC,WAAW,CACtE,aAAa,CACd,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,OAAO,WAAW,CAAC,WAAW,CAAC,qBAAqB,CAAC;AACvD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAChE,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Hooks\n */\n\nimport { useSyncExternalStore } from \"react\";\nimport { UiFramework } from \"../UiFramework.js\";\n\nconst subscribe = (onStoreChange: () => void) => {\n return UiFramework.frontstages.onModalFrontstageChangedEvent.addListener(\n onStoreChange\n );\n};\n\nconst getSnapshot = () => {\n return UiFramework.frontstages.activeModalFrontstage;\n};\n\n/** React hook that returns the active modal frontstage.\n * @internal\n */\nexport function useActiveModalFrontstage() {\n const frontstage = useSyncExternalStore(subscribe, getSnapshot);\n return frontstage;\n}\n"]}
@@ -0,0 +1,8 @@
1
+ /** @packageDocumentation
2
+ * @module Hooks
3
+ */
4
+ /** Utility to add/remove listeners to multiple items.
5
+ * @internal
6
+ */
7
+ export declare function useListeners<T>(items: T[], addListener: (item: T) => () => void): void;
8
+ //# sourceMappingURL=useListeners.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useListeners.d.ts","sourceRoot":"","sources":["../../../src/appui-react/hooks/useListeners.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAKH;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,CAAC,EAAE,EACV,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,IAAI,QAYrC"}
@@ -0,0 +1,25 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module Hooks
7
+ */
8
+ import * as React from "react";
9
+ import { useLatestRef } from "./useLatestRef.js";
10
+ /** Utility to add/remove listeners to multiple items.
11
+ * @internal
12
+ */
13
+ export function useListeners(items, addListener) {
14
+ const addListenerRef = useLatestRef(addListener);
15
+ React.useEffect(() => {
16
+ const removeListeners = items.reduce((acc, item) => {
17
+ acc.push(addListenerRef.current(item));
18
+ return acc;
19
+ }, []);
20
+ return () => {
21
+ removeListeners.forEach((remove) => remove());
22
+ };
23
+ }, [items, addListenerRef]);
24
+ }
25
+ //# sourceMappingURL=useListeners.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useListeners.js","sourceRoot":"","sources":["../../../src/appui-react/hooks/useListeners.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAU,EACV,WAAoC;IAEpC,MAAM,cAAc,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACjD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACpE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACvC,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,OAAO,GAAG,EAAE;YACV,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;AAC9B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Hooks\n */\n\nimport * as React from \"react\";\nimport { useLatestRef } from \"./useLatestRef.js\";\n\n/** Utility to add/remove listeners to multiple items.\n * @internal\n */\nexport function useListeners<T>(\n items: T[],\n addListener: (item: T) => () => void\n) {\n const addListenerRef = useLatestRef(addListener);\n React.useEffect(() => {\n const removeListeners = items.reduce<Array<() => void>>((acc, item) => {\n acc.push(addListenerRef.current(item));\n return acc;\n }, []);\n return () => {\n removeListeners.forEach((remove) => remove());\n };\n }, [items, addListenerRef]);\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /** @packageDocumentation
2
+ * @module Hooks
3
+ */
4
+ import type { ScreenViewport } from "@itwin/core-frontend";
5
+ /** Returns all viewports of the `IModelApp.viewManager`.
6
+ * @internal
7
+ */
8
+ export declare function useViewports(): ScreenViewport[];
9
+ //# sourceMappingURL=useViewports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useViewports.d.ts","sourceRoot":"","sources":["../../../src/appui-react/hooks/useViewports.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA0B3D;;GAEG;AACH,wBAAgB,YAAY,IAAI,cAAc,EAAE,CAG/C"}
@@ -0,0 +1,35 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** @packageDocumentation
6
+ * @module Hooks
7
+ */
8
+ import { useSyncExternalStore } from "react";
9
+ import { IModelApp } from "@itwin/core-frontend";
10
+ const subscribe = (onStoreChange) => {
11
+ const removeListeners = [
12
+ IModelApp.viewManager.onViewOpen.addListener(onStoreChange),
13
+ IModelApp.viewManager.onViewClose.addListener(onStoreChange),
14
+ ];
15
+ return () => {
16
+ removeListeners.forEach((remove) => remove());
17
+ };
18
+ };
19
+ let lastViewports = [];
20
+ const getSnapshot = () => {
21
+ const viewports = Array.from(IModelApp.viewManager);
22
+ if (viewports.length === lastViewports.length &&
23
+ viewports.every((vp, i) => vp === lastViewports[i]))
24
+ return lastViewports;
25
+ lastViewports = viewports;
26
+ return viewports;
27
+ };
28
+ /** Returns all viewports of the `IModelApp.viewManager`.
29
+ * @internal
30
+ */
31
+ export function useViewports() {
32
+ const viewports = useSyncExternalStore(subscribe, getSnapshot);
33
+ return viewports;
34
+ }
35
+ //# sourceMappingURL=useViewports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useViewports.js","sourceRoot":"","sources":["../../../src/appui-react/hooks/useViewports.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,SAAS,GAAG,CAAC,aAAyB,EAAE,EAAE;IAC9C,MAAM,eAAe,GAAG;QACtB,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC;QAC3D,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC;KAC7D,CAAC;IACF,OAAO,GAAG,EAAE;QACV,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,IAAI,aAAa,GAAqB,EAAE,CAAC;AACzC,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACpD,IACE,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;QACzC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC;QAEnD,OAAO,aAAa,CAAC;IAEvB,aAAa,GAAG,SAAS,CAAC;IAC1B,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC/D,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Hooks\n */\n\nimport { useSyncExternalStore } from \"react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\n\nconst subscribe = (onStoreChange: () => void) => {\n const removeListeners = [\n IModelApp.viewManager.onViewOpen.addListener(onStoreChange),\n IModelApp.viewManager.onViewClose.addListener(onStoreChange),\n ];\n return () => {\n removeListeners.forEach((remove) => remove());\n };\n};\n\nlet lastViewports: ScreenViewport[] = [];\nconst getSnapshot = () => {\n const viewports = Array.from(IModelApp.viewManager);\n if (\n viewports.length === lastViewports.length &&\n viewports.every((vp, i) => vp === lastViewports[i])\n )\n return lastViewports;\n\n lastViewports = viewports;\n return viewports;\n};\n\n/** Returns all viewports of the `IModelApp.viewManager`.\n * @internal\n */\nexport function useViewports(): ScreenViewport[] {\n const viewports = useSyncExternalStore(subscribe, getSnapshot);\n return viewports;\n}\n"]}
@@ -3,8 +3,7 @@
3
3
  */
4
4
  import "./StandardLayout.scss";
5
5
  import * as React from "react";
6
- import type { CommonProps } from "@itwin/core-react";
7
- interface StandardLayoutProps extends CommonProps {
6
+ interface StandardLayoutProps extends React.HTMLAttributes<HTMLDivElement> {
8
7
  /** Main content area of the application (i.e. viewport) that will change bounds based on panel pinned state. */
9
8
  children?: React.ReactNode;
10
9
  /** Component that displays center content (i.e. toolbars). Content is always bound by widget panels. */
@@ -1 +1 @@
1
- {"version":3,"file":"StandardLayout.d.ts","sourceRoot":"","sources":["../../../src/appui-react/layout/StandardLayout.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAWrD,UAAU,mBAAoB,SAAQ,WAAW;IAC/C,gHAAgH;IAChH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,wGAAwG;IACxG,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBAwBxD"}
1
+ {"version":3,"file":"StandardLayout.d.ts","sourceRoot":"","sources":["../../../src/appui-react/layout/StandardLayout.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,UAAU,mBAAoB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE,gHAAgH;IAChH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,wGAAwG;IACxG,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBAqCxD"}
@@ -19,21 +19,21 @@ import { useRefs } from "@itwin/core-react/internal";
19
19
  * @internal
20
20
  */
21
21
  export function StandardLayout(props) {
22
+ const { centerContent, leftPanel, rightPanel, topPanel, bottomPanel, toolSettings, statusBar, ...rest } = props;
22
23
  const { contentElementRef } = React.useContext(ConfigurableUiContext);
23
24
  const pinned = usePinnedPanels();
24
25
  const appContentRef = usePanelsAutoCollapse();
25
26
  const refs = useRefs(contentElementRef, appContentRef);
26
- const className = classnames("nz-standardLayout", pinned, props.className);
27
27
  const contentAlwaysMaxSize = useContentAlwaysMaxSize();
28
- return (React.createElement("div", { className: className, style: props.style },
28
+ return (React.createElement("div", { ...rest, className: classnames("nz-standardLayout", pinned, props.className) },
29
29
  React.createElement("div", { className: classnames("nz-appContent", contentAlwaysMaxSize), ref: refs }, props.children),
30
- React.createElement("div", { className: "nz-centerContent" }, props.centerContent),
31
- React.createElement(Panel, { side: "left" }, props.leftPanel),
32
- React.createElement(Panel, { side: "right" }, props.rightPanel),
33
- React.createElement(Panel, { side: "top" }, props.topPanel),
34
- React.createElement(Panel, { side: "bottom" }, props.bottomPanel),
35
- React.createElement("div", { className: "nz-toolSettings" }, props.toolSettings),
36
- React.createElement("div", { className: "nz-statusBar" }, props.statusBar)));
30
+ React.createElement("div", { className: "nz-centerContent" }, centerContent),
31
+ React.createElement(Panel, { side: "left" }, leftPanel),
32
+ React.createElement(Panel, { side: "right" }, rightPanel),
33
+ React.createElement(Panel, { side: "top" }, topPanel),
34
+ React.createElement(Panel, { side: "bottom" }, bottomPanel),
35
+ React.createElement("div", { className: "nz-toolSettings" }, toolSettings),
36
+ React.createElement("div", { className: "nz-statusBar" }, statusBar)));
37
37
  }
38
38
  function Panel({ children, side }) {
39
39
  const maximizedWidget = useMaximizedPanelLayout(side);
@@ -1 +1 @@
1
- {"version":3,"file":"StandardLayout.js","sourceRoot":"","sources":["../../../src/appui-react/layout/StandardLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WidgetPanels\n */\n\nimport \"./StandardLayout.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { useLayout } from \"./base/LayoutStore.js\";\nimport { useContentAlwaysMaxSize } from \"../preview/content-always-max-size/useContentAlwaysMaxSize.js\";\nimport { useMaximizedPanelLayout } from \"../preview/enable-maximized-widget/useMaximizedWidget.js\";\nimport { useHorizontalPanelAlignment } from \"../preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js\";\nimport { usePanelsAutoCollapse } from \"./widget-panels/usePanelsAutoCollapse.js\";\nimport type { PanelSide } from \"./widget-panels/PanelTypes.js\";\nimport { ConfigurableUiContext } from \"../configurableui/ConfigurableUiContent.js\";\nimport { useRefs } from \"@itwin/core-react/internal\";\n\n// eslint-disable-next-line @typescript-eslint/no-deprecated\ninterface StandardLayoutProps extends CommonProps {\n /** Main content area of the application (i.e. viewport) that will change bounds based on panel pinned state. */\n children?: React.ReactNode;\n /** Component that displays center content (i.e. toolbars). Content is always bound by widget panels. */\n centerContent?: React.ReactNode;\n toolSettings?: React.ReactNode;\n statusBar?: React.ReactNode;\n topPanel?: React.ReactNode;\n leftPanel?: React.ReactNode;\n rightPanel?: React.ReactNode;\n bottomPanel?: React.ReactNode;\n}\n\n/** Component that displays widgets in a standard layout.\n * @internal\n */\nexport function StandardLayout(props: StandardLayoutProps) {\n const { contentElementRef } = React.useContext(ConfigurableUiContext);\n const pinned = usePinnedPanels();\n const appContentRef = usePanelsAutoCollapse<HTMLDivElement>();\n const refs = useRefs(contentElementRef, appContentRef);\n const className = classnames(\"nz-standardLayout\", pinned, props.className);\n const contentAlwaysMaxSize = useContentAlwaysMaxSize();\n return (\n <div className={className} style={props.style}>\n <div\n className={classnames(\"nz-appContent\", contentAlwaysMaxSize)}\n ref={refs}\n >\n {props.children}\n </div>\n <div className=\"nz-centerContent\">{props.centerContent}</div>\n <Panel side=\"left\">{props.leftPanel}</Panel>\n <Panel side=\"right\">{props.rightPanel}</Panel>\n <Panel side=\"top\">{props.topPanel}</Panel>\n <Panel side=\"bottom\">{props.bottomPanel}</Panel>\n <div className=\"nz-toolSettings\">{props.toolSettings}</div>\n <div className=\"nz-statusBar\">{props.statusBar}</div>\n </div>\n );\n}\n\ninterface PanelProps {\n side: PanelSide;\n}\n\nfunction Panel({ children, side }: React.PropsWithChildren<PanelProps>) {\n const maximizedWidget = useMaximizedPanelLayout(side);\n const horizontalAlignment = useHorizontalPanelAlignment(side);\n const className = classnames(\n `nz-standardLayout_${side}Panel`,\n maximizedWidget,\n horizontalAlignment.classNames\n );\n return (\n <div className={className} {...horizontalAlignment.attributes}>\n {children}\n </div>\n );\n}\n\nfunction usePinnedPanels() {\n const leftPinned = useLayout((state) => state.panels.left.pinned);\n const rightPinned = useLayout((state) => state.panels.right.pinned);\n const topPinned = useLayout((state) => state.panels.top.pinned);\n const bottomPinned = useLayout((state) => state.panels.bottom.pinned);\n return {\n \"nz-pinned-left\": leftPinned,\n \"nz-pinned-right\": rightPinned,\n \"nz-pinned-top\": topPinned,\n \"nz-pinned-bottom\": bottomPinned,\n };\n}\n"]}
1
+ {"version":3,"file":"StandardLayout.js","sourceRoot":"","sources":["../../../src/appui-react/layout/StandardLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WidgetPanels\n */\n\nimport \"./StandardLayout.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { useLayout } from \"./base/LayoutStore.js\";\nimport { useContentAlwaysMaxSize } from \"../preview/content-always-max-size/useContentAlwaysMaxSize.js\";\nimport { useMaximizedPanelLayout } from \"../preview/enable-maximized-widget/useMaximizedWidget.js\";\nimport { useHorizontalPanelAlignment } from \"../preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js\";\nimport { usePanelsAutoCollapse } from \"./widget-panels/usePanelsAutoCollapse.js\";\nimport type { PanelSide } from \"./widget-panels/PanelTypes.js\";\nimport { ConfigurableUiContext } from \"../configurableui/ConfigurableUiContent.js\";\nimport { useRefs } from \"@itwin/core-react/internal\";\n\ninterface StandardLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Main content area of the application (i.e. viewport) that will change bounds based on panel pinned state. */\n children?: React.ReactNode;\n /** Component that displays center content (i.e. toolbars). Content is always bound by widget panels. */\n centerContent?: React.ReactNode;\n toolSettings?: React.ReactNode;\n statusBar?: React.ReactNode;\n topPanel?: React.ReactNode;\n leftPanel?: React.ReactNode;\n rightPanel?: React.ReactNode;\n bottomPanel?: React.ReactNode;\n}\n\n/** Component that displays widgets in a standard layout.\n * @internal\n */\nexport function StandardLayout(props: StandardLayoutProps) {\n const {\n centerContent,\n leftPanel,\n rightPanel,\n topPanel,\n bottomPanel,\n toolSettings,\n statusBar,\n ...rest\n } = props;\n\n const { contentElementRef } = React.useContext(ConfigurableUiContext);\n const pinned = usePinnedPanels();\n const appContentRef = usePanelsAutoCollapse<HTMLDivElement>();\n const refs = useRefs(contentElementRef, appContentRef);\n const contentAlwaysMaxSize = useContentAlwaysMaxSize();\n return (\n <div\n {...rest}\n className={classnames(\"nz-standardLayout\", pinned, props.className)}\n >\n <div\n className={classnames(\"nz-appContent\", contentAlwaysMaxSize)}\n ref={refs}\n >\n {props.children}\n </div>\n <div className=\"nz-centerContent\">{centerContent}</div>\n <Panel side=\"left\">{leftPanel}</Panel>\n <Panel side=\"right\">{rightPanel}</Panel>\n <Panel side=\"top\">{topPanel}</Panel>\n <Panel side=\"bottom\">{bottomPanel}</Panel>\n <div className=\"nz-toolSettings\">{toolSettings}</div>\n <div className=\"nz-statusBar\">{statusBar}</div>\n </div>\n );\n}\n\ninterface PanelProps {\n side: PanelSide;\n}\n\nfunction Panel({ children, side }: React.PropsWithChildren<PanelProps>) {\n const maximizedWidget = useMaximizedPanelLayout(side);\n const horizontalAlignment = useHorizontalPanelAlignment(side);\n const className = classnames(\n `nz-standardLayout_${side}Panel`,\n maximizedWidget,\n horizontalAlignment.classNames\n );\n return (\n <div className={className} {...horizontalAlignment.attributes}>\n {children}\n </div>\n );\n}\n\nfunction usePinnedPanels() {\n const leftPinned = useLayout((state) => state.panels.left.pinned);\n const rightPinned = useLayout((state) => state.panels.right.pinned);\n const topPinned = useLayout((state) => state.panels.top.pinned);\n const bottomPinned = useLayout((state) => state.panels.bottom.pinned);\n return {\n \"nz-pinned-left\": leftPinned,\n \"nz-pinned-right\": rightPinned,\n \"nz-pinned-top\": topPinned,\n \"nz-pinned-bottom\": bottomPinned,\n };\n}\n"]}
@@ -1 +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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"}
@@ -35,7 +35,7 @@ import { WidgetContent } from "./Content.js";
35
35
  import { FloatingWidget } from "./FloatingWidget.js";
36
36
  import "./Frontstage.scss";
37
37
  import { WidgetPanelsFrontstageContent } from "./FrontstageContent.js";
38
- import { ModalFrontstageComposer, useActiveModalFrontstageInfo, } from "./ModalFrontstageComposer.js";
38
+ import { ModalFrontstageComposer } from "./ModalFrontstageComposer.js";
39
39
  import { WidgetPanelsStatusBar } from "./StatusBar.js";
40
40
  import { WidgetPanelsTab } from "./Tab.js";
41
41
  import { WidgetPanelsToolbars } from "./Toolbars.js";
@@ -47,6 +47,7 @@ import { WidgetContentRenderers } from "../layout/widget/ContentRenderer.js";
47
47
  import { useCursor } from "../layout/widget-panels/CursorOverlay.js";
48
48
  import { WidgetPanelExpanders } from "../layout/widget-panels/Expander.js";
49
49
  import { useTranslation } from "../hooks/useTranslation.js";
50
+ import { useActiveModalFrontstage } from "../hooks/useActiveModalFrontstage.js";
50
51
  import { PopoutWidgets } from "../preview/reparent-popout-widgets/PopoutWidgets.js";
51
52
  import { useReduxFrameworkState } from "../uistate/useReduxFrameworkState.js";
52
53
  import { ConfigurableUiContext } from "../configurableui/ConfigurableUiContent.js";
@@ -54,15 +55,19 @@ import { useSaveFrontstageSettings } from "./useSaveFrontstageSettings.js";
54
55
  import { UiStateStorageStatus } from "../uistate/UiStateStorage.js";
55
56
  import { useLatestRef } from "../hooks/useLatestRef.js";
56
57
  function WidgetPanelsFrontstageComponent() {
57
- const activeModalFrontstageInfo = useActiveModalFrontstageInfo();
58
+ const modalFrontstage = useActiveModalFrontstage();
58
59
  const uiIsVisible = useUiVisibility();
59
60
  const previewFeatures = usePreviewFeatures();
60
61
  useCursor();
61
62
  return (React.createElement(MaximizedWidgetProvider, null,
62
63
  React.createElement(PreviewHorizontalPanelAlignFeatureProvider, { enabled: previewFeatures.horizontalPanelAlignment },
63
64
  React.createElement(ToolbarPopupAutoHideContext.Provider, { value: !uiIsVisible },
64
- React.createElement(ModalFrontstageComposer, { stageInfo: activeModalFrontstageInfo }),
65
- React.createElement(StandardLayout, { centerContent: React.createElement(React.Fragment, null,
65
+ React.createElement(ModalFrontstageComposer, null),
66
+ React.createElement(StandardLayout
67
+ // @ts-expect-error - Supporting React 19 and 18
68
+ , {
69
+ // @ts-expect-error - Supporting React 19 and 18
70
+ inert: !!modalFrontstage ? "true" : undefined, centerContent: React.createElement(React.Fragment, null,
66
71
  React.createElement(WidgetPanelsToolbars, null),
67
72
  React.createElement(WidgetPanelExpanders, null)), toolSettings: React.createElement(WidgetPanelsToolSettings, null), statusBar: React.createElement(WidgetPanelsStatusBar, null), topPanel: React.createElement(WidgetPanelProvider, { side: "top" }), leftPanel: React.createElement(WidgetPanelProvider, { side: "left" }), rightPanel: React.createElement(WidgetPanelProvider, { side: "right" }), bottomPanel: React.createElement(WidgetPanelProvider, { side: "bottom" }) },
68
73
  React.createElement(WidgetPanelsFrontstageContent, null)),
@@ -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\nimport { ToolbarPopupAutoHideContext } from \"@itwin/components-react\";\nimport { assert, Logger, ProcessDetector } from \"@itwin/core-bentley\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { produce } from \"immer\";\nimport * as React from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport type { FrontstageDef } from \"../frontstage/FrontstageDef.js\";\nimport { useActiveFrontstageDef } from \"../frontstage/FrontstageDef.js\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager.js\";\nimport { useEscapeSetFocusToHome } from \"../hooks/useEscapeSetFocusToHome.js\";\nimport { useUiVisibility } from \"../hooks/useUiVisibility.js\";\nimport { createLayoutStore } from \"../layout/base/LayoutStore.js\";\nimport type {\n NineZoneDispatch,\n NineZoneLabels,\n} from \"../layout/base/NineZone.js\";\nimport { getUniqueId, NineZone } from \"../layout/base/NineZone.js\";\nimport type { NineZoneState } from \"../layout/state/NineZoneState.js\";\nimport { createNineZoneState } from \"../layout/state/NineZoneState.js\";\nimport { NineZoneStateReducer } from \"../layout/state/NineZoneStateReducer.js\";\nimport { getWidgetPanelSectionId } from \"../layout/state/PanelState.js\";\nimport type { TabState } from \"../layout/state/TabState.js\";\nimport { FloatingWidgets } from \"../layout/widget/FloatingWidgets.js\";\nimport { PreviewHorizontalPanelAlignFeatureProvider } from \"../preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js\";\nimport { usePreviewFeatures } from \"../preview/PreviewFeatures.js\";\nimport { toPanelSide } from \"../stagepanels/StagePanelDef.js\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation.js\";\nimport { StagePanelSection } from \"../stagepanels/StagePanelSection.js\";\nimport { StagePanelState } from \"../stagepanels/StagePanelState.js\";\nimport { UiItemsManager } from \"../ui-items-provider/UiItemsManager.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage.js\";\nimport type { WidgetDef } from \"../widgets/WidgetDef.js\";\nimport { WidgetState } from \"../widgets/WidgetState.js\";\nimport { WidgetContent } from \"./Content.js\";\nimport { FloatingWidget } from \"./FloatingWidget.js\";\nimport \"./Frontstage.scss\";\nimport { WidgetPanelsFrontstageContent } from \"./FrontstageContent.js\";\nimport {\n ModalFrontstageComposer,\n useActiveModalFrontstageInfo,\n} from \"./ModalFrontstageComposer.js\";\nimport { WidgetPanelsStatusBar } from \"./StatusBar.js\";\nimport { WidgetPanelsTab } from \"./Tab.js\";\nimport { WidgetPanelsToolbars } from \"./Toolbars.js\";\nimport {\n ToolSettingsContent,\n WidgetPanelsToolSettings,\n} from \"./ToolSettings.js\";\nimport { MaximizedWidgetProvider } from \"../preview/enable-maximized-widget/MaximizedWidget.js\";\nimport { StandardLayout } from \"../layout/StandardLayout.js\";\nimport { WidgetPanelProvider } from \"../layout/widget-panels/Panel.js\";\nimport { WidgetContentRenderers } from \"../layout/widget/ContentRenderer.js\";\nimport { useCursor } from \"../layout/widget-panels/CursorOverlay.js\";\nimport { WidgetPanelExpanders } from \"../layout/widget-panels/Expander.js\";\nimport { useTranslation } from \"../hooks/useTranslation.js\";\nimport { PopoutWidgets } from \"../preview/reparent-popout-widgets/PopoutWidgets.js\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState.js\";\nimport { ConfigurableUiContext } from \"../configurableui/ConfigurableUiContent.js\";\nimport { useSaveFrontstageSettings } from \"./useSaveFrontstageSettings.js\";\nimport type { UiStateStorageResult } from \"../uistate/UiStateStorage.js\";\nimport { UiStateStorageStatus } from \"../uistate/UiStateStorage.js\";\nimport { useLatestRef } from \"../hooks/useLatestRef.js\";\n\nfunction WidgetPanelsFrontstageComponent() {\n const activeModalFrontstageInfo = useActiveModalFrontstageInfo();\n const uiIsVisible = useUiVisibility();\n const previewFeatures = usePreviewFeatures();\n useCursor();\n\n return (\n <MaximizedWidgetProvider>\n <PreviewHorizontalPanelAlignFeatureProvider\n enabled={previewFeatures.horizontalPanelAlignment}\n >\n <ToolbarPopupAutoHideContext.Provider value={!uiIsVisible}>\n <ModalFrontstageComposer stageInfo={activeModalFrontstageInfo} />\n <StandardLayout\n centerContent={\n <>\n <WidgetPanelsToolbars />\n <WidgetPanelExpanders />\n </>\n }\n toolSettings={<WidgetPanelsToolSettings />}\n statusBar={<WidgetPanelsStatusBar />}\n topPanel={<WidgetPanelProvider side=\"top\" />}\n leftPanel={<WidgetPanelProvider side=\"left\" />}\n rightPanel={<WidgetPanelProvider side=\"right\" />}\n bottomPanel={<WidgetPanelProvider side=\"bottom\" />}\n >\n <WidgetPanelsFrontstageContent />\n </StandardLayout>\n <WidgetContentRenderers />\n <FloatingWidgets />\n <PopoutWidgets />\n </ToolbarPopupAutoHideContext.Provider>\n </PreviewHorizontalPanelAlignFeatureProvider>\n </MaximizedWidgetProvider>\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 if (!size) return;\n frontstageDef.dispatch({\n type: \"RESIZE\",\n size: {\n height: size.height,\n width: size.width,\n },\n });\n }, [frontstageDef]);\n}\n\nconst log =\n (reducer: typeof NineZoneStateReducer): typeof NineZoneStateReducer =>\n (state, action) => {\n Logger.logTrace(\"appui-react:reducer\", `action ${action.type}`, () => ({\n action,\n state,\n }));\n return reducer(state, action);\n };\n\n/** @internal */\nexport function useNineZoneDispatch(frontstageDef: FrontstageDef) {\n const reducer = React.useMemo(() => {\n return log(NineZoneStateReducer);\n }, []);\n\n return React.useCallback<NineZoneDispatch>(\n (action) => {\n if (action.type === \"RESIZE\") {\n InternalFrontstageManager.nineZoneSize = {\n width: action.size.width,\n height: action.size.height,\n };\n }\n\n const state = frontstageDef.nineZoneState;\n if (!state) return;\n frontstageDef.nineZoneState = reducer(state, action);\n },\n [frontstageDef, reducer]\n );\n}\n\n/** @internal */\nexport function WidgetPanelsFrontstage() {\n const frontstageDef = useActiveFrontstageDef();\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 <ActiveFrontstageDefProvider frontstageDef={frontstageDef} />;\n}\n\nconst defaultNineZone = createNineZoneState();\nconst tabElement = <WidgetPanelsTab />;\nconst floatingWidgetElement = <FloatingWidget />;\n\ninterface ActiveFrontstageDefProviderProps {\n frontstageDef: FrontstageDef;\n}\n\n/** @internal */\nexport function ActiveFrontstageDefProvider({\n frontstageDef,\n}: ActiveFrontstageDefProviderProps) {\n const configurableUi = React.useContext(ConfigurableUiContext);\n const dispatch = useNineZoneDispatch(frontstageDef);\n frontstageDef.dispatch = dispatch;\n const layout = useLayoutStore(frontstageDef);\n useUpdateNineZoneSize(frontstageDef);\n useSavedFrontstageState(frontstageDef);\n useSaveFrontstageSettings(frontstageDef, layout);\n useItemsManager(frontstageDef);\n const labels = useLabels();\n const uiIsVisible = useUiVisibility();\n const reduxToolAsToolSettingsLabel = useReduxFrameworkState(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (state) => state?.configurableUiState.useToolAsToolSettingsLabel\n );\n const reduxShowWidgetIcon = useReduxFrameworkState(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (state) => state?.configurableUiState.showWidgetIcon\n );\n const reduxAutoCollapseUnpinnedPanels = useReduxFrameworkState(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (state) => state?.configurableUiState.autoCollapseUnpinnedPanels\n );\n const reduxAnimateToolSettings = useReduxFrameworkState(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (state) => state?.configurableUiState.autoCollapseUnpinnedPanels\n );\n const showWidgetIcon =\n configurableUi.widgetIcon ?? reduxShowWidgetIcon ?? true;\n const showActiveWidgetLabel = configurableUi.showActiveWidgetLabel ?? false;\n const autoCollapseUnpinnedPanels =\n configurableUi.collapsePanels ?? reduxAutoCollapseUnpinnedPanels ?? false;\n const animateToolSettings =\n configurableUi.animateToolSettings ?? reduxAnimateToolSettings ?? false;\n const useToolAsToolSettingsLabel =\n configurableUi.toolAsToolSettingsLabel ??\n reduxToolAsToolSettingsLabel ??\n false;\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 showActiveWidgetLabel={showActiveWidgetLabel}\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(): NineZoneLabels {\n const { translate } = useTranslation();\n\n return {\n moreWidgetsTitle: translate(\"widget.tooltips.moreWidgets\"),\n moreToolSettingsTitle: translate(\"widget.tooltips.moreToolSettings\"),\n resizeGripTitle: translate(\"widget.tooltips.resizeGrip\"),\n toolSettingsHandleTitle: translate(\"widget.tooltips.toolSettingsHandle\"),\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 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\nfunction addWidgetDef(\n frontstageDef: FrontstageDef,\n widgetDef: WidgetDef,\n location: StagePanelLocation,\n section: StagePanelSection\n) {\n const side = toPanelSide(location);\n\n const isFloatingWidget =\n widgetDef.isFloatingStateSupported &&\n widgetDef.defaultState === WidgetState.Floating;\n const floatingWidgetId = widgetDef.floatingContainerId\n ? widgetDef.floatingContainerId\n : getUniqueId();\n const userSized = !!widgetDef.defaultFloatingSize;\n\n frontstageDef.dispatch({\n type: \"WIDGET_DEF_ADD\",\n id: widgetDef.id,\n overrides: {\n ...toTabArgs(widgetDef),\n userSized,\n },\n location: isFloatingWidget ? \"floating\" : \"panel\",\n floatingWidget: {\n id: floatingWidgetId,\n preferredPosition: widgetDef.defaultFloatingPosition,\n },\n panelSection: {\n id: getWidgetPanelSectionId(side, section),\n side,\n index: section,\n },\n });\n\n // Hide widget if `defaultState` is `Hidden` or `Unloaded`.\n hideWidgetDef(frontstageDef, widgetDef);\n}\n\n/** Adds missing widgets to the layout.\n * @internal\n */\nexport function addPanelSectionWidgetDefs(\n frontstageDef: FrontstageDef,\n location: StagePanelLocation,\n section: StagePanelSection\n) {\n const panelDef = frontstageDef.getStagePanelDef(location);\n if (!panelDef) return;\n const sectionDef = panelDef.getPanelSectionDef(section);\n const widgetDefs = determineNewWidgets(frontstageDef, sectionDef.widgetDefs);\n for (const widgetDef of widgetDefs) {\n addWidgetDef(frontstageDef, widgetDef, location, section);\n }\n}\n\n/** Sends back popout widgets if app is not an electron app. */\nfunction processPopoutWidgets(frontstageDef: FrontstageDef) {\n if (ProcessDetector.isElectronAppFrontend) return;\n\n assert(!!frontstageDef.nineZoneState);\n const state = frontstageDef.nineZoneState;\n for (const id of state.popoutWidgets.allIds) {\n frontstageDef.dispatch({\n type: \"POPOUT_WIDGET_SEND_BACK\",\n id,\n });\n }\n}\n\n/** Opens popout widgets if app is an electron app. */\nfunction openPopoutWidgets(frontstageDef: FrontstageDef) {\n // Only electron can reopen popout windows w/o user interaction.\n if (!ProcessDetector.isElectronAppFrontend) return;\n\n assert(!!frontstageDef.nineZoneState);\n const state = frontstageDef.nineZoneState;\n for (const id of state.popoutWidgets.allIds) {\n frontstageDef.openPopoutWidgetContainer(id, undefined);\n }\n}\n\n/** Adds frontstageDef widgets that are missing in NineZoneState.\n * @internal\n */\nexport function addFrontstageWidgetDefs(\n frontstageDef: FrontstageDef,\n args?: InitializeNineZoneStateArgs\n) {\n [\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n StagePanelLocation.Top,\n StagePanelLocation.Bottom,\n ].forEach((location) =>\n [StagePanelSection.Start, StagePanelSection.End].forEach((section) =>\n addPanelSectionWidgetDefs(frontstageDef, location, section)\n )\n );\n\n const widgetDefs = frontstageDef.toolSettings\n ? determineNewWidgets(frontstageDef, [frontstageDef.toolSettings])\n : [];\n for (const widgetDef of widgetDefs) {\n const id = widgetDef.id;\n const defaultLocation = args?.toolSettings?.defaultLocation;\n if (defaultLocation) {\n addWidgetDef(\n frontstageDef,\n widgetDef,\n defaultLocation.location,\n defaultLocation.section\n );\n frontstageDef.dispatch({\n type: \"TOOL_SETTINGS_ADD_WIDGET\",\n id,\n });\n continue;\n }\n\n const overrides = toTabArgs(widgetDef);\n frontstageDef.dispatch({\n type: \"TOOL_SETTINGS_ADD_DOCKED\",\n id,\n overrides,\n });\n }\n}\n\n/** Hide widgets with `Hidden` or `Unloaded` defaultState. */\nfunction hideWidgetDefs(frontstageDef: FrontstageDef) {\n assert(!!frontstageDef.nineZoneState);\n const state = frontstageDef.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 hideWidgetDef(frontstageDef, widgetDef);\n }\n}\n\n/** Hide widget with `Hidden` or `Unloaded` defaultState. */\nfunction hideWidgetDef(frontstageDef: FrontstageDef, widgetDef: WidgetDef) {\n if (widgetDef.initialConfig?.useSavedState === true) return;\n\n if (widgetDef.defaultState === WidgetState.Hidden) {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_HIDE\",\n id: widgetDef.id,\n });\n }\n\n if (widgetDef.defaultState === WidgetState.Unloaded) {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_UNLOAD\",\n id: widgetDef.id,\n });\n }\n}\n\n/** Removes NineZoneState widgets that are missing in frontstageDef.\n * @internal\n */\nfunction removeMissingWidgets(frontstageDef: FrontstageDef) {\n const state = frontstageDef.nineZoneState;\n\n if (!state) return;\n const toolSettingsTabId = state.toolSettings?.tabId;\n\n const removedWidgets = Object.values(state.tabs)\n .filter(\n (tab) =>\n tab.id !== toolSettingsTabId && !frontstageDef.findWidgetDef(tab.id)\n )\n .map((tab) => tab.id);\n\n if (removedWidgets.length === 0) return;\n\n frontstageDef.dispatch({ type: \"WIDGET_TABS_REMOVE\", ids: removedWidgets });\n}\n\nfunction getWidgetLabel(label: string) {\n return label === \"\" ? \"Widget\" : label;\n}\n\ntype PanelSectionId = `${Lowercase<\n keyof typeof StagePanelLocation\n>}${keyof typeof StagePanelSection}`;\n\n/** @internal */\nexport function getPanelSectionId(\n location: StagePanelLocation,\n section: StagePanelSection\n): PanelSectionId {\n return `${StagePanelLocation[location].toLowerCase()}${\n StagePanelSection[section]\n }` as PanelSectionId;\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 isFrontstageStateSettingResult(\n settingsResult: UiStateStorageResult\n): settingsResult is {\n status: typeof 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 frontstageDef: FrontstageDef,\n location: StagePanelLocation\n) {\n const side = toPanelSide(location);\n\n const panelDef = frontstageDef.getStagePanelDef(location);\n if (!panelDef) return;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const size = panelDef.initialConfig?.sizeSpec ?? panelDef.initialConfig?.size;\n size !== undefined &&\n frontstageDef.dispatch({\n type: \"PANEL_SET_SIZE\",\n side,\n size,\n });\n\n frontstageDef.dispatch({\n type: \"PANEL_SET_PINNED\",\n side,\n pinned: panelDef.defaultPinned,\n });\n\n frontstageDef.dispatch({\n type: \"PANEL_SET_RESIZABLE\",\n side,\n resizable: panelDef.defaultResizable,\n });\n\n const minSize =\n panelDef.initialConfig?.minSizeSpec ?? panelDef.initialConfig?.minSize; // eslint-disable-line @typescript-eslint/no-deprecated\n minSize !== undefined &&\n frontstageDef.dispatch({\n type: \"PANEL_SET_MIN_SIZE\",\n side,\n minSize,\n });\n\n const maxSize =\n panelDef.initialConfig?.maxSizeSpec ?? panelDef.initialConfig?.maxSize; // eslint-disable-line @typescript-eslint/no-deprecated\n maxSize !== undefined &&\n frontstageDef.dispatch({\n type: \"PANEL_SET_MAX_SIZE\",\n side,\n maxSize,\n });\n\n const collapsed = panelDef.defaultState !== StagePanelState.Open;\n frontstageDef.dispatch({\n type: \"PANEL_SET_COLLAPSED\",\n side,\n collapsed,\n });\n}\n\n/** @internal */\nexport const stateVersion = 20; // this needs to be bumped when NineZoneState is changed (to recreate the layout).\n\ntype ConfigurableUiContextArgs = React.ContextType<\n typeof ConfigurableUiContext\n>;\n\ninterface InitializeNineZoneStateArgs {\n toolSettings?: ConfigurableUiContextArgs[\"toolSettings\"];\n}\n\n/** @internal */\nexport function initializeNineZoneState(\n frontstageDef: FrontstageDef,\n args?: InitializeNineZoneStateArgs\n) {\n frontstageDef.batch(() => {\n frontstageDef.nineZoneState = defaultNineZone;\n\n const size = InternalFrontstageManager.nineZoneSize;\n size &&\n frontstageDef.dispatch({\n type: \"RESIZE\",\n size,\n });\n\n addFrontstageWidgetDefs(frontstageDef, args);\n\n initializePanel(frontstageDef, StagePanelLocation.Left);\n initializePanel(frontstageDef, StagePanelLocation.Right);\n initializePanel(frontstageDef, StagePanelLocation.Top);\n initializePanel(frontstageDef, StagePanelLocation.Bottom);\n });\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 packed: NineZoneState\n) {\n frontstageDef.batch(() => {\n frontstageDef.nineZoneState = packed;\n\n for (const [, tab] of Object.entries(packed.tabs)) {\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 frontstageDef.dispatch({ type: \"WIDGET_TABS_REMOVE\", ids: [tab.id] });\n continue;\n }\n\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_UPDATE\",\n id: tab.id,\n overrides: toTabArgs(widgetDef),\n });\n }\n\n frontstageDef.nineZoneState = produce(\n frontstageDef.nineZoneState,\n (draft) => {\n // remove center panel section if one is found in left or right panels\n const oldLeftMiddleIndex = packed.panels.left.widgets.findIndex(\n (value) => value === \"leftMiddle\"\n );\n if (-1 !== oldLeftMiddleIndex) {\n draft.panels.left.widgets = packed.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 = packed.panels.right.widgets.findIndex(\n (value) => value === \"rightMiddle\"\n );\n if (-1 !== oldRightMiddleIndex) {\n draft.panels.right.widgets = packed.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\n if (\n InternalFrontstageManager.nineZoneSize &&\n (0 !== InternalFrontstageManager.nineZoneSize.height ||\n 0 !== InternalFrontstageManager.nineZoneSize.width)\n ) {\n frontstageDef.dispatch({\n type: \"RESIZE\",\n size: {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n },\n });\n }\n\n addFrontstageWidgetDefs(frontstageDef);\n hideWidgetDefs(frontstageDef);\n processPopoutWidgets(frontstageDef);\n });\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): NineZoneState {\n let packed = state;\n packed = produce(packed, (draft) => {\n for (const [, tab] of Object.entries(draft.tabs)) {\n tab.label = \"\";\n }\n });\n return packed;\n}\n\n/** FrontstageState is saved in UiStateStorage.\n * @internal\n */\nexport interface WidgetPanelsFrontstageState {\n nineZone: NineZoneState;\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/** @internal */\nexport function useSavedFrontstageState(frontstageDef: FrontstageDef) {\n const configurableUi = React.useContext(ConfigurableUiContext);\n const uiStateStorage = useUiStateStorageHandler();\n\n const configurableUiRef = useLatestRef(configurableUi);\n const uiStateStorageRef = useLatestRef(uiStateStorage);\n React.useEffect(() => {\n let didCancel = false;\n async function fetchFrontstageState() {\n // Switching to previously initialized frontstage.\n if (frontstageDef.nineZoneState) {\n processPopoutWidgets(frontstageDef);\n openPopoutWidgets(frontstageDef);\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 (didCancel) return;\n\n if (isFrontstageStateSettingResult(settingResult)) {\n const setting = settingResult.setting;\n if (\n setting.version === version &&\n setting.stateVersion === stateVersion\n ) {\n restoreNineZoneState(frontstageDef, setting.nineZone);\n return;\n }\n }\n initializeNineZoneState(frontstageDef, {\n toolSettings: configurableUiRef.current.toolSettings,\n });\n }\n void fetchFrontstageState();\n return () => {\n didCancel = true;\n };\n }, [frontstageDef, configurableUiRef, uiStateStorageRef]);\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/** @internal */\nexport function useFrontstageManager(\n frontstageDef: FrontstageDef,\n useToolAsToolSettingsLabel?: boolean\n) {\n const configurableUi = React.useContext(ConfigurableUiContext);\n const configurableUiRef = useLatestRef(configurableUi);\n const { translate } = useTranslation();\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n (args) => {\n if (frontstageDef.id !== args.frontstageDef.id) return;\n initializeNineZoneState(frontstageDef, {\n toolSettings: configurableUiRef.current.toolSettings,\n });\n }\n );\n }, [frontstageDef, configurableUiRef]);\n\n const defaultLabel = translate(\"widget.labels.toolSettings\");\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\nfunction refreshNineZoneState(frontstageDef: FrontstageDef) {\n // Fired for both registered/unregistered. Update definitions and remove/add missing widgets.\n frontstageDef.updateWidgetDefs();\n frontstageDef.batch(() => {\n addFrontstageWidgetDefs(frontstageDef);\n removeMissingWidgets(frontstageDef);\n });\n}\n\n/** @internal */\nexport function useItemsManager(frontstageDef: FrontstageDef) {\n React.useEffect(() => {\n // Not initialized yet.\n if (!frontstageDef.nineZoneState) return;\n\n // Need to refresh because UiItemsProvider may have added something while another frontstage was active.\n refreshNineZoneState(frontstageDef);\n }, [frontstageDef]);\n React.useEffect(() => {\n return UiItemsManager.onUiProviderRegisteredEvent.addListener(() => {\n refreshNineZoneState(frontstageDef);\n });\n }, [frontstageDef]);\n}\n\nfunction determineNewWidgets(\n frontstageDef: FrontstageDef,\n defs: readonly WidgetDef[]\n) {\n const state = frontstageDef.nineZoneState;\n assert(!!state);\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\nimport { ToolbarPopupAutoHideContext } from \"@itwin/components-react\";\nimport { assert, Logger, ProcessDetector } from \"@itwin/core-bentley\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { produce } from \"immer\";\nimport * as React from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport type { FrontstageDef } from \"../frontstage/FrontstageDef.js\";\nimport { useActiveFrontstageDef } from \"../frontstage/FrontstageDef.js\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager.js\";\nimport { useEscapeSetFocusToHome } from \"../hooks/useEscapeSetFocusToHome.js\";\nimport { useUiVisibility } from \"../hooks/useUiVisibility.js\";\nimport { createLayoutStore } from \"../layout/base/LayoutStore.js\";\nimport type {\n NineZoneDispatch,\n NineZoneLabels,\n} from \"../layout/base/NineZone.js\";\nimport { getUniqueId, NineZone } from \"../layout/base/NineZone.js\";\nimport type { NineZoneState } from \"../layout/state/NineZoneState.js\";\nimport { createNineZoneState } from \"../layout/state/NineZoneState.js\";\nimport { NineZoneStateReducer } from \"../layout/state/NineZoneStateReducer.js\";\nimport { getWidgetPanelSectionId } from \"../layout/state/PanelState.js\";\nimport type { TabState } from \"../layout/state/TabState.js\";\nimport { FloatingWidgets } from \"../layout/widget/FloatingWidgets.js\";\nimport { PreviewHorizontalPanelAlignFeatureProvider } from \"../preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js\";\nimport { usePreviewFeatures } from \"../preview/PreviewFeatures.js\";\nimport { toPanelSide } from \"../stagepanels/StagePanelDef.js\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation.js\";\nimport { StagePanelSection } from \"../stagepanels/StagePanelSection.js\";\nimport { StagePanelState } from \"../stagepanels/StagePanelState.js\";\nimport { UiItemsManager } from \"../ui-items-provider/UiItemsManager.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage.js\";\nimport type { WidgetDef } from \"../widgets/WidgetDef.js\";\nimport { WidgetState } from \"../widgets/WidgetState.js\";\nimport { WidgetContent } from \"./Content.js\";\nimport { FloatingWidget } from \"./FloatingWidget.js\";\nimport \"./Frontstage.scss\";\nimport { WidgetPanelsFrontstageContent } from \"./FrontstageContent.js\";\nimport { ModalFrontstageComposer } from \"./ModalFrontstageComposer.js\";\nimport { WidgetPanelsStatusBar } from \"./StatusBar.js\";\nimport { WidgetPanelsTab } from \"./Tab.js\";\nimport { WidgetPanelsToolbars } from \"./Toolbars.js\";\nimport {\n ToolSettingsContent,\n WidgetPanelsToolSettings,\n} from \"./ToolSettings.js\";\nimport { MaximizedWidgetProvider } from \"../preview/enable-maximized-widget/MaximizedWidget.js\";\nimport { StandardLayout } from \"../layout/StandardLayout.js\";\nimport { WidgetPanelProvider } from \"../layout/widget-panels/Panel.js\";\nimport { WidgetContentRenderers } from \"../layout/widget/ContentRenderer.js\";\nimport { useCursor } from \"../layout/widget-panels/CursorOverlay.js\";\nimport { WidgetPanelExpanders } from \"../layout/widget-panels/Expander.js\";\nimport { useTranslation } from \"../hooks/useTranslation.js\";\nimport { useActiveModalFrontstage } from \"../hooks/useActiveModalFrontstage.js\";\nimport { PopoutWidgets } from \"../preview/reparent-popout-widgets/PopoutWidgets.js\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState.js\";\nimport { ConfigurableUiContext } from \"../configurableui/ConfigurableUiContent.js\";\nimport { useSaveFrontstageSettings } from \"./useSaveFrontstageSettings.js\";\nimport type { UiStateStorageResult } from \"../uistate/UiStateStorage.js\";\nimport { UiStateStorageStatus } from \"../uistate/UiStateStorage.js\";\nimport { useLatestRef } from \"../hooks/useLatestRef.js\";\n\nfunction WidgetPanelsFrontstageComponent() {\n const modalFrontstage = useActiveModalFrontstage();\n const uiIsVisible = useUiVisibility();\n const previewFeatures = usePreviewFeatures();\n useCursor();\n\n return (\n <MaximizedWidgetProvider>\n <PreviewHorizontalPanelAlignFeatureProvider\n enabled={previewFeatures.horizontalPanelAlignment}\n >\n <ToolbarPopupAutoHideContext.Provider value={!uiIsVisible}>\n <ModalFrontstageComposer />\n <StandardLayout\n // @ts-expect-error - Supporting React 19 and 18\n inert={!!modalFrontstage ? \"true\" : undefined}\n centerContent={\n <>\n <WidgetPanelsToolbars />\n <WidgetPanelExpanders />\n </>\n }\n toolSettings={<WidgetPanelsToolSettings />}\n statusBar={<WidgetPanelsStatusBar />}\n topPanel={<WidgetPanelProvider side=\"top\" />}\n leftPanel={<WidgetPanelProvider side=\"left\" />}\n rightPanel={<WidgetPanelProvider side=\"right\" />}\n bottomPanel={<WidgetPanelProvider side=\"bottom\" />}\n >\n <WidgetPanelsFrontstageContent />\n </StandardLayout>\n <WidgetContentRenderers />\n <FloatingWidgets />\n <PopoutWidgets />\n </ToolbarPopupAutoHideContext.Provider>\n </PreviewHorizontalPanelAlignFeatureProvider>\n </MaximizedWidgetProvider>\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 if (!size) return;\n frontstageDef.dispatch({\n type: \"RESIZE\",\n size: {\n height: size.height,\n width: size.width,\n },\n });\n }, [frontstageDef]);\n}\n\nconst log =\n (reducer: typeof NineZoneStateReducer): typeof NineZoneStateReducer =>\n (state, action) => {\n Logger.logTrace(\"appui-react:reducer\", `action ${action.type}`, () => ({\n action,\n state,\n }));\n return reducer(state, action);\n };\n\n/** @internal */\nexport function useNineZoneDispatch(frontstageDef: FrontstageDef) {\n const reducer = React.useMemo(() => {\n return log(NineZoneStateReducer);\n }, []);\n\n return React.useCallback<NineZoneDispatch>(\n (action) => {\n if (action.type === \"RESIZE\") {\n InternalFrontstageManager.nineZoneSize = {\n width: action.size.width,\n height: action.size.height,\n };\n }\n\n const state = frontstageDef.nineZoneState;\n if (!state) return;\n frontstageDef.nineZoneState = reducer(state, action);\n },\n [frontstageDef, reducer]\n );\n}\n\n/** @internal */\nexport function WidgetPanelsFrontstage() {\n const frontstageDef = useActiveFrontstageDef();\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 <ActiveFrontstageDefProvider frontstageDef={frontstageDef} />;\n}\n\nconst defaultNineZone = createNineZoneState();\nconst tabElement = <WidgetPanelsTab />;\nconst floatingWidgetElement = <FloatingWidget />;\n\ninterface ActiveFrontstageDefProviderProps {\n frontstageDef: FrontstageDef;\n}\n\n/** @internal */\nexport function ActiveFrontstageDefProvider({\n frontstageDef,\n}: ActiveFrontstageDefProviderProps) {\n const configurableUi = React.useContext(ConfigurableUiContext);\n const dispatch = useNineZoneDispatch(frontstageDef);\n frontstageDef.dispatch = dispatch;\n const layout = useLayoutStore(frontstageDef);\n useUpdateNineZoneSize(frontstageDef);\n useSavedFrontstageState(frontstageDef);\n useSaveFrontstageSettings(frontstageDef, layout);\n useItemsManager(frontstageDef);\n const labels = useLabels();\n const uiIsVisible = useUiVisibility();\n const reduxToolAsToolSettingsLabel = useReduxFrameworkState(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (state) => state?.configurableUiState.useToolAsToolSettingsLabel\n );\n const reduxShowWidgetIcon = useReduxFrameworkState(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (state) => state?.configurableUiState.showWidgetIcon\n );\n const reduxAutoCollapseUnpinnedPanels = useReduxFrameworkState(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (state) => state?.configurableUiState.autoCollapseUnpinnedPanels\n );\n const reduxAnimateToolSettings = useReduxFrameworkState(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n (state) => state?.configurableUiState.autoCollapseUnpinnedPanels\n );\n const showWidgetIcon =\n configurableUi.widgetIcon ?? reduxShowWidgetIcon ?? true;\n const showActiveWidgetLabel = configurableUi.showActiveWidgetLabel ?? false;\n const autoCollapseUnpinnedPanels =\n configurableUi.collapsePanels ?? reduxAutoCollapseUnpinnedPanels ?? false;\n const animateToolSettings =\n configurableUi.animateToolSettings ?? reduxAnimateToolSettings ?? false;\n const useToolAsToolSettingsLabel =\n configurableUi.toolAsToolSettingsLabel ??\n reduxToolAsToolSettingsLabel ??\n false;\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 showActiveWidgetLabel={showActiveWidgetLabel}\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(): NineZoneLabels {\n const { translate } = useTranslation();\n\n return {\n moreWidgetsTitle: translate(\"widget.tooltips.moreWidgets\"),\n moreToolSettingsTitle: translate(\"widget.tooltips.moreToolSettings\"),\n resizeGripTitle: translate(\"widget.tooltips.resizeGrip\"),\n toolSettingsHandleTitle: translate(\"widget.tooltips.toolSettingsHandle\"),\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 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\nfunction addWidgetDef(\n frontstageDef: FrontstageDef,\n widgetDef: WidgetDef,\n location: StagePanelLocation,\n section: StagePanelSection\n) {\n const side = toPanelSide(location);\n\n const isFloatingWidget =\n widgetDef.isFloatingStateSupported &&\n widgetDef.defaultState === WidgetState.Floating;\n const floatingWidgetId = widgetDef.floatingContainerId\n ? widgetDef.floatingContainerId\n : getUniqueId();\n const userSized = !!widgetDef.defaultFloatingSize;\n\n frontstageDef.dispatch({\n type: \"WIDGET_DEF_ADD\",\n id: widgetDef.id,\n overrides: {\n ...toTabArgs(widgetDef),\n userSized,\n },\n location: isFloatingWidget ? \"floating\" : \"panel\",\n floatingWidget: {\n id: floatingWidgetId,\n preferredPosition: widgetDef.defaultFloatingPosition,\n },\n panelSection: {\n id: getWidgetPanelSectionId(side, section),\n side,\n index: section,\n },\n });\n\n // Hide widget if `defaultState` is `Hidden` or `Unloaded`.\n hideWidgetDef(frontstageDef, widgetDef);\n}\n\n/** Adds missing widgets to the layout.\n * @internal\n */\nexport function addPanelSectionWidgetDefs(\n frontstageDef: FrontstageDef,\n location: StagePanelLocation,\n section: StagePanelSection\n) {\n const panelDef = frontstageDef.getStagePanelDef(location);\n if (!panelDef) return;\n const sectionDef = panelDef.getPanelSectionDef(section);\n const widgetDefs = determineNewWidgets(frontstageDef, sectionDef.widgetDefs);\n for (const widgetDef of widgetDefs) {\n addWidgetDef(frontstageDef, widgetDef, location, section);\n }\n}\n\n/** Sends back popout widgets if app is not an electron app. */\nfunction processPopoutWidgets(frontstageDef: FrontstageDef) {\n if (ProcessDetector.isElectronAppFrontend) return;\n\n assert(!!frontstageDef.nineZoneState);\n const state = frontstageDef.nineZoneState;\n for (const id of state.popoutWidgets.allIds) {\n frontstageDef.dispatch({\n type: \"POPOUT_WIDGET_SEND_BACK\",\n id,\n });\n }\n}\n\n/** Opens popout widgets if app is an electron app. */\nfunction openPopoutWidgets(frontstageDef: FrontstageDef) {\n // Only electron can reopen popout windows w/o user interaction.\n if (!ProcessDetector.isElectronAppFrontend) return;\n\n assert(!!frontstageDef.nineZoneState);\n const state = frontstageDef.nineZoneState;\n for (const id of state.popoutWidgets.allIds) {\n frontstageDef.openPopoutWidgetContainer(id, undefined);\n }\n}\n\n/** Adds frontstageDef widgets that are missing in NineZoneState.\n * @internal\n */\nexport function addFrontstageWidgetDefs(\n frontstageDef: FrontstageDef,\n args?: InitializeNineZoneStateArgs\n) {\n [\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n StagePanelLocation.Top,\n StagePanelLocation.Bottom,\n ].forEach((location) =>\n [StagePanelSection.Start, StagePanelSection.End].forEach((section) =>\n addPanelSectionWidgetDefs(frontstageDef, location, section)\n )\n );\n\n const widgetDefs = frontstageDef.toolSettings\n ? determineNewWidgets(frontstageDef, [frontstageDef.toolSettings])\n : [];\n for (const widgetDef of widgetDefs) {\n const id = widgetDef.id;\n const defaultLocation = args?.toolSettings?.defaultLocation;\n if (defaultLocation) {\n addWidgetDef(\n frontstageDef,\n widgetDef,\n defaultLocation.location,\n defaultLocation.section\n );\n frontstageDef.dispatch({\n type: \"TOOL_SETTINGS_ADD_WIDGET\",\n id,\n });\n continue;\n }\n\n const overrides = toTabArgs(widgetDef);\n frontstageDef.dispatch({\n type: \"TOOL_SETTINGS_ADD_DOCKED\",\n id,\n overrides,\n });\n }\n}\n\n/** Hide widgets with `Hidden` or `Unloaded` defaultState. */\nfunction hideWidgetDefs(frontstageDef: FrontstageDef) {\n assert(!!frontstageDef.nineZoneState);\n const state = frontstageDef.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 hideWidgetDef(frontstageDef, widgetDef);\n }\n}\n\n/** Hide widget with `Hidden` or `Unloaded` defaultState. */\nfunction hideWidgetDef(frontstageDef: FrontstageDef, widgetDef: WidgetDef) {\n if (widgetDef.initialConfig?.useSavedState === true) return;\n\n if (widgetDef.defaultState === WidgetState.Hidden) {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_HIDE\",\n id: widgetDef.id,\n });\n }\n\n if (widgetDef.defaultState === WidgetState.Unloaded) {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_UNLOAD\",\n id: widgetDef.id,\n });\n }\n}\n\n/** Removes NineZoneState widgets that are missing in frontstageDef.\n * @internal\n */\nfunction removeMissingWidgets(frontstageDef: FrontstageDef) {\n const state = frontstageDef.nineZoneState;\n\n if (!state) return;\n const toolSettingsTabId = state.toolSettings?.tabId;\n\n const removedWidgets = Object.values(state.tabs)\n .filter(\n (tab) =>\n tab.id !== toolSettingsTabId && !frontstageDef.findWidgetDef(tab.id)\n )\n .map((tab) => tab.id);\n\n if (removedWidgets.length === 0) return;\n\n frontstageDef.dispatch({ type: \"WIDGET_TABS_REMOVE\", ids: removedWidgets });\n}\n\nfunction getWidgetLabel(label: string) {\n return label === \"\" ? \"Widget\" : label;\n}\n\ntype PanelSectionId = `${Lowercase<\n keyof typeof StagePanelLocation\n>}${keyof typeof StagePanelSection}`;\n\n/** @internal */\nexport function getPanelSectionId(\n location: StagePanelLocation,\n section: StagePanelSection\n): PanelSectionId {\n return `${StagePanelLocation[location].toLowerCase()}${\n StagePanelSection[section]\n }` as PanelSectionId;\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 isFrontstageStateSettingResult(\n settingsResult: UiStateStorageResult\n): settingsResult is {\n status: typeof 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 frontstageDef: FrontstageDef,\n location: StagePanelLocation\n) {\n const side = toPanelSide(location);\n\n const panelDef = frontstageDef.getStagePanelDef(location);\n if (!panelDef) return;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const size = panelDef.initialConfig?.sizeSpec ?? panelDef.initialConfig?.size;\n size !== undefined &&\n frontstageDef.dispatch({\n type: \"PANEL_SET_SIZE\",\n side,\n size,\n });\n\n frontstageDef.dispatch({\n type: \"PANEL_SET_PINNED\",\n side,\n pinned: panelDef.defaultPinned,\n });\n\n frontstageDef.dispatch({\n type: \"PANEL_SET_RESIZABLE\",\n side,\n resizable: panelDef.defaultResizable,\n });\n\n const minSize =\n panelDef.initialConfig?.minSizeSpec ?? panelDef.initialConfig?.minSize; // eslint-disable-line @typescript-eslint/no-deprecated\n minSize !== undefined &&\n frontstageDef.dispatch({\n type: \"PANEL_SET_MIN_SIZE\",\n side,\n minSize,\n });\n\n const maxSize =\n panelDef.initialConfig?.maxSizeSpec ?? panelDef.initialConfig?.maxSize; // eslint-disable-line @typescript-eslint/no-deprecated\n maxSize !== undefined &&\n frontstageDef.dispatch({\n type: \"PANEL_SET_MAX_SIZE\",\n side,\n maxSize,\n });\n\n const collapsed = panelDef.defaultState !== StagePanelState.Open;\n frontstageDef.dispatch({\n type: \"PANEL_SET_COLLAPSED\",\n side,\n collapsed,\n });\n}\n\n/** @internal */\nexport const stateVersion = 20; // this needs to be bumped when NineZoneState is changed (to recreate the layout).\n\ntype ConfigurableUiContextArgs = React.ContextType<\n typeof ConfigurableUiContext\n>;\n\ninterface InitializeNineZoneStateArgs {\n toolSettings?: ConfigurableUiContextArgs[\"toolSettings\"];\n}\n\n/** @internal */\nexport function initializeNineZoneState(\n frontstageDef: FrontstageDef,\n args?: InitializeNineZoneStateArgs\n) {\n frontstageDef.batch(() => {\n frontstageDef.nineZoneState = defaultNineZone;\n\n const size = InternalFrontstageManager.nineZoneSize;\n size &&\n frontstageDef.dispatch({\n type: \"RESIZE\",\n size,\n });\n\n addFrontstageWidgetDefs(frontstageDef, args);\n\n initializePanel(frontstageDef, StagePanelLocation.Left);\n initializePanel(frontstageDef, StagePanelLocation.Right);\n initializePanel(frontstageDef, StagePanelLocation.Top);\n initializePanel(frontstageDef, StagePanelLocation.Bottom);\n });\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 packed: NineZoneState\n) {\n frontstageDef.batch(() => {\n frontstageDef.nineZoneState = packed;\n\n for (const [, tab] of Object.entries(packed.tabs)) {\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 frontstageDef.dispatch({ type: \"WIDGET_TABS_REMOVE\", ids: [tab.id] });\n continue;\n }\n\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_UPDATE\",\n id: tab.id,\n overrides: toTabArgs(widgetDef),\n });\n }\n\n frontstageDef.nineZoneState = produce(\n frontstageDef.nineZoneState,\n (draft) => {\n // remove center panel section if one is found in left or right panels\n const oldLeftMiddleIndex = packed.panels.left.widgets.findIndex(\n (value) => value === \"leftMiddle\"\n );\n if (-1 !== oldLeftMiddleIndex) {\n draft.panels.left.widgets = packed.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 = packed.panels.right.widgets.findIndex(\n (value) => value === \"rightMiddle\"\n );\n if (-1 !== oldRightMiddleIndex) {\n draft.panels.right.widgets = packed.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\n if (\n InternalFrontstageManager.nineZoneSize &&\n (0 !== InternalFrontstageManager.nineZoneSize.height ||\n 0 !== InternalFrontstageManager.nineZoneSize.width)\n ) {\n frontstageDef.dispatch({\n type: \"RESIZE\",\n size: {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n },\n });\n }\n\n addFrontstageWidgetDefs(frontstageDef);\n hideWidgetDefs(frontstageDef);\n processPopoutWidgets(frontstageDef);\n });\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): NineZoneState {\n let packed = state;\n packed = produce(packed, (draft) => {\n for (const [, tab] of Object.entries(draft.tabs)) {\n tab.label = \"\";\n }\n });\n return packed;\n}\n\n/** FrontstageState is saved in UiStateStorage.\n * @internal\n */\nexport interface WidgetPanelsFrontstageState {\n nineZone: NineZoneState;\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/** @internal */\nexport function useSavedFrontstageState(frontstageDef: FrontstageDef) {\n const configurableUi = React.useContext(ConfigurableUiContext);\n const uiStateStorage = useUiStateStorageHandler();\n\n const configurableUiRef = useLatestRef(configurableUi);\n const uiStateStorageRef = useLatestRef(uiStateStorage);\n React.useEffect(() => {\n let didCancel = false;\n async function fetchFrontstageState() {\n // Switching to previously initialized frontstage.\n if (frontstageDef.nineZoneState) {\n processPopoutWidgets(frontstageDef);\n openPopoutWidgets(frontstageDef);\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 (didCancel) return;\n\n if (isFrontstageStateSettingResult(settingResult)) {\n const setting = settingResult.setting;\n if (\n setting.version === version &&\n setting.stateVersion === stateVersion\n ) {\n restoreNineZoneState(frontstageDef, setting.nineZone);\n return;\n }\n }\n initializeNineZoneState(frontstageDef, {\n toolSettings: configurableUiRef.current.toolSettings,\n });\n }\n void fetchFrontstageState();\n return () => {\n didCancel = true;\n };\n }, [frontstageDef, configurableUiRef, uiStateStorageRef]);\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/** @internal */\nexport function useFrontstageManager(\n frontstageDef: FrontstageDef,\n useToolAsToolSettingsLabel?: boolean\n) {\n const configurableUi = React.useContext(ConfigurableUiContext);\n const configurableUiRef = useLatestRef(configurableUi);\n const { translate } = useTranslation();\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n (args) => {\n if (frontstageDef.id !== args.frontstageDef.id) return;\n initializeNineZoneState(frontstageDef, {\n toolSettings: configurableUiRef.current.toolSettings,\n });\n }\n );\n }, [frontstageDef, configurableUiRef]);\n\n const defaultLabel = translate(\"widget.labels.toolSettings\");\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\nfunction refreshNineZoneState(frontstageDef: FrontstageDef) {\n // Fired for both registered/unregistered. Update definitions and remove/add missing widgets.\n frontstageDef.updateWidgetDefs();\n frontstageDef.batch(() => {\n addFrontstageWidgetDefs(frontstageDef);\n removeMissingWidgets(frontstageDef);\n });\n}\n\n/** @internal */\nexport function useItemsManager(frontstageDef: FrontstageDef) {\n React.useEffect(() => {\n // Not initialized yet.\n if (!frontstageDef.nineZoneState) return;\n\n // Need to refresh because UiItemsProvider may have added something while another frontstage was active.\n refreshNineZoneState(frontstageDef);\n }, [frontstageDef]);\n React.useEffect(() => {\n return UiItemsManager.onUiProviderRegisteredEvent.addListener(() => {\n refreshNineZoneState(frontstageDef);\n });\n }, [frontstageDef]);\n}\n\nfunction determineNewWidgets(\n frontstageDef: FrontstageDef,\n defs: readonly WidgetDef[]\n) {\n const state = frontstageDef.nineZoneState;\n assert(!!state);\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"]}
@@ -2,11 +2,6 @@
2
2
  * @module Frontstage
3
3
  */
4
4
  import * as React from "react";
5
- import type { ModalFrontstageInfo } from "../framework/FrameworkFrontstages.js";
6
5
  /** @internal */
7
- export declare function useActiveModalFrontstageInfo(): ModalFrontstageInfo | undefined;
8
- /** @internal */
9
- export declare function ModalFrontstageComposer({ stageInfo, }: {
10
- stageInfo: ModalFrontstageInfo | undefined;
11
- }): React.JSX.Element | null;
6
+ export declare function ModalFrontstageComposer(): React.JSX.Element | null;
12
7
  //# sourceMappingURL=ModalFrontstageComposer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModalFrontstageComposer.d.ts","sourceRoot":"","sources":["../../../src/appui-react/widget-panels/ModalFrontstageComposer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAIhF,gBAAgB;AAChB,wBAAgB,4BAA4B,oCAe3C;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,EACtC,SAAS,GACV,EAAE;IACD,SAAS,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC5C,4BAoBA"}
1
+ {"version":3,"file":"ModalFrontstageComposer.d.ts","sourceRoot":"","sources":["../../../src/appui-react/widget-panels/ModalFrontstageComposer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,gBAAgB;AAChB,wBAAgB,uBAAuB,6BA0BtC"}
@@ -8,24 +8,15 @@
8
8
  import * as React from "react";
9
9
  import { ModalFrontstage } from "../frontstage/ModalFrontstage.js";
10
10
  import { UiFramework } from "../UiFramework.js";
11
+ import { useActiveModalFrontstage } from "../hooks/useActiveModalFrontstage.js";
12
+ import { ConfigurableUiContext } from "../configurableui/ConfigurableUiContent.js";
11
13
  /** @internal */
12
- export function useActiveModalFrontstageInfo() {
13
- const [activeModalFrontstageInfo, setActiveModalFrontstageInfo] = React.useState(UiFramework.frontstages.activeModalFrontstage);
14
- React.useEffect(() => {
15
- return UiFramework.frontstages.onModalFrontstageChangedEvent.addListener((args) => {
16
- setActiveModalFrontstageInfo(args.modalFrontstageCount === 0
17
- ? undefined
18
- : UiFramework.frontstages.activeModalFrontstage);
19
- });
20
- }, [setActiveModalFrontstageInfo]);
21
- return activeModalFrontstageInfo;
22
- }
23
- /** @internal */
24
- export function ModalFrontstageComposer({ stageInfo, }) {
14
+ export function ModalFrontstageComposer() {
15
+ const { renderModalFrontstage } = React.useContext(ConfigurableUiContext);
16
+ const info = useActiveModalFrontstage();
25
17
  const handleCloseModal = React.useCallback(() => UiFramework.frontstages.closeModalFrontstage(), []);
26
- if (!stageInfo)
18
+ if (!info)
27
19
  return null;
28
- const { title, content, appBarRight, backButton } = stageInfo;
29
- return (React.createElement(ModalFrontstage, { isOpen: true, title: title, closeModal: handleCloseModal, appBarRight: appBarRight, backButton: backButton }, content));
20
+ return (React.createElement(React.Fragment, null, renderModalFrontstage ? (renderModalFrontstage({ info, isOpen: true })) : (React.createElement(ModalFrontstage, { isOpen: true, title: info.title, navigateBack: handleCloseModal, appBarRight: info.appBarRight, backButton: info.backButton }, info.content))));
30
21
  }
31
22
  //# sourceMappingURL=ModalFrontstageComposer.js.map