@itwin/appui-react 4.6.4 → 4.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/CHANGELOG.md +26 -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/content/InternalContentViewManager.js +1 -1
  44. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  45. package/lib/cjs/appui-react/feedback/ValidationTextbox.js +3 -3
  46. package/lib/cjs/appui-react/feedback/ValidationTextbox.js.map +1 -1
  47. package/lib/cjs/appui-react/framework/FrameworkKeyboardShortcuts.d.ts +2 -2
  48. package/lib/cjs/appui-react/framework/FrameworkKeyboardShortcuts.d.ts.map +1 -1
  49. package/lib/cjs/appui-react/framework/FrameworkKeyboardShortcuts.js.map +1 -1
  50. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +6 -8
  51. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  52. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +26 -16
  53. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  54. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.d.ts.map +1 -1
  55. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +1 -1
  56. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  57. package/lib/cjs/appui-react/frontstage/NestedFrontstage.d.ts.map +1 -1
  58. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js +1 -2
  59. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  60. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js +2 -2
  61. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  62. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  63. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js +42 -2
  64. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  65. package/lib/cjs/appui-react/messages/AppNotificationManager.d.ts +9 -3
  66. package/lib/cjs/appui-react/messages/AppNotificationManager.d.ts.map +1 -1
  67. package/lib/cjs/appui-react/messages/AppNotificationManager.js +9 -3
  68. package/lib/cjs/appui-react/messages/AppNotificationManager.js.map +1 -1
  69. package/lib/cjs/appui-react/messages/MessageManager.d.ts +10 -0
  70. package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
  71. package/lib/cjs/appui-react/messages/MessageManager.js +51 -6
  72. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  73. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.d.ts.map +1 -1
  74. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js +1 -3
  75. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  76. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.scss +0 -15
  77. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.d.ts.map +1 -1
  78. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js +8 -8
  79. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  80. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts +1 -1
  81. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  82. package/lib/cjs/appui-react/pickers/ViewSelector.js +2 -3
  83. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  84. package/lib/cjs/appui-react/popup/CardPopup.d.ts.map +1 -1
  85. package/lib/cjs/appui-react/popup/CardPopup.js +2 -2
  86. package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
  87. package/lib/cjs/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
  88. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +7 -6
  89. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  90. package/lib/cjs/appui-react/popup/KeyinPalettePopup.d.ts.map +1 -1
  91. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js +2 -2
  92. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  93. package/lib/cjs/appui-react/popup/ToolSettingsPopup.d.ts.map +1 -1
  94. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js +2 -2
  95. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  96. package/lib/cjs/appui-react/popup/ToolbarPopup.d.ts.map +1 -1
  97. package/lib/cjs/appui-react/popup/ToolbarPopup.js +2 -2
  98. package/lib/cjs/appui-react/popup/ToolbarPopup.js.map +1 -1
  99. package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts +47 -0
  100. package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts.map +1 -0
  101. package/lib/cjs/appui-react/preview/PreviewFeatures.js +95 -0
  102. package/lib/cjs/appui-react/preview/PreviewFeatures.js.map +1 -0
  103. package/lib/cjs/appui-react/safearea/SafeAreaContext.d.ts +9 -2
  104. package/lib/cjs/appui-react/safearea/SafeAreaContext.d.ts.map +1 -1
  105. package/lib/cjs/appui-react/safearea/SafeAreaContext.js +9 -2
  106. package/lib/cjs/appui-react/safearea/SafeAreaContext.js.map +1 -1
  107. package/lib/cjs/appui-react/selection/SelectionContextItemDef.d.ts.map +1 -1
  108. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js +10 -10
  109. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  110. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.d.ts +2 -3
  111. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  112. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js +9 -6
  113. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  114. package/lib/cjs/appui-react/statusbar/StatusBar.d.ts +1 -28
  115. package/lib/cjs/appui-react/statusbar/StatusBar.d.ts.map +1 -1
  116. package/lib/cjs/appui-react/statusbar/StatusBar.js +1 -69
  117. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  118. package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  119. package/lib/cjs/appui-react/statusfields/MessageCenter.js +1 -3
  120. package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
  121. package/lib/cjs/appui-react/statusfields/SectionsField.d.ts.map +1 -1
  122. package/lib/cjs/appui-react/statusfields/SectionsField.js +1 -3
  123. package/lib/cjs/appui-react/statusfields/SectionsField.js.map +1 -1
  124. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts +4 -7
  125. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  126. package/lib/cjs/appui-react/statusfields/SelectionScope.js +2 -7
  127. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  128. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  129. package/lib/cjs/appui-react/statusfields/SnapMode.js +8 -10
  130. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  131. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  132. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +8 -4
  133. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  134. package/lib/cjs/appui-react/theme/ThemeManager.d.ts +38 -7
  135. package/lib/cjs/appui-react/theme/ThemeManager.d.ts.map +1 -1
  136. package/lib/cjs/appui-react/theme/ThemeManager.js +52 -11
  137. package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
  138. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  139. package/lib/cjs/appui-react/toolbar/Toolbar.js +12 -1
  140. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  141. package/lib/cjs/appui-react/toolbar/ToolbarItem.d.ts +21 -0
  142. package/lib/cjs/appui-react/toolbar/ToolbarItem.d.ts.map +1 -1
  143. package/lib/cjs/appui-react/toolbar/ToolbarItem.js.map +1 -1
  144. package/lib/cjs/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
  145. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +7 -7
  146. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  147. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.d.ts +10 -1
  148. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.d.ts.map +1 -1
  149. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js +12 -4
  150. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  151. package/lib/cjs/appui-react/tools/KeyinPaletteTools.d.ts.map +1 -1
  152. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js +1 -2
  153. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  154. package/lib/cjs/appui-react/tools/OpenSettingsTool.d.ts.map +1 -1
  155. package/lib/cjs/appui-react/tools/OpenSettingsTool.js +1 -2
  156. package/lib/cjs/appui-react/tools/OpenSettingsTool.js.map +1 -1
  157. package/lib/cjs/appui-react/tools/RestoreLayoutTool.d.ts.map +1 -1
  158. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js +2 -3
  159. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  160. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts +15 -0
  161. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts.map +1 -1
  162. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +133 -105
  163. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  164. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.d.ts +10 -4
  165. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.d.ts.map +1 -1
  166. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +80 -65
  167. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  168. package/lib/cjs/appui-react/ui-items-provider/UiItemsProvider.d.ts +30 -4
  169. package/lib/cjs/appui-react/ui-items-provider/UiItemsProvider.d.ts.map +1 -1
  170. package/lib/cjs/appui-react/ui-items-provider/UiItemsProvider.js.map +1 -1
  171. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.d.ts +11 -2
  172. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.d.ts.map +1 -1
  173. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js +9 -1
  174. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  175. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts +5 -4
  176. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  177. package/lib/cjs/appui-react/uistate/AppUiSettings.js +2 -2
  178. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  179. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts +10 -1
  180. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  181. package/lib/cjs/appui-react/uistate/useUiStateStorage.js +10 -1
  182. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
  183. package/lib/cjs/appui-react/utils/matchesWords.d.ts +22 -0
  184. package/lib/cjs/appui-react/utils/matchesWords.d.ts.map +1 -0
  185. package/lib/cjs/appui-react/utils/matchesWords.js +103 -0
  186. package/lib/cjs/appui-react/utils/matchesWords.js.map +1 -0
  187. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  188. package/lib/cjs/appui-react/widget-panels/Frontstage.js +25 -13
  189. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  190. package/lib/cjs/appui-react/widget-panels/Frontstage.scss +19 -0
  191. package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts +4 -1
  192. package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  193. package/lib/cjs/appui-react/widget-panels/ToolSettings.js +11 -5
  194. package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
  195. package/lib/cjs/appui-react/widgets/BackstageAppButton.d.ts.map +1 -1
  196. package/lib/cjs/appui-react/widgets/BackstageAppButton.js +2 -7
  197. package/lib/cjs/appui-react/widgets/BackstageAppButton.js.map +1 -1
  198. package/lib/cjs/appui-react/widgets/Widget.d.ts +23 -1
  199. package/lib/cjs/appui-react/widgets/Widget.d.ts.map +1 -1
  200. package/lib/cjs/appui-react/widgets/Widget.js.map +1 -1
  201. package/lib/cjs/appui-react.d.ts +1 -0
  202. package/lib/cjs/appui-react.d.ts.map +1 -1
  203. package/lib/cjs/appui-react.js +3 -0
  204. package/lib/cjs/appui-react.js.map +1 -1
  205. package/lib/esm/appui-react/UiFramework.d.ts +29 -14
  206. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  207. package/lib/esm/appui-react/UiFramework.js +29 -16
  208. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  209. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  210. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +4 -7
  211. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  212. package/lib/esm/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  213. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js +3 -3
  214. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  215. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.d.ts +8 -0
  216. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.d.ts.map +1 -1
  217. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.js +8 -0
  218. package/lib/esm/appui-react/accudraw/AccuDrawKeyboardShortcuts.js.map +1 -1
  219. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.d.ts.map +1 -1
  220. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js +3 -4
  221. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  222. package/lib/esm/appui-react/accudraw/Calculator.d.ts.map +1 -1
  223. package/lib/esm/appui-react/accudraw/Calculator.js +11 -12
  224. package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
  225. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts +9 -1
  226. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
  227. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js +9 -1
  228. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  229. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts +2 -2
  230. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
  231. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +16 -11
  232. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  233. package/lib/esm/appui-react/childwindow/PopoutWidget.d.ts +2 -4
  234. package/lib/esm/appui-react/childwindow/PopoutWidget.d.ts.map +1 -1
  235. package/lib/esm/appui-react/childwindow/PopoutWidget.js +6 -3
  236. package/lib/esm/appui-react/childwindow/PopoutWidget.js.map +1 -1
  237. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  238. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js +3 -1
  239. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  240. package/lib/esm/appui-react/configurableui/state.d.ts.map +1 -1
  241. package/lib/esm/appui-react/configurableui/state.js +5 -2
  242. package/lib/esm/appui-react/configurableui/state.js.map +1 -1
  243. package/lib/esm/appui-react/content/IModelViewport.d.ts.map +1 -1
  244. package/lib/esm/appui-react/content/IModelViewport.js +2 -0
  245. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  246. package/lib/esm/appui-react/content/InternalContentViewManager.js +1 -1
  247. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  248. package/lib/esm/appui-react/feedback/ValidationTextbox.js +3 -3
  249. package/lib/esm/appui-react/feedback/ValidationTextbox.js.map +1 -1
  250. package/lib/esm/appui-react/framework/FrameworkKeyboardShortcuts.d.ts +2 -2
  251. package/lib/esm/appui-react/framework/FrameworkKeyboardShortcuts.d.ts.map +1 -1
  252. package/lib/esm/appui-react/framework/FrameworkKeyboardShortcuts.js.map +1 -1
  253. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +6 -8
  254. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  255. package/lib/esm/appui-react/frontstage/FrontstageDef.js +27 -17
  256. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  257. package/lib/esm/appui-react/frontstage/ModalSettingsStage.d.ts.map +1 -1
  258. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +2 -2
  259. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  260. package/lib/esm/appui-react/frontstage/NestedFrontstage.d.ts.map +1 -1
  261. package/lib/esm/appui-react/frontstage/NestedFrontstage.js +1 -2
  262. package/lib/esm/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  263. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js +2 -2
  264. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  265. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  266. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js +41 -1
  267. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  268. package/lib/esm/appui-react/messages/AppNotificationManager.d.ts +9 -3
  269. package/lib/esm/appui-react/messages/AppNotificationManager.d.ts.map +1 -1
  270. package/lib/esm/appui-react/messages/AppNotificationManager.js +9 -3
  271. package/lib/esm/appui-react/messages/AppNotificationManager.js.map +1 -1
  272. package/lib/esm/appui-react/messages/MessageManager.d.ts +10 -0
  273. package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
  274. package/lib/esm/appui-react/messages/MessageManager.js +52 -7
  275. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  276. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.d.ts.map +1 -1
  277. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js +1 -3
  278. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  279. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.scss +0 -15
  280. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.d.ts.map +1 -1
  281. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js +9 -9
  282. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  283. package/lib/esm/appui-react/pickers/ViewSelector.d.ts +1 -1
  284. package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  285. package/lib/esm/appui-react/pickers/ViewSelector.js +2 -3
  286. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  287. package/lib/esm/appui-react/popup/CardPopup.d.ts.map +1 -1
  288. package/lib/esm/appui-react/popup/CardPopup.js +2 -2
  289. package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
  290. package/lib/esm/appui-react/popup/KeyinPalettePanel.d.ts.map +1 -1
  291. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +6 -5
  292. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  293. package/lib/esm/appui-react/popup/KeyinPalettePopup.d.ts.map +1 -1
  294. package/lib/esm/appui-react/popup/KeyinPalettePopup.js +2 -2
  295. package/lib/esm/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  296. package/lib/esm/appui-react/popup/ToolSettingsPopup.d.ts.map +1 -1
  297. package/lib/esm/appui-react/popup/ToolSettingsPopup.js +2 -2
  298. package/lib/esm/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  299. package/lib/esm/appui-react/popup/ToolbarPopup.d.ts.map +1 -1
  300. package/lib/esm/appui-react/popup/ToolbarPopup.js +2 -2
  301. package/lib/esm/appui-react/popup/ToolbarPopup.js.map +1 -1
  302. package/lib/esm/appui-react/preview/PreviewFeatures.d.ts +47 -0
  303. package/lib/esm/appui-react/preview/PreviewFeatures.d.ts.map +1 -0
  304. package/lib/esm/appui-react/preview/PreviewFeatures.js +90 -0
  305. package/lib/esm/appui-react/preview/PreviewFeatures.js.map +1 -0
  306. package/lib/esm/appui-react/safearea/SafeAreaContext.d.ts +9 -2
  307. package/lib/esm/appui-react/safearea/SafeAreaContext.d.ts.map +1 -1
  308. package/lib/esm/appui-react/safearea/SafeAreaContext.js +9 -2
  309. package/lib/esm/appui-react/safearea/SafeAreaContext.js.map +1 -1
  310. package/lib/esm/appui-react/selection/SelectionContextItemDef.d.ts.map +1 -1
  311. package/lib/esm/appui-react/selection/SelectionContextItemDef.js +11 -11
  312. package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  313. package/lib/esm/appui-react/settings/ui/UiSettingsPage.d.ts +2 -3
  314. package/lib/esm/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  315. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js +9 -6
  316. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  317. package/lib/esm/appui-react/statusbar/StatusBar.d.ts +1 -28
  318. package/lib/esm/appui-react/statusbar/StatusBar.d.ts.map +1 -1
  319. package/lib/esm/appui-react/statusbar/StatusBar.js +1 -69
  320. package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
  321. package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  322. package/lib/esm/appui-react/statusfields/MessageCenter.js +2 -4
  323. package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
  324. package/lib/esm/appui-react/statusfields/SectionsField.d.ts.map +1 -1
  325. package/lib/esm/appui-react/statusfields/SectionsField.js +1 -3
  326. package/lib/esm/appui-react/statusfields/SectionsField.js.map +1 -1
  327. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts +4 -7
  328. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  329. package/lib/esm/appui-react/statusfields/SelectionScope.js +2 -7
  330. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  331. package/lib/esm/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  332. package/lib/esm/appui-react/statusfields/SnapMode.js +8 -10
  333. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  334. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  335. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +8 -4
  336. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  337. package/lib/esm/appui-react/theme/ThemeManager.d.ts +38 -7
  338. package/lib/esm/appui-react/theme/ThemeManager.d.ts.map +1 -1
  339. package/lib/esm/appui-react/theme/ThemeManager.js +51 -10
  340. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  341. package/lib/esm/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  342. package/lib/esm/appui-react/toolbar/Toolbar.js +11 -0
  343. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  344. package/lib/esm/appui-react/toolbar/ToolbarItem.d.ts +21 -0
  345. package/lib/esm/appui-react/toolbar/ToolbarItem.d.ts.map +1 -1
  346. package/lib/esm/appui-react/toolbar/ToolbarItem.js.map +1 -1
  347. package/lib/esm/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
  348. package/lib/esm/appui-react/tools/CoreToolDefinitions.js +8 -8
  349. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  350. package/lib/esm/appui-react/tools/FrameworkToolAdmin.d.ts +10 -1
  351. package/lib/esm/appui-react/tools/FrameworkToolAdmin.d.ts.map +1 -1
  352. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js +12 -4
  353. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  354. package/lib/esm/appui-react/tools/KeyinPaletteTools.d.ts.map +1 -1
  355. package/lib/esm/appui-react/tools/KeyinPaletteTools.js +1 -2
  356. package/lib/esm/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  357. package/lib/esm/appui-react/tools/OpenSettingsTool.d.ts.map +1 -1
  358. package/lib/esm/appui-react/tools/OpenSettingsTool.js +1 -2
  359. package/lib/esm/appui-react/tools/OpenSettingsTool.js.map +1 -1
  360. package/lib/esm/appui-react/tools/RestoreLayoutTool.d.ts.map +1 -1
  361. package/lib/esm/appui-react/tools/RestoreLayoutTool.js +2 -3
  362. package/lib/esm/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  363. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts +15 -0
  364. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.d.ts.map +1 -1
  365. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +131 -104
  366. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  367. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.d.ts +10 -4
  368. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.d.ts.map +1 -1
  369. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +81 -66
  370. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  371. package/lib/esm/appui-react/ui-items-provider/UiItemsProvider.d.ts +30 -4
  372. package/lib/esm/appui-react/ui-items-provider/UiItemsProvider.d.ts.map +1 -1
  373. package/lib/esm/appui-react/ui-items-provider/UiItemsProvider.js.map +1 -1
  374. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.d.ts +11 -2
  375. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.d.ts.map +1 -1
  376. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js +9 -1
  377. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  378. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts +5 -4
  379. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  380. package/lib/esm/appui-react/uistate/AppUiSettings.js +2 -2
  381. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  382. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts +10 -1
  383. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  384. package/lib/esm/appui-react/uistate/useUiStateStorage.js +10 -1
  385. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
  386. package/lib/esm/appui-react/utils/matchesWords.d.ts +22 -0
  387. package/lib/esm/appui-react/utils/matchesWords.d.ts.map +1 -0
  388. package/lib/esm/appui-react/utils/matchesWords.js +99 -0
  389. package/lib/esm/appui-react/utils/matchesWords.js.map +1 -0
  390. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  391. package/lib/esm/appui-react/widget-panels/Frontstage.js +27 -15
  392. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  393. package/lib/esm/appui-react/widget-panels/Frontstage.scss +19 -0
  394. package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts +4 -1
  395. package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  396. package/lib/esm/appui-react/widget-panels/ToolSettings.js +9 -4
  397. package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
  398. package/lib/esm/appui-react/widgets/BackstageAppButton.d.ts.map +1 -1
  399. package/lib/esm/appui-react/widgets/BackstageAppButton.js +2 -7
  400. package/lib/esm/appui-react/widgets/BackstageAppButton.js.map +1 -1
  401. package/lib/esm/appui-react/widgets/Widget.d.ts +23 -1
  402. package/lib/esm/appui-react/widgets/Widget.d.ts.map +1 -1
  403. package/lib/esm/appui-react/widgets/Widget.js.map +1 -1
  404. package/lib/esm/appui-react.d.ts +1 -0
  405. package/lib/esm/appui-react.d.ts.map +1 -1
  406. package/lib/esm/appui-react.js +1 -0
  407. package/lib/esm/appui-react.js.map +1 -1
  408. package/lib/public/locales/en/UiFramework.json +6 -4
  409. package/package.json +13 -11
@@ -14,7 +14,6 @@ import { Button, ToggleSwitch } from "@itwin/itwinui-react";
14
14
  import { useActiveViewport } from "../hooks/useActiveViewport";
15
15
  import { UiFramework } from "../UiFramework";
16
16
  import { StatusBarLabelIndicator } from "../statusbar/LabelIndicator";
17
- import { IconSpecUtilities } from "@itwin/appui-abstract";
18
17
  import svgSectionTool from "@bentley/icons-generic/icons/section-tool.svg";
19
18
  /** Status Field for showing section extra tools for clearing and showing manipulators
20
19
  * @beta
@@ -64,10 +63,9 @@ export function SectionsStatusField(props) {
64
63
  await IModelApp.tools.run(ViewClipClearTool.toolId, ViewClipDecorationProvider.create());
65
64
  setPopupOpen(false);
66
65
  };
67
- const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgSectionTool);
68
66
  return (React.createElement("div", { className: "uifw-section-footer-popup-container" }, showIndicator && (React.createElement(React.Fragment, null,
69
67
  React.createElement("div", { ref: targetDiv, title: toolTip },
70
- React.createElement(StatusBarLabelIndicator, { className: classes, iconSpec: iconSpec, onClick: () => setPopupOpen(!isPopupOpen) })),
68
+ React.createElement(StatusBarLabelIndicator, { className: classes, iconSpec: svgSectionTool, onClick: () => setPopupOpen(!isPopupOpen) })),
71
69
  React.createElement(FooterPopup, { target: targetDiv.current, onClose: () => setPopupOpen(false), isOpen: isPopupOpen },
72
70
  React.createElement(Dialog, { titleBar: React.createElement(TitleBar, { title: toolTip }) },
73
71
  React.createElement("div", { className: "uifw-sections-footer-contents" },
@@ -1 +1 @@
1
- {"version":3,"file":"SectionsField.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SectionsField.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 StatusBar\n */\n\nimport \"./SectionsField.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Dialog, FooterPopup, TitleBar } from \"@itwin/appui-layout-react\";\nimport type { ClipEventType, Viewport } from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n ViewClipClearTool,\n ViewClipDecoration,\n ViewClipDecorationProvider,\n} from \"@itwin/core-frontend\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Button, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport { useActiveViewport } from \"../hooks/useActiveViewport\";\nimport { UiFramework } from \"../UiFramework\";\nimport { StatusBarLabelIndicator } from \"../statusbar/LabelIndicator\";\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\nimport svgSectionTool from \"@bentley/icons-generic/icons/section-tool.svg\";\n\n/** Sections Status Field Props\n * @beta\n */\nexport interface SectionsStatusFieldProps extends CommonProps {\n hideWhenUnused?: boolean;\n}\n\n/** Status Field for showing section extra tools for clearing and showing manipulators\n * @beta\n */\nexport function SectionsStatusField(props: SectionsStatusFieldProps) {\n const [toolTip, clearLabel, showHandlesLabel] = React.useMemo(\n () => [\n UiFramework.translate(\"tools.sectionTools\"),\n UiFramework.translate(\"tools.sectionClear\"),\n UiFramework.translate(\"tools.sectionShowHandles\"),\n ],\n []\n );\n const activeViewport = useActiveViewport();\n const [showIndicator, setShowIndicator] = React.useState(false);\n const [isPopupOpen, setPopupOpen] = React.useState(false);\n const targetDiv = React.useRef<HTMLDivElement>(null);\n const classes = showIndicator ? \"uifw-field-fade-in\" : \"uifw-field-fade-out\";\n const [hasManipulatorsShown, setHasManipulatorsShown] = React.useState(false);\n\n React.useEffect(() => {\n // istanbul ignore next\n const onClipChanged = (\n viewport: Viewport,\n _eventType: ClipEventType,\n _provider: ViewClipDecorationProvider\n ) => {\n if (viewport !== activeViewport) return;\n\n setHasManipulatorsShown(!!ViewClipDecoration.get(activeViewport));\n const isClipActive = !!activeViewport.view.getViewClip();\n setShowIndicator(isClipActive || !props.hideWhenUnused);\n };\n\n const clipActive =\n !!activeViewport &&\n /* istanbul ignore next */ !!activeViewport.view.getViewClip();\n setShowIndicator(clipActive || !props.hideWhenUnused);\n setHasManipulatorsShown(\n clipActive &&\n /* istanbul ignore next */ !!activeViewport &&\n /* istanbul ignore next */ !!ViewClipDecoration.get(activeViewport)\n );\n\n ViewClipDecorationProvider.create().onActiveClipChanged.addListener(\n onClipChanged\n );\n return () => {\n // Get or create static ViewClipDecorationProvider\n ViewClipDecorationProvider.create().onActiveClipChanged.removeListener(\n onClipChanged\n );\n };\n }, [activeViewport, props.hideWhenUnused, isPopupOpen]);\n\n // istanbul ignore next\n const toggleManipulators = async (e: React.ChangeEvent<HTMLInputElement>) => {\n if (activeViewport) {\n setHasManipulatorsShown(e.target.checked);\n await ViewClipDecorationProvider.create().toggleDecoration(\n activeViewport\n );\n }\n };\n\n // istanbul ignore next\n const handleClear = async () => {\n await IModelApp.tools.run(\n ViewClipClearTool.toolId,\n ViewClipDecorationProvider.create()\n );\n setPopupOpen(false);\n };\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgSectionTool);\n\n return (\n <div className=\"uifw-section-footer-popup-container\">\n {showIndicator && (\n <>\n <div ref={targetDiv} title={toolTip}>\n <StatusBarLabelIndicator\n className={classes}\n iconSpec={iconSpec}\n onClick={() => setPopupOpen(!isPopupOpen)}\n />\n </div>\n <FooterPopup\n target={targetDiv.current}\n onClose={() => setPopupOpen(false)}\n isOpen={isPopupOpen}\n >\n <Dialog titleBar={<TitleBar title={toolTip} />}>\n <div className=\"uifw-sections-footer-contents\">\n <Button onClick={handleClear}>{clearLabel}</Button>\n <div className=\"uifw-uifw-sections-toggle-container\">\n <div className={classnames(\"uifw-sections-label\")}>\n {showHandlesLabel}\n </div>\n <ToggleSwitch\n className=\"uifw-sections-toggle\"\n onChange={toggleManipulators}\n checked={hasManipulatorsShown}\n />\n </div>\n </div>\n </Dialog>\n </FooterPopup>\n </>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"SectionsField.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SectionsField.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 StatusBar\n */\n\nimport \"./SectionsField.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Dialog, FooterPopup, TitleBar } from \"@itwin/appui-layout-react\";\nimport type { ClipEventType, Viewport } from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n ViewClipClearTool,\n ViewClipDecoration,\n ViewClipDecorationProvider,\n} from \"@itwin/core-frontend\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { Button, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport { useActiveViewport } from \"../hooks/useActiveViewport\";\nimport { UiFramework } from \"../UiFramework\";\nimport { StatusBarLabelIndicator } from \"../statusbar/LabelIndicator\";\nimport svgSectionTool from \"@bentley/icons-generic/icons/section-tool.svg\";\n\n/** Sections Status Field Props\n * @beta\n */\nexport interface SectionsStatusFieldProps extends CommonProps {\n hideWhenUnused?: boolean;\n}\n\n/** Status Field for showing section extra tools for clearing and showing manipulators\n * @beta\n */\nexport function SectionsStatusField(props: SectionsStatusFieldProps) {\n const [toolTip, clearLabel, showHandlesLabel] = React.useMemo(\n () => [\n UiFramework.translate(\"tools.sectionTools\"),\n UiFramework.translate(\"tools.sectionClear\"),\n UiFramework.translate(\"tools.sectionShowHandles\"),\n ],\n []\n );\n const activeViewport = useActiveViewport();\n const [showIndicator, setShowIndicator] = React.useState(false);\n const [isPopupOpen, setPopupOpen] = React.useState(false);\n const targetDiv = React.useRef<HTMLDivElement>(null);\n const classes = showIndicator ? \"uifw-field-fade-in\" : \"uifw-field-fade-out\";\n const [hasManipulatorsShown, setHasManipulatorsShown] = React.useState(false);\n\n React.useEffect(() => {\n // istanbul ignore next\n const onClipChanged = (\n viewport: Viewport,\n _eventType: ClipEventType,\n _provider: ViewClipDecorationProvider\n ) => {\n if (viewport !== activeViewport) return;\n\n setHasManipulatorsShown(!!ViewClipDecoration.get(activeViewport));\n const isClipActive = !!activeViewport.view.getViewClip();\n setShowIndicator(isClipActive || !props.hideWhenUnused);\n };\n\n const clipActive =\n !!activeViewport &&\n /* istanbul ignore next */ !!activeViewport.view.getViewClip();\n setShowIndicator(clipActive || !props.hideWhenUnused);\n setHasManipulatorsShown(\n clipActive &&\n /* istanbul ignore next */ !!activeViewport &&\n /* istanbul ignore next */ !!ViewClipDecoration.get(activeViewport)\n );\n\n ViewClipDecorationProvider.create().onActiveClipChanged.addListener(\n onClipChanged\n );\n return () => {\n // Get or create static ViewClipDecorationProvider\n ViewClipDecorationProvider.create().onActiveClipChanged.removeListener(\n onClipChanged\n );\n };\n }, [activeViewport, props.hideWhenUnused, isPopupOpen]);\n\n // istanbul ignore next\n const toggleManipulators = async (e: React.ChangeEvent<HTMLInputElement>) => {\n if (activeViewport) {\n setHasManipulatorsShown(e.target.checked);\n await ViewClipDecorationProvider.create().toggleDecoration(\n activeViewport\n );\n }\n };\n\n // istanbul ignore next\n const handleClear = async () => {\n await IModelApp.tools.run(\n ViewClipClearTool.toolId,\n ViewClipDecorationProvider.create()\n );\n setPopupOpen(false);\n };\n\n return (\n <div className=\"uifw-section-footer-popup-container\">\n {showIndicator && (\n <>\n <div ref={targetDiv} title={toolTip}>\n <StatusBarLabelIndicator\n className={classes}\n iconSpec={svgSectionTool}\n onClick={() => setPopupOpen(!isPopupOpen)}\n />\n </div>\n <FooterPopup\n target={targetDiv.current}\n onClose={() => setPopupOpen(false)}\n isOpen={isPopupOpen}\n >\n <Dialog titleBar={<TitleBar title={toolTip} />}>\n <div className=\"uifw-sections-footer-contents\">\n <Button onClick={handleClear}>{clearLabel}</Button>\n <div className=\"uifw-uifw-sections-toggle-container\">\n <div className={classnames(\"uifw-sections-label\")}>\n {showHandlesLabel}\n </div>\n <ToggleSwitch\n className=\"uifw-sections-toggle\"\n onChange={toggleManipulators}\n checked={hasManipulatorsShown}\n />\n </div>\n </div>\n </Dialog>\n </FooterPopup>\n </>\n )}\n </div>\n );\n}\n"]}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  /// <reference types="react" />
5
5
  import "./SelectionScope.scss";
6
+ import type { ConnectedComponent } from "react-redux";
6
7
  import type { PresentationSelectionScope } from "../redux/SessionState";
7
8
  import type { CommonProps } from "@itwin/core-react";
8
9
  /** Defines properties supported by the SelectionScopeField Component.
@@ -14,19 +15,15 @@ interface SelectionScopeFieldProps extends CommonProps {
14
15
  }
15
16
  /**
16
17
  * Status Field React component. This component is designed to be specified in a status bar definition.
17
- * It is used to display the number of selected items based on the Presentation Rules Selection Manager.
18
- * The IModelApp should call either UiFramework.setIModelConnection or SyncUiEventDispatcher.initializeConnectionEvents
19
- * with the active iModelConnection each time a new iModel is opened so the selection scope data is properly updated
20
- * in the Redux state.
21
- * @public
22
18
  */
23
19
  declare function SelectionScopeFieldComponent(props: SelectionScopeFieldProps): JSX.Element;
24
20
  /**
25
21
  * SelectionScopeField React component. This component is designed to be specified in a status bar definition. It will
26
- * display the active selection scope that is used by the PresentationManager to determine what elements are added to the selection nap mode.
22
+ * display the active selection scope from `UiFramework.getActiveSelectionScope()`, and display the stored list of scopes from
23
+ * `UiFramework.getAvailableSelectionScopes()` to allow the user to change the active selection scope, using `UiFramework.setActiveSelectionScope()`.
27
24
  * This React component is Redux connected.
28
25
  * @public
29
26
  */
30
- export declare const SelectionScopeField: import("react-redux").ConnectedComponent<typeof SelectionScopeFieldComponent, import("react-redux").Omit<SelectionScopeFieldProps, "availableSelectionScopes" | "activeSelectionScope">>;
27
+ export declare const SelectionScopeField: ConnectedComponent<typeof SelectionScopeFieldComponent, CommonProps>;
31
28
  export {};
32
29
  //# sourceMappingURL=SelectionScope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionScope.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SelectionScope.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAEH,OAAO,uBAAuB,CAAC;AAM/B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,UAAU,wBAAyB,SAAQ,WAAW;IACpD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,EAAE,0BAA0B,EAAE,CAAC;CACxD;AAED;;;;;;;GAOG;AACH,iBAAS,4BAA4B,CAAC,KAAK,EAAE,wBAAwB,eAuCpE;AAgBD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,0LAE/B,CAAC"}
1
+ {"version":3,"file":"SelectionScope.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SelectionScope.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAEH,OAAO,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,UAAU,wBAAyB,SAAQ,WAAW;IACpD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,EAAE,0BAA0B,EAAE,CAAC;CACxD;AAED;;GAEG;AACH,iBAAS,4BAA4B,CAAC,KAAK,EAAE,wBAAwB,eAuCpE;AAeD;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAClD,OAAO,4BAA4B,EACnC,WAAW,CAC6C,CAAC"}
@@ -14,11 +14,6 @@ import { Select } from "@itwin/itwinui-react";
14
14
  import { UiFramework } from "../UiFramework";
15
15
  /**
16
16
  * Status Field React component. This component is designed to be specified in a status bar definition.
17
- * It is used to display the number of selected items based on the Presentation Rules Selection Manager.
18
- * The IModelApp should call either UiFramework.setIModelConnection or SyncUiEventDispatcher.initializeConnectionEvents
19
- * with the active iModelConnection each time a new iModel is opened so the selection scope data is properly updated
20
- * in the Redux state.
21
- * @public
22
17
  */
23
18
  function SelectionScopeFieldComponent(props) {
24
19
  const label = UiFramework.translate("selectionScopeField.label");
@@ -49,10 +44,10 @@ function mapStateToProps(state) {
49
44
  availableSelectionScopes: frameworkState.sessionState.availableSelectionScopes,
50
45
  };
51
46
  }
52
- // we declare the variable and export that rather than using export default.
53
47
  /**
54
48
  * SelectionScopeField React component. This component is designed to be specified in a status bar definition. It will
55
- * display the active selection scope that is used by the PresentationManager to determine what elements are added to the selection nap mode.
49
+ * display the active selection scope from `UiFramework.getActiveSelectionScope()`, and display the stored list of scopes from
50
+ * `UiFramework.getAvailableSelectionScopes()` to allow the user to change the active selection scope, using `UiFramework.setActiveSelectionScope()`.
56
51
  * This React component is Redux connected.
57
52
  * @public
58
53
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionScope.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SelectionScope.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAW7C;;;;;;;GAOG;AACH,SAAS,4BAA4B,CAAC,KAA+B;IACnE,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAErE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAC3B,GAAG,EAAE,CACH,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC,CAAC,EACJ,CAAC,KAAK,CAAC,wBAAwB,CAAC,CACjC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE;QAC7C,uBAAuB;QACvB,IAAI,QAAQ,EAAE;YACZ,WAAW,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;SAC/C;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,eAAe,IACd,SAAS,EAAE,UAAU,CACnB,kCAAkC,EAClC,KAAK,CAAC,SAAS,CAChB,EACD,KAAK,EAAE,KAAK,CAAC,KAAK;QAElB,+BAAO,SAAS,EAAC,wCAAwC;YAAE,KAAK;gBAAU;QAC1E,oBAAC,MAAM,IACL,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE,KAAK,CAAC,oBAAoB,EACjC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,iBACf,oCAAoC,EAChD,KAAK,EAAE,OAAO,EACd,IAAI,EAAC,OAAO,GACZ,CACc,CACnB,CAAC;AACJ,CAAC;AAED,+GAA+G;AAC/G,SAAS,eAAe,CAAC,KAAU;IACjC,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,8CAA8C;IAC3G,0BAA0B;IAC1B,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IAEtC,OAAO;QACL,oBAAoB,EAAE,cAAc,CAAC,YAAY,CAAC,oBAAoB;QACtE,wBAAwB,EACtB,cAAc,CAAC,YAAY,CAAC,wBAAwB;KACvD,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CACzD,4BAA4B,CAC7B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module StatusBar\n */\n\nimport \"./SelectionScope.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { FooterIndicator } from \"@itwin/appui-layout-react\";\nimport { Select } from \"@itwin/itwinui-react\";\nimport type { PresentationSelectionScope } from \"../redux/SessionState\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { CommonProps } from \"@itwin/core-react\";\n\n/** Defines properties supported by the SelectionScopeField Component.\n * @public\n */\ninterface SelectionScopeFieldProps extends CommonProps {\n activeSelectionScope: string;\n availableSelectionScopes: PresentationSelectionScope[];\n}\n\n/**\n * Status Field React component. This component is designed to be specified in a status bar definition.\n * It is used to display the number of selected items based on the Presentation Rules Selection Manager.\n * The IModelApp should call either UiFramework.setIModelConnection or SyncUiEventDispatcher.initializeConnectionEvents\n * with the active iModelConnection each time a new iModel is opened so the selection scope data is properly updated\n * in the Redux state.\n * @public\n */\nfunction SelectionScopeFieldComponent(props: SelectionScopeFieldProps) {\n const label = UiFramework.translate(\"selectionScopeField.label\");\n const toolTip = UiFramework.translate(\"selectionScopeField.toolTip\");\n\n const options = React.useMemo(\n () =>\n props.availableSelectionScopes.map((scope) => {\n return { value: scope.id, label: scope.label };\n }),\n [props.availableSelectionScopes]\n );\n\n const updateSelectValue = (newValue: string) => {\n // istanbul ignore else\n if (newValue) {\n UiFramework.setActiveSelectionScope(newValue);\n }\n };\n\n return (\n <FooterIndicator\n className={classnames(\n \"uifw-statusFields-selectionScope\",\n props.className\n )}\n style={props.style}\n >\n <label className=\"uifw-statusFields-selectionScope-label\">{label}:</label>\n <Select\n className=\"uifw-statusFields-selectionScope-selector\"\n value={props.activeSelectionScope}\n options={options}\n onChange={updateSelectValue}\n data-testid=\"components-selectionScope-selector\"\n title={toolTip}\n size=\"small\"\n />\n </FooterIndicator>\n );\n}\n\n/** Function used by Redux to map state data in Redux store to props that are used to render this component. */\nfunction mapStateToProps(state: any) {\n const frameworkState = state[UiFramework.frameworkStateKey]; // since app sets up key, don't hard-code name\n /* istanbul ignore next */\n if (!frameworkState) return undefined;\n\n return {\n activeSelectionScope: frameworkState.sessionState.activeSelectionScope,\n availableSelectionScopes:\n frameworkState.sessionState.availableSelectionScopes,\n };\n}\n\n// we declare the variable and export that rather than using export default.\n/**\n * SelectionScopeField React component. This component is designed to be specified in a status bar definition. It will\n * display the active selection scope that is used by the PresentationManager to determine what elements are added to the selection nap mode.\n * This React component is Redux connected.\n * @public\n */\nexport const SelectionScopeField = connect(mapStateToProps)(\n SelectionScopeFieldComponent\n);\n"]}
1
+ {"version":3,"file":"SelectionScope.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SelectionScope.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAW7C;;GAEG;AACH,SAAS,4BAA4B,CAAC,KAA+B;IACnE,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAErE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAC3B,GAAG,EAAE,CACH,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC,CAAC,EACJ,CAAC,KAAK,CAAC,wBAAwB,CAAC,CACjC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE;QAC7C,uBAAuB;QACvB,IAAI,QAAQ,EAAE;YACZ,WAAW,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;SAC/C;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,eAAe,IACd,SAAS,EAAE,UAAU,CACnB,kCAAkC,EAClC,KAAK,CAAC,SAAS,CAChB,EACD,KAAK,EAAE,KAAK,CAAC,KAAK;QAElB,+BAAO,SAAS,EAAC,wCAAwC;YAAE,KAAK;gBAAU;QAC1E,oBAAC,MAAM,IACL,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE,KAAK,CAAC,oBAAoB,EACjC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,iBACf,oCAAoC,EAChD,KAAK,EAAE,OAAO,EACd,IAAI,EAAC,OAAO,GACZ,CACc,CACnB,CAAC;AACJ,CAAC;AAED,+GAA+G;AAC/G,SAAS,eAAe,CAAC,KAAU;IACjC,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,8CAA8C;IAC3G,0BAA0B;IAC1B,IAAI,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IAEtC,OAAO;QACL,oBAAoB,EAAE,cAAc,CAAC,YAAY,CAAC,oBAAoB;QACtE,wBAAwB,EACtB,cAAc,CAAC,YAAY,CAAC,wBAAwB;KACvD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAG5B,OAAO,CAAC,eAAe,CAAC,CAAC,4BAA4B,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module StatusBar\n */\n\nimport \"./SelectionScope.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { ConnectedComponent } from \"react-redux\";\nimport { connect } from \"react-redux\";\nimport { FooterIndicator } from \"@itwin/appui-layout-react\";\nimport { Select } from \"@itwin/itwinui-react\";\nimport type { PresentationSelectionScope } from \"../redux/SessionState\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { CommonProps } from \"@itwin/core-react\";\n\n/** Defines properties supported by the SelectionScopeField Component.\n * @public\n */\ninterface SelectionScopeFieldProps extends CommonProps {\n activeSelectionScope: string;\n availableSelectionScopes: PresentationSelectionScope[];\n}\n\n/**\n * Status Field React component. This component is designed to be specified in a status bar definition.\n */\nfunction SelectionScopeFieldComponent(props: SelectionScopeFieldProps) {\n const label = UiFramework.translate(\"selectionScopeField.label\");\n const toolTip = UiFramework.translate(\"selectionScopeField.toolTip\");\n\n const options = React.useMemo(\n () =>\n props.availableSelectionScopes.map((scope) => {\n return { value: scope.id, label: scope.label };\n }),\n [props.availableSelectionScopes]\n );\n\n const updateSelectValue = (newValue: string) => {\n // istanbul ignore else\n if (newValue) {\n UiFramework.setActiveSelectionScope(newValue);\n }\n };\n\n return (\n <FooterIndicator\n className={classnames(\n \"uifw-statusFields-selectionScope\",\n props.className\n )}\n style={props.style}\n >\n <label className=\"uifw-statusFields-selectionScope-label\">{label}:</label>\n <Select\n className=\"uifw-statusFields-selectionScope-selector\"\n value={props.activeSelectionScope}\n options={options}\n onChange={updateSelectValue}\n data-testid=\"components-selectionScope-selector\"\n title={toolTip}\n size=\"small\"\n />\n </FooterIndicator>\n );\n}\n\n/** Function used by Redux to map state data in Redux store to props that are used to render this component. */\nfunction mapStateToProps(state: any) {\n const frameworkState = state[UiFramework.frameworkStateKey]; // since app sets up key, don't hard-code name\n /* istanbul ignore next */\n if (!frameworkState) return undefined;\n\n return {\n activeSelectionScope: frameworkState.sessionState.activeSelectionScope,\n availableSelectionScopes:\n frameworkState.sessionState.availableSelectionScopes,\n };\n}\n\n/**\n * SelectionScopeField React component. This component is designed to be specified in a status bar definition. It will\n * display the active selection scope from `UiFramework.getActiveSelectionScope()`, and display the stored list of scopes from\n * `UiFramework.getAvailableSelectionScopes()` to allow the user to change the active selection scope, using `UiFramework.setActiveSelectionScope()`.\n * This React component is Redux connected.\n * @public\n */\nexport const SelectionScopeField: ConnectedComponent<\n typeof SelectionScopeFieldComponent,\n CommonProps\n> = connect(mapStateToProps)(SelectionScopeFieldComponent);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SnapMode.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SnapMode.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAOH,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,mBAAmB,CAAC;AAc/D;GACG;AACH,UAAU,kBAAmB,SAAQ,WAAW;IAC9C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAsCD;;;GAGG;AACH,iBAAS,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,eAuFxD;AAYD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,qIAAmD,CAAC"}
1
+ {"version":3,"file":"SnapMode.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SnapMode.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAOH,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,mBAAmB,CAAC;AAa/D;GACG;AACH,UAAU,kBAAmB,SAAQ,WAAW;IAC9C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAqCD;;;GAGG;AACH,iBAAS,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,eAuFxD;AAYD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,qIAAmD,CAAC"}
@@ -12,7 +12,6 @@ import { Snap, SnapModePanel } from "@itwin/appui-layout-react";
12
12
  import { UiFramework } from "../UiFramework";
13
13
  import { Icon } from "@itwin/core-react";
14
14
  import { StatusBarLabelIndicator } from "../statusbar/LabelIndicator";
15
- import { IconSpecUtilities } from "@itwin/appui-abstract";
16
15
  import snapModeKeypoint from "@bentley/icons-generic/icons/snaps.svg";
17
16
  import snapModeIntersection from "@bentley/icons-generic/icons/snaps-intersection.svg";
18
17
  import snapModeCenter from "@bentley/icons-generic/icons/snaps-center.svg";
@@ -21,29 +20,28 @@ import snapModeOrigin from "@bentley/icons-generic/icons/snaps-origin.svg";
21
20
  import snapModeMidpoint from "@bentley/icons-generic/icons/snaps-midpoint.svg";
22
21
  import snapModeBisector from "@bentley/icons-generic/icons/snaps-bisector.svg";
23
22
  function getIconFromIconName(iconName) {
24
- let iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeKeypoint);
23
+ let iconSpec = snapModeKeypoint;
25
24
  switch (iconName) {
26
25
  case "snaps":
27
- iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeKeypoint);
26
+ iconSpec = snapModeKeypoint;
28
27
  break;
29
28
  case "snaps-intersection":
30
- iconSpec =
31
- IconSpecUtilities.createWebComponentIconSpec(snapModeIntersection);
29
+ iconSpec = snapModeIntersection;
32
30
  break;
33
31
  case "snaps-center":
34
- iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeCenter);
32
+ iconSpec = snapModeCenter;
35
33
  break;
36
34
  case "snaps-nearest":
37
- iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeNearest);
35
+ iconSpec = snapModeNearest;
38
36
  break;
39
37
  case "snaps-origin":
40
- iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeOrigin);
38
+ iconSpec = snapModeOrigin;
41
39
  break;
42
40
  case "snaps-midpoint":
43
- iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeMidpoint);
41
+ iconSpec = snapModeMidpoint;
44
42
  break;
45
43
  case "snaps-bisector":
46
- iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeBisector);
44
+ iconSpec = snapModeBisector;
47
45
  break;
48
46
  }
49
47
  return iconSpec;
@@ -1 +1 @@
1
- {"version":3,"file":"SnapMode.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SnapMode.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 StatusBar\n */\n\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { SnapMode } from \"@itwin/core-frontend\";\nimport { Snap, SnapModePanel } from \"@itwin/appui-layout-react\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { CommonProps, IconSpec } from \"@itwin/core-react\";\nimport { Icon } from \"@itwin/core-react\";\nimport { StatusBarLabelIndicator } from \"../statusbar/LabelIndicator\";\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\nimport snapModeKeypoint from \"@bentley/icons-generic/icons/snaps.svg\";\nimport snapModeIntersection from \"@bentley/icons-generic/icons/snaps-intersection.svg\";\nimport snapModeCenter from \"@bentley/icons-generic/icons/snaps-center.svg\";\nimport snapModeNearest from \"@bentley/icons-generic/icons/snaps-nearest.svg\";\nimport snapModeOrigin from \"@bentley/icons-generic/icons/snaps-origin.svg\";\nimport snapModeMidpoint from \"@bentley/icons-generic/icons/snaps-midpoint.svg\";\nimport snapModeBisector from \"@bentley/icons-generic/icons/snaps-bisector.svg\";\n\n// cSpell:ignore multione\n\n/** Defines properties supported by the SnapMode Field Component.\n */\ninterface SnapModeFieldProps extends CommonProps {\n snapMode: number;\n}\n\n/** Define the properties that will be used to represent the available snap modes. */\ninterface SnapModeFieldEntry {\n label: string;\n value: number;\n iconName: string;\n}\n\nfunction getIconFromIconName(iconName: string): IconSpec {\n let iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeKeypoint);\n switch (iconName) {\n case \"snaps\":\n iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeKeypoint);\n break;\n case \"snaps-intersection\":\n iconSpec =\n IconSpecUtilities.createWebComponentIconSpec(snapModeIntersection);\n break;\n case \"snaps-center\":\n iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeCenter);\n break;\n case \"snaps-nearest\":\n iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeNearest);\n break;\n case \"snaps-origin\":\n iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeOrigin);\n break;\n case \"snaps-midpoint\":\n iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeMidpoint);\n break;\n case \"snaps-bisector\":\n iconSpec = IconSpecUtilities.createWebComponentIconSpec(snapModeBisector);\n break;\n }\n return iconSpec;\n}\n\n/**\n * Snap Mode Field React component. This component is designed to be specified in a status bar definition. It will\n * display the active snap mode that AccuSnap will use and allow the user to select a new snap mode.\n */\nfunction SnapModeFieldComponent(props: SnapModeFieldProps) {\n const snapModes: SnapModeFieldEntry[] = React.useMemo(\n () => [\n {\n label: UiFramework.translate(\"snapModeField.keypoint\"),\n value: SnapMode.NearestKeypoint as number,\n iconName: \"snaps\",\n },\n {\n label: UiFramework.translate(\"snapModeField.intersection\"),\n value: SnapMode.Intersection as number,\n iconName: \"snaps-intersection\",\n },\n {\n label: UiFramework.translate(\"snapModeField.center\"),\n value: SnapMode.Center as number,\n iconName: \"snaps-center\",\n },\n {\n label: UiFramework.translate(\"snapModeField.nearest\"),\n value: SnapMode.Nearest as number,\n iconName: \"snaps-nearest\",\n },\n {\n label: UiFramework.translate(\"snapModeField.origin\"),\n value: SnapMode.Origin as number,\n iconName: \"snaps-origin\",\n },\n {\n label: UiFramework.translate(\"snapModeField.midpoint\"),\n value: SnapMode.MidPoint as number,\n iconName: \"snaps-midpoint\",\n },\n {\n label: UiFramework.translate(\"snapModeField.bisector\"),\n value: SnapMode.Bisector as number,\n iconName: \"snaps-bisector\",\n },\n ],\n []\n );\n\n /** Return icon class name for a specific snapMode. */\n const getSnapModeIconNameFromMode = React.useCallback(\n function (snapMode: number): string {\n for (const mode of snapModes) {\n if (mode.value === snapMode) return mode.iconName;\n }\n\n /* istanbul ignore else */\n if (snapMode > 0) return \"snaps-multione\";\n\n /* istanbul ignore next */\n return \"placeholder\";\n },\n [snapModes]\n );\n\n const title = UiFramework.translate(\"snapModeField.snapMode\");\n return (\n <StatusBarLabelIndicator\n iconSpec={getIconFromIconName(\n getSnapModeIconNameFromMode(props.snapMode)\n )}\n title={title}\n label={title}\n popup={\n <SnapModePanel title={title}>\n {snapModes.map((item, index) => (\n <Snap\n key={`SM_${index}`}\n onClick={() => UiFramework.setAccudrawSnapMode(item.value)}\n isActive={(props.snapMode & item.value) === item.value}\n icon={\n <Icon\n className={`icon`}\n iconSpec={getIconFromIconName(item.iconName)}\n />\n }\n >\n {item.label}\n </Snap>\n ))}\n </SnapModePanel>\n }\n />\n );\n}\n\n/** Function used by Redux to map state data in Redux store to props that are used to render this component. */\nfunction mapStateToProps(state: any) {\n const frameworkState = state[UiFramework.frameworkStateKey]; // since app sets up key, don't hard-code name\n /* istanbul ignore next */\n if (!frameworkState) return undefined;\n\n return { snapMode: frameworkState.configurableUiState.snapMode };\n}\n\n// we declare the variable and export that rather than using export default.\n/**\n * Snap Mode Field React component. This component is designed to be specified in a status bar definition. It will\n * display the active snap mode that AccuSnap will use and allow the user to select a new snap mode.\n * This Field React component is Redux connected.\n * @public\n */\nexport const SnapModeField = connect(mapStateToProps)(SnapModeFieldComponent);\n"]}
1
+ {"version":3,"file":"SnapMode.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SnapMode.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 StatusBar\n */\n\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { SnapMode } from \"@itwin/core-frontend\";\nimport { Snap, SnapModePanel } from \"@itwin/appui-layout-react\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { CommonProps, IconSpec } from \"@itwin/core-react\";\nimport { Icon } from \"@itwin/core-react\";\nimport { StatusBarLabelIndicator } from \"../statusbar/LabelIndicator\";\nimport snapModeKeypoint from \"@bentley/icons-generic/icons/snaps.svg\";\nimport snapModeIntersection from \"@bentley/icons-generic/icons/snaps-intersection.svg\";\nimport snapModeCenter from \"@bentley/icons-generic/icons/snaps-center.svg\";\nimport snapModeNearest from \"@bentley/icons-generic/icons/snaps-nearest.svg\";\nimport snapModeOrigin from \"@bentley/icons-generic/icons/snaps-origin.svg\";\nimport snapModeMidpoint from \"@bentley/icons-generic/icons/snaps-midpoint.svg\";\nimport snapModeBisector from \"@bentley/icons-generic/icons/snaps-bisector.svg\";\n\n// cSpell:ignore multione\n\n/** Defines properties supported by the SnapMode Field Component.\n */\ninterface SnapModeFieldProps extends CommonProps {\n snapMode: number;\n}\n\n/** Define the properties that will be used to represent the available snap modes. */\ninterface SnapModeFieldEntry {\n label: string;\n value: number;\n iconName: string;\n}\n\nfunction getIconFromIconName(iconName: string): IconSpec {\n let iconSpec = snapModeKeypoint;\n switch (iconName) {\n case \"snaps\":\n iconSpec = snapModeKeypoint;\n break;\n case \"snaps-intersection\":\n iconSpec = snapModeIntersection;\n break;\n case \"snaps-center\":\n iconSpec = snapModeCenter;\n break;\n case \"snaps-nearest\":\n iconSpec = snapModeNearest;\n break;\n case \"snaps-origin\":\n iconSpec = snapModeOrigin;\n break;\n case \"snaps-midpoint\":\n iconSpec = snapModeMidpoint;\n break;\n case \"snaps-bisector\":\n iconSpec = snapModeBisector;\n break;\n }\n return iconSpec;\n}\n\n/**\n * Snap Mode Field React component. This component is designed to be specified in a status bar definition. It will\n * display the active snap mode that AccuSnap will use and allow the user to select a new snap mode.\n */\nfunction SnapModeFieldComponent(props: SnapModeFieldProps) {\n const snapModes: SnapModeFieldEntry[] = React.useMemo(\n () => [\n {\n label: UiFramework.translate(\"snapModeField.keypoint\"),\n value: SnapMode.NearestKeypoint as number,\n iconName: \"snaps\",\n },\n {\n label: UiFramework.translate(\"snapModeField.intersection\"),\n value: SnapMode.Intersection as number,\n iconName: \"snaps-intersection\",\n },\n {\n label: UiFramework.translate(\"snapModeField.center\"),\n value: SnapMode.Center as number,\n iconName: \"snaps-center\",\n },\n {\n label: UiFramework.translate(\"snapModeField.nearest\"),\n value: SnapMode.Nearest as number,\n iconName: \"snaps-nearest\",\n },\n {\n label: UiFramework.translate(\"snapModeField.origin\"),\n value: SnapMode.Origin as number,\n iconName: \"snaps-origin\",\n },\n {\n label: UiFramework.translate(\"snapModeField.midpoint\"),\n value: SnapMode.MidPoint as number,\n iconName: \"snaps-midpoint\",\n },\n {\n label: UiFramework.translate(\"snapModeField.bisector\"),\n value: SnapMode.Bisector as number,\n iconName: \"snaps-bisector\",\n },\n ],\n []\n );\n\n /** Return icon class name for a specific snapMode. */\n const getSnapModeIconNameFromMode = React.useCallback(\n function (snapMode: number): string {\n for (const mode of snapModes) {\n if (mode.value === snapMode) return mode.iconName;\n }\n\n /* istanbul ignore else */\n if (snapMode > 0) return \"snaps-multione\";\n\n /* istanbul ignore next */\n return \"placeholder\";\n },\n [snapModes]\n );\n\n const title = UiFramework.translate(\"snapModeField.snapMode\");\n return (\n <StatusBarLabelIndicator\n iconSpec={getIconFromIconName(\n getSnapModeIconNameFromMode(props.snapMode)\n )}\n title={title}\n label={title}\n popup={\n <SnapModePanel title={title}>\n {snapModes.map((item, index) => (\n <Snap\n key={`SM_${index}`}\n onClick={() => UiFramework.setAccudrawSnapMode(item.value)}\n isActive={(props.snapMode & item.value) === item.value}\n icon={\n <Icon\n className={`icon`}\n iconSpec={getIconFromIconName(item.iconName)}\n />\n }\n >\n {item.label}\n </Snap>\n ))}\n </SnapModePanel>\n }\n />\n );\n}\n\n/** Function used by Redux to map state data in Redux store to props that are used to render this component. */\nfunction mapStateToProps(state: any) {\n const frameworkState = state[UiFramework.frameworkStateKey]; // since app sets up key, don't hard-code name\n /* istanbul ignore next */\n if (!frameworkState) return undefined;\n\n return { snapMode: frameworkState.configurableUiState.snapMode };\n}\n\n// we declare the variable and export that rather than using export default.\n/**\n * Snap Mode Field React component. This component is designed to be specified in a status bar definition. It will\n * display the active snap mode that AccuSnap will use and allow the user to select a new snap mode.\n * This Field React component is Redux connected.\n * @public\n */\nexport const SnapModeField = connect(mapStateToProps)(SnapModeFieldComponent);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolAssistanceField.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolAssistanceField.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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"}
@@ -10,7 +10,6 @@ import classnames from "classnames";
10
10
  import * as React from "react";
11
11
  import { Logger } from "@itwin/core-bentley";
12
12
  import { IModelApp, ToolAssistanceImage, ToolAssistanceInputMethod, } from "@itwin/core-frontend";
13
- import { IconSpecUtilities } from "@itwin/appui-abstract";
14
13
  import { FillCentered, Icon, LocalStateStorage, UiCore, UiStateEntry, UiStateStorageStatus, } from "@itwin/core-react";
15
14
  import { FooterPopup, ToolAssistanceInstruction as NZ_ToolAssistanceInstruction, ToolAssistance, ToolAssistanceDialog, ToolAssistanceItem, ToolAssistanceSeparator, } from "@itwin/appui-layout-react";
16
15
  import { Tabs, ToggleSwitch } from "@itwin/itwinui-react";
@@ -306,7 +305,7 @@ class ToolAssistanceField extends React.Component {
306
305
  }
307
306
  else if (typeof instruction.image === "string") {
308
307
  if (instruction.image.length > 0) {
309
- const svgSource = IconSpecUtilities.getWebComponentSource(instruction.image);
308
+ const svgSource = getWebComponentSource(instruction.image);
310
309
  const className = svgSource !== undefined
311
310
  ? "uifw-toolassistance-svg"
312
311
  : "uifw-toolassistance-icon-large";
@@ -399,10 +398,9 @@ class ToolAssistanceField extends React.Component {
399
398
  : "uifw-toolassistance-svg-wide";
400
399
  break;
401
400
  }
402
- const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgImage);
403
401
  image = (React.createElement("div", { className: className }, svgImage && (
404
402
  // istanbul ignore next
405
- React.createElement(Icon, { iconSpec: iconSpec }))));
403
+ React.createElement(Icon, { iconSpec: svgImage }))));
406
404
  }
407
405
  return image;
408
406
  }
@@ -455,4 +453,10 @@ ToolAssistanceField.defaultProps = {
455
453
  defaultPromptAtCursor: false,
456
454
  };
457
455
  export { ToolAssistanceField };
456
+ function getWebComponentSource(iconSpec) {
457
+ if (iconSpec.startsWith("webSvg:") && iconSpec.length > 7) {
458
+ return iconSpec.slice(7);
459
+ }
460
+ return undefined;
461
+ }
458
462
  //# sourceMappingURL=ToolAssistanceField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolAssistanceField.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport \"./ToolAssistanceField.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type {\n ToolAssistanceInstruction,\n ToolAssistanceInstructions,\n ToolAssistanceKeyboardInfo,\n ToolAssistanceSection,\n} from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n ToolAssistanceImage,\n ToolAssistanceInputMethod,\n} from \"@itwin/core-frontend\";\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\nimport type {\n CommonProps,\n UiStateStorage,\n UiStateStorageResult,\n} from \"@itwin/core-react\";\nimport {\n FillCentered,\n Icon,\n LocalStateStorage,\n UiCore,\n UiStateEntry,\n UiStateStorageStatus,\n} from \"@itwin/core-react\";\nimport {\n FooterPopup,\n ToolAssistanceInstruction as NZ_ToolAssistanceInstruction,\n ToolAssistance,\n ToolAssistanceDialog,\n ToolAssistanceItem,\n ToolAssistanceSeparator,\n} from \"@itwin/appui-layout-react\";\nimport { Tabs, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport { CursorPrompt } from \"../../cursor/cursorprompt/CursorPrompt\";\nimport type { ToolIconChangedEventArgs } from \"../../framework/FrameworkFrontstages\";\nimport type { ToolAssistanceChangedEventArgs } from \"../../messages/MessageManager\";\nimport { MessageManager } from \"../../messages/MessageManager\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { UiStateStorageContext } from \"../../uistate/useUiStateStorage\";\n\nimport acceptPointIcon from \"./accept-point.svg\";\nimport cursorClickIcon from \"./cursor-click.svg\";\nimport oneTouchDragIcon from \"./gesture-one-finger-drag.svg\";\nimport oneTouchDoubleTapIcon from \"./gesture-one-finger-tap-double.svg\";\nimport oneTouchTapIcon from \"./gesture-one-finger-tap.svg\";\nimport twoTouchPinchIcon from \"./gesture-pinch.svg\";\nimport twoTouchDragIcon from \"./gesture-two-finger-drag.svg\";\nimport twoTouchTapIcon from \"./gesture-two-finger-tap.svg\";\nimport clickLeftDragIcon from \"./mouse-click-left-drag.svg\";\nimport clickLeftIcon from \"./mouse-click-left.svg\";\nimport clickRightDragIcon from \"./mouse-click-right-drag.svg\";\nimport clickRightIcon from \"./mouse-click-right.svg\";\nimport clickMouseWheelDragIcon from \"./mouse-click-wheel-drag.svg\";\nimport mouseWheelClickIcon from \"./mouse-click-wheel.svg\";\nimport touchCursorDragIcon from \"./touch-cursor-pan.svg\";\nimport touchCursorTapIcon from \"./touch-cursor-point.svg\";\nimport { StatusBarDialog } from \"../../statusbar/dialog/Dialog\";\nimport { SvgClose, SvgPin } from \"@itwin/itwinui-icons-react\";\n\n// cSpell:ignore cursorprompt\n\n/** Properties of [[ToolAssistanceField]] component.\n * @public\n */\nexport interface ToolAssistanceFieldProps extends CommonProps {\n /** Indicates whether to include promptAtCursor Checkbox. Defaults to true. */\n includePromptAtCursor: boolean;\n /** Optional parameter for persistent UI settings. Defaults to UiStateStorageContext.\n */\n uiStateStorage?: UiStateStorage;\n /** Cursor Prompt Timeout period. Defaults to 5000. */\n cursorPromptTimeout: number;\n /** Fade Out the Cursor Prompt when closed. */\n fadeOutCursorPrompt: boolean;\n /** Indicates whether to show promptAtCursor by default. Defaults to false. */\n defaultPromptAtCursor: boolean;\n}\n\n/** Default properties of [[ToolAssistanceField]] component.\n * @internal\n */\nexport type ToolAssistanceFieldDefaultProps = Pick<\n ToolAssistanceFieldProps,\n | \"includePromptAtCursor\"\n | \"uiStateStorage\"\n | \"cursorPromptTimeout\"\n | \"fadeOutCursorPrompt\"\n | \"defaultPromptAtCursor\"\n>;\n\n/** @internal */\ninterface ToolAssistanceFieldState {\n instructions: ToolAssistanceInstructions | undefined;\n toolIconSpec: string;\n showPromptAtCursor: boolean;\n includeMouseInstructions: boolean;\n includeTouchInstructions: boolean;\n showMouseTouchTabs: boolean;\n showMouseInstructions: boolean;\n showTouchInstructions: boolean;\n mouseTouchTabIndex: number;\n isPinned: boolean;\n isOpen: boolean;\n}\n\n/** Tool Assistance Field React component.\n * @public\n */\nexport class ToolAssistanceField extends React.Component<\n ToolAssistanceFieldProps,\n ToolAssistanceFieldState\n> {\n /** @internal */\n public static override contextType = UiStateStorageContext;\n /** @internal */\n public declare context: React.ContextType<typeof UiStateStorageContext>;\n\n private static _toolAssistanceKey = \"ToolAssistance\";\n private static _showPromptAtCursorKey = \"showPromptAtCursor\";\n private static _mouseTouchTabIndexKey = \"mouseTouchTabIndex\";\n private _showPromptAtCursorSetting: UiStateEntry<boolean>;\n private _mouseTouchTabIndexSetting: UiStateEntry<number>;\n private _target: HTMLElement | null = null;\n private _indicator = React.createRef<HTMLDivElement>();\n private _cursorPrompt: CursorPrompt;\n private _isMounted = false;\n private _uiSettingsStorage: UiStateStorage;\n\n /** @internal */\n public static readonly defaultProps: ToolAssistanceFieldDefaultProps = {\n includePromptAtCursor: true,\n cursorPromptTimeout: 5000,\n fadeOutCursorPrompt: true,\n defaultPromptAtCursor: false,\n };\n\n /** @internal */\n constructor(p: ToolAssistanceFieldProps) {\n super(p);\n\n const mobile = UiFramework.isMobile();\n\n this.state = {\n instructions: undefined,\n toolIconSpec: \"\",\n showPromptAtCursor: p.defaultPromptAtCursor,\n includeMouseInstructions: !mobile,\n includeTouchInstructions: true,\n showMouseTouchTabs: false,\n showMouseInstructions: false,\n showTouchInstructions: false,\n mouseTouchTabIndex: 0,\n isPinned: false,\n isOpen: false,\n };\n\n this._uiSettingsStorage = new LocalStateStorage();\n this._cursorPrompt = new CursorPrompt(\n this.props.cursorPromptTimeout,\n this.props.fadeOutCursorPrompt\n );\n this._showPromptAtCursorSetting = new UiStateEntry(\n ToolAssistanceField._toolAssistanceKey,\n ToolAssistanceField._showPromptAtCursorKey,\n () => this.state.showPromptAtCursor\n );\n this._mouseTouchTabIndexSetting = new UiStateEntry(\n ToolAssistanceField._toolAssistanceKey,\n ToolAssistanceField._mouseTouchTabIndexKey,\n () => this.state.mouseTouchTabIndex\n );\n }\n\n /** @internal */\n public override async componentDidMount() {\n this._isMounted = true;\n MessageManager.onToolAssistanceChangedEvent.addListener(\n this._handleToolAssistanceChangedEvent\n );\n UiFramework.frontstages.onToolIconChangedEvent.addListener(\n this._handleToolIconChangedEvent\n );\n\n // istanbul ignore else\n if (this.props.uiStateStorage)\n this._uiSettingsStorage = this.props.uiStateStorage;\n else if (this.context) this._uiSettingsStorage = this.context;\n\n await this.restoreSettings();\n }\n\n /** @internal */\n public override componentWillUnmount() {\n this._isMounted = false;\n MessageManager.onToolAssistanceChangedEvent.removeListener(\n this._handleToolAssistanceChangedEvent\n );\n UiFramework.frontstages.onToolIconChangedEvent.removeListener(\n this._handleToolIconChangedEvent\n );\n }\n\n private async restoreSettings() {\n let getShowPromptAtCursor: Promise<UiStateStorageResult> | undefined;\n // istanbul ignore else\n if (this.props.includePromptAtCursor) {\n getShowPromptAtCursor = this._showPromptAtCursorSetting.getSetting(\n this._uiSettingsStorage\n );\n }\n const getMouseTouchTabIndex = this._mouseTouchTabIndexSetting.getSetting(\n this._uiSettingsStorage\n );\n const [showPromptAtCursorResult, mouseTouchTabIndexResult] =\n await Promise.all([getShowPromptAtCursor, getMouseTouchTabIndex]);\n\n // istanbul ignore else\n if (\n showPromptAtCursorResult !== undefined &&\n showPromptAtCursorResult.status === UiStateStorageStatus.Success\n ) {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ showPromptAtCursor: showPromptAtCursorResult.setting });\n }\n\n // istanbul ignore else\n if (mouseTouchTabIndexResult.status === UiStateStorageStatus.Success) {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ mouseTouchTabIndex: mouseTouchTabIndexResult.setting });\n }\n }\n\n private _handleToolAssistanceChangedEvent = (\n args: ToolAssistanceChangedEventArgs\n ): void => {\n let showMouseTouchTabs = false;\n let showMouseInstructions = false;\n let showTouchInstructions = false;\n\n if (args.instructions && args.instructions.sections) {\n const hasMouseInstructions = args.instructions.sections.some(\n (section: ToolAssistanceSection) => {\n return section.instructions.some(\n (instruction: ToolAssistanceInstruction) =>\n this._isMouseInstruction(instruction)\n );\n }\n );\n const hasTouchInstructions = args.instructions.sections.some(\n (section: ToolAssistanceSection) => {\n return section.instructions.some(\n (instruction: ToolAssistanceInstruction) =>\n this._isTouchInstruction(instruction)\n );\n }\n );\n\n if (\n this.state.includeMouseInstructions &&\n this.state.includeTouchInstructions &&\n hasMouseInstructions &&\n hasTouchInstructions\n ) {\n showMouseTouchTabs = true;\n showMouseInstructions = this.state.mouseTouchTabIndex === 0;\n showTouchInstructions = this.state.mouseTouchTabIndex === 1;\n } else {\n if (this.state.includeMouseInstructions && hasMouseInstructions)\n showMouseInstructions = true;\n else if (this.state.includeTouchInstructions && hasTouchInstructions)\n showTouchInstructions = true;\n }\n }\n\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n instructions: args.instructions,\n showMouseTouchTabs,\n showMouseInstructions,\n showTouchInstructions,\n },\n () => {\n this._showCursorPrompt();\n }\n );\n };\n\n private _isBothInstruction = (instruction: ToolAssistanceInstruction) => {\n return (\n instruction.inputMethod === undefined ||\n instruction.inputMethod === ToolAssistanceInputMethod.Both\n );\n };\n\n private _isMouseInstruction = (instruction: ToolAssistanceInstruction) =>\n instruction.inputMethod === ToolAssistanceInputMethod.Mouse;\n\n private _isTouchInstruction = (instruction: ToolAssistanceInstruction) =>\n instruction.inputMethod === ToolAssistanceInputMethod.Touch;\n\n private _handleToolIconChangedEvent = (\n args: ToolIconChangedEventArgs\n ): void => {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ toolIconSpec: args.iconSpec }, () => {\n this._showCursorPrompt();\n });\n };\n\n private _showCursorPrompt() {\n if (this.state.showPromptAtCursor && this.state.instructions)\n this._cursorPrompt.display(\n this.state.toolIconSpec,\n this.state.instructions.mainInstruction\n );\n }\n\n private _sectionHasDisplayableInstructions(\n section: ToolAssistanceSection\n ): boolean {\n const displayableInstructions = this._getDisplayableInstructions(section);\n return displayableInstructions.length > 0;\n }\n\n private _getDisplayableInstructions(\n section: ToolAssistanceSection\n ): ToolAssistanceInstruction[] {\n const displayableInstructions = section.instructions.filter(\n (instruction: ToolAssistanceInstruction) => {\n return (\n this._isBothInstruction(instruction) ||\n (this.state.showMouseInstructions &&\n this._isMouseInstruction(instruction)) ||\n (this.state.showTouchInstructions &&\n this._isTouchInstruction(instruction))\n );\n }\n );\n return displayableInstructions;\n }\n\n private _handleMouseTouchTab = async (index: number) => {\n const showMouseInstructions = index === 0;\n const showTouchInstructions = index === 1;\n\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n mouseTouchTabIndex: index,\n showMouseInstructions,\n showTouchInstructions,\n },\n async () => {\n await this._mouseTouchTabIndexSetting.saveSetting(\n this._uiSettingsStorage\n );\n }\n );\n };\n\n /** @internal */\n public override render(): React.ReactNode {\n const { instructions } = this.state;\n const dialogTitle = IModelApp.toolAdmin.activeTool\n ? /* istanbul ignore next */ IModelApp.toolAdmin.activeTool.flyover\n : UiFramework.translate(\"toolAssistance.title\");\n const mouseLabel = UiFramework.translate(\"toolAssistance.mouse\");\n const touchLabel = UiFramework.translate(\"toolAssistance.touch\");\n let prompt = \"\";\n let tooltip = \"\";\n let toolIcon: React.ReactNode;\n let dialogContent: React.ReactNode;\n\n if (instructions) {\n prompt = instructions.mainInstruction.text;\n toolIcon = <Icon iconSpec={this.state.toolIconSpec} />;\n\n let displayableSections: ToolAssistanceSection[] | undefined;\n if (instructions.sections) {\n displayableSections = instructions.sections.filter(\n (section: ToolAssistanceSection) =>\n this._sectionHasDisplayableInstructions(section)\n );\n }\n\n dialogContent = (\n <div>\n {this.state.showMouseTouchTabs && (\n <Tabs\n orientation=\"horizontal\"\n tabsClassName=\"uifw-toolAssistance-tabs\"\n labels={[mouseLabel, touchLabel]}\n activeIndex={this.state.mouseTouchTabIndex}\n onTabSelected={this._handleMouseTouchTab}\n />\n )}\n\n <div className=\"uifw-toolAssistance-content\">\n <NZ_ToolAssistanceInstruction\n key=\"main\"\n image={ToolAssistanceField.getInstructionImage(\n instructions.mainInstruction\n )}\n text={instructions.mainInstruction.text}\n isNew={instructions.mainInstruction.isNew}\n />\n\n {displayableSections &&\n displayableSections.map(\n (section: ToolAssistanceSection, index1: number) => {\n return (\n <React.Fragment key={index1.toString()}>\n <ToolAssistanceSeparator key={index1.toString()}>\n {section.label}\n </ToolAssistanceSeparator>\n {this._getDisplayableInstructions(section).map(\n (\n instruction: ToolAssistanceInstruction,\n index2: number\n ) => {\n return (\n <NZ_ToolAssistanceInstruction\n key={`${index1.toString()}-${index2.toString()}`}\n image={ToolAssistanceField.getInstructionImage(\n instruction\n )}\n text={instruction.text}\n isNew={instruction.isNew}\n />\n );\n }\n )}\n </React.Fragment>\n );\n }\n )}\n\n {this.props.includePromptAtCursor && (\n <>\n <ToolAssistanceSeparator key=\"prompt-sep\" />\n <ToolAssistanceItem key=\"prompt-item\">\n <ToggleSwitch\n label={UiFramework.translate(\n \"toolAssistance.promptAtCursor\"\n )}\n labelPosition=\"right\"\n checked={this.state.showPromptAtCursor}\n onChange={this._onPromptAtCursorChange}\n />\n </ToolAssistanceItem>\n </>\n )}\n </div>\n </div>\n );\n }\n\n if (prompt) tooltip = prompt;\n\n // istanbul ignore next\n if (IModelApp.toolAdmin.activeTool)\n tooltip = `${IModelApp.toolAdmin.activeTool.flyover} > ${tooltip} `;\n\n if (tooltip) {\n const lineBreak = \"\\u000d\\u000a\";\n tooltip = tooltip + lineBreak;\n }\n\n tooltip += UiFramework.translate(\"toolAssistance.moreInfo\");\n\n return (\n <>\n <div style={{ height: \"100%\" }} ref={this._handleTargetRef}>\n <ToolAssistance\n icons={<>{toolIcon}</>}\n indicatorRef={this._indicator}\n className={classnames(\n \"uifw-statusFields-toolassistance\",\n this.props.className\n )}\n style={this.props.style}\n onClick={this._handleToolAssistanceIndicatorClick}\n title={tooltip}\n >\n {prompt}\n </ToolAssistance>\n </div>\n <FooterPopup\n isOpen={this.state.isOpen}\n onClose={this._handleClose}\n onOutsideClick={this._handleOutsideClick}\n target={this._target}\n isPinned={this.state.isPinned}\n >\n <ToolAssistanceDialog\n buttons={\n <>\n {!this.state.isPinned && (\n <StatusBarDialog.TitleBarButton\n onClick={this._handlePinButtonClick}\n title={UiFramework.translate(\"toolAssistance.pin\")}\n >\n <Icon iconSpec={<SvgPin />} />\n </StatusBarDialog.TitleBarButton>\n )}\n {this.state.isPinned && (\n <StatusBarDialog.TitleBarButton\n onClick={this._handleCloseButtonClick}\n title={UiCore.translate(\"dialog.close\")}\n >\n <Icon iconSpec={<SvgClose />} />\n </StatusBarDialog.TitleBarButton>\n )}\n </>\n }\n title={dialogTitle}\n >\n {dialogContent}\n </ToolAssistanceDialog>\n </FooterPopup>\n </>\n );\n }\n\n private _handleTargetRef = (target: HTMLElement | null) => {\n this._target = target;\n };\n\n private _onPromptAtCursorChange = async (\n e: React.ChangeEvent<HTMLInputElement>\n ) => {\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n showPromptAtCursor: e.target.checked,\n },\n async () => {\n await this._showPromptAtCursorSetting.saveSetting(\n this._uiSettingsStorage\n );\n }\n );\n };\n\n private _handleClose = () => {\n this.setIsOpen(false);\n };\n\n private _handleOutsideClick = (e: MouseEvent) => {\n // istanbul ignore if\n if (\n !this._indicator.current ||\n !(e.target instanceof Node) ||\n this._indicator.current.contains(e.target)\n )\n return;\n\n this._handleClose();\n };\n\n private _handleToolAssistanceIndicatorClick = () => {\n this.setIsOpen(!this.state.isOpen);\n };\n\n private _handlePinButtonClick = () => {\n // istanbul ignore else\n if (this._isMounted) this.setState({ isPinned: true });\n };\n\n private _handleCloseButtonClick = () => {\n this._handleClose();\n };\n\n private setIsOpen(isOpen: boolean) {\n let newState = {\n isOpen,\n };\n if (!isOpen && this.state.isPinned && this._isMounted) {\n newState = { ...newState, ...{ isPinned: false } };\n }\n this.setState(newState);\n }\n\n /** @internal */\n public static getInstructionImage(\n instruction: ToolAssistanceInstruction\n ): React.ReactNode {\n let image: React.ReactNode;\n\n if (\n (typeof instruction.image === \"string\" ||\n instruction.image !== ToolAssistanceImage.Keyboard) &&\n instruction.keyboardInfo\n ) {\n if (\n instruction.keyboardInfo.keys.length === 1 &&\n !instruction.keyboardInfo.bottomKeys\n ) {\n const key = instruction.keyboardInfo.keys[0];\n const rightImage =\n typeof instruction.image === \"string\" ? (\n <div className=\"uifw-toolassistance-icon-medium\">\n <Icon iconSpec={instruction.image} />\n </div>\n ) : (\n this.getInstructionSvgImage(instruction, true)\n );\n\n image = (\n <FillCentered>\n {ToolAssistanceField.getKeyNode(\n key,\n 0,\n \"uifw-toolassistance-key-modifier\"\n )}\n {rightImage}\n </FillCentered>\n );\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `getInstructionImage: Invalid keyboardInfo provided with image`\n );\n }\n } else if (typeof instruction.image === \"string\") {\n if (instruction.image.length > 0) {\n const svgSource = IconSpecUtilities.getWebComponentSource(\n instruction.image\n );\n const className =\n svgSource !== undefined\n ? \"uifw-toolassistance-svg\"\n : \"uifw-toolassistance-icon-large\";\n image = (\n <div className={className}>\n <Icon iconSpec={svgSource ?? instruction.image} />\n </div>\n );\n }\n } else if (instruction.image === ToolAssistanceImage.Keyboard) {\n if (instruction.keyboardInfo) {\n image = ToolAssistanceField.getInstructionKeyboardImage(\n instruction.keyboardInfo\n );\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `getInstructionImage: ToolAssistanceImage.Keyboard specified but no keyboardInfo provided`\n );\n }\n } else {\n image = this.getInstructionSvgImage(instruction, false);\n }\n\n return image;\n }\n\n private static getInstructionSvgImage(\n instruction: ToolAssistanceInstruction,\n mediumSize: boolean\n ): React.ReactNode {\n let image: React.ReactNode;\n let className = mediumSize\n ? \"uifw-toolassistance-svg-medium\"\n : \"uifw-toolassistance-svg\";\n\n // istanbul ignore else\n if (\n typeof instruction.image !== \"string\" &&\n instruction.image !== ToolAssistanceImage.Keyboard\n ) {\n const toolAssistanceImage: ToolAssistanceImage = instruction.image;\n let svgImage = \"\";\n\n switch (toolAssistanceImage) {\n case ToolAssistanceImage.AcceptPoint:\n svgImage = acceptPointIcon;\n break;\n case ToolAssistanceImage.CursorClick:\n svgImage = cursorClickIcon;\n break;\n case ToolAssistanceImage.LeftClick:\n svgImage = clickLeftIcon;\n break;\n case ToolAssistanceImage.RightClick:\n svgImage = clickRightIcon;\n break;\n case ToolAssistanceImage.MouseWheel:\n svgImage = mouseWheelClickIcon;\n break;\n case ToolAssistanceImage.LeftClickDrag:\n svgImage = clickLeftDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.RightClickDrag:\n svgImage = clickRightDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.MouseWheelClickDrag:\n svgImage = clickMouseWheelDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.OneTouchTap:\n svgImage = oneTouchTapIcon;\n break;\n case ToolAssistanceImage.OneTouchDoubleTap:\n svgImage = oneTouchDoubleTapIcon;\n break;\n case ToolAssistanceImage.OneTouchDrag:\n svgImage = oneTouchDragIcon;\n break;\n case ToolAssistanceImage.TwoTouchTap:\n svgImage = twoTouchTapIcon;\n break;\n case ToolAssistanceImage.TwoTouchDrag:\n svgImage = twoTouchDragIcon;\n break;\n case ToolAssistanceImage.TwoTouchPinch:\n svgImage = twoTouchPinchIcon;\n break;\n case ToolAssistanceImage.TouchCursorTap:\n svgImage = touchCursorTapIcon;\n break;\n case ToolAssistanceImage.TouchCursorDrag:\n svgImage = touchCursorDragIcon;\n className = mediumSize\n ? /* istanbul ignore next */ \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n }\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgImage);\n image = (\n <div className={className}>\n {svgImage && (\n // istanbul ignore next\n <Icon iconSpec={iconSpec} />\n )}\n </div>\n );\n }\n\n return image;\n }\n\n private static getInstructionKeyboardImage(\n keyboardInfo: ToolAssistanceKeyboardInfo\n ): React.ReactNode {\n let image: React.ReactNode;\n\n if (keyboardInfo.bottomKeys !== undefined) {\n image = (\n <div className=\"uifw-toolassistance-key-group\">\n <span className=\"row1\">\n {keyboardInfo.keys.map((key: string, index1: number) => {\n return ToolAssistanceField.getKeyNode(\n key,\n index1,\n \"uifw-toolassistance-key-small\"\n );\n })}\n </span>\n <br />\n <span className=\"row2\">\n {keyboardInfo.bottomKeys.map((key: string, index2: number) => {\n return ToolAssistanceField.getKeyNode(\n key,\n index2,\n \"uifw-toolassistance-key-small\"\n );\n })}\n </span>\n </div>\n );\n } else if (keyboardInfo.keys.length === 2) {\n image = (\n <FillCentered>\n {keyboardInfo.keys.map((key: string, index3: number) => {\n let className = \"uifw-toolassistance-key-medium\";\n if (key.length > 1) className = \"uifw-toolassistance-key-modifier\";\n return ToolAssistanceField.getKeyNode(key, index3, className);\n })}\n </FillCentered>\n );\n } else if (keyboardInfo.keys[0]) {\n if (keyboardInfo.keys[0].length > 1)\n image = ToolAssistanceField.getKeyNode(\n keyboardInfo.keys[0],\n 0,\n \"uifw-toolassistance-key-large\"\n );\n else image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0);\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `ToolAssistanceImage.Keyboard specified but ToolAssistanceKeyboardInfo not valid`\n );\n }\n\n return image;\n }\n\n private static getKeyNode(\n key: string,\n index: number,\n className?: string\n ): React.ReactNode {\n return (\n <div\n key={index.toString()}\n className={classnames(\"uifw-toolassistance-key\", className)}\n >\n <FillCentered>{key}</FillCentered>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ToolAssistanceField.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport \"./ToolAssistanceField.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type {\n ToolAssistanceInstruction,\n ToolAssistanceInstructions,\n ToolAssistanceKeyboardInfo,\n ToolAssistanceSection,\n} from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n ToolAssistanceImage,\n ToolAssistanceInputMethod,\n} from \"@itwin/core-frontend\";\nimport type {\n CommonProps,\n UiStateStorage,\n UiStateStorageResult,\n} from \"@itwin/core-react\";\nimport {\n FillCentered,\n Icon,\n LocalStateStorage,\n UiCore,\n UiStateEntry,\n UiStateStorageStatus,\n} from \"@itwin/core-react\";\nimport {\n FooterPopup,\n ToolAssistanceInstruction as NZ_ToolAssistanceInstruction,\n ToolAssistance,\n ToolAssistanceDialog,\n ToolAssistanceItem,\n ToolAssistanceSeparator,\n} from \"@itwin/appui-layout-react\";\nimport { Tabs, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport { CursorPrompt } from \"../../cursor/cursorprompt/CursorPrompt\";\nimport type { ToolIconChangedEventArgs } from \"../../framework/FrameworkFrontstages\";\nimport type { ToolAssistanceChangedEventArgs } from \"../../messages/MessageManager\";\nimport { MessageManager } from \"../../messages/MessageManager\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { UiStateStorageContext } from \"../../uistate/useUiStateStorage\";\n\nimport acceptPointIcon from \"./accept-point.svg\";\nimport cursorClickIcon from \"./cursor-click.svg\";\nimport oneTouchDragIcon from \"./gesture-one-finger-drag.svg\";\nimport oneTouchDoubleTapIcon from \"./gesture-one-finger-tap-double.svg\";\nimport oneTouchTapIcon from \"./gesture-one-finger-tap.svg\";\nimport twoTouchPinchIcon from \"./gesture-pinch.svg\";\nimport twoTouchDragIcon from \"./gesture-two-finger-drag.svg\";\nimport twoTouchTapIcon from \"./gesture-two-finger-tap.svg\";\nimport clickLeftDragIcon from \"./mouse-click-left-drag.svg\";\nimport clickLeftIcon from \"./mouse-click-left.svg\";\nimport clickRightDragIcon from \"./mouse-click-right-drag.svg\";\nimport clickRightIcon from \"./mouse-click-right.svg\";\nimport clickMouseWheelDragIcon from \"./mouse-click-wheel-drag.svg\";\nimport mouseWheelClickIcon from \"./mouse-click-wheel.svg\";\nimport touchCursorDragIcon from \"./touch-cursor-pan.svg\";\nimport touchCursorTapIcon from \"./touch-cursor-point.svg\";\nimport { StatusBarDialog } from \"../../statusbar/dialog/Dialog\";\nimport { SvgClose, SvgPin } from \"@itwin/itwinui-icons-react\";\n\n// cSpell:ignore cursorprompt\n\n/** Properties of [[ToolAssistanceField]] component.\n * @public\n */\nexport interface ToolAssistanceFieldProps extends CommonProps {\n /** Indicates whether to include promptAtCursor Checkbox. Defaults to true. */\n includePromptAtCursor: boolean;\n /** Optional parameter for persistent UI settings. Defaults to UiStateStorageContext.\n */\n uiStateStorage?: UiStateStorage;\n /** Cursor Prompt Timeout period. Defaults to 5000. */\n cursorPromptTimeout: number;\n /** Fade Out the Cursor Prompt when closed. */\n fadeOutCursorPrompt: boolean;\n /** Indicates whether to show promptAtCursor by default. Defaults to false. */\n defaultPromptAtCursor: boolean;\n}\n\n/** Default properties of [[ToolAssistanceField]] component.\n * @internal\n */\nexport type ToolAssistanceFieldDefaultProps = Pick<\n ToolAssistanceFieldProps,\n | \"includePromptAtCursor\"\n | \"uiStateStorage\"\n | \"cursorPromptTimeout\"\n | \"fadeOutCursorPrompt\"\n | \"defaultPromptAtCursor\"\n>;\n\n/** @internal */\ninterface ToolAssistanceFieldState {\n instructions: ToolAssistanceInstructions | undefined;\n toolIconSpec: string;\n showPromptAtCursor: boolean;\n includeMouseInstructions: boolean;\n includeTouchInstructions: boolean;\n showMouseTouchTabs: boolean;\n showMouseInstructions: boolean;\n showTouchInstructions: boolean;\n mouseTouchTabIndex: number;\n isPinned: boolean;\n isOpen: boolean;\n}\n\n/** Tool Assistance Field React component.\n * @public\n */\nexport class ToolAssistanceField extends React.Component<\n ToolAssistanceFieldProps,\n ToolAssistanceFieldState\n> {\n /** @internal */\n public static override contextType = UiStateStorageContext;\n /** @internal */\n public declare context: React.ContextType<typeof UiStateStorageContext>;\n\n private static _toolAssistanceKey = \"ToolAssistance\";\n private static _showPromptAtCursorKey = \"showPromptAtCursor\";\n private static _mouseTouchTabIndexKey = \"mouseTouchTabIndex\";\n private _showPromptAtCursorSetting: UiStateEntry<boolean>;\n private _mouseTouchTabIndexSetting: UiStateEntry<number>;\n private _target: HTMLElement | null = null;\n private _indicator = React.createRef<HTMLDivElement>();\n private _cursorPrompt: CursorPrompt;\n private _isMounted = false;\n private _uiSettingsStorage: UiStateStorage;\n\n /** @internal */\n public static readonly defaultProps: ToolAssistanceFieldDefaultProps = {\n includePromptAtCursor: true,\n cursorPromptTimeout: 5000,\n fadeOutCursorPrompt: true,\n defaultPromptAtCursor: false,\n };\n\n /** @internal */\n constructor(p: ToolAssistanceFieldProps) {\n super(p);\n\n const mobile = UiFramework.isMobile();\n\n this.state = {\n instructions: undefined,\n toolIconSpec: \"\",\n showPromptAtCursor: p.defaultPromptAtCursor,\n includeMouseInstructions: !mobile,\n includeTouchInstructions: true,\n showMouseTouchTabs: false,\n showMouseInstructions: false,\n showTouchInstructions: false,\n mouseTouchTabIndex: 0,\n isPinned: false,\n isOpen: false,\n };\n\n this._uiSettingsStorage = new LocalStateStorage();\n this._cursorPrompt = new CursorPrompt(\n this.props.cursorPromptTimeout,\n this.props.fadeOutCursorPrompt\n );\n this._showPromptAtCursorSetting = new UiStateEntry(\n ToolAssistanceField._toolAssistanceKey,\n ToolAssistanceField._showPromptAtCursorKey,\n () => this.state.showPromptAtCursor\n );\n this._mouseTouchTabIndexSetting = new UiStateEntry(\n ToolAssistanceField._toolAssistanceKey,\n ToolAssistanceField._mouseTouchTabIndexKey,\n () => this.state.mouseTouchTabIndex\n );\n }\n\n /** @internal */\n public override async componentDidMount() {\n this._isMounted = true;\n MessageManager.onToolAssistanceChangedEvent.addListener(\n this._handleToolAssistanceChangedEvent\n );\n UiFramework.frontstages.onToolIconChangedEvent.addListener(\n this._handleToolIconChangedEvent\n );\n\n // istanbul ignore else\n if (this.props.uiStateStorage)\n this._uiSettingsStorage = this.props.uiStateStorage;\n else if (this.context) this._uiSettingsStorage = this.context;\n\n await this.restoreSettings();\n }\n\n /** @internal */\n public override componentWillUnmount() {\n this._isMounted = false;\n MessageManager.onToolAssistanceChangedEvent.removeListener(\n this._handleToolAssistanceChangedEvent\n );\n UiFramework.frontstages.onToolIconChangedEvent.removeListener(\n this._handleToolIconChangedEvent\n );\n }\n\n private async restoreSettings() {\n let getShowPromptAtCursor: Promise<UiStateStorageResult> | undefined;\n // istanbul ignore else\n if (this.props.includePromptAtCursor) {\n getShowPromptAtCursor = this._showPromptAtCursorSetting.getSetting(\n this._uiSettingsStorage\n );\n }\n const getMouseTouchTabIndex = this._mouseTouchTabIndexSetting.getSetting(\n this._uiSettingsStorage\n );\n const [showPromptAtCursorResult, mouseTouchTabIndexResult] =\n await Promise.all([getShowPromptAtCursor, getMouseTouchTabIndex]);\n\n // istanbul ignore else\n if (\n showPromptAtCursorResult !== undefined &&\n showPromptAtCursorResult.status === UiStateStorageStatus.Success\n ) {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ showPromptAtCursor: showPromptAtCursorResult.setting });\n }\n\n // istanbul ignore else\n if (mouseTouchTabIndexResult.status === UiStateStorageStatus.Success) {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ mouseTouchTabIndex: mouseTouchTabIndexResult.setting });\n }\n }\n\n private _handleToolAssistanceChangedEvent = (\n args: ToolAssistanceChangedEventArgs\n ): void => {\n let showMouseTouchTabs = false;\n let showMouseInstructions = false;\n let showTouchInstructions = false;\n\n if (args.instructions && args.instructions.sections) {\n const hasMouseInstructions = args.instructions.sections.some(\n (section: ToolAssistanceSection) => {\n return section.instructions.some(\n (instruction: ToolAssistanceInstruction) =>\n this._isMouseInstruction(instruction)\n );\n }\n );\n const hasTouchInstructions = args.instructions.sections.some(\n (section: ToolAssistanceSection) => {\n return section.instructions.some(\n (instruction: ToolAssistanceInstruction) =>\n this._isTouchInstruction(instruction)\n );\n }\n );\n\n if (\n this.state.includeMouseInstructions &&\n this.state.includeTouchInstructions &&\n hasMouseInstructions &&\n hasTouchInstructions\n ) {\n showMouseTouchTabs = true;\n showMouseInstructions = this.state.mouseTouchTabIndex === 0;\n showTouchInstructions = this.state.mouseTouchTabIndex === 1;\n } else {\n if (this.state.includeMouseInstructions && hasMouseInstructions)\n showMouseInstructions = true;\n else if (this.state.includeTouchInstructions && hasTouchInstructions)\n showTouchInstructions = true;\n }\n }\n\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n instructions: args.instructions,\n showMouseTouchTabs,\n showMouseInstructions,\n showTouchInstructions,\n },\n () => {\n this._showCursorPrompt();\n }\n );\n };\n\n private _isBothInstruction = (instruction: ToolAssistanceInstruction) => {\n return (\n instruction.inputMethod === undefined ||\n instruction.inputMethod === ToolAssistanceInputMethod.Both\n );\n };\n\n private _isMouseInstruction = (instruction: ToolAssistanceInstruction) =>\n instruction.inputMethod === ToolAssistanceInputMethod.Mouse;\n\n private _isTouchInstruction = (instruction: ToolAssistanceInstruction) =>\n instruction.inputMethod === ToolAssistanceInputMethod.Touch;\n\n private _handleToolIconChangedEvent = (\n args: ToolIconChangedEventArgs\n ): void => {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ toolIconSpec: args.iconSpec }, () => {\n this._showCursorPrompt();\n });\n };\n\n private _showCursorPrompt() {\n if (this.state.showPromptAtCursor && this.state.instructions)\n this._cursorPrompt.display(\n this.state.toolIconSpec,\n this.state.instructions.mainInstruction\n );\n }\n\n private _sectionHasDisplayableInstructions(\n section: ToolAssistanceSection\n ): boolean {\n const displayableInstructions = this._getDisplayableInstructions(section);\n return displayableInstructions.length > 0;\n }\n\n private _getDisplayableInstructions(\n section: ToolAssistanceSection\n ): ToolAssistanceInstruction[] {\n const displayableInstructions = section.instructions.filter(\n (instruction: ToolAssistanceInstruction) => {\n return (\n this._isBothInstruction(instruction) ||\n (this.state.showMouseInstructions &&\n this._isMouseInstruction(instruction)) ||\n (this.state.showTouchInstructions &&\n this._isTouchInstruction(instruction))\n );\n }\n );\n return displayableInstructions;\n }\n\n private _handleMouseTouchTab = async (index: number) => {\n const showMouseInstructions = index === 0;\n const showTouchInstructions = index === 1;\n\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n mouseTouchTabIndex: index,\n showMouseInstructions,\n showTouchInstructions,\n },\n async () => {\n await this._mouseTouchTabIndexSetting.saveSetting(\n this._uiSettingsStorage\n );\n }\n );\n };\n\n /** @internal */\n public override render(): React.ReactNode {\n const { instructions } = this.state;\n const dialogTitle = IModelApp.toolAdmin.activeTool\n ? /* istanbul ignore next */ IModelApp.toolAdmin.activeTool.flyover\n : UiFramework.translate(\"toolAssistance.title\");\n const mouseLabel = UiFramework.translate(\"toolAssistance.mouse\");\n const touchLabel = UiFramework.translate(\"toolAssistance.touch\");\n let prompt = \"\";\n let tooltip = \"\";\n let toolIcon: React.ReactNode;\n let dialogContent: React.ReactNode;\n\n if (instructions) {\n prompt = instructions.mainInstruction.text;\n toolIcon = <Icon iconSpec={this.state.toolIconSpec} />;\n\n let displayableSections: ToolAssistanceSection[] | undefined;\n if (instructions.sections) {\n displayableSections = instructions.sections.filter(\n (section: ToolAssistanceSection) =>\n this._sectionHasDisplayableInstructions(section)\n );\n }\n\n dialogContent = (\n <div>\n {this.state.showMouseTouchTabs && (\n <Tabs\n orientation=\"horizontal\"\n tabsClassName=\"uifw-toolAssistance-tabs\"\n labels={[mouseLabel, touchLabel]}\n activeIndex={this.state.mouseTouchTabIndex}\n onTabSelected={this._handleMouseTouchTab}\n />\n )}\n\n <div className=\"uifw-toolAssistance-content\">\n <NZ_ToolAssistanceInstruction\n key=\"main\"\n image={ToolAssistanceField.getInstructionImage(\n instructions.mainInstruction\n )}\n text={instructions.mainInstruction.text}\n isNew={instructions.mainInstruction.isNew}\n />\n\n {displayableSections &&\n displayableSections.map(\n (section: ToolAssistanceSection, index1: number) => {\n return (\n <React.Fragment key={index1.toString()}>\n <ToolAssistanceSeparator key={index1.toString()}>\n {section.label}\n </ToolAssistanceSeparator>\n {this._getDisplayableInstructions(section).map(\n (\n instruction: ToolAssistanceInstruction,\n index2: number\n ) => {\n return (\n <NZ_ToolAssistanceInstruction\n key={`${index1.toString()}-${index2.toString()}`}\n image={ToolAssistanceField.getInstructionImage(\n instruction\n )}\n text={instruction.text}\n isNew={instruction.isNew}\n />\n );\n }\n )}\n </React.Fragment>\n );\n }\n )}\n\n {this.props.includePromptAtCursor && (\n <>\n <ToolAssistanceSeparator key=\"prompt-sep\" />\n <ToolAssistanceItem key=\"prompt-item\">\n <ToggleSwitch\n label={UiFramework.translate(\n \"toolAssistance.promptAtCursor\"\n )}\n labelPosition=\"right\"\n checked={this.state.showPromptAtCursor}\n onChange={this._onPromptAtCursorChange}\n />\n </ToolAssistanceItem>\n </>\n )}\n </div>\n </div>\n );\n }\n\n if (prompt) tooltip = prompt;\n\n // istanbul ignore next\n if (IModelApp.toolAdmin.activeTool)\n tooltip = `${IModelApp.toolAdmin.activeTool.flyover} > ${tooltip} `;\n\n if (tooltip) {\n const lineBreak = \"\\u000d\\u000a\";\n tooltip = tooltip + lineBreak;\n }\n\n tooltip += UiFramework.translate(\"toolAssistance.moreInfo\");\n\n return (\n <>\n <div style={{ height: \"100%\" }} ref={this._handleTargetRef}>\n <ToolAssistance\n icons={<>{toolIcon}</>}\n indicatorRef={this._indicator}\n className={classnames(\n \"uifw-statusFields-toolassistance\",\n this.props.className\n )}\n style={this.props.style}\n onClick={this._handleToolAssistanceIndicatorClick}\n title={tooltip}\n >\n {prompt}\n </ToolAssistance>\n </div>\n <FooterPopup\n isOpen={this.state.isOpen}\n onClose={this._handleClose}\n onOutsideClick={this._handleOutsideClick}\n target={this._target}\n isPinned={this.state.isPinned}\n >\n <ToolAssistanceDialog\n buttons={\n <>\n {!this.state.isPinned && (\n <StatusBarDialog.TitleBarButton\n onClick={this._handlePinButtonClick}\n title={UiFramework.translate(\"toolAssistance.pin\")}\n >\n <Icon iconSpec={<SvgPin />} />\n </StatusBarDialog.TitleBarButton>\n )}\n {this.state.isPinned && (\n <StatusBarDialog.TitleBarButton\n onClick={this._handleCloseButtonClick}\n title={UiCore.translate(\"dialog.close\")}\n >\n <Icon iconSpec={<SvgClose />} />\n </StatusBarDialog.TitleBarButton>\n )}\n </>\n }\n title={dialogTitle}\n >\n {dialogContent}\n </ToolAssistanceDialog>\n </FooterPopup>\n </>\n );\n }\n\n private _handleTargetRef = (target: HTMLElement | null) => {\n this._target = target;\n };\n\n private _onPromptAtCursorChange = async (\n e: React.ChangeEvent<HTMLInputElement>\n ) => {\n // istanbul ignore else\n if (this._isMounted)\n this.setState(\n {\n showPromptAtCursor: e.target.checked,\n },\n async () => {\n await this._showPromptAtCursorSetting.saveSetting(\n this._uiSettingsStorage\n );\n }\n );\n };\n\n private _handleClose = () => {\n this.setIsOpen(false);\n };\n\n private _handleOutsideClick = (e: MouseEvent) => {\n // istanbul ignore if\n if (\n !this._indicator.current ||\n !(e.target instanceof Node) ||\n this._indicator.current.contains(e.target)\n )\n return;\n\n this._handleClose();\n };\n\n private _handleToolAssistanceIndicatorClick = () => {\n this.setIsOpen(!this.state.isOpen);\n };\n\n private _handlePinButtonClick = () => {\n // istanbul ignore else\n if (this._isMounted) this.setState({ isPinned: true });\n };\n\n private _handleCloseButtonClick = () => {\n this._handleClose();\n };\n\n private setIsOpen(isOpen: boolean) {\n let newState = {\n isOpen,\n };\n if (!isOpen && this.state.isPinned && this._isMounted) {\n newState = { ...newState, ...{ isPinned: false } };\n }\n this.setState(newState);\n }\n\n /** @internal */\n public static getInstructionImage(\n instruction: ToolAssistanceInstruction\n ): React.ReactNode {\n let image: React.ReactNode;\n\n if (\n (typeof instruction.image === \"string\" ||\n instruction.image !== ToolAssistanceImage.Keyboard) &&\n instruction.keyboardInfo\n ) {\n if (\n instruction.keyboardInfo.keys.length === 1 &&\n !instruction.keyboardInfo.bottomKeys\n ) {\n const key = instruction.keyboardInfo.keys[0];\n const rightImage =\n typeof instruction.image === \"string\" ? (\n <div className=\"uifw-toolassistance-icon-medium\">\n <Icon iconSpec={instruction.image} />\n </div>\n ) : (\n this.getInstructionSvgImage(instruction, true)\n );\n\n image = (\n <FillCentered>\n {ToolAssistanceField.getKeyNode(\n key,\n 0,\n \"uifw-toolassistance-key-modifier\"\n )}\n {rightImage}\n </FillCentered>\n );\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `getInstructionImage: Invalid keyboardInfo provided with image`\n );\n }\n } else if (typeof instruction.image === \"string\") {\n if (instruction.image.length > 0) {\n const svgSource = getWebComponentSource(instruction.image);\n const className =\n svgSource !== undefined\n ? \"uifw-toolassistance-svg\"\n : \"uifw-toolassistance-icon-large\";\n image = (\n <div className={className}>\n <Icon iconSpec={svgSource ?? instruction.image} />\n </div>\n );\n }\n } else if (instruction.image === ToolAssistanceImage.Keyboard) {\n if (instruction.keyboardInfo) {\n image = ToolAssistanceField.getInstructionKeyboardImage(\n instruction.keyboardInfo\n );\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `getInstructionImage: ToolAssistanceImage.Keyboard specified but no keyboardInfo provided`\n );\n }\n } else {\n image = this.getInstructionSvgImage(instruction, false);\n }\n\n return image;\n }\n\n private static getInstructionSvgImage(\n instruction: ToolAssistanceInstruction,\n mediumSize: boolean\n ): React.ReactNode {\n let image: React.ReactNode;\n let className = mediumSize\n ? \"uifw-toolassistance-svg-medium\"\n : \"uifw-toolassistance-svg\";\n\n // istanbul ignore else\n if (\n typeof instruction.image !== \"string\" &&\n instruction.image !== ToolAssistanceImage.Keyboard\n ) {\n const toolAssistanceImage: ToolAssistanceImage = instruction.image;\n let svgImage = \"\";\n\n switch (toolAssistanceImage) {\n case ToolAssistanceImage.AcceptPoint:\n svgImage = acceptPointIcon;\n break;\n case ToolAssistanceImage.CursorClick:\n svgImage = cursorClickIcon;\n break;\n case ToolAssistanceImage.LeftClick:\n svgImage = clickLeftIcon;\n break;\n case ToolAssistanceImage.RightClick:\n svgImage = clickRightIcon;\n break;\n case ToolAssistanceImage.MouseWheel:\n svgImage = mouseWheelClickIcon;\n break;\n case ToolAssistanceImage.LeftClickDrag:\n svgImage = clickLeftDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.RightClickDrag:\n svgImage = clickRightDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.MouseWheelClickDrag:\n svgImage = clickMouseWheelDragIcon;\n className = mediumSize\n ? \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n case ToolAssistanceImage.OneTouchTap:\n svgImage = oneTouchTapIcon;\n break;\n case ToolAssistanceImage.OneTouchDoubleTap:\n svgImage = oneTouchDoubleTapIcon;\n break;\n case ToolAssistanceImage.OneTouchDrag:\n svgImage = oneTouchDragIcon;\n break;\n case ToolAssistanceImage.TwoTouchTap:\n svgImage = twoTouchTapIcon;\n break;\n case ToolAssistanceImage.TwoTouchDrag:\n svgImage = twoTouchDragIcon;\n break;\n case ToolAssistanceImage.TwoTouchPinch:\n svgImage = twoTouchPinchIcon;\n break;\n case ToolAssistanceImage.TouchCursorTap:\n svgImage = touchCursorTapIcon;\n break;\n case ToolAssistanceImage.TouchCursorDrag:\n svgImage = touchCursorDragIcon;\n className = mediumSize\n ? /* istanbul ignore next */ \"uifw-toolassistance-svg-medium-wide\"\n : \"uifw-toolassistance-svg-wide\";\n break;\n }\n\n image = (\n <div className={className}>\n {svgImage && (\n // istanbul ignore next\n <Icon iconSpec={svgImage} />\n )}\n </div>\n );\n }\n\n return image;\n }\n\n private static getInstructionKeyboardImage(\n keyboardInfo: ToolAssistanceKeyboardInfo\n ): React.ReactNode {\n let image: React.ReactNode;\n\n if (keyboardInfo.bottomKeys !== undefined) {\n image = (\n <div className=\"uifw-toolassistance-key-group\">\n <span className=\"row1\">\n {keyboardInfo.keys.map((key: string, index1: number) => {\n return ToolAssistanceField.getKeyNode(\n key,\n index1,\n \"uifw-toolassistance-key-small\"\n );\n })}\n </span>\n <br />\n <span className=\"row2\">\n {keyboardInfo.bottomKeys.map((key: string, index2: number) => {\n return ToolAssistanceField.getKeyNode(\n key,\n index2,\n \"uifw-toolassistance-key-small\"\n );\n })}\n </span>\n </div>\n );\n } else if (keyboardInfo.keys.length === 2) {\n image = (\n <FillCentered>\n {keyboardInfo.keys.map((key: string, index3: number) => {\n let className = \"uifw-toolassistance-key-medium\";\n if (key.length > 1) className = \"uifw-toolassistance-key-modifier\";\n return ToolAssistanceField.getKeyNode(key, index3, className);\n })}\n </FillCentered>\n );\n } else if (keyboardInfo.keys[0]) {\n if (keyboardInfo.keys[0].length > 1)\n image = ToolAssistanceField.getKeyNode(\n keyboardInfo.keys[0],\n 0,\n \"uifw-toolassistance-key-large\"\n );\n else image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0);\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `ToolAssistanceImage.Keyboard specified but ToolAssistanceKeyboardInfo not valid`\n );\n }\n\n return image;\n }\n\n private static getKeyNode(\n key: string,\n index: number,\n className?: string\n ): React.ReactNode {\n return (\n <div\n key={index.toString()}\n className={classnames(\"uifw-toolassistance-key\", className)}\n >\n <FillCentered>{key}</FillCentered>\n </div>\n );\n }\n}\n\nfunction getWebComponentSource(iconSpec: string): string | undefined {\n if (iconSpec.startsWith(\"webSvg:\") && iconSpec.length > 7) {\n return iconSpec.slice(7);\n }\n\n return undefined;\n}\n"]}