@itwin/appui-react 5.3.1 → 5.5.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 (293) hide show
  1. package/CHANGELOG.md +330 -30
  2. package/lib/appui-react/UiFramework.d.ts +6 -2
  3. package/lib/appui-react/UiFramework.d.ts.map +1 -1
  4. package/lib/appui-react/UiFramework.js +30 -3
  5. package/lib/appui-react/UiFramework.js.map +1 -1
  6. package/lib/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  7. package/lib/appui-react/accudraw/AccuDrawFieldContainer.js +4 -4
  8. package/lib/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  9. package/lib/appui-react/accudraw/AccuDrawPopupManager.d.ts.map +1 -1
  10. package/lib/appui-react/accudraw/AccuDrawPopupManager.js +10 -6
  11. package/lib/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  12. package/lib/appui-react/accudraw/AccuDrawWidget.d.ts.map +1 -1
  13. package/lib/appui-react/accudraw/AccuDrawWidget.js +1 -0
  14. package/lib/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  15. package/lib/appui-react/accudraw/Calculator.js +2 -2
  16. package/lib/appui-react/accudraw/Calculator.js.map +1 -1
  17. package/lib/appui-react/backstage/BackstageItemUtilities.d.ts.map +1 -1
  18. package/lib/appui-react/backstage/BackstageItemUtilities.js +2 -0
  19. package/lib/appui-react/backstage/BackstageItemUtilities.js.map +1 -1
  20. package/lib/appui-react/childwindow/ChildWindowRenderer.d.ts +2 -0
  21. package/lib/appui-react/childwindow/ChildWindowRenderer.d.ts.map +1 -1
  22. package/lib/appui-react/childwindow/ChildWindowRenderer.js +15 -10
  23. package/lib/appui-react/childwindow/ChildWindowRenderer.js.map +1 -1
  24. package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts +23 -1
  25. package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  26. package/lib/appui-react/configurableui/ConfigurableUiContent.js +20 -12
  27. package/lib/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  28. package/lib/appui-react/content/ContentLayout.d.ts.map +1 -1
  29. package/lib/appui-react/content/ContentLayout.js +10 -11
  30. package/lib/appui-react/content/ContentLayout.js.map +1 -1
  31. package/lib/appui-react/content/ContentOverlay.d.ts +1 -0
  32. package/lib/appui-react/content/ContentOverlay.d.ts.map +1 -1
  33. package/lib/appui-react/content/ContentOverlay.js +3 -1
  34. package/lib/appui-react/content/ContentOverlay.js.map +1 -1
  35. package/lib/appui-react/content/DefaultViewOverlay.d.ts.map +1 -1
  36. package/lib/appui-react/content/DefaultViewOverlay.js +6 -2
  37. package/lib/appui-react/content/DefaultViewOverlay.js.map +1 -1
  38. package/lib/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
  39. package/lib/appui-react/content/FloatingViewportContent.js +1 -1
  40. package/lib/appui-react/content/FloatingViewportContent.js.map +1 -1
  41. package/lib/appui-react/cursor/CursorInformation.d.ts +4 -1
  42. package/lib/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  43. package/lib/appui-react/cursor/CursorInformation.js +6 -1
  44. package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
  45. package/lib/appui-react/cursor/cursormenu/CursorMenu.d.ts +1 -24
  46. package/lib/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  47. package/lib/appui-react/cursor/cursormenu/CursorMenu.js +37 -58
  48. package/lib/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  49. package/lib/appui-react/cursor/cursorpopup/CursorPopup.scss +3 -0
  50. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +8 -22
  51. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  52. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +111 -116
  53. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  54. package/lib/appui-react/cursor/cursorprompt/CursorPrompt.d.ts +12 -15
  55. package/lib/appui-react/cursor/cursorprompt/CursorPrompt.d.ts.map +1 -1
  56. package/lib/appui-react/cursor/cursorprompt/CursorPrompt.js +85 -48
  57. package/lib/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  58. package/lib/appui-react/framework/FrameworkFrontstages.d.ts +47 -0
  59. package/lib/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
  60. package/lib/appui-react/framework/FrameworkFrontstages.js +136 -0
  61. package/lib/appui-react/framework/FrameworkFrontstages.js.map +1 -1
  62. package/lib/appui-react/framework/FrameworkVisibility.d.ts +2 -0
  63. package/lib/appui-react/framework/FrameworkVisibility.d.ts.map +1 -1
  64. package/lib/appui-react/framework/FrameworkVisibility.js.map +1 -1
  65. package/lib/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
  66. package/lib/appui-react/frontstage/InternalFrontstageManager.js +121 -115
  67. package/lib/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  68. package/lib/appui-react/frontstage/StandardFrontstageProvider.d.ts.map +1 -1
  69. package/lib/appui-react/frontstage/StandardFrontstageProvider.js +1 -0
  70. package/lib/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  71. package/lib/appui-react/hooks/useActiveTool.d.ts +9 -0
  72. package/lib/appui-react/hooks/useActiveTool.d.ts.map +1 -0
  73. package/lib/appui-react/hooks/useActiveTool.js +23 -0
  74. package/lib/appui-react/hooks/useActiveTool.js.map +1 -0
  75. package/lib/appui-react/icons/SvgAngle.d.ts +7 -0
  76. package/lib/appui-react/icons/SvgAngle.d.ts.map +1 -0
  77. package/lib/appui-react/icons/SvgAngle.js +15 -0
  78. package/lib/appui-react/icons/SvgAngle.js.map +1 -0
  79. package/lib/appui-react/icons/SvgBackspace.d.ts +7 -0
  80. package/lib/appui-react/icons/SvgBackspace.d.ts.map +1 -0
  81. package/lib/appui-react/icons/SvgBackspace.js +14 -0
  82. package/lib/appui-react/icons/SvgBackspace.js.map +1 -0
  83. package/lib/appui-react/icons/SvgDistance.d.ts +7 -0
  84. package/lib/appui-react/icons/SvgDistance.d.ts.map +1 -0
  85. package/lib/appui-react/icons/SvgDistance.js +16 -0
  86. package/lib/appui-react/icons/SvgDistance.js.map +1 -0
  87. package/lib/appui-react/icons/SvgHeight.d.ts +7 -0
  88. package/lib/appui-react/icons/SvgHeight.d.ts.map +1 -0
  89. package/lib/appui-react/icons/SvgHeight.js +17 -0
  90. package/lib/appui-react/icons/SvgHeight.js.map +1 -0
  91. package/lib/appui-react/icons/SvgMouseClickLeftDrag.d.ts +7 -0
  92. package/lib/appui-react/icons/SvgMouseClickLeftDrag.d.ts.map +1 -0
  93. package/lib/appui-react/icons/SvgMouseClickLeftDrag.js +15 -0
  94. package/lib/appui-react/icons/SvgMouseClickLeftDrag.js.map +1 -0
  95. package/lib/appui-react/icons/SvgMouseClickRightDrag.d.ts +7 -0
  96. package/lib/appui-react/icons/SvgMouseClickRightDrag.d.ts.map +1 -0
  97. package/lib/appui-react/icons/SvgMouseClickRightDrag.js +15 -0
  98. package/lib/appui-react/icons/SvgMouseClickRightDrag.js.map +1 -0
  99. package/lib/appui-react/icons/SvgMouseClickWheelDrag.d.ts +7 -0
  100. package/lib/appui-react/icons/SvgMouseClickWheelDrag.d.ts.map +1 -0
  101. package/lib/appui-react/icons/SvgMouseClickWheelDrag.js +15 -0
  102. package/lib/appui-react/icons/SvgMouseClickWheelDrag.js.map +1 -0
  103. package/lib/appui-react/icons/SvgTouchCursorPan.d.ts +7 -0
  104. package/lib/appui-react/icons/SvgTouchCursorPan.d.ts.map +1 -0
  105. package/lib/appui-react/icons/SvgTouchCursorPan.js +15 -0
  106. package/lib/appui-react/icons/SvgTouchCursorPan.js.map +1 -0
  107. package/lib/appui-react/icons/SvgTouchCursorPoint.d.ts +7 -0
  108. package/lib/appui-react/icons/SvgTouchCursorPoint.d.ts.map +1 -0
  109. package/lib/appui-react/icons/SvgTouchCursorPoint.js +16 -0
  110. package/lib/appui-react/icons/SvgTouchCursorPoint.js.map +1 -0
  111. package/lib/appui-react/layout/StandardLayout.scss +3 -8
  112. package/lib/appui-react/layout/base/DragManager.d.ts.map +1 -1
  113. package/lib/appui-react/layout/base/DragManager.js +10 -15
  114. package/lib/appui-react/layout/base/DragManager.js.map +1 -1
  115. package/lib/appui-react/layout/state/NineZoneAction.d.ts +1 -0
  116. package/lib/appui-react/layout/state/NineZoneAction.d.ts.map +1 -1
  117. package/lib/appui-react/layout/state/NineZoneAction.js.map +1 -1
  118. package/lib/appui-react/layout/state/NineZoneStateReducer.d.ts.map +1 -1
  119. package/lib/appui-react/layout/state/NineZoneStateReducer.js +23 -16
  120. package/lib/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
  121. package/lib/appui-react/messages/Pointer.js +1 -1
  122. package/lib/appui-react/messages/Pointer.js.map +1 -1
  123. package/lib/appui-react/navigationaids/CubeNavigationAidControl.d.ts.map +1 -1
  124. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js +1 -0
  125. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  126. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.d.ts.map +1 -1
  127. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -0
  128. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  129. package/lib/appui-react/navigationaids/SheetNavigationAid.d.ts.map +1 -1
  130. package/lib/appui-react/navigationaids/SheetNavigationAid.js +1 -0
  131. package/lib/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  132. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.d.ts.map +1 -1
  133. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -0
  134. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  135. package/lib/appui-react/popup/KeyinPalettePanel.js +1 -1
  136. package/lib/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  137. package/lib/appui-react/popup/PopupManager.d.ts.map +1 -1
  138. package/lib/appui-react/popup/PopupManager.js +9 -3
  139. package/lib/appui-react/popup/PopupManager.js.map +1 -1
  140. package/lib/appui-react/preview/PreviewFeatures.d.ts +5 -0
  141. package/lib/appui-react/preview/PreviewFeatures.d.ts.map +1 -1
  142. package/lib/appui-react/preview/PreviewFeatures.js +1 -0
  143. package/lib/appui-react/preview/PreviewFeatures.js.map +1 -1
  144. package/lib/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.d.ts.map +1 -1
  145. package/lib/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js +8 -2
  146. package/lib/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -1
  147. package/lib/appui-react/preview/tool-settings-new-editors/useToolsSettingsNewEditors.d.ts +5 -0
  148. package/lib/appui-react/preview/tool-settings-new-editors/useToolsSettingsNewEditors.d.ts.map +1 -0
  149. package/lib/appui-react/preview/tool-settings-new-editors/useToolsSettingsNewEditors.js +13 -0
  150. package/lib/appui-react/preview/tool-settings-new-editors/useToolsSettingsNewEditors.js.map +1 -0
  151. package/lib/appui-react/shared/MenuItem.d.ts +3 -0
  152. package/lib/appui-react/shared/MenuItem.d.ts.map +1 -1
  153. package/lib/appui-react/shared/MenuItem.js +2 -3
  154. package/lib/appui-react/shared/MenuItem.js.map +1 -1
  155. package/lib/appui-react/statusbar/StatusBarItemUtilities.d.ts.map +1 -1
  156. package/lib/appui-react/statusbar/StatusBarItemUtilities.js +2 -0
  157. package/lib/appui-react/statusbar/StatusBarItemUtilities.js.map +1 -1
  158. package/lib/appui-react/statusfields/ActivityCenter.js +1 -1
  159. package/lib/appui-react/statusfields/ActivityCenter.js.map +1 -1
  160. package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +2 -55
  161. package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  162. package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.js +333 -403
  163. package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  164. package/lib/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  165. package/lib/appui-react/toolbar/Toolbar.js +4 -3
  166. package/lib/appui-react/toolbar/Toolbar.js.map +1 -1
  167. package/lib/appui-react/toolbar/ToolbarItemUtilities.d.ts.map +1 -1
  168. package/lib/appui-react/toolbar/ToolbarItemUtilities.js +3 -0
  169. package/lib/appui-react/toolbar/ToolbarItemUtilities.js.map +1 -1
  170. package/lib/appui-react/toolbar/new-toolbars/ActionItem.d.ts.map +1 -1
  171. package/lib/appui-react/toolbar/new-toolbars/ActionItem.js +3 -0
  172. package/lib/appui-react/toolbar/new-toolbars/ActionItem.js.map +1 -1
  173. package/lib/appui-react/toolbar/new-toolbars/GroupItem.d.ts +1 -1
  174. package/lib/appui-react/toolbar/new-toolbars/GroupItem.d.ts.map +1 -1
  175. package/lib/appui-react/toolbar/new-toolbars/GroupItem.js +2 -0
  176. package/lib/appui-react/toolbar/new-toolbars/GroupItem.js.map +1 -1
  177. package/lib/appui-react/toolbar/new-toolbars/Item.d.ts +2 -2
  178. package/lib/appui-react/toolbar/new-toolbars/Toolbar.d.ts +6 -3
  179. package/lib/appui-react/toolbar/new-toolbars/Toolbar.d.ts.map +1 -1
  180. package/lib/appui-react/toolbar/new-toolbars/Toolbar.js +4 -3
  181. package/lib/appui-react/toolbar/new-toolbars/Toolbar.js.map +1 -1
  182. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.d.ts.map +1 -1
  183. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js +1 -0
  184. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  185. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts.map +1 -1
  186. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js +9 -2
  187. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  188. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  189. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
  190. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  191. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  192. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +1 -0
  193. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  194. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  195. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +1 -0
  196. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  197. package/lib/appui-react/uiprovider/ComponentGenerator.d.ts.map +1 -1
  198. package/lib/appui-react/uiprovider/ComponentGenerator.js +4 -2
  199. package/lib/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  200. package/lib/appui-react/utils/InternalUiShowHideManager.d.ts +2 -0
  201. package/lib/appui-react/utils/InternalUiShowHideManager.d.ts.map +1 -1
  202. package/lib/appui-react/utils/InternalUiShowHideManager.js +6 -0
  203. package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  204. package/lib/appui-react/utils/PropsHelper.js +1 -1
  205. package/lib/appui-react/utils/PropsHelper.js.map +1 -1
  206. package/lib/appui-react/widget-panels/Frontstage.d.ts +7 -2
  207. package/lib/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  208. package/lib/appui-react/widget-panels/Frontstage.js +29 -12
  209. package/lib/appui-react/widget-panels/Frontstage.js.map +1 -1
  210. package/lib/appui-react/widgets/BackstageAppButton.scss +8 -3
  211. package/lib/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  212. package/lib/appui-react/widgets/BasicToolWidget.js +3 -1
  213. package/lib/appui-react/widgets/BasicToolWidget.js.map +1 -1
  214. package/lib/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  215. package/lib/appui-react/widgets/WidgetDef.js +0 -1
  216. package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
  217. package/lib/appui-react.d.ts +1 -1
  218. package/lib/appui-react.d.ts.map +1 -1
  219. package/lib/appui-react.js +1 -1
  220. package/lib/appui-react.js.map +1 -1
  221. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.scss +3 -0
  222. package/lib/cjs/appui-react/layout/StandardLayout.scss +3 -8
  223. package/lib/cjs/appui-react/widgets/BackstageAppButton.scss +8 -3
  224. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.scss +3 -0
  225. package/lib/esm/appui-react/layout/StandardLayout.scss +3 -8
  226. package/lib/esm/appui-react/widgets/BackstageAppButton.scss +8 -3
  227. package/package.json +29 -30
  228. package/lib/appui-react/accudraw/angle.svg +0 -1
  229. package/lib/appui-react/accudraw/backspace.svg +0 -9
  230. package/lib/appui-react/accudraw/constraint-2d.svg +0 -11
  231. package/lib/appui-react/accudraw/distance.svg +0 -1
  232. package/lib/appui-react/accudraw/height-2.svg +0 -10
  233. package/lib/appui-react/accudraw/height.svg +0 -11
  234. package/lib/appui-react/statusfields/toolassistance/accept-point.svg +0 -1
  235. package/lib/appui-react/statusfields/toolassistance/cursor-click.svg +0 -1
  236. package/lib/appui-react/statusfields/toolassistance/gesture-one-finger-drag.svg +0 -1
  237. package/lib/appui-react/statusfields/toolassistance/gesture-one-finger-tap-double.svg +0 -1
  238. package/lib/appui-react/statusfields/toolassistance/gesture-one-finger-tap.svg +0 -1
  239. package/lib/appui-react/statusfields/toolassistance/gesture-pinch.svg +0 -1
  240. package/lib/appui-react/statusfields/toolassistance/gesture-two-finger-drag.svg +0 -1
  241. package/lib/appui-react/statusfields/toolassistance/gesture-two-finger-tap.svg +0 -1
  242. package/lib/appui-react/statusfields/toolassistance/mouse-click-left-drag.svg +0 -1
  243. package/lib/appui-react/statusfields/toolassistance/mouse-click-left.svg +0 -1
  244. package/lib/appui-react/statusfields/toolassistance/mouse-click-right-drag.svg +0 -1
  245. package/lib/appui-react/statusfields/toolassistance/mouse-click-right.svg +0 -1
  246. package/lib/appui-react/statusfields/toolassistance/mouse-click-wheel-drag.svg +0 -1
  247. package/lib/appui-react/statusfields/toolassistance/mouse-click-wheel.svg +0 -1
  248. package/lib/appui-react/statusfields/toolassistance/touch-cursor-pan.svg +0 -1
  249. package/lib/appui-react/statusfields/toolassistance/touch-cursor-point.svg +0 -1
  250. package/lib/cjs/appui-react/accudraw/angle.svg +0 -1
  251. package/lib/cjs/appui-react/accudraw/backspace.svg +0 -9
  252. package/lib/cjs/appui-react/accudraw/constraint-2d.svg +0 -11
  253. package/lib/cjs/appui-react/accudraw/distance.svg +0 -1
  254. package/lib/cjs/appui-react/accudraw/height-2.svg +0 -10
  255. package/lib/cjs/appui-react/accudraw/height.svg +0 -11
  256. package/lib/cjs/appui-react/statusfields/toolassistance/accept-point.svg +0 -1
  257. package/lib/cjs/appui-react/statusfields/toolassistance/cursor-click.svg +0 -1
  258. package/lib/cjs/appui-react/statusfields/toolassistance/gesture-one-finger-drag.svg +0 -1
  259. package/lib/cjs/appui-react/statusfields/toolassistance/gesture-one-finger-tap-double.svg +0 -1
  260. package/lib/cjs/appui-react/statusfields/toolassistance/gesture-one-finger-tap.svg +0 -1
  261. package/lib/cjs/appui-react/statusfields/toolassistance/gesture-pinch.svg +0 -1
  262. package/lib/cjs/appui-react/statusfields/toolassistance/gesture-two-finger-drag.svg +0 -1
  263. package/lib/cjs/appui-react/statusfields/toolassistance/gesture-two-finger-tap.svg +0 -1
  264. package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-left-drag.svg +0 -1
  265. package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-left.svg +0 -1
  266. package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-right-drag.svg +0 -1
  267. package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-right.svg +0 -1
  268. package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-wheel-drag.svg +0 -1
  269. package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-wheel.svg +0 -1
  270. package/lib/cjs/appui-react/statusfields/toolassistance/touch-cursor-pan.svg +0 -1
  271. package/lib/cjs/appui-react/statusfields/toolassistance/touch-cursor-point.svg +0 -1
  272. package/lib/esm/appui-react/accudraw/angle.svg +0 -1
  273. package/lib/esm/appui-react/accudraw/backspace.svg +0 -9
  274. package/lib/esm/appui-react/accudraw/constraint-2d.svg +0 -11
  275. package/lib/esm/appui-react/accudraw/distance.svg +0 -1
  276. package/lib/esm/appui-react/accudraw/height-2.svg +0 -10
  277. package/lib/esm/appui-react/accudraw/height.svg +0 -11
  278. package/lib/esm/appui-react/statusfields/toolassistance/accept-point.svg +0 -1
  279. package/lib/esm/appui-react/statusfields/toolassistance/cursor-click.svg +0 -1
  280. package/lib/esm/appui-react/statusfields/toolassistance/gesture-one-finger-drag.svg +0 -1
  281. package/lib/esm/appui-react/statusfields/toolassistance/gesture-one-finger-tap-double.svg +0 -1
  282. package/lib/esm/appui-react/statusfields/toolassistance/gesture-one-finger-tap.svg +0 -1
  283. package/lib/esm/appui-react/statusfields/toolassistance/gesture-pinch.svg +0 -1
  284. package/lib/esm/appui-react/statusfields/toolassistance/gesture-two-finger-drag.svg +0 -1
  285. package/lib/esm/appui-react/statusfields/toolassistance/gesture-two-finger-tap.svg +0 -1
  286. package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-left-drag.svg +0 -1
  287. package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-left.svg +0 -1
  288. package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-right-drag.svg +0 -1
  289. package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-right.svg +0 -1
  290. package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-wheel-drag.svg +0 -1
  291. package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-wheel.svg +0 -1
  292. package/lib/esm/appui-react/statusfields/toolassistance/touch-cursor-pan.svg +0 -1
  293. package/lib/esm/appui-react/statusfields/toolassistance/touch-cursor-point.svg +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"NineZoneStateReducer.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/state/NineZoneStateReducer.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 } from \"immer\";\nimport { Point, Rectangle } from \"@itwin/core-react/internal\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { TabState } from \"./TabState.js\";\nimport { getWidgetLocation, isPanelWidgetLocation } from \"./WidgetLocation.js\";\nimport type { NineZoneAction } from \"./NineZoneAction.js\";\nimport {\n isPanelDropTargetState,\n isSectionDropTargetState,\n isTabDropTargetState,\n isWidgetDropTargetState,\n isWindowDropTargetState,\n} from \"./DropTargetState.js\";\nimport { getWidgetPanelSectionId } from \"./PanelState.js\";\nimport type { NineZoneState } from \"./NineZoneState.js\";\nimport type { PopoutWidgetState, WidgetState } from \"./WidgetState.js\";\nimport {\n addPanelWidget,\n getPanelPixelSizeFromSpec,\n getPanelSize,\n insertPanelWidget,\n updatePanelState,\n} from \"./internal/PanelStateHelpers.js\";\nimport {\n addRemovedTab,\n addTab,\n addTabToWidget,\n removeTab,\n removeTabFromWidget,\n updateSavedTabState,\n updateTabState,\n} from \"./internal/TabStateHelpers.js\";\nimport {\n initSizeProps,\n isToolSettingsFloatingWidget,\n setPointProps,\n setSizeProps,\n updateHomeOfToolSettingsWidget,\n} from \"./internal/NineZoneStateHelpers.js\";\nimport {\n addFloatingWidget,\n addPopoutWidget,\n addWidgetState,\n floatingWidgetBringToFront,\n getWidgetState,\n removeFloatingWidget,\n removePanelWidget,\n removePopoutWidget,\n removeWidget,\n setWidgetActiveTabId,\n updateFloatingWidgetState,\n updateWidgetState,\n} from \"./internal/WidgetStateHelpers.js\";\nimport { getSendBackHomeState } from \"../widget/SendBack.js\";\nimport { panelSides } from \"../widget-panels/Panel.js\";\nimport type { TabLocation } from \"./TabLocation.js\";\nimport {\n getTabLocation,\n isFloatingTabLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n} from \"./TabLocation.js\";\nimport { getUniqueId } from \"../base/NineZone.js\";\nimport {\n isPanelWidgetRestoreState,\n type PanelWidgetRestoreState,\n} from \"./WidgetRestoreState.js\";\nimport { addDockedToolSettings } from \"./internal/ToolSettingsStateHelpers.js\";\n\n/** @internal */\nexport function NineZoneStateReducer(\n state: NineZoneState,\n action: NineZoneAction\n): NineZoneState {\n switch (action.type) {\n case \"RESIZE\": {\n state = produce(state, (draft) => {\n setSizeProps(draft.size, action.size);\n });\n const nzBounds = Rectangle.createFromSize(action.size);\n for (const id of state.floatingWidgets.allIds) {\n const floatingWidget = state.floatingWidgets.byId[id];\n const bounds = Rectangle.create(floatingWidget.bounds);\n const containedBounds = bounds.containIn(nzBounds);\n state = updateFloatingWidgetState(state, id, {\n bounds: containedBounds.toProps(),\n });\n }\n for (const side of panelSides) {\n state = updatePanelState(state, side, (draft) => {\n const size = getPanelSize(\n draft.size,\n side,\n draft.minSize,\n draft.maxSize,\n state.size\n );\n draft.size = size;\n });\n }\n return state;\n }\n case \"PANEL_TOGGLE_COLLAPSED\": {\n return updatePanelState(state, action.side, (draft) => {\n draft.collapsed = !draft.collapsed;\n });\n }\n case \"PANEL_SET_COLLAPSED\": {\n return updatePanelState(state, action.side, (draft) => {\n draft.collapsed = action.collapsed;\n });\n }\n case \"PANEL_SET_SIZE\": {\n const { side, size: preferredSize } = action;\n\n return updatePanelState(state, side, (draft) => {\n const size = getPanelSize(\n preferredSize,\n draft.side,\n draft.minSize,\n draft.maxSize,\n state.size\n );\n draft.size = size;\n });\n }\n case \"PANEL_SET_MIN_SIZE\": {\n return updatePanelState(state, action.side, (draft) => {\n const size = getPanelSize(\n draft.size,\n draft.side,\n action.minSize,\n draft.maxSize,\n state.size\n );\n\n const minSizeInPixels = getPanelPixelSizeFromSpec(\n draft.side,\n state.size,\n action.minSize\n );\n draft.minSize = minSizeInPixels;\n draft.size = size;\n });\n }\n case \"PANEL_SET_MAX_SIZE\": {\n return updatePanelState(state, action.side, (draft) => {\n const size = getPanelSize(\n draft.size,\n draft.side,\n draft.minSize,\n action.maxSize,\n state.size\n );\n\n draft.maxSize = action.maxSize;\n draft.size = size;\n });\n }\n case \"PANEL_SET_RESIZABLE\": {\n return updatePanelState(state, action.side, (draft) => {\n draft.resizable = action.resizable;\n });\n }\n case \"PANEL_SET_SPLITTER_VALUE\": {\n const splitterPercent = Math.min(Math.max(action.percent, 0), 100);\n return updatePanelState(state, action.side, (draft) => {\n draft.splitterPercent = splitterPercent;\n });\n }\n case \"PANEL_TOGGLE_SPAN\": {\n const { side } = action;\n return updatePanelState(state, side, (draft) => {\n draft.span = !draft.span;\n });\n }\n case \"PANEL_SET_PINNED\": {\n return updatePanelState(state, action.side, (draft) => {\n draft.pinned = action.pinned;\n });\n }\n case \"PANEL_TOGGLE_PINNED\": {\n return updatePanelState(state, action.side, (draft) => {\n draft.pinned = !draft.pinned;\n });\n }\n case \"PANEL_INITIALIZE\": {\n return updatePanelState(state, action.side, (draft) => {\n const size = getPanelSize(\n action.size,\n draft.side,\n draft.minSize,\n draft.maxSize,\n state.size\n );\n draft.size = size;\n });\n }\n case \"PANEL_WIDGET_DRAG_START\": {\n const { side, newFloatingWidgetId } = action;\n const panel = state.panels[side];\n const widgetIndex = panel.widgets.indexOf(action.id);\n const widget = getWidgetState(state, action.id);\n state = removePanelWidget(state, action.id);\n return addFloatingWidget(\n state,\n newFloatingWidgetId,\n widget.tabs,\n {\n bounds: Rectangle.create(action.bounds).toProps(),\n userSized: action.userSized,\n id: action.newFloatingWidgetId,\n home: {\n side: action.side,\n widgetId: \"\",\n widgetIndex,\n },\n },\n {\n ...widget,\n minimized: false,\n }\n );\n }\n case \"WIDGET_DRAG\": {\n const { floatingWidgetId, dragBy } = action;\n const floatingWidget = state.floatingWidgets.byId[floatingWidgetId];\n const newBounds = Rectangle.create(floatingWidget.bounds).offset(dragBy);\n return updateFloatingWidgetState(state, floatingWidgetId, {\n bounds: newBounds.toProps(),\n });\n }\n case \"WIDGET_DRAG_END\": {\n // TODO: handle duplicates in WIDGET_TAB_DRAG_END action\n const { target, floatingWidgetId } = action;\n const floatingWidget = state.floatingWidgets.byId[floatingWidgetId];\n const draggedWidget = getWidgetState(state, floatingWidgetId);\n\n if (isWindowDropTargetState(target)) {\n const nzBounds = Rectangle.createFromSize(state.size);\n let newBounds = Rectangle.create(floatingWidget.bounds);\n if (draggedWidget.minimized) {\n const containedBounds = newBounds.setHeight(35).containIn(nzBounds);\n newBounds = newBounds.setPosition(containedBounds.topLeft());\n } else {\n newBounds = newBounds.containIn(nzBounds);\n }\n state = updateFloatingWidgetState(state, floatingWidgetId, {\n bounds: newBounds.toProps(),\n });\n return floatingWidgetBringToFront(state, floatingWidgetId);\n }\n\n state = removeFloatingWidget(state, floatingWidgetId);\n if (isTabDropTargetState(target)) {\n state = updateHomeOfToolSettingsWidget(\n state,\n target.widgetId,\n floatingWidget.home\n );\n const targetWidget = getWidgetState(state, target.widgetId);\n const tabs = [...targetWidget.tabs];\n tabs.splice(target.tabIndex, 0, ...draggedWidget.tabs);\n state = updateWidgetState(state, target.widgetId, {\n tabs,\n activeTabId: draggedWidget.activeTabId,\n });\n } else if (isSectionDropTargetState(target)) {\n state = updatePanelState(state, target.side, (draft) => {\n draft.widgets.splice(target.sectionIndex, 0, target.newWidgetId);\n draft.collapsed = false;\n });\n state = addWidgetState(\n state,\n target.newWidgetId,\n draggedWidget.tabs,\n draggedWidget\n );\n } else if (isWidgetDropTargetState(target)) {\n state = updateHomeOfToolSettingsWidget(\n state,\n target.widgetId,\n floatingWidget.home\n );\n const widget = getWidgetLocation(state, target.widgetId);\n if (widget && isPanelWidgetLocation(widget)) {\n state = updatePanelState(state, widget.side, (draft) => {\n draft.collapsed = false;\n });\n }\n const targetWidget = getWidgetState(state, target.widgetId);\n const tabs = [...targetWidget.tabs];\n tabs.splice(targetWidget.tabs.length, 0, ...draggedWidget.tabs);\n state = updateWidgetState(state, target.widgetId, {\n tabs,\n activeTabId: draggedWidget.activeTabId,\n });\n } else {\n const panelSectionId = getWidgetPanelSectionId(target.side, 0);\n state = updatePanelState(state, target.side, (draft) => {\n draft.widgets = [panelSectionId];\n draft.collapsed = false;\n });\n state = addWidgetState(state, panelSectionId, draggedWidget.tabs, {\n ...draggedWidget,\n minimized: false,\n });\n }\n return state;\n }\n case \"FLOATING_WIDGET_RESIZE\": {\n const { resizeBy } = action;\n const widget = getWidgetState(state, action.id);\n\n const floatingWidget = state.floatingWidgets.byId[action.id];\n // if this is not a tool settings widget then set the userSized flag\n if (!isToolSettingsFloatingWidget(state, action.id)) {\n state = updateFloatingWidgetState(state, action.id, {\n userSized: true,\n });\n }\n\n const minWidth = 200;\n const minHeight = 120;\n let newBounds = Rectangle.create(floatingWidget.bounds);\n\n // Resize top-left corner.\n const maxLeft = newBounds.right - minWidth;\n const maxTop = newBounds.bottom - minHeight;\n\n newBounds = newBounds.inset(-resizeBy.left, -resizeBy.top, 0, 0);\n const left = Math.min(maxLeft, newBounds.left);\n const top = Math.min(maxTop, newBounds.top);\n newBounds = new Rectangle(left, top, newBounds.right, newBounds.bottom);\n\n // Resize bottom-right corner.\n const minRight = newBounds.left + minWidth;\n const minBottom = newBounds.top + minHeight;\n\n newBounds = newBounds.inset(0, 0, -resizeBy.right, -resizeBy.bottom);\n const right = Math.max(minRight, newBounds.right);\n const bottom = Math.max(minBottom, newBounds.bottom);\n newBounds = new Rectangle(left, top, right, bottom);\n\n state = updateFloatingWidgetState(state, action.id, {\n bounds: newBounds,\n });\n\n const tab = state.tabs[widget.activeTabId];\n if (tab.isFloatingWidgetResizable) {\n const size = newBounds.getSize();\n state = updateTabState(state, widget.activeTabId, (draft) => {\n initSizeProps(draft, \"preferredFloatingWidgetSize\", size);\n draft.userSized = true;\n });\n }\n\n return state;\n }\n case \"FLOATING_WIDGET_SET_BOUNDS\": {\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.create(action.bounds).containIn(nzBounds);\n return updateFloatingWidgetState(state, action.id, {\n bounds: bounds.toProps(),\n });\n }\n case \"FLOATING_WIDGET_CLEAR_USER_SIZED\": {\n return produce(state, (draft) => {\n const floatingWidget = draft.floatingWidgets.byId[action.id];\n floatingWidget.userSized = false;\n const widget = getWidgetState(draft, action.id);\n const tab = draft.tabs[widget.activeTabId];\n tab.userSized = false;\n });\n }\n case \"FLOATING_WIDGET_SET_USER_SIZED\": {\n return produce(state, (draft) => {\n const floatingWidget = draft.floatingWidgets.byId[action.id];\n floatingWidget.userSized = action.userSized;\n });\n }\n case \"FLOATING_WIDGET_BRING_TO_FRONT\": {\n return floatingWidgetBringToFront(state, action.id);\n }\n case \"FLOATING_WIDGET_SEND_BACK\": {\n const widget = getWidgetState(state, action.id);\n const sendBackHomeState = getSendBackHomeState(state, action.id);\n\n // Add tabs to an existing widget.\n if (sendBackHomeState.widgetId) {\n const destinationWidget = state.widgets[sendBackHomeState.widgetId];\n const tabs = [...destinationWidget.tabs, ...widget.tabs];\n state = updateWidgetState(state, destinationWidget.id, {\n tabs,\n });\n return removeWidget(state, widget.id);\n }\n\n const sectionIndex = sendBackHomeState.sectionIndex ?? 0;\n const home = state.floatingWidgets.byId[action.id].home;\n const destinationWidgetId = home.widgetId\n ? home.widgetId\n : getWidgetPanelSectionId(home.side, sectionIndex);\n\n // Add tabs to a new panel widget.\n state = removeWidget(state, widget.id);\n return insertPanelWidget(\n state,\n sendBackHomeState.side,\n destinationWidgetId,\n widget.tabs,\n sectionIndex\n );\n }\n case \"POPOUT_WIDGET_SEND_BACK\": {\n const popoutWidget = state.popoutWidgets.byId[action.id];\n const widget = getWidgetState(state, action.id);\n const home = popoutWidget.home;\n\n state = removeWidget(state, widget.id);\n\n // Determine existing widget.\n let existingWidget: WidgetState | undefined;\n if (home.widgetId in state.widgets) {\n existingWidget = state.widgets[home.widgetId];\n } else if (isPanelWidgetRestoreState(home)) {\n const panel = state.panels[home.side];\n const panelSectionId = getWidgetPanelSectionId(\n home.side,\n home.widgetIndex\n );\n existingWidget = state.widgets[panelSectionId];\n\n // Can not add additional sections, add to an existing one.\n if (!existingWidget && panel.widgets.length >= panel.maxWidgetCount) {\n const sectionIndex = Math.min(\n panel.maxWidgetCount - 1,\n home.widgetIndex\n );\n const sectionId = panel.widgets[sectionIndex];\n existingWidget = state.widgets[sectionId];\n }\n }\n\n // Add to an existing widget.\n if (existingWidget) {\n const tabs = [...existingWidget.tabs, ...widget.tabs];\n return updateWidgetState(state, existingWidget.id, {\n tabs,\n });\n }\n\n // Insert a new panel section.\n if (isPanelWidgetRestoreState(home)) {\n const sectionId = home.widgetId\n ? home.widgetId\n : getWidgetPanelSectionId(home.side, home.widgetIndex);\n return insertPanelWidget(\n state,\n home.side,\n sectionId,\n [...widget.tabs],\n home.widgetIndex\n );\n }\n\n // Add a new floating widget.\n return addFloatingWidget(\n state,\n home.widgetId,\n widget.tabs,\n home.floatingWidget\n );\n }\n case \"WIDGET_TAB_ADD_TO_WIDGET\": {\n const { id, widgetId } = action;\n return addTabToWidget(state, id, widgetId);\n }\n case \"WIDGET_TAB_CLICK\": {\n const { id, widgetId } = action;\n state = setWidgetActiveTabId(state, widgetId, id);\n return updateWidgetState(state, widgetId, {\n minimized: false,\n });\n }\n case \"WIDGET_TAB_DOUBLE_CLICK\": {\n if (action.floatingWidgetId === undefined) return state;\n\n const widget = getWidgetState(state, action.widgetId);\n const active = action.id === widget.activeTabId;\n if (!active) return setWidgetActiveTabId(state, widget.id, action.id);\n\n return updateWidgetState(state, widget.id, {\n minimized: !widget.minimized,\n });\n }\n case \"WIDGET_TAB_DRAG_START\": {\n const tabId = action.id;\n let home: PanelWidgetRestoreState;\n\n if (action.floatingWidgetId) {\n const floatingWidget =\n state.floatingWidgets.byId[action.floatingWidgetId];\n home = floatingWidget.home;\n } else {\n assert(!!action.side);\n const panel = state.panels[action.side];\n const widgetIndex = panel.widgets.indexOf(action.widgetId);\n home = {\n side: action.side,\n widgetId: action.widgetId,\n widgetIndex,\n };\n }\n\n const widget = getWidgetState(state, action.widgetId);\n const active = action.id === widget.activeTabId;\n state = produce(state, (draft) => {\n draft.draggedTab = {\n tabId,\n position: Point.create(action.position).toProps(),\n home,\n active,\n };\n });\n return removeTabFromWidget(state, tabId);\n }\n case \"WIDGET_TAB_DRAG\": {\n return produce(state, (draft) => {\n const draggedTab = draft.draggedTab;\n assert(!!draggedTab);\n const position = Point.create(draggedTab.position).offset(\n action.dragBy\n );\n setPointProps(draggedTab.position, position);\n });\n }\n case \"WIDGET_TAB_DRAG_END\": {\n assert(!!state.draggedTab);\n const wasActive = state.draggedTab.active;\n const target = action.target;\n if (isTabDropTargetState(target)) {\n state = updateHomeOfToolSettingsWidget(\n state,\n target.widgetId,\n state.draggedTab.home\n );\n const targetWidget = getWidgetState(state, target.widgetId);\n const tabIndex = target.tabIndex;\n const tabs = [...targetWidget.tabs];\n tabs.splice(tabIndex, 0, action.id);\n const activeTabId = wasActive ? action.id : targetWidget.activeTabId;\n state = updateWidgetState(state, targetWidget.id, {\n tabs,\n activeTabId,\n });\n } else if (isPanelDropTargetState(target)) {\n state = updatePanelState(state, target.side, (draft) => {\n draft.widgets.push(target.newWidgetId);\n draft.collapsed = false;\n });\n state = addWidgetState(state, target.newWidgetId, [action.id]);\n } else if (isSectionDropTargetState(target)) {\n state = updatePanelState(state, target.side, (draft) => {\n draft.widgets.splice(target.sectionIndex, 0, target.newWidgetId);\n draft.collapsed = false;\n });\n state = addWidgetState(state, target.newWidgetId, [action.id]);\n } else if (isWidgetDropTargetState(target)) {\n updateHomeOfToolSettingsWidget(\n state,\n target.widgetId,\n state.draggedTab.home\n );\n const widget = getWidgetLocation(state, target.widgetId);\n if (widget && isPanelWidgetLocation(widget)) {\n state = updatePanelState(state, widget.side, (draft) => {\n draft.collapsed = false;\n });\n }\n const targetWidget = getWidgetState(state, target.widgetId);\n const tabIndex = targetWidget.tabs.length;\n const tabs = [...targetWidget.tabs];\n tabs.splice(tabIndex, 0, action.id);\n const activeTabId = wasActive ? action.id : targetWidget.activeTabId;\n state = updateWidgetState(state, targetWidget.id, {\n tabs,\n activeTabId,\n });\n } else {\n const tab = state.tabs[state.draggedTab.tabId];\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.createFromSize(\n tab.preferredFloatingWidgetSize || target.size\n ).offset(state.draggedTab.position);\n const containedBounds = bounds.containIn(nzBounds);\n const userSized =\n tab.userSized ||\n (tab.isFloatingWidgetResizable && !!tab.preferredFloatingWidgetSize);\n\n state = addFloatingWidget(\n state,\n target.newFloatingWidgetId,\n [action.id],\n {\n bounds: containedBounds,\n home: state.draggedTab.home,\n userSized,\n }\n );\n }\n return produce(state, (draft) => {\n draft.draggedTab = undefined;\n });\n }\n case \"WIDGET_TAB_POPOUT\": {\n const { id, position, size } = action;\n const location = getTabLocation(state, id);\n if (location && isPopoutTabLocation(location)) return state;\n\n const savedTab = state.savedTabs.byId[id];\n\n const tab = state.tabs[id];\n\n let contentHeight = 800;\n let contentWidth = 600;\n\n if (tab.preferredFloatingWidgetSize) {\n contentWidth = tab.preferredFloatingWidgetSize.width;\n contentHeight = tab.preferredFloatingWidgetSize.height;\n } else {\n // TODO: reducers should be pure\n const popoutContentContainer = document.getElementById(\n `content-container:${id}`\n );\n if (popoutContentContainer !== null) {\n contentWidth = popoutContentContainer.offsetWidth + 20;\n contentHeight = popoutContentContainer.offsetHeight + 20;\n }\n }\n\n let preferredBounds = Rectangle.createFromSize({\n height: contentHeight,\n width: contentWidth,\n });\n if (savedTab?.popout) {\n preferredBounds = Rectangle.createFromSize(savedTab.popout.contentSize);\n preferredBounds = preferredBounds.offset(savedTab.popout.position);\n }\n\n if (size) preferredBounds = preferredBounds.setSize(size);\n if (position) preferredBounds = preferredBounds.setPosition(position);\n\n const popoutWidgetId = getUniqueId();\n let home: PopoutWidgetState[\"home\"] | undefined;\n if (location && isPanelTabLocation(location)) {\n const panel = state.panels[location.side];\n const widgetIndex = panel.widgets.indexOf(location.widgetId);\n home = {\n side: location.side,\n widgetId: location.widgetId,\n widgetIndex,\n };\n } else if (location && isFloatingTabLocation(location)) {\n const floatingWidget =\n state.floatingWidgets.byId[location.floatingWidgetId];\n home = {\n widgetId: floatingWidget.id,\n floatingWidget,\n };\n }\n\n state = removeTabFromWidget(state, id);\n return addPopoutWidget(state, popoutWidgetId, [id], {\n bounds: preferredBounds.toProps(),\n home,\n });\n }\n case \"WIDGET_TAB_HIDE\": {\n return hideTab(state, action.id);\n }\n case \"WIDGET_TAB_REMOVE\": {\n // Save tab state.\n state = hideTab(state, action.id);\n // Remove tab.\n return removeTab(state, action.id);\n }\n case \"WIDGET_TAB_SET_LABEL\": {\n return updateTabState(state, action.id, (draft) => {\n draft.label = action.label;\n });\n }\n case \"WIDGET_TAB_OPEN\": {\n return openWidgetTab(state, action.id);\n }\n case \"WIDGET_TAB_CLOSE\": {\n const { id } = action;\n if (\n state.toolSettings?.tabId === id &&\n state.toolSettings.type === \"docked\"\n ) {\n return state;\n }\n\n let location: TabLocation;\n [state, location] = unhideTab(state, id);\n\n // TODO: should change activeTabId of a widget with multiple tabs.\n const widget = state.widgets[location.widgetId];\n if (isFloatingTabLocation(location) && id === widget.activeTabId) {\n state = updateWidgetState(state, widget.id, {\n minimized: true,\n });\n }\n return state;\n }\n case \"WIDGET_TAB_FLOAT\": {\n const { id, position, size } = action;\n\n let location: TabLocation;\n [state, location] = unhideTab(state, id);\n\n if (isFloatingTabLocation(location)) return state;\n\n const tab = state.tabs[id];\n const preferredSize = size ??\n tab.preferredFloatingWidgetSize ?? { height: 400, width: 400 };\n const preferredPosition = position ?? { x: 50, y: 100 };\n const preferredBounds =\n Rectangle.createFromSize(preferredSize).offset(preferredPosition);\n const nzBounds = Rectangle.createFromSize(state.size);\n const containedBounds = preferredBounds.containIn(nzBounds);\n\n const userSized =\n tab.userSized ||\n (tab.isFloatingWidgetResizable && !!tab.preferredFloatingWidgetSize);\n\n if (isPanelTabLocation(location)) {\n const panel = state.panels[location.side];\n const widgetIndex = panel.widgets.indexOf(location.widgetId);\n\n state = updateTabState(state, id, (draft) => {\n initSizeProps(draft, \"preferredFloatingWidgetSize\", preferredSize);\n });\n state = removeTabFromWidget(state, id);\n state = addFloatingWidget(state, id, [id], {\n bounds: containedBounds,\n home: {\n side: location.side,\n widgetId: location.widgetId,\n widgetIndex,\n },\n userSized,\n });\n } else {\n const popoutWidgetId = location.popoutWidgetId;\n const popoutWidget = state.popoutWidgets.byId[popoutWidgetId];\n const widget = state.widgets[popoutWidgetId];\n state = removePopoutWidget(state, popoutWidgetId);\n\n const bounds = popoutWidget.bounds;\n const home = popoutWidget.home;\n\n state = addFloatingWidget(\n state,\n popoutWidgetId,\n [id],\n {\n bounds,\n home: isPanelWidgetRestoreState(home)\n ? home\n : home.floatingWidget.home,\n },\n widget\n );\n }\n\n const isToolSettings = state.toolSettings?.tabId === id;\n if (isToolSettings) {\n state = produce(state, (draft) => {\n assert(!!draft.toolSettings);\n draft.toolSettings.type = \"widget\";\n });\n }\n\n return state;\n }\n case \"WIDGET_TAB_SET_POPOUT_BOUNDS\": {\n return updateSavedTabState(state, action.id, (draft) => {\n draft.popout = {\n position: action.position,\n contentSize: action.contentSize,\n size: action.size,\n };\n });\n }\n case \"WIDGET_TAB_SHOW\": {\n return showWidgetTab(state, action.id);\n }\n case \"WIDGET_TAB_UNLOAD\": {\n state = hideTab(state, action.id);\n return updateTabState(state, action.id, (draft) => {\n draft.unloaded = true;\n });\n }\n case \"WIDGET_TAB_EXPAND\": {\n state = showWidgetTab(state, action.id);\n const location = getTabLocation(state, action.id);\n if (location && isPanelTabLocation(location)) {\n state = updatePanelState(state, location.side, (draft) => {\n draft.splitterPercent =\n draft.widgets.findIndex((wId) => wId === location.widgetId) === 0\n ? 100\n : 0;\n });\n }\n return state;\n }\n case \"WIDGET_TAB_UPDATE\": {\n return updateTabState(state, action.id, (draft) => {\n for (const [key, val] of Object.entries(action.overrides)) {\n (draft as any)[key] = val;\n }\n });\n }\n case \"TOOL_SETTINGS_DRAG_START\": {\n if (!state.toolSettings) return state;\n if (state.toolSettings.type === \"widget\") return state;\n\n const { newFloatingWidgetId } = action;\n const tabId = state.toolSettings.tabId;\n\n const tab = state.tabs[tabId];\n const size = tab.preferredFloatingWidgetSize || {\n height: 200,\n width: 300,\n };\n state = addFloatingWidget(state, newFloatingWidgetId, [tabId], {\n bounds: Rectangle.createFromSize(size).toProps(),\n });\n return produce(state, (draft) => {\n assert(!!draft.toolSettings);\n draft.toolSettings.type = \"widget\";\n });\n }\n case \"TOOL_SETTINGS_DOCK\": {\n if (!state.toolSettings) return state;\n if (state.toolSettings.type === \"docked\") return state;\n\n state = removeTabFromWidget(state, state.toolSettings.tabId);\n return produce(state, (draft) => {\n assert(!!draft.toolSettings);\n draft.toolSettings.type = \"docked\";\n });\n }\n case \"WIDGET_DEF_ADD\": {\n state = addTab(state, action.id, action.overrides);\n\n const savedTab = state.savedTabs.byId[action.id];\n if (savedTab) {\n // Restore to saved state.\n return addRemovedTab(state, action.id);\n }\n\n // Add to a floating widget.\n if (action.location === \"floating\") {\n // Add to an existing floating widget.\n if (action.floatingWidget.id in state.widgets) {\n return addTabToWidget(state, action.id, action.floatingWidget.id);\n }\n\n const size = action.overrides?.preferredFloatingWidgetSize ?? {\n height: 200,\n width: 300,\n };\n const position = action.floatingWidget.preferredPosition ?? {\n x: (state.size.width - size.width) / 2,\n y: (state.size.height - size.height) / 2,\n };\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.createFromSize(size).offset(position);\n const containedBounds = bounds.containIn(nzBounds);\n\n const userSized = !!action.overrides?.preferredFloatingWidgetSize;\n return addFloatingWidget(state, action.floatingWidget.id, [action.id], {\n bounds: containedBounds.toProps(),\n home: {\n side: action.panelSection.side,\n widgetId: action.panelSection.id,\n widgetIndex: 0,\n },\n userSized,\n });\n }\n\n // Add to a panel section.\n const side = action.panelSection.side;\n // Add to an existing panel section.\n if (action.panelSection.id in state.widgets) {\n return addTabToWidget(state, action.id, action.panelSection.id);\n }\n\n const panel = state.panels[side];\n // Add to a new panel section.\n if (panel.widgets.length < panel.maxWidgetCount) {\n return addPanelWidget(state, side, action.panelSection.id, [action.id]);\n }\n\n // Can't add additional sections, add to an existing one.\n const sectionIndex = Math.min(\n action.panelSection.index,\n panel.widgets.length - 1\n );\n const existingSectionId = panel.widgets[sectionIndex];\n return addTabToWidget(state, action.id, existingSectionId);\n }\n case \"WIDGET_DEF_ADD_TOOL_SETTINGS\": {\n state = addTab(state, action.id, action.overrides);\n return addDockedToolSettings(state, action.id);\n }\n }\n return state;\n}\n\nfunction openWidgetTab(state: NineZoneState, id: TabState[\"id\"]) {\n if (\n state.toolSettings?.tabId === id &&\n state.toolSettings.type === \"docked\"\n ) {\n return produce(state, (draft) => {\n assert(draft.toolSettings!.type === \"docked\");\n draft.toolSettings!.hidden = false;\n });\n }\n\n let location: TabLocation;\n [state, location] = unhideTab(state, id);\n\n return produce(state, (draft) => {\n const widget = draft.widgets[location.widgetId];\n widget.minimized = false;\n widget.activeTabId = id;\n\n if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.collapsed = false;\n if (undefined === panel.size || 0 === panel.size) {\n panel.size = panel.minSize ?? 200;\n }\n }\n });\n}\n\nfunction showWidgetTab(state: NineZoneState, id: TabState[\"id\"]) {\n state = openWidgetTab(state, id);\n const location = getTabLocation(state, id);\n if (!location) return state;\n state = updateWidgetState(state, location.widgetId, {\n activeTabId: id,\n minimized: false,\n });\n if (isPanelTabLocation(location)) {\n state = updatePanelState(state, location.side, (draft) => {\n draft.collapsed = false;\n });\n }\n if (isFloatingTabLocation(location)) {\n state = floatingWidgetBringToFront(state, location.floatingWidgetId);\n }\n return state;\n}\n\nfunction unhideTab(state: NineZoneState, id: TabState[\"id\"]) {\n let location = getTabLocation(state, id);\n if (!location) {\n state = addRemovedTab(state, id);\n location = getTabLocation(state, id);\n assert(!!location);\n }\n state = updateTabState(state, id, (draft) => {\n draft.unloaded = false;\n });\n return [state, location] as const;\n}\n\nfunction hideTab(state: NineZoneState, id: TabState[\"id\"]) {\n state = produce(state, (draft) => {\n if (!draft.toolSettings) return;\n\n const isToolSettings = draft.toolSettings.tabId === id;\n if (isToolSettings && draft.toolSettings.type === \"docked\") {\n draft.toolSettings.hidden = true;\n }\n });\n\n state = updateTabState(state, id, (draft) => {\n draft.unloaded = false;\n });\n\n const location = getTabLocation(state, id);\n if (!location) return state;\n\n const widgetId = location.widgetId;\n const tabIndex = state.widgets[widgetId].tabs.indexOf(id);\n if (isFloatingTabLocation(location)) {\n const floatingWidget = state.floatingWidgets.byId[widgetId];\n // widgetDef.setFloatingContainerId(location.floatingWidgetId);\n state = updateSavedTabState(state, id, (draft) => {\n draft.home = {\n widgetId,\n tabIndex,\n floatingWidget,\n };\n });\n } else if (isPanelTabLocation(location)) {\n const side = location.side;\n const widgetIndex = state.panels[side].widgets.indexOf(widgetId);\n state = updateSavedTabState(state, id, (draft) => {\n draft.home = {\n widgetId,\n side,\n widgetIndex,\n tabIndex,\n };\n });\n }\n\n return removeTabFromWidget(state, id);\n}\n"]}
1
+ {"version":3,"file":"NineZoneStateReducer.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/state/NineZoneStateReducer.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 } from \"immer\";\nimport { Point, Rectangle } from \"@itwin/core-react/internal\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { TabState } from \"./TabState.js\";\nimport { getWidgetLocation, isPanelWidgetLocation } from \"./WidgetLocation.js\";\nimport type { NineZoneAction, WidgetDefAddAction } from \"./NineZoneAction.js\";\nimport {\n isPanelDropTargetState,\n isSectionDropTargetState,\n isTabDropTargetState,\n isWidgetDropTargetState,\n isWindowDropTargetState,\n} from \"./DropTargetState.js\";\nimport { getWidgetPanelSectionId } from \"./PanelState.js\";\nimport type { NineZoneState } from \"./NineZoneState.js\";\nimport type { PopoutWidgetState, WidgetState } from \"./WidgetState.js\";\nimport {\n addPanelWidget,\n getPanelPixelSizeFromSpec,\n getPanelSize,\n insertPanelWidget,\n updatePanelState,\n} from \"./internal/PanelStateHelpers.js\";\nimport {\n addRemovedTab,\n addTab,\n addTabToWidget,\n removeTab,\n removeTabFromWidget,\n updateSavedTabState,\n updateTabState,\n} from \"./internal/TabStateHelpers.js\";\nimport {\n initSizeProps,\n isToolSettingsFloatingWidget,\n setPointProps,\n setSizeProps,\n updateHomeOfToolSettingsWidget,\n} from \"./internal/NineZoneStateHelpers.js\";\nimport {\n addFloatingWidget,\n addPopoutWidget,\n addWidgetState,\n floatingWidgetBringToFront,\n getWidgetState,\n removeFloatingWidget,\n removePanelWidget,\n removePopoutWidget,\n removeWidget,\n setWidgetActiveTabId,\n updateFloatingWidgetState,\n updateWidgetState,\n} from \"./internal/WidgetStateHelpers.js\";\nimport { getSendBackHomeState } from \"../widget/SendBack.js\";\nimport { panelSides } from \"../widget-panels/Panel.js\";\nimport type { TabLocation } from \"./TabLocation.js\";\nimport {\n getTabLocation,\n isFloatingTabLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n} from \"./TabLocation.js\";\nimport { getUniqueId } from \"../base/NineZone.js\";\nimport {\n isPanelWidgetRestoreState,\n type PanelWidgetRestoreState,\n} from \"./WidgetRestoreState.js\";\nimport {\n addDockedToolSettings,\n addWidgetToolSettings,\n} from \"./internal/ToolSettingsStateHelpers.js\";\n\n/** @internal */\nexport function NineZoneStateReducer(\n state: NineZoneState,\n action: NineZoneAction\n): NineZoneState {\n switch (action.type) {\n case \"RESIZE\": {\n state = produce(state, (draft) => {\n setSizeProps(draft.size, action.size);\n });\n const nzBounds = Rectangle.createFromSize(action.size);\n for (const id of state.floatingWidgets.allIds) {\n const floatingWidget = state.floatingWidgets.byId[id];\n const bounds = Rectangle.create(floatingWidget.bounds);\n const containedBounds = bounds.containIn(nzBounds);\n state = updateFloatingWidgetState(state, id, {\n bounds: containedBounds.toProps(),\n });\n }\n for (const side of panelSides) {\n state = updatePanelState(state, side, (draft) => {\n const size = getPanelSize(\n draft.size,\n side,\n draft.minSize,\n draft.maxSize,\n state.size\n );\n draft.size = size;\n });\n }\n return state;\n }\n case \"PANEL_TOGGLE_COLLAPSED\": {\n return updatePanelState(state, action.side, (draft) => {\n draft.collapsed = !draft.collapsed;\n });\n }\n case \"PANEL_SET_COLLAPSED\": {\n return updatePanelState(state, action.side, (draft) => {\n draft.collapsed = action.collapsed;\n });\n }\n case \"PANEL_SET_SIZE\": {\n const { side, size: preferredSize } = action;\n\n return updatePanelState(state, side, (draft) => {\n const size = getPanelSize(\n preferredSize,\n draft.side,\n draft.minSize,\n draft.maxSize,\n state.size\n );\n draft.size = size;\n });\n }\n case \"PANEL_SET_MIN_SIZE\": {\n return updatePanelState(state, action.side, (draft) => {\n const size = getPanelSize(\n draft.size,\n draft.side,\n action.minSize,\n draft.maxSize,\n state.size\n );\n\n const minSizeInPixels = getPanelPixelSizeFromSpec(\n draft.side,\n state.size,\n action.minSize\n );\n draft.minSize = minSizeInPixels;\n draft.size = size;\n });\n }\n case \"PANEL_SET_MAX_SIZE\": {\n return updatePanelState(state, action.side, (draft) => {\n const size = getPanelSize(\n draft.size,\n draft.side,\n draft.minSize,\n action.maxSize,\n state.size\n );\n\n draft.maxSize = action.maxSize;\n draft.size = size;\n });\n }\n case \"PANEL_SET_RESIZABLE\": {\n return updatePanelState(state, action.side, (draft) => {\n draft.resizable = action.resizable;\n });\n }\n case \"PANEL_SET_SPLITTER_VALUE\": {\n const splitterPercent = Math.min(Math.max(action.percent, 0), 100);\n return updatePanelState(state, action.side, (draft) => {\n draft.splitterPercent = splitterPercent;\n });\n }\n case \"PANEL_TOGGLE_SPAN\": {\n const { side } = action;\n return updatePanelState(state, side, (draft) => {\n draft.span = !draft.span;\n });\n }\n case \"PANEL_SET_PINNED\": {\n return updatePanelState(state, action.side, (draft) => {\n draft.pinned = action.pinned;\n });\n }\n case \"PANEL_TOGGLE_PINNED\": {\n return updatePanelState(state, action.side, (draft) => {\n draft.pinned = !draft.pinned;\n });\n }\n case \"PANEL_INITIALIZE\": {\n return updatePanelState(state, action.side, (draft) => {\n const size = getPanelSize(\n action.size,\n draft.side,\n draft.minSize,\n draft.maxSize,\n state.size\n );\n draft.size = size;\n });\n }\n case \"PANEL_WIDGET_DRAG_START\": {\n const { side, newFloatingWidgetId } = action;\n const panel = state.panels[side];\n const widgetIndex = panel.widgets.indexOf(action.id);\n const widget = getWidgetState(state, action.id);\n state = removePanelWidget(state, action.id);\n return addFloatingWidget(\n state,\n newFloatingWidgetId,\n widget.tabs,\n {\n bounds: Rectangle.create(action.bounds).toProps(),\n userSized: action.userSized,\n id: action.newFloatingWidgetId,\n home: {\n side: action.side,\n widgetId: \"\",\n widgetIndex,\n },\n },\n {\n ...widget,\n minimized: false,\n }\n );\n }\n case \"WIDGET_DRAG\": {\n const { floatingWidgetId, dragBy } = action;\n const floatingWidget = state.floatingWidgets.byId[floatingWidgetId];\n const newBounds = Rectangle.create(floatingWidget.bounds).offset(dragBy);\n return updateFloatingWidgetState(state, floatingWidgetId, {\n bounds: newBounds.toProps(),\n });\n }\n case \"WIDGET_DRAG_END\": {\n // TODO: handle duplicates in WIDGET_TAB_DRAG_END action\n const { target, floatingWidgetId } = action;\n const floatingWidget = state.floatingWidgets.byId[floatingWidgetId];\n const draggedWidget = getWidgetState(state, floatingWidgetId);\n\n if (isWindowDropTargetState(target)) {\n const nzBounds = Rectangle.createFromSize(state.size);\n let newBounds = Rectangle.create(floatingWidget.bounds);\n if (draggedWidget.minimized) {\n const containedBounds = newBounds.setHeight(35).containIn(nzBounds);\n newBounds = newBounds.setPosition(containedBounds.topLeft());\n } else {\n newBounds = newBounds.containIn(nzBounds);\n }\n state = updateFloatingWidgetState(state, floatingWidgetId, {\n bounds: newBounds.toProps(),\n });\n return floatingWidgetBringToFront(state, floatingWidgetId);\n }\n\n state = removeFloatingWidget(state, floatingWidgetId);\n if (isTabDropTargetState(target)) {\n state = updateHomeOfToolSettingsWidget(\n state,\n target.widgetId,\n floatingWidget.home\n );\n const targetWidget = getWidgetState(state, target.widgetId);\n const tabs = [...targetWidget.tabs];\n tabs.splice(target.tabIndex, 0, ...draggedWidget.tabs);\n state = updateWidgetState(state, target.widgetId, {\n tabs,\n activeTabId: draggedWidget.activeTabId,\n });\n } else if (isSectionDropTargetState(target)) {\n state = updatePanelState(state, target.side, (draft) => {\n draft.widgets.splice(target.sectionIndex, 0, target.newWidgetId);\n draft.collapsed = false;\n });\n state = addWidgetState(\n state,\n target.newWidgetId,\n draggedWidget.tabs,\n draggedWidget\n );\n } else if (isWidgetDropTargetState(target)) {\n state = updateHomeOfToolSettingsWidget(\n state,\n target.widgetId,\n floatingWidget.home\n );\n const widget = getWidgetLocation(state, target.widgetId);\n if (widget && isPanelWidgetLocation(widget)) {\n state = updatePanelState(state, widget.side, (draft) => {\n draft.collapsed = false;\n });\n }\n const targetWidget = getWidgetState(state, target.widgetId);\n const tabs = [...targetWidget.tabs];\n tabs.splice(targetWidget.tabs.length, 0, ...draggedWidget.tabs);\n state = updateWidgetState(state, target.widgetId, {\n tabs,\n activeTabId: draggedWidget.activeTabId,\n });\n } else {\n const panelSectionId = getWidgetPanelSectionId(target.side, 0);\n state = updatePanelState(state, target.side, (draft) => {\n draft.widgets = [panelSectionId];\n draft.collapsed = false;\n });\n state = addWidgetState(state, panelSectionId, draggedWidget.tabs, {\n ...draggedWidget,\n minimized: false,\n });\n }\n return state;\n }\n case \"FLOATING_WIDGET_RESIZE\": {\n const { resizeBy } = action;\n const widget = getWidgetState(state, action.id);\n\n const floatingWidget = state.floatingWidgets.byId[action.id];\n // if this is not a tool settings widget then set the userSized flag\n if (!isToolSettingsFloatingWidget(state, action.id)) {\n state = updateFloatingWidgetState(state, action.id, {\n userSized: true,\n });\n }\n\n const minWidth = 200;\n const minHeight = 120;\n let newBounds = Rectangle.create(floatingWidget.bounds);\n\n // Resize top-left corner.\n const maxLeft = newBounds.right - minWidth;\n const maxTop = newBounds.bottom - minHeight;\n\n newBounds = newBounds.inset(-resizeBy.left, -resizeBy.top, 0, 0);\n const left = Math.min(maxLeft, newBounds.left);\n const top = Math.min(maxTop, newBounds.top);\n newBounds = new Rectangle(left, top, newBounds.right, newBounds.bottom);\n\n // Resize bottom-right corner.\n const minRight = newBounds.left + minWidth;\n const minBottom = newBounds.top + minHeight;\n\n newBounds = newBounds.inset(0, 0, -resizeBy.right, -resizeBy.bottom);\n const right = Math.max(minRight, newBounds.right);\n const bottom = Math.max(minBottom, newBounds.bottom);\n newBounds = new Rectangle(left, top, right, bottom);\n\n state = updateFloatingWidgetState(state, action.id, {\n bounds: newBounds,\n });\n\n const tab = state.tabs[widget.activeTabId];\n if (tab.isFloatingWidgetResizable) {\n const size = newBounds.getSize();\n state = updateTabState(state, widget.activeTabId, (draft) => {\n initSizeProps(draft, \"preferredFloatingWidgetSize\", size);\n draft.userSized = true;\n });\n }\n\n return state;\n }\n case \"FLOATING_WIDGET_SET_BOUNDS\": {\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.create(action.bounds).containIn(nzBounds);\n return updateFloatingWidgetState(state, action.id, {\n bounds: bounds.toProps(),\n });\n }\n case \"FLOATING_WIDGET_CLEAR_USER_SIZED\": {\n return produce(state, (draft) => {\n const floatingWidget = draft.floatingWidgets.byId[action.id];\n floatingWidget.userSized = false;\n const widget = getWidgetState(draft, action.id);\n const tab = draft.tabs[widget.activeTabId];\n tab.userSized = false;\n });\n }\n case \"FLOATING_WIDGET_SET_USER_SIZED\": {\n return produce(state, (draft) => {\n const floatingWidget = draft.floatingWidgets.byId[action.id];\n floatingWidget.userSized = action.userSized;\n });\n }\n case \"FLOATING_WIDGET_BRING_TO_FRONT\": {\n return floatingWidgetBringToFront(state, action.id);\n }\n case \"FLOATING_WIDGET_SEND_BACK\": {\n const widget = getWidgetState(state, action.id);\n const sendBackHomeState = getSendBackHomeState(state, action.id);\n\n // Add tabs to an existing widget.\n if (sendBackHomeState.widgetId) {\n const destinationWidget = state.widgets[sendBackHomeState.widgetId];\n const tabs = [...destinationWidget.tabs, ...widget.tabs];\n state = updateWidgetState(state, destinationWidget.id, {\n tabs,\n });\n return removeWidget(state, widget.id);\n }\n\n const sectionIndex = sendBackHomeState.sectionIndex ?? 0;\n const home = state.floatingWidgets.byId[action.id].home;\n const destinationWidgetId = home.widgetId\n ? home.widgetId\n : getWidgetPanelSectionId(home.side, sectionIndex);\n\n // Add tabs to a new panel widget.\n state = removeWidget(state, widget.id);\n return insertPanelWidget(\n state,\n sendBackHomeState.side,\n destinationWidgetId,\n widget.tabs,\n sectionIndex\n );\n }\n case \"POPOUT_WIDGET_SEND_BACK\": {\n const popoutWidget = state.popoutWidgets.byId[action.id];\n const widget = getWidgetState(state, action.id);\n const home = popoutWidget.home;\n\n state = removeWidget(state, widget.id);\n\n // Determine existing widget.\n let existingWidget: WidgetState | undefined;\n if (home.widgetId in state.widgets) {\n existingWidget = state.widgets[home.widgetId];\n } else if (isPanelWidgetRestoreState(home)) {\n const panel = state.panels[home.side];\n const panelSectionId = getWidgetPanelSectionId(\n home.side,\n home.widgetIndex\n );\n existingWidget = state.widgets[panelSectionId];\n\n // Can not add additional sections, add to an existing one.\n if (!existingWidget && panel.widgets.length >= panel.maxWidgetCount) {\n const sectionIndex = Math.min(\n panel.maxWidgetCount - 1,\n home.widgetIndex\n );\n const sectionId = panel.widgets[sectionIndex];\n existingWidget = state.widgets[sectionId];\n }\n }\n\n // Add to an existing widget.\n if (existingWidget) {\n const tabs = [...existingWidget.tabs, ...widget.tabs];\n return updateWidgetState(state, existingWidget.id, {\n tabs,\n });\n }\n\n // Insert a new panel section.\n if (isPanelWidgetRestoreState(home)) {\n const sectionId = home.widgetId\n ? home.widgetId\n : getWidgetPanelSectionId(home.side, home.widgetIndex);\n return insertPanelWidget(\n state,\n home.side,\n sectionId,\n [...widget.tabs],\n home.widgetIndex\n );\n }\n\n // Add a new floating widget.\n return addFloatingWidget(\n state,\n home.widgetId,\n widget.tabs,\n home.floatingWidget\n );\n }\n case \"WIDGET_TAB_ADD_TO_WIDGET\": {\n const { id, widgetId } = action;\n return addTabToWidget(state, id, widgetId);\n }\n case \"WIDGET_TAB_CLICK\": {\n const { id, widgetId } = action;\n state = setWidgetActiveTabId(state, widgetId, id);\n return updateWidgetState(state, widgetId, {\n minimized: false,\n });\n }\n case \"WIDGET_TAB_DOUBLE_CLICK\": {\n if (action.floatingWidgetId === undefined) return state;\n\n const widget = getWidgetState(state, action.widgetId);\n const active = action.id === widget.activeTabId;\n if (!active) return setWidgetActiveTabId(state, widget.id, action.id);\n\n return updateWidgetState(state, widget.id, {\n minimized: !widget.minimized,\n });\n }\n case \"WIDGET_TAB_DRAG_START\": {\n const tabId = action.id;\n let home: PanelWidgetRestoreState;\n\n if (action.floatingWidgetId) {\n const floatingWidget =\n state.floatingWidgets.byId[action.floatingWidgetId];\n home = floatingWidget.home;\n } else {\n assert(!!action.side);\n const panel = state.panels[action.side];\n const widgetIndex = panel.widgets.indexOf(action.widgetId);\n home = {\n side: action.side,\n widgetId: action.widgetId,\n widgetIndex,\n };\n }\n\n const widget = getWidgetState(state, action.widgetId);\n const active = action.id === widget.activeTabId;\n state = produce(state, (draft) => {\n draft.draggedTab = {\n tabId,\n position: Point.create(action.position).toProps(),\n home,\n active,\n };\n });\n return removeTabFromWidget(state, tabId);\n }\n case \"WIDGET_TAB_DRAG\": {\n return produce(state, (draft) => {\n const draggedTab = draft.draggedTab;\n assert(!!draggedTab);\n const position = Point.create(draggedTab.position).offset(\n action.dragBy\n );\n setPointProps(draggedTab.position, position);\n });\n }\n case \"WIDGET_TAB_DRAG_END\": {\n assert(!!state.draggedTab);\n const wasActive = state.draggedTab.active;\n const target = action.target;\n if (isTabDropTargetState(target)) {\n state = updateHomeOfToolSettingsWidget(\n state,\n target.widgetId,\n state.draggedTab.home\n );\n const targetWidget = getWidgetState(state, target.widgetId);\n const tabIndex = target.tabIndex;\n const tabs = [...targetWidget.tabs];\n tabs.splice(tabIndex, 0, action.id);\n const activeTabId = wasActive ? action.id : targetWidget.activeTabId;\n state = updateWidgetState(state, targetWidget.id, {\n tabs,\n activeTabId,\n });\n } else if (isPanelDropTargetState(target)) {\n state = updatePanelState(state, target.side, (draft) => {\n draft.widgets.push(target.newWidgetId);\n draft.collapsed = false;\n });\n state = addWidgetState(state, target.newWidgetId, [action.id]);\n } else if (isSectionDropTargetState(target)) {\n state = updatePanelState(state, target.side, (draft) => {\n draft.widgets.splice(target.sectionIndex, 0, target.newWidgetId);\n draft.collapsed = false;\n });\n state = addWidgetState(state, target.newWidgetId, [action.id]);\n } else if (isWidgetDropTargetState(target)) {\n updateHomeOfToolSettingsWidget(\n state,\n target.widgetId,\n state.draggedTab.home\n );\n const widget = getWidgetLocation(state, target.widgetId);\n if (widget && isPanelWidgetLocation(widget)) {\n state = updatePanelState(state, widget.side, (draft) => {\n draft.collapsed = false;\n });\n }\n const targetWidget = getWidgetState(state, target.widgetId);\n const tabIndex = targetWidget.tabs.length;\n const tabs = [...targetWidget.tabs];\n tabs.splice(tabIndex, 0, action.id);\n const activeTabId = wasActive ? action.id : targetWidget.activeTabId;\n state = updateWidgetState(state, targetWidget.id, {\n tabs,\n activeTabId,\n });\n } else {\n const tab = state.tabs[state.draggedTab.tabId];\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.createFromSize(\n tab.preferredFloatingWidgetSize || target.size\n ).offset(state.draggedTab.position);\n const containedBounds = bounds.containIn(nzBounds);\n const userSized =\n tab.userSized ||\n (tab.isFloatingWidgetResizable && !!tab.preferredFloatingWidgetSize);\n\n state = addFloatingWidget(\n state,\n target.newFloatingWidgetId,\n [action.id],\n {\n bounds: containedBounds,\n home: state.draggedTab.home,\n userSized,\n }\n );\n }\n return produce(state, (draft) => {\n draft.draggedTab = undefined;\n });\n }\n case \"WIDGET_TAB_POPOUT\": {\n const { id, position, size } = action;\n const location = getTabLocation(state, id);\n if (location && isPopoutTabLocation(location)) return state;\n\n const savedTab = state.savedTabs.byId[id];\n\n const tab = state.tabs[id];\n\n let contentHeight = 800;\n let contentWidth = 600;\n\n if (tab.preferredFloatingWidgetSize) {\n contentWidth = tab.preferredFloatingWidgetSize.width;\n contentHeight = tab.preferredFloatingWidgetSize.height;\n } else {\n // TODO: reducers should be pure\n const popoutContentContainer = document.getElementById(\n `content-container:${id}`\n );\n if (popoutContentContainer !== null) {\n contentWidth = popoutContentContainer.offsetWidth + 20;\n contentHeight = popoutContentContainer.offsetHeight + 20;\n }\n }\n\n let preferredBounds = Rectangle.createFromSize({\n height: contentHeight,\n width: contentWidth,\n });\n if (savedTab?.popout) {\n preferredBounds = Rectangle.createFromSize(savedTab.popout.contentSize);\n preferredBounds = preferredBounds.offset(savedTab.popout.position);\n }\n\n if (size) preferredBounds = preferredBounds.setSize(size);\n if (position) preferredBounds = preferredBounds.setPosition(position);\n\n const popoutWidgetId = getUniqueId();\n let home: PopoutWidgetState[\"home\"] | undefined;\n if (location && isPanelTabLocation(location)) {\n const panel = state.panels[location.side];\n const widgetIndex = panel.widgets.indexOf(location.widgetId);\n home = {\n side: location.side,\n widgetId: location.widgetId,\n widgetIndex,\n };\n } else if (location && isFloatingTabLocation(location)) {\n const floatingWidget =\n state.floatingWidgets.byId[location.floatingWidgetId];\n home = {\n widgetId: floatingWidget.id,\n floatingWidget,\n };\n }\n\n state = removeTabFromWidget(state, id);\n return addPopoutWidget(state, popoutWidgetId, [id], {\n bounds: preferredBounds.toProps(),\n home,\n });\n }\n case \"WIDGET_TAB_HIDE\": {\n return hideTab(state, action.id);\n }\n case \"WIDGET_TAB_REMOVE\": {\n // Save tab state.\n state = hideTab(state, action.id);\n // Remove tab.\n return removeTab(state, action.id);\n }\n case \"WIDGET_TAB_SET_LABEL\": {\n return updateTabState(state, action.id, (draft) => {\n draft.label = action.label;\n });\n }\n case \"WIDGET_TAB_OPEN\": {\n return openWidgetTab(state, action.id);\n }\n case \"WIDGET_TAB_CLOSE\": {\n const { id } = action;\n if (\n state.toolSettings?.tabId === id &&\n state.toolSettings.type === \"docked\"\n ) {\n return state;\n }\n\n let location: TabLocation;\n [state, location] = unhideTab(state, id);\n\n // TODO: should change activeTabId of a widget with multiple tabs.\n const widget = state.widgets[location.widgetId];\n if (isFloatingTabLocation(location) && id === widget.activeTabId) {\n state = updateWidgetState(state, widget.id, {\n minimized: true,\n });\n }\n return state;\n }\n case \"WIDGET_TAB_FLOAT\": {\n const { id, position, size } = action;\n\n let location: TabLocation;\n [state, location] = unhideTab(state, id);\n\n if (isFloatingTabLocation(location)) return state;\n\n const tab = state.tabs[id];\n const preferredSize = size ??\n tab.preferredFloatingWidgetSize ?? { height: 400, width: 400 };\n const preferredPosition = position ?? { x: 50, y: 100 };\n const preferredBounds =\n Rectangle.createFromSize(preferredSize).offset(preferredPosition);\n const nzBounds = Rectangle.createFromSize(state.size);\n const containedBounds = preferredBounds.containIn(nzBounds);\n\n const userSized =\n tab.userSized ||\n (tab.isFloatingWidgetResizable && !!tab.preferredFloatingWidgetSize);\n\n if (isPanelTabLocation(location)) {\n const panel = state.panels[location.side];\n const widgetIndex = panel.widgets.indexOf(location.widgetId);\n\n state = updateTabState(state, id, (draft) => {\n initSizeProps(draft, \"preferredFloatingWidgetSize\", preferredSize);\n });\n state = removeTabFromWidget(state, id);\n state = addFloatingWidget(state, id, [id], {\n bounds: containedBounds,\n home: {\n side: location.side,\n widgetId: location.widgetId,\n widgetIndex,\n },\n userSized,\n });\n } else {\n const popoutWidgetId = location.popoutWidgetId;\n const popoutWidget = state.popoutWidgets.byId[popoutWidgetId];\n const widget = state.widgets[popoutWidgetId];\n state = removePopoutWidget(state, popoutWidgetId);\n\n const bounds = popoutWidget.bounds;\n const home = popoutWidget.home;\n\n state = addFloatingWidget(\n state,\n popoutWidgetId,\n [id],\n {\n bounds,\n home: isPanelWidgetRestoreState(home)\n ? home\n : home.floatingWidget.home,\n },\n widget\n );\n }\n\n const isToolSettings = state.toolSettings?.tabId === id;\n if (isToolSettings) {\n state = produce(state, (draft) => {\n assert(!!draft.toolSettings);\n draft.toolSettings.type = \"widget\";\n });\n }\n\n return state;\n }\n case \"WIDGET_TAB_SET_POPOUT_BOUNDS\": {\n return updateSavedTabState(state, action.id, (draft) => {\n draft.popout = {\n position: action.position,\n contentSize: action.contentSize,\n size: action.size,\n };\n });\n }\n case \"WIDGET_TAB_SHOW\": {\n return showWidgetTab(state, action.id);\n }\n case \"WIDGET_TAB_UNLOAD\": {\n state = hideTab(state, action.id);\n return updateTabState(state, action.id, (draft) => {\n draft.unloaded = true;\n });\n }\n case \"WIDGET_TAB_EXPAND\": {\n state = showWidgetTab(state, action.id);\n const location = getTabLocation(state, action.id);\n if (location && isPanelTabLocation(location)) {\n state = updatePanelState(state, location.side, (draft) => {\n draft.splitterPercent =\n draft.widgets.findIndex((wId) => wId === location.widgetId) === 0\n ? 100\n : 0;\n });\n }\n return state;\n }\n case \"WIDGET_TAB_UPDATE\": {\n return updateTabState(state, action.id, (draft) => {\n for (const [key, val] of Object.entries(action.overrides)) {\n (draft as any)[key] = val;\n }\n });\n }\n case \"TOOL_SETTINGS_DRAG_START\": {\n if (!state.toolSettings) return state;\n if (state.toolSettings.type === \"widget\") return state;\n\n const { newFloatingWidgetId } = action;\n const tabId = state.toolSettings.tabId;\n\n const tab = state.tabs[tabId];\n const size = tab.preferredFloatingWidgetSize || {\n height: 200,\n width: 300,\n };\n state = addFloatingWidget(state, newFloatingWidgetId, [tabId], {\n bounds: Rectangle.createFromSize(size).toProps(),\n });\n return produce(state, (draft) => {\n assert(!!draft.toolSettings);\n draft.toolSettings.type = \"widget\";\n });\n }\n case \"TOOL_SETTINGS_DOCK\": {\n if (!state.toolSettings) return state;\n if (state.toolSettings.type === \"docked\") return state;\n\n state = removeTabFromWidget(state, state.toolSettings.tabId);\n return produce(state, (draft) => {\n assert(!!draft.toolSettings);\n draft.toolSettings.type = \"docked\";\n });\n }\n case \"WIDGET_DEF_ADD\": {\n state = addTab(state, action.id, action.overrides);\n\n const savedTab = state.savedTabs.byId[action.id];\n if (savedTab) {\n // Restore to saved state.\n return addRemovedTab(state, action.id);\n }\n\n // Add to a floating widget.\n if (action.location === \"floating\") {\n // Add to an existing floating widget.\n if (action.floatingWidget.id in state.widgets) {\n return addTabToWidget(state, action.id, action.floatingWidget.id);\n }\n\n const size = action.overrides?.preferredFloatingWidgetSize ?? {\n height: 200,\n width: 300,\n };\n const position = action.floatingWidget.preferredPosition ?? {\n x: (state.size.width - size.width) / 2,\n y: (state.size.height - size.height) / 2,\n };\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.createFromSize(size).offset(position);\n const containedBounds = bounds.containIn(nzBounds);\n\n const userSized = !!action.overrides?.preferredFloatingWidgetSize;\n return addFloatingWidget(state, action.floatingWidget.id, [action.id], {\n bounds: containedBounds.toProps(),\n home: {\n side: action.panelSection.side,\n widgetId: action.panelSection.id,\n widgetIndex: 0,\n },\n userSized,\n });\n }\n\n return addTabToPanelSection(state, action.id, action.panelSection);\n }\n case \"WIDGET_DEF_ADD_TOOL_SETTINGS\": {\n state = addTab(state, action.id, action.overrides);\n if (action.panelSection) {\n state = addTabToPanelSection(state, action.id, action.panelSection);\n return addWidgetToolSettings(state, action.id);\n }\n return addDockedToolSettings(state, action.id);\n }\n }\n return state;\n}\n\nfunction openWidgetTab(state: NineZoneState, id: TabState[\"id\"]) {\n if (\n state.toolSettings?.tabId === id &&\n state.toolSettings.type === \"docked\"\n ) {\n return produce(state, (draft) => {\n assert(draft.toolSettings!.type === \"docked\");\n draft.toolSettings!.hidden = false;\n });\n }\n\n let location: TabLocation;\n [state, location] = unhideTab(state, id);\n\n return produce(state, (draft) => {\n const widget = draft.widgets[location.widgetId];\n widget.minimized = false;\n widget.activeTabId = id;\n\n if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.collapsed = false;\n if (undefined === panel.size || 0 === panel.size) {\n panel.size = panel.minSize ?? 200;\n }\n }\n });\n}\n\nfunction showWidgetTab(state: NineZoneState, id: TabState[\"id\"]) {\n state = openWidgetTab(state, id);\n const location = getTabLocation(state, id);\n if (!location) return state;\n state = updateWidgetState(state, location.widgetId, {\n activeTabId: id,\n minimized: false,\n });\n if (isPanelTabLocation(location)) {\n state = updatePanelState(state, location.side, (draft) => {\n draft.collapsed = false;\n });\n }\n if (isFloatingTabLocation(location)) {\n state = floatingWidgetBringToFront(state, location.floatingWidgetId);\n }\n return state;\n}\n\nfunction unhideTab(state: NineZoneState, id: TabState[\"id\"]) {\n let location = getTabLocation(state, id);\n if (!location) {\n state = addRemovedTab(state, id);\n location = getTabLocation(state, id);\n assert(!!location);\n }\n state = updateTabState(state, id, (draft) => {\n draft.unloaded = false;\n });\n return [state, location] as const;\n}\n\nfunction hideTab(state: NineZoneState, id: TabState[\"id\"]) {\n state = produce(state, (draft) => {\n if (!draft.toolSettings) return;\n\n const isToolSettings = draft.toolSettings.tabId === id;\n if (isToolSettings && draft.toolSettings.type === \"docked\") {\n draft.toolSettings.hidden = true;\n }\n });\n\n state = updateTabState(state, id, (draft) => {\n draft.unloaded = false;\n });\n\n const location = getTabLocation(state, id);\n if (!location) return state;\n\n const widgetId = location.widgetId;\n const tabIndex = state.widgets[widgetId].tabs.indexOf(id);\n if (isFloatingTabLocation(location)) {\n const floatingWidget = state.floatingWidgets.byId[widgetId];\n // widgetDef.setFloatingContainerId(location.floatingWidgetId);\n state = updateSavedTabState(state, id, (draft) => {\n draft.home = {\n widgetId,\n tabIndex,\n floatingWidget,\n };\n });\n } else if (isPanelTabLocation(location)) {\n const side = location.side;\n const widgetIndex = state.panels[side].widgets.indexOf(widgetId);\n state = updateSavedTabState(state, id, (draft) => {\n draft.home = {\n widgetId,\n side,\n widgetIndex,\n tabIndex,\n };\n });\n }\n\n return removeTabFromWidget(state, id);\n}\n\nfunction addTabToPanelSection(\n state: NineZoneState,\n tabId: TabState[\"id\"],\n panelSection: WidgetDefAddAction[\"panelSection\"]\n) {\n // Add to a panel section.\n const { side, id, index } = panelSection;\n // Add to an existing panel section.\n if (id in state.widgets) {\n return addTabToWidget(state, tabId, id);\n }\n\n const panel = state.panels[side];\n // Add to a new panel section.\n if (panel.widgets.length < panel.maxWidgetCount) {\n return addPanelWidget(state, side, id, [tabId]);\n }\n\n // Can't add additional sections, add to an existing one.\n const sectionIndex = Math.min(index, panel.widgets.length - 1);\n const existingSectionId = panel.widgets[sectionIndex];\n return addTabToWidget(state, tabId, existingSectionId);\n}\n"]}
@@ -104,7 +104,7 @@ export class PointerMessage extends React.Component {
104
104
  , {
105
105
  // eslint-disable-next-line @typescript-eslint/no-deprecated
106
106
  className: `icon ${MessageContainer.getIconClassName(severity)}`,
107
- // eslint-disable-next-line @typescript-eslint/no-deprecated
107
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions
108
108
  iconSpec: `${MessageContainer.getIcon(severity, false)}` }))),
109
109
  React.createElement("span", { className: "uifw-pointer-message-text" },
110
110
  React.createElement(MessageRenderer, { className: "uifw-pointer-message-brief", message: this.state.message, useSpan: true }),
@@ -1 +1 @@
1
- {"version":3,"file":"Pointer.js","sourceRoot":"","sources":["../../../src/appui-react/messages/Pointer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport \"./Pointer.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport {\n MessageSeverity,\n RelativePosition,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport { OutputMessagePriority } from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport { Icon, MessageContainer, MessageRenderer } from \"@itwin/core-react\";\nimport { Point, Rectangle } from \"@itwin/core-react/internal\";\nimport {\n offsetAndContainInContainer,\n Tooltip,\n} from \"../layout/popup/Tooltip.js\";\nimport { MessageManager } from \"./MessageManager.js\";\nimport type {\n NotifyMessageDetailsType,\n NotifyMessageType,\n} from \"./ReactNotifyMessageDetails.js\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Properties of [[PointerMessage]] component.\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface PointerMessageProps extends CommonProps {\n /** Text to display */\n message?: string;\n}\n\n/** [[PointerMessage]] state.\n * @internal\n */\ninterface PointerMessageState {\n isVisible: boolean;\n message: NotifyMessageType;\n detailedMessage?: NotifyMessageType;\n position: XAndY;\n messageDetails?: NotifyMessageDetailsType;\n}\n\n/** [[PointerMessageChangedEvent]] arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PointerMessageChangedEventArgs {\n isVisible: boolean;\n priority: OutputMessagePriority;\n message: NotifyMessageType;\n detailedMessage?: NotifyMessageType;\n relativePosition?: RelativePosition;\n viewport?: HTMLElement;\n pt?: XAndY;\n messageDetails?: NotifyMessageDetailsType;\n}\n\n/** Pointer Message Changed Event emitted by the [[PointerMessage]] component\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class PointerMessageChangedEvent extends UiEvent<PointerMessageChangedEventArgs> {}\n\n/** Pointer message pops up near pointer when attempting an invalid interaction.\n * @public\n */\nexport class PointerMessage extends React.Component<\n PointerMessageProps,\n PointerMessageState\n> {\n private static _pointerMessageChangedEvent =\n new BeUiEvent<PointerMessageChangedEventArgs>(); // eslint-disable-line @typescript-eslint/no-deprecated\n private static readonly _onPointerMessagePositionChangedEvent =\n new BeUiEvent<{\n pt: XAndY;\n relativePosition: RelativePosition;\n }>();\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static get onPointerMessageChangedEvent(): PointerMessageChangedEvent {\n return PointerMessage._pointerMessageChangedEvent;\n }\n\n public static showMessage(message: NotifyMessageDetailsType): void {\n PointerMessage.onPointerMessageChangedEvent.emit({\n isVisible: true,\n priority: message.priority,\n message: message.briefMessage,\n detailedMessage: message.detailedMessage,\n relativePosition: message.relativePosition,\n viewport: message.viewport,\n pt: message.displayPoint,\n messageDetails: message,\n });\n }\n\n public static updateMessage(\n displayPoint: XAndY,\n relativePosition: RelativePosition\n ): void {\n PointerMessage._onPointerMessagePositionChangedEvent.emit({\n pt: displayPoint,\n relativePosition,\n });\n }\n\n public static hideMessage(): void {\n PointerMessage.onPointerMessageChangedEvent.emit({\n isVisible: false,\n priority: OutputMessagePriority.None,\n message: \"\",\n });\n }\n\n public override readonly state: Readonly<PointerMessageState> = {\n message: \"\",\n isVisible: false,\n position: {\n x: 0,\n y: 0,\n },\n };\n\n private _relativePosition?: RelativePosition;\n private _viewport?: HTMLElement;\n private _position?: XAndY;\n private _size: SizeProps = {\n height: 0,\n width: 0,\n };\n\n public override render(): React.ReactNode {\n if (!this.state.isVisible) return null;\n\n const className = classnames(\"uifw-pointer-message\", this.props.className);\n const severity = MessageManager.getSeverity(this.state.messageDetails!);\n\n return (\n <Tooltip\n className={className}\n onSizeChanged={this._handleSizeChanged}\n position={this.state.position}\n style={this.props.style}\n >\n <div className=\"uifw-pointer-message-content\">\n {severity !== MessageSeverity.None && (\n <span className=\"uifw-pointer-message-icon\">\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <Icon\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n className={`icon ${MessageContainer.getIconClassName(\n severity\n )}`}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n iconSpec={`${MessageContainer.getIcon(severity, false)}`}\n />\n </span>\n )}\n <span className=\"uifw-pointer-message-text\">\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <MessageRenderer\n className=\"uifw-pointer-message-brief\"\n message={this.state.message}\n useSpan\n />\n {this.state.detailedMessage && (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <MessageRenderer\n className=\"uifw-pointer-message-detailed\"\n message={this.state.detailedMessage}\n />\n )}\n </span>\n </div>\n </Tooltip>\n );\n }\n\n public override componentDidMount(): void {\n PointerMessage.onPointerMessageChangedEvent.addListener(\n this._handlePointerMessageChangedEvent\n );\n PointerMessage._onPointerMessagePositionChangedEvent.addListener(\n this._handlePointerMessagePositionChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n PointerMessage.onPointerMessageChangedEvent.removeListener(\n this._handlePointerMessageChangedEvent\n );\n PointerMessage._onPointerMessagePositionChangedEvent.removeListener(\n this._handlePointerMessagePositionChangedEvent\n );\n }\n\n private _handleSizeChanged = (size: SizeProps) => {\n this._size = size;\n this.updatePosition();\n };\n\n private _handlePointerMessageChangedEvent: ListenerType<\n typeof PointerMessage.onPointerMessageChangedEvent\n > = (args) => {\n this._relativePosition = args.relativePosition;\n this._viewport = args.viewport;\n this._position = args.pt;\n this.setState(() => ({\n isVisible: args.isVisible,\n message: args.message,\n detailedMessage: args.detailedMessage,\n messageDetails: args.messageDetails,\n }));\n this.updatePosition();\n };\n\n private _handlePointerMessagePositionChangedEvent: ListenerType<\n typeof PointerMessage._onPointerMessagePositionChangedEvent\n > = (args) => {\n this._relativePosition = args.relativePosition;\n this._position = args.pt;\n this.updatePosition();\n };\n\n private updatePosition() {\n const adjustmentOffset = 20;\n let offset: XAndY | undefined;\n switch (this._relativePosition) {\n case RelativePosition.Top:\n offset = { x: 0, y: -adjustmentOffset };\n break;\n case RelativePosition.TopRight:\n offset = { x: adjustmentOffset, y: -adjustmentOffset };\n break;\n case RelativePosition.Right:\n offset = { x: adjustmentOffset, y: 0 };\n break;\n case RelativePosition.BottomRight:\n offset = { x: adjustmentOffset, y: adjustmentOffset };\n break;\n case RelativePosition.Bottom:\n offset = { x: 0, y: adjustmentOffset };\n break;\n case RelativePosition.BottomLeft:\n offset = { x: -adjustmentOffset, y: adjustmentOffset };\n break;\n case RelativePosition.Left:\n offset = { x: -adjustmentOffset, y: 0 };\n break;\n case RelativePosition.TopLeft:\n offset = { x: -adjustmentOffset, y: -adjustmentOffset };\n break;\n }\n\n this.setState((prevState) => {\n if (!this._viewport) return null;\n if (!this._position) return null;\n\n const containerBounds = Rectangle.create(\n this._viewport.getBoundingClientRect()\n );\n const relativeBounds = Rectangle.createFromSize(this._size).offset(\n this._position\n );\n const viewportOffset = new Point().getOffsetTo(containerBounds.topLeft());\n\n const adjustedPosition = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(viewportOffset);\n\n if (position.equals(prevState.position)) return null;\n\n return {\n position,\n };\n });\n }\n}\n"]}
1
+ {"version":3,"file":"Pointer.js","sourceRoot":"","sources":["../../../src/appui-react/messages/Pointer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport \"./Pointer.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport {\n MessageSeverity,\n RelativePosition,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport { OutputMessagePriority } from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport { Icon, MessageContainer, MessageRenderer } from \"@itwin/core-react\";\nimport { Point, Rectangle } from \"@itwin/core-react/internal\";\nimport {\n offsetAndContainInContainer,\n Tooltip,\n} from \"../layout/popup/Tooltip.js\";\nimport { MessageManager } from \"./MessageManager.js\";\nimport type {\n NotifyMessageDetailsType,\n NotifyMessageType,\n} from \"./ReactNotifyMessageDetails.js\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** Properties of [[PointerMessage]] component.\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface PointerMessageProps extends CommonProps {\n /** Text to display */\n message?: string;\n}\n\n/** [[PointerMessage]] state.\n * @internal\n */\ninterface PointerMessageState {\n isVisible: boolean;\n message: NotifyMessageType;\n detailedMessage?: NotifyMessageType;\n position: XAndY;\n messageDetails?: NotifyMessageDetailsType;\n}\n\n/** [[PointerMessageChangedEvent]] arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PointerMessageChangedEventArgs {\n isVisible: boolean;\n priority: OutputMessagePriority;\n message: NotifyMessageType;\n detailedMessage?: NotifyMessageType;\n relativePosition?: RelativePosition;\n viewport?: HTMLElement;\n pt?: XAndY;\n messageDetails?: NotifyMessageDetailsType;\n}\n\n/** Pointer Message Changed Event emitted by the [[PointerMessage]] component\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class PointerMessageChangedEvent extends UiEvent<PointerMessageChangedEventArgs> {}\n\n/** Pointer message pops up near pointer when attempting an invalid interaction.\n * @public\n */\nexport class PointerMessage extends React.Component<\n PointerMessageProps,\n PointerMessageState\n> {\n private static _pointerMessageChangedEvent =\n new BeUiEvent<PointerMessageChangedEventArgs>(); // eslint-disable-line @typescript-eslint/no-deprecated\n private static readonly _onPointerMessagePositionChangedEvent =\n new BeUiEvent<{\n pt: XAndY;\n relativePosition: RelativePosition;\n }>();\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static get onPointerMessageChangedEvent(): PointerMessageChangedEvent {\n return PointerMessage._pointerMessageChangedEvent;\n }\n\n public static showMessage(message: NotifyMessageDetailsType): void {\n PointerMessage.onPointerMessageChangedEvent.emit({\n isVisible: true,\n priority: message.priority,\n message: message.briefMessage,\n detailedMessage: message.detailedMessage,\n relativePosition: message.relativePosition,\n viewport: message.viewport,\n pt: message.displayPoint,\n messageDetails: message,\n });\n }\n\n public static updateMessage(\n displayPoint: XAndY,\n relativePosition: RelativePosition\n ): void {\n PointerMessage._onPointerMessagePositionChangedEvent.emit({\n pt: displayPoint,\n relativePosition,\n });\n }\n\n public static hideMessage(): void {\n PointerMessage.onPointerMessageChangedEvent.emit({\n isVisible: false,\n priority: OutputMessagePriority.None,\n message: \"\",\n });\n }\n\n public override readonly state: Readonly<PointerMessageState> = {\n message: \"\",\n isVisible: false,\n position: {\n x: 0,\n y: 0,\n },\n };\n\n private _relativePosition?: RelativePosition;\n private _viewport?: HTMLElement;\n private _position?: XAndY;\n private _size: SizeProps = {\n height: 0,\n width: 0,\n };\n\n public override render(): React.ReactNode {\n if (!this.state.isVisible) return null;\n\n const className = classnames(\"uifw-pointer-message\", this.props.className);\n const severity = MessageManager.getSeverity(this.state.messageDetails!);\n\n return (\n <Tooltip\n className={className}\n onSizeChanged={this._handleSizeChanged}\n position={this.state.position}\n style={this.props.style}\n >\n <div className=\"uifw-pointer-message-content\">\n {severity !== MessageSeverity.None && (\n <span className=\"uifw-pointer-message-icon\">\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <Icon\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n className={`icon ${MessageContainer.getIconClassName(\n severity\n )}`}\n // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-base-to-string, @typescript-eslint/restrict-template-expressions\n iconSpec={`${MessageContainer.getIcon(severity, false)}`}\n />\n </span>\n )}\n <span className=\"uifw-pointer-message-text\">\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <MessageRenderer\n className=\"uifw-pointer-message-brief\"\n message={this.state.message}\n useSpan\n />\n {this.state.detailedMessage && (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <MessageRenderer\n className=\"uifw-pointer-message-detailed\"\n message={this.state.detailedMessage}\n />\n )}\n </span>\n </div>\n </Tooltip>\n );\n }\n\n public override componentDidMount(): void {\n PointerMessage.onPointerMessageChangedEvent.addListener(\n this._handlePointerMessageChangedEvent\n );\n PointerMessage._onPointerMessagePositionChangedEvent.addListener(\n this._handlePointerMessagePositionChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n PointerMessage.onPointerMessageChangedEvent.removeListener(\n this._handlePointerMessageChangedEvent\n );\n PointerMessage._onPointerMessagePositionChangedEvent.removeListener(\n this._handlePointerMessagePositionChangedEvent\n );\n }\n\n private _handleSizeChanged = (size: SizeProps) => {\n this._size = size;\n this.updatePosition();\n };\n\n private _handlePointerMessageChangedEvent: ListenerType<\n typeof PointerMessage.onPointerMessageChangedEvent\n > = (args) => {\n this._relativePosition = args.relativePosition;\n this._viewport = args.viewport;\n this._position = args.pt;\n this.setState(() => ({\n isVisible: args.isVisible,\n message: args.message,\n detailedMessage: args.detailedMessage,\n messageDetails: args.messageDetails,\n }));\n this.updatePosition();\n };\n\n private _handlePointerMessagePositionChangedEvent: ListenerType<\n typeof PointerMessage._onPointerMessagePositionChangedEvent\n > = (args) => {\n this._relativePosition = args.relativePosition;\n this._position = args.pt;\n this.updatePosition();\n };\n\n private updatePosition() {\n const adjustmentOffset = 20;\n let offset: XAndY | undefined;\n switch (this._relativePosition) {\n case RelativePosition.Top:\n offset = { x: 0, y: -adjustmentOffset };\n break;\n case RelativePosition.TopRight:\n offset = { x: adjustmentOffset, y: -adjustmentOffset };\n break;\n case RelativePosition.Right:\n offset = { x: adjustmentOffset, y: 0 };\n break;\n case RelativePosition.BottomRight:\n offset = { x: adjustmentOffset, y: adjustmentOffset };\n break;\n case RelativePosition.Bottom:\n offset = { x: 0, y: adjustmentOffset };\n break;\n case RelativePosition.BottomLeft:\n offset = { x: -adjustmentOffset, y: adjustmentOffset };\n break;\n case RelativePosition.Left:\n offset = { x: -adjustmentOffset, y: 0 };\n break;\n case RelativePosition.TopLeft:\n offset = { x: -adjustmentOffset, y: -adjustmentOffset };\n break;\n }\n\n this.setState((prevState) => {\n if (!this._viewport) return null;\n if (!this._position) return null;\n\n const containerBounds = Rectangle.create(\n this._viewport.getBoundingClientRect()\n );\n const relativeBounds = Rectangle.createFromSize(this._size).offset(\n this._position\n );\n const viewportOffset = new Point().getOffsetTo(containerBounds.topLeft());\n\n const adjustedPosition = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(viewportOffset);\n\n if (position.equals(prevState.position)) return null;\n\n return {\n position,\n };\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CubeNavigationAidControl.d.ts","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/CubeNavigationAidControl.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AAEH,qBAAa,wBAAyB,SAAQ,oBAAoB;IAChE,OAAc,eAAe,SAAuB;gBAGxC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG;IAUtC,OAAO,IAAI,MAAM,GAAG,SAAS;CAG9C"}
1
+ {"version":3,"file":"CubeNavigationAidControl.d.ts","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/CubeNavigationAidControl.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AAEH,qBAAa,wBAAyB,SAAQ,oBAAoB;IAChE,OAAc,eAAe,SAAuB;gBAGxC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG;IAWtC,OAAO,IAAI,MAAM,GAAG,SAAS;CAG9C"}
@@ -16,6 +16,7 @@ import { NavigationAidControl } from "./NavigationAidControl.js";
16
16
  export class CubeNavigationAidControl extends NavigationAidControl {
17
17
  // eslint-disable-next-line @typescript-eslint/no-deprecated
18
18
  constructor(info, options) {
19
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
19
20
  super(info, options);
20
21
  this.reactNode = (React.createElement(CubeNavigationAid, { iModelConnection: options.imodel, viewport: options.viewport }));
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CubeNavigationAidControl.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/CubeNavigationAidControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,wBAAyB,SAAQ,oBAAoB;IAGhE,4DAA4D;IAC5D,YAAY,IAA4B,EAAE,OAAY;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,CACf,oBAAC,iBAAiB,IAChB,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAC1B,CACH,CAAC;IACJ,CAAC;IAEe,OAAO;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;;AAfa,wCAAe,GAAG,mBAAmB,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 NavigationAids\n */\n\nimport * as React from \"react\";\nimport { CubeNavigationAid } from \"@itwin/imodel-components-react\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport { NavigationAidControl } from \"./NavigationAidControl.js\";\n\n/** Navigation Aid that displays an interactive rotation cube for Spatial views that synchronizes with the rotation of the iModel Viewport\n * @public\n * @deprecated in 4.16.0. Use {@link @itwin/imodel-components-react#CubeNavigationAid} component instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class CubeNavigationAidControl extends NavigationAidControl {\n public static navigationAidId = \"CubeNavigationAid\";\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n this.reactNode = (\n <CubeNavigationAid\n iModelConnection={options.imodel}\n viewport={options.viewport}\n />\n );\n }\n\n public override getSize(): string | undefined {\n return \"96px\";\n }\n}\n"]}
1
+ {"version":3,"file":"CubeNavigationAidControl.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/CubeNavigationAidControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,wBAAyB,SAAQ,oBAAoB;IAGhE,4DAA4D;IAC5D,YAAY,IAA4B,EAAE,OAAY;QACpD,4DAA4D;QAC5D,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,CACf,oBAAC,iBAAiB,IAChB,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAC1B,CACH,CAAC;IACJ,CAAC;IAEe,OAAO;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;;AAhBa,wCAAe,GAAG,mBAAmB,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 NavigationAids\n */\n\nimport * as React from \"react\";\nimport { CubeNavigationAid } from \"@itwin/imodel-components-react\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport { NavigationAidControl } from \"./NavigationAidControl.js\";\n\n/** Navigation Aid that displays an interactive rotation cube for Spatial views that synchronizes with the rotation of the iModel Viewport\n * @public\n * @deprecated in 4.16.0. Use {@link @itwin/imodel-components-react#CubeNavigationAid} component instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class CubeNavigationAidControl extends NavigationAidControl {\n public static navigationAidId = \"CubeNavigationAid\";\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(info: ConfigurableCreateInfo, options: any) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n super(info, options);\n this.reactNode = (\n <CubeNavigationAid\n iModelConnection={options.imodel}\n viewport={options.viewport}\n />\n );\n }\n\n public override getSize(): string | undefined {\n return \"96px\";\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DrawingNavigationAidControl.d.ts","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/DrawingNavigationAidControl.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AAEH,qBAAa,2BAA4B,SAAQ,oBAAoB;IACnE,OAAc,eAAe,SAA0B;gBAG3C,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG;IAUtC,OAAO,IAAI,MAAM,GAAG,SAAS;CAG9C"}
1
+ {"version":3,"file":"DrawingNavigationAidControl.d.ts","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/DrawingNavigationAidControl.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AAEH,qBAAa,2BAA4B,SAAQ,oBAAoB;IACnE,OAAc,eAAe,SAA0B;gBAG3C,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG;IAWtC,OAAO,IAAI,MAAM,GAAG,SAAS;CAG9C"}
@@ -16,6 +16,7 @@ import { NavigationAidControl } from "./NavigationAidControl.js";
16
16
  export class DrawingNavigationAidControl extends NavigationAidControl {
17
17
  // eslint-disable-next-line @typescript-eslint/no-deprecated
18
18
  constructor(info, options) {
19
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
19
20
  super(info, options);
20
21
  this.reactNode = (React.createElement(DrawingNavigationAid, { iModelConnection: options.imodel, viewport: options.viewport }));
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DrawingNavigationAidControl.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/DrawingNavigationAidControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,2BAA4B,SAAQ,oBAAoB;IAGnE,4DAA4D;IAC5D,YAAY,IAA4B,EAAE,OAAY;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,CACf,oBAAC,oBAAoB,IACnB,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAC1B,CACH,CAAC;IACJ,CAAC;IAEe,OAAO;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;;AAfa,2CAAe,GAAG,sBAAsB,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 NavigationAids\n */\n\nimport * as React from \"react\";\nimport { DrawingNavigationAid } from \"@itwin/imodel-components-react\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport { NavigationAidControl } from \"./NavigationAidControl.js\";\n\n/** Navigation Aid that displays an interactive mini-map for Drawing views that synchronizes with the iModel Viewport.\n * @public\n * @deprecated in 4.16.0. Use {@link @itwin/imodel-components-react#DrawingNavigationAid} component instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class DrawingNavigationAidControl extends NavigationAidControl {\n public static navigationAidId = \"DrawingNavigationAid\";\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n this.reactNode = (\n <DrawingNavigationAid\n iModelConnection={options.imodel}\n viewport={options.viewport}\n />\n );\n }\n\n public override getSize(): string | undefined {\n return \"96px\";\n }\n}\n"]}
1
+ {"version":3,"file":"DrawingNavigationAidControl.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/DrawingNavigationAidControl.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,2BAA4B,SAAQ,oBAAoB;IAGnE,4DAA4D;IAC5D,YAAY,IAA4B,EAAE,OAAY;QACpD,4DAA4D;QAC5D,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,CACf,oBAAC,oBAAoB,IACnB,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAC1B,CACH,CAAC;IACJ,CAAC;IAEe,OAAO;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;;AAhBa,2CAAe,GAAG,sBAAsB,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 NavigationAids\n */\n\nimport * as React from \"react\";\nimport { DrawingNavigationAid } from \"@itwin/imodel-components-react\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport { NavigationAidControl } from \"./NavigationAidControl.js\";\n\n/** Navigation Aid that displays an interactive mini-map for Drawing views that synchronizes with the iModel Viewport.\n * @public\n * @deprecated in 4.16.0. Use {@link @itwin/imodel-components-react#DrawingNavigationAid} component instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class DrawingNavigationAidControl extends NavigationAidControl {\n public static navigationAidId = \"DrawingNavigationAid\";\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(info: ConfigurableCreateInfo, options: any) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n super(info, options);\n this.reactNode = (\n <DrawingNavigationAid\n iModelConnection={options.imodel}\n viewport={options.viewport}\n />\n );\n }\n\n public override getSize(): string | undefined {\n return \"96px\";\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SheetNavigationAid.d.ts","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/SheetNavigationAid.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,2BAA2B,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAIzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAQjE;;;GAGG;AAEH,qBAAa,yBAA0B,SAAQ,oBAAoB;IACjE,OAAc,eAAe,SAAwB;gBAGzC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG;IAKtC,OAAO,IAAI,MAAM,GAAG,SAAS;CAG9C;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AAEH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CACrD,oBAAoB,EACpB,oBAAoB,CACrB;IACC,OAAO,CAAC,UAAU,CAAS;IAE3B,SAAyB,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAG5D;IAEF,OAAO,CAAC,SAAS,CAA6B;gBAElC,KAAK,EAAE,oBAAoB;IAMvC,4CAA4C;IACtB,iBAAiB;IAiBvC,oDAAoD;IACpC,oBAAoB;IAapC,mDAAmD;YACrC,YAAY;IA4BV,MAAM,IAAI,KAAK,CAAC,SAAS;IAgFzC,wCAAwC;IACxC,OAAO,CAAC,mBAAmB,CAOzB;IAEF,yDAAyD;IACzD,OAAO,CAAC,uBAAuB,CAU7B;IAEF,sDAAsD;IACtD,OAAO,CAAC,wBAAwB,CAO9B;IAEF,mDAAmD;IACnD,OAAO,CAAC,8BAA8B,CAMpC;IAEF,OAAO,CAAC,oBAAoB,CAK1B;IAEF,mDAAmD;IACnD,OAAO,CAAC,sBAAsB,CAgB5B;IAEF,0CAA0C;YAC5B,WAAW;IAOzB,0CAA0C;IAC1C,OAAO,CAAC,eAAe;IAQvB,2DAA2D;IAC3D,OAAO,CAAC,uBAAuB,CAE7B;CACH"}
1
+ {"version":3,"file":"SheetNavigationAid.d.ts","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/SheetNavigationAid.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,2BAA2B,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAIzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAQjE;;;GAGG;AAEH,qBAAa,yBAA0B,SAAQ,oBAAoB;IACjE,OAAc,eAAe,SAAwB;gBAGzC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG;IAMtC,OAAO,IAAI,MAAM,GAAG,SAAS;CAG9C;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AAEH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CACrD,oBAAoB,EACpB,oBAAoB,CACrB;IACC,OAAO,CAAC,UAAU,CAAS;IAE3B,SAAyB,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAG5D;IAEF,OAAO,CAAC,SAAS,CAA6B;gBAElC,KAAK,EAAE,oBAAoB;IAMvC,4CAA4C;IACtB,iBAAiB;IAiBvC,oDAAoD;IACpC,oBAAoB;IAapC,mDAAmD;YACrC,YAAY;IA4BV,MAAM,IAAI,KAAK,CAAC,SAAS;IAgFzC,wCAAwC;IACxC,OAAO,CAAC,mBAAmB,CAOzB;IAEF,yDAAyD;IACzD,OAAO,CAAC,uBAAuB,CAU7B;IAEF,sDAAsD;IACtD,OAAO,CAAC,wBAAwB,CAO9B;IAEF,mDAAmD;IACnD,OAAO,CAAC,8BAA8B,CAMpC;IAEF,OAAO,CAAC,oBAAoB,CAK1B;IAEF,mDAAmD;IACnD,OAAO,CAAC,sBAAsB,CAgB5B;IAEF,0CAA0C;YAC5B,WAAW;IAOzB,0CAA0C;IAC1C,OAAO,CAAC,eAAe;IAQvB,2DAA2D;IAC3D,OAAO,CAAC,uBAAuB,CAE7B;CACH"}
@@ -24,6 +24,7 @@ import { SvgChevronLeft, SvgChevronRight } from "@itwin/itwinui-icons-react";
24
24
  export class SheetNavigationAidControl extends NavigationAidControl {
25
25
  // eslint-disable-next-line @typescript-eslint/no-deprecated
26
26
  constructor(info, options) {
27
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
27
28
  super(info, options);
28
29
  this.reactNode = React.createElement(SheetNavigationAid, { iModelConnection: options.imodel });
29
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SheetNavigationAid.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/SheetNavigationAid.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module NavigationAids\n */\n\nimport \"./SheetNavigationAid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type {\n IModelConnection,\n ScreenViewport,\n SelectedViewportChangedArgs,\n} from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { ViewportComponentEvents } from \"@itwin/imodel-components-react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport type { ModalFrontstageInfo } from \"../framework/FrameworkFrontstages.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { ViewUtilities } from \"../utils/ViewUtilities.js\";\nimport { NavigationAidControl } from \"./NavigationAidControl.js\";\nimport {\n CardContainer,\n SheetsModalFrontstage,\n} from \"./SheetsModalFrontstage.js\";\nimport { IconButton, ProgressRadial } from \"@itwin/itwinui-react\";\nimport { SvgChevronLeft, SvgChevronRight } from \"@itwin/itwinui-icons-react\";\n\n/** A Sheet Navigation Aid control.\n * @public\n * @deprecated in 4.16.0. Use {@link SheetNavigationAid} component instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class SheetNavigationAidControl extends NavigationAidControl {\n public static navigationAidId = \"SheetNavigationAid\";\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n this.reactNode = <SheetNavigationAid iModelConnection={options.imodel} />;\n }\n\n public override getSize(): string | undefined {\n return \"96px\";\n }\n}\n\n/** Data displayed about sheet\n * @alpha\n */\nexport interface SheetData {\n name: string;\n viewId: string;\n}\n\n/** Properties for the [[SheetNavigationAid]] component\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface SheetNavigationProps extends CommonProps {\n iModelConnection: IModelConnection;\n}\n\ninterface SheetNavigationState {\n index: number;\n sheetData: SheetData[];\n}\n\n/** A Sheet Navigation Aid.\n * @public\n */\nexport class SheetNavigationAid extends React.Component<\n SheetNavigationProps,\n SheetNavigationState\n> {\n private _isMounted = false;\n\n public override readonly state: Readonly<SheetNavigationState> = {\n index: 0,\n sheetData: [],\n };\n\n private _viewport: ScreenViewport | undefined;\n\n constructor(props: SheetNavigationProps) {\n super(props);\n\n this._viewport = IModelApp.viewManager.selectedView;\n }\n\n /** Adds listeners when components mounts */\n public override async componentDidMount() {\n this._isMounted = true;\n\n CardContainer.onCardSelectedEvent.addListener(this._handleCardSelected);\n ViewportComponentEvents.onViewIdChangedEvent.addListener(\n this._handleViewIdChanged\n );\n\n IModelApp.viewManager.onSelectedViewportChanged.addListener(\n this._handleSelectedViewportChanged\n );\n\n const stateData = await this._setupSheets();\n\n if (this._isMounted) this.setState(stateData);\n }\n\n /** Removes listeners when component will unmount */\n public override componentWillUnmount() {\n this._isMounted = false;\n\n CardContainer.onCardSelectedEvent.removeListener(this._handleCardSelected);\n ViewportComponentEvents.onViewIdChangedEvent.removeListener(\n this._handleViewIdChanged\n );\n\n IModelApp.viewManager.onSelectedViewportChanged.removeListener(\n this._handleSelectedViewportChanged\n );\n }\n\n /** Queries for sheet info and sets as sheetData */\n private async _setupSheets(): Promise<SheetNavigationState> {\n const stateData: SheetNavigationState = {\n index: 0,\n sheetData: [],\n };\n\n if (\n !this.props.iModelConnection ||\n !this.props.iModelConnection.views.getViewList\n )\n return stateData;\n\n let viewId = \"\";\n if (this._viewport) {\n viewId = this._viewport.view.id.toString();\n }\n\n const sheets = await this.props.iModelConnection.views.getViewList({\n from: \"BisCore.SheetViewDefinition\",\n });\n sheets.forEach((viewSpec: IModelConnection.ViewSpec, index: number) => {\n stateData.sheetData.push({ name: viewSpec.name, viewId: viewSpec.id });\n if (viewSpec.id === viewId) stateData.index = index;\n });\n\n return stateData;\n }\n\n public override render(): React.ReactNode {\n const name =\n this.state.sheetData.length > 0\n ? this.state.sheetData[this.state.index].name\n : \"\";\n const leftIndex =\n this.state.index === 0\n ? this.state.sheetData.length - 1\n : this.state.index - 1;\n const rightIndex =\n this.state.index >= this.state.sheetData.length - 1\n ? 0\n : this.state.index + 1;\n const leftTitle = this.state.sheetData[leftIndex]\n ? this.state.sheetData[leftIndex].name\n : undefined;\n const rightTitle = this.state.sheetData[rightIndex]\n ? this.state.sheetData[rightIndex].name\n : undefined;\n\n let content: React.ReactNode;\n if (this.state.sheetData.length > 0) {\n content = (\n <>\n <div className=\"sheet-title\">\n {UiFramework.translate(\"general.sheet\")}\n </div>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div\n className=\"sheet-name\"\n title={name}\n onClick={this._handleOnClickSheetName}\n role=\"button\"\n tabIndex={-1}\n >\n {name}\n </div>\n <div className=\"sheet-container\">\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <IconButton\n size=\"small\"\n styleType=\"borderless\"\n onClick={this._handleOnClickLeftArrow}\n tabIndex={-1}\n label={leftTitle}\n >\n <SvgChevronLeft />\n </IconButton>\n <div>\n {this.state.index + 1} {UiFramework.translate(\"general.of\")}\n {this.state.sheetData.length}\n </div>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <IconButton\n size=\"small\"\n styleType=\"borderless\"\n onClick={this._handleOnClickRightArrow}\n role=\"button\"\n tabIndex={-1}\n label={rightTitle}\n >\n <SvgChevronRight />\n </IconButton>\n </div>\n </>\n );\n } else {\n content = <ProgressRadial size=\"x-small\" indeterminate />;\n }\n\n return (\n <div\n className={classnames(\"uifw-sheet-navigation\", this.props.className)}\n style={this.props.style}\n >\n {content}\n </div>\n );\n }\n\n /** Sets index of newly selected card */\n private _handleCardSelected: ListenerType<\n typeof CardContainer.onCardSelectedEvent\n > = (event) => {\n event &&\n this.setState({\n index: event.index,\n });\n };\n\n /** Updates view to the next lowest index in sheetData */\n private _handleOnClickLeftArrow = () => {\n this.setState(\n (prevState) => ({\n index:\n prevState.index <= 0\n ? prevState.sheetData.length - 1\n : prevState.index - 1,\n }),\n async () => this._updateView()\n );\n };\n\n /** Updates view to next highest index in sheetData */\n private _handleOnClickRightArrow = () => {\n this.setState(\n (prevState) => ({\n index: (prevState.index + 1) % prevState.sheetData.length,\n }),\n async () => this._updateView()\n );\n };\n\n /** Handles a Viewport change & synchs the index */\n private _handleSelectedViewportChanged = (\n args: SelectedViewportChangedArgs\n ) => {\n if (args.current) {\n this._handleViewportChanged(args.current);\n }\n };\n\n private _handleViewIdChanged: ListenerType<\n typeof ViewportComponentEvents.onViewIdChangedEvent\n > = (args) => {\n if (this._viewport === args.viewport)\n this._handleViewportChanged(args.viewport as ScreenViewport);\n };\n\n /** Handles a Viewport change & synchs the index */\n private _handleViewportChanged = (viewport: ScreenViewport) => {\n const className = ViewUtilities.getBisBaseClass(\n viewport.view.classFullName\n );\n\n if (ViewUtilities.isSheet(className)) {\n this._viewport = viewport;\n\n const viewId = this._viewport.view.id.toString();\n\n const index = this.state.sheetData.findIndex((sheetData: SheetData) => {\n return viewId === sheetData.viewId;\n });\n\n if (index >= 0) this.setState({ index });\n }\n };\n\n /** Updates view to currently set sheet */\n private async _updateView() {\n const viewState = await this.props.iModelConnection.views.load(\n this.state.sheetData[this.state.index].viewId\n );\n if (this._viewport) this._viewport.changeView(viewState);\n }\n\n /** Creates a new SheetsModalFrontstage */\n private modalFrontstage(): ModalFrontstageInfo {\n return new SheetsModalFrontstage(\n this.state.sheetData,\n this.props.iModelConnection,\n this.state.index\n );\n }\n\n /** Opens a new SheetsModelFrontstage on sheetName click */\n private _handleOnClickSheetName = () => {\n UiFramework.frontstages.openModalFrontstage(this.modalFrontstage());\n };\n}\n"]}
1
+ {"version":3,"file":"SheetNavigationAid.js","sourceRoot":"","sources":["../../../src/appui-react/navigationaids/SheetNavigationAid.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module NavigationAids\n */\n\nimport \"./SheetNavigationAid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type {\n IModelConnection,\n ScreenViewport,\n SelectedViewportChangedArgs,\n} from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { ViewportComponentEvents } from \"@itwin/imodel-components-react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport type { ConfigurableCreateInfo } from \"../configurableui/ConfigurableUiControl.js\";\nimport type { ModalFrontstageInfo } from \"../framework/FrameworkFrontstages.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { ViewUtilities } from \"../utils/ViewUtilities.js\";\nimport { NavigationAidControl } from \"./NavigationAidControl.js\";\nimport {\n CardContainer,\n SheetsModalFrontstage,\n} from \"./SheetsModalFrontstage.js\";\nimport { IconButton, ProgressRadial } from \"@itwin/itwinui-react\";\nimport { SvgChevronLeft, SvgChevronRight } from \"@itwin/itwinui-icons-react\";\n\n/** A Sheet Navigation Aid control.\n * @public\n * @deprecated in 4.16.0. Use {@link SheetNavigationAid} component instead.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class SheetNavigationAidControl extends NavigationAidControl {\n public static navigationAidId = \"SheetNavigationAid\";\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(info: ConfigurableCreateInfo, options: any) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n super(info, options);\n this.reactNode = <SheetNavigationAid iModelConnection={options.imodel} />;\n }\n\n public override getSize(): string | undefined {\n return \"96px\";\n }\n}\n\n/** Data displayed about sheet\n * @alpha\n */\nexport interface SheetData {\n name: string;\n viewId: string;\n}\n\n/** Properties for the [[SheetNavigationAid]] component\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport interface SheetNavigationProps extends CommonProps {\n iModelConnection: IModelConnection;\n}\n\ninterface SheetNavigationState {\n index: number;\n sheetData: SheetData[];\n}\n\n/** A Sheet Navigation Aid.\n * @public\n */\nexport class SheetNavigationAid extends React.Component<\n SheetNavigationProps,\n SheetNavigationState\n> {\n private _isMounted = false;\n\n public override readonly state: Readonly<SheetNavigationState> = {\n index: 0,\n sheetData: [],\n };\n\n private _viewport: ScreenViewport | undefined;\n\n constructor(props: SheetNavigationProps) {\n super(props);\n\n this._viewport = IModelApp.viewManager.selectedView;\n }\n\n /** Adds listeners when components mounts */\n public override async componentDidMount() {\n this._isMounted = true;\n\n CardContainer.onCardSelectedEvent.addListener(this._handleCardSelected);\n ViewportComponentEvents.onViewIdChangedEvent.addListener(\n this._handleViewIdChanged\n );\n\n IModelApp.viewManager.onSelectedViewportChanged.addListener(\n this._handleSelectedViewportChanged\n );\n\n const stateData = await this._setupSheets();\n\n if (this._isMounted) this.setState(stateData);\n }\n\n /** Removes listeners when component will unmount */\n public override componentWillUnmount() {\n this._isMounted = false;\n\n CardContainer.onCardSelectedEvent.removeListener(this._handleCardSelected);\n ViewportComponentEvents.onViewIdChangedEvent.removeListener(\n this._handleViewIdChanged\n );\n\n IModelApp.viewManager.onSelectedViewportChanged.removeListener(\n this._handleSelectedViewportChanged\n );\n }\n\n /** Queries for sheet info and sets as sheetData */\n private async _setupSheets(): Promise<SheetNavigationState> {\n const stateData: SheetNavigationState = {\n index: 0,\n sheetData: [],\n };\n\n if (\n !this.props.iModelConnection ||\n !this.props.iModelConnection.views.getViewList\n )\n return stateData;\n\n let viewId = \"\";\n if (this._viewport) {\n viewId = this._viewport.view.id.toString();\n }\n\n const sheets = await this.props.iModelConnection.views.getViewList({\n from: \"BisCore.SheetViewDefinition\",\n });\n sheets.forEach((viewSpec: IModelConnection.ViewSpec, index: number) => {\n stateData.sheetData.push({ name: viewSpec.name, viewId: viewSpec.id });\n if (viewSpec.id === viewId) stateData.index = index;\n });\n\n return stateData;\n }\n\n public override render(): React.ReactNode {\n const name =\n this.state.sheetData.length > 0\n ? this.state.sheetData[this.state.index].name\n : \"\";\n const leftIndex =\n this.state.index === 0\n ? this.state.sheetData.length - 1\n : this.state.index - 1;\n const rightIndex =\n this.state.index >= this.state.sheetData.length - 1\n ? 0\n : this.state.index + 1;\n const leftTitle = this.state.sheetData[leftIndex]\n ? this.state.sheetData[leftIndex].name\n : undefined;\n const rightTitle = this.state.sheetData[rightIndex]\n ? this.state.sheetData[rightIndex].name\n : undefined;\n\n let content: React.ReactNode;\n if (this.state.sheetData.length > 0) {\n content = (\n <>\n <div className=\"sheet-title\">\n {UiFramework.translate(\"general.sheet\")}\n </div>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <div\n className=\"sheet-name\"\n title={name}\n onClick={this._handleOnClickSheetName}\n role=\"button\"\n tabIndex={-1}\n >\n {name}\n </div>\n <div className=\"sheet-container\">\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <IconButton\n size=\"small\"\n styleType=\"borderless\"\n onClick={this._handleOnClickLeftArrow}\n tabIndex={-1}\n label={leftTitle}\n >\n <SvgChevronLeft />\n </IconButton>\n <div>\n {this.state.index + 1} {UiFramework.translate(\"general.of\")}\n {this.state.sheetData.length}\n </div>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n <IconButton\n size=\"small\"\n styleType=\"borderless\"\n onClick={this._handleOnClickRightArrow}\n role=\"button\"\n tabIndex={-1}\n label={rightTitle}\n >\n <SvgChevronRight />\n </IconButton>\n </div>\n </>\n );\n } else {\n content = <ProgressRadial size=\"x-small\" indeterminate />;\n }\n\n return (\n <div\n className={classnames(\"uifw-sheet-navigation\", this.props.className)}\n style={this.props.style}\n >\n {content}\n </div>\n );\n }\n\n /** Sets index of newly selected card */\n private _handleCardSelected: ListenerType<\n typeof CardContainer.onCardSelectedEvent\n > = (event) => {\n event &&\n this.setState({\n index: event.index,\n });\n };\n\n /** Updates view to the next lowest index in sheetData */\n private _handleOnClickLeftArrow = () => {\n this.setState(\n (prevState) => ({\n index:\n prevState.index <= 0\n ? prevState.sheetData.length - 1\n : prevState.index - 1,\n }),\n async () => this._updateView()\n );\n };\n\n /** Updates view to next highest index in sheetData */\n private _handleOnClickRightArrow = () => {\n this.setState(\n (prevState) => ({\n index: (prevState.index + 1) % prevState.sheetData.length,\n }),\n async () => this._updateView()\n );\n };\n\n /** Handles a Viewport change & synchs the index */\n private _handleSelectedViewportChanged = (\n args: SelectedViewportChangedArgs\n ) => {\n if (args.current) {\n this._handleViewportChanged(args.current);\n }\n };\n\n private _handleViewIdChanged: ListenerType<\n typeof ViewportComponentEvents.onViewIdChangedEvent\n > = (args) => {\n if (this._viewport === args.viewport)\n this._handleViewportChanged(args.viewport as ScreenViewport);\n };\n\n /** Handles a Viewport change & synchs the index */\n private _handleViewportChanged = (viewport: ScreenViewport) => {\n const className = ViewUtilities.getBisBaseClass(\n viewport.view.classFullName\n );\n\n if (ViewUtilities.isSheet(className)) {\n this._viewport = viewport;\n\n const viewId = this._viewport.view.id.toString();\n\n const index = this.state.sheetData.findIndex((sheetData: SheetData) => {\n return viewId === sheetData.viewId;\n });\n\n if (index >= 0) this.setState({ index });\n }\n };\n\n /** Updates view to currently set sheet */\n private async _updateView() {\n const viewState = await this.props.iModelConnection.views.load(\n this.state.sheetData[this.state.index].viewId\n );\n if (this._viewport) this._viewport.changeView(viewState);\n }\n\n /** Creates a new SheetsModalFrontstage */\n private modalFrontstage(): ModalFrontstageInfo {\n return new SheetsModalFrontstage(\n this.state.sheetData,\n this.props.iModelConnection,\n this.state.index\n );\n }\n\n /** Opens a new SheetsModelFrontstage on sheetName click */\n private _handleOnClickSheetName = () => {\n UiFramework.frontstages.openModalFrontstage(this.modalFrontstage());\n };\n}\n"]}