@itwin/appui-react 5.17.0 → 5.19.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 (36) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts +2 -0
  3. package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  4. package/lib/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  5. package/lib/appui-react/layout/base/NineZone.d.ts +1 -0
  6. package/lib/appui-react/layout/base/NineZone.d.ts.map +1 -1
  7. package/lib/appui-react/layout/base/NineZone.js +13 -12
  8. package/lib/appui-react/layout/base/NineZone.js.map +1 -1
  9. package/lib/appui-react/layout/state/NineZoneStateReducer.d.ts.map +1 -1
  10. package/lib/appui-react/layout/state/NineZoneStateReducer.js +8 -4
  11. package/lib/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
  12. package/lib/appui-react/layout/widget/Overflow.d.ts.map +1 -1
  13. package/lib/appui-react/layout/widget/Overflow.js +11 -17
  14. package/lib/appui-react/layout/widget/Overflow.js.map +1 -1
  15. package/lib/appui-react/layout/widget/Overflow.scss +3 -48
  16. package/lib/appui-react/layout/widget/Tab.d.ts +2 -0
  17. package/lib/appui-react/layout/widget/Tab.d.ts.map +1 -1
  18. package/lib/appui-react/layout/widget/Tab.js +6 -1
  19. package/lib/appui-react/layout/widget/Tab.js.map +1 -1
  20. package/lib/appui-react/statusbar/popup/StatusBarPopover.d.ts +1 -2
  21. package/lib/appui-react/statusbar/popup/StatusBarPopover.d.ts.map +1 -1
  22. package/lib/appui-react/statusbar/popup/StatusBarPopover.js +4 -1
  23. package/lib/appui-react/statusbar/popup/StatusBarPopover.js.map +1 -1
  24. package/lib/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  25. package/lib/appui-react/widget-panels/Frontstage.js +2 -1
  26. package/lib/appui-react/widget-panels/Frontstage.js.map +1 -1
  27. package/lib/cjs/appui-react/layout/widget/Overflow.scss +3 -48
  28. package/lib/esm/appui-react/layout/widget/Overflow.scss +3 -48
  29. package/package.json +9 -10
  30. package/lib/appui-react/layout/widget/Menu.d.ts +0 -16
  31. package/lib/appui-react/layout/widget/Menu.d.ts.map +0 -1
  32. package/lib/appui-react/layout/widget/Menu.js +0 -21
  33. package/lib/appui-react/layout/widget/Menu.js.map +0 -1
  34. package/lib/appui-react/layout/widget/Menu.scss +0 -12
  35. package/lib/cjs/appui-react/layout/widget/Menu.scss +0 -12
  36. package/lib/esm/appui-react/layout/widget/Menu.scss +0 -12
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # Change Log - @itwin/appui-react
2
2
 
3
+ ## 5.19.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d9f5d3e: Updated floating widget resizing logic to prevent resizing the widgets outside of the main container bounds.
8
+ - b7e0437: Refactored more widgets menu to use [iTwinUI Popover](https://itwinui.bentley.com/docs/popover) instead of deprecated `Popup` from `@itwin/core-react`.
9
+
10
+ ### Patch Changes
11
+
12
+ - @itwin/components-react@5.19.0
13
+ - @itwin/core-react@5.19.0
14
+ - @itwin/imodel-components-react@5.19.0
15
+
16
+ ## 5.18.0
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [4b5d07a]
21
+ - Updated dependencies [a756971]
22
+ - Updated dependencies [c7e347b]
23
+ - @itwin/imodel-components-react@5.18.0
24
+ - @itwin/components-react@5.18.0
25
+ - @itwin/core-react@5.18.0
26
+
3
27
  ## 5.17.0
4
28
 
5
29
  ### Minor Changes
@@ -28,6 +28,8 @@ export interface ConfigurableUiContentProps extends CommonProps {
28
28
  widgetOpacity?: number;
29
29
  /** Controls if the widget icons should be displayed. Uses redux store as a fallback. Defaults to `true`. */
30
30
  widgetIcon?: boolean;
31
+ /** Controls if the active widget's label should always be displayed. Defaults to `false`. */
32
+ showActiveWidgetLabel?: boolean;
31
33
  /** Controls if the unpinned panels should be collapsed automatically. Uses redux store as a fallback. Defaults to `false`. */
32
34
  collapsePanels?: boolean;
33
35
  /** Controls if the tool settings should be animated. Uses redux store as a fallback. Defaults to `false`. */
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigurableUiContent.d.ts","sourceRoot":"","sources":["../../../src/appui-react/configurableui/ConfigurableUiContent.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,8BAA8B,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA+BrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAM/E,gBAAgB;AAChB,eAAO,MAAM,qBAAqB;wBAGV,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;oBACvC,mBAAmB,CAAC,eAAe,CAAC;mBACrC,mBAAmB,CAAC,cAAc,CAAC;EAEjD,CAAC;AAEN;;;GAGG;AAEH,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,kCAAkC;IAClC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oHAAoH;IACpH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4GAA4G;IAC5G,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8HAA8H;IAC9H,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6GAA6G;IAC7G,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sIAAsI;IACtI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,sHAAsH;IACtH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gHAAgH;IAChH,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAElC,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,4BAAkD,CAAC;AAE9E;;GAEG;AAEH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,qBAWtE;AAED,UAAU,oBAAoB;IAC5B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,UAAU,mBAAmB;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,YAAY,CAAC,EAAE;QACb;;;;WAIG;QACH,eAAe,CAAC,EAAE,oBAAoB,CAAC;KACxC,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBA0FxD"}
1
+ {"version":3,"file":"ConfigurableUiContent.d.ts","sourceRoot":"","sources":["../../../src/appui-react/configurableui/ConfigurableUiContent.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,8BAA8B,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA+BrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAM/E,gBAAgB;AAChB,eAAO,MAAM,qBAAqB;wBAGV,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;oBACvC,mBAAmB,CAAC,eAAe,CAAC;mBACrC,mBAAmB,CAAC,cAAc,CAAC;EAEjD,CAAC;AAEN;;;GAGG;AAEH,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,kCAAkC;IAClC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oHAAoH;IACpH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4GAA4G;IAC5G,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6FAA6F;IAC7F,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,8HAA8H;IAC9H,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6GAA6G;IAC7G,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sIAAsI;IACtI,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,sHAAsH;IACtH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gHAAgH;IAChH,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAElC,gBAAgB;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,4BAAkD,CAAC;AAE9E;;GAEG;AAEH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,qBAWtE;AAED,UAAU,oBAAoB;IAC5B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,UAAU,mBAAmB;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,YAAY,CAAC,EAAE;QACb;;;;WAIG;QACH,eAAe,CAAC,EAAE,oBAAoB,CAAC;KACxC,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBA0FxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigurableUiContent.js","sourceRoot":"","sources":["../../../src/appui-react/configurableui/ConfigurableUiContent.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 ConfigurableUi\n */\n\nimport \"./ConfigurableUiContent.scss\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Point } from \"@itwin/core-react/internal\";\nimport {\n IModelConnectionProvider,\n QuantityEditorSpec,\n} from \"@itwin/imodel-components-react\";\nimport { ThemeProvider } from \"@itwin/itwinui-react\";\nimport { CursorInformation } from \"../cursor/CursorInformation.js\";\nimport { CursorPopupMenu } from \"../cursor/cursormenu/CursorMenu.js\";\nimport { CursorPopupRenderer } from \"../cursor/cursorpopup/CursorPopupManager.js\";\nimport { ModalDialogRenderer } from \"../dialog/ModalDialogManager.js\";\nimport { ModelessDialogRenderer } from \"../dialog/ModelessDialogManager.js\";\nimport { ElementTooltip } from \"../feedback/ElementTooltip.js\";\nimport { KeyboardShortcutMenu } from \"../keyboardshortcut/KeyboardShortcutMenu.js\";\nimport { InputFieldMessage } from \"../messages/InputField.js\";\nimport { PointerMessage } from \"../messages/Pointer.js\";\nimport { PopupRenderer } from \"../popup/PopupManager.js\";\nimport { WidgetPanelsFrontstage } from \"../widget-panels/Frontstage.js\";\nimport { ContentDialogRenderer } from \"../dialog/ContentDialogManager.js\";\nimport { appUi, UiFramework } from \"../UiFramework.js\";\nimport { InternalConfigurableUiManager } from \"./InternalConfigurableUiManager.js\";\nimport { MessageRenderer } from \"../messages/MessageRenderer.js\";\nimport {\n TOOLBAR_OPACITY_DEFAULT,\n WIDGET_OPACITY_DEFAULT,\n} from \"../theme/ThemeId.js\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState.js\";\nimport type { ContentProps } from \"../content/ContentGroup.js\";\nimport { ChildWindowRenderer } from \"../childwindow/ChildWindowRenderer.js\";\nimport { useActiveFrontstageDef } from \"../frontstage/FrontstageDef.js\";\nimport type { WidgetActions } from \"../layout/widget/WidgetActions.js\";\nimport type { StagePanelSection } from \"../stagepanels/StagePanelSection.js\";\nimport type { StagePanelLocation } from \"../stagepanels/StagePanelLocation.js\";\nimport type { Widget } from \"../widgets/Widget.js\";\nimport type { WidgetState } from \"../widgets/WidgetState.js\";\nimport { useActiveIModelConnection } from \"../hooks/useActiveIModelConnection.js\";\nimport { EditorsRegistryProvider } from \"@itwin/components-react\";\n\n/** @internal */\nexport const ConfigurableUiContext = React.createContext<\n /* eslint-disable-next-line @typescript-eslint/no-deprecated */\n ConfigurableUiContentProps & {\n contentElementRef?: React.RefObject<HTMLElement | null>;\n widgetActions?: StandardLayoutProps[\"widgetActions\"];\n toolSettings?: StandardLayoutProps[\"toolSettings\"];\n }\n>({});\n\n/** Properties for [[ConfigurableUiContent]]\n * @public\n * @deprecated in 4.17.0. Use `React.ComponentProps<typeof ConfigurableUiContent>`\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface ConfigurableUiContentProps extends CommonProps {\n /** React node of the Backstage */\n appBackstage?: React.ReactNode;\n /** Controls if the view overlay should be displayed. Uses redux store as a fallback. Defaults to `true`.\n * @note Only used by configurable control APIs. See {@link ContentProps.classId}.\n * @deprecated in 4.16.0. View overlay visibility should be controlled by the components used in {@link ContentProps.content}.\n */\n viewOverlay?: boolean;\n /** Describes the opacity of widgets. Uses redux store as a fallback. Defaults to {@link WIDGET_OPACITY_DEFAULT}. */\n widgetOpacity?: number;\n /** Controls if the widget icons should be displayed. Uses redux store as a fallback. Defaults to `true`. */\n widgetIcon?: boolean;\n /** Controls if the unpinned panels should be collapsed automatically. Uses redux store as a fallback. Defaults to `false`. */\n collapsePanels?: boolean;\n /** Controls if the tool settings should be animated. Uses redux store as a fallback. Defaults to `false`. */\n animateToolSettings?: boolean;\n /** Controls if the tool settings label should be set based on activated tool. Uses redux store as a fallback. Defaults to `false`. */\n toolAsToolSettingsLabel?: boolean;\n /** Describes the opacity of toolbars. Uses redux store as a fallback. Defaults to {@link TOOLBAR_OPACITY_DEFAULT}. */\n toolbarOpacity?: number;\n /** Component to wrap all popout widgets and other child windows opened via {@link UiFramework.childWindows}. */\n childWindow?: React.ComponentType;\n\n /** @internal */\n idleTimeout?: number;\n /** @internal */\n intervalTimeout?: number;\n}\n\n/**\n * Allows children to get the bounds or other properties of the wrapper element.\n * @internal\n */\nexport const WrapperContext = React.createContext<HTMLElement>(document.body);\n\n/** The main component of `AppUI` that sets up the configurable UI.\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport function ConfigurableUiContent(props: ConfigurableUiContentProps) {\n const frontstageDef = useActiveFrontstageDef();\n const layout = frontstageDef?.initialConfig?.layout;\n return (\n <ConfigurableUiContext.Provider\n // eslint-disable-next-line react-hooks/exhaustive-deps\n value={React.useMemo(() => props, [...Object.values(props)])}\n >\n {layout ?? <StandardLayout />}\n </ConfigurableUiContext.Provider>\n );\n}\n\ninterface ToolSettingsLocation {\n section: StagePanelSection;\n location: StagePanelLocation;\n}\n\ninterface StandardLayoutProps {\n /** Overrides widget specific actions displayed in the title bar area.\n * Use {@link WidgetActions} component to customize widget actions.\n * @alpha\n */\n widgetActions?: React.ReactNode;\n /** When enabled keeps the tool settings visible to the end user.\n * This is especially useful when the tool settings is undocked as a regular widget.\n * @alpha\n */\n visibleToolSettings?: boolean;\n /** Tool settings related configuration.\n * @alpha\n */\n toolSettings?: {\n /** The default location of the tool settings. Only used when initializing the layout and ignored when restoring a saved layout.\n * When this is specified, the tool settings will be initialized as a widget, instead of the default docked state.\n * @note Use {@link Widget} for further configuration. I.e. set {@link Widget.defaultState} to {@link WidgetState.Floating} to initialize the tool settings as a floating widget.\n * @alpha\n */\n defaultLocation?: ToolSettingsLocation;\n };\n}\n\n/** The standard widget based layout used as a default layout for all frontstages.\n * @alpha\n */\nexport function StandardLayout(props: StandardLayoutProps) {\n const { widgetActions, visibleToolSettings = false, toolSettings } = props;\n const context = React.useContext(ConfigurableUiContext);\n const {\n appBackstage,\n widgetOpacity,\n toolbarOpacity,\n idleTimeout,\n intervalTimeout,\n } = context;\n\n const contentElementRef = React.useRef<HTMLElement>(null);\n useWidgetOpacity(widgetOpacity);\n useToolbarOpacity(toolbarOpacity);\n const [mainElement, setMainElement] = React.useState<HTMLElement>();\n const [portalContainer, setPortalContainer] = React.useState<HTMLElement>();\n React.useEffect(() => {\n UiFramework.keyboardShortcuts.setFocusToHome();\n }, []);\n\n React.useEffect(() => {\n InternalConfigurableUiManager.activityTracker.initialize({\n idleTimeout,\n intervalTimeout,\n });\n return () => {\n InternalConfigurableUiManager.activityTracker.terminate();\n };\n }, [idleTimeout, intervalTimeout]);\n useVisibleToolSettings(visibleToolSettings);\n\n return (\n <ConfigurableUiContext.Provider\n value={React.useMemo(\n () => ({\n ...context,\n contentElementRef,\n widgetActions,\n toolSettings,\n }),\n [context, widgetActions, toolSettings]\n )}\n >\n <main\n role=\"main\"\n id=\"uifw-configurableui-wrapper\"\n className={context.className}\n style={context.style}\n onMouseMove={(e) => {\n const point = new Point(e.pageX, e.pageY);\n CursorInformation.handleMouseMove(point, e.view.document);\n }}\n ref={(el) => setMainElement(el ?? undefined)}\n >\n <WrapperContext.Provider value={mainElement ?? document.body}>\n <ThemeProvider\n style={{ height: \"100%\" }}\n portalContainer={portalContainer}\n >\n <IModelProvider>\n <EditorsRegistryProvider editors={defaultEditors}>\n {appBackstage}\n <WidgetPanelsFrontstage />\n\n <PointerMessage />\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <KeyboardShortcutMenu />\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <InputFieldMessage />\n <CursorPopupMenu />\n <CursorPopupRenderer />\n <PopupRenderer />\n <ElementTooltip />\n <MessageRenderer />\n <ChildWindowRenderer windowManager={appUi.windowManager} />\n <div\n className=\"uifw-configurableui-portalContainer\"\n ref={(instance) => setPortalContainer(instance ?? undefined)}\n >\n <ContentDialogRenderer />\n <ModelessDialogRenderer />\n <ModalDialogRenderer />\n </div>\n </EditorsRegistryProvider>\n </IModelProvider>\n </ThemeProvider>\n </WrapperContext.Provider>\n </main>\n </ConfigurableUiContext.Provider>\n );\n}\n\nconst defaultEditors = [QuantityEditorSpec];\n\nfunction useWidgetOpacity(\n /* eslint-disable-next-line @typescript-eslint/no-deprecated */\n widgetOpacity: ConfigurableUiContentProps[\"widgetOpacity\"]\n) {\n const reduxWidgetOpacity = useReduxFrameworkState((state) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return state?.configurableUiState.widgetOpacity;\n });\n const opacity = widgetOpacity ?? reduxWidgetOpacity ?? WIDGET_OPACITY_DEFAULT;\n\n React.useEffect(() => {\n const currentWidgetOpacity =\n document.documentElement.style.getPropertyValue(\"--buic-widget-opacity\");\n if (currentWidgetOpacity === opacity.toString()) return;\n document.documentElement.style.setProperty(\n \"--buic-widget-opacity\",\n opacity.toString()\n );\n return () => {\n document.documentElement.style.removeProperty(\"--buic-widget-opacity\");\n };\n }, [opacity]);\n}\n\nfunction useToolbarOpacity(\n /* eslint-disable-next-line @typescript-eslint/no-deprecated */\n toolbarOpacity: ConfigurableUiContentProps[\"toolbarOpacity\"]\n) {\n const reduxToolbarOpacity = useReduxFrameworkState((state) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return state?.configurableUiState.toolbarOpacity;\n });\n\n const opacity =\n toolbarOpacity ?? reduxToolbarOpacity ?? TOOLBAR_OPACITY_DEFAULT;\n\n React.useEffect(() => {\n const currentToolbarOpacity =\n document.documentElement.style.getPropertyValue(\"--buic-toolbar-opacity\");\n if (currentToolbarOpacity === opacity.toString()) return;\n document.documentElement.style.setProperty(\n \"--buic-toolbar-opacity\",\n opacity.toString()\n );\n return () => {\n document.documentElement.style.removeProperty(\"--buic-toolbar-opacity\");\n };\n }, [opacity]);\n}\n\nfunction useVisibleToolSettings(enabled: boolean) {\n React.useEffect(() => {\n if (!enabled) return;\n return UiFramework.frontstages.onToolSettingsReloadEvent.addListener(() => {\n const frontstage = UiFramework.frontstages.activeFrontstageDef;\n const toolSettings = frontstage?.toolSettings;\n if (!toolSettings) return;\n toolSettings.show();\n });\n }, [enabled]);\n}\n\nfunction IModelProvider({ children }: React.PropsWithChildren<object>) {\n const imodel = useActiveIModelConnection();\n\n return (\n <IModelConnectionProvider iModelConnection={imodel}>\n {children}\n </IModelConnectionProvider>\n );\n}\n"]}
1
+ {"version":3,"file":"ConfigurableUiContent.js","sourceRoot":"","sources":["../../../src/appui-react/configurableui/ConfigurableUiContent.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 ConfigurableUi\n */\n\nimport \"./ConfigurableUiContent.scss\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Point } from \"@itwin/core-react/internal\";\nimport {\n IModelConnectionProvider,\n QuantityEditorSpec,\n} from \"@itwin/imodel-components-react\";\nimport { ThemeProvider } from \"@itwin/itwinui-react\";\nimport { CursorInformation } from \"../cursor/CursorInformation.js\";\nimport { CursorPopupMenu } from \"../cursor/cursormenu/CursorMenu.js\";\nimport { CursorPopupRenderer } from \"../cursor/cursorpopup/CursorPopupManager.js\";\nimport { ModalDialogRenderer } from \"../dialog/ModalDialogManager.js\";\nimport { ModelessDialogRenderer } from \"../dialog/ModelessDialogManager.js\";\nimport { ElementTooltip } from \"../feedback/ElementTooltip.js\";\nimport { KeyboardShortcutMenu } from \"../keyboardshortcut/KeyboardShortcutMenu.js\";\nimport { InputFieldMessage } from \"../messages/InputField.js\";\nimport { PointerMessage } from \"../messages/Pointer.js\";\nimport { PopupRenderer } from \"../popup/PopupManager.js\";\nimport { WidgetPanelsFrontstage } from \"../widget-panels/Frontstage.js\";\nimport { ContentDialogRenderer } from \"../dialog/ContentDialogManager.js\";\nimport { appUi, UiFramework } from \"../UiFramework.js\";\nimport { InternalConfigurableUiManager } from \"./InternalConfigurableUiManager.js\";\nimport { MessageRenderer } from \"../messages/MessageRenderer.js\";\nimport {\n TOOLBAR_OPACITY_DEFAULT,\n WIDGET_OPACITY_DEFAULT,\n} from \"../theme/ThemeId.js\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState.js\";\nimport type { ContentProps } from \"../content/ContentGroup.js\";\nimport { ChildWindowRenderer } from \"../childwindow/ChildWindowRenderer.js\";\nimport { useActiveFrontstageDef } from \"../frontstage/FrontstageDef.js\";\nimport type { WidgetActions } from \"../layout/widget/WidgetActions.js\";\nimport type { StagePanelSection } from \"../stagepanels/StagePanelSection.js\";\nimport type { StagePanelLocation } from \"../stagepanels/StagePanelLocation.js\";\nimport type { Widget } from \"../widgets/Widget.js\";\nimport type { WidgetState } from \"../widgets/WidgetState.js\";\nimport { useActiveIModelConnection } from \"../hooks/useActiveIModelConnection.js\";\nimport { EditorsRegistryProvider } from \"@itwin/components-react\";\n\n/** @internal */\nexport const ConfigurableUiContext = React.createContext<\n /* eslint-disable-next-line @typescript-eslint/no-deprecated */\n ConfigurableUiContentProps & {\n contentElementRef?: React.RefObject<HTMLElement | null>;\n widgetActions?: StandardLayoutProps[\"widgetActions\"];\n toolSettings?: StandardLayoutProps[\"toolSettings\"];\n }\n>({});\n\n/** Properties for [[ConfigurableUiContent]]\n * @public\n * @deprecated in 4.17.0. Use `React.ComponentProps<typeof ConfigurableUiContent>`\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface ConfigurableUiContentProps extends CommonProps {\n /** React node of the Backstage */\n appBackstage?: React.ReactNode;\n /** Controls if the view overlay should be displayed. Uses redux store as a fallback. Defaults to `true`.\n * @note Only used by configurable control APIs. See {@link ContentProps.classId}.\n * @deprecated in 4.16.0. View overlay visibility should be controlled by the components used in {@link ContentProps.content}.\n */\n viewOverlay?: boolean;\n /** Describes the opacity of widgets. Uses redux store as a fallback. Defaults to {@link WIDGET_OPACITY_DEFAULT}. */\n widgetOpacity?: number;\n /** Controls if the widget icons should be displayed. Uses redux store as a fallback. Defaults to `true`. */\n widgetIcon?: boolean;\n /** Controls if the active widget's label should always be displayed. Defaults to `false`. */\n showActiveWidgetLabel?: boolean;\n /** Controls if the unpinned panels should be collapsed automatically. Uses redux store as a fallback. Defaults to `false`. */\n collapsePanels?: boolean;\n /** Controls if the tool settings should be animated. Uses redux store as a fallback. Defaults to `false`. */\n animateToolSettings?: boolean;\n /** Controls if the tool settings label should be set based on activated tool. Uses redux store as a fallback. Defaults to `false`. */\n toolAsToolSettingsLabel?: boolean;\n /** Describes the opacity of toolbars. Uses redux store as a fallback. Defaults to {@link TOOLBAR_OPACITY_DEFAULT}. */\n toolbarOpacity?: number;\n /** Component to wrap all popout widgets and other child windows opened via {@link UiFramework.childWindows}. */\n childWindow?: React.ComponentType;\n\n /** @internal */\n idleTimeout?: number;\n /** @internal */\n intervalTimeout?: number;\n}\n\n/**\n * Allows children to get the bounds or other properties of the wrapper element.\n * @internal\n */\nexport const WrapperContext = React.createContext<HTMLElement>(document.body);\n\n/** The main component of `AppUI` that sets up the configurable UI.\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport function ConfigurableUiContent(props: ConfigurableUiContentProps) {\n const frontstageDef = useActiveFrontstageDef();\n const layout = frontstageDef?.initialConfig?.layout;\n return (\n <ConfigurableUiContext.Provider\n // eslint-disable-next-line react-hooks/exhaustive-deps\n value={React.useMemo(() => props, [...Object.values(props)])}\n >\n {layout ?? <StandardLayout />}\n </ConfigurableUiContext.Provider>\n );\n}\n\ninterface ToolSettingsLocation {\n section: StagePanelSection;\n location: StagePanelLocation;\n}\n\ninterface StandardLayoutProps {\n /** Overrides widget specific actions displayed in the title bar area.\n * Use {@link WidgetActions} component to customize widget actions.\n * @alpha\n */\n widgetActions?: React.ReactNode;\n /** When enabled keeps the tool settings visible to the end user.\n * This is especially useful when the tool settings is undocked as a regular widget.\n * @alpha\n */\n visibleToolSettings?: boolean;\n /** Tool settings related configuration.\n * @alpha\n */\n toolSettings?: {\n /** The default location of the tool settings. Only used when initializing the layout and ignored when restoring a saved layout.\n * When this is specified, the tool settings will be initialized as a widget, instead of the default docked state.\n * @note Use {@link Widget} for further configuration. I.e. set {@link Widget.defaultState} to {@link WidgetState.Floating} to initialize the tool settings as a floating widget.\n * @alpha\n */\n defaultLocation?: ToolSettingsLocation;\n };\n}\n\n/** The standard widget based layout used as a default layout for all frontstages.\n * @alpha\n */\nexport function StandardLayout(props: StandardLayoutProps) {\n const { widgetActions, visibleToolSettings = false, toolSettings } = props;\n const context = React.useContext(ConfigurableUiContext);\n const {\n appBackstage,\n widgetOpacity,\n toolbarOpacity,\n idleTimeout,\n intervalTimeout,\n } = context;\n\n const contentElementRef = React.useRef<HTMLElement>(null);\n useWidgetOpacity(widgetOpacity);\n useToolbarOpacity(toolbarOpacity);\n const [mainElement, setMainElement] = React.useState<HTMLElement>();\n const [portalContainer, setPortalContainer] = React.useState<HTMLElement>();\n React.useEffect(() => {\n UiFramework.keyboardShortcuts.setFocusToHome();\n }, []);\n\n React.useEffect(() => {\n InternalConfigurableUiManager.activityTracker.initialize({\n idleTimeout,\n intervalTimeout,\n });\n return () => {\n InternalConfigurableUiManager.activityTracker.terminate();\n };\n }, [idleTimeout, intervalTimeout]);\n useVisibleToolSettings(visibleToolSettings);\n\n return (\n <ConfigurableUiContext.Provider\n value={React.useMemo(\n () => ({\n ...context,\n contentElementRef,\n widgetActions,\n toolSettings,\n }),\n [context, widgetActions, toolSettings]\n )}\n >\n <main\n role=\"main\"\n id=\"uifw-configurableui-wrapper\"\n className={context.className}\n style={context.style}\n onMouseMove={(e) => {\n const point = new Point(e.pageX, e.pageY);\n CursorInformation.handleMouseMove(point, e.view.document);\n }}\n ref={(el) => setMainElement(el ?? undefined)}\n >\n <WrapperContext.Provider value={mainElement ?? document.body}>\n <ThemeProvider\n style={{ height: \"100%\" }}\n portalContainer={portalContainer}\n >\n <IModelProvider>\n <EditorsRegistryProvider editors={defaultEditors}>\n {appBackstage}\n <WidgetPanelsFrontstage />\n\n <PointerMessage />\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <KeyboardShortcutMenu />\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <InputFieldMessage />\n <CursorPopupMenu />\n <CursorPopupRenderer />\n <PopupRenderer />\n <ElementTooltip />\n <MessageRenderer />\n <ChildWindowRenderer windowManager={appUi.windowManager} />\n <div\n className=\"uifw-configurableui-portalContainer\"\n ref={(instance) => setPortalContainer(instance ?? undefined)}\n >\n <ContentDialogRenderer />\n <ModelessDialogRenderer />\n <ModalDialogRenderer />\n </div>\n </EditorsRegistryProvider>\n </IModelProvider>\n </ThemeProvider>\n </WrapperContext.Provider>\n </main>\n </ConfigurableUiContext.Provider>\n );\n}\n\nconst defaultEditors = [QuantityEditorSpec];\n\nfunction useWidgetOpacity(\n /* eslint-disable-next-line @typescript-eslint/no-deprecated */\n widgetOpacity: ConfigurableUiContentProps[\"widgetOpacity\"]\n) {\n const reduxWidgetOpacity = useReduxFrameworkState((state) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return state?.configurableUiState.widgetOpacity;\n });\n const opacity = widgetOpacity ?? reduxWidgetOpacity ?? WIDGET_OPACITY_DEFAULT;\n\n React.useEffect(() => {\n const currentWidgetOpacity =\n document.documentElement.style.getPropertyValue(\"--buic-widget-opacity\");\n if (currentWidgetOpacity === opacity.toString()) return;\n document.documentElement.style.setProperty(\n \"--buic-widget-opacity\",\n opacity.toString()\n );\n return () => {\n document.documentElement.style.removeProperty(\"--buic-widget-opacity\");\n };\n }, [opacity]);\n}\n\nfunction useToolbarOpacity(\n /* eslint-disable-next-line @typescript-eslint/no-deprecated */\n toolbarOpacity: ConfigurableUiContentProps[\"toolbarOpacity\"]\n) {\n const reduxToolbarOpacity = useReduxFrameworkState((state) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return state?.configurableUiState.toolbarOpacity;\n });\n\n const opacity =\n toolbarOpacity ?? reduxToolbarOpacity ?? TOOLBAR_OPACITY_DEFAULT;\n\n React.useEffect(() => {\n const currentToolbarOpacity =\n document.documentElement.style.getPropertyValue(\"--buic-toolbar-opacity\");\n if (currentToolbarOpacity === opacity.toString()) return;\n document.documentElement.style.setProperty(\n \"--buic-toolbar-opacity\",\n opacity.toString()\n );\n return () => {\n document.documentElement.style.removeProperty(\"--buic-toolbar-opacity\");\n };\n }, [opacity]);\n}\n\nfunction useVisibleToolSettings(enabled: boolean) {\n React.useEffect(() => {\n if (!enabled) return;\n return UiFramework.frontstages.onToolSettingsReloadEvent.addListener(() => {\n const frontstage = UiFramework.frontstages.activeFrontstageDef;\n const toolSettings = frontstage?.toolSettings;\n if (!toolSettings) return;\n toolSettings.show();\n });\n }, [enabled]);\n}\n\nfunction IModelProvider({ children }: React.PropsWithChildren<object>) {\n const imodel = useActiveIModelConnection();\n\n return (\n <IModelConnectionProvider iModelConnection={imodel}>\n {children}\n </IModelConnectionProvider>\n );\n}\n"]}
@@ -21,6 +21,7 @@ export interface NineZoneProps {
21
21
  tab?: React.ReactNode;
22
22
  floatingWidget?: React.ReactNode;
23
23
  showWidgetIcon?: boolean;
24
+ showActiveWidgetLabel?: boolean;
24
25
  autoCollapseUnpinnedPanels?: boolean;
25
26
  animateDockedToolSettings?: boolean;
26
27
  uiIsVisible?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"NineZone.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NineZone.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ import { Rectangle, useRefs, useResizeObserver, } from "@itwin/core-react/intern
11
11
  import { WidgetContentManager } from "../widget/ContentManager.js";
12
12
  import { FloatingWidget } from "../widget/FloatingWidget.js";
13
13
  import { DraggedPanelSideContext, DraggedResizeHandleContext, DraggedWidgetIdContext, DragProvider, } from "./DragManager.js";
14
- import { WidgetTab } from "../widget/Tab.js";
14
+ import { ShowActiveWidgetLabelContext, WidgetTab } from "../widget/Tab.js";
15
15
  import { LayoutStoreContext, useLayout } from "./LayoutStore.js";
16
16
  /** @internal */
17
17
  export function NineZone(props) {
@@ -33,17 +33,18 @@ export function NineZoneProvider(props) {
33
33
  React.createElement(NineZoneDispatchContext.Provider, { value: props.dispatch },
34
34
  React.createElement(NineZoneLabelsContext.Provider, { value: props.labels },
35
35
  React.createElement(UiIsVisibleContext.Provider, { value: !!props.uiIsVisible },
36
- React.createElement(ShowWidgetIconContext.Provider, { value: !!props.showWidgetIcon },
37
- React.createElement(AutoCollapseUnpinnedPanelsContext.Provider, { value: !!props.autoCollapseUnpinnedPanels },
38
- React.createElement(WidgetContentNodeContext.Provider, { value: props.widgetContent },
39
- React.createElement(ToolSettingsNodeContext.Provider, { value: props.toolSettingsContent },
40
- React.createElement(TabNodeContext.Provider, { value: props.tab || tab },
41
- React.createElement(FloatingWidgetNodeContext.Provider, { value: props.floatingWidget || floatingWidget },
42
- React.createElement(AnimateDockedToolSettingsContext.Provider, { value: !!props.animateDockedToolSettings },
43
- React.createElement(DragProvider, null,
44
- React.createElement(CursorTypeProvider, null,
45
- React.createElement(WidgetContentManager, null,
46
- React.createElement(MeasureContext.Provider, { value: props.measure }, props.children))))))))))))))));
36
+ React.createElement(ShowActiveWidgetLabelContext.Provider, { value: !!props.showActiveWidgetLabel },
37
+ React.createElement(ShowWidgetIconContext.Provider, { value: !!props.showWidgetIcon },
38
+ React.createElement(AutoCollapseUnpinnedPanelsContext.Provider, { value: !!props.autoCollapseUnpinnedPanels },
39
+ React.createElement(WidgetContentNodeContext.Provider, { value: props.widgetContent },
40
+ React.createElement(ToolSettingsNodeContext.Provider, { value: props.toolSettingsContent },
41
+ React.createElement(TabNodeContext.Provider, { value: props.tab || tab },
42
+ React.createElement(FloatingWidgetNodeContext.Provider, { value: props.floatingWidget || floatingWidget },
43
+ React.createElement(AnimateDockedToolSettingsContext.Provider, { value: !!props.animateDockedToolSettings },
44
+ React.createElement(DragProvider, null,
45
+ React.createElement(CursorTypeProvider, null,
46
+ React.createElement(WidgetContentManager, null,
47
+ React.createElement(MeasureContext.Provider, { value: props.measure }, props.children)))))))))))))))));
47
48
  }
48
49
  /** @internal */
49
50
  export const NineZoneDispatchContext = React.createContext(null);
@@ -1 +1 @@
1
- {"version":3,"file":"NineZone.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Base\n */\n\nimport * as React from \"react\";\nimport { assert, Guid } from \"@itwin/core-bentley\";\nimport {\n Rectangle,\n useRefs,\n useResizeObserver,\n} from \"@itwin/core-react/internal\";\nimport type { CursorType } from \"../widget-panels/CursorOverlay.js\";\nimport type { PanelSide } from \"../widget-panels/PanelTypes.js\";\nimport { WidgetContentManager } from \"../widget/ContentManager.js\";\nimport type { FloatingWidgetResizeHandle } from \"../widget/FloatingWidget.js\";\nimport { FloatingWidget } from \"../widget/FloatingWidget.js\";\nimport {\n DraggedPanelSideContext,\n DraggedResizeHandleContext,\n DraggedWidgetIdContext,\n DragProvider,\n} from \"./DragManager.js\";\nimport { WidgetTab } from \"../widget/Tab.js\";\nimport type { NineZoneAction } from \"../state/NineZoneAction.js\";\nimport type { LayoutStore } from \"./LayoutStore.js\";\nimport { LayoutStoreContext, useLayout } from \"./LayoutStore.js\";\n\n/** @internal */\nexport type NineZoneDispatch = (action: NineZoneAction) => void;\n\n/** @internal */\nexport interface NineZoneProps {\n children?: React.ReactNode;\n dispatch: NineZoneDispatch;\n layout: LayoutStore;\n labels?: NineZoneLabels;\n toolSettingsContent?: React.ReactNode;\n widgetContent?: React.ReactNode;\n tab?: React.ReactNode;\n floatingWidget?: React.ReactNode;\n showWidgetIcon?: boolean;\n autoCollapseUnpinnedPanels?: boolean;\n animateDockedToolSettings?: boolean;\n uiIsVisible?: boolean;\n}\n\n/** @internal */\nexport interface NineZoneLabels {\n moreWidgetsTitle?: string;\n moreToolSettingsTitle?: string;\n resizeGripTitle?: string;\n toolSettingsHandleTitle?: string;\n}\n\n/** @internal */\nexport function NineZone(props: NineZoneProps) {\n const { children, ...providerProps } = props;\n const measurerRef = React.useRef<HTMLDivElement>(null);\n const measure = React.useCallback<() => Rectangle>(() => {\n assert(!!measurerRef.current);\n return Rectangle.create(measurerRef.current.getBoundingClientRect());\n }, []);\n return (\n <NineZoneProvider measure={measure} {...providerProps}>\n <Measurer ref={measurerRef} />\n {children}\n </NineZoneProvider>\n );\n}\n\n/** @internal */\nexport interface NineZoneProviderProps extends NineZoneProps {\n measure: () => Rectangle;\n}\n\nconst tab = <WidgetTab />;\nconst floatingWidget = <FloatingWidget />;\n\n/** @internal */\nexport function NineZoneProvider(props: NineZoneProviderProps) {\n return (\n <LayoutStoreContext.Provider value={props.layout}>\n <NineZoneDispatchContext.Provider value={props.dispatch}>\n <NineZoneLabelsContext.Provider value={props.labels}>\n <UiIsVisibleContext.Provider value={!!props.uiIsVisible}>\n <ShowWidgetIconContext.Provider value={!!props.showWidgetIcon}>\n <AutoCollapseUnpinnedPanelsContext.Provider\n value={!!props.autoCollapseUnpinnedPanels}\n >\n <WidgetContentNodeContext.Provider value={props.widgetContent}>\n <ToolSettingsNodeContext.Provider\n value={props.toolSettingsContent}\n >\n <TabNodeContext.Provider value={props.tab || tab}>\n <FloatingWidgetNodeContext.Provider\n value={props.floatingWidget || floatingWidget}\n >\n <AnimateDockedToolSettingsContext.Provider\n value={!!props.animateDockedToolSettings}\n >\n <DragProvider>\n <CursorTypeProvider>\n <WidgetContentManager>\n <MeasureContext.Provider value={props.measure}>\n {props.children}\n </MeasureContext.Provider>\n </WidgetContentManager>\n </CursorTypeProvider>\n </DragProvider>\n </AnimateDockedToolSettingsContext.Provider>\n </FloatingWidgetNodeContext.Provider>\n </TabNodeContext.Provider>\n </ToolSettingsNodeContext.Provider>\n </WidgetContentNodeContext.Provider>\n </AutoCollapseUnpinnedPanelsContext.Provider>\n </ShowWidgetIconContext.Provider>\n </UiIsVisibleContext.Provider>\n </NineZoneLabelsContext.Provider>\n </NineZoneDispatchContext.Provider>\n </LayoutStoreContext.Provider>\n );\n}\n\n/** @internal */\nexport const NineZoneDispatchContext = React.createContext<NineZoneDispatch>(\n null!\n);\nNineZoneDispatchContext.displayName = \"nz:NineZoneDispatchContext\";\n\n/** @internal */\nexport const NineZoneLabelsContext = React.createContext<\n NineZoneLabels | undefined\n>(undefined);\nNineZoneLabelsContext.displayName = \"nz:NineZoneLabelsContext\";\n\n/** @internal */\nexport const CursorTypeContext = React.createContext<CursorType | undefined>(\n undefined\n);\nCursorTypeContext.displayName = \"nz:CursorTypeContext\";\n\n/** @internal */\nexport const WidgetContentNodeContext =\n React.createContext<React.ReactNode>(undefined);\nWidgetContentNodeContext.displayName = \"nz:WidgetContentNodeContext\";\n\n/** @internal */\nexport const ShowWidgetIconContext = React.createContext<boolean>(false);\nShowWidgetIconContext.displayName = \"nz:ShowWidgetIconContext\";\n\n/** @internal */\nexport const AutoCollapseUnpinnedPanelsContext =\n React.createContext<boolean>(false);\nAutoCollapseUnpinnedPanelsContext.displayName =\n \"nz:AutoCollapseUnpinnedPanelsContext\";\n\n/** @internal */\nexport const AnimateDockedToolSettingsContext =\n React.createContext<boolean>(false);\nAnimateDockedToolSettingsContext.displayName =\n \"nz:AnimateDockedToolSettingsContext\";\n\n/** @internal */\nexport const ToolSettingsNodeContext =\n React.createContext<React.ReactNode>(undefined);\nToolSettingsNodeContext.displayName = \"nz:ToolSettingsNodeContext\";\n\n/** @internal */\nexport const TabNodeContext = React.createContext<React.ReactNode>(undefined);\nTabNodeContext.displayName = \"nz:TabNodeContext\";\n\n/** @internal */\nexport const FloatingWidgetNodeContext =\n React.createContext<React.ReactNode>(undefined);\nFloatingWidgetNodeContext.displayName = \"nz:FloatingWidgetNodeContext\";\n\n/** @internal */\nexport const MeasureContext = React.createContext<() => Rectangle>(null!);\nMeasureContext.displayName = \"nz:MeasureContext\";\n\n/** @internal */\nexport const UiIsVisibleContext = React.createContext<boolean>(false);\nUiIsVisibleContext.displayName = \"nz:UiIsVisibleContext\";\n\nfunction CursorTypeProvider(props: { children?: React.ReactNode }) {\n const draggedTab = useLayout((state) => !!state.draggedTab);\n const draggedWidgetId = React.useContext(DraggedWidgetIdContext);\n const draggedPanelSide = React.useContext(DraggedPanelSideContext);\n const draggedResizeHandle = React.useContext(DraggedResizeHandleContext);\n let type: CursorType | undefined;\n if (draggedTab || draggedWidgetId) type = \"grabbing\";\n else if (draggedPanelSide) type = sideToCursorType(draggedPanelSide);\n else if (draggedResizeHandle) type = handleToCursorType(draggedResizeHandle);\n return (\n <CursorTypeContext.Provider value={type}>\n {props.children}\n </CursorTypeContext.Provider>\n );\n}\n\nconst Measurer = React.forwardRef<HTMLDivElement>(function Measurer(_, ref) {\n const size = React.useRef<{ height?: number; width?: number }>({});\n const dispatch = React.useContext(NineZoneDispatchContext);\n const handleResize = React.useCallback(\n (width: number, height: number) => {\n if (size.current.width === width && size.current.height === height)\n return;\n size.current.height = height;\n size.current.width = width;\n dispatch({\n type: \"RESIZE\",\n size: {\n height,\n width,\n },\n });\n },\n [dispatch]\n );\n const roRef = useResizeObserver(handleResize);\n const refs = useRefs(ref, roRef);\n return (\n <div\n ref={refs}\n style={{\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n top: \"0\",\n left: \"0\",\n visibility: \"hidden\",\n }}\n />\n );\n});\n\n/** @internal */\nexport function sideToCursorType(side: PanelSide): CursorType {\n switch (side) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n }\n}\n\n/** @internal */\nexport function handleToCursorType(\n handle: FloatingWidgetResizeHandle\n): CursorType {\n switch (handle) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n case \"topLeft\":\n case \"bottomRight\":\n return \"nwse-resize\";\n case \"topRight\":\n case \"bottomLeft\":\n return \"nesw-resize\";\n }\n}\n\n/** @internal */\nexport function getUniqueId() {\n return Guid.createValue();\n}\n\n/** @internal */\nexport function useLabel(labelKey: keyof NineZoneLabels) {\n const labels = React.useContext(NineZoneLabelsContext);\n return labels?.[labelKey];\n}\n"]}
1
+ {"version":3,"file":"NineZone.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACL,SAAS,EACT,OAAO,EACP,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,4BAA4B,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG3E,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AA8BjE,gBAAgB;AAChB,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC;IAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAkB,GAAG,EAAE;QACtD,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACvE,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,CACL,oBAAC,gBAAgB,IAAC,OAAO,EAAE,OAAO,KAAM,aAAa;QACnD,oBAAC,QAAQ,IAAC,GAAG,EAAE,WAAW,GAAI;QAC7B,QAAQ,CACQ,CACpB,CAAC;AACJ,CAAC;AAOD,MAAM,GAAG,GAAG,oBAAC,SAAS,OAAG,CAAC;AAC1B,MAAM,cAAc,GAAG,oBAAC,cAAc,OAAG,CAAC;AAE1C,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,OAAO,CACL,oBAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM;QAC9C,oBAAC,uBAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,QAAQ;YACrD,oBAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM;gBACjD,oBAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW;oBACrD,oBAAC,4BAA4B,CAAC,QAAQ,IACpC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB;wBAEpC,oBAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc;4BAC3D,oBAAC,iCAAiC,CAAC,QAAQ,IACzC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B;gCAEzC,oBAAC,wBAAwB,CAAC,QAAQ,IAChC,KAAK,EAAE,KAAK,CAAC,aAAa;oCAE1B,oBAAC,uBAAuB,CAAC,QAAQ,IAC/B,KAAK,EAAE,KAAK,CAAC,mBAAmB;wCAEhC,oBAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG;4CAC9C,oBAAC,yBAAyB,CAAC,QAAQ,IACjC,KAAK,EAAE,KAAK,CAAC,cAAc,IAAI,cAAc;gDAE7C,oBAAC,gCAAgC,CAAC,QAAQ,IACxC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB;oDAExC,oBAAC,YAAY;wDACX,oBAAC,kBAAkB;4DACjB,oBAAC,oBAAoB;gEACnB,oBAAC,cAAc,CAAC,QAAQ,IACtB,KAAK,EAAE,KAAK,CAAC,OAAO,IAEnB,KAAK,CAAC,QAAQ,CACS,CACL,CACJ,CACR,CAC2B,CACT,CACb,CACO,CACD,CACO,CACd,CACK,CACZ,CACC,CACA,CACP,CAC/B,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC,aAAa,CACxD,IAAK,CACN,CAAC;AACF,uBAAuB,CAAC,WAAW,GAAG,4BAA4B,CAAC;AAEnE,gBAAgB;AAChB,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,aAAa,CAEtD,SAAS,CAAC,CAAC;AACb,qBAAqB,CAAC,WAAW,GAAG,0BAA0B,CAAC;AAE/D,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAClD,SAAS,CACV,CAAC;AACF,iBAAiB,CAAC,WAAW,GAAG,sBAAsB,CAAC;AAEvD,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GACnC,KAAK,CAAC,aAAa,CAAkB,SAAS,CAAC,CAAC;AAClD,wBAAwB,CAAC,WAAW,GAAG,6BAA6B,CAAC;AAErE,gBAAgB;AAChB,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,aAAa,CAAU,KAAK,CAAC,CAAC;AACzE,qBAAqB,CAAC,WAAW,GAAG,0BAA0B,CAAC;AAE/D,gBAAgB;AAChB,MAAM,CAAC,MAAM,iCAAiC,GAC5C,KAAK,CAAC,aAAa,CAAU,KAAK,CAAC,CAAC;AACtC,iCAAiC,CAAC,WAAW;IAC3C,sCAAsC,CAAC;AAEzC,gBAAgB;AAChB,MAAM,CAAC,MAAM,gCAAgC,GAC3C,KAAK,CAAC,aAAa,CAAU,KAAK,CAAC,CAAC;AACtC,gCAAgC,CAAC,WAAW;IAC1C,qCAAqC,CAAC;AAExC,gBAAgB;AAChB,MAAM,CAAC,MAAM,uBAAuB,GAClC,KAAK,CAAC,aAAa,CAAkB,SAAS,CAAC,CAAC;AAClD,uBAAuB,CAAC,WAAW,GAAG,4BAA4B,CAAC;AAEnE,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAkB,SAAS,CAAC,CAAC;AAC9E,cAAc,CAAC,WAAW,GAAG,mBAAmB,CAAC;AAEjD,gBAAgB;AAChB,MAAM,CAAC,MAAM,yBAAyB,GACpC,KAAK,CAAC,aAAa,CAAkB,SAAS,CAAC,CAAC;AAClD,yBAAyB,CAAC,WAAW,GAAG,8BAA8B,CAAC;AAEvE,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAkB,IAAK,CAAC,CAAC;AAC1E,cAAc,CAAC,WAAW,GAAG,mBAAmB,CAAC;AAEjD,gBAAgB;AAChB,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAU,KAAK,CAAC,CAAC;AACtE,kBAAkB,CAAC,WAAW,GAAG,uBAAuB,CAAC;AAEzD,SAAS,kBAAkB,CAAC,KAAqC;IAC/D,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;IACjE,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IACnE,MAAM,mBAAmB,GAAG,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;IACzE,IAAI,IAA4B,CAAC;IACjC,IAAI,UAAU,IAAI,eAAe;QAAE,IAAI,GAAG,UAAU,CAAC;SAChD,IAAI,gBAAgB;QAAE,IAAI,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;SAChE,IAAI,mBAAmB;QAAE,IAAI,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IAC7E,OAAO,CACL,oBAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,IACpC,KAAK,CAAC,QAAQ,CACY,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAiB,SAAS,QAAQ,CAAC,CAAC,EAAE,GAAG;IACxE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAsC,EAAE,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CACpC,CAAC,KAAa,EAAE,MAAc,EAAE,EAAE;QAChC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM;YAChE,OAAO;QACT,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,QAAQ,CAAC;YACP,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE;gBACJ,MAAM;gBACN,KAAK;aACN;SACF,CAAC,CAAC;IACL,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,MAAM,KAAK,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjC,OAAO,CACL,6BACE,GAAG,EAAE,IAAI,EACT,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,GAAG;YACT,UAAU,EAAE,QAAQ;SACrB,GACD,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAAC,IAAe;IAC9C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK;YACR,OAAO,WAAW,CAAC;QACrB,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,kBAAkB,CAChC,MAAkC;IAElC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK;YACR,OAAO,WAAW,CAAC;QACrB,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,WAAW,CAAC;QACrB,KAAK,SAAS,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC;QACvB,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY;YACf,OAAO,aAAa,CAAC;IACzB,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,QAAQ,CAAC,QAA8B;IACrD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACvD,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC5B,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 Base\n */\n\nimport * as React from \"react\";\nimport { assert, Guid } from \"@itwin/core-bentley\";\nimport {\n Rectangle,\n useRefs,\n useResizeObserver,\n} from \"@itwin/core-react/internal\";\nimport type { CursorType } from \"../widget-panels/CursorOverlay.js\";\nimport type { PanelSide } from \"../widget-panels/PanelTypes.js\";\nimport { WidgetContentManager } from \"../widget/ContentManager.js\";\nimport type { FloatingWidgetResizeHandle } from \"../widget/FloatingWidget.js\";\nimport { FloatingWidget } from \"../widget/FloatingWidget.js\";\nimport {\n DraggedPanelSideContext,\n DraggedResizeHandleContext,\n DraggedWidgetIdContext,\n DragProvider,\n} from \"./DragManager.js\";\nimport { ShowActiveWidgetLabelContext, WidgetTab } from \"../widget/Tab.js\";\nimport type { NineZoneAction } from \"../state/NineZoneAction.js\";\nimport type { LayoutStore } from \"./LayoutStore.js\";\nimport { LayoutStoreContext, useLayout } from \"./LayoutStore.js\";\n\n/** @internal */\nexport type NineZoneDispatch = (action: NineZoneAction) => void;\n\n/** @internal */\nexport interface NineZoneProps {\n children?: React.ReactNode;\n dispatch: NineZoneDispatch;\n layout: LayoutStore;\n labels?: NineZoneLabels;\n toolSettingsContent?: React.ReactNode;\n widgetContent?: React.ReactNode;\n tab?: React.ReactNode;\n floatingWidget?: React.ReactNode;\n showWidgetIcon?: boolean;\n showActiveWidgetLabel?: boolean;\n autoCollapseUnpinnedPanels?: boolean;\n animateDockedToolSettings?: boolean;\n uiIsVisible?: boolean;\n}\n\n/** @internal */\nexport interface NineZoneLabels {\n moreWidgetsTitle?: string;\n moreToolSettingsTitle?: string;\n resizeGripTitle?: string;\n toolSettingsHandleTitle?: string;\n}\n\n/** @internal */\nexport function NineZone(props: NineZoneProps) {\n const { children, ...providerProps } = props;\n const measurerRef = React.useRef<HTMLDivElement>(null);\n const measure = React.useCallback<() => Rectangle>(() => {\n assert(!!measurerRef.current);\n return Rectangle.create(measurerRef.current.getBoundingClientRect());\n }, []);\n return (\n <NineZoneProvider measure={measure} {...providerProps}>\n <Measurer ref={measurerRef} />\n {children}\n </NineZoneProvider>\n );\n}\n\n/** @internal */\nexport interface NineZoneProviderProps extends NineZoneProps {\n measure: () => Rectangle;\n}\n\nconst tab = <WidgetTab />;\nconst floatingWidget = <FloatingWidget />;\n\n/** @internal */\nexport function NineZoneProvider(props: NineZoneProviderProps) {\n return (\n <LayoutStoreContext.Provider value={props.layout}>\n <NineZoneDispatchContext.Provider value={props.dispatch}>\n <NineZoneLabelsContext.Provider value={props.labels}>\n <UiIsVisibleContext.Provider value={!!props.uiIsVisible}>\n <ShowActiveWidgetLabelContext.Provider\n value={!!props.showActiveWidgetLabel}\n >\n <ShowWidgetIconContext.Provider value={!!props.showWidgetIcon}>\n <AutoCollapseUnpinnedPanelsContext.Provider\n value={!!props.autoCollapseUnpinnedPanels}\n >\n <WidgetContentNodeContext.Provider\n value={props.widgetContent}\n >\n <ToolSettingsNodeContext.Provider\n value={props.toolSettingsContent}\n >\n <TabNodeContext.Provider value={props.tab || tab}>\n <FloatingWidgetNodeContext.Provider\n value={props.floatingWidget || floatingWidget}\n >\n <AnimateDockedToolSettingsContext.Provider\n value={!!props.animateDockedToolSettings}\n >\n <DragProvider>\n <CursorTypeProvider>\n <WidgetContentManager>\n <MeasureContext.Provider\n value={props.measure}\n >\n {props.children}\n </MeasureContext.Provider>\n </WidgetContentManager>\n </CursorTypeProvider>\n </DragProvider>\n </AnimateDockedToolSettingsContext.Provider>\n </FloatingWidgetNodeContext.Provider>\n </TabNodeContext.Provider>\n </ToolSettingsNodeContext.Provider>\n </WidgetContentNodeContext.Provider>\n </AutoCollapseUnpinnedPanelsContext.Provider>\n </ShowWidgetIconContext.Provider>\n </ShowActiveWidgetLabelContext.Provider>\n </UiIsVisibleContext.Provider>\n </NineZoneLabelsContext.Provider>\n </NineZoneDispatchContext.Provider>\n </LayoutStoreContext.Provider>\n );\n}\n\n/** @internal */\nexport const NineZoneDispatchContext = React.createContext<NineZoneDispatch>(\n null!\n);\nNineZoneDispatchContext.displayName = \"nz:NineZoneDispatchContext\";\n\n/** @internal */\nexport const NineZoneLabelsContext = React.createContext<\n NineZoneLabels | undefined\n>(undefined);\nNineZoneLabelsContext.displayName = \"nz:NineZoneLabelsContext\";\n\n/** @internal */\nexport const CursorTypeContext = React.createContext<CursorType | undefined>(\n undefined\n);\nCursorTypeContext.displayName = \"nz:CursorTypeContext\";\n\n/** @internal */\nexport const WidgetContentNodeContext =\n React.createContext<React.ReactNode>(undefined);\nWidgetContentNodeContext.displayName = \"nz:WidgetContentNodeContext\";\n\n/** @internal */\nexport const ShowWidgetIconContext = React.createContext<boolean>(false);\nShowWidgetIconContext.displayName = \"nz:ShowWidgetIconContext\";\n\n/** @internal */\nexport const AutoCollapseUnpinnedPanelsContext =\n React.createContext<boolean>(false);\nAutoCollapseUnpinnedPanelsContext.displayName =\n \"nz:AutoCollapseUnpinnedPanelsContext\";\n\n/** @internal */\nexport const AnimateDockedToolSettingsContext =\n React.createContext<boolean>(false);\nAnimateDockedToolSettingsContext.displayName =\n \"nz:AnimateDockedToolSettingsContext\";\n\n/** @internal */\nexport const ToolSettingsNodeContext =\n React.createContext<React.ReactNode>(undefined);\nToolSettingsNodeContext.displayName = \"nz:ToolSettingsNodeContext\";\n\n/** @internal */\nexport const TabNodeContext = React.createContext<React.ReactNode>(undefined);\nTabNodeContext.displayName = \"nz:TabNodeContext\";\n\n/** @internal */\nexport const FloatingWidgetNodeContext =\n React.createContext<React.ReactNode>(undefined);\nFloatingWidgetNodeContext.displayName = \"nz:FloatingWidgetNodeContext\";\n\n/** @internal */\nexport const MeasureContext = React.createContext<() => Rectangle>(null!);\nMeasureContext.displayName = \"nz:MeasureContext\";\n\n/** @internal */\nexport const UiIsVisibleContext = React.createContext<boolean>(false);\nUiIsVisibleContext.displayName = \"nz:UiIsVisibleContext\";\n\nfunction CursorTypeProvider(props: { children?: React.ReactNode }) {\n const draggedTab = useLayout((state) => !!state.draggedTab);\n const draggedWidgetId = React.useContext(DraggedWidgetIdContext);\n const draggedPanelSide = React.useContext(DraggedPanelSideContext);\n const draggedResizeHandle = React.useContext(DraggedResizeHandleContext);\n let type: CursorType | undefined;\n if (draggedTab || draggedWidgetId) type = \"grabbing\";\n else if (draggedPanelSide) type = sideToCursorType(draggedPanelSide);\n else if (draggedResizeHandle) type = handleToCursorType(draggedResizeHandle);\n return (\n <CursorTypeContext.Provider value={type}>\n {props.children}\n </CursorTypeContext.Provider>\n );\n}\n\nconst Measurer = React.forwardRef<HTMLDivElement>(function Measurer(_, ref) {\n const size = React.useRef<{ height?: number; width?: number }>({});\n const dispatch = React.useContext(NineZoneDispatchContext);\n const handleResize = React.useCallback(\n (width: number, height: number) => {\n if (size.current.width === width && size.current.height === height)\n return;\n size.current.height = height;\n size.current.width = width;\n dispatch({\n type: \"RESIZE\",\n size: {\n height,\n width,\n },\n });\n },\n [dispatch]\n );\n const roRef = useResizeObserver(handleResize);\n const refs = useRefs(ref, roRef);\n return (\n <div\n ref={refs}\n style={{\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n top: \"0\",\n left: \"0\",\n visibility: \"hidden\",\n }}\n />\n );\n});\n\n/** @internal */\nexport function sideToCursorType(side: PanelSide): CursorType {\n switch (side) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n }\n}\n\n/** @internal */\nexport function handleToCursorType(\n handle: FloatingWidgetResizeHandle\n): CursorType {\n switch (handle) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n case \"topLeft\":\n case \"bottomRight\":\n return \"nwse-resize\";\n case \"topRight\":\n case \"bottomLeft\":\n return \"nesw-resize\";\n }\n}\n\n/** @internal */\nexport function getUniqueId() {\n return Guid.createValue();\n}\n\n/** @internal */\nexport function useLabel(labelKey: keyof NineZoneLabels) {\n const labels = React.useContext(NineZoneLabelsContext);\n return labels?.[labelKey];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NineZoneStateReducer.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/state/NineZoneStateReducer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,qBAAqB,CAAC;AAS9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA0DxD,gBAAgB;AAChB,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,GACrB,aAAa,CAi0Bf"}
1
+ {"version":3,"file":"NineZoneStateReducer.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/state/NineZoneStateReducer.ts"],"names":[],"mappings":"AAIA;;GAEG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,qBAAqB,CAAC;AAS9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA0DxD,gBAAgB;AAChB,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,GACrB,aAAa,CAq0Bf"}
@@ -219,18 +219,22 @@ export function NineZoneStateReducer(state, action) {
219
219
  const minHeight = 120;
220
220
  let newBounds = Rectangle.create(floatingWidget.bounds);
221
221
  // Resize top-left corner.
222
+ const minLeft = 0;
223
+ const minTop = 0;
222
224
  const maxLeft = newBounds.right - minWidth;
223
225
  const maxTop = newBounds.bottom - minHeight;
224
226
  newBounds = newBounds.inset(-resizeBy.left, -resizeBy.top, 0, 0);
225
- const left = Math.min(maxLeft, newBounds.left);
226
- const top = Math.min(maxTop, newBounds.top);
227
+ const left = Math.max(Math.min(maxLeft, newBounds.left), minLeft);
228
+ const top = Math.max(Math.min(maxTop, newBounds.top), minTop);
227
229
  newBounds = new Rectangle(left, top, newBounds.right, newBounds.bottom);
228
230
  // Resize bottom-right corner.
229
231
  const minRight = newBounds.left + minWidth;
230
232
  const minBottom = newBounds.top + minHeight;
233
+ const maxRight = state.size.width;
234
+ const maxBottom = state.size.height;
231
235
  newBounds = newBounds.inset(0, 0, -resizeBy.right, -resizeBy.bottom);
232
- const right = Math.max(minRight, newBounds.right);
233
- const bottom = Math.max(minBottom, newBounds.bottom);
236
+ const right = Math.max(Math.min(maxRight, newBounds.right), minRight);
237
+ const bottom = Math.max(Math.min(maxBottom, newBounds.bottom), minBottom);
234
238
  newBounds = new Rectangle(left, top, right, bottom);
235
239
  state = updateFloatingWidgetState(state, action.id, {
236
240
  bounds: newBounds,