@itwin/appui-react 4.6.4 → 4.7.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 (405) hide show
  1. package/CHANGELOG.md +19 -3
  2. package/lib/cjs/appui-react/UiFramework.d.ts +29 -14
  3. package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
  4. package/lib/cjs/appui-react/UiFramework.js +28 -15
  5. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  6. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  7. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js +4 -7
  8. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  9. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  10. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js +3 -3
  11. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  12. package/lib/cjs/appui-react/accudraw/AccuDrawKeyboardShortcuts.d.ts +8 -0
  13. package/lib/cjs/appui-react/accudraw/AccuDrawKeyboardShortcuts.d.ts.map +1 -1
  14. package/lib/cjs/appui-react/accudraw/AccuDrawKeyboardShortcuts.js +8 -0
  15. package/lib/cjs/appui-react/accudraw/AccuDrawKeyboardShortcuts.js.map +1 -1
  16. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.d.ts.map +1 -1
  17. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js +3 -4
  18. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  19. package/lib/cjs/appui-react/accudraw/Calculator.d.ts.map +1 -1
  20. package/lib/cjs/appui-react/accudraw/Calculator.js +11 -12
  21. package/lib/cjs/appui-react/accudraw/Calculator.js.map +1 -1
  22. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.d.ts +9 -1
  23. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
  24. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js +9 -1
  25. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  26. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts +2 -2
  27. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
  28. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +16 -11
  29. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  30. package/lib/cjs/appui-react/childwindow/PopoutWidget.d.ts +2 -4
  31. package/lib/cjs/appui-react/childwindow/PopoutWidget.d.ts.map +1 -1
  32. package/lib/cjs/appui-react/childwindow/PopoutWidget.js +6 -3
  33. package/lib/cjs/appui-react/childwindow/PopoutWidget.js.map +1 -1
  34. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  35. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js +3 -1
  36. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  37. package/lib/cjs/appui-react/configurableui/state.d.ts.map +1 -1
  38. package/lib/cjs/appui-react/configurableui/state.js +5 -2
  39. package/lib/cjs/appui-react/configurableui/state.js.map +1 -1
  40. package/lib/cjs/appui-react/content/IModelViewport.d.ts.map +1 -1
  41. package/lib/cjs/appui-react/content/IModelViewport.js +2 -0
  42. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  43. package/lib/cjs/appui-react/feedback/ValidationTextbox.js +3 -3
  44. package/lib/cjs/appui-react/feedback/ValidationTextbox.js.map +1 -1
  45. package/lib/cjs/appui-react/framework/FrameworkKeyboardShortcuts.d.ts +2 -2
  46. package/lib/cjs/appui-react/framework/FrameworkKeyboardShortcuts.d.ts.map +1 -1
  47. package/lib/cjs/appui-react/framework/FrameworkKeyboardShortcuts.js.map +1 -1
  48. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +6 -8
  49. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  50. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +26 -16
  51. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  52. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.d.ts.map +1 -1
  53. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +1 -1
  54. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  55. package/lib/cjs/appui-react/frontstage/NestedFrontstage.d.ts.map +1 -1
  56. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js +1 -2
  57. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  58. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js +2 -2
  59. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  60. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  61. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js +42 -2
  62. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  63. package/lib/cjs/appui-react/messages/AppNotificationManager.d.ts +9 -3
  64. package/lib/cjs/appui-react/messages/AppNotificationManager.d.ts.map +1 -1
  65. package/lib/cjs/appui-react/messages/AppNotificationManager.js +9 -3
  66. package/lib/cjs/appui-react/messages/AppNotificationManager.js.map +1 -1
  67. package/lib/cjs/appui-react/messages/MessageManager.d.ts +10 -0
  68. package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
  69. package/lib/cjs/appui-react/messages/MessageManager.js +51 -6
  70. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  71. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.d.ts.map +1 -1
  72. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js +1 -3
  73. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  74. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.scss +0 -15
  75. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.d.ts.map +1 -1
  76. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js +8 -8
  77. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  78. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts +1 -1
  79. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  80. package/lib/cjs/appui-react/pickers/ViewSelector.js +2 -3
  81. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  82. package/lib/cjs/appui-react/popup/CardPopup.d.ts.map +1 -1
  83. package/lib/cjs/appui-react/popup/CardPopup.js +2 -2
  84. package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
  85. package/lib/cjs/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
  86. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +7 -6
  87. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  88. package/lib/cjs/appui-react/popup/KeyinPalettePopup.d.ts.map +1 -1
  89. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js +2 -2
  90. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  91. package/lib/cjs/appui-react/popup/ToolSettingsPopup.d.ts.map +1 -1
  92. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js +2 -2
  93. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  94. package/lib/cjs/appui-react/popup/ToolbarPopup.d.ts.map +1 -1
  95. package/lib/cjs/appui-react/popup/ToolbarPopup.js +2 -2
  96. package/lib/cjs/appui-react/popup/ToolbarPopup.js.map +1 -1
  97. package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts +47 -0
  98. package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts.map +1 -0
  99. package/lib/cjs/appui-react/preview/PreviewFeatures.js +95 -0
  100. package/lib/cjs/appui-react/preview/PreviewFeatures.js.map +1 -0
  101. package/lib/cjs/appui-react/safearea/SafeAreaContext.d.ts +9 -2
  102. package/lib/cjs/appui-react/safearea/SafeAreaContext.d.ts.map +1 -1
  103. package/lib/cjs/appui-react/safearea/SafeAreaContext.js +9 -2
  104. package/lib/cjs/appui-react/safearea/SafeAreaContext.js.map +1 -1
  105. package/lib/cjs/appui-react/selection/SelectionContextItemDef.d.ts.map +1 -1
  106. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js +10 -10
  107. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  108. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.d.ts +2 -3
  109. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  110. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js +9 -6
  111. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  112. package/lib/cjs/appui-react/statusbar/StatusBar.d.ts +1 -28
  113. package/lib/cjs/appui-react/statusbar/StatusBar.d.ts.map +1 -1
  114. package/lib/cjs/appui-react/statusbar/StatusBar.js +1 -69
  115. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  116. package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  117. package/lib/cjs/appui-react/statusfields/MessageCenter.js +1 -3
  118. package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
  119. package/lib/cjs/appui-react/statusfields/SectionsField.d.ts.map +1 -1
  120. package/lib/cjs/appui-react/statusfields/SectionsField.js +1 -3
  121. package/lib/cjs/appui-react/statusfields/SectionsField.js.map +1 -1
  122. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts +4 -7
  123. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  124. package/lib/cjs/appui-react/statusfields/SelectionScope.js +2 -7
  125. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  126. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  127. package/lib/cjs/appui-react/statusfields/SnapMode.js +8 -10
  128. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  129. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  130. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +8 -4
  131. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  132. package/lib/cjs/appui-react/theme/ThemeManager.d.ts +38 -7
  133. package/lib/cjs/appui-react/theme/ThemeManager.d.ts.map +1 -1
  134. package/lib/cjs/appui-react/theme/ThemeManager.js +52 -11
  135. package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
  136. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  137. package/lib/cjs/appui-react/toolbar/Toolbar.js +12 -1
  138. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  139. package/lib/cjs/appui-react/toolbar/ToolbarItem.d.ts +21 -0
  140. package/lib/cjs/appui-react/toolbar/ToolbarItem.d.ts.map +1 -1
  141. package/lib/cjs/appui-react/toolbar/ToolbarItem.js.map +1 -1
  142. package/lib/cjs/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
  143. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +7 -7
  144. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  145. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.d.ts +10 -1
  146. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.d.ts.map +1 -1
  147. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js +12 -4
  148. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  149. package/lib/cjs/appui-react/tools/KeyinPaletteTools.d.ts.map +1 -1
  150. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js +1 -2
  151. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  152. package/lib/cjs/appui-react/tools/OpenSettingsTool.d.ts.map +1 -1
  153. package/lib/cjs/appui-react/tools/OpenSettingsTool.js +1 -2
  154. package/lib/cjs/appui-react/tools/OpenSettingsTool.js.map +1 -1
  155. package/lib/cjs/appui-react/tools/RestoreLayoutTool.d.ts.map +1 -1
  156. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js +2 -3
  157. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  158. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts +15 -0
  159. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts.map +1 -1
  160. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +133 -105
  161. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  162. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.d.ts +10 -4
  163. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.d.ts.map +1 -1
  164. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +80 -65
  165. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  166. package/lib/cjs/appui-react/ui-items-provider/UiItemsProvider.d.ts +30 -4
  167. package/lib/cjs/appui-react/ui-items-provider/UiItemsProvider.d.ts.map +1 -1
  168. package/lib/cjs/appui-react/ui-items-provider/UiItemsProvider.js.map +1 -1
  169. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.d.ts +11 -2
  170. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.d.ts.map +1 -1
  171. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js +9 -1
  172. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  173. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts +5 -4
  174. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  175. package/lib/cjs/appui-react/uistate/AppUiSettings.js +2 -2
  176. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  177. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts +10 -1
  178. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  179. package/lib/cjs/appui-react/uistate/useUiStateStorage.js +10 -1
  180. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
  181. package/lib/cjs/appui-react/utils/matchesWords.d.ts +22 -0
  182. package/lib/cjs/appui-react/utils/matchesWords.d.ts.map +1 -0
  183. package/lib/cjs/appui-react/utils/matchesWords.js +103 -0
  184. package/lib/cjs/appui-react/utils/matchesWords.js.map +1 -0
  185. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  186. package/lib/cjs/appui-react/widget-panels/Frontstage.js +25 -13
  187. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  188. package/lib/cjs/appui-react/widget-panels/Frontstage.scss +19 -0
  189. package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts +4 -1
  190. package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  191. package/lib/cjs/appui-react/widget-panels/ToolSettings.js +11 -5
  192. package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
  193. package/lib/cjs/appui-react/widgets/BackstageAppButton.d.ts.map +1 -1
  194. package/lib/cjs/appui-react/widgets/BackstageAppButton.js +2 -7
  195. package/lib/cjs/appui-react/widgets/BackstageAppButton.js.map +1 -1
  196. package/lib/cjs/appui-react/widgets/Widget.d.ts +23 -1
  197. package/lib/cjs/appui-react/widgets/Widget.d.ts.map +1 -1
  198. package/lib/cjs/appui-react/widgets/Widget.js.map +1 -1
  199. package/lib/cjs/appui-react.d.ts +1 -0
  200. package/lib/cjs/appui-react.d.ts.map +1 -1
  201. package/lib/cjs/appui-react.js +3 -0
  202. package/lib/cjs/appui-react.js.map +1 -1
  203. package/lib/esm/appui-react/UiFramework.d.ts +29 -14
  204. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  205. package/lib/esm/appui-react/UiFramework.js +29 -16
  206. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  207. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  208. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +4 -7
  209. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  210. package/lib/esm/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  211. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js +3 -3
  212. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  213. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.d.ts +8 -0
  214. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.d.ts.map +1 -1
  215. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.js +8 -0
  216. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.js.map +1 -1
  217. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.d.ts.map +1 -1
  218. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js +3 -4
  219. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  220. package/lib/esm/appui-react/accudraw/Calculator.d.ts.map +1 -1
  221. package/lib/esm/appui-react/accudraw/Calculator.js +11 -12
  222. package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
  223. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts +9 -1
  224. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
  225. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js +9 -1
  226. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  227. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts +2 -2
  228. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
  229. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +16 -11
  230. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  231. package/lib/esm/appui-react/childwindow/PopoutWidget.d.ts +2 -4
  232. package/lib/esm/appui-react/childwindow/PopoutWidget.d.ts.map +1 -1
  233. package/lib/esm/appui-react/childwindow/PopoutWidget.js +6 -3
  234. package/lib/esm/appui-react/childwindow/PopoutWidget.js.map +1 -1
  235. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  236. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js +3 -1
  237. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  238. package/lib/esm/appui-react/configurableui/state.d.ts.map +1 -1
  239. package/lib/esm/appui-react/configurableui/state.js +5 -2
  240. package/lib/esm/appui-react/configurableui/state.js.map +1 -1
  241. package/lib/esm/appui-react/content/IModelViewport.d.ts.map +1 -1
  242. package/lib/esm/appui-react/content/IModelViewport.js +2 -0
  243. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  244. package/lib/esm/appui-react/feedback/ValidationTextbox.js +3 -3
  245. package/lib/esm/appui-react/feedback/ValidationTextbox.js.map +1 -1
  246. package/lib/esm/appui-react/framework/FrameworkKeyboardShortcuts.d.ts +2 -2
  247. package/lib/esm/appui-react/framework/FrameworkKeyboardShortcuts.d.ts.map +1 -1
  248. package/lib/esm/appui-react/framework/FrameworkKeyboardShortcuts.js.map +1 -1
  249. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +6 -8
  250. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  251. package/lib/esm/appui-react/frontstage/FrontstageDef.js +27 -17
  252. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  253. package/lib/esm/appui-react/frontstage/ModalSettingsStage.d.ts.map +1 -1
  254. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +2 -2
  255. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  256. package/lib/esm/appui-react/frontstage/NestedFrontstage.d.ts.map +1 -1
  257. package/lib/esm/appui-react/frontstage/NestedFrontstage.js +1 -2
  258. package/lib/esm/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  259. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js +2 -2
  260. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  261. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  262. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js +41 -1
  263. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  264. package/lib/esm/appui-react/messages/AppNotificationManager.d.ts +9 -3
  265. package/lib/esm/appui-react/messages/AppNotificationManager.d.ts.map +1 -1
  266. package/lib/esm/appui-react/messages/AppNotificationManager.js +9 -3
  267. package/lib/esm/appui-react/messages/AppNotificationManager.js.map +1 -1
  268. package/lib/esm/appui-react/messages/MessageManager.d.ts +10 -0
  269. package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
  270. package/lib/esm/appui-react/messages/MessageManager.js +52 -7
  271. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  272. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.d.ts.map +1 -1
  273. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js +1 -3
  274. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  275. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.scss +0 -15
  276. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.d.ts.map +1 -1
  277. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js +9 -9
  278. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  279. package/lib/esm/appui-react/pickers/ViewSelector.d.ts +1 -1
  280. package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  281. package/lib/esm/appui-react/pickers/ViewSelector.js +2 -3
  282. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  283. package/lib/esm/appui-react/popup/CardPopup.d.ts.map +1 -1
  284. package/lib/esm/appui-react/popup/CardPopup.js +2 -2
  285. package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
  286. package/lib/esm/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
  287. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +6 -5
  288. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  289. package/lib/esm/appui-react/popup/KeyinPalettePopup.d.ts.map +1 -1
  290. package/lib/esm/appui-react/popup/KeyinPalettePopup.js +2 -2
  291. package/lib/esm/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  292. package/lib/esm/appui-react/popup/ToolSettingsPopup.d.ts.map +1 -1
  293. package/lib/esm/appui-react/popup/ToolSettingsPopup.js +2 -2
  294. package/lib/esm/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  295. package/lib/esm/appui-react/popup/ToolbarPopup.d.ts.map +1 -1
  296. package/lib/esm/appui-react/popup/ToolbarPopup.js +2 -2
  297. package/lib/esm/appui-react/popup/ToolbarPopup.js.map +1 -1
  298. package/lib/esm/appui-react/preview/PreviewFeatures.d.ts +47 -0
  299. package/lib/esm/appui-react/preview/PreviewFeatures.d.ts.map +1 -0
  300. package/lib/esm/appui-react/preview/PreviewFeatures.js +90 -0
  301. package/lib/esm/appui-react/preview/PreviewFeatures.js.map +1 -0
  302. package/lib/esm/appui-react/safearea/SafeAreaContext.d.ts +9 -2
  303. package/lib/esm/appui-react/safearea/SafeAreaContext.d.ts.map +1 -1
  304. package/lib/esm/appui-react/safearea/SafeAreaContext.js +9 -2
  305. package/lib/esm/appui-react/safearea/SafeAreaContext.js.map +1 -1
  306. package/lib/esm/appui-react/selection/SelectionContextItemDef.d.ts.map +1 -1
  307. package/lib/esm/appui-react/selection/SelectionContextItemDef.js +11 -11
  308. package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  309. package/lib/esm/appui-react/settings/ui/UiSettingsPage.d.ts +2 -3
  310. package/lib/esm/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  311. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js +9 -6
  312. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  313. package/lib/esm/appui-react/statusbar/StatusBar.d.ts +1 -28
  314. package/lib/esm/appui-react/statusbar/StatusBar.d.ts.map +1 -1
  315. package/lib/esm/appui-react/statusbar/StatusBar.js +1 -69
  316. package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
  317. package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  318. package/lib/esm/appui-react/statusfields/MessageCenter.js +2 -4
  319. package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
  320. package/lib/esm/appui-react/statusfields/SectionsField.d.ts.map +1 -1
  321. package/lib/esm/appui-react/statusfields/SectionsField.js +1 -3
  322. package/lib/esm/appui-react/statusfields/SectionsField.js.map +1 -1
  323. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts +4 -7
  324. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  325. package/lib/esm/appui-react/statusfields/SelectionScope.js +2 -7
  326. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  327. package/lib/esm/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  328. package/lib/esm/appui-react/statusfields/SnapMode.js +8 -10
  329. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  330. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  331. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +8 -4
  332. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  333. package/lib/esm/appui-react/theme/ThemeManager.d.ts +38 -7
  334. package/lib/esm/appui-react/theme/ThemeManager.d.ts.map +1 -1
  335. package/lib/esm/appui-react/theme/ThemeManager.js +51 -10
  336. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  337. package/lib/esm/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  338. package/lib/esm/appui-react/toolbar/Toolbar.js +11 -0
  339. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  340. package/lib/esm/appui-react/toolbar/ToolbarItem.d.ts +21 -0
  341. package/lib/esm/appui-react/toolbar/ToolbarItem.d.ts.map +1 -1
  342. package/lib/esm/appui-react/toolbar/ToolbarItem.js.map +1 -1
  343. package/lib/esm/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
  344. package/lib/esm/appui-react/tools/CoreToolDefinitions.js +8 -8
  345. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  346. package/lib/esm/appui-react/tools/FrameworkToolAdmin.d.ts +10 -1
  347. package/lib/esm/appui-react/tools/FrameworkToolAdmin.d.ts.map +1 -1
  348. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js +12 -4
  349. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  350. package/lib/esm/appui-react/tools/KeyinPaletteTools.d.ts.map +1 -1
  351. package/lib/esm/appui-react/tools/KeyinPaletteTools.js +1 -2
  352. package/lib/esm/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  353. package/lib/esm/appui-react/tools/OpenSettingsTool.d.ts.map +1 -1
  354. package/lib/esm/appui-react/tools/OpenSettingsTool.js +1 -2
  355. package/lib/esm/appui-react/tools/OpenSettingsTool.js.map +1 -1
  356. package/lib/esm/appui-react/tools/RestoreLayoutTool.d.ts.map +1 -1
  357. package/lib/esm/appui-react/tools/RestoreLayoutTool.js +2 -3
  358. package/lib/esm/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  359. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts +15 -0
  360. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts.map +1 -1
  361. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +131 -104
  362. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  363. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.d.ts +10 -4
  364. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.d.ts.map +1 -1
  365. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +81 -66
  366. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  367. package/lib/esm/appui-react/ui-items-provider/UiItemsProvider.d.ts +30 -4
  368. package/lib/esm/appui-react/ui-items-provider/UiItemsProvider.d.ts.map +1 -1
  369. package/lib/esm/appui-react/ui-items-provider/UiItemsProvider.js.map +1 -1
  370. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.d.ts +11 -2
  371. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.d.ts.map +1 -1
  372. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js +9 -1
  373. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  374. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts +5 -4
  375. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  376. package/lib/esm/appui-react/uistate/AppUiSettings.js +2 -2
  377. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  378. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts +10 -1
  379. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  380. package/lib/esm/appui-react/uistate/useUiStateStorage.js +10 -1
  381. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
  382. package/lib/esm/appui-react/utils/matchesWords.d.ts +22 -0
  383. package/lib/esm/appui-react/utils/matchesWords.d.ts.map +1 -0
  384. package/lib/esm/appui-react/utils/matchesWords.js +99 -0
  385. package/lib/esm/appui-react/utils/matchesWords.js.map +1 -0
  386. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  387. package/lib/esm/appui-react/widget-panels/Frontstage.js +27 -15
  388. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  389. package/lib/esm/appui-react/widget-panels/Frontstage.scss +19 -0
  390. package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts +4 -1
  391. package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  392. package/lib/esm/appui-react/widget-panels/ToolSettings.js +9 -4
  393. package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
  394. package/lib/esm/appui-react/widgets/BackstageAppButton.d.ts.map +1 -1
  395. package/lib/esm/appui-react/widgets/BackstageAppButton.js +2 -7
  396. package/lib/esm/appui-react/widgets/BackstageAppButton.js.map +1 -1
  397. package/lib/esm/appui-react/widgets/Widget.d.ts +23 -1
  398. package/lib/esm/appui-react/widgets/Widget.d.ts.map +1 -1
  399. package/lib/esm/appui-react/widgets/Widget.js.map +1 -1
  400. package/lib/esm/appui-react.d.ts +1 -0
  401. package/lib/esm/appui-react.d.ts.map +1 -1
  402. package/lib/esm/appui-react.js +1 -0
  403. package/lib/esm/appui-react.js.map +1 -1
  404. package/lib/public/locales/en/UiFramework.json +6 -4
  405. package/package.json +13 -11
@@ -7,7 +7,6 @@
7
7
  */
8
8
  import * as React from "react";
9
9
  import { AngleDescription, LengthDescription } from "@itwin/core-frontend";
10
- import { IconSpecUtilities } from "@itwin/appui-abstract";
11
10
  import { PopupManager } from "../popup/PopupManager";
12
11
  import { MenuItemHelpers } from "../shared/MenuItem";
13
12
  import { CalculatorPopup } from "./CalculatorPopup";
@@ -51,15 +50,15 @@ class AccuDrawPopupManager {
51
50
  return PopupManager.removePopup(AccuDrawPopupManager._calculatorId);
52
51
  }
53
52
  static showAngleEditor(el, pt, value, onCommit, onCancel) {
54
- const propertyDescription = new AngleDescription(undefined, undefined, IconSpecUtilities.createWebComponentIconSpec(angleIcon));
53
+ const propertyDescription = new AngleDescription(undefined, undefined, angleIcon);
55
54
  return PopupManager.showInputEditor(el, pt, value, propertyDescription, onCommit, onCancel);
56
55
  }
57
56
  static showLengthEditor(el, pt, value, onCommit, onCancel) {
58
- const propertyDescription = new LengthDescription(undefined, undefined, IconSpecUtilities.createWebComponentIconSpec(lengthIcon));
57
+ const propertyDescription = new LengthDescription(undefined, undefined, lengthIcon);
59
58
  return PopupManager.showInputEditor(el, pt, value, propertyDescription, onCommit, onCancel);
60
59
  }
61
60
  static showHeightEditor(el, pt, value, onCommit, onCancel) {
62
- const propertyDescription = new LengthDescription(undefined, undefined, IconSpecUtilities.createWebComponentIconSpec(heightIcon));
61
+ const propertyDescription = new LengthDescription(undefined, undefined, heightIcon);
63
62
  return PopupManager.showInputEditor(el, pt, value, propertyDescription, onCommit, onCancel);
64
63
  }
65
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AccuDrawPopupManager.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/AccuDrawPopupManager.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAO3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,UAAU,MAAM,gBAAgB,CAAC;AAExC;;GAEG;AACH,MAAa,oBAAoB;IAGxB,MAAM,CAAC,cAAc,CAC1B,EAAU,EACV,EAAe,EACf,EAAS,EACT,cAAuC;QAEvC,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,eAAe,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEnE,MAAM,SAAS,GAAG,CAChB,oBAAC,eAAe,IACd,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,YAAY,CAAC,aAAa,EAClC,OAAO,EAAE,WAAW,GACpB,CACH,CAAC;QAEF,MAAM,SAAS,GAAc;YAC3B,EAAE;YACF,EAAE;YACF,SAAS;YACT,cAAc,EAAE,EAAE,CAAC,aAAa;SACjC,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,EAAU;QACrC,OAAO,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,cAAc,CAC1B,EAAe,EACf,EAAS,EACT,YAAoB,EACpB,UAAkB,EAClB,IAAwB,EACxB,QAAsB;QAEtB,MAAM,EAAE,GAAG,oBAAoB,CAAC,aAAa,CAAC;QAC9C,MAAM,SAAS,GAAG,CAChB,oBAAC,eAAe,IACd,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,YAAY,CAAC,aAAa,EAClC,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;QAEF,MAAM,SAAS,GAAc;YAC3B,EAAE;YACF,EAAE;YACF,SAAS;YACT,cAAc,EAAE,EAAE,CAAC,aAAa;SACjC,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,OAAO,YAAY,CAAC,WAAW,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;IAEM,MAAM,CAAC,eAAe,CAC3B,EAAe,EACf,EAAS,EACT,KAAa,EACb,QAA4B,EAC5B,QAAsB;QAEtB,MAAM,mBAAmB,GAAG,IAAI,gBAAgB,CAC9C,SAAS,EACT,SAAS,EACT,iBAAiB,CAAC,0BAA0B,CAAC,SAAS,CAAC,CACxD,CAAC;QACF,OAAO,YAAY,CAAC,eAAe,CACjC,EAAE,EACF,EAAE,EACF,KAAK,EACL,mBAAmB,EACnB,QAA6B,EAC7B,QAAQ,CACT,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAC5B,EAAe,EACf,EAAS,EACT,KAAa,EACb,QAA4B,EAC5B,QAAsB;QAEtB,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,CAC/C,SAAS,EACT,SAAS,EACT,iBAAiB,CAAC,0BAA0B,CAAC,UAAU,CAAC,CACzD,CAAC;QACF,OAAO,YAAY,CAAC,eAAe,CACjC,EAAE,EACF,EAAE,EACF,KAAK,EACL,mBAAmB,EACnB,QAA6B,EAC7B,QAAQ,CACT,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAC5B,EAAe,EACf,EAAS,EACT,KAAa,EACb,QAA4B,EAC5B,QAAsB;QAEtB,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,CAC/C,SAAS,EACT,SAAS,EACT,iBAAiB,CAAC,0BAA0B,CAAC,UAAU,CAAC,CACzD,CAAC;QACF,OAAO,YAAY,CAAC,eAAe,CACjC,EAAE,EACF,EAAE,EACF,KAAK,EACL,mBAAmB,EACnB,QAA6B,EAC7B,QAAQ,CACT,CAAC;IACJ,CAAC;;AAzIc,kCAAa,GAAG,YAAY,CAAC;SADjC,oBAAoB","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 AccuDraw\n */\n\nimport * as React from \"react\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { AngleDescription, LengthDescription } from \"@itwin/core-frontend\";\nimport type {\n AbstractMenuItemProps,\n OnCancelFunc,\n OnNumberCommitFunc,\n OnValueCommitFunc,\n} from \"@itwin/appui-abstract\";\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\n\nimport type { PopupInfo } from \"../popup/PopupManager\";\nimport { PopupManager } from \"../popup/PopupManager\";\nimport { MenuItemHelpers } from \"../shared/MenuItem\";\nimport { CalculatorPopup } from \"./CalculatorPopup\";\nimport { MenuButtonPopup } from \"./MenuButtonPopup\";\n\nimport angleIcon from \"./angle.svg\";\nimport lengthIcon from \"./distance.svg\";\nimport heightIcon from \"./height-2.svg\";\n\n/** AccuDraw Popup Manager class\n * @alpha\n */\nexport class AccuDrawPopupManager {\n private static _calculatorId = \"Calculator\";\n\n public static showMenuButton(\n id: string,\n el: HTMLElement,\n pt: XAndY,\n menuItemsProps: AbstractMenuItemProps[]\n ): boolean {\n const menuItems = MenuItemHelpers.createMenuItems(menuItemsProps);\n const menuContent = MenuItemHelpers.createMenuItemNodes(menuItems);\n\n const component = (\n <MenuButtonPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n content={menuContent}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideMenuButton(id: string): boolean {\n return PopupManager.removePopup(id);\n }\n\n public static showCalculator(\n el: HTMLElement,\n pt: XAndY,\n initialValue: number,\n resultIcon: string,\n onOk: OnNumberCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const id = AccuDrawPopupManager._calculatorId;\n const component = (\n <CalculatorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n initialValue={initialValue}\n resultIcon={resultIcon}\n onOk={onOk}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCalculator(): boolean {\n return PopupManager.removePopup(AccuDrawPopupManager._calculatorId);\n }\n\n public static showAngleEditor(\n el: HTMLElement,\n pt: XAndY,\n value: number,\n onCommit: OnNumberCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const propertyDescription = new AngleDescription(\n undefined,\n undefined,\n IconSpecUtilities.createWebComponentIconSpec(angleIcon)\n );\n return PopupManager.showInputEditor(\n el,\n pt,\n value,\n propertyDescription,\n onCommit as OnValueCommitFunc,\n onCancel\n );\n }\n\n public static showLengthEditor(\n el: HTMLElement,\n pt: XAndY,\n value: number,\n onCommit: OnNumberCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const propertyDescription = new LengthDescription(\n undefined,\n undefined,\n IconSpecUtilities.createWebComponentIconSpec(lengthIcon)\n );\n return PopupManager.showInputEditor(\n el,\n pt,\n value,\n propertyDescription,\n onCommit as OnValueCommitFunc,\n onCancel\n );\n }\n\n public static showHeightEditor(\n el: HTMLElement,\n pt: XAndY,\n value: number,\n onCommit: OnNumberCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const propertyDescription = new LengthDescription(\n undefined,\n undefined,\n IconSpecUtilities.createWebComponentIconSpec(heightIcon)\n );\n return PopupManager.showInputEditor(\n el,\n pt,\n value,\n propertyDescription,\n onCommit as OnValueCommitFunc,\n onCancel\n );\n }\n}\n"]}
1
+ {"version":3,"file":"AccuDrawPopupManager.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/AccuDrawPopupManager.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAQ3E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,UAAU,MAAM,gBAAgB,CAAC;AAExC;;GAEG;AACH,MAAa,oBAAoB;IAGxB,MAAM,CAAC,cAAc,CAC1B,EAAU,EACV,EAAe,EACf,EAAS,EACT,cAAuC;QAEvC,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,eAAe,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEnE,MAAM,SAAS,GAAG,CAChB,oBAAC,eAAe,IACd,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,YAAY,CAAC,aAAa,EAClC,OAAO,EAAE,WAAW,GACpB,CACH,CAAC;QAEF,MAAM,SAAS,GAAc;YAC3B,EAAE;YACF,EAAE;YACF,SAAS;YACT,cAAc,EAAE,EAAE,CAAC,aAAa;SACjC,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,EAAU;QACrC,OAAO,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAEM,MAAM,CAAC,cAAc,CAC1B,EAAe,EACf,EAAS,EACT,YAAoB,EACpB,UAAkB,EAClB,IAAwB,EACxB,QAAsB;QAEtB,MAAM,EAAE,GAAG,oBAAoB,CAAC,aAAa,CAAC;QAC9C,MAAM,SAAS,GAAG,CAChB,oBAAC,eAAe,IACd,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,YAAY,CAAC,aAAa,EAClC,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;QAEF,MAAM,SAAS,GAAc;YAC3B,EAAE;YACF,EAAE;YACF,SAAS;YACT,cAAc,EAAE,EAAE,CAAC,aAAa;SACjC,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,OAAO,YAAY,CAAC,WAAW,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;IAEM,MAAM,CAAC,eAAe,CAC3B,EAAe,EACf,EAAS,EACT,KAAa,EACb,QAA4B,EAC5B,QAAsB;QAEtB,MAAM,mBAAmB,GAAG,IAAI,gBAAgB,CAC9C,SAAS,EACT,SAAS,EACT,SAAS,CACV,CAAC;QACF,OAAO,YAAY,CAAC,eAAe,CACjC,EAAE,EACF,EAAE,EACF,KAAK,EACL,mBAAmB,EACnB,QAA6B,EAC7B,QAAQ,CACT,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAC5B,EAAe,EACf,EAAS,EACT,KAAa,EACb,QAA4B,EAC5B,QAAsB;QAEtB,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,CAC/C,SAAS,EACT,SAAS,EACT,UAAU,CACX,CAAC;QACF,OAAO,YAAY,CAAC,eAAe,CACjC,EAAE,EACF,EAAE,EACF,KAAK,EACL,mBAAmB,EACnB,QAA6B,EAC7B,QAAQ,CACT,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAC5B,EAAe,EACf,EAAS,EACT,KAAa,EACb,QAA4B,EAC5B,QAAsB;QAEtB,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,CAC/C,SAAS,EACT,SAAS,EACT,UAAU,CACX,CAAC;QACF,OAAO,YAAY,CAAC,eAAe,CACjC,EAAE,EACF,EAAE,EACF,KAAK,EACL,mBAAmB,EACnB,QAA6B,EAC7B,QAAQ,CACT,CAAC;IACJ,CAAC;;AAzIc,kCAAa,GAAG,YAAY,CAAC;SADjC,oBAAoB","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 AccuDraw\n */\n\nimport * as React from \"react\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { AngleDescription, LengthDescription } from \"@itwin/core-frontend\";\nimport type {\n AbstractMenuItemProps,\n OnCancelFunc,\n OnNumberCommitFunc,\n OnValueCommitFunc,\n} from \"@itwin/appui-abstract\";\nimport type { PopupInfo } from \"../popup/PopupManager\";\nimport { PopupManager } from \"../popup/PopupManager\";\nimport { MenuItemHelpers } from \"../shared/MenuItem\";\nimport { CalculatorPopup } from \"./CalculatorPopup\";\nimport { MenuButtonPopup } from \"./MenuButtonPopup\";\n\nimport angleIcon from \"./angle.svg\";\nimport lengthIcon from \"./distance.svg\";\nimport heightIcon from \"./height-2.svg\";\n\n/** AccuDraw Popup Manager class\n * @alpha\n */\nexport class AccuDrawPopupManager {\n private static _calculatorId = \"Calculator\";\n\n public static showMenuButton(\n id: string,\n el: HTMLElement,\n pt: XAndY,\n menuItemsProps: AbstractMenuItemProps[]\n ): boolean {\n const menuItems = MenuItemHelpers.createMenuItems(menuItemsProps);\n const menuContent = MenuItemHelpers.createMenuItemNodes(menuItems);\n\n const component = (\n <MenuButtonPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n content={menuContent}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideMenuButton(id: string): boolean {\n return PopupManager.removePopup(id);\n }\n\n public static showCalculator(\n el: HTMLElement,\n pt: XAndY,\n initialValue: number,\n resultIcon: string,\n onOk: OnNumberCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const id = AccuDrawPopupManager._calculatorId;\n const component = (\n <CalculatorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n initialValue={initialValue}\n resultIcon={resultIcon}\n onOk={onOk}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCalculator(): boolean {\n return PopupManager.removePopup(AccuDrawPopupManager._calculatorId);\n }\n\n public static showAngleEditor(\n el: HTMLElement,\n pt: XAndY,\n value: number,\n onCommit: OnNumberCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const propertyDescription = new AngleDescription(\n undefined,\n undefined,\n angleIcon\n );\n return PopupManager.showInputEditor(\n el,\n pt,\n value,\n propertyDescription,\n onCommit as OnValueCommitFunc,\n onCancel\n );\n }\n\n public static showLengthEditor(\n el: HTMLElement,\n pt: XAndY,\n value: number,\n onCommit: OnNumberCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const propertyDescription = new LengthDescription(\n undefined,\n undefined,\n lengthIcon\n );\n return PopupManager.showInputEditor(\n el,\n pt,\n value,\n propertyDescription,\n onCommit as OnValueCommitFunc,\n onCancel\n );\n }\n\n public static showHeightEditor(\n el: HTMLElement,\n pt: XAndY,\n value: number,\n onCommit: OnNumberCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const propertyDescription = new LengthDescription(\n undefined,\n undefined,\n heightIcon\n );\n return PopupManager.showInputEditor(\n el,\n pt,\n value,\n propertyDescription,\n onCommit as OnValueCommitFunc,\n onCancel\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Calculator.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/Calculator.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAE3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAQ,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAS1E,aAAa;AACb,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,yDAAyD;IACzD,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB,2CAA2C;IAC3C,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,UAAU,eAAe;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,gBAAgB;AAChB,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAEnE,aAAa;AACb,qBAAa,UAAW,SAAQ,KAAK,CAAC,aAAa,CACjD,eAAe,EACf,eAAe,CAChB;IACC,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,cAAc,CAAS;IAE/B,gBAAgB;IAChB,gBAAuB,YAAY,EAAE,oBAAoB,CAEvD;gBAEU,KAAK,EAAE,eAAe;IAclC,OAAO,CAAC,mBAAmB,CAIzB;IAEF,OAAO,CAAC,sBAAsB,CAW5B;IAEF,OAAO,CAAC,SAAS,CAEf;IAEF,OAAO,CAAC,GAAG;IAQX,OAAO,CAAC,aAAa,CAEnB;IAEF,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,SAAS;IAKD,iBAAiB;IAIjC,OAAO,CAAC,aAAa;IAIL,MAAM;IAyDtB,OAAO,CAAC,cAAc,CA4DpB;CACH"}
1
+ {"version":3,"file":"Calculator.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/Calculator.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAE3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAQ,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAQ1E,aAAa;AACb,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,yDAAyD;IACzD,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,YAAY,CAAC;IAExB,2CAA2C;IAC3C,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,UAAU,eAAe;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,gBAAgB;AAChB,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAEnE,aAAa;AACb,qBAAa,UAAW,SAAQ,KAAK,CAAC,aAAa,CACjD,eAAe,EACf,eAAe,CAChB;IACC,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,cAAc,CAAS;IAE/B,gBAAgB;IAChB,gBAAuB,YAAY,EAAE,oBAAoB,CAEvD;gBAEU,KAAK,EAAE,eAAe;IAclC,OAAO,CAAC,mBAAmB,CAIzB;IAEF,OAAO,CAAC,sBAAsB,CAW5B;IAEF,OAAO,CAAC,SAAS,CAEf;IAEF,OAAO,CAAC,GAAG;IAQX,OAAO,CAAC,aAAa,CAEnB;IAEF,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,SAAS;IAKD,iBAAiB;IAIjC,OAAO,CAAC,aAAa;IAIL,MAAM;IAyDtB,OAAO,CAAC,cAAc,CA4DpB;CACH"}
@@ -8,7 +8,7 @@
8
8
  import "./Calculator.scss";
9
9
  import classnames from "classnames";
10
10
  import * as React from "react";
11
- import { IconSpecUtilities, SpecialKey } from "@itwin/appui-abstract";
11
+ import { Key } from "ts-key-enum";
12
12
  import { Icon, IconInput } from "@itwin/core-react";
13
13
  import { Button, Input } from "@itwin/itwinui-react";
14
14
  import { CalculatorEngine, CalculatorOperator } from "./CalculatorEngine";
@@ -63,39 +63,39 @@ class Calculator extends React.PureComponent {
63
63
  break;
64
64
  case "c":
65
65
  case "C":
66
- case SpecialKey.Clear:
66
+ case Key.Clear:
67
67
  this._onOperatorButtonClick(CalculatorOperator.Clear);
68
68
  break;
69
- case SpecialKey.Escape:
69
+ case Key.Escape:
70
70
  this._cancel();
71
71
  break;
72
- case SpecialKey.Backspace:
72
+ case Key.Backspace:
73
73
  this._onOperatorButtonClick(CalculatorOperator.Backspace);
74
74
  break;
75
75
  case "/":
76
- case SpecialKey.Divide:
76
+ case Key.Divide:
77
77
  this._onOperatorButtonClick(CalculatorOperator.Divide);
78
78
  break;
79
79
  case "*":
80
- case SpecialKey.Multiply:
80
+ case Key.Multiply:
81
81
  this._onOperatorButtonClick(CalculatorOperator.Multiply);
82
82
  break;
83
83
  case "-":
84
- case SpecialKey.Subtract:
84
+ case Key.Subtract:
85
85
  this._onOperatorButtonClick(CalculatorOperator.Subtract);
86
86
  break;
87
87
  case "+":
88
- case SpecialKey.Add:
88
+ case Key.Add:
89
89
  this._onOperatorButtonClick(CalculatorOperator.Add);
90
90
  break;
91
91
  case ".":
92
- case SpecialKey.Decimal:
92
+ case Key.Decimal:
93
93
  this._onOperatorButtonClick(CalculatorOperator.Decimal);
94
94
  break;
95
95
  case "=":
96
96
  this._onOperatorButtonClick(CalculatorOperator.Equals);
97
97
  break;
98
- case SpecialKey.Enter:
98
+ case Key.Enter:
99
99
  if (!this._equalsClicked)
100
100
  this._onOperatorButtonClick(CalculatorOperator.Equals);
101
101
  this._ok();
@@ -158,13 +158,12 @@ Calculator.defaultProps = {
158
158
  export { Calculator };
159
159
  class CalculatorKeyPad extends React.PureComponent {
160
160
  render() {
161
- const iconSpec = IconSpecUtilities.createWebComponentIconSpec(backspaceIcon);
162
161
  return (React.createElement("div", { className: classnames("uifw-calculator-button-grid") },
163
162
  React.createElement(OperatorButton, { operator: CalculatorOperator.ClearAll, onClick: this.props.onOperatorClick }, "AC"),
164
163
  React.createElement(OperatorButton, { operator: CalculatorOperator.Clear, onClick: this.props.onOperatorClick }, "C"),
165
164
  React.createElement(OperatorButton, { operator: CalculatorOperator.Backspace, onClick: this.props.onOperatorClick },
166
165
  React.createElement("div", { className: "uifw-calculator-button-svg" },
167
- React.createElement(Icon, { iconSpec: iconSpec }))),
166
+ React.createElement(Icon, { iconSpec: backspaceIcon }))),
168
167
  React.createElement(OperatorButton, { operator: CalculatorOperator.Divide, onClick: this.props.onOperatorClick, className: "uifw-calculator-large-font" }, "\u00F7"),
169
168
  React.createElement(ValueButton, { keyChar: "7", onClick: this.props.onValueClick }),
170
169
  React.createElement(ValueButton, { keyChar: "8", onClick: this.props.onValueClick }),
@@ -1 +1 @@
1
- {"version":3,"file":"Calculator.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/Calculator.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 AccuDraw\n */\n\nimport \"./Calculator.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { OnCancelFunc, OnNumberCommitFunc } from \"@itwin/appui-abstract\";\nimport { IconSpecUtilities, SpecialKey } from \"@itwin/appui-abstract\";\nimport type { CommonProps, Omit } from \"@itwin/core-react\";\nimport { Icon, IconInput } from \"@itwin/core-react\";\nimport { Button, Input } from \"@itwin/itwinui-react\";\nimport { CalculatorEngine, CalculatorOperator } from \"./CalculatorEngine\";\nimport type { SquareButtonProps } from \"./SquareButton\";\nimport { SquareButton } from \"./SquareButton\";\nimport { SvgCheckmark, SvgRemove } from \"@itwin/itwinui-icons-react\";\n\nimport backspaceIcon from \"./backspace.svg\";\n\n// cSpell:ignore plusmn\n\n/** @alpha */\nexport interface CalculatorProps extends CommonProps {\n /** Initial value */\n initialValue?: number;\n /** Icon to display beside the calculated result */\n resultIcon?: React.ReactNode;\n /** A function to be run when the OK button is clicked */\n onOk?: OnNumberCommitFunc;\n /** A function to be run when the Cancel button is clicked */\n onCancel?: OnCancelFunc;\n\n /** @internal Calculator state machine. */\n engine: CalculatorEngine;\n}\n\ninterface CalculatorState {\n displayValue: string;\n}\n\n/** @internal */\nexport type CalculatorPropsProps = Pick<CalculatorProps, \"engine\">;\n\n/** @alpha */\nexport class Calculator extends React.PureComponent<\n CalculatorProps,\n CalculatorState\n> {\n private _mainDiv = React.createRef<HTMLDivElement>();\n private _equalsClicked = false;\n\n /** @internal */\n public static readonly defaultProps: CalculatorPropsProps = {\n engine: new CalculatorEngine(),\n };\n\n constructor(props: CalculatorProps) {\n super(props);\n\n let displayValue = \"0\";\n if (this.props.initialValue)\n displayValue = this.props.engine.processValue(\n this.props.initialValue.toString()\n );\n\n this.state = {\n displayValue,\n };\n }\n\n private _onValueButtonClick = (keyChar: string) => {\n const displayValue = this.props.engine.processValue(keyChar);\n this._mainDivFocus();\n this.setState({ displayValue });\n };\n\n private _onOperatorButtonClick = (operator: CalculatorOperator) => {\n if (operator === CalculatorOperator.Clear && this._equalsClicked)\n operator = CalculatorOperator.ClearAll;\n\n const displayValue = this.props.engine.processOperator(operator);\n this._mainDivFocus();\n this.setState({ displayValue });\n\n if (operator === CalculatorOperator.Equals) this._equalsClicked = true;\n else if (operator === CalculatorOperator.ClearAll)\n this._equalsClicked = false;\n };\n\n private _handleOk = (_event: React.MouseEvent): void => {\n this._ok();\n };\n\n private _ok() {\n // istanbul ignore else\n if (this.props.onOk) {\n this.props.onOk(this.props.engine.result);\n }\n this._clearAll();\n }\n\n private _handleCancel = (_event: React.MouseEvent): void => {\n this._cancel();\n };\n\n private _cancel() {\n // istanbul ignore else\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n this._clearAll();\n }\n\n private _clearAll() {\n this.props.engine.clearAll();\n this._equalsClicked = false;\n }\n\n public override componentDidMount() {\n this._mainDivFocus();\n }\n\n private _mainDivFocus() {\n if (this._mainDiv.current) this._mainDiv.current.focus();\n }\n\n public override render() {\n const { className, resultIcon, onOk, onCancel, initialValue, ...props } =\n this.props;\n\n const classNames = classnames(\"uifw-calculator\", className);\n\n const topSection = resultIcon ? (\n <IconInput\n containerClassName=\"uifw-calculator-top-input\"\n value={this.state.displayValue}\n readOnly={true}\n icon={resultIcon}\n />\n ) : (\n <Input value={this.state.displayValue} readOnly={true} size=\"small\" />\n );\n\n return (\n // The event handler is only being used to capture bubbled events\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n {...props}\n ref={this._mainDiv}\n tabIndex={-1}\n className={classNames}\n onKeyDown={this._handleKeyDown}\n >\n <div className=\"uifw-calculator-top\">{topSection}</div>\n <CalculatorKeyPad\n onValueClick={this._onValueButtonClick}\n onOperatorClick={this._onOperatorButtonClick}\n />\n <div className=\"uifw-calculator-bottom-buttons\">\n <Button\n className={classnames(\n \"uifw-calculator-large-button\",\n \"uifw-calculator-ok-button\"\n )}\n styleType=\"cta\"\n onClick={this._handleOk}\n >\n <Icon iconSpec={<SvgCheckmark />} />\n </Button>\n <Button\n className={classnames(\n \"uifw-calculator-large-button\",\n \"uifw-calculator-cancel-button\"\n )}\n onClick={this._handleCancel}\n >\n <Icon iconSpec={<SvgRemove />} />\n </Button>\n </div>\n </div>\n );\n }\n\n private _handleKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ): void => {\n switch (event.key) {\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n this._onValueButtonClick(event.key);\n break;\n case \"a\":\n case \"A\":\n this._onOperatorButtonClick(CalculatorOperator.ClearAll);\n break;\n case \"c\":\n case \"C\":\n case SpecialKey.Clear:\n this._onOperatorButtonClick(CalculatorOperator.Clear);\n break;\n case SpecialKey.Escape:\n this._cancel();\n break;\n case SpecialKey.Backspace:\n this._onOperatorButtonClick(CalculatorOperator.Backspace);\n break;\n case \"/\":\n case SpecialKey.Divide:\n this._onOperatorButtonClick(CalculatorOperator.Divide);\n break;\n case \"*\":\n case SpecialKey.Multiply:\n this._onOperatorButtonClick(CalculatorOperator.Multiply);\n break;\n case \"-\":\n case SpecialKey.Subtract:\n this._onOperatorButtonClick(CalculatorOperator.Subtract);\n break;\n case \"+\":\n case SpecialKey.Add:\n this._onOperatorButtonClick(CalculatorOperator.Add);\n break;\n case \".\":\n case SpecialKey.Decimal:\n this._onOperatorButtonClick(CalculatorOperator.Decimal);\n break;\n case \"=\":\n this._onOperatorButtonClick(CalculatorOperator.Equals);\n break;\n case SpecialKey.Enter:\n if (!this._equalsClicked)\n this._onOperatorButtonClick(CalculatorOperator.Equals);\n this._ok();\n break;\n }\n };\n}\n\ninterface CalculatorKeyPadProps extends CommonProps {\n /** A function to be run when a value is clicked */\n onValueClick: (key: string) => void;\n /** A function to be run when a value is clicked */\n onOperatorClick: (operator: CalculatorOperator) => void;\n}\n\nclass CalculatorKeyPad extends React.PureComponent<CalculatorKeyPadProps> {\n public override render() {\n const iconSpec =\n IconSpecUtilities.createWebComponentIconSpec(backspaceIcon);\n\n return (\n <div className={classnames(\"uifw-calculator-button-grid\")}>\n <OperatorButton\n operator={CalculatorOperator.ClearAll}\n onClick={this.props.onOperatorClick}\n >\n AC\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Clear}\n onClick={this.props.onOperatorClick}\n >\n C\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Backspace}\n onClick={this.props.onOperatorClick}\n >\n <div className=\"uifw-calculator-button-svg\">\n <Icon iconSpec={iconSpec} />\n </div>\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Divide}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &divide;\n </OperatorButton>\n\n <ValueButton keyChar=\"7\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"8\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"9\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Multiply}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &times;\n </OperatorButton>\n\n <ValueButton keyChar=\"4\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"5\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"6\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Subtract}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &minus;\n </OperatorButton>\n\n <ValueButton keyChar=\"1\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"2\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"3\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Add}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &#43;\n </OperatorButton>\n\n <ValueButton keyChar=\"0\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.NegPos}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &plusmn;\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Decimal}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n .\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Equals}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &#61;\n </OperatorButton>\n <span />\n </div>\n );\n }\n}\n\ninterface ValueButtonProps extends Omit<SquareButtonProps, \"onClick\"> {\n /** Key to display */\n keyChar: string;\n /** A function to be run when the element is clicked */\n onClick: (key: string) => void;\n}\n\nclass ValueButton extends React.PureComponent<ValueButtonProps> {\n private _handleOnClick = (\n _event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n this.props.onClick(this.props.keyChar);\n };\n\n public override render() {\n const { className, keyChar, onClick, ...props } = this.props;\n\n const itemClassNames = classnames(\"uifw-calculator-item\", className);\n\n return (\n <SquareButton\n {...props}\n className={itemClassNames}\n onClick={this._handleOnClick}\n >\n {keyChar}\n </SquareButton>\n );\n }\n}\n\ninterface OperatorButtonProps extends Omit<SquareButtonProps, \"onClick\"> {\n /** Key to display */\n operator: CalculatorOperator;\n /** A function to be run when the element is clicked */\n onClick: (operator: CalculatorOperator) => void;\n}\n\nclass OperatorButton extends React.PureComponent<OperatorButtonProps> {\n private _handleOnClick = (\n _event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n this.props.onClick(this.props.operator);\n };\n\n public override render() {\n const { className, children, operator, onClick, ...props } = this.props;\n\n const itemClassNames = classnames(\"uifw-calculator-item\", className);\n\n return (\n <SquareButton\n {...props}\n className={itemClassNames}\n onClick={this._handleOnClick}\n >\n {children}\n </SquareButton>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"Calculator.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/Calculator.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,aAAa,MAAM,iBAAiB,CAAC;AA0B5C,aAAa;AACb,MAAa,UAAW,SAAQ,KAAK,CAAC,aAGrC;IASC,YAAY,KAAsB;QAChC,KAAK,CAAC,KAAK,CAAC,CAAC;QATP,aAAQ,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QAC7C,mBAAc,GAAG,KAAK,CAAC;QAqBvB,wBAAmB,GAAG,CAAC,OAAe,EAAE,EAAE;YAChD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC7D,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC;QAEM,2BAAsB,GAAG,CAAC,QAA4B,EAAE,EAAE;YAChE,IAAI,QAAQ,KAAK,kBAAkB,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc;gBAC9D,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;YAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACjE,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YAEhC,IAAI,QAAQ,KAAK,kBAAkB,CAAC,MAAM;gBAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;iBAClE,IAAI,QAAQ,KAAK,kBAAkB,CAAC,QAAQ;gBAC/C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAChC,CAAC,CAAC;QAEM,cAAS,GAAG,CAAC,MAAwB,EAAQ,EAAE;YACrD,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC,CAAC;QAUM,kBAAa,GAAG,CAAC,MAAwB,EAAQ,EAAE;YACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC;QAgFM,mBAAc,GAAG,CACvB,KAA0C,EACpC,EAAE;YACR,QAAQ,KAAK,CAAC,GAAG,EAAE;gBACjB,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACpC,MAAM;gBACR,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;oBACzD,MAAM;gBACR,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC,KAAK;oBACZ,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBACtD,MAAM;gBACR,KAAK,GAAG,CAAC,MAAM;oBACb,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,MAAM;gBACR,KAAK,GAAG,CAAC,SAAS;oBAChB,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;oBAC1D,MAAM;gBACR,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC,MAAM;oBACb,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBACvD,MAAM;gBACR,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC,QAAQ;oBACf,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;oBACzD,MAAM;gBACR,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC,QAAQ;oBACf,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;oBACzD,MAAM;gBACR,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC,GAAG;oBACV,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC,OAAO;oBACd,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBACxD,MAAM;gBACR,KAAK,GAAG;oBACN,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBACvD,MAAM;gBACR,KAAK,GAAG,CAAC,KAAK;oBACZ,IAAI,CAAC,IAAI,CAAC,cAAc;wBACtB,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBACzD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACX,MAAM;aACT;QACH,CAAC,CAAC;QAxLA,IAAI,YAAY,GAAG,GAAG,CAAC;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY;YACzB,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAC3C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CACnC,CAAC;QAEJ,IAAI,CAAC,KAAK,GAAG;YACX,YAAY;SACb,CAAC;IACJ,CAAC;IAyBO,GAAG;QACT,uBAAuB;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAMO,OAAO;QACb,uBAAuB;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SACvB;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAEe,iBAAiB;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IAEe,MAAM;QACpB,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,GACrE,IAAI,CAAC,KAAK,CAAC;QAEb,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QAE5D,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAC9B,oBAAC,SAAS,IACR,kBAAkB,EAAC,2BAA2B,EAC9C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAC9B,QAAQ,EAAE,IAAI,EACd,IAAI,EAAE,UAAU,GAChB,CACH,CAAC,CAAC,CAAC,CACF,oBAAC,KAAK,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAC,OAAO,GAAG,CACvE,CAAC;QAEF,OAAO;QACL,iEAAiE;QACjE,mEAAmE;QACnE,gCACM,KAAK,EACT,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,QAAQ,EAAE,CAAC,CAAC,EACZ,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,IAAI,CAAC,cAAc;YAE9B,6BAAK,SAAS,EAAC,qBAAqB,IAAE,UAAU,CAAO;YACvD,oBAAC,gBAAgB,IACf,YAAY,EAAE,IAAI,CAAC,mBAAmB,EACtC,eAAe,EAAE,IAAI,CAAC,sBAAsB,GAC5C;YACF,6BAAK,SAAS,EAAC,gCAAgC;gBAC7C,oBAAC,MAAM,IACL,SAAS,EAAE,UAAU,CACnB,8BAA8B,EAC9B,2BAA2B,CAC5B,EACD,SAAS,EAAC,KAAK,EACf,OAAO,EAAE,IAAI,CAAC,SAAS;oBAEvB,oBAAC,IAAI,IAAC,QAAQ,EAAE,oBAAC,YAAY,OAAG,GAAI,CAC7B;gBACT,oBAAC,MAAM,IACL,SAAS,EAAE,UAAU,CACnB,8BAA8B,EAC9B,+BAA+B,CAChC,EACD,OAAO,EAAE,IAAI,CAAC,aAAa;oBAE3B,oBAAC,IAAI,IAAC,QAAQ,EAAE,oBAAC,SAAS,OAAG,GAAI,CAC1B,CACL,CACF,CACP,CAAC;IACJ,CAAC;;AAlID,gBAAgB;AACO,uBAAY,GAAyB;IAC1D,MAAM,EAAE,IAAI,gBAAgB,EAAE;CAC/B,AAFkC,CAEjC;SAVS,UAAU;AAiNvB,MAAM,gBAAiB,SAAQ,KAAK,CAAC,aAAoC;IACvD,MAAM;QACpB,OAAO,CACL,6BAAK,SAAS,EAAE,UAAU,CAAC,6BAA6B,CAAC;YACvD,oBAAC,cAAc,IACb,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,EACrC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,SAGpB;YACjB,oBAAC,cAAc,IACb,QAAQ,EAAE,kBAAkB,CAAC,KAAK,EAClC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,QAGpB;YACjB,oBAAC,cAAc,IACb,QAAQ,EAAE,kBAAkB,CAAC,SAAS,EACtC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;gBAEnC,6BAAK,SAAS,EAAC,4BAA4B;oBACzC,oBAAC,IAAI,IAAC,QAAQ,EAAE,aAAa,GAAI,CAC7B,CACS;YACjB,oBAAC,cAAc,IACb,QAAQ,EAAE,kBAAkB,CAAC,MAAM,EACnC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EACnC,SAAS,EAAC,4BAA4B,aAGvB;YAEjB,oBAAC,WAAW,IAAC,OAAO,EAAC,GAAG,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI;YAC7D,oBAAC,WAAW,IAAC,OAAO,EAAC,GAAG,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI;YAC7D,oBAAC,WAAW,IAAC,OAAO,EAAC,GAAG,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI;YAC7D,oBAAC,cAAc,IACb,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,EACrC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EACnC,SAAS,EAAC,4BAA4B,aAGvB;YAEjB,oBAAC,WAAW,IAAC,OAAO,EAAC,GAAG,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI;YAC7D,oBAAC,WAAW,IAAC,OAAO,EAAC,GAAG,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI;YAC7D,oBAAC,WAAW,IAAC,OAAO,EAAC,GAAG,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI;YAC7D,oBAAC,cAAc,IACb,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,EACrC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EACnC,SAAS,EAAC,4BAA4B,aAGvB;YAEjB,oBAAC,WAAW,IAAC,OAAO,EAAC,GAAG,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI;YAC7D,oBAAC,WAAW,IAAC,OAAO,EAAC,GAAG,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI;YAC7D,oBAAC,WAAW,IAAC,OAAO,EAAC,GAAG,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI;YAC7D,oBAAC,cAAc,IACb,QAAQ,EAAE,kBAAkB,CAAC,GAAG,EAChC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EACnC,SAAS,EAAC,4BAA4B,QAGvB;YAEjB,oBAAC,WAAW,IAAC,OAAO,EAAC,GAAG,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI;YAC7D,oBAAC,cAAc,IACb,QAAQ,EAAE,kBAAkB,CAAC,MAAM,EACnC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EACnC,SAAS,EAAC,4BAA4B,aAGvB;YACjB,oBAAC,cAAc,IACb,QAAQ,EAAE,kBAAkB,CAAC,OAAO,EACpC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EACnC,SAAS,EAAC,4BAA4B,QAGvB;YACjB,oBAAC,cAAc,IACb,QAAQ,EAAE,kBAAkB,CAAC,MAAM,EACnC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EACnC,SAAS,EAAC,4BAA4B,QAGvB;YACjB,iCAAQ,CACJ,CACP,CAAC;IACJ,CAAC;CACF;AASD,MAAM,WAAY,SAAQ,KAAK,CAAC,aAA+B;IAA/D;;QACU,mBAAc,GAAG,CACvB,MAAuD,EACvD,EAAE;YACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC;IAiBJ,CAAC;IAfiB,MAAM;QACpB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE7D,MAAM,cAAc,GAAG,UAAU,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;QAErE,OAAO,CACL,oBAAC,YAAY,OACP,KAAK,EACT,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,IAAI,CAAC,cAAc,IAE3B,OAAO,CACK,CAChB,CAAC;IACJ,CAAC;CACF;AASD,MAAM,cAAe,SAAQ,KAAK,CAAC,aAAkC;IAArE;;QACU,mBAAc,GAAG,CACvB,MAAuD,EACvD,EAAE;YACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC,CAAC;IAiBJ,CAAC;IAfiB,MAAM;QACpB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAExE,MAAM,cAAc,GAAG,UAAU,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;QAErE,OAAO,CACL,oBAAC,YAAY,OACP,KAAK,EACT,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,IAAI,CAAC,cAAc,IAE3B,QAAQ,CACI,CAChB,CAAC;IACJ,CAAC;CACF","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 AccuDraw\n */\n\nimport \"./Calculator.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { OnCancelFunc, OnNumberCommitFunc } from \"@itwin/appui-abstract\";\nimport type { CommonProps, Omit } from \"@itwin/core-react\";\nimport { Icon, IconInput } from \"@itwin/core-react\";\nimport { Button, Input } from \"@itwin/itwinui-react\";\nimport { CalculatorEngine, CalculatorOperator } from \"./CalculatorEngine\";\nimport type { SquareButtonProps } from \"./SquareButton\";\nimport { SquareButton } from \"./SquareButton\";\nimport { SvgCheckmark, SvgRemove } from \"@itwin/itwinui-icons-react\";\nimport backspaceIcon from \"./backspace.svg\";\n\n// cSpell:ignore plusmn\n\n/** @alpha */\nexport interface CalculatorProps extends CommonProps {\n /** Initial value */\n initialValue?: number;\n /** Icon to display beside the calculated result */\n resultIcon?: React.ReactNode;\n /** A function to be run when the OK button is clicked */\n onOk?: OnNumberCommitFunc;\n /** A function to be run when the Cancel button is clicked */\n onCancel?: OnCancelFunc;\n\n /** @internal Calculator state machine. */\n engine: CalculatorEngine;\n}\n\ninterface CalculatorState {\n displayValue: string;\n}\n\n/** @internal */\nexport type CalculatorPropsProps = Pick<CalculatorProps, \"engine\">;\n\n/** @alpha */\nexport class Calculator extends React.PureComponent<\n CalculatorProps,\n CalculatorState\n> {\n private _mainDiv = React.createRef<HTMLDivElement>();\n private _equalsClicked = false;\n\n /** @internal */\n public static readonly defaultProps: CalculatorPropsProps = {\n engine: new CalculatorEngine(),\n };\n\n constructor(props: CalculatorProps) {\n super(props);\n\n let displayValue = \"0\";\n if (this.props.initialValue)\n displayValue = this.props.engine.processValue(\n this.props.initialValue.toString()\n );\n\n this.state = {\n displayValue,\n };\n }\n\n private _onValueButtonClick = (keyChar: string) => {\n const displayValue = this.props.engine.processValue(keyChar);\n this._mainDivFocus();\n this.setState({ displayValue });\n };\n\n private _onOperatorButtonClick = (operator: CalculatorOperator) => {\n if (operator === CalculatorOperator.Clear && this._equalsClicked)\n operator = CalculatorOperator.ClearAll;\n\n const displayValue = this.props.engine.processOperator(operator);\n this._mainDivFocus();\n this.setState({ displayValue });\n\n if (operator === CalculatorOperator.Equals) this._equalsClicked = true;\n else if (operator === CalculatorOperator.ClearAll)\n this._equalsClicked = false;\n };\n\n private _handleOk = (_event: React.MouseEvent): void => {\n this._ok();\n };\n\n private _ok() {\n // istanbul ignore else\n if (this.props.onOk) {\n this.props.onOk(this.props.engine.result);\n }\n this._clearAll();\n }\n\n private _handleCancel = (_event: React.MouseEvent): void => {\n this._cancel();\n };\n\n private _cancel() {\n // istanbul ignore else\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n this._clearAll();\n }\n\n private _clearAll() {\n this.props.engine.clearAll();\n this._equalsClicked = false;\n }\n\n public override componentDidMount() {\n this._mainDivFocus();\n }\n\n private _mainDivFocus() {\n if (this._mainDiv.current) this._mainDiv.current.focus();\n }\n\n public override render() {\n const { className, resultIcon, onOk, onCancel, initialValue, ...props } =\n this.props;\n\n const classNames = classnames(\"uifw-calculator\", className);\n\n const topSection = resultIcon ? (\n <IconInput\n containerClassName=\"uifw-calculator-top-input\"\n value={this.state.displayValue}\n readOnly={true}\n icon={resultIcon}\n />\n ) : (\n <Input value={this.state.displayValue} readOnly={true} size=\"small\" />\n );\n\n return (\n // The event handler is only being used to capture bubbled events\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n {...props}\n ref={this._mainDiv}\n tabIndex={-1}\n className={classNames}\n onKeyDown={this._handleKeyDown}\n >\n <div className=\"uifw-calculator-top\">{topSection}</div>\n <CalculatorKeyPad\n onValueClick={this._onValueButtonClick}\n onOperatorClick={this._onOperatorButtonClick}\n />\n <div className=\"uifw-calculator-bottom-buttons\">\n <Button\n className={classnames(\n \"uifw-calculator-large-button\",\n \"uifw-calculator-ok-button\"\n )}\n styleType=\"cta\"\n onClick={this._handleOk}\n >\n <Icon iconSpec={<SvgCheckmark />} />\n </Button>\n <Button\n className={classnames(\n \"uifw-calculator-large-button\",\n \"uifw-calculator-cancel-button\"\n )}\n onClick={this._handleCancel}\n >\n <Icon iconSpec={<SvgRemove />} />\n </Button>\n </div>\n </div>\n );\n }\n\n private _handleKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ): void => {\n switch (event.key) {\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n this._onValueButtonClick(event.key);\n break;\n case \"a\":\n case \"A\":\n this._onOperatorButtonClick(CalculatorOperator.ClearAll);\n break;\n case \"c\":\n case \"C\":\n case Key.Clear:\n this._onOperatorButtonClick(CalculatorOperator.Clear);\n break;\n case Key.Escape:\n this._cancel();\n break;\n case Key.Backspace:\n this._onOperatorButtonClick(CalculatorOperator.Backspace);\n break;\n case \"/\":\n case Key.Divide:\n this._onOperatorButtonClick(CalculatorOperator.Divide);\n break;\n case \"*\":\n case Key.Multiply:\n this._onOperatorButtonClick(CalculatorOperator.Multiply);\n break;\n case \"-\":\n case Key.Subtract:\n this._onOperatorButtonClick(CalculatorOperator.Subtract);\n break;\n case \"+\":\n case Key.Add:\n this._onOperatorButtonClick(CalculatorOperator.Add);\n break;\n case \".\":\n case Key.Decimal:\n this._onOperatorButtonClick(CalculatorOperator.Decimal);\n break;\n case \"=\":\n this._onOperatorButtonClick(CalculatorOperator.Equals);\n break;\n case Key.Enter:\n if (!this._equalsClicked)\n this._onOperatorButtonClick(CalculatorOperator.Equals);\n this._ok();\n break;\n }\n };\n}\n\ninterface CalculatorKeyPadProps extends CommonProps {\n /** A function to be run when a value is clicked */\n onValueClick: (key: string) => void;\n /** A function to be run when a value is clicked */\n onOperatorClick: (operator: CalculatorOperator) => void;\n}\n\nclass CalculatorKeyPad extends React.PureComponent<CalculatorKeyPadProps> {\n public override render() {\n return (\n <div className={classnames(\"uifw-calculator-button-grid\")}>\n <OperatorButton\n operator={CalculatorOperator.ClearAll}\n onClick={this.props.onOperatorClick}\n >\n AC\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Clear}\n onClick={this.props.onOperatorClick}\n >\n C\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Backspace}\n onClick={this.props.onOperatorClick}\n >\n <div className=\"uifw-calculator-button-svg\">\n <Icon iconSpec={backspaceIcon} />\n </div>\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Divide}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &divide;\n </OperatorButton>\n\n <ValueButton keyChar=\"7\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"8\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"9\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Multiply}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &times;\n </OperatorButton>\n\n <ValueButton keyChar=\"4\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"5\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"6\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Subtract}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &minus;\n </OperatorButton>\n\n <ValueButton keyChar=\"1\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"2\" onClick={this.props.onValueClick} />\n <ValueButton keyChar=\"3\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.Add}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &#43;\n </OperatorButton>\n\n <ValueButton keyChar=\"0\" onClick={this.props.onValueClick} />\n <OperatorButton\n operator={CalculatorOperator.NegPos}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &plusmn;\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Decimal}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n .\n </OperatorButton>\n <OperatorButton\n operator={CalculatorOperator.Equals}\n onClick={this.props.onOperatorClick}\n className=\"uifw-calculator-large-font\"\n >\n &#61;\n </OperatorButton>\n <span />\n </div>\n );\n }\n}\n\ninterface ValueButtonProps extends Omit<SquareButtonProps, \"onClick\"> {\n /** Key to display */\n keyChar: string;\n /** A function to be run when the element is clicked */\n onClick: (key: string) => void;\n}\n\nclass ValueButton extends React.PureComponent<ValueButtonProps> {\n private _handleOnClick = (\n _event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n this.props.onClick(this.props.keyChar);\n };\n\n public override render() {\n const { className, keyChar, onClick, ...props } = this.props;\n\n const itemClassNames = classnames(\"uifw-calculator-item\", className);\n\n return (\n <SquareButton\n {...props}\n className={itemClassNames}\n onClick={this._handleOnClick}\n >\n {keyChar}\n </SquareButton>\n );\n }\n}\n\ninterface OperatorButtonProps extends Omit<SquareButtonProps, \"onClick\"> {\n /** Key to display */\n operator: CalculatorOperator;\n /** A function to be run when the element is clicked */\n onClick: (operator: CalculatorOperator) => void;\n}\n\nclass OperatorButton extends React.PureComponent<OperatorButtonProps> {\n private _handleOnClick = (\n _event: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n this.props.onClick(this.props.operator);\n };\n\n public override render() {\n const { className, children, operator, onClick, ...props } = this.props;\n\n const itemClassNames = classnames(\"uifw-calculator-item\", className);\n\n return (\n <SquareButton\n {...props}\n className={itemClassNames}\n onClick={this._handleOnClick}\n >\n {children}\n </SquareButton>\n );\n }\n}\n"]}
@@ -65,7 +65,15 @@ export declare class AccuDrawGrabInputFocusEvent extends BeUiEvent<{}> {
65
65
  * @beta */
66
66
  export declare class AccuDrawUiSettingsChangedEvent extends BeUiEvent<{}> {
67
67
  }
68
- /** Implementation of AccuDraw that sends events for UI and status changes
68
+ /** Subclass of `AccuDraw` in `@itwin/core-frontend` to be used to initialize `IModelApp`.
69
+ *
70
+ * This implementation will generate the required events for the AppUI provided UI to update correctly.
71
+ *
72
+ * ```ts
73
+ * await IModelApp.startup({
74
+ * accuDraw: new FrameworkAccuDraw()
75
+ * });
76
+ * ```
69
77
  * @beta
70
78
  */
71
79
  export declare class FrameworkAccuDraw extends AccuDraw implements UserSettingsProvider {
@@ -1 +1 @@
1
- {"version":3,"file":"FrameworkAccuDraw.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/FrameworkAccuDraw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FrameworkAccuDraw.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/FrameworkAccuDraw.ts"],"names":[],"mappings":"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"}
@@ -52,7 +52,15 @@ export class AccuDrawGrabInputFocusEvent extends BeUiEvent {
52
52
  * @beta */
53
53
  export class AccuDrawUiSettingsChangedEvent extends BeUiEvent {
54
54
  }
55
- /** Implementation of AccuDraw that sends events for UI and status changes
55
+ /** Subclass of `AccuDraw` in `@itwin/core-frontend` to be used to initialize `IModelApp`.
56
+ *
57
+ * This implementation will generate the required events for the AppUI provided UI to update correctly.
58
+ *
59
+ * ```ts
60
+ * await IModelApp.startup({
61
+ * accuDraw: new FrameworkAccuDraw()
62
+ * });
63
+ * ```
56
64
  * @beta
57
65
  */
58
66
  class FrameworkAccuDraw extends AccuDraw {
@@ -1 +1 @@
1
- {"version":3,"file":"FrameworkAccuDraw.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/FrameworkAccuDraw.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 AccuDraw\n */\n\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { BeButtonEvent } from \"@itwin/core-frontend\";\nimport {\n AccuDraw,\n CompassMode,\n IModelApp,\n ItemField,\n NotifyMessageDetails,\n OutputMessagePriority,\n QuantityType,\n RotationMode,\n} from \"@itwin/core-frontend\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { UiStateStorage } from \"@itwin/core-react\";\nimport { UiStateStorageStatus } from \"@itwin/core-react\";\nimport type { UserSettingsProvider } from \"../UiFramework\";\nimport { UiFramework } from \"../UiFramework\";\nimport {\n SyncUiEventDispatcher,\n SyncUiEventId,\n} from \"../syncui/SyncUiEventDispatcher\";\nimport type { AccuDrawUiSettings } from \"./AccuDrawUiSettings\";\n\n// cspell:ignore dont\n\nconst compassModeToKeyMap = new Map<CompassMode, string>([\n [CompassMode.Polar, \"polar\"],\n [CompassMode.Rectangular, \"rectangular\"],\n]);\n\nconst rotationModeToKeyMap = new Map<RotationMode, string>([\n [RotationMode.Top, \"top\"],\n [RotationMode.Front, \"front\"],\n [RotationMode.Side, \"side\"],\n [RotationMode.View, \"view\"],\n [RotationMode.ACS, \"ACS\"],\n [RotationMode.Context, \"context\"],\n]);\n\n/** Arguments for [[AccuDrawSetFieldFocusEvent]]\n * @beta */\nexport interface AccuDrawSetFieldFocusEventArgs {\n field: ItemField;\n}\n\n/** AccuDraw Set Field Focus event\n * @beta */\nexport class AccuDrawSetFieldFocusEvent extends BeUiEvent<AccuDrawSetFieldFocusEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueToUiEvent]]\n * @beta */\nexport interface AccuDrawSetFieldValueToUiEventArgs {\n field: ItemField;\n value: number;\n formattedValue: string;\n}\n\n/** AccuDraw Set Field Value to Ui event\n * @beta */\nexport class AccuDrawSetFieldValueToUiEvent extends BeUiEvent<AccuDrawSetFieldValueToUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueFromUiEvent]]\n * @beta */\nexport interface AccuDrawSetFieldValueFromUiEventArgs {\n field: ItemField;\n stringValue: string;\n}\n\n/** AccuDraw Set Field Value from Ui event\n * @beta */\nexport class AccuDrawSetFieldValueFromUiEvent extends BeUiEvent<AccuDrawSetFieldValueFromUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldLockEvent]]\n * @beta */\nexport interface AccuDrawSetFieldLockEventArgs {\n field: ItemField;\n lock: boolean;\n}\n\n/** AccuDraw Set Field Lock event\n * @beta */\nexport class AccuDrawSetFieldLockEvent extends BeUiEvent<AccuDrawSetFieldLockEventArgs> {}\n\n/** Arguments for [[AccuDrawSetCompassModeEvent]]\n * @beta */\nexport interface AccuDrawSetCompassModeEventArgs {\n mode: CompassMode;\n}\n\n/** AccuDraw Set Compass Mode event\n * @beta */\nexport class AccuDrawSetCompassModeEvent extends BeUiEvent<AccuDrawSetCompassModeEventArgs> {}\n\n/** AccuDraw Grab Input Focus event\n * @beta */\nexport class AccuDrawGrabInputFocusEvent extends BeUiEvent<{}> {}\n\n/** AccuDraw Ui Settings Changed event\n * @beta */\nexport class AccuDrawUiSettingsChangedEvent extends BeUiEvent<{}> {}\n\n/** Implementation of AccuDraw that sends events for UI and status changes\n * @beta\n */\nexport class FrameworkAccuDraw\n extends AccuDraw\n implements UserSettingsProvider\n{\n private static _displayNotifications = false;\n private static _uiSettings: AccuDrawUiSettings | undefined;\n private static _settingsNamespace = \"AppUiSettings\";\n private static _notificationsKey = \"AccuDrawNotifications\";\n public readonly providerId = \"FrameworkAccuDraw\";\n\n /** AccuDraw Set Field Focus event. */\n public static readonly onAccuDrawSetFieldFocusEvent =\n new AccuDrawSetFieldFocusEvent();\n /** AccuDraw Set Field Value to Ui event. */\n public static readonly onAccuDrawSetFieldValueToUiEvent =\n new AccuDrawSetFieldValueToUiEvent();\n /** AccuDraw Set Field Value from Ui event. */\n public static readonly onAccuDrawSetFieldValueFromUiEvent =\n new AccuDrawSetFieldValueFromUiEvent();\n /** AccuDraw Set Field Lock event. */\n public static readonly onAccuDrawSetFieldLockEvent =\n new AccuDrawSetFieldLockEvent();\n /** AccuDraw Set Mode event. */\n public static readonly onAccuDrawSetCompassModeEvent =\n new AccuDrawSetCompassModeEvent();\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawGrabInputFocusEvent =\n new AccuDrawGrabInputFocusEvent();\n\n /** Determines if AccuDraw.rotationMode === RotationMode.Top */\n public static readonly isTopRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Top,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Front */\n public static readonly isFrontRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Front,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Side */\n public static readonly isSideRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Side,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.View */\n public static readonly isViewRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.View,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.ACS */\n public static readonly isACSRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.ACS,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Context */\n public static readonly isContextRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Context,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Polar */\n public static readonly isPolarModeConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Polar,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Rectangular */\n public static readonly isRectangularModeConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Rectangular,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawUiSettingsChangedEvent =\n new AccuDrawUiSettingsChangedEvent();\n\n /** Determines if notifications should be displayed for AccuDraw changes */\n public static get displayNotifications(): boolean {\n return FrameworkAccuDraw._displayNotifications;\n }\n public static set displayNotifications(v: boolean) {\n FrameworkAccuDraw._displayNotifications = v;\n void UiFramework.getUiStateStorage().saveSetting(\n this._settingsNamespace,\n this._notificationsKey,\n v\n );\n }\n\n /* @internal */\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\n const result = await storage.getSetting(\n FrameworkAccuDraw._settingsNamespace,\n FrameworkAccuDraw._notificationsKey\n );\n if (result.status === UiStateStorageStatus.Success)\n FrameworkAccuDraw._displayNotifications = result.setting;\n }\n\n /** AccuDraw User Interface settings */\n public static get uiStateStorage(): AccuDrawUiSettings | undefined {\n return FrameworkAccuDraw._uiSettings;\n }\n public static set uiStateStorage(v: AccuDrawUiSettings | undefined) {\n FrameworkAccuDraw._uiSettings = v;\n FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent.emit({});\n }\n\n constructor() {\n super();\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.addListener(\n this.handleSetFieldValueFromUiEvent\n );\n UiFramework.registerUserSettingsProvider(this);\n }\n\n private handleSetFieldValueFromUiEvent = async (\n args: AccuDrawSetFieldValueFromUiEventArgs\n ) => {\n return this.processFieldInput(args.field, args.stringValue, false);\n };\n\n /** @internal */\n public override onCompassModeChange(): void {\n FrameworkAccuDraw.onAccuDrawSetCompassModeEvent.emit({\n mode: this.compassMode,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawCompassModeChanged\n );\n\n this.outputCompassModeMessage();\n }\n\n /** @internal */\n public override onRotationModeChange(): void {\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawRotationChanged\n );\n\n this.outputRotationMessage();\n }\n\n /** @internal */\n public override onFieldLockChange(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldLockEvent.emit({\n field: index,\n lock: this.getFieldLock(index),\n });\n }\n\n /** @internal */\n public override onFieldValueChange(index: ItemField): void {\n const value = this.getValueByIndex(index);\n const formattedValue = FrameworkAccuDraw.getFieldDisplayValue(index);\n FrameworkAccuDraw.onAccuDrawSetFieldValueToUiEvent.emit({\n field: index,\n value,\n formattedValue,\n });\n }\n\n private fieldValuesChanged(): void {\n this.onFieldValueChange(ItemField.X_Item);\n this.onFieldValueChange(ItemField.Y_Item);\n this.onFieldValueChange(ItemField.Z_Item);\n this.onFieldValueChange(ItemField.ANGLE_Item);\n this.onFieldValueChange(ItemField.DIST_Item);\n }\n\n /** @internal */\n public override setFocusItem(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldFocusEvent.emit({ field: index });\n }\n\n /** Implemented by sub-classes to update ui fields to show current deltas or coordinates when inactive.\n * Should also choose active x or y input field in rectangular mode based on cursor position when\n * axis isn't locked to support \"smart lock\".\n * @internal\n */\n public override onMotion(_ev: BeButtonEvent): void {\n if (!this.isEnabled || this.isDeactivated || UiFramework.isContextMenuOpen)\n return;\n\n this.fieldValuesChanged();\n\n if (!this.dontMoveFocus) this.setFocusItem(this.newFocus);\n }\n\n /** Determine if the AccuDraw UI has focus\n * @internal\n */\n public override get hasInputFocus(): boolean {\n let hasFocus = false;\n const el = document.querySelector(\"div.uifw-accudraw-field-container\");\n if (el) hasFocus = el.contains(document.activeElement);\n return hasFocus;\n }\n\n /** Implement this method to set focus to the AccuDraw UI.\n * @internal\n */\n public override grabInputFocus(): void {\n FrameworkAccuDraw.onAccuDrawGrabInputFocusEvent.emit({});\n }\n\n /** Gets the display value for an AccuDraw field */\n public static getFieldDisplayValue(index: ItemField): string {\n const value = IModelApp.accuDraw.getValueByIndex(index);\n let formattedValue = value.toString();\n\n const formatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n ItemField.ANGLE_Item === index\n ? QuantityType.Angle\n : QuantityType.Length\n );\n // istanbul ignore else\n if (formatterSpec)\n formattedValue = IModelApp.quantityFormatter.formatQuantity(\n value,\n formatterSpec\n );\n\n return formattedValue;\n }\n\n /** AccuDraw Set Field Value from Ui. */\n public static setFieldValueFromUi(\n field: ItemField,\n stringValue: string\n ): void {\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.emit({\n field,\n stringValue,\n });\n }\n\n private outputInfoMessage(message: string): void {\n // istanbul ignore else\n if (FrameworkAccuDraw.displayNotifications)\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(OutputMessagePriority.Info, message)\n );\n }\n\n private outputCompassModeMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n let modeKey = compassModeToKeyMap.get(this.compassMode);\n // istanbul ignore if\n if (modeKey === undefined) modeKey = \"polar\";\n const modeString = UiFramework.translate(\n `accuDraw.compassMode.${modeKey}`\n );\n const modeMessage = UiFramework.localization.getLocalizedString(\n \"accuDraw.compassModeSet\",\n { modeString, ns: UiFramework.localizationNamespace }\n );\n this.outputInfoMessage(modeMessage);\n }\n }\n\n private outputRotationMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n let rotationKey = rotationModeToKeyMap.get(this.rotationMode);\n // istanbul ignore if\n if (rotationKey === undefined) rotationKey = \"top\";\n const rotationString = UiFramework.translate(\n `accuDraw.rotation.${rotationKey}`\n );\n const rotationMessage = UiFramework.localization.getLocalizedString(\n \"accuDraw.rotationSet\",\n { rotationString, ns: UiFramework.localizationNamespace }\n );\n this.outputInfoMessage(rotationMessage);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"FrameworkAccuDraw.js","sourceRoot":"","sources":["../../../../src/appui-react/accudraw/FrameworkAccuDraw.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 AccuDraw\n */\n\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { BeButtonEvent } from \"@itwin/core-frontend\";\nimport {\n AccuDraw,\n CompassMode,\n IModelApp,\n ItemField,\n NotifyMessageDetails,\n OutputMessagePriority,\n QuantityType,\n RotationMode,\n} from \"@itwin/core-frontend\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { UiStateStorage } from \"@itwin/core-react\";\nimport { UiStateStorageStatus } from \"@itwin/core-react\";\nimport type { UserSettingsProvider } from \"../UiFramework\";\nimport { UiFramework } from \"../UiFramework\";\nimport {\n SyncUiEventDispatcher,\n SyncUiEventId,\n} from \"../syncui/SyncUiEventDispatcher\";\nimport type { AccuDrawUiSettings } from \"./AccuDrawUiSettings\";\n\n// cspell:ignore dont\n\nconst compassModeToKeyMap = new Map<CompassMode, string>([\n [CompassMode.Polar, \"polar\"],\n [CompassMode.Rectangular, \"rectangular\"],\n]);\n\nconst rotationModeToKeyMap = new Map<RotationMode, string>([\n [RotationMode.Top, \"top\"],\n [RotationMode.Front, \"front\"],\n [RotationMode.Side, \"side\"],\n [RotationMode.View, \"view\"],\n [RotationMode.ACS, \"ACS\"],\n [RotationMode.Context, \"context\"],\n]);\n\n/** Arguments for [[AccuDrawSetFieldFocusEvent]]\n * @beta */\nexport interface AccuDrawSetFieldFocusEventArgs {\n field: ItemField;\n}\n\n/** AccuDraw Set Field Focus event\n * @beta */\nexport class AccuDrawSetFieldFocusEvent extends BeUiEvent<AccuDrawSetFieldFocusEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueToUiEvent]]\n * @beta */\nexport interface AccuDrawSetFieldValueToUiEventArgs {\n field: ItemField;\n value: number;\n formattedValue: string;\n}\n\n/** AccuDraw Set Field Value to Ui event\n * @beta */\nexport class AccuDrawSetFieldValueToUiEvent extends BeUiEvent<AccuDrawSetFieldValueToUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueFromUiEvent]]\n * @beta */\nexport interface AccuDrawSetFieldValueFromUiEventArgs {\n field: ItemField;\n stringValue: string;\n}\n\n/** AccuDraw Set Field Value from Ui event\n * @beta */\nexport class AccuDrawSetFieldValueFromUiEvent extends BeUiEvent<AccuDrawSetFieldValueFromUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldLockEvent]]\n * @beta */\nexport interface AccuDrawSetFieldLockEventArgs {\n field: ItemField;\n lock: boolean;\n}\n\n/** AccuDraw Set Field Lock event\n * @beta */\nexport class AccuDrawSetFieldLockEvent extends BeUiEvent<AccuDrawSetFieldLockEventArgs> {}\n\n/** Arguments for [[AccuDrawSetCompassModeEvent]]\n * @beta */\nexport interface AccuDrawSetCompassModeEventArgs {\n mode: CompassMode;\n}\n\n/** AccuDraw Set Compass Mode event\n * @beta */\nexport class AccuDrawSetCompassModeEvent extends BeUiEvent<AccuDrawSetCompassModeEventArgs> {}\n\n/** AccuDraw Grab Input Focus event\n * @beta */\nexport class AccuDrawGrabInputFocusEvent extends BeUiEvent<{}> {}\n\n/** AccuDraw Ui Settings Changed event\n * @beta */\nexport class AccuDrawUiSettingsChangedEvent extends BeUiEvent<{}> {}\n\n/** Subclass of `AccuDraw` in `@itwin/core-frontend` to be used to initialize `IModelApp`.\n *\n * This implementation will generate the required events for the AppUI provided UI to update correctly.\n *\n * ```ts\n * await IModelApp.startup({\n * accuDraw: new FrameworkAccuDraw()\n * });\n * ```\n * @beta\n */\nexport class FrameworkAccuDraw\n extends AccuDraw\n implements UserSettingsProvider\n{\n private static _displayNotifications = false;\n private static _uiSettings: AccuDrawUiSettings | undefined;\n private static _settingsNamespace = \"AppUiSettings\";\n private static _notificationsKey = \"AccuDrawNotifications\";\n public readonly providerId = \"FrameworkAccuDraw\";\n\n /** AccuDraw Set Field Focus event. */\n public static readonly onAccuDrawSetFieldFocusEvent =\n new AccuDrawSetFieldFocusEvent();\n /** AccuDraw Set Field Value to Ui event. */\n public static readonly onAccuDrawSetFieldValueToUiEvent =\n new AccuDrawSetFieldValueToUiEvent();\n /** AccuDraw Set Field Value from Ui event. */\n public static readonly onAccuDrawSetFieldValueFromUiEvent =\n new AccuDrawSetFieldValueFromUiEvent();\n /** AccuDraw Set Field Lock event. */\n public static readonly onAccuDrawSetFieldLockEvent =\n new AccuDrawSetFieldLockEvent();\n /** AccuDraw Set Mode event. */\n public static readonly onAccuDrawSetCompassModeEvent =\n new AccuDrawSetCompassModeEvent();\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawGrabInputFocusEvent =\n new AccuDrawGrabInputFocusEvent();\n\n /** Determines if AccuDraw.rotationMode === RotationMode.Top */\n public static readonly isTopRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Top,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Front */\n public static readonly isFrontRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Front,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Side */\n public static readonly isSideRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Side,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.View */\n public static readonly isViewRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.View,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.ACS */\n public static readonly isACSRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.ACS,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Context */\n public static readonly isContextRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Context,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Polar */\n public static readonly isPolarModeConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Polar,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Rectangular */\n public static readonly isRectangularModeConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Rectangular,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawUiSettingsChangedEvent =\n new AccuDrawUiSettingsChangedEvent();\n\n /** Determines if notifications should be displayed for AccuDraw changes */\n public static get displayNotifications(): boolean {\n return FrameworkAccuDraw._displayNotifications;\n }\n public static set displayNotifications(v: boolean) {\n FrameworkAccuDraw._displayNotifications = v;\n void UiFramework.getUiStateStorage().saveSetting(\n this._settingsNamespace,\n this._notificationsKey,\n v\n );\n }\n\n /* @internal */\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\n const result = await storage.getSetting(\n FrameworkAccuDraw._settingsNamespace,\n FrameworkAccuDraw._notificationsKey\n );\n if (result.status === UiStateStorageStatus.Success)\n FrameworkAccuDraw._displayNotifications = result.setting;\n }\n\n /** AccuDraw User Interface settings */\n public static get uiStateStorage(): AccuDrawUiSettings | undefined {\n return FrameworkAccuDraw._uiSettings;\n }\n public static set uiStateStorage(v: AccuDrawUiSettings | undefined) {\n FrameworkAccuDraw._uiSettings = v;\n FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent.emit({});\n }\n\n constructor() {\n super();\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.addListener(\n this.handleSetFieldValueFromUiEvent\n );\n UiFramework.registerUserSettingsProvider(this);\n }\n\n private handleSetFieldValueFromUiEvent = async (\n args: AccuDrawSetFieldValueFromUiEventArgs\n ) => {\n return this.processFieldInput(args.field, args.stringValue, false);\n };\n\n /** @internal */\n public override onCompassModeChange(): void {\n FrameworkAccuDraw.onAccuDrawSetCompassModeEvent.emit({\n mode: this.compassMode,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawCompassModeChanged\n );\n\n this.outputCompassModeMessage();\n }\n\n /** @internal */\n public override onRotationModeChange(): void {\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawRotationChanged\n );\n\n this.outputRotationMessage();\n }\n\n /** @internal */\n public override onFieldLockChange(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldLockEvent.emit({\n field: index,\n lock: this.getFieldLock(index),\n });\n }\n\n /** @internal */\n public override onFieldValueChange(index: ItemField): void {\n const value = this.getValueByIndex(index);\n const formattedValue = FrameworkAccuDraw.getFieldDisplayValue(index);\n FrameworkAccuDraw.onAccuDrawSetFieldValueToUiEvent.emit({\n field: index,\n value,\n formattedValue,\n });\n }\n\n private fieldValuesChanged(): void {\n this.onFieldValueChange(ItemField.X_Item);\n this.onFieldValueChange(ItemField.Y_Item);\n this.onFieldValueChange(ItemField.Z_Item);\n this.onFieldValueChange(ItemField.ANGLE_Item);\n this.onFieldValueChange(ItemField.DIST_Item);\n }\n\n /** @internal */\n public override setFocusItem(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldFocusEvent.emit({ field: index });\n }\n\n /** Implemented by sub-classes to update ui fields to show current deltas or coordinates when inactive.\n * Should also choose active x or y input field in rectangular mode based on cursor position when\n * axis isn't locked to support \"smart lock\".\n * @internal\n */\n public override onMotion(_ev: BeButtonEvent): void {\n if (!this.isEnabled || this.isDeactivated || UiFramework.isContextMenuOpen)\n return;\n\n this.fieldValuesChanged();\n\n if (!this.dontMoveFocus) this.setFocusItem(this.newFocus);\n }\n\n /** Determine if the AccuDraw UI has focus\n * @internal\n */\n public override get hasInputFocus(): boolean {\n let hasFocus = false;\n const el = document.querySelector(\"div.uifw-accudraw-field-container\");\n if (el) hasFocus = el.contains(document.activeElement);\n return hasFocus;\n }\n\n /** Implement this method to set focus to the AccuDraw UI.\n * @internal\n */\n public override grabInputFocus(): void {\n FrameworkAccuDraw.onAccuDrawGrabInputFocusEvent.emit({});\n }\n\n /** Gets the display value for an AccuDraw field */\n public static getFieldDisplayValue(index: ItemField): string {\n const value = IModelApp.accuDraw.getValueByIndex(index);\n let formattedValue = value.toString();\n\n const formatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n ItemField.ANGLE_Item === index\n ? QuantityType.Angle\n : QuantityType.Length\n );\n // istanbul ignore else\n if (formatterSpec)\n formattedValue = IModelApp.quantityFormatter.formatQuantity(\n value,\n formatterSpec\n );\n\n return formattedValue;\n }\n\n /** AccuDraw Set Field Value from Ui. */\n public static setFieldValueFromUi(\n field: ItemField,\n stringValue: string\n ): void {\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.emit({\n field,\n stringValue,\n });\n }\n\n private outputInfoMessage(message: string): void {\n // istanbul ignore else\n if (FrameworkAccuDraw.displayNotifications)\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(OutputMessagePriority.Info, message)\n );\n }\n\n private outputCompassModeMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n let modeKey = compassModeToKeyMap.get(this.compassMode);\n // istanbul ignore if\n if (modeKey === undefined) modeKey = \"polar\";\n const modeString = UiFramework.translate(\n `accuDraw.compassMode.${modeKey}`\n );\n const modeMessage = UiFramework.localization.getLocalizedString(\n \"accuDraw.compassModeSet\",\n { modeString, ns: UiFramework.localizationNamespace }\n );\n this.outputInfoMessage(modeMessage);\n }\n }\n\n private outputRotationMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n let rotationKey = rotationModeToKeyMap.get(this.rotationMode);\n // istanbul ignore if\n if (rotationKey === undefined) rotationKey = \"top\";\n const rotationString = UiFramework.translate(\n `accuDraw.rotation.${rotationKey}`\n );\n const rotationMessage = UiFramework.localization.getLocalizedString(\n \"accuDraw.rotationSet\",\n { rotationString, ns: UiFramework.localizationNamespace }\n );\n this.outputInfoMessage(rotationMessage);\n }\n }\n}\n"]}
@@ -21,13 +21,13 @@ export declare class InternalChildWindowManager implements FrameworkChildWindows
21
21
  private _roots;
22
22
  get openChildWindows(): OpenChildWindowInfo[];
23
23
  /**
24
- * When using React18, the `createRoot` function must be provided in order to render Popout content with React18.
24
+ * When using React 18, the `createRoot` function must be provided in order to render Popout content with React 18.
25
25
  * Do not call if using React 17 or before.
26
26
  *
27
27
  * Note: The type of the function is intentionally simplified here.
28
28
  *
29
29
  * @param createRootFn Function imported from `import { createRoot } from "react-dom/client";`
30
- * @beta Will be removed once the transition to react 18 is complete.
30
+ * @beta Will be removed once the transition to React 18 is complete.
31
31
  */
32
32
  useCreateRoot(createRootFn: CreateRoot): void;
33
33
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"InternalChildWindowManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/childwindow/InternalChildWindowManager.tsx"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,mCAAmC,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AAyB5C;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/E;;;;KAIK;AACL,qBAAa,0BAA2B,YAAW,qBAAqB;IACtE,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,MAAM,CAAwC;IAEtD,IAAW,gBAAgB,0BAE1B;IAED;;;;;;;;OAQG;IAEI,aAAa,CAAC,YAAY,EAAE,UAAU,GAAG,IAAI;IAIpD;;;;OAIG;IAEH,OAAO,CAAC,MAAM;IAoBd;;;;OAIG;IACI,IAAI,CACT,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,mBAAmB,GAAG,SAAS;IAQlC;;;;OAIG;IACI,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS;IAU3E,OAAO,CAAC,yBAAyB;IA0DjC,gGAAgG;IACzF,QAAQ;IAQf;;;;;OAKG;IACI,KAAK,kBAAmB,MAAM,2CAgBnC;IAGF,OAAO,CAAC,mBAAmB;IAc3B;;;;;;;;OAQG;IAEI,IAAI,CACT,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,QAAQ,EAAE,wBAAwB,EAClC,mBAAmB,CAAC,EAAE,OAAO;CAuDhC"}
1
+ {"version":3,"file":"InternalChildWindowManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/childwindow/InternalChildWindowManager.tsx"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,mCAAmC,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,oCAAoC,CAAC;AA0B5C;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/E;;;;KAIK;AACL,qBAAa,0BAA2B,YAAW,qBAAqB;IACtE,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,MAAM,CAAwC;IAEtD,IAAW,gBAAgB,0BAE1B;IAED;;;;;;;;OAQG;IAEI,aAAa,CAAC,YAAY,EAAE,UAAU,GAAG,IAAI;IAIpD;;;;OAIG;IAEH,OAAO,CAAC,MAAM;IAoBd;;;;OAIG;IACI,IAAI,CACT,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,mBAAmB,GAAG,SAAS;IAQlC;;;;OAIG;IACI,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS;IAU3E,OAAO,CAAC,yBAAyB;IAqEjC,gGAAgG;IACzF,QAAQ;IAQf;;;;;OAKG;IACI,KAAK,kBAAmB,MAAM,2CAgBnC;IAGF,OAAO,CAAC,mBAAmB;IAc3B;;;;;;;;OAQG;IAEI,IAAI,CACT,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC,SAAS,EACxB,QAAQ,EAAE,wBAAwB,EAClC,mBAAmB,CAAC,EAAE,OAAO;CAuDhC"}
@@ -17,6 +17,7 @@ import { ModalDialogRenderer } from "../dialog/ModalDialogManager";
17
17
  import { CursorPopupMenu } from "../cursor/cursormenu/CursorMenu";
18
18
  import { ThemeManager } from "../theme/ThemeManager";
19
19
  import { UiFramework } from "../UiFramework";
20
+ import { createLayoutStore, NineZone } from "@itwin/appui-layout-react";
20
21
  const childHtml = `<!DOCTYPE html>
21
22
  <html>
22
23
  <head>
@@ -76,13 +77,13 @@ export class InternalChildWindowManager {
76
77
  return this._openChildWindows;
77
78
  }
78
79
  /**
79
- * When using React18, the `createRoot` function must be provided in order to render Popout content with React18.
80
+ * When using React 18, the `createRoot` function must be provided in order to render Popout content with React 18.
80
81
  * Do not call if using React 17 or before.
81
82
  *
82
83
  * Note: The type of the function is intentionally simplified here.
83
84
  *
84
85
  * @param createRootFn Function imported from `import { createRoot } from "react-dom/client";`
85
- * @beta Will be removed once the transition to react 18 is complete.
86
+ * @beta Will be removed once the transition to React 18 is complete.
86
87
  */
87
88
  // istanbul ignore next: Result of this assignment is only visible in `open`, which is not tested.
88
89
  useCreateRoot(createRootFn) {
@@ -145,14 +146,15 @@ export class InternalChildWindowManager {
145
146
  copyStyles(childWindow.document);
146
147
  setTimeout(() => {
147
148
  this.render(React.createElement(Provider, { store: UiFramework.store },
148
- React.createElement(UiStateStorageHandler, null,
149
- React.createElement(ThemeManager, null,
150
- React.createElement("div", { className: "uifw-child-window-container-host" },
151
- React.createElement(PopupRenderer, null),
152
- React.createElement(ModalDialogRenderer, null),
153
- React.createElement(ModelessDialogRenderer, null),
154
- React.createElement(CursorPopupMenu, null),
155
- React.createElement("div", { className: "uifw-child-window-container nz-widget-widget" }, content))))), reactConnectionDiv);
149
+ React.createElement(NineZone, { dispatch: () => { }, layout: createLayoutStore(UiFramework.frontstages.activeFrontstageDef?.nineZoneState) },
150
+ React.createElement(UiStateStorageHandler, null,
151
+ React.createElement(ThemeManager, null,
152
+ React.createElement("div", { className: "uifw-child-window-container-host" },
153
+ React.createElement(PopupRenderer, null),
154
+ React.createElement(ModalDialogRenderer, null),
155
+ React.createElement(ModelessDialogRenderer, null),
156
+ React.createElement(CursorPopupMenu, null),
157
+ React.createElement("div", { className: "uifw-child-window-container nz-widget-widget" }, content)))))), reactConnectionDiv);
156
158
  });
157
159
  });
158
160
  childWindow.addEventListener("pagehide", () => {
@@ -160,7 +162,6 @@ export class InternalChildWindowManager {
160
162
  if (!frontStageDef)
161
163
  return;
162
164
  frontStageDef.saveChildWindowSizeAndPosition(childWindowId, childWindow);
163
- this.close(childWindowId, false);
164
165
  // UnmountComponentAtNode is deprecated in React 18, so if they are
165
166
  // using React 18 and passing in a createRoot function, unmount()
166
167
  // will be used
@@ -169,6 +170,10 @@ export class InternalChildWindowManager {
169
170
  }
170
171
  else
171
172
  ReactDOM.unmountComponentAtNode(reactConnectionDiv);
173
+ // We need to unmount the child window content before we close it because
174
+ // it is docked in this function and the widget will disappear if we
175
+ // unmount after docked.
176
+ this.close(childWindowId, false);
172
177
  });
173
178
  }
174
179
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InternalChildWindowManager.js","sourceRoot":"","sources":["../../../../src/appui-react/childwindow/InternalChildWindowManager.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\n/** @packageDocumentation\n * @module ChildWindowManager\n */\n\nimport \"./InternalChildWindowManager.scss\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { copyStyles } from \"./CopyStyles\";\nimport { Provider } from \"react-redux\";\nimport { UiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport { PopupRenderer } from \"../popup/PopupManager\";\nimport { ModelessDialogRenderer } from \"../dialog/ModelessDialogManager\";\nimport { ModalDialogRenderer } from \"../dialog/ModalDialogManager\";\nimport { CursorPopupMenu } from \"../cursor/cursormenu/CursorMenu\";\nimport { ThemeManager } from \"../theme/ThemeManager\";\nimport { UiFramework } from \"../UiFramework\";\nimport type {\n ChildWindowLocationProps,\n FrameworkChildWindows,\n OpenChildWindowInfo,\n} from \"../framework/FrameworkChildWindows\";\n\nconst childHtml = `<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\" />\n <style>\n html,\n body {\n height: 100%;\n width: 100%;\n margin: 0;\n overflow: hidden;\n }\n #root {\n height: 100%;\n }\n </style>\n</head>\n<body class=\"iui-root\">\n <noscript>You need to enable JavaScript to run this app.</noscript>\n <div id=\"root\"></div>\n</body>\n</html>`;\n\n/**\n * Simplification of non exported CreateRoot parameter, only to be used\n * in InternalChildWindowManager and ChildWindowManager\n * @internal\n */\nexport type CreateRoot = Parameters<FrameworkChildWindows[\"useCreateRoot\"]>[0];\n\n/** Supports opening a child browser window from the main application window. The child window is managed by the main application\n * and is running in the same security context. The application must deliver the html file iTwinPopup.html along side its index.html.\n * See also: [Child Window Manager]($docs/learning/ui/appui-react/ChildWindows.md)\n * @internal\n * */\nexport class InternalChildWindowManager implements FrameworkChildWindows {\n private _openChildWindows: OpenChildWindowInfo[] = [];\n private _createRoot?: CreateRoot;\n private _roots: { [childwindowId: string]: any } = {};\n\n public get openChildWindows() {\n return this._openChildWindows;\n }\n\n /**\n * When using React18, the `createRoot` function must be provided in order to render Popout content with React18.\n * Do not call if using React 17 or before.\n *\n * Note: The type of the function is intentionally simplified here.\n *\n * @param createRootFn Function imported from `import { createRoot } from \"react-dom/client\";`\n * @beta Will be removed once the transition to react 18 is complete.\n */\n // istanbul ignore next: Result of this assignment is only visible in `open`, which is not tested.\n public useCreateRoot(createRootFn: CreateRoot): void {\n this._createRoot = createRootFn;\n }\n\n /**\n * Abstracts ReactDOM.render to use either the _createRoot method or the default ReactDOM.render.\n * @param element Element to render.\n * @param container Container to render to.\n */\n // istanbul ignore next: Used in `open` which is not tested.\n private render(\n element: React.FunctionComponentElement<any>,\n container: Element | DocumentFragment\n ) {\n // If createRoot is passed in for React 18 we have to render differently\n // than without it. React 17 vs React 18. We need to save the root to\n // unmount it.\n if (this._createRoot) {\n const childWindowId = UiFramework.childWindows.findId(\n container.ownerDocument.defaultView\n );\n if (childWindowId) {\n this._roots[childWindowId] = this._createRoot(container);\n this._roots[childWindowId].render(element);\n }\n } else {\n ReactDOM.render(element, container);\n }\n }\n\n /**\n * Returns the OpenChildWindowInfo for the related id.\n * @param childWindowId Id of the window to retrieve.\n * @returns undefined if not found.\n */\n public find(\n childWindowId: string | undefined\n ): OpenChildWindowInfo | undefined {\n if (undefined === childWindowId) return undefined;\n\n return this.openChildWindows.find(\n (openWindow) => openWindow.childWindowId === childWindowId\n );\n }\n\n /**\n * Return the childWindowId of the provided window.\n * @param contentWindow Window element to identify\n * @returns undefined if not found\n */\n public findId(contentWindow: Window | undefined | null): string | undefined {\n if (!contentWindow) return undefined;\n\n const childWindow = this.openChildWindows.find(\n (openWindow) => openWindow.window === contentWindow\n );\n return childWindow?.childWindowId;\n }\n\n // istanbul ignore next: Used in `open` which is not tested.\n private renderChildWindowContents(\n childWindow: Window,\n childWindowId: string,\n content: React.ReactNode,\n title: string\n ) {\n childWindow.document.title = title;\n const reactConnectionDiv = childWindow.document.getElementById(\"root\");\n if (reactConnectionDiv) {\n // set openChildWindows now so components can use it when they mount\n this._openChildWindows.push({\n childWindowId,\n window: childWindow,\n parentWindow: window,\n });\n\n setTimeout(() => {\n copyStyles(childWindow.document);\n setTimeout(() => {\n this.render(\n <Provider store={UiFramework.store}>\n <UiStateStorageHandler>\n <ThemeManager>\n <div className=\"uifw-child-window-container-host\">\n <PopupRenderer />\n <ModalDialogRenderer />\n <ModelessDialogRenderer />\n <CursorPopupMenu />\n <div className=\"uifw-child-window-container nz-widget-widget\">\n {content}\n </div>\n </div>\n </ThemeManager>\n </UiStateStorageHandler>\n </Provider>,\n reactConnectionDiv\n );\n });\n });\n\n childWindow.addEventListener(\"pagehide\", () => {\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontStageDef) return;\n frontStageDef.saveChildWindowSizeAndPosition(\n childWindowId,\n childWindow\n );\n this.close(childWindowId, false);\n // UnmountComponentAtNode is deprecated in React 18, so if they are\n // using React 18 and passing in a createRoot function, unmount()\n // will be used\n if (this._roots[childWindowId]) {\n this._roots[childWindowId].unmount();\n } else ReactDOM.unmountComponentAtNode(reactConnectionDiv);\n });\n }\n }\n\n /** Close all child/pop-out windows. This typically is called when the frontstage is changed. */\n public closeAll() {\n // istanbul ignore next\n this.openChildWindows.forEach((openChildWindow) =>\n openChildWindow.window.close()\n );\n this._openChildWindows = [];\n }\n\n /**\n * Close a specific child window.\n * @param childWindowId Id of the window to close\n * @param processWindowClose should the `close` method be called on the closing window. (defaults to true)\n * @returns false if the window could not be found.\n */\n public close = (childWindowId: string, processWindowClose = true) => {\n const windowIndex = this.openChildWindows.findIndex(\n (openWindow) => openWindow.childWindowId === childWindowId\n );\n if (-1 === windowIndex) return false;\n const childWindow = this.openChildWindows[windowIndex];\n this.openChildWindows.splice(windowIndex, 1);\n if (processWindowClose) {\n childWindow.window.close();\n } else {\n // call the following to convert popout to docked widget\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n frontStageDef &&\n frontStageDef.dockWidgetContainerByContainerId(childWindowId);\n }\n return true;\n };\n\n // istanbul ignore next: Used in `open` which is not tested.\n private adjustWidowLocation(\n location: ChildWindowLocationProps\n ): ChildWindowLocationProps {\n const outLocation = { ...location };\n if (0 === location.top && 0 === location.left) {\n // If no location is provided, prepare position of the new window to be centered against the current window.\n outLocation.left =\n window.outerWidth / 2 + window.screenX - location.width / 2;\n outLocation.top =\n window.outerHeight / 2 + window.screenY - location.height / 2;\n }\n return outLocation;\n }\n\n /**\n * Open a new child window.\n * @param childWindowId Id to assign to the newly created window.\n * @param title Title to display on the window.\n * @param content ReactNode to be rendered in the window.\n * @param location Position and size information\n * @param useDefaultPopoutUrl use \"/iTwinPopup.html\" as the window Url, \"\" otherwise.\n * @returns true if the window is opened successfully.\n */\n // istanbul ignore next: Would require mocking window.open to return a window object.\n public open(\n childWindowId: string,\n title: string,\n content: React.ReactNode,\n location: ChildWindowLocationProps,\n useDefaultPopoutUrl?: boolean\n ) {\n // first check to see if content is already open in child window\n if (\n this.openChildWindows.findIndex(\n (openWindow) => openWindow.childWindowId === childWindowId\n ) >= 0\n ) {\n return false;\n }\n\n location = this.adjustWidowLocation(location);\n const url = useDefaultPopoutUrl ? \"/iTwinPopup.html\" : \"\";\n const childWindow = window.open(\n url,\n \"\",\n `width=${location.width},height=${location.height},left=${location.left},top=${location.top},menubar=no,resizable=yes,scrollbars=no,status=no,location=no`\n );\n if (!childWindow) return false;\n if (0 === url.length) {\n childWindow.document.write(childHtml);\n this.renderChildWindowContents(\n childWindow,\n childWindowId,\n content,\n title\n );\n } else {\n childWindow.addEventListener(\n \"load\",\n () => {\n this.renderChildWindowContents(\n childWindow,\n childWindowId,\n content,\n title\n );\n },\n false\n );\n }\n\n window.addEventListener(\n \"unload\",\n () => {\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n if (frontStageDef) {\n this.close(childWindowId, true);\n }\n },\n false\n );\n\n return true;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalChildWindowManager.js","sourceRoot":"","sources":["../../../../src/appui-react/childwindow/InternalChildWindowManager.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\n/** @packageDocumentation\n * @module ChildWindowManager\n */\n\nimport \"./InternalChildWindowManager.scss\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { copyStyles } from \"./CopyStyles\";\nimport { Provider } from \"react-redux\";\nimport { UiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport { PopupRenderer } from \"../popup/PopupManager\";\nimport { ModelessDialogRenderer } from \"../dialog/ModelessDialogManager\";\nimport { ModalDialogRenderer } from \"../dialog/ModalDialogManager\";\nimport { CursorPopupMenu } from \"../cursor/cursormenu/CursorMenu\";\nimport { ThemeManager } from \"../theme/ThemeManager\";\nimport { UiFramework } from \"../UiFramework\";\nimport type {\n ChildWindowLocationProps,\n FrameworkChildWindows,\n OpenChildWindowInfo,\n} from \"../framework/FrameworkChildWindows\";\nimport { createLayoutStore, NineZone } from \"@itwin/appui-layout-react\";\n\nconst childHtml = `<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\" />\n <style>\n html,\n body {\n height: 100%;\n width: 100%;\n margin: 0;\n overflow: hidden;\n }\n #root {\n height: 100%;\n }\n </style>\n</head>\n<body class=\"iui-root\">\n <noscript>You need to enable JavaScript to run this app.</noscript>\n <div id=\"root\"></div>\n</body>\n</html>`;\n\n/**\n * Simplification of non exported CreateRoot parameter, only to be used\n * in InternalChildWindowManager and ChildWindowManager\n * @internal\n */\nexport type CreateRoot = Parameters<FrameworkChildWindows[\"useCreateRoot\"]>[0];\n\n/** Supports opening a child browser window from the main application window. The child window is managed by the main application\n * and is running in the same security context. The application must deliver the html file iTwinPopup.html along side its index.html.\n * See also: [Child Window Manager]($docs/learning/ui/appui-react/ChildWindows.md)\n * @internal\n * */\nexport class InternalChildWindowManager implements FrameworkChildWindows {\n private _openChildWindows: OpenChildWindowInfo[] = [];\n private _createRoot?: CreateRoot;\n private _roots: { [childwindowId: string]: any } = {};\n\n public get openChildWindows() {\n return this._openChildWindows;\n }\n\n /**\n * When using React 18, the `createRoot` function must be provided in order to render Popout content with React 18.\n * Do not call if using React 17 or before.\n *\n * Note: The type of the function is intentionally simplified here.\n *\n * @param createRootFn Function imported from `import { createRoot } from \"react-dom/client\";`\n * @beta Will be removed once the transition to React 18 is complete.\n */\n // istanbul ignore next: Result of this assignment is only visible in `open`, which is not tested.\n public useCreateRoot(createRootFn: CreateRoot): void {\n this._createRoot = createRootFn;\n }\n\n /**\n * Abstracts ReactDOM.render to use either the _createRoot method or the default ReactDOM.render.\n * @param element Element to render.\n * @param container Container to render to.\n */\n // istanbul ignore next: Used in `open` which is not tested.\n private render(\n element: React.FunctionComponentElement<any>,\n container: Element | DocumentFragment\n ) {\n // If createRoot is passed in for React 18 we have to render differently\n // than without it. React 17 vs React 18. We need to save the root to\n // unmount it.\n if (this._createRoot) {\n const childWindowId = UiFramework.childWindows.findId(\n container.ownerDocument.defaultView\n );\n if (childWindowId) {\n this._roots[childWindowId] = this._createRoot(container);\n this._roots[childWindowId].render(element);\n }\n } else {\n ReactDOM.render(element, container);\n }\n }\n\n /**\n * Returns the OpenChildWindowInfo for the related id.\n * @param childWindowId Id of the window to retrieve.\n * @returns undefined if not found.\n */\n public find(\n childWindowId: string | undefined\n ): OpenChildWindowInfo | undefined {\n if (undefined === childWindowId) return undefined;\n\n return this.openChildWindows.find(\n (openWindow) => openWindow.childWindowId === childWindowId\n );\n }\n\n /**\n * Return the childWindowId of the provided window.\n * @param contentWindow Window element to identify\n * @returns undefined if not found\n */\n public findId(contentWindow: Window | undefined | null): string | undefined {\n if (!contentWindow) return undefined;\n\n const childWindow = this.openChildWindows.find(\n (openWindow) => openWindow.window === contentWindow\n );\n return childWindow?.childWindowId;\n }\n\n // istanbul ignore next: Used in `open` which is not tested.\n private renderChildWindowContents(\n childWindow: Window,\n childWindowId: string,\n content: React.ReactNode,\n title: string\n ) {\n childWindow.document.title = title;\n const reactConnectionDiv = childWindow.document.getElementById(\"root\");\n if (reactConnectionDiv) {\n // set openChildWindows now so components can use it when they mount\n this._openChildWindows.push({\n childWindowId,\n window: childWindow,\n parentWindow: window,\n });\n\n setTimeout(() => {\n copyStyles(childWindow.document);\n setTimeout(() => {\n this.render(\n <Provider store={UiFramework.store}>\n <NineZone\n dispatch={() => {}}\n layout={createLayoutStore(\n UiFramework.frontstages.activeFrontstageDef?.nineZoneState\n )}\n >\n <UiStateStorageHandler>\n <ThemeManager>\n <div className=\"uifw-child-window-container-host\">\n <PopupRenderer />\n <ModalDialogRenderer />\n <ModelessDialogRenderer />\n <CursorPopupMenu />\n <div className=\"uifw-child-window-container nz-widget-widget\">\n {content}\n </div>\n </div>\n </ThemeManager>\n </UiStateStorageHandler>\n </NineZone>\n </Provider>,\n reactConnectionDiv\n );\n });\n });\n\n childWindow.addEventListener(\"pagehide\", () => {\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontStageDef) return;\n frontStageDef.saveChildWindowSizeAndPosition(\n childWindowId,\n childWindow\n );\n // UnmountComponentAtNode is deprecated in React 18, so if they are\n // using React 18 and passing in a createRoot function, unmount()\n // will be used\n if (this._roots[childWindowId]) {\n this._roots[childWindowId].unmount();\n } else ReactDOM.unmountComponentAtNode(reactConnectionDiv);\n\n // We need to unmount the child window content before we close it because\n // it is docked in this function and the widget will disappear if we\n // unmount after docked.\n this.close(childWindowId, false);\n });\n }\n }\n\n /** Close all child/pop-out windows. This typically is called when the frontstage is changed. */\n public closeAll() {\n // istanbul ignore next\n this.openChildWindows.forEach((openChildWindow) =>\n openChildWindow.window.close()\n );\n this._openChildWindows = [];\n }\n\n /**\n * Close a specific child window.\n * @param childWindowId Id of the window to close\n * @param processWindowClose should the `close` method be called on the closing window. (defaults to true)\n * @returns false if the window could not be found.\n */\n public close = (childWindowId: string, processWindowClose = true) => {\n const windowIndex = this.openChildWindows.findIndex(\n (openWindow) => openWindow.childWindowId === childWindowId\n );\n if (-1 === windowIndex) return false;\n const childWindow = this.openChildWindows[windowIndex];\n this.openChildWindows.splice(windowIndex, 1);\n if (processWindowClose) {\n childWindow.window.close();\n } else {\n // call the following to convert popout to docked widget\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n frontStageDef &&\n frontStageDef.dockWidgetContainerByContainerId(childWindowId);\n }\n return true;\n };\n\n // istanbul ignore next: Used in `open` which is not tested.\n private adjustWidowLocation(\n location: ChildWindowLocationProps\n ): ChildWindowLocationProps {\n const outLocation = { ...location };\n if (0 === location.top && 0 === location.left) {\n // If no location is provided, prepare position of the new window to be centered against the current window.\n outLocation.left =\n window.outerWidth / 2 + window.screenX - location.width / 2;\n outLocation.top =\n window.outerHeight / 2 + window.screenY - location.height / 2;\n }\n return outLocation;\n }\n\n /**\n * Open a new child window.\n * @param childWindowId Id to assign to the newly created window.\n * @param title Title to display on the window.\n * @param content ReactNode to be rendered in the window.\n * @param location Position and size information\n * @param useDefaultPopoutUrl use \"/iTwinPopup.html\" as the window Url, \"\" otherwise.\n * @returns true if the window is opened successfully.\n */\n // istanbul ignore next: Would require mocking window.open to return a window object.\n public open(\n childWindowId: string,\n title: string,\n content: React.ReactNode,\n location: ChildWindowLocationProps,\n useDefaultPopoutUrl?: boolean\n ) {\n // first check to see if content is already open in child window\n if (\n this.openChildWindows.findIndex(\n (openWindow) => openWindow.childWindowId === childWindowId\n ) >= 0\n ) {\n return false;\n }\n\n location = this.adjustWidowLocation(location);\n const url = useDefaultPopoutUrl ? \"/iTwinPopup.html\" : \"\";\n const childWindow = window.open(\n url,\n \"\",\n `width=${location.width},height=${location.height},left=${location.left},top=${location.top},menubar=no,resizable=yes,scrollbars=no,status=no,location=no`\n );\n if (!childWindow) return false;\n if (0 === url.length) {\n childWindow.document.write(childHtml);\n this.renderChildWindowContents(\n childWindow,\n childWindowId,\n content,\n title\n );\n } else {\n childWindow.addEventListener(\n \"load\",\n () => {\n this.renderChildWindowContents(\n childWindow,\n childWindowId,\n content,\n title\n );\n },\n false\n );\n }\n\n window.addEventListener(\n \"unload\",\n () => {\n const frontStageDef = UiFramework.frontstages.activeFrontstageDef;\n if (frontStageDef) {\n this.close(childWindowId, true);\n }\n },\n false\n );\n\n return true;\n }\n}\n"]}