@itwin/appui-react 4.10.0-dev.1 → 4.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js +2 -2
  3. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  4. package/lib/cjs/appui-react/accudraw/Calculator.js +9 -9
  5. package/lib/cjs/appui-react/accudraw/Calculator.js.map +1 -1
  6. package/lib/cjs/appui-react/content/ContentGroup.d.ts.map +1 -1
  7. package/lib/cjs/appui-react/content/ContentGroup.js +2 -2
  8. package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
  9. package/lib/cjs/appui-react/content/IModelViewport.d.ts.map +1 -1
  10. package/lib/cjs/appui-react/content/IModelViewport.js +2 -2
  11. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  12. package/lib/cjs/appui-react/feedback/ValidationTextbox.js +2 -2
  13. package/lib/cjs/appui-react/feedback/ValidationTextbox.js.map +1 -1
  14. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js +1 -1
  15. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  16. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  17. package/lib/cjs/appui-react/{layout/widget-panels/CenterContent.scss → layers.scss} +6 -2
  18. package/lib/cjs/appui-react/layout/StandardLayout.d.ts +24 -0
  19. package/lib/cjs/appui-react/layout/StandardLayout.d.ts.map +1 -0
  20. package/lib/cjs/appui-react/layout/StandardLayout.js +56 -0
  21. package/lib/cjs/appui-react/layout/StandardLayout.js.map +1 -0
  22. package/lib/cjs/appui-react/layout/StandardLayout.scss +94 -0
  23. package/lib/cjs/appui-react/layout/backstage/Backstage.js +1 -1
  24. package/lib/cjs/appui-react/layout/backstage/Backstage.js.map +1 -1
  25. package/lib/cjs/appui-react/layout/base/SafeAreaInsets.js +4 -4
  26. package/lib/cjs/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  27. package/lib/cjs/appui-react/layout/outline/PanelOutline.scss +1 -10
  28. package/lib/cjs/appui-react/layout/state/internal/PanelStateHelpers.d.ts.map +1 -1
  29. package/lib/cjs/appui-react/layout/state/internal/PanelStateHelpers.js +1 -0
  30. package/lib/cjs/appui-react/layout/state/internal/PanelStateHelpers.js.map +1 -1
  31. package/lib/cjs/appui-react/layout/state/internal/TabStateHelpers.d.ts.map +1 -1
  32. package/lib/cjs/appui-react/layout/state/internal/TabStateHelpers.js +5 -0
  33. package/lib/cjs/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
  34. package/lib/cjs/appui-react/layout/state/internal/ToolSettingsStateHelpers.d.ts.map +1 -1
  35. package/lib/cjs/appui-react/layout/state/internal/ToolSettingsStateHelpers.js +6 -0
  36. package/lib/cjs/appui-react/layout/state/internal/ToolSettingsStateHelpers.js.map +1 -1
  37. package/lib/cjs/appui-react/layout/state/internal/WidgetStateHelpers.d.ts.map +1 -1
  38. package/lib/cjs/appui-react/layout/state/internal/WidgetStateHelpers.js +2 -0
  39. package/lib/cjs/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
  40. package/lib/cjs/appui-react/layout/target/PanelTargets.scss +2 -0
  41. package/lib/cjs/appui-react/layout/tool-settings/Docked.d.ts +12 -6
  42. package/lib/cjs/appui-react/layout/tool-settings/Docked.d.ts.map +1 -1
  43. package/lib/cjs/appui-react/layout/tool-settings/Docked.js +52 -21
  44. package/lib/cjs/appui-react/layout/tool-settings/Docked.js.map +1 -1
  45. package/lib/cjs/appui-react/layout/tool-settings/Docked.scss +15 -23
  46. package/lib/cjs/appui-react/layout/tool-settings/Handle.d.ts.map +1 -1
  47. package/lib/cjs/appui-react/layout/tool-settings/Handle.js +3 -1
  48. package/lib/cjs/appui-react/layout/tool-settings/Handle.js.map +1 -1
  49. package/lib/cjs/appui-react/layout/tool-settings/Handle.scss +6 -12
  50. package/lib/cjs/appui-react/layout/tool-settings/Overflow.d.ts.map +1 -1
  51. package/lib/cjs/appui-react/layout/tool-settings/Overflow.js +4 -5
  52. package/lib/cjs/appui-react/layout/tool-settings/Overflow.js.map +1 -1
  53. package/lib/cjs/appui-react/layout/tool-settings/Overflow.scss +0 -15
  54. package/lib/cjs/appui-react/layout/tool-settings/Setting.scss +1 -12
  55. package/lib/cjs/appui-react/layout/widget/Buttons.d.ts +4 -4
  56. package/lib/cjs/appui-react/layout/widget/Buttons.d.ts.map +1 -1
  57. package/lib/cjs/appui-react/layout/widget/Buttons.js +8 -31
  58. package/lib/cjs/appui-react/layout/widget/Buttons.js.map +1 -1
  59. package/lib/cjs/appui-react/layout/widget/ContentContainer.d.ts.map +1 -1
  60. package/lib/cjs/appui-react/layout/widget/ContentContainer.js +2 -0
  61. package/lib/cjs/appui-react/layout/widget/ContentContainer.js.map +1 -1
  62. package/lib/cjs/appui-react/layout/widget/ContentManager.d.ts +1 -1
  63. package/lib/cjs/appui-react/layout/widget/ContentManager.d.ts.map +1 -1
  64. package/lib/cjs/appui-react/layout/widget/ContentManager.js +1 -1
  65. package/lib/cjs/appui-react/layout/widget/ContentManager.js.map +1 -1
  66. package/lib/cjs/appui-react/layout/widget/ContentRenderer.d.ts.map +1 -1
  67. package/lib/cjs/appui-react/layout/widget/ContentRenderer.js +6 -0
  68. package/lib/cjs/appui-react/layout/widget/ContentRenderer.js.map +1 -1
  69. package/lib/cjs/appui-react/layout/widget/Dock.d.ts +2 -0
  70. package/lib/cjs/appui-react/layout/widget/Dock.d.ts.map +1 -1
  71. package/lib/cjs/appui-react/layout/widget/Dock.js +10 -1
  72. package/lib/cjs/appui-react/layout/widget/Dock.js.map +1 -1
  73. package/lib/cjs/appui-react/layout/widget/FloatingWidget.d.ts.map +1 -1
  74. package/lib/cjs/appui-react/layout/widget/FloatingWidget.js +15 -17
  75. package/lib/cjs/appui-react/layout/widget/FloatingWidget.js.map +1 -1
  76. package/lib/cjs/appui-react/layout/widget/FloatingWidget.scss +92 -105
  77. package/lib/cjs/appui-react/layout/widget/PinToggle.d.ts +2 -0
  78. package/lib/cjs/appui-react/layout/widget/PinToggle.d.ts.map +1 -1
  79. package/lib/cjs/appui-react/layout/widget/PinToggle.js +10 -1
  80. package/lib/cjs/appui-react/layout/widget/PinToggle.js.map +1 -1
  81. package/lib/cjs/appui-react/layout/widget/SendBack.d.ts.map +1 -1
  82. package/lib/cjs/appui-react/layout/widget/SendBack.js +4 -5
  83. package/lib/cjs/appui-react/layout/widget/SendBack.js.map +1 -1
  84. package/lib/cjs/appui-react/layout/widget/Tab.d.ts.map +1 -1
  85. package/lib/cjs/appui-react/layout/widget/Tab.js +5 -10
  86. package/lib/cjs/appui-react/layout/widget/Tab.js.map +1 -1
  87. package/lib/cjs/appui-react/layout/widget/TabBar.d.ts.map +1 -1
  88. package/lib/cjs/appui-react/layout/widget/TabBar.js +4 -1
  89. package/lib/cjs/appui-react/layout/widget/TabBar.js.map +1 -1
  90. package/lib/cjs/appui-react/layout/widget/TabBar.scss +17 -19
  91. package/lib/cjs/appui-react/layout/widget/usePanelWidgetId.d.ts +8 -0
  92. package/lib/cjs/appui-react/layout/widget/usePanelWidgetId.d.ts.map +1 -0
  93. package/lib/cjs/appui-react/layout/widget/usePanelWidgetId.js +39 -0
  94. package/lib/cjs/appui-react/layout/widget/usePanelWidgetId.js.map +1 -0
  95. package/lib/cjs/appui-react/layout/widget-panels/Grip.d.ts +1 -1
  96. package/lib/cjs/appui-react/layout/widget-panels/Grip.d.ts.map +1 -1
  97. package/lib/cjs/appui-react/layout/widget-panels/Grip.js +4 -0
  98. package/lib/cjs/appui-react/layout/widget-panels/Grip.js.map +1 -1
  99. package/lib/cjs/appui-react/layout/widget-panels/Grip.scss +106 -104
  100. package/lib/cjs/appui-react/layout/widget-panels/Panel.d.ts +1 -1
  101. package/lib/cjs/appui-react/layout/widget-panels/Panel.d.ts.map +1 -1
  102. package/lib/cjs/appui-react/layout/widget-panels/Panel.js +10 -16
  103. package/lib/cjs/appui-react/layout/widget-panels/Panel.js.map +1 -1
  104. package/lib/cjs/appui-react/layout/widget-panels/Panel.scss +175 -243
  105. package/lib/cjs/appui-react/layout/widget-panels/PanelSections.d.ts +1 -0
  106. package/lib/cjs/appui-react/layout/widget-panels/PanelSections.d.ts.map +1 -1
  107. package/lib/cjs/appui-react/layout/widget-panels/PanelSections.js +35 -31
  108. package/lib/cjs/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
  109. package/lib/{esm/appui-react/layout/widget-panels/Panels.scss → cjs/appui-react/layout/widget-panels/PanelSections.scss} +1 -11
  110. package/lib/cjs/appui-react/layout/widget-panels/usePanelsAutoCollapse.d.ts +7 -0
  111. package/lib/cjs/appui-react/layout/widget-panels/usePanelsAutoCollapse.d.ts.map +1 -0
  112. package/lib/cjs/appui-react/layout/widget-panels/{AppContent.js → usePanelsAutoCollapse.js} +3 -26
  113. package/lib/cjs/appui-react/layout/widget-panels/usePanelsAutoCollapse.js.map +1 -0
  114. package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
  115. package/lib/cjs/appui-react/messages/MessageManager.js +0 -1
  116. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  117. package/lib/cjs/appui-react/messages/getToastCategory.d.ts +1 -1
  118. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -1
  119. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  120. package/lib/cjs/appui-react/popup/CardPopup.js +1 -1
  121. package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
  122. package/lib/cjs/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
  123. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +6 -4
  124. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  125. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js +1 -1
  126. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  127. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js +1 -1
  128. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  129. package/lib/cjs/appui-react/popup/ToolbarPopup.js +1 -1
  130. package/lib/cjs/appui-react/popup/ToolbarPopup.js.map +1 -1
  131. package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts +6 -1
  132. package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts.map +1 -1
  133. package/lib/cjs/appui-react/preview/PreviewFeatures.js +1 -0
  134. package/lib/cjs/appui-react/preview/PreviewFeatures.js.map +1 -1
  135. package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizeToggle.d.ts +9 -0
  136. package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizeToggle.d.ts.map +1 -0
  137. package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizeToggle.js +51 -0
  138. package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizeToggle.js.map +1 -0
  139. package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizedWidget.d.ts +18 -0
  140. package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizedWidget.d.ts.map +1 -0
  141. package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizedWidget.js +27 -0
  142. package/lib/cjs/appui-react/preview/enable-maximized-widget/MaximizedWidget.js.map +1 -0
  143. package/lib/cjs/appui-react/preview/enable-maximized-widget/useMaximizedWidget.d.ts +50 -0
  144. package/lib/cjs/appui-react/preview/enable-maximized-widget/useMaximizedWidget.d.ts.map +1 -0
  145. package/lib/cjs/appui-react/preview/enable-maximized-widget/useMaximizedWidget.js +115 -0
  146. package/lib/cjs/appui-react/preview/enable-maximized-widget/useMaximizedWidget.js.map +1 -0
  147. package/lib/cjs/appui-react/preview/enable-maximized-widget/useMaximizedWidget.scss +36 -0
  148. package/lib/cjs/appui-react/{layout/widget → preview/horizontal-panel-alignment}/PreviewHorizontalPanelAlign.d.ts +4 -6
  149. package/lib/cjs/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.d.ts.map +1 -0
  150. package/lib/cjs/appui-react/{layout/widget → preview/horizontal-panel-alignment}/PreviewHorizontalPanelAlign.js +17 -21
  151. package/lib/cjs/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -0
  152. package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.d.ts +19 -0
  153. package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.d.ts.map +1 -0
  154. package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js +30 -0
  155. package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js.map +1 -0
  156. package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.scss +49 -0
  157. package/lib/cjs/appui-react/preview/widget-action-dropdown/Button.d.ts +1 -1
  158. package/lib/cjs/appui-react/preview/widget-action-dropdown/Button.js +1 -1
  159. package/lib/cjs/appui-react/preview/widget-action-dropdown/Button.js.map +1 -1
  160. package/lib/cjs/appui-react/preview/widget-action-dropdown/MoreButton.d.ts +3 -2
  161. package/lib/cjs/appui-react/preview/widget-action-dropdown/MoreButton.d.ts.map +1 -1
  162. package/lib/cjs/appui-react/preview/widget-action-dropdown/MoreButton.js +5 -5
  163. package/lib/cjs/appui-react/preview/widget-action-dropdown/MoreButton.js.map +1 -1
  164. package/lib/cjs/appui-react/redux/SessionState.d.ts +2 -2
  165. package/lib/cjs/appui-react/redux/SessionState.d.ts.map +1 -1
  166. package/lib/cjs/appui-react/redux/SessionState.js.map +1 -1
  167. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js +1 -1
  168. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  169. package/lib/cjs/appui-react/statusbar/StatusBarItem.js.map +1 -1
  170. package/lib/cjs/appui-react/statusfields/ActivityCenter.d.ts.map +1 -1
  171. package/lib/cjs/appui-react/statusfields/ActivityCenter.js +1 -0
  172. package/lib/cjs/appui-react/statusfields/ActivityCenter.js.map +1 -1
  173. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.d.ts.map +1 -1
  174. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js +2 -1
  175. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  176. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  177. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js +3 -3
  178. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  179. package/lib/cjs/appui-react/uiprovider/DefaultDialogGridContainer.scss +0 -7
  180. package/lib/cjs/appui-react/utils/matchesWords.js +4 -4
  181. package/lib/cjs/appui-react/utils/matchesWords.js.map +1 -1
  182. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  183. package/lib/cjs/appui-react/widget-panels/Frontstage.js +13 -16
  184. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  185. package/lib/cjs/appui-react/widget-panels/Frontstage.scss +0 -23
  186. package/lib/cjs/appui-react/widget-panels/ToolSettings.scss +0 -6
  187. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +1 -1
  188. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  189. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  190. package/lib/cjs/appui-react.d.ts +1 -0
  191. package/lib/cjs/appui-react.d.ts.map +1 -1
  192. package/lib/cjs/appui-react.js +1 -0
  193. package/lib/cjs/appui-react.js.map +1 -1
  194. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js +2 -2
  195. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  196. package/lib/esm/appui-react/accudraw/Calculator.js +9 -9
  197. package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
  198. package/lib/esm/appui-react/content/ContentGroup.d.ts.map +1 -1
  199. package/lib/esm/appui-react/content/ContentGroup.js +2 -2
  200. package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
  201. package/lib/esm/appui-react/content/IModelViewport.d.ts.map +1 -1
  202. package/lib/esm/appui-react/content/IModelViewport.js +2 -2
  203. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  204. package/lib/esm/appui-react/feedback/ValidationTextbox.js +2 -2
  205. package/lib/esm/appui-react/feedback/ValidationTextbox.js.map +1 -1
  206. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js +1 -1
  207. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  208. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  209. package/lib/esm/appui-react/{layout/widget-panels/CenterContent.scss → layers.scss} +6 -2
  210. package/lib/esm/appui-react/layout/StandardLayout.d.ts +24 -0
  211. package/lib/esm/appui-react/layout/StandardLayout.d.ts.map +1 -0
  212. package/lib/esm/appui-react/layout/StandardLayout.js +52 -0
  213. package/lib/esm/appui-react/layout/StandardLayout.js.map +1 -0
  214. package/lib/esm/appui-react/layout/StandardLayout.scss +94 -0
  215. package/lib/esm/appui-react/layout/backstage/Backstage.js +1 -1
  216. package/lib/esm/appui-react/layout/backstage/Backstage.js.map +1 -1
  217. package/lib/esm/appui-react/layout/base/SafeAreaInsets.js +4 -4
  218. package/lib/esm/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  219. package/lib/esm/appui-react/layout/outline/PanelOutline.scss +1 -10
  220. package/lib/esm/appui-react/layout/state/internal/PanelStateHelpers.d.ts.map +1 -1
  221. package/lib/esm/appui-react/layout/state/internal/PanelStateHelpers.js +1 -0
  222. package/lib/esm/appui-react/layout/state/internal/PanelStateHelpers.js.map +1 -1
  223. package/lib/esm/appui-react/layout/state/internal/TabStateHelpers.d.ts.map +1 -1
  224. package/lib/esm/appui-react/layout/state/internal/TabStateHelpers.js +5 -0
  225. package/lib/esm/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
  226. package/lib/esm/appui-react/layout/state/internal/ToolSettingsStateHelpers.d.ts.map +1 -1
  227. package/lib/esm/appui-react/layout/state/internal/ToolSettingsStateHelpers.js +6 -0
  228. package/lib/esm/appui-react/layout/state/internal/ToolSettingsStateHelpers.js.map +1 -1
  229. package/lib/esm/appui-react/layout/state/internal/WidgetStateHelpers.d.ts.map +1 -1
  230. package/lib/esm/appui-react/layout/state/internal/WidgetStateHelpers.js +2 -0
  231. package/lib/esm/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
  232. package/lib/esm/appui-react/layout/target/PanelTargets.scss +2 -0
  233. package/lib/esm/appui-react/layout/tool-settings/Docked.d.ts +12 -6
  234. package/lib/esm/appui-react/layout/tool-settings/Docked.d.ts.map +1 -1
  235. package/lib/esm/appui-react/layout/tool-settings/Docked.js +53 -22
  236. package/lib/esm/appui-react/layout/tool-settings/Docked.js.map +1 -1
  237. package/lib/esm/appui-react/layout/tool-settings/Docked.scss +15 -23
  238. package/lib/esm/appui-react/layout/tool-settings/Handle.d.ts.map +1 -1
  239. package/lib/esm/appui-react/layout/tool-settings/Handle.js +3 -1
  240. package/lib/esm/appui-react/layout/tool-settings/Handle.js.map +1 -1
  241. package/lib/esm/appui-react/layout/tool-settings/Handle.scss +6 -12
  242. package/lib/esm/appui-react/layout/tool-settings/Overflow.d.ts.map +1 -1
  243. package/lib/esm/appui-react/layout/tool-settings/Overflow.js +4 -5
  244. package/lib/esm/appui-react/layout/tool-settings/Overflow.js.map +1 -1
  245. package/lib/esm/appui-react/layout/tool-settings/Overflow.scss +0 -15
  246. package/lib/esm/appui-react/layout/tool-settings/Setting.scss +1 -12
  247. package/lib/esm/appui-react/layout/widget/Buttons.d.ts +4 -4
  248. package/lib/esm/appui-react/layout/widget/Buttons.d.ts.map +1 -1
  249. package/lib/esm/appui-react/layout/widget/Buttons.js +8 -30
  250. package/lib/esm/appui-react/layout/widget/Buttons.js.map +1 -1
  251. package/lib/esm/appui-react/layout/widget/ContentContainer.d.ts.map +1 -1
  252. package/lib/esm/appui-react/layout/widget/ContentContainer.js +2 -0
  253. package/lib/esm/appui-react/layout/widget/ContentContainer.js.map +1 -1
  254. package/lib/esm/appui-react/layout/widget/ContentManager.d.ts +1 -1
  255. package/lib/esm/appui-react/layout/widget/ContentManager.d.ts.map +1 -1
  256. package/lib/esm/appui-react/layout/widget/ContentManager.js +1 -1
  257. package/lib/esm/appui-react/layout/widget/ContentManager.js.map +1 -1
  258. package/lib/esm/appui-react/layout/widget/ContentRenderer.d.ts.map +1 -1
  259. package/lib/esm/appui-react/layout/widget/ContentRenderer.js +6 -0
  260. package/lib/esm/appui-react/layout/widget/ContentRenderer.js.map +1 -1
  261. package/lib/esm/appui-react/layout/widget/Dock.d.ts +2 -0
  262. package/lib/esm/appui-react/layout/widget/Dock.d.ts.map +1 -1
  263. package/lib/esm/appui-react/layout/widget/Dock.js +8 -0
  264. package/lib/esm/appui-react/layout/widget/Dock.js.map +1 -1
  265. package/lib/esm/appui-react/layout/widget/FloatingWidget.d.ts.map +1 -1
  266. package/lib/esm/appui-react/layout/widget/FloatingWidget.js +15 -17
  267. package/lib/esm/appui-react/layout/widget/FloatingWidget.js.map +1 -1
  268. package/lib/esm/appui-react/layout/widget/FloatingWidget.scss +92 -105
  269. package/lib/esm/appui-react/layout/widget/PinToggle.d.ts +2 -0
  270. package/lib/esm/appui-react/layout/widget/PinToggle.d.ts.map +1 -1
  271. package/lib/esm/appui-react/layout/widget/PinToggle.js +8 -0
  272. package/lib/esm/appui-react/layout/widget/PinToggle.js.map +1 -1
  273. package/lib/esm/appui-react/layout/widget/SendBack.d.ts.map +1 -1
  274. package/lib/esm/appui-react/layout/widget/SendBack.js +4 -5
  275. package/lib/esm/appui-react/layout/widget/SendBack.js.map +1 -1
  276. package/lib/esm/appui-react/layout/widget/Tab.d.ts.map +1 -1
  277. package/lib/esm/appui-react/layout/widget/Tab.js +5 -10
  278. package/lib/esm/appui-react/layout/widget/Tab.js.map +1 -1
  279. package/lib/esm/appui-react/layout/widget/TabBar.d.ts.map +1 -1
  280. package/lib/esm/appui-react/layout/widget/TabBar.js +4 -1
  281. package/lib/esm/appui-react/layout/widget/TabBar.js.map +1 -1
  282. package/lib/esm/appui-react/layout/widget/TabBar.scss +17 -19
  283. package/lib/esm/appui-react/layout/widget/usePanelWidgetId.d.ts +8 -0
  284. package/lib/esm/appui-react/layout/widget/usePanelWidgetId.d.ts.map +1 -0
  285. package/lib/esm/appui-react/layout/widget/usePanelWidgetId.js +34 -0
  286. package/lib/esm/appui-react/layout/widget/usePanelWidgetId.js.map +1 -0
  287. package/lib/esm/appui-react/layout/widget-panels/Grip.d.ts +1 -1
  288. package/lib/esm/appui-react/layout/widget-panels/Grip.d.ts.map +1 -1
  289. package/lib/esm/appui-react/layout/widget-panels/Grip.js +4 -0
  290. package/lib/esm/appui-react/layout/widget-panels/Grip.js.map +1 -1
  291. package/lib/esm/appui-react/layout/widget-panels/Grip.scss +106 -104
  292. package/lib/esm/appui-react/layout/widget-panels/Panel.d.ts +1 -1
  293. package/lib/esm/appui-react/layout/widget-panels/Panel.d.ts.map +1 -1
  294. package/lib/esm/appui-react/layout/widget-panels/Panel.js +10 -16
  295. package/lib/esm/appui-react/layout/widget-panels/Panel.js.map +1 -1
  296. package/lib/esm/appui-react/layout/widget-panels/Panel.scss +175 -243
  297. package/lib/esm/appui-react/layout/widget-panels/PanelSections.d.ts +1 -0
  298. package/lib/esm/appui-react/layout/widget-panels/PanelSections.d.ts.map +1 -1
  299. package/lib/esm/appui-react/layout/widget-panels/PanelSections.js +34 -30
  300. package/lib/esm/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
  301. package/lib/{cjs/appui-react/layout/widget-panels/Panels.scss → esm/appui-react/layout/widget-panels/PanelSections.scss} +1 -11
  302. package/lib/esm/appui-react/layout/widget-panels/usePanelsAutoCollapse.d.ts +7 -0
  303. package/lib/esm/appui-react/layout/widget-panels/usePanelsAutoCollapse.d.ts.map +1 -0
  304. package/lib/esm/appui-react/layout/widget-panels/{AppContent.js → usePanelsAutoCollapse.js} +3 -25
  305. package/lib/esm/appui-react/layout/widget-panels/usePanelsAutoCollapse.js.map +1 -0
  306. package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
  307. package/lib/esm/appui-react/messages/MessageManager.js +0 -1
  308. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  309. package/lib/esm/appui-react/messages/getToastCategory.d.ts +1 -1
  310. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -1
  311. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  312. package/lib/esm/appui-react/popup/CardPopup.js +1 -1
  313. package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
  314. package/lib/esm/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
  315. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +6 -4
  316. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  317. package/lib/esm/appui-react/popup/KeyinPalettePopup.js +1 -1
  318. package/lib/esm/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  319. package/lib/esm/appui-react/popup/ToolSettingsPopup.js +1 -1
  320. package/lib/esm/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  321. package/lib/esm/appui-react/popup/ToolbarPopup.js +1 -1
  322. package/lib/esm/appui-react/popup/ToolbarPopup.js.map +1 -1
  323. package/lib/esm/appui-react/preview/PreviewFeatures.d.ts +6 -1
  324. package/lib/esm/appui-react/preview/PreviewFeatures.d.ts.map +1 -1
  325. package/lib/esm/appui-react/preview/PreviewFeatures.js +1 -0
  326. package/lib/esm/appui-react/preview/PreviewFeatures.js.map +1 -1
  327. package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizeToggle.d.ts +9 -0
  328. package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizeToggle.d.ts.map +1 -0
  329. package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizeToggle.js +46 -0
  330. package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizeToggle.js.map +1 -0
  331. package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizedWidget.d.ts +18 -0
  332. package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizedWidget.d.ts.map +1 -0
  333. package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizedWidget.js +23 -0
  334. package/lib/esm/appui-react/preview/enable-maximized-widget/MaximizedWidget.js.map +1 -0
  335. package/lib/esm/appui-react/preview/enable-maximized-widget/useMaximizedWidget.d.ts +50 -0
  336. package/lib/esm/appui-react/preview/enable-maximized-widget/useMaximizedWidget.d.ts.map +1 -0
  337. package/lib/esm/appui-react/preview/enable-maximized-widget/useMaximizedWidget.js +106 -0
  338. package/lib/esm/appui-react/preview/enable-maximized-widget/useMaximizedWidget.js.map +1 -0
  339. package/lib/esm/appui-react/preview/enable-maximized-widget/useMaximizedWidget.scss +36 -0
  340. package/lib/esm/appui-react/{layout/widget → preview/horizontal-panel-alignment}/PreviewHorizontalPanelAlign.d.ts +4 -6
  341. package/lib/esm/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.d.ts.map +1 -0
  342. package/lib/esm/appui-react/{layout/widget → preview/horizontal-panel-alignment}/PreviewHorizontalPanelAlign.js +15 -18
  343. package/lib/esm/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -0
  344. package/lib/esm/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.d.ts +19 -0
  345. package/lib/esm/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.d.ts.map +1 -0
  346. package/lib/esm/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js +26 -0
  347. package/lib/esm/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.js.map +1 -0
  348. package/lib/esm/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.scss +49 -0
  349. package/lib/esm/appui-react/preview/widget-action-dropdown/Button.d.ts +1 -1
  350. package/lib/esm/appui-react/preview/widget-action-dropdown/Button.js +1 -1
  351. package/lib/esm/appui-react/preview/widget-action-dropdown/Button.js.map +1 -1
  352. package/lib/esm/appui-react/preview/widget-action-dropdown/MoreButton.d.ts +3 -2
  353. package/lib/esm/appui-react/preview/widget-action-dropdown/MoreButton.d.ts.map +1 -1
  354. package/lib/esm/appui-react/preview/widget-action-dropdown/MoreButton.js +5 -5
  355. package/lib/esm/appui-react/preview/widget-action-dropdown/MoreButton.js.map +1 -1
  356. package/lib/esm/appui-react/redux/SessionState.d.ts +2 -2
  357. package/lib/esm/appui-react/redux/SessionState.d.ts.map +1 -1
  358. package/lib/esm/appui-react/redux/SessionState.js.map +1 -1
  359. package/lib/esm/appui-react/statusbar/StatusBarComposer.js +1 -1
  360. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  361. package/lib/esm/appui-react/statusbar/StatusBarItem.js.map +1 -1
  362. package/lib/esm/appui-react/statusfields/ActivityCenter.d.ts.map +1 -1
  363. package/lib/esm/appui-react/statusfields/ActivityCenter.js +1 -0
  364. package/lib/esm/appui-react/statusfields/ActivityCenter.js.map +1 -1
  365. package/lib/esm/appui-react/tools/FrameworkToolAdmin.d.ts.map +1 -1
  366. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js +2 -1
  367. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  368. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  369. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js +3 -3
  370. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  371. package/lib/esm/appui-react/uiprovider/DefaultDialogGridContainer.scss +0 -7
  372. package/lib/esm/appui-react/utils/matchesWords.js +4 -4
  373. package/lib/esm/appui-react/utils/matchesWords.js.map +1 -1
  374. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  375. package/lib/esm/appui-react/widget-panels/Frontstage.js +15 -18
  376. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  377. package/lib/esm/appui-react/widget-panels/Frontstage.scss +0 -23
  378. package/lib/esm/appui-react/widget-panels/ToolSettings.scss +0 -6
  379. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +1 -1
  380. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  381. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  382. package/lib/esm/appui-react.d.ts +1 -0
  383. package/lib/esm/appui-react.d.ts.map +1 -1
  384. package/lib/esm/appui-react.js +1 -0
  385. package/lib/esm/appui-react.js.map +1 -1
  386. package/lib/public/locales/en/UiFramework.json +1 -1
  387. package/package.json +19 -19
  388. package/lib/cjs/appui-react/layout/widget/PreviewHorizontalPanelAlign.d.ts.map +0 -1
  389. package/lib/cjs/appui-react/layout/widget/PreviewHorizontalPanelAlign.js.map +0 -1
  390. package/lib/cjs/appui-react/layout/widget/PreviewMaximizeToggle.d.ts +0 -30
  391. package/lib/cjs/appui-react/layout/widget/PreviewMaximizeToggle.d.ts.map +0 -1
  392. package/lib/cjs/appui-react/layout/widget/PreviewMaximizeToggle.js +0 -65
  393. package/lib/cjs/appui-react/layout/widget/PreviewMaximizeToggle.js.map +0 -1
  394. package/lib/cjs/appui-react/layout/widget-panels/AppContent.d.ts +0 -11
  395. package/lib/cjs/appui-react/layout/widget-panels/AppContent.d.ts.map +0 -1
  396. package/lib/cjs/appui-react/layout/widget-panels/AppContent.js.map +0 -1
  397. package/lib/cjs/appui-react/layout/widget-panels/CenterContent.d.ts +0 -10
  398. package/lib/cjs/appui-react/layout/widget-panels/CenterContent.d.ts.map +0 -1
  399. package/lib/cjs/appui-react/layout/widget-panels/CenterContent.js +0 -23
  400. package/lib/cjs/appui-react/layout/widget-panels/CenterContent.js.map +0 -1
  401. package/lib/cjs/appui-react/layout/widget-panels/Content.d.ts +0 -21
  402. package/lib/cjs/appui-react/layout/widget-panels/Content.d.ts.map +0 -1
  403. package/lib/cjs/appui-react/layout/widget-panels/Content.js +0 -21
  404. package/lib/cjs/appui-react/layout/widget-panels/Content.js.map +0 -1
  405. package/lib/cjs/appui-react/layout/widget-panels/Content.scss +0 -37
  406. package/lib/cjs/appui-react/layout/widget-panels/Panels.d.ts +0 -24
  407. package/lib/cjs/appui-react/layout/widget-panels/Panels.d.ts.map +0 -1
  408. package/lib/cjs/appui-react/layout/widget-panels/Panels.js +0 -48
  409. package/lib/cjs/appui-react/layout/widget-panels/Panels.js.map +0 -1
  410. package/lib/esm/appui-react/layout/widget/PreviewHorizontalPanelAlign.d.ts.map +0 -1
  411. package/lib/esm/appui-react/layout/widget/PreviewHorizontalPanelAlign.js.map +0 -1
  412. package/lib/esm/appui-react/layout/widget/PreviewMaximizeToggle.d.ts +0 -30
  413. package/lib/esm/appui-react/layout/widget/PreviewMaximizeToggle.d.ts.map +0 -1
  414. package/lib/esm/appui-react/layout/widget/PreviewMaximizeToggle.js +0 -58
  415. package/lib/esm/appui-react/layout/widget/PreviewMaximizeToggle.js.map +0 -1
  416. package/lib/esm/appui-react/layout/widget-panels/AppContent.d.ts +0 -11
  417. package/lib/esm/appui-react/layout/widget-panels/AppContent.d.ts.map +0 -1
  418. package/lib/esm/appui-react/layout/widget-panels/AppContent.js.map +0 -1
  419. package/lib/esm/appui-react/layout/widget-panels/CenterContent.d.ts +0 -10
  420. package/lib/esm/appui-react/layout/widget-panels/CenterContent.d.ts.map +0 -1
  421. package/lib/esm/appui-react/layout/widget-panels/CenterContent.js +0 -19
  422. package/lib/esm/appui-react/layout/widget-panels/CenterContent.js.map +0 -1
  423. package/lib/esm/appui-react/layout/widget-panels/Content.d.ts +0 -21
  424. package/lib/esm/appui-react/layout/widget-panels/Content.d.ts.map +0 -1
  425. package/lib/esm/appui-react/layout/widget-panels/Content.js +0 -18
  426. package/lib/esm/appui-react/layout/widget-panels/Content.js.map +0 -1
  427. package/lib/esm/appui-react/layout/widget-panels/Content.scss +0 -37
  428. package/lib/esm/appui-react/layout/widget-panels/Panels.d.ts +0 -24
  429. package/lib/esm/appui-react/layout/widget-panels/Panels.d.ts.map +0 -1
  430. package/lib/esm/appui-react/layout/widget-panels/Panels.js +0 -44
  431. package/lib/esm/appui-react/layout/widget-panels/Panels.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TabStateHelpers.js","sourceRoot":"","sources":["../../../../../../src/appui-react/layout/state/internal/TabStateHelpers.ts"],"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 produce, { castDraft } from \"immer\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport type { NineZoneState } from \"../NineZoneState\";\nimport type { DraggedTabState, TabState } from \"../TabState\";\nimport { category } from \"./NineZoneStateHelpers\";\nimport type { SavedTabState, TabHomeState } from \"../SavedTabState\";\nimport type { WritableDraft } from \"immer/dist/internal\";\nimport { getTabLocation } from \"../TabLocation\";\nimport {\n addFloatingWidget,\n assertWidgetState,\n getWidgetState,\n removeWidget,\n setWidgetActiveTabId,\n updateWidgetState,\n} from \"./WidgetStateHelpers\";\nimport type { WidgetState } from \"../WidgetState\";\nimport { isFloatingWidgetRestoreState } from \"../WidgetRestoreState\";\nimport { Rectangle } from \"@itwin/core-react\";\nimport { getUniqueId } from \"../../base/NineZone\";\nimport { insertPanelWidget } from \"./PanelStateHelpers\";\n\n/** @internal */\nexport function createTabState(\n id: TabState[\"id\"],\n args?: Partial<TabState>\n): TabState {\n return {\n label: \"\",\n ...args,\n id,\n unloaded: false,\n };\n}\n\n/** @internal */\nexport function createDraggedTabState(\n tabId: DraggedTabState[\"tabId\"],\n args?: Partial<DraggedTabState>\n): DraggedTabState {\n return {\n home: {\n side: \"left\",\n widgetId: \"\",\n widgetIndex: 0,\n },\n position: { x: 0, y: 0 },\n ...args,\n tabId,\n };\n}\n\n/** @internal */\nexport function updateTabState(\n state: NineZoneState,\n id: TabState[\"id\"],\n update: (draft: WritableDraft<TabState>) => void\n) {\n // eslint-disable-next-line deprecation/deprecation\n if (!(id in state.tabs)) throw new UiError(category, \"Tab does not exist\");\n\n return produce(state, (draft) => {\n const tab = draft.tabs[id];\n update(tab);\n });\n}\n\n/** @internal */\nexport function updateSavedTabState(\n state: NineZoneState,\n id: TabState[\"id\"],\n update: (draft: WritableDraft<SavedTabState>) => void\n) {\n return produce(state, (draft) => {\n const allIds = draft.savedTabs.allIds;\n const byId = draft.savedTabs.byId;\n let tab = byId[id];\n if (!tab) {\n allIds.push(id);\n tab = byId[id] = { id };\n } else {\n const index = allIds.indexOf(id);\n allIds.splice(index, 1);\n allIds.push(id);\n }\n\n update(tab);\n });\n}\n\n/** Adds a new `tab`.\n * @internal\n */\nexport function addTab(\n state: NineZoneState,\n id: TabState[\"id\"],\n tabArgs?: Partial<TabState>\n): NineZoneState {\n if (id in state.tabs) throw new UiError(category, \"Tab already exists\");\n const tab = {\n ...createTabState(id),\n ...tabArgs,\n };\n return produce(state, (stateDraft) => {\n stateDraft.tabs[id] = castDraft(tab);\n });\n}\n\n/** Adds an existing `tab` to a specified `widget`.\n * @internal\n */\nexport function addTabToWidget(\n state: NineZoneState,\n tabId: TabState[\"id\"],\n widgetId: WidgetState[\"id\"]\n): NineZoneState {\n return insertTabToWidget(state, tabId, widgetId, Infinity);\n}\n\n/** Inserts an existing `tab` to a specified `widget` at a specified `tabIndex`.\n * @internal\n */\nexport function insertTabToWidget(\n state: NineZoneState,\n tabId: TabState[\"id\"],\n widgetId: WidgetState[\"id\"],\n tabIndex: number\n): NineZoneState {\n if (!(tabId in state.tabs))\n throw new UiError(category, \"Tab does not exist\", undefined, () => ({\n tabId,\n }));\n assertWidgetState(state, widgetId);\n const location = getTabLocation(state, tabId);\n if (location)\n throw new UiError(\n category,\n \"Tab is already in a widget\",\n undefined,\n () => ({ tabId, widgetId: location.widgetId })\n );\n\n return produce(state, (draft) => {\n const widget = getWidgetState(draft, widgetId);\n widget.tabs.splice(tabIndex, 0, tabId);\n });\n}\n\n/** Removes tab from the UI, but keeps the tab state.\n * @internal\n */\nexport function removeTabFromWidget(\n state: NineZoneState,\n tabId: TabState[\"id\"]\n): NineZoneState {\n const location = getTabLocation(state, tabId);\n if (!location) return state;\n\n const widgetId = location.widgetId;\n const widget = getWidgetState(state, widgetId);\n const tabs = [...widget.tabs];\n const tabIndex = tabs.indexOf(tabId);\n tabs.splice(tabIndex, 1);\n\n if (tabs.length === 0) {\n return removeWidget(state, widgetId);\n }\n\n if (tabId === widget.activeTabId) {\n state = setWidgetActiveTabId(state, widget.id, tabs[0]);\n }\n\n return updateWidgetState(state, widgetId, {\n tabs,\n });\n}\n\n/** Removes tab from the UI and deletes the tab state.\n * @internal\n */\nexport function removeTab(\n state: NineZoneState,\n tabId: TabState[\"id\"]\n): NineZoneState {\n if (!(tabId in state.tabs)) throw new UiError(category, \"Tab does not exist\");\n\n state = removeTabFromWidget(state, tabId);\n return produce(state, (draft) => {\n delete draft.tabs[tabId];\n\n if (draft.toolSettings?.tabId === tabId) {\n draft.toolSettings = undefined;\n }\n });\n}\n\nconst defaultHomeState: TabHomeState = {\n side: \"left\",\n widgetId: \"\",\n widgetIndex: 0,\n tabIndex: 0,\n};\n\n/** Adds removed tab to the UI.\n * @internal\n */\nexport function addRemovedTab(\n state: NineZoneState,\n tabId: TabState[\"id\"]\n): NineZoneState {\n if (!(tabId in state.tabs))\n throw new UiError(category, \"Tab does not exist\", undefined, () => ({\n tabId,\n }));\n\n const savedTab = state.savedTabs.byId[tabId];\n const home = savedTab?.home || defaultHomeState;\n const { tabIndex, widgetId } = home;\n\n // Add to an existing widget (by widget id).\n if (widgetId in state.widgets) {\n return insertTabToWidget(state, tabId, widgetId, tabIndex);\n }\n\n // Add to a floating widget.\n if (isFloatingWidgetRestoreState(home)) {\n // Add to a new floating widget.\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.create(home.floatingWidget.bounds).containIn(\n nzBounds\n );\n return addFloatingWidget(state, widgetId, [tabId], {\n ...home.floatingWidget,\n bounds: bounds.toProps(),\n });\n }\n\n // Add to a panel section.\n const panel = state.panels[home.side];\n\n // Add to existing panel section.\n if (panel.widgets.length >= panel.maxWidgetCount) {\n const sectionIndex = Math.min(panel.maxWidgetCount - 1, home.widgetIndex);\n const sectionId = panel.widgets[sectionIndex];\n return insertTabToWidget(state, tabId, sectionId, home.tabIndex);\n }\n\n // Create a new panel section.\n const newSectionId = getUniqueId();\n return insertPanelWidget(\n state,\n panel.side,\n newSectionId,\n [tabId],\n home.widgetIndex\n );\n}\n"]}
1
+ {"version":3,"file":"TabStateHelpers.js","sourceRoot":"","sources":["../../../../../../src/appui-react/layout/state/internal/TabStateHelpers.ts"],"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 produce, { castDraft } from \"immer\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport type { NineZoneState } from \"../NineZoneState\";\nimport type { DraggedTabState, TabState } from \"../TabState\";\nimport { category } from \"./NineZoneStateHelpers\";\nimport type { SavedTabState, TabHomeState } from \"../SavedTabState\";\nimport type { WritableDraft } from \"immer/dist/internal\";\nimport { getTabLocation } from \"../TabLocation\";\nimport {\n addFloatingWidget,\n assertWidgetState,\n getWidgetState,\n removeWidget,\n setWidgetActiveTabId,\n updateWidgetState,\n} from \"./WidgetStateHelpers\";\nimport type { WidgetState } from \"../WidgetState\";\nimport { isFloatingWidgetRestoreState } from \"../WidgetRestoreState\";\nimport { Rectangle } from \"@itwin/core-react\";\nimport { getUniqueId } from \"../../base/NineZone\";\nimport { insertPanelWidget } from \"./PanelStateHelpers\";\n\n/** @internal */\nexport function createTabState(\n id: TabState[\"id\"],\n args?: Partial<TabState>\n): TabState {\n return {\n label: \"\",\n ...args,\n id,\n unloaded: false,\n };\n}\n\n/** @internal */\nexport function createDraggedTabState(\n tabId: DraggedTabState[\"tabId\"],\n args?: Partial<DraggedTabState>\n): DraggedTabState {\n return {\n home: {\n side: \"left\",\n widgetId: \"\",\n widgetIndex: 0,\n },\n position: { x: 0, y: 0 },\n ...args,\n tabId,\n };\n}\n\n/** @internal */\nexport function updateTabState(\n state: NineZoneState,\n id: TabState[\"id\"],\n update: (draft: WritableDraft<TabState>) => void\n) {\n // eslint-disable-next-line deprecation/deprecation\n if (!(id in state.tabs)) throw new UiError(category, \"Tab does not exist\");\n\n return produce(state, (draft) => {\n const tab = draft.tabs[id];\n update(tab);\n });\n}\n\n/** @internal */\nexport function updateSavedTabState(\n state: NineZoneState,\n id: TabState[\"id\"],\n update: (draft: WritableDraft<SavedTabState>) => void\n) {\n return produce(state, (draft) => {\n const allIds = draft.savedTabs.allIds;\n const byId = draft.savedTabs.byId;\n let tab = byId[id];\n if (!tab) {\n allIds.push(id);\n tab = byId[id] = { id };\n } else {\n const index = allIds.indexOf(id);\n allIds.splice(index, 1);\n allIds.push(id);\n }\n\n update(tab);\n });\n}\n\n/** Adds a new `tab`.\n * @internal\n */\nexport function addTab(\n state: NineZoneState,\n id: TabState[\"id\"],\n tabArgs?: Partial<TabState>\n): NineZoneState {\n // eslint-disable-next-line deprecation/deprecation\n if (id in state.tabs) throw new UiError(category, \"Tab already exists\");\n const tab = {\n ...createTabState(id),\n ...tabArgs,\n };\n return produce(state, (stateDraft) => {\n stateDraft.tabs[id] = castDraft(tab);\n });\n}\n\n/** Adds an existing `tab` to a specified `widget`.\n * @internal\n */\nexport function addTabToWidget(\n state: NineZoneState,\n tabId: TabState[\"id\"],\n widgetId: WidgetState[\"id\"]\n): NineZoneState {\n return insertTabToWidget(state, tabId, widgetId, Infinity);\n}\n\n/** Inserts an existing `tab` to a specified `widget` at a specified `tabIndex`.\n * @internal\n */\nexport function insertTabToWidget(\n state: NineZoneState,\n tabId: TabState[\"id\"],\n widgetId: WidgetState[\"id\"],\n tabIndex: number\n): NineZoneState {\n if (!(tabId in state.tabs))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Tab does not exist\", undefined, () => ({\n tabId,\n }));\n assertWidgetState(state, widgetId);\n const location = getTabLocation(state, tabId);\n if (location)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(\n category,\n \"Tab is already in a widget\",\n undefined,\n () => ({ tabId, widgetId: location.widgetId })\n );\n\n return produce(state, (draft) => {\n const widget = getWidgetState(draft, widgetId);\n widget.tabs.splice(tabIndex, 0, tabId);\n });\n}\n\n/** Removes tab from the UI, but keeps the tab state.\n * @internal\n */\nexport function removeTabFromWidget(\n state: NineZoneState,\n tabId: TabState[\"id\"]\n): NineZoneState {\n const location = getTabLocation(state, tabId);\n if (!location) return state;\n\n const widgetId = location.widgetId;\n const widget = getWidgetState(state, widgetId);\n const tabs = [...widget.tabs];\n const tabIndex = tabs.indexOf(tabId);\n tabs.splice(tabIndex, 1);\n\n if (tabs.length === 0) {\n return removeWidget(state, widgetId);\n }\n\n if (tabId === widget.activeTabId) {\n state = setWidgetActiveTabId(state, widget.id, tabs[0]);\n }\n\n return updateWidgetState(state, widgetId, {\n tabs,\n });\n}\n\n/** Removes tab from the UI and deletes the tab state.\n * @internal\n */\nexport function removeTab(\n state: NineZoneState,\n tabId: TabState[\"id\"]\n): NineZoneState {\n // eslint-disable-next-line deprecation/deprecation\n if (!(tabId in state.tabs)) throw new UiError(category, \"Tab does not exist\");\n\n state = removeTabFromWidget(state, tabId);\n return produce(state, (draft) => {\n delete draft.tabs[tabId];\n\n if (draft.toolSettings?.tabId === tabId) {\n draft.toolSettings = undefined;\n }\n });\n}\n\nconst defaultHomeState: TabHomeState = {\n side: \"left\",\n widgetId: \"\",\n widgetIndex: 0,\n tabIndex: 0,\n};\n\n/** Adds removed tab to the UI.\n * @internal\n */\nexport function addRemovedTab(\n state: NineZoneState,\n tabId: TabState[\"id\"]\n): NineZoneState {\n if (!(tabId in state.tabs))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Tab does not exist\", undefined, () => ({\n tabId,\n }));\n\n const savedTab = state.savedTabs.byId[tabId];\n const home = savedTab?.home || defaultHomeState;\n const { tabIndex, widgetId } = home;\n\n // Add to an existing widget (by widget id).\n if (widgetId in state.widgets) {\n return insertTabToWidget(state, tabId, widgetId, tabIndex);\n }\n\n // Add to a floating widget.\n if (isFloatingWidgetRestoreState(home)) {\n // Add to a new floating widget.\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.create(home.floatingWidget.bounds).containIn(\n nzBounds\n );\n return addFloatingWidget(state, widgetId, [tabId], {\n ...home.floatingWidget,\n bounds: bounds.toProps(),\n });\n }\n\n // Add to a panel section.\n const panel = state.panels[home.side];\n\n // Add to existing panel section.\n if (panel.widgets.length >= panel.maxWidgetCount) {\n const sectionIndex = Math.min(panel.maxWidgetCount - 1, home.widgetIndex);\n const sectionId = panel.widgets[sectionIndex];\n return insertTabToWidget(state, tabId, sectionId, home.tabIndex);\n }\n\n // Create a new panel section.\n const newSectionId = getUniqueId();\n return insertPanelWidget(\n state,\n panel.side,\n newSectionId,\n [tabId],\n home.widgetIndex\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolSettingsStateHelpers.d.ts","sourceRoot":"","sources":["../../../../../../src/appui-react/layout/state/internal/ToolSettingsStateHelpers.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EACrB,MAAM,UAAQ,GACb,aAAa,CAuBf;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GACpB,aAAa,CAmBf"}
1
+ {"version":3,"file":"ToolSettingsStateHelpers.d.ts","sourceRoot":"","sources":["../../../../../../src/appui-react/layout/state/internal/ToolSettingsStateHelpers.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EACrB,MAAM,UAAQ,GACb,aAAa,CA0Bf;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GACpB,aAAa,CAsBf"}
@@ -14,13 +14,16 @@ import { getTabLocation } from "../TabLocation";
14
14
  */
15
15
  export function addDockedToolSettings(state, tabId, hidden = false) {
16
16
  if (state.toolSettings)
17
+ // eslint-disable-next-line deprecation/deprecation
17
18
  throw new UiError(category, "Tool settings already exist");
18
19
  if (!(tabId in state.tabs))
20
+ // eslint-disable-next-line deprecation/deprecation
19
21
  throw new UiError(category, "Tab does not exist", undefined, () => ({
20
22
  tabId,
21
23
  }));
22
24
  const location = getTabLocation(state, tabId);
23
25
  if (location)
26
+ // eslint-disable-next-line deprecation/deprecation
24
27
  throw new UiError(category, "Tab is already in a widget", undefined, () => ({ tabId, widgetId: location.widgetId }));
25
28
  return produce(state, (stateDraft) => {
26
29
  stateDraft.toolSettings = {
@@ -35,13 +38,16 @@ export function addDockedToolSettings(state, tabId, hidden = false) {
35
38
  */
36
39
  export function addWidgetToolSettings(state, tabId) {
37
40
  if (state.toolSettings)
41
+ // eslint-disable-next-line deprecation/deprecation
38
42
  throw new UiError(category, "Tool settings already exist");
39
43
  if (!(tabId in state.tabs))
44
+ // eslint-disable-next-line deprecation/deprecation
40
45
  throw new UiError(category, "Tab does not exist", undefined, () => ({
41
46
  tabId,
42
47
  }));
43
48
  const location = getTabLocation(state, tabId);
44
49
  if (!location)
50
+ // eslint-disable-next-line deprecation/deprecation
45
51
  throw new UiError(category, "Tab is not in a widget", undefined, () => ({
46
52
  tabId,
47
53
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"ToolSettingsStateHelpers.js","sourceRoot":"","sources":["../../../../../../src/appui-react/layout/state/internal/ToolSettingsStateHelpers.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,OAAO,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,KAAqB,EACrB,MAAM,GAAG,KAAK;IAEd,IAAI,KAAK,CAAC,YAAY;QACpB,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;IAC7D,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;QACxB,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YAClE,KAAK;SACN,CAAC,CAAC,CAAC;IACN,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,QAAQ;QACV,MAAM,IAAI,OAAO,CACf,QAAQ,EACR,4BAA4B,EAC5B,SAAS,EACT,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAC/C,CAAC;IAEJ,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;QACnC,UAAU,CAAC,YAAY,GAAG;YACxB,KAAK;YACL,IAAI,EAAE,QAAQ;YACd,MAAM;SACP,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,KAAqB;IAErB,IAAI,KAAK,CAAC,YAAY;QACpB,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;IAC7D,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;QACxB,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YAClE,KAAK;SACN,CAAC,CAAC,CAAC;IACN,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,wBAAwB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YACtE,KAAK;SACN,CAAC,CAAC,CAAC;IAEN,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;QACnC,UAAU,CAAC,YAAY,GAAG;YACxB,KAAK;YACL,IAAI,EAAE,QAAQ;SACf,CAAC;IACJ,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 Base\n */\n\nimport produce from \"immer\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport type { NineZoneState } from \"../NineZoneState\";\nimport { category } from \"./NineZoneStateHelpers\";\nimport { getTabLocation } from \"../TabLocation\";\nimport type { TabState } from \"../TabState\";\n\n/** Adds a docked tool settings.\n * @internal\n */\nexport function addDockedToolSettings(\n state: NineZoneState,\n tabId: TabState[\"id\"],\n hidden = false\n): NineZoneState {\n if (state.toolSettings)\n throw new UiError(category, \"Tool settings already exist\");\n if (!(tabId in state.tabs))\n throw new UiError(category, \"Tab does not exist\", undefined, () => ({\n tabId,\n }));\n const location = getTabLocation(state, tabId);\n if (location)\n throw new UiError(\n category,\n \"Tab is already in a widget\",\n undefined,\n () => ({ tabId, widgetId: location.widgetId })\n );\n\n return produce(state, (stateDraft) => {\n stateDraft.toolSettings = {\n tabId,\n type: \"docked\",\n hidden,\n };\n });\n}\n\n/** Adds a widget tool settings.\n * @internal\n */\nexport function addWidgetToolSettings(\n state: NineZoneState,\n tabId: TabState[\"id\"]\n): NineZoneState {\n if (state.toolSettings)\n throw new UiError(category, \"Tool settings already exist\");\n if (!(tabId in state.tabs))\n throw new UiError(category, \"Tab does not exist\", undefined, () => ({\n tabId,\n }));\n const location = getTabLocation(state, tabId);\n if (!location)\n throw new UiError(category, \"Tab is not in a widget\", undefined, () => ({\n tabId,\n }));\n\n return produce(state, (stateDraft) => {\n stateDraft.toolSettings = {\n tabId,\n type: \"widget\",\n };\n });\n}\n"]}
1
+ {"version":3,"file":"ToolSettingsStateHelpers.js","sourceRoot":"","sources":["../../../../../../src/appui-react/layout/state/internal/ToolSettingsStateHelpers.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,OAAO,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,KAAqB,EACrB,MAAM,GAAG,KAAK;IAEd,IAAI,KAAK,CAAC,YAAY;QACpB,mDAAmD;QACnD,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;IAC7D,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;QACxB,mDAAmD;QACnD,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YAClE,KAAK;SACN,CAAC,CAAC,CAAC;IACN,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,QAAQ;QACV,mDAAmD;QACnD,MAAM,IAAI,OAAO,CACf,QAAQ,EACR,4BAA4B,EAC5B,SAAS,EACT,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAC/C,CAAC;IAEJ,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;QACnC,UAAU,CAAC,YAAY,GAAG;YACxB,KAAK;YACL,IAAI,EAAE,QAAQ;YACd,MAAM;SACP,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,KAAqB;IAErB,IAAI,KAAK,CAAC,YAAY;QACpB,mDAAmD;QACnD,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;IAC7D,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;QACxB,mDAAmD;QACnD,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YAClE,KAAK;SACN,CAAC,CAAC,CAAC;IACN,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ;QACX,mDAAmD;QACnD,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,wBAAwB,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YACtE,KAAK;SACN,CAAC,CAAC,CAAC;IAEN,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;QACnC,UAAU,CAAC,YAAY,GAAG;YACxB,KAAK;YACL,IAAI,EAAE,QAAQ;SACf,CAAC;IACJ,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 Base\n */\n\nimport produce from \"immer\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport type { NineZoneState } from \"../NineZoneState\";\nimport { category } from \"./NineZoneStateHelpers\";\nimport { getTabLocation } from \"../TabLocation\";\nimport type { TabState } from \"../TabState\";\n\n/** Adds a docked tool settings.\n * @internal\n */\nexport function addDockedToolSettings(\n state: NineZoneState,\n tabId: TabState[\"id\"],\n hidden = false\n): NineZoneState {\n if (state.toolSettings)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Tool settings already exist\");\n if (!(tabId in state.tabs))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Tab does not exist\", undefined, () => ({\n tabId,\n }));\n const location = getTabLocation(state, tabId);\n if (location)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(\n category,\n \"Tab is already in a widget\",\n undefined,\n () => ({ tabId, widgetId: location.widgetId })\n );\n\n return produce(state, (stateDraft) => {\n stateDraft.toolSettings = {\n tabId,\n type: \"docked\",\n hidden,\n };\n });\n}\n\n/** Adds a widget tool settings.\n * @internal\n */\nexport function addWidgetToolSettings(\n state: NineZoneState,\n tabId: TabState[\"id\"]\n): NineZoneState {\n if (state.toolSettings)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Tool settings already exist\");\n if (!(tabId in state.tabs))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Tab does not exist\", undefined, () => ({\n tabId,\n }));\n const location = getTabLocation(state, tabId);\n if (!location)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Tab is not in a widget\", undefined, () => ({\n tabId,\n }));\n\n return produce(state, (stateDraft) => {\n stateDraft.toolSettings = {\n tabId,\n type: \"widget\",\n };\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetStateHelpers.d.ts","sourceRoot":"","sources":["../../../../../../src/appui-react/layout/state/internal/WidgetStateHelpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WidgetStateHelpers.d.ts","sourceRoot":"","sources":["../../../../../../src/appui-react/layout/state/internal/WidgetStateHelpers.ts"],"names":[],"mappings":"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"}
@@ -257,6 +257,7 @@ export function getNewFloatingWidgetBounds(state) {
257
257
  /** @internal */
258
258
  export function addFloatingWidget(state, id, tabs, floatingWidgetArgs, widgetArgs) {
259
259
  if (id in state.floatingWidgets.byId)
260
+ // eslint-disable-next-line deprecation/deprecation
260
261
  throw new UiError(category, "Floating widget already exists");
261
262
  state = addWidgetState(state, id, tabs, widgetArgs);
262
263
  let bounds = floatingWidgetArgs?.bounds;
@@ -279,6 +280,7 @@ export function addFloatingWidget(state, id, tabs, floatingWidgetArgs, widgetArg
279
280
  /** @internal */
280
281
  export function addPopoutWidget(state, id, tabs, popoutWidgetArgs, widgetArgs) {
281
282
  if (tabs.length !== 1)
283
+ // eslint-disable-next-line deprecation/deprecation
282
284
  throw new UiError(category, "Popout widget should contain one tab only", undefined, () => ({ tabs }));
283
285
  const popoutWidget = createPopoutWidgetState(id, popoutWidgetArgs);
284
286
  state = addWidgetState(state, id, tabs, widgetArgs);
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetStateHelpers.js","sourceRoot":"","sources":["../../../../../../src/appui-react/layout/state/internal/WidgetStateHelpers.ts"],"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 { castDraft, produce } from \"immer\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { RectangleProps } from \"@itwin/core-react\";\nimport { Point, Rectangle } from \"@itwin/core-react\";\nimport type { NineZoneState } from \"../NineZoneState\";\nimport type {\n FloatingWidgetState,\n PopoutWidgetState,\n WidgetState,\n} from \"../WidgetState\";\nimport { getTabLocation } from \"../TabLocation\";\nimport type { PanelWidgetLocation } from \"../WidgetLocation\";\nimport {\n getWidgetLocation,\n isFloatingWidgetLocation,\n isPanelWidgetLocation,\n isPopoutWidgetLocation,\n} from \"../WidgetLocation\";\nimport {\n category,\n initSizeProps,\n setRectangleProps,\n toRectangleProps,\n} from \"./NineZoneStateHelpers\";\nimport { updatePanelState } from \"./PanelStateHelpers\";\nimport { updateTabState } from \"./TabStateHelpers\";\n\n/** @internal */\nexport function createWidgetState(\n id: WidgetState[\"id\"],\n tabs: WidgetState[\"tabs\"],\n args?: Partial<WidgetState>\n): WidgetState {\n if (tabs.length === 0)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Widget must contain tabs\");\n return {\n activeTabId: tabs[0],\n minimized: false,\n ...args,\n id,\n tabs,\n };\n}\n\n/** @internal */\nexport function updateWidgetState(\n state: NineZoneState,\n id: WidgetState[\"id\"],\n args: Partial<WidgetState>\n) {\n return produce(state, (draft) => {\n const widget = getWidgetState(draft, id);\n draft.widgets[id] = {\n ...widget,\n ...castDraft(args),\n };\n });\n}\n\n/** @internal */\nexport function addWidgetState(\n state: NineZoneState,\n id: WidgetState[\"id\"],\n tabs: WidgetState[\"tabs\"],\n args?: Partial<WidgetState>\n) {\n // eslint-disable-next-line deprecation/deprecation\n if (id in state.widgets) throw new UiError(category, \"Widget already exists\");\n\n const widget = createWidgetState(id, tabs, args);\n for (const tabId of widget.tabs) {\n if (!(tabId in state.tabs))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Tab does not exist\", undefined, () => ({\n tabId,\n }));\n\n const location = getTabLocation(state, tabId);\n if (location)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(\n category,\n \"Tab is already in a widget\",\n undefined,\n () => ({ tabId, widgetId: location.widgetId })\n );\n }\n return produce(state, (draft) => {\n draft.widgets[id] = castDraft(widget);\n });\n}\n\n/** @internal */\nexport function removeWidget(\n state: NineZoneState,\n id: WidgetState[\"id\"]\n): NineZoneState {\n const location = getWidgetLocation(state, id);\n // eslint-disable-next-line deprecation/deprecation\n if (!location) throw new UiError(category, \"Widget not found\");\n\n if (isFloatingWidgetLocation(location))\n return removeFloatingWidget(state, id);\n if (isPopoutWidgetLocation(location)) return removePopoutWidget(state, id);\n return removePanelWidget(state, id, location);\n}\n\n/** @internal */\nexport function removeWidgetState(\n state: NineZoneState,\n id: WidgetState[\"id\"]\n): NineZoneState {\n assertWidgetState(state, id);\n return produce(state, (draft) => {\n delete draft.widgets[id];\n });\n}\n\n/** @internal */\nexport function createFloatingWidgetState(\n id: FloatingWidgetState[\"id\"],\n args?: Partial<FloatingWidgetState>\n): FloatingWidgetState {\n const bounds = toRectangleProps(args?.bounds);\n return {\n home: {\n side: \"left\",\n widgetId: \"\",\n widgetIndex: 0,\n },\n ...args,\n bounds,\n id,\n };\n}\n\n/** @internal */\nexport function createPopoutWidgetState(\n id: PopoutWidgetState[\"id\"],\n args?: Partial<PopoutWidgetState>\n): PopoutWidgetState {\n const bounds = toRectangleProps(args?.bounds);\n const home: PopoutWidgetState[\"home\"] = args?.home\n ? args.home\n : {\n side: \"left\",\n widgetId: \"\",\n widgetIndex: 0,\n };\n return {\n ...args,\n home,\n bounds,\n id,\n };\n}\n\n/** @internal */\nexport function updateFloatingWidgetState(\n state: NineZoneState,\n id: FloatingWidgetState[\"id\"],\n args: Partial<FloatingWidgetState>\n) {\n if (!(id in state.floatingWidgets.byId))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Floating widget does not exist\");\n\n return produce(state, (draft) => {\n const floatingWidget = draft.floatingWidgets.byId[id];\n const { bounds, ...other } = args;\n draft.floatingWidgets.byId[id] = {\n ...floatingWidget,\n ...other,\n };\n if (bounds) setRectangleProps(floatingWidget.bounds, bounds);\n });\n}\n\n/** Removes floating widget from the UI and deletes the widget state.\n * @internal\n */\nexport function removeFloatingWidget(\n state: NineZoneState,\n id: FloatingWidgetState[\"id\"]\n): NineZoneState {\n if (!(id in state.floatingWidgets.byId))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Floating widget does not exist\");\n\n state = produce(state, (draft) => {\n delete draft.floatingWidgets.byId[id];\n const idIndex = draft.floatingWidgets.allIds.indexOf(id);\n draft.floatingWidgets.allIds.splice(idIndex, 1);\n });\n return removeWidgetState(state, id);\n}\n\n/** Removes popout widget from the UI and deletes the widget state.\n * @internal\n */\nexport function removePopoutWidget(\n state: NineZoneState,\n id: PopoutWidgetState[\"id\"]\n) {\n if (!(id in state.popoutWidgets.byId))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Popout widget does not exist\");\n\n state = produce(state, (draft) => {\n delete draft.popoutWidgets.byId[id];\n const index = state.popoutWidgets.allIds.indexOf(id);\n draft.popoutWidgets.allIds.splice(index, 1);\n });\n return removeWidgetState(state, id);\n}\n\n/** @internal */\nexport function removePanelWidget(\n state: NineZoneState,\n id: WidgetState[\"id\"],\n location?: PanelWidgetLocation\n): NineZoneState {\n location = location || findPanelWidget(state, id);\n // eslint-disable-next-line deprecation/deprecation\n if (!location) throw new UiError(category, \"Panel widget not found\");\n\n state = updatePanelState(state, location.side, (draft) => {\n assert(!!location);\n draft.widgets.splice(location.index, 1);\n });\n\n const widgets = state.panels[location.side].widgets;\n const expandedWidget = widgets.find((widgetId) => {\n const widget = getWidgetState(state, widgetId);\n return !widget.minimized;\n });\n if (!expandedWidget && widgets.length > 0) {\n const firstWidgetId = widgets[0];\n state = updateWidgetState(state, firstWidgetId, {\n minimized: false,\n });\n }\n\n return removeWidgetState(state, id);\n}\n\nfunction findPanelWidget(state: NineZoneState, id: WidgetState[\"id\"]) {\n const location = getWidgetLocation(state, id);\n if (location && isPanelWidgetLocation(location)) return location;\n return undefined;\n}\n\n/** @internal */\nexport function assertWidgetState(state: NineZoneState, id: WidgetState[\"id\"]) {\n if (!(id in state.widgets))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Widget does not exist\", undefined, () => ({\n id,\n }));\n}\n\n/** @internal */\nexport function getWidgetState<T extends NineZoneState>(\n state: T,\n id: WidgetState[\"id\"]\n): T[\"widgets\"][0] {\n assertWidgetState(state, id);\n return state.widgets[id] as T[\"widgets\"][0];\n}\n\n/** @internal */\nexport function setWidgetActiveTabId(\n state: NineZoneState,\n widgetId: WidgetState[\"id\"],\n tabId: WidgetState[\"activeTabId\"]\n): NineZoneState {\n const widget = getWidgetState(state, widgetId);\n if (!widget.tabs.includes(tabId))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Tab is not in a widget\");\n\n state = updateWidgetState(state, widgetId, {\n activeTabId: tabId,\n });\n\n const floatingWidget = state.floatingWidgets.byId[widgetId];\n if (floatingWidget) {\n const activeTab = state.tabs[tabId];\n const preferredFloatingWidgetSize = Rectangle.create(\n floatingWidget.bounds\n ).getSize();\n state = updateTabState(state, activeTab.id, (draft) => {\n initSizeProps(\n draft,\n \"preferredFloatingWidgetSize\",\n preferredFloatingWidgetSize\n );\n });\n }\n return state;\n}\n\n/** @internal */\nexport function getNewFloatingWidgetBounds(\n state: NineZoneState\n): RectangleProps {\n // Matches min size (to handle auto-sized floating widgets correctly).\n const size = { height: 120, width: 200 };\n const initialPosition = new Point(360, 340);\n\n const nzBounds = Rectangle.createFromSize(state.size);\n const widgetsBounds = nzBounds.inset(20, 20, 20, 20);\n const offset = new Point(40, 40);\n\n let bounds = Rectangle.createFromSize(size);\n if (state.floatingWidgets.allIds.length === 0) {\n // Initial floating widget position.\n bounds = bounds.offset(initialPosition);\n } else {\n // Position is relative to last floating widget if available.\n const widgetId =\n state.floatingWidgets.allIds[state.floatingWidgets.allIds.length - 1];\n const widget = state.floatingWidgets.byId[widgetId];\n const widgetBounds = Rectangle.create(widget.bounds);\n\n // Bounds relative to top left of a last floating widget.\n const topLeft = widgetBounds.topLeft().offset(offset);\n bounds = bounds.offset(topLeft);\n\n // Bottom right of new bounds should also be outside of a floating widget.\n const widgetBottomRight = new Point(\n widgetBounds.right,\n widgetBounds.bottom\n );\n const minBottomRight = widgetBottomRight.offset(offset);\n const x = Math.max(0, minBottomRight.x - bounds.right);\n const y = Math.max(0, minBottomRight.y - bounds.bottom);\n bounds = bounds.offset({ x, y });\n }\n\n // TODO: might still end up with a bunch of overlapping widgets.\n if (bounds.bottom >= widgetsBounds.bottom) {\n bounds = bounds.setPosition({ x: bounds.left, y: widgetsBounds.top });\n }\n if (bounds.right >= widgetsBounds.right) {\n bounds = bounds.setPosition({\n x: widgetsBounds.left,\n y: widgetsBounds.top,\n });\n }\n bounds = bounds.containIn(widgetsBounds);\n return bounds.toProps();\n}\n\n/** @internal */\nexport function addFloatingWidget(\n state: NineZoneState,\n id: FloatingWidgetState[\"id\"],\n tabs: WidgetState[\"tabs\"],\n floatingWidgetArgs?: Partial<FloatingWidgetState>,\n widgetArgs?: Partial<WidgetState>\n): NineZoneState {\n if (id in state.floatingWidgets.byId)\n throw new UiError(category, \"Floating widget already exists\");\n\n state = addWidgetState(state, id, tabs, widgetArgs);\n\n let bounds = floatingWidgetArgs?.bounds;\n if (!bounds) {\n bounds = getNewFloatingWidgetBounds(state);\n }\n\n const tabId = tabs[0];\n const tab = state.tabs[tabId];\n const resizable = tab.isFloatingWidgetResizable;\n\n const floatingWidget = createFloatingWidgetState(id, {\n bounds,\n resizable,\n ...floatingWidgetArgs,\n });\n return produce(state, (stateDraft) => {\n stateDraft.floatingWidgets.byId[id] = floatingWidget;\n stateDraft.floatingWidgets.allIds.push(id);\n });\n}\n\n/** @internal */\nexport function addPopoutWidget(\n state: NineZoneState,\n id: PopoutWidgetState[\"id\"],\n tabs: WidgetState[\"tabs\"],\n popoutWidgetArgs?: Partial<PopoutWidgetState>,\n widgetArgs?: Partial<WidgetState>\n): NineZoneState {\n if (tabs.length !== 1)\n throw new UiError(\n category,\n \"Popout widget should contain one tab only\",\n undefined,\n () => ({ tabs })\n );\n\n const popoutWidget = createPopoutWidgetState(id, popoutWidgetArgs);\n state = addWidgetState(state, id, tabs, widgetArgs);\n return produce(state, (stateDraft) => {\n stateDraft.popoutWidgets.byId[id] = popoutWidget;\n stateDraft.popoutWidgets.allIds.push(id);\n });\n}\n\n/** @internal */\nexport function floatingWidgetBringToFront(\n state: NineZoneState,\n floatingWidgetId: FloatingWidgetState[\"id\"]\n): NineZoneState {\n return produce(state, (draft) => {\n const idIndex = draft.floatingWidgets.allIds.indexOf(floatingWidgetId);\n const spliced = draft.floatingWidgets.allIds.splice(idIndex, 1);\n draft.floatingWidgets.allIds.push(spliced[0]);\n });\n}\n"]}
1
+ {"version":3,"file":"WidgetStateHelpers.js","sourceRoot":"","sources":["../../../../../../src/appui-react/layout/state/internal/WidgetStateHelpers.ts"],"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 { castDraft, produce } from \"immer\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { RectangleProps } from \"@itwin/core-react\";\nimport { Point, Rectangle } from \"@itwin/core-react\";\nimport type { NineZoneState } from \"../NineZoneState\";\nimport type {\n FloatingWidgetState,\n PopoutWidgetState,\n WidgetState,\n} from \"../WidgetState\";\nimport { getTabLocation } from \"../TabLocation\";\nimport type { PanelWidgetLocation } from \"../WidgetLocation\";\nimport {\n getWidgetLocation,\n isFloatingWidgetLocation,\n isPanelWidgetLocation,\n isPopoutWidgetLocation,\n} from \"../WidgetLocation\";\nimport {\n category,\n initSizeProps,\n setRectangleProps,\n toRectangleProps,\n} from \"./NineZoneStateHelpers\";\nimport { updatePanelState } from \"./PanelStateHelpers\";\nimport { updateTabState } from \"./TabStateHelpers\";\n\n/** @internal */\nexport function createWidgetState(\n id: WidgetState[\"id\"],\n tabs: WidgetState[\"tabs\"],\n args?: Partial<WidgetState>\n): WidgetState {\n if (tabs.length === 0)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Widget must contain tabs\");\n return {\n activeTabId: tabs[0],\n minimized: false,\n ...args,\n id,\n tabs,\n };\n}\n\n/** @internal */\nexport function updateWidgetState(\n state: NineZoneState,\n id: WidgetState[\"id\"],\n args: Partial<WidgetState>\n) {\n return produce(state, (draft) => {\n const widget = getWidgetState(draft, id);\n draft.widgets[id] = {\n ...widget,\n ...castDraft(args),\n };\n });\n}\n\n/** @internal */\nexport function addWidgetState(\n state: NineZoneState,\n id: WidgetState[\"id\"],\n tabs: WidgetState[\"tabs\"],\n args?: Partial<WidgetState>\n) {\n // eslint-disable-next-line deprecation/deprecation\n if (id in state.widgets) throw new UiError(category, \"Widget already exists\");\n\n const widget = createWidgetState(id, tabs, args);\n for (const tabId of widget.tabs) {\n if (!(tabId in state.tabs))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Tab does not exist\", undefined, () => ({\n tabId,\n }));\n\n const location = getTabLocation(state, tabId);\n if (location)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(\n category,\n \"Tab is already in a widget\",\n undefined,\n () => ({ tabId, widgetId: location.widgetId })\n );\n }\n return produce(state, (draft) => {\n draft.widgets[id] = castDraft(widget);\n });\n}\n\n/** @internal */\nexport function removeWidget(\n state: NineZoneState,\n id: WidgetState[\"id\"]\n): NineZoneState {\n const location = getWidgetLocation(state, id);\n // eslint-disable-next-line deprecation/deprecation\n if (!location) throw new UiError(category, \"Widget not found\");\n\n if (isFloatingWidgetLocation(location))\n return removeFloatingWidget(state, id);\n if (isPopoutWidgetLocation(location)) return removePopoutWidget(state, id);\n return removePanelWidget(state, id, location);\n}\n\n/** @internal */\nexport function removeWidgetState(\n state: NineZoneState,\n id: WidgetState[\"id\"]\n): NineZoneState {\n assertWidgetState(state, id);\n return produce(state, (draft) => {\n delete draft.widgets[id];\n });\n}\n\n/** @internal */\nexport function createFloatingWidgetState(\n id: FloatingWidgetState[\"id\"],\n args?: Partial<FloatingWidgetState>\n): FloatingWidgetState {\n const bounds = toRectangleProps(args?.bounds);\n return {\n home: {\n side: \"left\",\n widgetId: \"\",\n widgetIndex: 0,\n },\n ...args,\n bounds,\n id,\n };\n}\n\n/** @internal */\nexport function createPopoutWidgetState(\n id: PopoutWidgetState[\"id\"],\n args?: Partial<PopoutWidgetState>\n): PopoutWidgetState {\n const bounds = toRectangleProps(args?.bounds);\n const home: PopoutWidgetState[\"home\"] = args?.home\n ? args.home\n : {\n side: \"left\",\n widgetId: \"\",\n widgetIndex: 0,\n };\n return {\n ...args,\n home,\n bounds,\n id,\n };\n}\n\n/** @internal */\nexport function updateFloatingWidgetState(\n state: NineZoneState,\n id: FloatingWidgetState[\"id\"],\n args: Partial<FloatingWidgetState>\n) {\n if (!(id in state.floatingWidgets.byId))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Floating widget does not exist\");\n\n return produce(state, (draft) => {\n const floatingWidget = draft.floatingWidgets.byId[id];\n const { bounds, ...other } = args;\n draft.floatingWidgets.byId[id] = {\n ...floatingWidget,\n ...other,\n };\n if (bounds) setRectangleProps(floatingWidget.bounds, bounds);\n });\n}\n\n/** Removes floating widget from the UI and deletes the widget state.\n * @internal\n */\nexport function removeFloatingWidget(\n state: NineZoneState,\n id: FloatingWidgetState[\"id\"]\n): NineZoneState {\n if (!(id in state.floatingWidgets.byId))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Floating widget does not exist\");\n\n state = produce(state, (draft) => {\n delete draft.floatingWidgets.byId[id];\n const idIndex = draft.floatingWidgets.allIds.indexOf(id);\n draft.floatingWidgets.allIds.splice(idIndex, 1);\n });\n return removeWidgetState(state, id);\n}\n\n/** Removes popout widget from the UI and deletes the widget state.\n * @internal\n */\nexport function removePopoutWidget(\n state: NineZoneState,\n id: PopoutWidgetState[\"id\"]\n) {\n if (!(id in state.popoutWidgets.byId))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Popout widget does not exist\");\n\n state = produce(state, (draft) => {\n delete draft.popoutWidgets.byId[id];\n const index = state.popoutWidgets.allIds.indexOf(id);\n draft.popoutWidgets.allIds.splice(index, 1);\n });\n return removeWidgetState(state, id);\n}\n\n/** @internal */\nexport function removePanelWidget(\n state: NineZoneState,\n id: WidgetState[\"id\"],\n location?: PanelWidgetLocation\n): NineZoneState {\n location = location || findPanelWidget(state, id);\n // eslint-disable-next-line deprecation/deprecation\n if (!location) throw new UiError(category, \"Panel widget not found\");\n\n state = updatePanelState(state, location.side, (draft) => {\n assert(!!location);\n draft.widgets.splice(location.index, 1);\n });\n\n const widgets = state.panels[location.side].widgets;\n const expandedWidget = widgets.find((widgetId) => {\n const widget = getWidgetState(state, widgetId);\n return !widget.minimized;\n });\n if (!expandedWidget && widgets.length > 0) {\n const firstWidgetId = widgets[0];\n state = updateWidgetState(state, firstWidgetId, {\n minimized: false,\n });\n }\n\n return removeWidgetState(state, id);\n}\n\nfunction findPanelWidget(state: NineZoneState, id: WidgetState[\"id\"]) {\n const location = getWidgetLocation(state, id);\n if (location && isPanelWidgetLocation(location)) return location;\n return undefined;\n}\n\n/** @internal */\nexport function assertWidgetState(state: NineZoneState, id: WidgetState[\"id\"]) {\n if (!(id in state.widgets))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Widget does not exist\", undefined, () => ({\n id,\n }));\n}\n\n/** @internal */\nexport function getWidgetState<T extends NineZoneState>(\n state: T,\n id: WidgetState[\"id\"]\n): T[\"widgets\"][0] {\n assertWidgetState(state, id);\n return state.widgets[id] as T[\"widgets\"][0];\n}\n\n/** @internal */\nexport function setWidgetActiveTabId(\n state: NineZoneState,\n widgetId: WidgetState[\"id\"],\n tabId: WidgetState[\"activeTabId\"]\n): NineZoneState {\n const widget = getWidgetState(state, widgetId);\n if (!widget.tabs.includes(tabId))\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Tab is not in a widget\");\n\n state = updateWidgetState(state, widgetId, {\n activeTabId: tabId,\n });\n\n const floatingWidget = state.floatingWidgets.byId[widgetId];\n if (floatingWidget) {\n const activeTab = state.tabs[tabId];\n const preferredFloatingWidgetSize = Rectangle.create(\n floatingWidget.bounds\n ).getSize();\n state = updateTabState(state, activeTab.id, (draft) => {\n initSizeProps(\n draft,\n \"preferredFloatingWidgetSize\",\n preferredFloatingWidgetSize\n );\n });\n }\n return state;\n}\n\n/** @internal */\nexport function getNewFloatingWidgetBounds(\n state: NineZoneState\n): RectangleProps {\n // Matches min size (to handle auto-sized floating widgets correctly).\n const size = { height: 120, width: 200 };\n const initialPosition = new Point(360, 340);\n\n const nzBounds = Rectangle.createFromSize(state.size);\n const widgetsBounds = nzBounds.inset(20, 20, 20, 20);\n const offset = new Point(40, 40);\n\n let bounds = Rectangle.createFromSize(size);\n if (state.floatingWidgets.allIds.length === 0) {\n // Initial floating widget position.\n bounds = bounds.offset(initialPosition);\n } else {\n // Position is relative to last floating widget if available.\n const widgetId =\n state.floatingWidgets.allIds[state.floatingWidgets.allIds.length - 1];\n const widget = state.floatingWidgets.byId[widgetId];\n const widgetBounds = Rectangle.create(widget.bounds);\n\n // Bounds relative to top left of a last floating widget.\n const topLeft = widgetBounds.topLeft().offset(offset);\n bounds = bounds.offset(topLeft);\n\n // Bottom right of new bounds should also be outside of a floating widget.\n const widgetBottomRight = new Point(\n widgetBounds.right,\n widgetBounds.bottom\n );\n const minBottomRight = widgetBottomRight.offset(offset);\n const x = Math.max(0, minBottomRight.x - bounds.right);\n const y = Math.max(0, minBottomRight.y - bounds.bottom);\n bounds = bounds.offset({ x, y });\n }\n\n // TODO: might still end up with a bunch of overlapping widgets.\n if (bounds.bottom >= widgetsBounds.bottom) {\n bounds = bounds.setPosition({ x: bounds.left, y: widgetsBounds.top });\n }\n if (bounds.right >= widgetsBounds.right) {\n bounds = bounds.setPosition({\n x: widgetsBounds.left,\n y: widgetsBounds.top,\n });\n }\n bounds = bounds.containIn(widgetsBounds);\n return bounds.toProps();\n}\n\n/** @internal */\nexport function addFloatingWidget(\n state: NineZoneState,\n id: FloatingWidgetState[\"id\"],\n tabs: WidgetState[\"tabs\"],\n floatingWidgetArgs?: Partial<FloatingWidgetState>,\n widgetArgs?: Partial<WidgetState>\n): NineZoneState {\n if (id in state.floatingWidgets.byId)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(category, \"Floating widget already exists\");\n\n state = addWidgetState(state, id, tabs, widgetArgs);\n\n let bounds = floatingWidgetArgs?.bounds;\n if (!bounds) {\n bounds = getNewFloatingWidgetBounds(state);\n }\n\n const tabId = tabs[0];\n const tab = state.tabs[tabId];\n const resizable = tab.isFloatingWidgetResizable;\n\n const floatingWidget = createFloatingWidgetState(id, {\n bounds,\n resizable,\n ...floatingWidgetArgs,\n });\n return produce(state, (stateDraft) => {\n stateDraft.floatingWidgets.byId[id] = floatingWidget;\n stateDraft.floatingWidgets.allIds.push(id);\n });\n}\n\n/** @internal */\nexport function addPopoutWidget(\n state: NineZoneState,\n id: PopoutWidgetState[\"id\"],\n tabs: WidgetState[\"tabs\"],\n popoutWidgetArgs?: Partial<PopoutWidgetState>,\n widgetArgs?: Partial<WidgetState>\n): NineZoneState {\n if (tabs.length !== 1)\n // eslint-disable-next-line deprecation/deprecation\n throw new UiError(\n category,\n \"Popout widget should contain one tab only\",\n undefined,\n () => ({ tabs })\n );\n\n const popoutWidget = createPopoutWidgetState(id, popoutWidgetArgs);\n state = addWidgetState(state, id, tabs, widgetArgs);\n return produce(state, (stateDraft) => {\n stateDraft.popoutWidgets.byId[id] = popoutWidget;\n stateDraft.popoutWidgets.allIds.push(id);\n });\n}\n\n/** @internal */\nexport function floatingWidgetBringToFront(\n state: NineZoneState,\n floatingWidgetId: FloatingWidgetState[\"id\"]\n): NineZoneState {\n return produce(state, (draft) => {\n const idIndex = draft.floatingWidgets.allIds.indexOf(floatingWidgetId);\n const spliced = draft.floatingWidgets.allIds.splice(idIndex, 1);\n draft.floatingWidgets.allIds.push(spliced[0]);\n });\n}\n"]}
@@ -16,6 +16,7 @@
16
16
  &.nz-right {
17
17
  grid-row: 2/3;
18
18
  height: 100%;
19
+ top: 0;
19
20
  }
20
21
 
21
22
  &.nz-left {
@@ -32,6 +33,7 @@
32
33
  &.nz-bottom {
33
34
  grid-column: 2/3;
34
35
  width: 100%;
36
+ left: 0;
35
37
 
36
38
  &.nz-span {
37
39
  grid-column: 1/4;
@@ -1,9 +1,9 @@
1
1
  /** @packageDocumentation
2
2
  * @module ToolSettings
3
3
  */
4
+ import "./Docked.scss";
4
5
  import type { CommonProps } from "@itwin/core-react";
5
6
  import * as React from "react";
6
- import "./Docked.scss";
7
7
  /** @internal */
8
8
  export declare function onOverflowLabelAndEditorResize(): void;
9
9
  /** Properties of [[DockedToolSettings]] component.
@@ -28,15 +28,21 @@ export declare function getChildKey(child: React.ReactNode, index: number): stri
28
28
  /** Returns a subset of docked entry keys that exceed given width and should be overflown.
29
29
  * @internal
30
30
  */
31
- export declare function getOverflown(width: number, docked: ReadonlyArray<readonly [string, number]>, overflowWidth: number, activeIndex?: number): string[];
32
- /** Hook that returns a list of overflown children.
31
+ export declare function getOverflown(width: number, docked: ReadonlyArray<readonly [string, number]>, overflowWidth: number, activeIndex?: number, gapSize?: number): string[];
32
+ /** Hook that returns a list of overflown children keys.
33
33
  * @internal
34
34
  */
35
35
  export declare function useOverflow(children: React.ReactNode, activeChildIndex?: number): [
36
+ /** Keys of overflown children. */
36
37
  ReadonlyArray<string> | undefined,
37
- (size: number) => void,
38
- (size: number) => void,
39
- (key: string) => (size: number) => void
38
+ /** Function to update container size. */
39
+ (containerSize: number) => void,
40
+ /** Function to update overflow button size. */
41
+ (overflowButtonSize: number) => void,
42
+ /** Returns a function to update an entry size for a given key. */
43
+ (key: string) => (entrySize: number) => void,
44
+ /** Function to update gap size. */
45
+ (gapSize: number) => void
40
46
  ];
41
47
  interface DockedToolSettingsEntryContextArgs {
42
48
  readonly isOverflown: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Docked.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/layout/tool-settings/Docked.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,eAAe,CAAC;AAKvB,gBAAgB;AAChB,wBAAgB,8BAA8B,SAAK;AA0BnD;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,uCAAuC;IACvC,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;CACtE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,qBAyIhE;AA+BD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,UAKhE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAChD,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,YAoCrB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,gBAAgB,CAAC,EAAE,MAAM,GACxB;IACD,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS;IACjC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IACtB,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IACtB,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;CACxC,CA6EA;AAED,UAAU,kCAAkC;IAC1C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAOD,gBAAgB;AAChB,wBAAgB,oBAAoB,uCAEnC;AAeD,gBAAgB;AAChB,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACnC,KAAK,EAAE,SAAS,MAAM,EAAE,WAUzB"}
1
+ {"version":3,"file":"Docked.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/layout/tool-settings/Docked.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,gBAAgB;AAChB,wBAAgB,8BAA8B,SAAK;AA0BnD;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,uCAAuC;IACvC,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;CACtE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,qBAyIhE;AA+BD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,UAKhE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAChD,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,SAAI,YAyDZ;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,gBAAgB,CAAC,EAAE,MAAM,GACxB;IACD,kCAAkC;IAClC,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS;IACjC,yCAAyC;IACzC,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI;IAC/B,+CAA+C;IAC/C,CAAC,kBAAkB,EAAE,MAAM,KAAK,IAAI;IACpC,kEAAkE;IAClE,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI;IAC5C,mCAAmC;IACnC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;CAC1B,CA0FA;AAED,UAAU,kCAAkC;IAC1C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAOD,gBAAgB;AAChB,wBAAgB,oBAAoB,uCAEnC;AAeD,gBAAgB;AAChB,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACnC,KAAK,EAAE,SAAS,MAAM,EAAE,WAUzB"}
@@ -5,14 +5,13 @@
5
5
  /** @packageDocumentation
6
6
  * @module ToolSettings
7
7
  */
8
+ import "./Docked.scss";
8
9
  import { assert } from "@itwin/core-bentley";
9
- import { useRefs, useResizeObserver } from "@itwin/core-react";
10
+ import { getCssVariableAsNumber, useRefs, useResizeObserver, } from "@itwin/core-react";
10
11
  import classnames from "classnames";
11
12
  import * as React from "react";
12
13
  import { CSSTransition, TransitionGroup } from "react-transition-group";
13
- import { usePreviewFeatures } from "../../preview/PreviewFeatures";
14
14
  import { AnimateDockedToolSettingsContext } from "../base/NineZone";
15
- import "./Docked.scss";
16
15
  import { DockedToolSettingsHandle } from "./Handle";
17
16
  import { DockedToolSettingsOverflow } from "./Overflow";
18
17
  import { ToolSettingsOverflowPanel } from "./Panel";
@@ -35,17 +34,21 @@ function OverflowLabelAndEditor({ wrapper }) {
35
34
  */
36
35
  export function DockedToolSettings(props) {
37
36
  const [open, setOpen] = React.useState(false);
38
- const { contentAlwaysMaxSize } = usePreviewFeatures();
39
37
  const animateToolSettings = React.useContext(AnimateDockedToolSettingsContext);
40
38
  const ref = React.useRef(null);
41
39
  const width = React.useRef(undefined);
42
40
  const handleWidth = React.useRef(undefined);
43
- const [overflown, handleContainerResize, handleOverflowResize, handleEntryResize,] = useOverflow(props.children);
41
+ const [overflown, handleContainerResize, handleOverflowResize, getOnEntryResize, handleGapResize,] = useOverflow(props.children);
44
42
  const onResize = React.useCallback(() => {
43
+ let gapSize = 0;
44
+ if (ref.current) {
45
+ gapSize = getGapVariable(ref.current);
46
+ handleGapResize(gapSize);
47
+ }
45
48
  width.current !== undefined &&
46
49
  handleWidth.current !== undefined &&
47
- handleContainerResize(width.current - handleWidth.current);
48
- }, [handleContainerResize]);
50
+ handleContainerResize(width.current - handleWidth.current - gapSize);
51
+ }, [handleContainerResize, handleGapResize]);
49
52
  const handleHandleResize = React.useCallback((w) => {
50
53
  handleWidth.current = w;
51
54
  onResize();
@@ -83,9 +86,7 @@ export function DockedToolSettings(props) {
83
86
  const PanelContainer = props.panelContainer
84
87
  ? props.panelContainer
85
88
  : DefaultPanelContainer;
86
- const className = classnames("nz-toolSettings-docked", props.className,
87
- // istanbul ignore next (preview)
88
- contentAlwaysMaxSize && "preview-contentAlwaysMaxSize");
89
+ const className = classnames("nz-toolSettings-docked", props.className);
89
90
  return (React.createElement("div", { "data-toolsettings-provider": props.itemId, className: className, ref: refs, style: props.style },
90
91
  React.createElement(DockedToolSettingsHandle, { onResize: handleHandleResize }),
91
92
  dockedChildren.map(([key, child]) => {
@@ -96,7 +97,7 @@ export function DockedToolSettings(props) {
96
97
  appearActive: "toolsettings-appear-active",
97
98
  enterActive: "toolsettings-appear-active",
98
99
  } },
99
- React.createElement(DockedToolSettingsEntry, { key: key, entryKey: key, getOnResize: handleEntryResize }, child))));
100
+ React.createElement(DockedToolSettingsEntry, { key: key, entryKey: key, getOnResize: getOnEntryResize }, child))));
100
101
  }),
101
102
  (!overflown || overflown.length > 0) && (React.createElement(React.Fragment, null,
102
103
  React.createElement(DockedToolSettingsOverflow, { onClick: onOverflowClick, onResize: handleOverflowResize, ref: targetRef }),
@@ -125,24 +126,38 @@ export function getChildKey(child, index) {
125
126
  /** Returns a subset of docked entry keys that exceed given width and should be overflown.
126
127
  * @internal
127
128
  */
128
- export function getOverflown(width, docked, overflowWidth, activeIndex) {
129
+ export function getOverflown(width, docked, overflowWidth, activeIndex, gapSize = 0) {
129
130
  let settingsWidth = 0;
131
+ // Avoid adding gap to first item.
132
+ let firstItem = true;
133
+ const getGapSize = () => {
134
+ if (firstItem) {
135
+ firstItem = false;
136
+ return 0;
137
+ }
138
+ return gapSize;
139
+ };
140
+ // Make sure active item is always visible.
130
141
  if (activeIndex !== undefined && docked.length > activeIndex) {
131
142
  const activeWidth = docked[activeIndex];
132
- settingsWidth += activeWidth[1];
143
+ settingsWidth += activeWidth[1] + getGapSize();
133
144
  }
134
145
  let i = 0;
135
146
  for (; i < docked.length; i++) {
147
+ // Skip active item.
136
148
  if (i === activeIndex)
137
149
  continue;
138
- const w = docked[i][1];
139
- const newSettingsWidth = settingsWidth + w;
150
+ const itemWidth = docked[i][1];
151
+ const newSettingsWidth = settingsWidth + itemWidth + getGapSize();
152
+ // Items overflow, add an overflow button.
140
153
  if (newSettingsWidth > width) {
141
- settingsWidth += overflowWidth;
154
+ settingsWidth += overflowWidth + getGapSize();
142
155
  break;
143
156
  }
157
+ // Items fit, add an item.
144
158
  settingsWidth = newSettingsWidth;
145
159
  }
160
+ // Remove items until they fit.
146
161
  let j = i;
147
162
  // istanbul ignore else
148
163
  if (j < docked.length) {
@@ -151,8 +166,8 @@ export function getOverflown(width, docked, overflowWidth, activeIndex) {
151
166
  continue;
152
167
  if (settingsWidth <= width)
153
168
  break;
154
- const w = docked[j][1];
155
- settingsWidth -= w;
169
+ const itemWidth = docked[j][1];
170
+ settingsWidth -= itemWidth + gapSize;
156
171
  }
157
172
  }
158
173
  const overflown = new Array();
@@ -163,7 +178,7 @@ export function getOverflown(width, docked, overflowWidth, activeIndex) {
163
178
  }
164
179
  return overflown;
165
180
  }
166
- /** Hook that returns a list of overflown children.
181
+ /** Hook that returns a list of overflown children keys.
167
182
  * @internal
168
183
  */
169
184
  export function useOverflow(children, activeChildIndex) {
@@ -171,6 +186,7 @@ export function useOverflow(children, activeChildIndex) {
171
186
  const entryWidths = React.useRef(new Map());
172
187
  const width = React.useRef(undefined);
173
188
  const overflowWidth = React.useRef(undefined);
189
+ const gapSize = React.useRef(0);
174
190
  const calculateOverflow = React.useCallback(() => {
175
191
  const widths = verifiedMapEntries(entryWidths.current);
176
192
  if (width.current === undefined ||
@@ -180,7 +196,7 @@ export function useOverflow(children, activeChildIndex) {
180
196
  return;
181
197
  }
182
198
  // Calculate overflow.
183
- const newOverflown = getOverflown(width.current, [...widths.entries()], overflowWidth.current, activeChildIndex);
199
+ const newOverflown = getOverflown(width.current, [...widths.entries()], overflowWidth.current, activeChildIndex, gapSize.current);
184
200
  setOverflown((prevOverflown) => {
185
201
  return eqlOverflown(prevOverflown, newOverflown)
186
202
  ? prevOverflown
@@ -211,14 +227,23 @@ export function useOverflow(children, activeChildIndex) {
211
227
  }, [calculateOverflow]);
212
228
  const handleEntryResize = React.useCallback((key) => (w) => {
213
229
  const oldW = entryWidths.current.get(key);
214
- oldW !== w && entryWidths.current.set(key, w);
215
- oldW !== w && calculateOverflow();
230
+ if (oldW === w)
231
+ return;
232
+ entryWidths.current.set(key, w);
233
+ calculateOverflow();
234
+ }, [calculateOverflow]);
235
+ const handleGapResize = React.useCallback((w) => {
236
+ if (gapSize.current === w)
237
+ return;
238
+ gapSize.current = w;
239
+ calculateOverflow();
216
240
  }, [calculateOverflow]);
217
241
  return [
218
242
  overflown,
219
243
  handleContainerResize,
220
244
  handleOverflowResize,
221
245
  handleEntryResize,
246
+ handleGapResize,
222
247
  ];
223
248
  }
224
249
  const DockedToolSettingsEntryContext = React.createContext(null);
@@ -252,4 +277,10 @@ export function eqlOverflown(prev, value) {
252
277
  }
253
278
  return true;
254
279
  }
280
+ function getGapVariable(htmlElement) {
281
+ const gap = getCssVariableAsNumber("gap", htmlElement);
282
+ if (isNaN(gap))
283
+ return 0;
284
+ return gap;
285
+ }
255
286
  //# sourceMappingURL=Docked.js.map