@itwin/appui-react 5.2.0 → 5.3.1

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 (99) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/lib/appui-react/UiFramework.d.ts +2 -2
  3. package/lib/appui-react/UiFramework.d.ts.map +1 -1
  4. package/lib/appui-react/UiFramework.js +2 -2
  5. package/lib/appui-react/UiFramework.js.map +1 -1
  6. package/lib/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
  7. package/lib/appui-react/childwindow/InternalChildWindowManager.js +8 -0
  8. package/lib/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  9. package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts +14 -2
  10. package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  11. package/lib/appui-react/configurableui/ConfigurableUiContent.js +28 -18
  12. package/lib/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  13. package/lib/appui-react/frontstage/FrontstageConfig.d.ts +6 -0
  14. package/lib/appui-react/frontstage/FrontstageConfig.d.ts.map +1 -1
  15. package/lib/appui-react/frontstage/FrontstageConfig.js.map +1 -1
  16. package/lib/appui-react/frontstage/FrontstageDef.d.ts +2 -0
  17. package/lib/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  18. package/lib/appui-react/frontstage/FrontstageDef.js +4 -0
  19. package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
  20. package/lib/appui-react/layout/base/NineZone.d.ts +0 -5
  21. package/lib/appui-react/layout/base/NineZone.d.ts.map +1 -1
  22. package/lib/appui-react/layout/base/NineZone.js.map +1 -1
  23. package/lib/appui-react/layout/widget/Dock.d.ts.map +1 -1
  24. package/lib/appui-react/layout/widget/Dock.js +6 -4
  25. package/lib/appui-react/layout/widget/Dock.js.map +1 -1
  26. package/lib/appui-react/layout/widget/NavigationArea.d.ts +1 -2
  27. package/lib/appui-react/layout/widget/NavigationArea.d.ts.map +1 -1
  28. package/lib/appui-react/layout/widget/NavigationArea.js +2 -3
  29. package/lib/appui-react/layout/widget/NavigationArea.js.map +1 -1
  30. package/lib/appui-react/layout/widget/NavigationArea.scss +16 -4
  31. package/lib/appui-react/layout/widget/PinToggle.d.ts.map +1 -1
  32. package/lib/appui-react/layout/widget/PinToggle.js +7 -5
  33. package/lib/appui-react/layout/widget/PinToggle.js.map +1 -1
  34. package/lib/appui-react/layout/widget/PopoutToggle.d.ts.map +1 -1
  35. package/lib/appui-react/layout/widget/PopoutToggle.js +6 -4
  36. package/lib/appui-react/layout/widget/PopoutToggle.js.map +1 -1
  37. package/lib/appui-react/layout/widget/SendBack.d.ts.map +1 -1
  38. package/lib/appui-react/layout/widget/SendBack.js +6 -6
  39. package/lib/appui-react/layout/widget/SendBack.js.map +1 -1
  40. package/lib/appui-react/layout/widget/TabBar.d.ts.map +1 -1
  41. package/lib/appui-react/layout/widget/TabBar.js +4 -2
  42. package/lib/appui-react/layout/widget/TabBar.js.map +1 -1
  43. package/lib/appui-react/layout/widget/ToolsArea.d.ts +1 -2
  44. package/lib/appui-react/layout/widget/ToolsArea.d.ts.map +1 -1
  45. package/lib/appui-react/layout/widget/ToolsArea.js +2 -3
  46. package/lib/appui-react/layout/widget/ToolsArea.js.map +1 -1
  47. package/lib/appui-react/layout/widget/ToolsArea.scss +10 -4
  48. package/lib/appui-react/layout/widget/WidgetAction.d.ts +16 -0
  49. package/lib/appui-react/layout/widget/WidgetAction.d.ts.map +1 -0
  50. package/lib/appui-react/{preview/widget-action-dropdown/Button.js → layout/widget/WidgetAction.js} +13 -9
  51. package/lib/appui-react/layout/widget/WidgetAction.js.map +1 -0
  52. package/lib/appui-react/layout/widget/WidgetActions.d.ts +45 -0
  53. package/lib/appui-react/layout/widget/WidgetActions.d.ts.map +1 -0
  54. package/lib/appui-react/layout/widget/{Buttons.js → WidgetActions.js} +35 -29
  55. package/lib/appui-react/layout/widget/WidgetActions.js.map +1 -0
  56. package/lib/appui-react/layout/widget/{Buttons.scss → WidgetActions.scss} +1 -1
  57. package/lib/appui-react/layout/widget-panels/useAnimatePanel.d.ts +1 -1
  58. package/lib/appui-react/preview/control-widget-visibility/CloseWidgetButton.js +2 -2
  59. package/lib/appui-react/preview/control-widget-visibility/CloseWidgetButton.js.map +1 -1
  60. package/lib/appui-react/preview/enable-maximized-widget/MaximizeToggle.js +2 -2
  61. package/lib/appui-react/preview/enable-maximized-widget/MaximizeToggle.js.map +1 -1
  62. package/lib/appui-react/preview/widget-action-dropdown/MoreButton.d.ts +2 -2
  63. package/lib/appui-react/preview/widget-action-dropdown/MoreButton.d.ts.map +1 -1
  64. package/lib/appui-react/preview/widget-action-dropdown/MoreButton.js +4 -4
  65. package/lib/appui-react/preview/widget-action-dropdown/MoreButton.js.map +1 -1
  66. package/lib/appui-react/toolbar/ToolbarItem.d.ts +4 -0
  67. package/lib/appui-react/toolbar/ToolbarItem.d.ts.map +1 -1
  68. package/lib/appui-react/toolbar/ToolbarItem.js.map +1 -1
  69. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts +1 -1
  70. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts.map +1 -1
  71. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  72. package/lib/appui-react/ui-items-provider/UiItemsManager.d.ts +25 -23
  73. package/lib/appui-react/ui-items-provider/UiItemsManager.d.ts.map +1 -1
  74. package/lib/appui-react/ui-items-provider/UiItemsManager.js +67 -40
  75. package/lib/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  76. package/lib/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  77. package/lib/appui-react/widget-panels/Frontstage.js +0 -5
  78. package/lib/appui-react/widget-panels/Frontstage.js.map +1 -1
  79. package/lib/appui-react/widgets/Widget.d.ts +4 -0
  80. package/lib/appui-react/widgets/Widget.d.ts.map +1 -1
  81. package/lib/appui-react/widgets/Widget.js.map +1 -1
  82. package/lib/appui-react/widgets/useWidget.d.ts +1 -1
  83. package/lib/appui-react.d.ts +3 -1
  84. package/lib/appui-react.d.ts.map +1 -1
  85. package/lib/appui-react.js +3 -1
  86. package/lib/appui-react.js.map +1 -1
  87. package/lib/cjs/appui-react/layout/widget/NavigationArea.scss +16 -4
  88. package/lib/cjs/appui-react/layout/widget/ToolsArea.scss +10 -4
  89. package/lib/cjs/appui-react/layout/widget/{Buttons.scss → WidgetActions.scss} +1 -1
  90. package/lib/esm/appui-react/layout/widget/NavigationArea.scss +16 -4
  91. package/lib/esm/appui-react/layout/widget/ToolsArea.scss +10 -4
  92. package/lib/esm/appui-react/layout/widget/{Buttons.scss → WidgetActions.scss} +1 -1
  93. package/package.json +7 -7
  94. package/lib/appui-react/layout/widget/Buttons.d.ts +0 -12
  95. package/lib/appui-react/layout/widget/Buttons.d.ts.map +0 -1
  96. package/lib/appui-react/layout/widget/Buttons.js.map +0 -1
  97. package/lib/appui-react/preview/widget-action-dropdown/Button.d.ts +0 -17
  98. package/lib/appui-react/preview/widget-action-dropdown/Button.d.ts.map +0 -1
  99. package/lib/appui-react/preview/widget-action-dropdown/Button.js.map +0 -1
@@ -27,15 +27,10 @@ export interface NineZoneProps {
27
27
  }
28
28
  /** @internal */
29
29
  export interface NineZoneLabels {
30
- dockToolSettingsTitle?: string;
31
30
  moreWidgetsTitle?: string;
32
31
  moreToolSettingsTitle?: string;
33
- pinPanelTitle?: string;
34
32
  resizeGripTitle?: string;
35
- sendWidgetHomeTitle?: string;
36
33
  toolSettingsHandleTitle?: string;
37
- unpinPanelTitle?: string;
38
- popoutActiveTab?: string;
39
34
  }
40
35
  /** @internal */
41
36
  export declare function NineZone(props: NineZoneProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"NineZone.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NineZone.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"NineZone.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Base\n */\n\nimport * as React from \"react\";\nimport { assert, Guid } from \"@itwin/core-bentley\";\nimport {\n Rectangle,\n useRefs,\n useResizeObserver,\n} from \"@itwin/core-react/internal\";\nimport type { CursorType } from \"../widget-panels/CursorOverlay.js\";\nimport type { PanelSide } from \"../widget-panels/PanelTypes.js\";\nimport { WidgetContentManager } from \"../widget/ContentManager.js\";\nimport type { FloatingWidgetResizeHandle } from \"../widget/FloatingWidget.js\";\nimport { FloatingWidget } from \"../widget/FloatingWidget.js\";\nimport {\n DraggedPanelSideContext,\n DraggedResizeHandleContext,\n DraggedWidgetIdContext,\n DragProvider,\n} from \"./DragManager.js\";\nimport { WidgetTab } from \"../widget/Tab.js\";\nimport type { NineZoneAction } from \"../state/NineZoneAction.js\";\nimport type { LayoutStore } from \"./LayoutStore.js\";\nimport { LayoutStoreContext, useLayout } from \"./LayoutStore.js\";\n\n/** @internal */\nexport type NineZoneDispatch = (action: NineZoneAction) => void;\n\n/** @internal */\nexport interface NineZoneProps {\n children?: React.ReactNode;\n dispatch: NineZoneDispatch;\n layout: LayoutStore;\n labels?: NineZoneLabels;\n toolSettingsContent?: React.ReactNode;\n widgetContent?: React.ReactNode;\n tab?: React.ReactNode;\n floatingWidget?: React.ReactNode;\n showWidgetIcon?: boolean;\n autoCollapseUnpinnedPanels?: boolean;\n animateDockedToolSettings?: boolean;\n uiIsVisible?: boolean;\n}\n\n/** @internal */\nexport interface NineZoneLabels {\n dockToolSettingsTitle?: string;\n moreWidgetsTitle?: string;\n moreToolSettingsTitle?: string;\n pinPanelTitle?: string;\n resizeGripTitle?: string;\n sendWidgetHomeTitle?: string;\n toolSettingsHandleTitle?: string;\n unpinPanelTitle?: string;\n popoutActiveTab?: string;\n}\n\n/** @internal */\nexport function NineZone(props: NineZoneProps) {\n const { children, ...providerProps } = props;\n const measurerRef = React.useRef<HTMLDivElement>(null);\n const measure = React.useCallback<() => Rectangle>(() => {\n assert(!!measurerRef.current);\n return Rectangle.create(measurerRef.current.getBoundingClientRect());\n }, []);\n return (\n <NineZoneProvider measure={measure} {...providerProps}>\n <Measurer ref={measurerRef} />\n {children}\n </NineZoneProvider>\n );\n}\n\n/** @internal */\nexport interface NineZoneProviderProps extends NineZoneProps {\n measure: () => Rectangle;\n}\n\nconst tab = <WidgetTab />;\nconst floatingWidget = <FloatingWidget />;\n\n/** @internal */\nexport function NineZoneProvider(props: NineZoneProviderProps) {\n return (\n <LayoutStoreContext.Provider value={props.layout}>\n <NineZoneDispatchContext.Provider value={props.dispatch}>\n <NineZoneLabelsContext.Provider value={props.labels}>\n <UiIsVisibleContext.Provider value={!!props.uiIsVisible}>\n <ShowWidgetIconContext.Provider value={!!props.showWidgetIcon}>\n <AutoCollapseUnpinnedPanelsContext.Provider\n value={!!props.autoCollapseUnpinnedPanels}\n >\n <WidgetContentNodeContext.Provider value={props.widgetContent}>\n <ToolSettingsNodeContext.Provider\n value={props.toolSettingsContent}\n >\n <TabNodeContext.Provider value={props.tab || tab}>\n <FloatingWidgetNodeContext.Provider\n value={props.floatingWidget || floatingWidget}\n >\n <AnimateDockedToolSettingsContext.Provider\n value={!!props.animateDockedToolSettings}\n >\n <DragProvider>\n <CursorTypeProvider>\n <WidgetContentManager>\n <MeasureContext.Provider value={props.measure}>\n {props.children}\n </MeasureContext.Provider>\n </WidgetContentManager>\n </CursorTypeProvider>\n </DragProvider>\n </AnimateDockedToolSettingsContext.Provider>\n </FloatingWidgetNodeContext.Provider>\n </TabNodeContext.Provider>\n </ToolSettingsNodeContext.Provider>\n </WidgetContentNodeContext.Provider>\n </AutoCollapseUnpinnedPanelsContext.Provider>\n </ShowWidgetIconContext.Provider>\n </UiIsVisibleContext.Provider>\n </NineZoneLabelsContext.Provider>\n </NineZoneDispatchContext.Provider>\n </LayoutStoreContext.Provider>\n );\n}\n\n/** @internal */\nexport const NineZoneDispatchContext = React.createContext<NineZoneDispatch>(\n null!\n);\nNineZoneDispatchContext.displayName = \"nz:NineZoneDispatchContext\";\n\n/** @internal */\nexport const NineZoneLabelsContext = React.createContext<\n NineZoneLabels | undefined\n>(undefined);\nNineZoneLabelsContext.displayName = \"nz:NineZoneLabelsContext\";\n\n/** @internal */\nexport const CursorTypeContext = React.createContext<CursorType | undefined>(\n undefined\n);\nCursorTypeContext.displayName = \"nz:CursorTypeContext\";\n\n/** @internal */\nexport const WidgetContentNodeContext =\n React.createContext<React.ReactNode>(undefined);\nWidgetContentNodeContext.displayName = \"nz:WidgetContentNodeContext\";\n\n/** @internal */\nexport const ShowWidgetIconContext = React.createContext<boolean>(false);\nShowWidgetIconContext.displayName = \"nz:ShowWidgetIconContext\";\n\n/** @internal */\nexport const AutoCollapseUnpinnedPanelsContext =\n React.createContext<boolean>(false);\nAutoCollapseUnpinnedPanelsContext.displayName =\n \"nz:AutoCollapseUnpinnedPanelsContext\";\n\n/** @internal */\nexport const AnimateDockedToolSettingsContext =\n React.createContext<boolean>(false);\nAnimateDockedToolSettingsContext.displayName =\n \"nz:AnimateDockedToolSettingsContext\";\n\n/** @internal */\nexport const ToolSettingsNodeContext =\n React.createContext<React.ReactNode>(undefined);\nToolSettingsNodeContext.displayName = \"nz:ToolSettingsNodeContext\";\n\n/** @internal */\nexport const TabNodeContext = React.createContext<React.ReactNode>(undefined);\nTabNodeContext.displayName = \"nz:TabNodeContext\";\n\n/** @internal */\nexport const FloatingWidgetNodeContext =\n React.createContext<React.ReactNode>(undefined);\nFloatingWidgetNodeContext.displayName = \"nz:FloatingWidgetNodeContext\";\n\n/** @internal */\nexport const MeasureContext = React.createContext<() => Rectangle>(null!);\nMeasureContext.displayName = \"nz:MeasureContext\";\n\n/** @internal */\nexport const UiIsVisibleContext = React.createContext<boolean>(false);\nUiIsVisibleContext.displayName = \"nz:UiIsVisibleContext\";\n\nfunction CursorTypeProvider(props: { children?: React.ReactNode }) {\n const draggedTab = useLayout((state) => !!state.draggedTab);\n const draggedWidgetId = React.useContext(DraggedWidgetIdContext);\n const draggedPanelSide = React.useContext(DraggedPanelSideContext);\n const draggedResizeHandle = React.useContext(DraggedResizeHandleContext);\n let type: CursorType | undefined;\n if (draggedTab || draggedWidgetId) type = \"grabbing\";\n else if (draggedPanelSide) type = sideToCursorType(draggedPanelSide);\n else if (draggedResizeHandle) type = handleToCursorType(draggedResizeHandle);\n return (\n <CursorTypeContext.Provider value={type}>\n {props.children}\n </CursorTypeContext.Provider>\n );\n}\n\nconst Measurer = React.forwardRef<HTMLDivElement>(function Measurer(_, ref) {\n const size = React.useRef<{ height?: number; width?: number }>({});\n const dispatch = React.useContext(NineZoneDispatchContext);\n const handleResize = React.useCallback(\n (width: number, height: number) => {\n if (size.current.width === width && size.current.height === height)\n return;\n size.current.height = height;\n size.current.width = width;\n dispatch({\n type: \"RESIZE\",\n size: {\n height,\n width,\n },\n });\n },\n [dispatch]\n );\n const roRef = useResizeObserver(handleResize);\n const refs = useRefs(ref, roRef);\n return (\n <div\n ref={refs}\n style={{\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n top: \"0\",\n left: \"0\",\n visibility: \"hidden\",\n }}\n />\n );\n});\n\n/** @internal */\nexport function sideToCursorType(side: PanelSide): CursorType {\n switch (side) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n }\n}\n\n/** @internal */\nexport function handleToCursorType(\n handle: FloatingWidgetResizeHandle\n): CursorType {\n switch (handle) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n case \"topLeft\":\n case \"bottomRight\":\n return \"nwse-resize\";\n case \"topRight\":\n case \"bottomLeft\":\n return \"nesw-resize\";\n }\n}\n\n/** @internal */\nexport function getUniqueId() {\n return Guid.createValue();\n}\n\n/** @internal */\nexport function useLabel(labelKey: keyof NineZoneLabels) {\n const labels = React.useContext(NineZoneLabelsContext);\n return labels?.[labelKey];\n}\n"]}
1
+ {"version":3,"file":"NineZone.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/base/NineZone.tsx"],"names":[],"mappings":"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,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AA6BjE,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,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc;wBAC3D,oBAAC,iCAAiC,CAAC,QAAQ,IACzC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,0BAA0B;4BAEzC,oBAAC,wBAAwB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,aAAa;gCAC3D,oBAAC,uBAAuB,CAAC,QAAQ,IAC/B,KAAK,EAAE,KAAK,CAAC,mBAAmB;oCAEhC,oBAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG;wCAC9C,oBAAC,yBAAyB,CAAC,QAAQ,IACjC,KAAK,EAAE,KAAK,CAAC,cAAc,IAAI,cAAc;4CAE7C,oBAAC,gCAAgC,CAAC,QAAQ,IACxC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB;gDAExC,oBAAC,YAAY;oDACX,oBAAC,kBAAkB;wDACjB,oBAAC,oBAAoB;4DACnB,oBAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,IAC1C,KAAK,CAAC,QAAQ,CACS,CACL,CACJ,CACR,CAC2B,CACT,CACb,CACO,CACD,CACO,CACd,CACL,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 { WidgetTab } from \"../widget/Tab.js\";\nimport type { NineZoneAction } from \"../state/NineZoneAction.js\";\nimport type { LayoutStore } from \"./LayoutStore.js\";\nimport { LayoutStoreContext, useLayout } from \"./LayoutStore.js\";\n\n/** @internal */\nexport type NineZoneDispatch = (action: NineZoneAction) => void;\n\n/** @internal */\nexport interface NineZoneProps {\n children?: React.ReactNode;\n dispatch: NineZoneDispatch;\n layout: LayoutStore;\n labels?: NineZoneLabels;\n toolSettingsContent?: React.ReactNode;\n widgetContent?: React.ReactNode;\n tab?: React.ReactNode;\n floatingWidget?: React.ReactNode;\n showWidgetIcon?: boolean;\n autoCollapseUnpinnedPanels?: boolean;\n animateDockedToolSettings?: boolean;\n uiIsVisible?: boolean;\n}\n\n/** @internal */\nexport interface NineZoneLabels {\n moreWidgetsTitle?: string;\n moreToolSettingsTitle?: string;\n resizeGripTitle?: string;\n toolSettingsHandleTitle?: string;\n}\n\n/** @internal */\nexport function NineZone(props: NineZoneProps) {\n const { children, ...providerProps } = props;\n const measurerRef = React.useRef<HTMLDivElement>(null);\n const measure = React.useCallback<() => Rectangle>(() => {\n assert(!!measurerRef.current);\n return Rectangle.create(measurerRef.current.getBoundingClientRect());\n }, []);\n return (\n <NineZoneProvider measure={measure} {...providerProps}>\n <Measurer ref={measurerRef} />\n {children}\n </NineZoneProvider>\n );\n}\n\n/** @internal */\nexport interface NineZoneProviderProps extends NineZoneProps {\n measure: () => Rectangle;\n}\n\nconst tab = <WidgetTab />;\nconst floatingWidget = <FloatingWidget />;\n\n/** @internal */\nexport function NineZoneProvider(props: NineZoneProviderProps) {\n return (\n <LayoutStoreContext.Provider value={props.layout}>\n <NineZoneDispatchContext.Provider value={props.dispatch}>\n <NineZoneLabelsContext.Provider value={props.labels}>\n <UiIsVisibleContext.Provider value={!!props.uiIsVisible}>\n <ShowWidgetIconContext.Provider value={!!props.showWidgetIcon}>\n <AutoCollapseUnpinnedPanelsContext.Provider\n value={!!props.autoCollapseUnpinnedPanels}\n >\n <WidgetContentNodeContext.Provider value={props.widgetContent}>\n <ToolSettingsNodeContext.Provider\n value={props.toolSettingsContent}\n >\n <TabNodeContext.Provider value={props.tab || tab}>\n <FloatingWidgetNodeContext.Provider\n value={props.floatingWidget || floatingWidget}\n >\n <AnimateDockedToolSettingsContext.Provider\n value={!!props.animateDockedToolSettings}\n >\n <DragProvider>\n <CursorTypeProvider>\n <WidgetContentManager>\n <MeasureContext.Provider value={props.measure}>\n {props.children}\n </MeasureContext.Provider>\n </WidgetContentManager>\n </CursorTypeProvider>\n </DragProvider>\n </AnimateDockedToolSettingsContext.Provider>\n </FloatingWidgetNodeContext.Provider>\n </TabNodeContext.Provider>\n </ToolSettingsNodeContext.Provider>\n </WidgetContentNodeContext.Provider>\n </AutoCollapseUnpinnedPanelsContext.Provider>\n </ShowWidgetIconContext.Provider>\n </UiIsVisibleContext.Provider>\n </NineZoneLabelsContext.Provider>\n </NineZoneDispatchContext.Provider>\n </LayoutStoreContext.Provider>\n );\n}\n\n/** @internal */\nexport const NineZoneDispatchContext = React.createContext<NineZoneDispatch>(\n null!\n);\nNineZoneDispatchContext.displayName = \"nz:NineZoneDispatchContext\";\n\n/** @internal */\nexport const NineZoneLabelsContext = React.createContext<\n NineZoneLabels | undefined\n>(undefined);\nNineZoneLabelsContext.displayName = \"nz:NineZoneLabelsContext\";\n\n/** @internal */\nexport const CursorTypeContext = React.createContext<CursorType | undefined>(\n undefined\n);\nCursorTypeContext.displayName = \"nz:CursorTypeContext\";\n\n/** @internal */\nexport const WidgetContentNodeContext =\n React.createContext<React.ReactNode>(undefined);\nWidgetContentNodeContext.displayName = \"nz:WidgetContentNodeContext\";\n\n/** @internal */\nexport const ShowWidgetIconContext = React.createContext<boolean>(false);\nShowWidgetIconContext.displayName = \"nz:ShowWidgetIconContext\";\n\n/** @internal */\nexport const AutoCollapseUnpinnedPanelsContext =\n React.createContext<boolean>(false);\nAutoCollapseUnpinnedPanelsContext.displayName =\n \"nz:AutoCollapseUnpinnedPanelsContext\";\n\n/** @internal */\nexport const AnimateDockedToolSettingsContext =\n React.createContext<boolean>(false);\nAnimateDockedToolSettingsContext.displayName =\n \"nz:AnimateDockedToolSettingsContext\";\n\n/** @internal */\nexport const ToolSettingsNodeContext =\n React.createContext<React.ReactNode>(undefined);\nToolSettingsNodeContext.displayName = \"nz:ToolSettingsNodeContext\";\n\n/** @internal */\nexport const TabNodeContext = React.createContext<React.ReactNode>(undefined);\nTabNodeContext.displayName = \"nz:TabNodeContext\";\n\n/** @internal */\nexport const FloatingWidgetNodeContext =\n React.createContext<React.ReactNode>(undefined);\nFloatingWidgetNodeContext.displayName = \"nz:FloatingWidgetNodeContext\";\n\n/** @internal */\nexport const MeasureContext = React.createContext<() => Rectangle>(null!);\nMeasureContext.displayName = \"nz:MeasureContext\";\n\n/** @internal */\nexport const UiIsVisibleContext = React.createContext<boolean>(false);\nUiIsVisibleContext.displayName = \"nz:UiIsVisibleContext\";\n\nfunction CursorTypeProvider(props: { children?: React.ReactNode }) {\n const draggedTab = useLayout((state) => !!state.draggedTab);\n const draggedWidgetId = React.useContext(DraggedWidgetIdContext);\n const draggedPanelSide = React.useContext(DraggedPanelSideContext);\n const draggedResizeHandle = React.useContext(DraggedResizeHandleContext);\n let type: CursorType | undefined;\n if (draggedTab || draggedWidgetId) type = \"grabbing\";\n else if (draggedPanelSide) type = sideToCursorType(draggedPanelSide);\n else if (draggedResizeHandle) type = handleToCursorType(draggedResizeHandle);\n return (\n <CursorTypeContext.Provider value={type}>\n {props.children}\n </CursorTypeContext.Provider>\n );\n}\n\nconst Measurer = React.forwardRef<HTMLDivElement>(function Measurer(_, ref) {\n const size = React.useRef<{ height?: number; width?: number }>({});\n const dispatch = React.useContext(NineZoneDispatchContext);\n const handleResize = React.useCallback(\n (width: number, height: number) => {\n if (size.current.width === width && size.current.height === height)\n return;\n size.current.height = height;\n size.current.width = width;\n dispatch({\n type: \"RESIZE\",\n size: {\n height,\n width,\n },\n });\n },\n [dispatch]\n );\n const roRef = useResizeObserver(handleResize);\n const refs = useRefs(ref, roRef);\n return (\n <div\n ref={refs}\n style={{\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n top: \"0\",\n left: \"0\",\n visibility: \"hidden\",\n }}\n />\n );\n});\n\n/** @internal */\nexport function sideToCursorType(side: PanelSide): CursorType {\n switch (side) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n }\n}\n\n/** @internal */\nexport function handleToCursorType(\n handle: FloatingWidgetResizeHandle\n): CursorType {\n switch (handle) {\n case \"bottom\":\n case \"top\":\n return \"ns-resize\";\n case \"left\":\n case \"right\":\n return \"ew-resize\";\n case \"topLeft\":\n case \"bottomRight\":\n return \"nwse-resize\";\n case \"topRight\":\n case \"bottomLeft\":\n return \"nesw-resize\";\n }\n}\n\n/** @internal */\nexport function getUniqueId() {\n return Guid.createValue();\n}\n\n/** @internal */\nexport function useLabel(labelKey: keyof NineZoneLabels) {\n const labels = React.useContext(NineZoneLabelsContext);\n return labels?.[labelKey];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Dock.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Dock.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,gBAAgB;AAChB,wBAAgB,IAAI,sBAcnB;AAED,gBAAgB;AAChB,wBAAgB,OAAO,YAItB"}
1
+ {"version":3,"file":"Dock.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Dock.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,gBAAgB;AAChB,wBAAgB,IAAI,sBAenB;AAED,gBAAgB;AAChB,wBAAgB,OAAO,YAItB"}
@@ -7,15 +7,17 @@
7
7
  */
8
8
  import * as React from "react";
9
9
  import { SvgDockTop } from "@itwin/itwinui-icons-react";
10
- import { NineZoneDispatchContext, useLabel } from "../base/NineZone.js";
11
- import { ActionButton } from "../../preview/widget-action-dropdown/Button.js";
10
+ import { NineZoneDispatchContext } from "../base/NineZone.js";
11
+ import { WidgetAction } from "./WidgetAction.js";
12
12
  import { useIsToolSettingsTab } from "./useIsToolSettingsTab.js";
13
13
  import { useIsMaximizedWidget } from "../../preview/enable-maximized-widget/useMaximizedWidget.js";
14
+ import { useTranslation } from "../../hooks/useTranslation.js";
14
15
  /** @internal */
15
16
  export function Dock() {
16
17
  const dispatch = React.useContext(NineZoneDispatchContext);
17
- const label = useLabel("dockToolSettingsTitle");
18
- return (React.createElement(ActionButton, { icon: React.createElement(SvgDockTop, null), label: label, onClick: () => {
18
+ const { translate } = useTranslation();
19
+ const label = translate("widget.tooltips.dockToolSettings");
20
+ return (React.createElement(WidgetAction, { icon: React.createElement(SvgDockTop, null), label: label, onClick: () => {
19
21
  dispatch({
20
22
  type: "TOOL_SETTINGS_DOCK",
21
23
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Dock.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Dock.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AAEnG,gBAAgB;AAChB,MAAM,UAAU,IAAI;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IAChD,OAAO,CACL,oBAAC,YAAY,IACX,IAAI,EAAE,oBAAC,UAAU,OAAG,EACpB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC;gBACP,IAAI,EAAE,oBAAoB;aAC3B,CAAC,CAAC;QACL,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,OAAO;IACrB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,OAAO,cAAc,IAAI,CAAC,iBAAiB,CAAC;AAC9C,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { SvgDockTop } from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext, useLabel } from \"../base/NineZone.js\";\nimport { ActionButton } from \"../../preview/widget-action-dropdown/Button.js\";\nimport { useIsToolSettingsTab } from \"./useIsToolSettingsTab.js\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\n\n/** @internal */\nexport function Dock() {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const label = useLabel(\"dockToolSettingsTitle\");\n return (\n <ActionButton\n icon={<SvgDockTop />}\n label={label}\n onClick={() => {\n dispatch({\n type: \"TOOL_SETTINGS_DOCK\",\n });\n }}\n />\n );\n}\n\n/** @internal */\nexport function useDock() {\n const isToolSettings = useIsToolSettingsTab();\n const isMaximizedWidget = useIsMaximizedWidget();\n return isToolSettings && !isMaximizedWidget;\n}\n"]}
1
+ {"version":3,"file":"Dock.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Dock.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,gBAAgB;AAChB,MAAM,UAAU,IAAI;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC5D,OAAO,CACL,oBAAC,YAAY,IACX,IAAI,EAAE,oBAAC,UAAU,OAAG,EACpB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC;gBACP,IAAI,EAAE,oBAAoB;aAC3B,CAAC,CAAC;QACL,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,OAAO;IACrB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,OAAO,cAAc,IAAI,CAAC,iBAAiB,CAAC;AAC9C,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { SvgDockTop } from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext } from \"../base/NineZone.js\";\nimport { WidgetAction } from \"./WidgetAction.js\";\nimport { useIsToolSettingsTab } from \"./useIsToolSettingsTab.js\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\nimport { useTranslation } from \"../../hooks/useTranslation.js\";\n\n/** @internal */\nexport function Dock() {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const { translate } = useTranslation();\n const label = translate(\"widget.tooltips.dockToolSettings\");\n return (\n <WidgetAction\n icon={<SvgDockTop />}\n label={label}\n onClick={() => {\n dispatch({\n type: \"TOOL_SETTINGS_DOCK\",\n });\n }}\n />\n );\n}\n\n/** @internal */\nexport function useDock() {\n const isToolSettings = useIsToolSettingsTab();\n const isMaximizedWidget = useIsMaximizedWidget();\n return isToolSettings && !isMaximizedWidget;\n}\n"]}
@@ -22,8 +22,7 @@ export interface NavigationAreaProps extends CommonProps, NoChildrenProps {
22
22
  /** Handler for mouse leave */
23
23
  onMouseLeave?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
24
24
  }
25
- /** NavigationArea widget is used in NavigationArea (Zone 1) and Navigation (Zone 3???) zones of 9-Zone UI.
26
- * @note Should be placed in [[Zone]] component.
25
+ /** A component that renders toolbars in the top right corner of standard layout.
27
26
  * @internal
28
27
  */
29
28
  export declare function NavigationArea(props: NavigationAreaProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationArea.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/NavigationArea.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;GAEG;AAEH,MAAM,WAAW,mBAAoB,SAAQ,WAAW,EAAE,eAAe;IACvE;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,wCAAwC;IACxC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,8BAA8B;IAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1E,8BAA8B;IAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;CAC3E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBA6BxD"}
1
+ {"version":3,"file":"NavigationArea.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/NavigationArea.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;GAEG;AAEH,MAAM,WAAW,mBAAoB,SAAQ,WAAW,EAAE,eAAe;IACvE;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,wCAAwC;IACxC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,8BAA8B;IAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1E,8BAA8B;IAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;CAC3E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBAgCxD"}
@@ -8,8 +8,7 @@
8
8
  import "./NavigationArea.scss";
9
9
  import classnames from "classnames";
10
10
  import * as React from "react";
11
- /** NavigationArea widget is used in NavigationArea (Zone 1) and Navigation (Zone 3???) zones of 9-Zone UI.
12
- * @note Should be placed in [[Zone]] component.
11
+ /** A component that renders toolbars in the top right corner of standard layout.
13
12
  * @internal
14
13
  */
15
14
  export function NavigationArea(props) {
@@ -17,6 +16,6 @@ export function NavigationArea(props) {
17
16
  return (React.createElement("div", { className: className, style: props.style },
18
17
  React.createElement("div", { className: "nz-horizontal-toolbar-container", onMouseEnter: props.onMouseEnter, onMouseLeave: props.onMouseLeave }, props.horizontalToolbar),
19
18
  props.navigationAid && (React.createElement("div", { className: "nz-navigation-aid-container", onMouseEnter: props.onMouseEnter, onMouseLeave: props.onMouseLeave }, props.navigationAid)),
20
- React.createElement("div", { className: "nz-vertical-toolbar-container", onMouseEnter: props.onMouseEnter, onMouseLeave: props.onMouseLeave }, props.verticalToolbar)));
19
+ React.createElement("div", { className: classnames("nz-vertical-toolbar-container", !props.navigationAid && "nz-span"), onMouseEnter: props.onMouseEnter, onMouseLeave: props.onMouseLeave }, props.verticalToolbar)));
21
20
  }
22
21
  //# sourceMappingURL=NavigationArea.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationArea.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/NavigationArea.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuB/B;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,SAAS,GAAG,UAAU,CAAC,0BAA0B,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1E,OAAO,CACL,6BAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;QAC3C,6BACE,SAAS,EAAC,iCAAiC,EAC3C,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,YAAY,EAAE,KAAK,CAAC,YAAY,IAE/B,KAAK,CAAC,iBAAiB,CACpB;QACL,KAAK,CAAC,aAAa,IAAI,CACtB,6BACE,SAAS,EAAC,6BAA6B,EACvC,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,YAAY,EAAE,KAAK,CAAC,YAAY,IAE/B,KAAK,CAAC,aAAa,CAChB,CACP;QACD,6BACE,SAAS,EAAC,+BAA+B,EACzC,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,YAAY,EAAE,KAAK,CAAC,YAAY,IAE/B,KAAK,CAAC,eAAe,CAClB,CACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport \"./NavigationArea.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\n\n/** Properties of [[NavigationArea]] component.\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface NavigationAreaProps extends CommonProps, NoChildrenProps {\n /**\n * Button displayed between horizontal and vertical toolbars.\n * I.e. [[AppButton]] in NavigationArea zone or navigation aid control in Navigation zone.\n */\n navigationAid?: React.ReactNode;\n /** Horizontal toolbar. See [[Toolbar]] */\n horizontalToolbar?: React.ReactNode;\n /** Vertical toolbar. See [[Toolbar]] */\n verticalToolbar?: React.ReactNode;\n /** Handler for mouse enter */\n onMouseEnter?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n /** Handler for mouse leave */\n onMouseLeave?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n}\n\n/** NavigationArea widget is used in NavigationArea (Zone 1) and Navigation (Zone 3???) zones of 9-Zone UI.\n * @note Should be placed in [[Zone]] component.\n * @internal\n */\nexport function NavigationArea(props: NavigationAreaProps) {\n const className = classnames(\"nz-widget-navigationArea\", props.className);\n return (\n <div className={className} style={props.style}>\n <div\n className=\"nz-horizontal-toolbar-container\"\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n {props.horizontalToolbar}\n </div>\n {props.navigationAid && (\n <div\n className=\"nz-navigation-aid-container\"\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n {props.navigationAid}\n </div>\n )}\n <div\n className=\"nz-vertical-toolbar-container\"\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n {props.verticalToolbar}\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"NavigationArea.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/NavigationArea.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuB/B;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,SAAS,GAAG,UAAU,CAAC,0BAA0B,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1E,OAAO,CACL,6BAAK,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;QAC3C,6BACE,SAAS,EAAC,iCAAiC,EAC3C,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,YAAY,EAAE,KAAK,CAAC,YAAY,IAE/B,KAAK,CAAC,iBAAiB,CACpB;QACL,KAAK,CAAC,aAAa,IAAI,CACtB,6BACE,SAAS,EAAC,6BAA6B,EACvC,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,YAAY,EAAE,KAAK,CAAC,YAAY,IAE/B,KAAK,CAAC,aAAa,CAChB,CACP;QACD,6BACE,SAAS,EAAE,UAAU,CACnB,+BAA+B,EAC/B,CAAC,KAAK,CAAC,aAAa,IAAI,SAAS,CAClC,EACD,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,YAAY,EAAE,KAAK,CAAC,YAAY,IAE/B,KAAK,CAAC,eAAe,CAClB,CACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport \"./NavigationArea.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps, NoChildrenProps } from \"@itwin/core-react\";\n\n/** Properties of [[NavigationArea]] component.\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface NavigationAreaProps extends CommonProps, NoChildrenProps {\n /**\n * Button displayed between horizontal and vertical toolbars.\n * I.e. [[AppButton]] in NavigationArea zone or navigation aid control in Navigation zone.\n */\n navigationAid?: React.ReactNode;\n /** Horizontal toolbar. See [[Toolbar]] */\n horizontalToolbar?: React.ReactNode;\n /** Vertical toolbar. See [[Toolbar]] */\n verticalToolbar?: React.ReactNode;\n /** Handler for mouse enter */\n onMouseEnter?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n /** Handler for mouse leave */\n onMouseLeave?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n}\n\n/** A component that renders toolbars in the top right corner of standard layout.\n * @internal\n */\nexport function NavigationArea(props: NavigationAreaProps) {\n const className = classnames(\"nz-widget-navigationArea\", props.className);\n return (\n <div className={className} style={props.style}>\n <div\n className=\"nz-horizontal-toolbar-container\"\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n {props.horizontalToolbar}\n </div>\n {props.navigationAid && (\n <div\n className=\"nz-navigation-aid-container\"\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n {props.navigationAid}\n </div>\n )}\n <div\n className={classnames(\n \"nz-vertical-toolbar-container\",\n !props.navigationAid && \"nz-span\"\n )}\n onMouseEnter={props.onMouseEnter}\n onMouseLeave={props.onMouseLeave}\n >\n {props.verticalToolbar}\n </div>\n </div>\n );\n}\n"]}
@@ -12,10 +12,12 @@
12
12
  box-sizing: border-box;
13
13
  height: 100%;
14
14
  grid-gap: 6px;
15
- grid-template-columns: 1fr minmax($mls-navigation-aid-width, auto);
16
- grid-template-rows: minmax($mls-navigation-aid-width, auto) 1fr;
15
+ grid-template-areas:
16
+ "htools button"
17
+ ". vtools";
18
+ grid-template-columns: 1fr auto;
19
+ grid-template-rows: auto 1fr;
17
20
  justify-items: end;
18
- grid-template-areas: "htools button" ". vtools";
19
21
 
20
22
  &.nz-hidden {
21
23
  opacity: 0;
@@ -23,24 +25,34 @@
23
25
  }
24
26
 
25
27
  > .nz-navigation-aid-container {
28
+ grid-area: button;
29
+
30
+ min-width: $mls-navigation-aid-width;
31
+ min-height: $mls-navigation-aid-height;
32
+
26
33
  margin-bottom: 6px;
27
34
  pointer-events: auto;
28
- grid-area: button;
29
35
 
30
36
  @include nz-widget-opacity;
31
37
  }
32
38
 
33
39
  > .nz-vertical-toolbar-container {
34
40
  grid-area: vtools;
41
+
35
42
  height: calc(100% - 60px);
36
43
  display: inline-flex;
37
44
  flex-direction: column;
38
45
  align-items: flex-end;
39
46
  @include nz-widget-opacity;
47
+
48
+ &.nz-span {
49
+ grid-row: button / vtools;
50
+ }
40
51
  }
41
52
 
42
53
  > .nz-horizontal-toolbar-container {
43
54
  grid-area: htools;
55
+
44
56
  width: 100%;
45
57
  display: flex;
46
58
  flex-direction: row;
@@ -1 +1 @@
1
- {"version":3,"file":"PinToggle.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PinToggle.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,gBAAgB;AAChB,wBAAgB,SAAS,sBAoBxB;AAED,gBAAgB;AAChB,wBAAgB,YAAY,YAI3B"}
1
+ {"version":3,"file":"PinToggle.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PinToggle.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,gBAAgB;AAChB,wBAAgB,SAAS,sBAqBxB;AAED,gBAAgB;AAChB,wBAAgB,YAAY,YAI3B"}
@@ -8,21 +8,23 @@
8
8
  import * as React from "react";
9
9
  import { assert } from "@itwin/core-bentley";
10
10
  import { SvgPin, SvgPinHollow } from "@itwin/itwinui-icons-react";
11
- import { NineZoneDispatchContext, useLabel } from "../base/NineZone.js";
11
+ import { NineZoneDispatchContext } from "../base/NineZone.js";
12
12
  import { PanelSideContext } from "../widget-panels/Panel.js";
13
13
  import { useLayout } from "../base/LayoutStore.js";
14
- import { ActionButton } from "../../preview/widget-action-dropdown/Button.js";
14
+ import { WidgetAction } from "./WidgetAction.js";
15
15
  import { useMainPanelWidgetId } from "./usePanelWidgetId.js";
16
16
  import { useIsMaximizedWidget } from "../../preview/enable-maximized-widget/useMaximizedWidget.js";
17
+ import { useTranslation } from "../../hooks/useTranslation.js";
17
18
  /** @internal */
18
19
  export function PinToggle() {
19
20
  const side = React.useContext(PanelSideContext);
20
21
  assert(!!side);
21
22
  const dispatch = React.useContext(NineZoneDispatchContext);
22
- const pinLabel = useLabel("pinPanelTitle");
23
- const unpinLabel = useLabel("unpinPanelTitle");
23
+ const { translate } = useTranslation();
24
+ const pinLabel = translate("widget.tooltips.pinPanel");
25
+ const unpinLabel = translate("widget.tooltips.unpinPanel");
24
26
  const pinned = useLayout((state) => state.panels[side].pinned);
25
- return (React.createElement(ActionButton, { icon: pinned ? React.createElement(SvgPin, null) : React.createElement(SvgPinHollow, null), label: pinned ? unpinLabel : pinLabel, onClick: () => {
27
+ return (React.createElement(WidgetAction, { icon: pinned ? React.createElement(SvgPin, null) : React.createElement(SvgPinHollow, null), label: pinned ? unpinLabel : pinLabel, onClick: () => {
26
28
  dispatch({
27
29
  side,
28
30
  type: "PANEL_TOGGLE_PINNED",
@@ -1 +1 @@
1
- {"version":3,"file":"PinToggle.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PinToggle.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AAEnG,gBAAgB;AAChB,MAAM,UAAU,SAAS;IACvB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;IAE/D,OAAO,CACL,oBAAC,YAAY,IACX,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAC,MAAM,OAAG,CAAC,CAAC,CAAC,oBAAC,YAAY,OAAG,EAC5C,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EACrC,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC;gBACP,IAAI;gBACJ,IAAI,EAAE,qBAAqB;aAC5B,CAAC,CAAC;QACL,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,YAAY;IAC1B,MAAM,iBAAiB,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAC;IACnD,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,OAAO,iBAAiB,IAAI,CAAC,iBAAiB,CAAC;AACjD,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { SvgPin, SvgPinHollow } from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext, useLabel } from \"../base/NineZone.js\";\nimport { PanelSideContext } from \"../widget-panels/Panel.js\";\nimport { useLayout } from \"../base/LayoutStore.js\";\nimport { ActionButton } from \"../../preview/widget-action-dropdown/Button.js\";\nimport { useMainPanelWidgetId } from \"./usePanelWidgetId.js\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\n\n/** @internal */\nexport function PinToggle() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const pinLabel = useLabel(\"pinPanelTitle\");\n const unpinLabel = useLabel(\"unpinPanelTitle\");\n const pinned = useLayout((state) => state.panels[side].pinned);\n\n return (\n <ActionButton\n icon={pinned ? <SvgPin /> : <SvgPinHollow />}\n label={pinned ? unpinLabel : pinLabel}\n onClick={() => {\n dispatch({\n side,\n type: \"PANEL_TOGGLE_PINNED\",\n });\n }}\n />\n );\n}\n\n/** @internal */\nexport function usePinToggle() {\n const isMainPanelWidget = !!useMainPanelWidgetId();\n const isMaximizedWidget = useIsMaximizedWidget();\n return isMainPanelWidget && !isMaximizedWidget;\n}\n"]}
1
+ {"version":3,"file":"PinToggle.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PinToggle.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,gBAAgB;AAChB,MAAM,UAAU,SAAS;IACvB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,0BAA0B,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,SAAS,CAAC,4BAA4B,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;IAE/D,OAAO,CACL,oBAAC,YAAY,IACX,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAC,MAAM,OAAG,CAAC,CAAC,CAAC,oBAAC,YAAY,OAAG,EAC5C,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EACrC,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC;gBACP,IAAI;gBACJ,IAAI,EAAE,qBAAqB;aAC5B,CAAC,CAAC;QACL,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,YAAY;IAC1B,MAAM,iBAAiB,GAAG,CAAC,CAAC,oBAAoB,EAAE,CAAC;IACnD,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,OAAO,iBAAiB,IAAI,CAAC,iBAAiB,CAAC;AACjD,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { SvgPin, SvgPinHollow } from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext } from \"../base/NineZone.js\";\nimport { PanelSideContext } from \"../widget-panels/Panel.js\";\nimport { useLayout } from \"../base/LayoutStore.js\";\nimport { WidgetAction } from \"./WidgetAction.js\";\nimport { useMainPanelWidgetId } from \"./usePanelWidgetId.js\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\nimport { useTranslation } from \"../../hooks/useTranslation.js\";\n\n/** @internal */\nexport function PinToggle() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const { translate } = useTranslation();\n const pinLabel = translate(\"widget.tooltips.pinPanel\");\n const unpinLabel = translate(\"widget.tooltips.unpinPanel\");\n const pinned = useLayout((state) => state.panels[side].pinned);\n\n return (\n <WidgetAction\n icon={pinned ? <SvgPin /> : <SvgPinHollow />}\n label={pinned ? unpinLabel : pinLabel}\n onClick={() => {\n dispatch({\n side,\n type: \"PANEL_TOGGLE_PINNED\",\n });\n }}\n />\n );\n}\n\n/** @internal */\nexport function usePinToggle() {\n const isMainPanelWidget = !!useMainPanelWidgetId();\n const isMaximizedWidget = useIsMaximizedWidget();\n return isMainPanelWidget && !isMaximizedWidget;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PopoutToggle.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PopoutToggle.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,gBAAgB;AAChB,wBAAgB,YAAY,sBAiB3B;AAED,gBAAgB;AAChB,wBAAgB,eAAe,YAM9B"}
1
+ {"version":3,"file":"PopoutToggle.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PopoutToggle.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,gBAAgB;AAChB,wBAAgB,YAAY,sBAkB3B;AAED,gBAAgB;AAChB,wBAAgB,eAAe,YAM9B"}
@@ -7,16 +7,18 @@
7
7
  */
8
8
  import * as React from "react";
9
9
  import { SvgWindowPopout } from "@itwin/itwinui-icons-react";
10
- import { NineZoneDispatchContext, useLabel } from "../base/NineZone.js";
10
+ import { NineZoneDispatchContext } from "../base/NineZone.js";
11
11
  import { useActiveTabId } from "./Widget.js";
12
12
  import { useLayout } from "../base/LayoutStore.js";
13
- import { ActionButton } from "../../preview/widget-action-dropdown/Button.js";
13
+ import { WidgetAction } from "./WidgetAction.js";
14
+ import { useTranslation } from "../../hooks/useTranslation.js";
14
15
  /** @internal */
15
16
  export function PopoutToggle() {
16
17
  const dispatch = React.useContext(NineZoneDispatchContext);
17
18
  const activeTabId = useActiveTabId();
18
- const label = useLabel("popoutActiveTab");
19
- return (React.createElement(ActionButton, { icon: React.createElement(SvgWindowPopout, null), label: label, onClick: () => {
19
+ const { translate } = useTranslation();
20
+ const label = translate("widget.tooltips.popoutActiveTab");
21
+ return (React.createElement(WidgetAction, { icon: React.createElement(SvgWindowPopout, null), label: label, onClick: () => {
20
22
  dispatch({
21
23
  id: activeTabId,
22
24
  type: "WIDGET_TAB_POPOUT",
@@ -1 +1 @@
1
- {"version":3,"file":"PopoutToggle.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PopoutToggle.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAE9E,gBAAgB;AAChB,MAAM,UAAU,YAAY;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAE1C,OAAO,CACL,oBAAC,YAAY,IACX,IAAI,EAAE,oBAAC,eAAe,OAAG,EACzB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC;gBACP,EAAE,EAAE,WAAW;gBACf,IAAI,EAAE,mBAAmB;aAC1B,CAAC,CAAC;QACL,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,eAAe;IAC7B,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,OAAO,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { SvgWindowPopout } from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext, useLabel } from \"../base/NineZone.js\";\nimport { useActiveTabId } from \"./Widget.js\";\nimport { useLayout } from \"../base/LayoutStore.js\";\nimport { ActionButton } from \"../../preview/widget-action-dropdown/Button.js\";\n\n/** @internal */\nexport function PopoutToggle() {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const activeTabId = useActiveTabId();\n const label = useLabel(\"popoutActiveTab\");\n\n return (\n <ActionButton\n icon={<SvgWindowPopout />}\n label={label}\n onClick={() => {\n dispatch({\n id: activeTabId,\n type: \"WIDGET_TAB_POPOUT\",\n });\n }}\n />\n );\n}\n\n/** @internal */\nexport function usePopoutToggle() {\n const tabId = useActiveTabId();\n return useLayout((state) => {\n const tab = state.tabs[tabId];\n return !!tab.canPopout;\n });\n}\n"]}
1
+ {"version":3,"file":"PopoutToggle.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/PopoutToggle.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,gBAAgB;AAChB,MAAM,UAAU,YAAY;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,SAAS,CAAC,iCAAiC,CAAC,CAAC;IAE3D,OAAO,CACL,oBAAC,YAAY,IACX,IAAI,EAAE,oBAAC,eAAe,OAAG,EACzB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,CAAC;gBACP,EAAE,EAAE,WAAW;gBACf,IAAI,EAAE,mBAAmB;aAC1B,CAAC,CAAC;QACL,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,eAAe;IAC7B,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,OAAO,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport * as React from \"react\";\nimport { SvgWindowPopout } from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext } from \"../base/NineZone.js\";\nimport { useActiveTabId } from \"./Widget.js\";\nimport { useLayout } from \"../base/LayoutStore.js\";\nimport { WidgetAction } from \"./WidgetAction.js\";\nimport { useTranslation } from \"../../hooks/useTranslation.js\";\n\n/** @internal */\nexport function PopoutToggle() {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const activeTabId = useActiveTabId();\n const { translate } = useTranslation();\n const label = translate(\"widget.tooltips.popoutActiveTab\");\n\n return (\n <WidgetAction\n icon={<SvgWindowPopout />}\n label={label}\n onClick={() => {\n dispatch({\n id: activeTabId,\n type: \"WIDGET_TAB_POPOUT\",\n });\n }}\n />\n );\n}\n\n/** @internal */\nexport function usePopoutToggle() {\n const tabId = useActiveTabId();\n return useLayout((state) => {\n const tab = state.tabs[tabId];\n return !!tab.canPopout;\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SendBack.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/SendBack.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK/D,gBAAgB;AAChB,eAAO,MAAM,8BAA8B,iFAEzB,CAAC;AAEnB,gBAAgB;AAChB,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC;;;;;;;;;;;;EAoC5B;AAED,gBAAgB;AAChB,wBAAgB,oBAAoB;;;;;;;;;;;;cAKnC;AAiBD,gBAAgB;AAChB,wBAAgB,QAAQ,sBAsCvB;AAED,gBAAgB;AAChB,wBAAgB,WAAW,YAO1B"}
1
+ {"version":3,"file":"SendBack.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/SendBack.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAM/D,gBAAgB;AAChB,eAAO,MAAM,8BAA8B,iFAEzB,CAAC;AAEnB,gBAAgB;AAChB,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC;;;;;;;;;;;;EAoC5B;AAED,gBAAgB;AAChB,wBAAgB,oBAAoB;;;;;;;;;;;;cAKnC;AAiBD,gBAAgB;AAChB,wBAAgB,QAAQ,sBAqCvB;AAED,gBAAgB;AAChB,wBAAgB,WAAW,YAO1B"}
@@ -9,13 +9,14 @@ import * as React from "react";
9
9
  import { create } from "zustand";
10
10
  import { assert } from "@itwin/core-bentley";
11
11
  import { SvgDockBottom, SvgDockLeft, SvgDockRight, SvgDockTop, } from "@itwin/itwinui-icons-react";
12
- import { NineZoneDispatchContext, useLabel } from "../base/NineZone.js";
12
+ import { NineZoneDispatchContext } from "../base/NineZone.js";
13
13
  import { useLayout } from "../base/LayoutStore.js";
14
14
  import { useFloatingWidgetId, useWidgetAllowedToDock, } from "./FloatingWidget.js";
15
15
  import { getWidgetPanelSectionId } from "../state/PanelState.js";
16
16
  import { useIsToolSettingsTab } from "./useIsToolSettingsTab.js";
17
- import { ActionButton } from "../../preview/widget-action-dropdown/Button.js";
17
+ import { WidgetAction } from "./WidgetAction.js";
18
18
  import { useIsMaximizedWidget } from "../../preview/enable-maximized-widget/useMaximizedWidget.js";
19
+ import { useTranslation } from "../../hooks/useTranslation.js";
19
20
  /** @internal */
20
21
  export const useActiveSendBackWidgetIdStore = create(() => undefined);
21
22
  /** @internal */
@@ -66,7 +67,8 @@ export function SendBack() {
66
67
  const id = useFloatingWidgetId();
67
68
  assert(!!id);
68
69
  const dispatch = React.useContext(NineZoneDispatchContext);
69
- const label = useLabel("sendWidgetHomeTitle");
70
+ const { translate } = useTranslation();
71
+ const label = translate("widget.tooltips.sendHome");
70
72
  const setActiveWidgetId = (newId) => useActiveSendBackWidgetIdStore.setState(newId);
71
73
  const onClick = () => {
72
74
  setActiveWidgetId(undefined);
@@ -88,9 +90,7 @@ export function SendBack() {
88
90
  setActiveWidgetId(undefined);
89
91
  };
90
92
  const eventHandlers = { onMouseOver, onFocus, onMouseOut, onBlur };
91
- return (React.createElement(ActionButton, { icon: React.createElement(Icon, null), label: label, onClick: onClick, buttonProps: eventHandlers,
92
- // TODO: can not pass down event handlers due to iTwinUI type issues.
93
- menuProps: eventHandlers }));
93
+ return (React.createElement(WidgetAction, { icon: React.createElement(Icon, null), label: label, onClick: onClick, ...eventHandlers }));
94
94
  }
95
95
  /** @internal */
96
96
  export function useSendBack() {
@@ -1 +1 @@
1
- {"version":3,"file":"SendBack.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/SendBack.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 Widget\n */\n\nimport * as React from \"react\";\nimport { create } from \"zustand\";\nimport { assert } from \"@itwin/core-bentley\";\nimport {\n SvgDockBottom,\n SvgDockLeft,\n SvgDockRight,\n SvgDockTop,\n} from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext, useLabel } from \"../base/NineZone.js\";\nimport { useLayout } from \"../base/LayoutStore.js\";\nimport {\n useFloatingWidgetId,\n useWidgetAllowedToDock,\n} from \"./FloatingWidget.js\";\nimport type { WidgetState } from \"../state/WidgetState.js\";\nimport { getWidgetPanelSectionId } from \"../state/PanelState.js\";\nimport type { NineZoneState } from \"../state/NineZoneState.js\";\nimport { useIsToolSettingsTab } from \"./useIsToolSettingsTab.js\";\nimport { ActionButton } from \"../../preview/widget-action-dropdown/Button.js\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\n\n/** @internal */\nexport const useActiveSendBackWidgetIdStore = create<\n WidgetState[\"id\"] | undefined\n>(() => undefined);\n\n/** @internal */\nexport function getSendBackHomeState(\n state: NineZoneState,\n widgetId: WidgetState[\"id\"]\n) {\n const floatingWidget = state.floatingWidgets.byId[widgetId];\n const home = floatingWidget.home;\n const panel = state.panels[home.side];\n const destinationWidgetId = home.widgetId\n ? home.widgetId\n : getWidgetPanelSectionId(panel.side, home.widgetIndex);\n\n let destinationWidget = state.widgets[destinationWidgetId];\n\n if (!destinationWidget && panel.widgets.length === panel.maxWidgetCount) {\n const id = panel.widgets[home.widgetIndex];\n destinationWidget = state.widgets[id];\n }\n\n // Widget would be added to an existing panel widget.\n if (destinationWidget) {\n return {\n side: home.side,\n widgetId: destinationWidget.id,\n };\n }\n\n // Widget would be added to a panel as it's first panel widget.\n if (panel.widgets.length === 0) {\n return {\n side: home.side,\n };\n }\n\n // Widget would be added to a panel with an existing panel widget as a separate panel widget.\n return {\n side: home.side,\n sectionIndex: destinationWidgetId.endsWith(\"End\") ? 1 : 0,\n };\n}\n\n/** @internal */\nexport function useSendBackHomeState() {\n const widgetId = useActiveSendBackWidgetIdStore((state) => state);\n return useLayout((state) =>\n widgetId ? getSendBackHomeState(state, widgetId) : undefined\n );\n}\n\nfunction Icon() {\n const id = useFloatingWidgetId();\n assert(!!id);\n const home = useLayout((state) => state.floatingWidgets.byId[id].home);\n return home.side === \"left\" ? (\n <SvgDockLeft />\n ) : home.side === \"right\" ? (\n <SvgDockRight />\n ) : home.side === \"top\" ? (\n <SvgDockTop />\n ) : (\n <SvgDockBottom />\n );\n}\n\n/** @internal */\nexport function SendBack() {\n const id = useFloatingWidgetId();\n assert(!!id);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const label = useLabel(\"sendWidgetHomeTitle\");\n const setActiveWidgetId = (newId: WidgetState[\"id\"] | undefined) =>\n useActiveSendBackWidgetIdStore.setState(newId);\n\n const onClick = () => {\n setActiveWidgetId(undefined);\n dispatch({\n type: \"FLOATING_WIDGET_SEND_BACK\",\n id,\n });\n };\n const onMouseOver = () => {\n setActiveWidgetId(id);\n };\n const onFocus = () => {\n setActiveWidgetId(id);\n };\n const onMouseOut = () => {\n setActiveWidgetId(undefined);\n };\n const onBlur = () => {\n setActiveWidgetId(undefined);\n };\n const eventHandlers = { onMouseOver, onFocus, onMouseOut, onBlur };\n return (\n <ActionButton\n icon={<Icon />}\n label={label}\n onClick={onClick}\n buttonProps={eventHandlers}\n // TODO: can not pass down event handlers due to iTwinUI type issues.\n menuProps={eventHandlers as any}\n />\n );\n}\n\n/** @internal */\nexport function useSendBack() {\n const maximizedWidget = useIsMaximizedWidget();\n const isToolSettings = useIsToolSettingsTab();\n const isFloatingWidget = !!useFloatingWidgetId();\n const canBeDocked = useWidgetAllowedToDock();\n\n return !maximizedWidget && isFloatingWidget && !isToolSettings && canBeDocked;\n}\n"]}
1
+ {"version":3,"file":"SendBack.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/SendBack.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 Widget\n */\n\nimport * as React from \"react\";\nimport { create } from \"zustand\";\nimport { assert } from \"@itwin/core-bentley\";\nimport {\n SvgDockBottom,\n SvgDockLeft,\n SvgDockRight,\n SvgDockTop,\n} from \"@itwin/itwinui-icons-react\";\nimport { NineZoneDispatchContext } from \"../base/NineZone.js\";\nimport { useLayout } from \"../base/LayoutStore.js\";\nimport {\n useFloatingWidgetId,\n useWidgetAllowedToDock,\n} from \"./FloatingWidget.js\";\nimport type { WidgetState } from \"../state/WidgetState.js\";\nimport { getWidgetPanelSectionId } from \"../state/PanelState.js\";\nimport type { NineZoneState } from \"../state/NineZoneState.js\";\nimport { useIsToolSettingsTab } from \"./useIsToolSettingsTab.js\";\nimport { WidgetAction } from \"./WidgetAction.js\";\nimport { useIsMaximizedWidget } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\nimport { useTranslation } from \"../../hooks/useTranslation.js\";\n\n/** @internal */\nexport const useActiveSendBackWidgetIdStore = create<\n WidgetState[\"id\"] | undefined\n>(() => undefined);\n\n/** @internal */\nexport function getSendBackHomeState(\n state: NineZoneState,\n widgetId: WidgetState[\"id\"]\n) {\n const floatingWidget = state.floatingWidgets.byId[widgetId];\n const home = floatingWidget.home;\n const panel = state.panels[home.side];\n const destinationWidgetId = home.widgetId\n ? home.widgetId\n : getWidgetPanelSectionId(panel.side, home.widgetIndex);\n\n let destinationWidget = state.widgets[destinationWidgetId];\n\n if (!destinationWidget && panel.widgets.length === panel.maxWidgetCount) {\n const id = panel.widgets[home.widgetIndex];\n destinationWidget = state.widgets[id];\n }\n\n // Widget would be added to an existing panel widget.\n if (destinationWidget) {\n return {\n side: home.side,\n widgetId: destinationWidget.id,\n };\n }\n\n // Widget would be added to a panel as it's first panel widget.\n if (panel.widgets.length === 0) {\n return {\n side: home.side,\n };\n }\n\n // Widget would be added to a panel with an existing panel widget as a separate panel widget.\n return {\n side: home.side,\n sectionIndex: destinationWidgetId.endsWith(\"End\") ? 1 : 0,\n };\n}\n\n/** @internal */\nexport function useSendBackHomeState() {\n const widgetId = useActiveSendBackWidgetIdStore((state) => state);\n return useLayout((state) =>\n widgetId ? getSendBackHomeState(state, widgetId) : undefined\n );\n}\n\nfunction Icon() {\n const id = useFloatingWidgetId();\n assert(!!id);\n const home = useLayout((state) => state.floatingWidgets.byId[id].home);\n return home.side === \"left\" ? (\n <SvgDockLeft />\n ) : home.side === \"right\" ? (\n <SvgDockRight />\n ) : home.side === \"top\" ? (\n <SvgDockTop />\n ) : (\n <SvgDockBottom />\n );\n}\n\n/** @internal */\nexport function SendBack() {\n const id = useFloatingWidgetId();\n assert(!!id);\n const dispatch = React.useContext(NineZoneDispatchContext);\n const { translate } = useTranslation();\n const label = translate(\"widget.tooltips.sendHome\");\n const setActiveWidgetId = (newId: WidgetState[\"id\"] | undefined) =>\n useActiveSendBackWidgetIdStore.setState(newId);\n\n const onClick = () => {\n setActiveWidgetId(undefined);\n dispatch({\n type: \"FLOATING_WIDGET_SEND_BACK\",\n id,\n });\n };\n const onMouseOver = () => {\n setActiveWidgetId(id);\n };\n const onFocus = () => {\n setActiveWidgetId(id);\n };\n const onMouseOut = () => {\n setActiveWidgetId(undefined);\n };\n const onBlur = () => {\n setActiveWidgetId(undefined);\n };\n const eventHandlers = { onMouseOver, onFocus, onMouseOut, onBlur };\n return (\n <WidgetAction\n icon={<Icon />}\n label={label}\n onClick={onClick}\n {...eventHandlers}\n />\n );\n}\n\n/** @internal */\nexport function useSendBack() {\n const maximizedWidget = useIsMaximizedWidget();\n const isToolSettings = useIsToolSettingsTab();\n const isFloatingWidget = !!useFloatingWidgetId();\n const canBeDocked = useWidgetAllowedToDock();\n\n return !maximizedWidget && isFloatingWidget && !isToolSettings && canBeDocked;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/TabBar.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,eAAe,CAAC;AAEvB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAgBnD,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBAmFpD;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,WAAW,EAC3C,WAAW,CAAC,EAAE,CAAC,sBAAsB,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,KAAK,IAAI,EAC7E,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,EAClC,SAAS,CAAC,EAAE,MAAM,IAAI,EACtB,YAAY,CAAC,EAAE,MAAM,IAAI,EACzB,aAAa,CAAC,EAAE,MAAM,IAAI,gCAqD3B"}
1
+ {"version":3,"file":"TabBar.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/TabBar.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,eAAe,CAAC;AAEvB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAiBnD,gBAAgB;AAChB,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBAoFpD;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,WAAW,EAC3C,WAAW,CAAC,EAAE,CAAC,sBAAsB,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,KAAK,IAAI,EAC7E,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,EAClC,SAAS,CAAC,EAAE,MAAM,IAAI,EACtB,YAAY,CAAC,EAAE,MAAM,IAAI,EACzB,aAAa,CAAC,EAAE,MAAM,IAAI,gCAqD3B"}
@@ -14,16 +14,18 @@ import { Point } from "@itwin/core-react/internal";
14
14
  import { useDragWidget } from "../base/DragManager.js";
15
15
  import { NineZoneDispatchContext } from "../base/NineZone.js";
16
16
  import { usePointerCaptor } from "../base/usePointerCaptor.js";
17
- import { TabBarButtons } from "./Buttons.js";
18
17
  import { WidgetTabs } from "./Tabs.js";
19
18
  import { WidgetIdContext } from "./Widget.js";
20
19
  import { useDoubleClick } from "../widget-panels/Grip.js";
21
20
  import { useFloatingWidgetId } from "./FloatingWidget.js";
22
21
  import { useMaximizedWidgetTabBarHandle } from "../../preview/enable-maximized-widget/useMaximizedWidget.js";
22
+ import { WidgetActions } from "./WidgetActions.js";
23
+ import { ConfigurableUiContext } from "../../configurableui/ConfigurableUiContent.js";
23
24
  /** @internal */
24
25
  export function WidgetTabBar(props) {
25
26
  const dispatch = React.useContext(NineZoneDispatchContext);
26
27
  const id = React.useContext(WidgetIdContext);
28
+ const { widgetActions } = React.useContext(ConfigurableUiContext);
27
29
  const floatingWidgetId = useFloatingWidgetId();
28
30
  assert(!!id);
29
31
  const widgetId = floatingWidgetId === undefined ? id : floatingWidgetId;
@@ -78,7 +80,7 @@ export function WidgetTabBar(props) {
78
80
  return (React.createElement("div", { ref: containerRef, className: className },
79
81
  React.createElement("div", { className: handleClassName, ref: ref }),
80
82
  React.createElement(WidgetTabs, null),
81
- React.createElement(TabBarButtons, null)));
83
+ widgetActions ?? React.createElement(WidgetActions, null)));
82
84
  }
83
85
  /** Hook to control drag interactions.
84
86
  * Starts drag interaction after pointer moves or after timeout.
@@ -1 +1 @@
1
- {"version":3,"file":"TabBar.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/TabBar.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 Widget\n */\n\nimport \"./TabBar.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { Timer } from \"@itwin/core-react\";\nimport { Point } from \"@itwin/core-react/internal\";\nimport type { UseDragWidgetArgs } from \"../base/DragManager.js\";\nimport { useDragWidget } from \"../base/DragManager.js\";\nimport { NineZoneDispatchContext } from \"../base/NineZone.js\";\nimport type {\n PointerCaptorArgs,\n PointerCaptorEvent,\n} from \"../base/usePointerCaptor.js\";\nimport { usePointerCaptor } from \"../base/usePointerCaptor.js\";\nimport { TabBarButtons } from \"./Buttons.js\";\nimport { WidgetTabs } from \"./Tabs.js\";\nimport { WidgetIdContext } from \"./Widget.js\";\nimport { useDoubleClick } from \"../widget-panels/Grip.js\";\nimport { useFloatingWidgetId } from \"./FloatingWidget.js\";\nimport { useMaximizedWidgetTabBarHandle } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\n\n/** @internal */\nexport interface WidgetTabBarProps {\n separator?: boolean;\n}\n\n/** @internal */\nexport function WidgetTabBar(props: WidgetTabBarProps) {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const id = React.useContext(WidgetIdContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n const widgetId = floatingWidgetId === undefined ? id : floatingWidgetId;\n const handleDoubleClick = React.useCallback(() => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_CLEAR_USER_SIZED\",\n id: floatingWidgetId,\n });\n }, [dispatch, floatingWidgetId]);\n const handleActionAreaClick = useDoubleClick(handleDoubleClick);\n\n const onDrag = React.useCallback<NonNullable<UseDragWidgetArgs[\"onDrag\"]>>(\n (dragBy) => {\n floatingWidgetId !== undefined &&\n dispatch({\n type: \"WIDGET_DRAG\",\n dragBy,\n floatingWidgetId,\n });\n },\n [dispatch, floatingWidgetId]\n );\n const onDragEnd = React.useCallback<\n NonNullable<UseDragWidgetArgs[\"onDragEnd\"]>\n >(\n (target) => {\n floatingWidgetId !== undefined && handleActionAreaClick();\n floatingWidgetId !== undefined &&\n dispatch({\n type: \"WIDGET_DRAG_END\",\n floatingWidgetId,\n target,\n });\n },\n [dispatch, floatingWidgetId, handleActionAreaClick]\n );\n const handleWidgetDragStart = useDragWidget({\n widgetId,\n onDrag,\n onDragEnd,\n });\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const handleDragStart = React.useCallback(\n (initialPointerPosition: Point, pointerPosition: Point) => {\n handleWidgetDragStart({\n initialPointerPosition,\n pointerPosition,\n });\n },\n [handleWidgetDragStart]\n );\n const handleTouchStart = React.useCallback(() => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n }, [dispatch, floatingWidgetId]);\n const ref = useDrag(\n handleDragStart,\n undefined,\n undefined,\n handleTouchStart,\n handleDoubleClick\n );\n const maximizedWidgetHandle = useMaximizedWidgetTabBarHandle();\n const className = classnames(\n \"nz-widget-tabBar\",\n props.separator && \"nz-separator\"\n );\n const handleClassName = classnames(\"nz-handle\", maximizedWidgetHandle);\n return (\n <div ref={containerRef} className={className}>\n <div className={handleClassName} ref={ref} />\n <WidgetTabs />\n <TabBarButtons />\n </div>\n );\n}\n\n/** Hook to control drag interactions.\n * Starts drag interaction after pointer moves or after timeout.\n * @internal\n */\nexport function useDrag<T extends HTMLElement>(\n onDragStart?: (initialPointerPosition: Point, pointerPosition: Point) => void,\n onDrag?: (position: Point) => void,\n onDragEnd?: () => void,\n onTouchStart?: () => void,\n onDoubleClick?: () => void\n) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const doubleClickTimer = React.useRef(new Timer(300));\n const clickCount = React.useRef(0);\n const initialPointerPosition = React.useRef<Point>();\n\n React.useEffect(() => {\n const handleExecute = () => {\n if (clickCount.current === 2) onDoubleClick && onDoubleClick();\n clickCount.current = 0;\n };\n const timer = doubleClickTimer.current;\n timer.setOnExecute(handleExecute);\n return () => {\n timer.setOnExecute(undefined);\n };\n }, [onDoubleClick]);\n\n const handlePointerDown = React.useCallback(\n (args: PointerCaptorArgs, e: PointerCaptorEvent) => {\n initialPointerPosition.current = new Point(args.clientX, args.clientY);\n e.type === \"touchstart\" && onTouchStart && onTouchStart();\n },\n [onTouchStart]\n );\n const handlePointerMove = React.useCallback(\n (args: PointerCaptorArgs) => {\n if (initialPointerPosition.current) {\n onDragStart &&\n onDragStart(\n initialPointerPosition.current,\n new Point(args.clientX, args.clientY)\n );\n initialPointerPosition.current = undefined;\n return;\n }\n onDrag && onDrag(new Point(args.clientX, args.clientY));\n },\n [onDragStart, onDrag]\n );\n const handlePointerUp = React.useCallback(() => {\n clickCount.current++;\n doubleClickTimer.current.start();\n initialPointerPosition.current = undefined;\n onDragEnd && onDragEnd();\n }, [onDragEnd]);\n const ref = usePointerCaptor<T>(\n handlePointerDown,\n handlePointerMove,\n handlePointerUp\n );\n return ref;\n}\n"]}
1
+ {"version":3,"file":"TabBar.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/TabBar.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 Widget\n */\n\nimport \"./TabBar.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { Timer } from \"@itwin/core-react\";\nimport { Point } from \"@itwin/core-react/internal\";\nimport type { UseDragWidgetArgs } from \"../base/DragManager.js\";\nimport { useDragWidget } from \"../base/DragManager.js\";\nimport { NineZoneDispatchContext } from \"../base/NineZone.js\";\nimport type {\n PointerCaptorArgs,\n PointerCaptorEvent,\n} from \"../base/usePointerCaptor.js\";\nimport { usePointerCaptor } from \"../base/usePointerCaptor.js\";\nimport { WidgetTabs } from \"./Tabs.js\";\nimport { WidgetIdContext } from \"./Widget.js\";\nimport { useDoubleClick } from \"../widget-panels/Grip.js\";\nimport { useFloatingWidgetId } from \"./FloatingWidget.js\";\nimport { useMaximizedWidgetTabBarHandle } from \"../../preview/enable-maximized-widget/useMaximizedWidget.js\";\nimport { WidgetActions } from \"./WidgetActions.js\";\nimport { ConfigurableUiContext } from \"../../configurableui/ConfigurableUiContent.js\";\n\n/** @internal */\nexport interface WidgetTabBarProps {\n separator?: boolean;\n}\n\n/** @internal */\nexport function WidgetTabBar(props: WidgetTabBarProps) {\n const dispatch = React.useContext(NineZoneDispatchContext);\n const id = React.useContext(WidgetIdContext);\n const { widgetActions } = React.useContext(ConfigurableUiContext);\n const floatingWidgetId = useFloatingWidgetId();\n assert(!!id);\n const widgetId = floatingWidgetId === undefined ? id : floatingWidgetId;\n const handleDoubleClick = React.useCallback(() => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_CLEAR_USER_SIZED\",\n id: floatingWidgetId,\n });\n }, [dispatch, floatingWidgetId]);\n const handleActionAreaClick = useDoubleClick(handleDoubleClick);\n\n const onDrag = React.useCallback<NonNullable<UseDragWidgetArgs[\"onDrag\"]>>(\n (dragBy) => {\n floatingWidgetId !== undefined &&\n dispatch({\n type: \"WIDGET_DRAG\",\n dragBy,\n floatingWidgetId,\n });\n },\n [dispatch, floatingWidgetId]\n );\n const onDragEnd = React.useCallback<\n NonNullable<UseDragWidgetArgs[\"onDragEnd\"]>\n >(\n (target) => {\n floatingWidgetId !== undefined && handleActionAreaClick();\n floatingWidgetId !== undefined &&\n dispatch({\n type: \"WIDGET_DRAG_END\",\n floatingWidgetId,\n target,\n });\n },\n [dispatch, floatingWidgetId, handleActionAreaClick]\n );\n const handleWidgetDragStart = useDragWidget({\n widgetId,\n onDrag,\n onDragEnd,\n });\n\n const containerRef = React.useRef<HTMLDivElement>(null);\n const handleDragStart = React.useCallback(\n (initialPointerPosition: Point, pointerPosition: Point) => {\n handleWidgetDragStart({\n initialPointerPosition,\n pointerPosition,\n });\n },\n [handleWidgetDragStart]\n );\n const handleTouchStart = React.useCallback(() => {\n floatingWidgetId &&\n dispatch({\n type: \"FLOATING_WIDGET_BRING_TO_FRONT\",\n id: floatingWidgetId,\n });\n }, [dispatch, floatingWidgetId]);\n const ref = useDrag(\n handleDragStart,\n undefined,\n undefined,\n handleTouchStart,\n handleDoubleClick\n );\n const maximizedWidgetHandle = useMaximizedWidgetTabBarHandle();\n const className = classnames(\n \"nz-widget-tabBar\",\n props.separator && \"nz-separator\"\n );\n const handleClassName = classnames(\"nz-handle\", maximizedWidgetHandle);\n return (\n <div ref={containerRef} className={className}>\n <div className={handleClassName} ref={ref} />\n <WidgetTabs />\n {widgetActions ?? <WidgetActions />}\n </div>\n );\n}\n\n/** Hook to control drag interactions.\n * Starts drag interaction after pointer moves or after timeout.\n * @internal\n */\nexport function useDrag<T extends HTMLElement>(\n onDragStart?: (initialPointerPosition: Point, pointerPosition: Point) => void,\n onDrag?: (position: Point) => void,\n onDragEnd?: () => void,\n onTouchStart?: () => void,\n onDoubleClick?: () => void\n) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const doubleClickTimer = React.useRef(new Timer(300));\n const clickCount = React.useRef(0);\n const initialPointerPosition = React.useRef<Point>();\n\n React.useEffect(() => {\n const handleExecute = () => {\n if (clickCount.current === 2) onDoubleClick && onDoubleClick();\n clickCount.current = 0;\n };\n const timer = doubleClickTimer.current;\n timer.setOnExecute(handleExecute);\n return () => {\n timer.setOnExecute(undefined);\n };\n }, [onDoubleClick]);\n\n const handlePointerDown = React.useCallback(\n (args: PointerCaptorArgs, e: PointerCaptorEvent) => {\n initialPointerPosition.current = new Point(args.clientX, args.clientY);\n e.type === \"touchstart\" && onTouchStart && onTouchStart();\n },\n [onTouchStart]\n );\n const handlePointerMove = React.useCallback(\n (args: PointerCaptorArgs) => {\n if (initialPointerPosition.current) {\n onDragStart &&\n onDragStart(\n initialPointerPosition.current,\n new Point(args.clientX, args.clientY)\n );\n initialPointerPosition.current = undefined;\n return;\n }\n onDrag && onDrag(new Point(args.clientX, args.clientY));\n },\n [onDragStart, onDrag]\n );\n const handlePointerUp = React.useCallback(() => {\n clickCount.current++;\n doubleClickTimer.current.start();\n initialPointerPosition.current = undefined;\n onDragEnd && onDragEnd();\n }, [onDragEnd]);\n const ref = usePointerCaptor<T>(\n handlePointerDown,\n handlePointerMove,\n handlePointerUp\n );\n return ref;\n}\n"]}
@@ -22,8 +22,7 @@ export interface ToolsAreaProps extends CommonProps, NoChildrenProps {
22
22
  /** Handler for mouse leave */
23
23
  onMouseLeave?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
24
24
  }
25
- /** ToolsArea widget is used in ToolsArea (top left) and Navigation (top right) zones of 9-Zone UI.
26
- * @note Should be placed in [[Zone]] component.
25
+ /** A component that renders toolbars in the top left corner of standard layout.
27
26
  * @internal
28
27
  */
29
28
  export declare class ToolsArea extends React.PureComponent<ToolsAreaProps> {
@@ -1 +1 @@
1
- {"version":3,"file":"ToolsArea.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/ToolsArea.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGtE;;GAEG;AAEH,MAAM,WAAW,cAAe,SAAQ,WAAW,EAAE,eAAe;IAClE;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,wCAAwC;IACxC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,8BAA8B;IAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1E,8BAA8B;IAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;CAC3E;AAED;;;GAGG;AACH,qBAAa,SAAU,SAAQ,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC;IAChD,MAAM;CAgCvB"}
1
+ {"version":3,"file":"ToolsArea.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/ToolsArea.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGtE;;GAEG;AAEH,MAAM,WAAW,cAAe,SAAQ,WAAW,EAAE,eAAe;IAClE;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,wCAAwC;IACxC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,8BAA8B;IAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1E,8BAA8B;IAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;CAC3E;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC;IAChD,MAAM;CAmCvB"}