@itwin/appui-react 4.4.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/appui-react/UiFramework.js +4 -7
  3. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  4. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +1 -2
  5. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  6. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +1 -1
  7. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  8. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  9. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  10. package/lib/cjs/appui-react/configurableui/TimeTracker.js +1 -2
  11. package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
  12. package/lib/cjs/appui-react/content/ContentLayout.js +9 -12
  13. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  14. package/lib/cjs/appui-react/content/DefaultViewOverlay.js +3 -4
  15. package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
  16. package/lib/cjs/appui-react/content/FloatingViewportContent.js +1 -2
  17. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  18. package/lib/cjs/appui-react/content/IModelViewport.js +3 -6
  19. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  20. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +1 -2
  21. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  22. package/lib/cjs/appui-react/content/InternalContentViewManager.js +1 -1
  23. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  24. package/lib/cjs/appui-react/content/split-pane/SplitPane.js +10 -12
  25. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  26. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js +2 -3
  27. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  28. package/lib/cjs/appui-react/dialog/ContentDialog.js +3 -6
  29. package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
  30. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +2 -3
  31. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  32. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +5 -7
  33. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  34. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +2 -3
  35. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  36. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +1 -2
  37. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  38. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js +7 -11
  39. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  40. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js +7 -11
  41. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  42. package/lib/cjs/appui-react/hooks/useSolarDataProvider.js +8 -13
  43. package/lib/cjs/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  44. package/lib/cjs/appui-react/messages/ActivityMessage.js +5 -7
  45. package/lib/cjs/appui-react/messages/ActivityMessage.js.map +1 -1
  46. package/lib/cjs/appui-react/pickers/ViewSelector.js +5 -6
  47. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  48. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +1 -2
  49. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  50. package/lib/cjs/appui-react/popup/PopupManager.js +1 -2
  51. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  52. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js +2 -2
  53. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  54. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js +2 -1
  55. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  56. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +5 -7
  57. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  58. package/lib/cjs/appui-react/statusbar/Indicator.js +1 -2
  59. package/lib/cjs/appui-react/statusbar/Indicator.js.map +1 -1
  60. package/lib/cjs/appui-react/statusbar/StatusBar.js +3 -5
  61. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  62. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  63. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  64. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts +1 -1
  65. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  66. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  67. package/lib/cjs/appui-react/toolbar/ToolbarHelper.d.ts +6 -3
  68. package/lib/cjs/appui-react/toolbar/ToolbarHelper.d.ts.map +1 -1
  69. package/lib/cjs/appui-react/toolbar/ToolbarHelper.js +53 -80
  70. package/lib/cjs/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  71. package/lib/cjs/appui-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  72. package/lib/cjs/appui-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  73. package/lib/cjs/appui-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  74. package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js +3 -4
  75. package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
  76. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +10 -17
  77. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  78. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js +3 -2
  79. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  80. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +12 -14
  81. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  82. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +9 -10
  83. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  84. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -2
  85. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  86. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +8 -14
  87. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  88. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
  89. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  90. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js +1 -1
  91. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  92. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +3 -3
  93. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  94. package/lib/cjs/appui-react/widget-panels/Content.js +8 -9
  95. package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
  96. package/lib/cjs/appui-react/widget-panels/Frontstage.js +43 -45
  97. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  98. package/lib/cjs/appui-react/widget-panels/StatusBar.js +1 -1
  99. package/lib/cjs/appui-react/widget-panels/StatusBar.js.map +1 -1
  100. package/lib/cjs/appui-react/widget-panels/Tab.js +1 -1
  101. package/lib/cjs/appui-react/widget-panels/Tab.js.map +1 -1
  102. package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  103. package/lib/cjs/appui-react/widget-panels/ToolSettings.js +21 -23
  104. package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
  105. package/lib/cjs/appui-react/widget-panels/Toolbars.js +2 -3
  106. package/lib/cjs/appui-react/widget-panels/Toolbars.js.map +1 -1
  107. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +2 -2
  108. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  109. package/lib/cjs/appui-react/widgets/WidgetDef.js +1 -1
  110. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  111. package/lib/cjs/appui-react/widgets/WidgetHost.js +2 -3
  112. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  113. package/lib/esm/appui-react/UiFramework.js +4 -7
  114. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  115. package/lib/esm/appui-react/backstage/BackstageComposerItem.js +1 -2
  116. package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  117. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +1 -1
  118. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  119. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  120. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  121. package/lib/esm/appui-react/configurableui/TimeTracker.js +1 -2
  122. package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
  123. package/lib/esm/appui-react/content/ContentLayout.js +9 -12
  124. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  125. package/lib/esm/appui-react/content/DefaultViewOverlay.js +3 -4
  126. package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
  127. package/lib/esm/appui-react/content/FloatingViewportContent.js +1 -2
  128. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  129. package/lib/esm/appui-react/content/IModelViewport.js +3 -6
  130. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  131. package/lib/esm/appui-react/content/InternalContentLayoutManager.js +1 -2
  132. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  133. package/lib/esm/appui-react/content/InternalContentViewManager.js +1 -1
  134. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  135. package/lib/esm/appui-react/content/split-pane/SplitPane.js +10 -12
  136. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  137. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js +2 -3
  138. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  139. package/lib/esm/appui-react/dialog/ContentDialog.js +3 -6
  140. package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
  141. package/lib/esm/appui-react/dialog/DialogManagerBase.js +2 -3
  142. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  143. package/lib/esm/appui-react/frontstage/FrontstageDef.js +5 -7
  144. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  145. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +2 -3
  146. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  147. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +1 -2
  148. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  149. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js +7 -11
  150. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  151. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js +7 -11
  152. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  153. package/lib/esm/appui-react/hooks/useSolarDataProvider.js +8 -13
  154. package/lib/esm/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  155. package/lib/esm/appui-react/messages/ActivityMessage.js +5 -7
  156. package/lib/esm/appui-react/messages/ActivityMessage.js.map +1 -1
  157. package/lib/esm/appui-react/pickers/ViewSelector.js +5 -6
  158. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  159. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +1 -2
  160. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  161. package/lib/esm/appui-react/popup/PopupManager.js +1 -2
  162. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  163. package/lib/esm/appui-react/selection/SelectionContextItemDef.js +2 -2
  164. package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  165. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js +2 -1
  166. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  167. package/lib/esm/appui-react/stagepanels/StagePanelDef.js +5 -7
  168. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  169. package/lib/esm/appui-react/statusbar/Indicator.js +1 -2
  170. package/lib/esm/appui-react/statusbar/Indicator.js.map +1 -1
  171. package/lib/esm/appui-react/statusbar/StatusBar.js +3 -5
  172. package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
  173. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  174. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  175. package/lib/esm/appui-react/toolbar/Toolbar.d.ts +1 -1
  176. package/lib/esm/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  177. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  178. package/lib/esm/appui-react/toolbar/ToolbarHelper.d.ts +6 -3
  179. package/lib/esm/appui-react/toolbar/ToolbarHelper.d.ts.map +1 -1
  180. package/lib/esm/appui-react/toolbar/ToolbarHelper.js +53 -80
  181. package/lib/esm/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  182. package/lib/esm/appui-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  183. package/lib/esm/appui-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  184. package/lib/esm/appui-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  185. package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js +3 -4
  186. package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
  187. package/lib/esm/appui-react/tools/CoreToolDefinitions.js +10 -17
  188. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  189. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js +3 -2
  190. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  191. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +12 -14
  192. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  193. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +9 -10
  194. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  195. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -2
  196. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  197. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +8 -14
  198. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  199. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
  200. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  201. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js +1 -1
  202. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  203. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +3 -3
  204. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  205. package/lib/esm/appui-react/widget-panels/Content.js +8 -9
  206. package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
  207. package/lib/esm/appui-react/widget-panels/Frontstage.js +43 -45
  208. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  209. package/lib/esm/appui-react/widget-panels/StatusBar.js +1 -1
  210. package/lib/esm/appui-react/widget-panels/StatusBar.js.map +1 -1
  211. package/lib/esm/appui-react/widget-panels/Tab.js +1 -1
  212. package/lib/esm/appui-react/widget-panels/Tab.js.map +1 -1
  213. package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  214. package/lib/esm/appui-react/widget-panels/ToolSettings.js +21 -23
  215. package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
  216. package/lib/esm/appui-react/widget-panels/Toolbars.js +2 -3
  217. package/lib/esm/appui-react/widget-panels/Toolbars.js.map +1 -1
  218. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +2 -2
  219. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  220. package/lib/esm/appui-react/widgets/WidgetDef.js +1 -1
  221. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  222. package/lib/esm/appui-react/widgets/WidgetHost.js +2 -3
  223. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  224. package/package.json +10 -10
@@ -11,41 +11,36 @@ import { SolarTimelineDataProvider } from "../timeline/SolarTimelineDataProvider
11
11
  /** @internal */
12
12
  // istanbul ignore next
13
13
  function useSupportsShadowDisplay(viewport) {
14
- var _a;
15
- const [supportsShadows, setSupportsShadows] = React.useState(!!((_a = viewport === null || viewport === void 0 ? void 0 : viewport.displayStyle) === null || _a === void 0 ? void 0 : _a.wantShadows) &&
14
+ const [supportsShadows, setSupportsShadows] = React.useState(!!viewport?.displayStyle?.wantShadows &&
16
15
  !!IModelApp.renderSystem.options.displaySolarShadows);
17
16
  React.useEffect(() => {
18
- var _a;
19
- setSupportsShadows(!!((_a = viewport === null || viewport === void 0 ? void 0 : viewport.displayStyle) === null || _a === void 0 ? void 0 : _a.wantShadows) &&
17
+ setSupportsShadows(!!viewport?.displayStyle?.wantShadows &&
20
18
  !!IModelApp.renderSystem.options.displaySolarShadows);
21
19
  }, [viewport]);
22
20
  React.useEffect(() => {
23
21
  const handleViewChanged = (vp) => {
24
- var _a;
25
- setSupportsShadows(!!((_a = vp === null || vp === void 0 ? void 0 : vp.displayStyle) === null || _a === void 0 ? void 0 : _a.wantShadows) &&
22
+ setSupportsShadows(!!vp?.displayStyle?.wantShadows &&
26
23
  !!IModelApp.renderSystem.options.displaySolarShadows);
27
24
  };
28
- return viewport === null || viewport === void 0 ? void 0 : viewport.onChangeView.addListener(handleViewChanged);
25
+ return viewport?.onChangeView.addListener(handleViewChanged);
29
26
  }, [viewport]);
30
27
  React.useEffect(() => {
31
28
  const handleViewChanged = (vp) => {
32
- var _a;
33
- const wantShadows = !!((_a = vp.displayStyle) === null || _a === void 0 ? void 0 : _a.wantShadows) &&
29
+ const wantShadows = !!vp.displayStyle?.wantShadows &&
34
30
  !!IModelApp.renderSystem.options.displaySolarShadows;
35
31
  if (wantShadows !== supportsShadows)
36
32
  setSupportsShadows(wantShadows);
37
33
  };
38
- return viewport === null || viewport === void 0 ? void 0 : viewport.onChangeView.addListener(handleViewChanged);
34
+ return viewport?.onChangeView.addListener(handleViewChanged);
39
35
  }, [viewport, supportsShadows]);
40
36
  React.useEffect(() => {
41
37
  const handleDisplayStyleChange = (vp) => {
42
- var _a;
43
- const wantShadows = !!((_a = vp.displayStyle) === null || _a === void 0 ? void 0 : _a.wantShadows) &&
38
+ const wantShadows = !!vp.displayStyle?.wantShadows &&
44
39
  !!IModelApp.renderSystem.options.displaySolarShadows;
45
40
  if (wantShadows !== supportsShadows)
46
41
  setSupportsShadows(wantShadows);
47
42
  };
48
- return viewport === null || viewport === void 0 ? void 0 : viewport.onDisplayStyleChanged.addListener(handleDisplayStyleChange);
43
+ return viewport?.onDisplayStyleChanged.addListener(handleDisplayStyleChange);
49
44
  }, [viewport, supportsShadows]);
50
45
  return supportsShadows;
51
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useSolarDataProvider.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useSolarDataProvider.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 Hooks\n */\n\nimport * as React from \"react\";\nimport type { SolarDataProvider } from \"@itwin/imodel-components-react\";\nimport type { ScreenViewport, Viewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { SolarTimelineDataProvider } from \"../timeline/SolarTimelineDataProvider\";\n\n/** @internal */\n// istanbul ignore next\nfunction useSupportsShadowDisplay(viewport: ScreenViewport | undefined) {\n const [supportsShadows, setSupportsShadows] = React.useState(\n !!viewport?.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows\n );\n\n React.useEffect(() => {\n setSupportsShadows(\n !!viewport?.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows\n );\n }, [viewport]);\n\n React.useEffect(() => {\n const handleViewChanged = (vp: Viewport): void => {\n setSupportsShadows(\n !!vp?.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows\n );\n };\n return viewport?.onChangeView.addListener(handleViewChanged);\n }, [viewport]);\n\n React.useEffect(() => {\n const handleViewChanged = (vp: Viewport): void => {\n const wantShadows =\n !!vp.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows;\n if (wantShadows !== supportsShadows) setSupportsShadows(wantShadows);\n };\n return viewport?.onChangeView.addListener(handleViewChanged);\n }, [viewport, supportsShadows]);\n\n React.useEffect(() => {\n const handleDisplayStyleChange = (vp: Viewport): void => {\n const wantShadows =\n !!vp.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows;\n if (wantShadows !== supportsShadows) setSupportsShadows(wantShadows);\n };\n return viewport?.onDisplayStyleChanged.addListener(\n handleDisplayStyleChange\n );\n }, [viewport, supportsShadows]);\n\n return supportsShadows;\n}\n\n/** Hook that returns either a SolarTimelineDataProvider or undefined based on if the supplied viewport's display style is set to display shadows.\n * @beta\n **/\n// istanbul ignore next\nexport function useSolarDataProvider(\n viewport: ScreenViewport | undefined\n): SolarDataProvider | undefined {\n const supportsShadowDisplay = useSupportsShadowDisplay(viewport);\n const [solarDataProvider, setSolarDataProvider] = React.useState(() => {\n return supportsShadowDisplay && viewport\n ? new SolarTimelineDataProvider(viewport.view, viewport)\n : undefined;\n });\n\n React.useEffect(() => {\n const newSolarDataProvider =\n supportsShadowDisplay && viewport\n ? new SolarTimelineDataProvider(viewport.view, viewport)\n : undefined;\n setSolarDataProvider(newSolarDataProvider);\n }, [supportsShadowDisplay, viewport]);\n\n return solarDataProvider;\n}\n"]}
1
+ {"version":3,"file":"useSolarDataProvider.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useSolarDataProvider.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 Hooks\n */\n\nimport * as React from \"react\";\nimport type { SolarDataProvider } from \"@itwin/imodel-components-react\";\nimport type { ScreenViewport, Viewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { SolarTimelineDataProvider } from \"../timeline/SolarTimelineDataProvider\";\n\n/** @internal */\n// istanbul ignore next\nfunction useSupportsShadowDisplay(viewport: ScreenViewport | undefined) {\n const [supportsShadows, setSupportsShadows] = React.useState(\n !!viewport?.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows\n );\n\n React.useEffect(() => {\n setSupportsShadows(\n !!viewport?.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows\n );\n }, [viewport]);\n\n React.useEffect(() => {\n const handleViewChanged = (vp: Viewport): void => {\n setSupportsShadows(\n !!vp?.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows\n );\n };\n return viewport?.onChangeView.addListener(handleViewChanged);\n }, [viewport]);\n\n React.useEffect(() => {\n const handleViewChanged = (vp: Viewport): void => {\n const wantShadows =\n !!vp.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows;\n if (wantShadows !== supportsShadows) setSupportsShadows(wantShadows);\n };\n return viewport?.onChangeView.addListener(handleViewChanged);\n }, [viewport, supportsShadows]);\n\n React.useEffect(() => {\n const handleDisplayStyleChange = (vp: Viewport): void => {\n const wantShadows =\n !!vp.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows;\n if (wantShadows !== supportsShadows) setSupportsShadows(wantShadows);\n };\n return viewport?.onDisplayStyleChanged.addListener(\n handleDisplayStyleChange\n );\n }, [viewport, supportsShadows]);\n\n return supportsShadows;\n}\n\n/** Hook that returns either a SolarTimelineDataProvider or undefined based on if the supplied viewport's display style is set to display shadows.\n * @beta\n **/\n// istanbul ignore next\nexport function useSolarDataProvider(\n viewport: ScreenViewport | undefined\n): SolarDataProvider | undefined {\n const supportsShadowDisplay = useSupportsShadowDisplay(viewport);\n const [solarDataProvider, setSolarDataProvider] = React.useState(() => {\n return supportsShadowDisplay && viewport\n ? new SolarTimelineDataProvider(viewport.view, viewport)\n : undefined;\n });\n\n React.useEffect(() => {\n const newSolarDataProvider =\n supportsShadowDisplay && viewport\n ? new SolarTimelineDataProvider(viewport.view, viewport)\n : undefined;\n setSolarDataProvider(newSolarDataProvider);\n }, [supportsShadowDisplay, viewport]);\n\n return solarDataProvider;\n}\n"]}
@@ -21,19 +21,18 @@ function useActivityMessage({ activityMessageInfo, dismissActivityMessage, cance
21
21
  toaster.setSettings({ placement: "bottom" });
22
22
  }, []);
23
23
  React.useEffect(() => {
24
- var _a, _b;
25
- if (activityMessageInfo === null || activityMessageInfo === void 0 ? void 0 : activityMessageInfo.restored) {
24
+ if (activityMessageInfo?.restored) {
26
25
  recentToast.current = toaster.informational(React.createElement(ActivityMessageContent, { initialActivityMessageInfo: activityMessageInfo }), {
27
26
  onRemove: dismissActivityMessage,
28
27
  type: "persisting",
29
- link: ((_a = activityMessageInfo === null || activityMessageInfo === void 0 ? void 0 : activityMessageInfo.details) === null || _a === void 0 ? void 0 : _a.supportsCancellation) &&
28
+ link: activityMessageInfo?.details?.supportsCancellation &&
30
29
  cancelActivityMessage
31
30
  ? { title: cancelLabel, onClick: cancelActivityMessage }
32
31
  : undefined,
33
32
  });
34
33
  }
35
34
  if (!activityMessageInfo) {
36
- (_b = recentToast.current) === null || _b === void 0 ? void 0 : _b.close();
35
+ recentToast.current?.close();
37
36
  }
38
37
  }, [
39
38
  activityMessageInfo,
@@ -69,7 +68,6 @@ export function ActivityMessageRenderer() {
69
68
  * @internal
70
69
  */
71
70
  function ActivityMessageContent({ initialActivityMessageInfo, }) {
72
- var _a, _b;
73
71
  const [percentCompleteLabel] = React.useState(UiFramework.translate("activityCenter.percentComplete"));
74
72
  const [activityMessageInfo, setActivityMessageInfo] = React.useState(initialActivityMessageInfo);
75
73
  React.useEffect(() => {
@@ -82,7 +80,7 @@ function ActivityMessageContent({ initialActivityMessageInfo, }) {
82
80
  activityMessageInfo.message && (React.createElement(Text, null,
83
81
  React.createElement(React.Fragment, null, activityMessageInfo.message.reactNode ||
84
82
  activityMessageInfo.message))),
85
- !!((_a = activityMessageInfo.details) === null || _a === void 0 ? void 0 : _a.showPercentInMessage) && (React.createElement(Text, { variant: "small" }, `${activityMessageInfo.percentage} ${percentCompleteLabel}`)),
86
- ((_b = activityMessageInfo.details) === null || _b === void 0 ? void 0 : _b.showProgressBar) && (React.createElement(ProgressLinear, { value: activityMessageInfo === null || activityMessageInfo === void 0 ? void 0 : activityMessageInfo.percentage }))));
83
+ !!activityMessageInfo.details?.showPercentInMessage && (React.createElement(Text, { variant: "small" }, `${activityMessageInfo.percentage} ${percentCompleteLabel}`)),
84
+ activityMessageInfo.details?.showProgressBar && (React.createElement(ProgressLinear, { value: activityMessageInfo?.percentage }))));
87
85
  }
88
86
  //# sourceMappingURL=ActivityMessage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActivityMessage.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessage.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 * as React from \"react\";\nimport type { ReactMessage } from \"@itwin/core-react\";\nimport { UiCore } from \"@itwin/core-react\";\nimport { ProgressLinear, Text, toaster } from \"@itwin/itwinui-react\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { ActivityMessageEventArgs } from \"../messages/MessageManager\";\nimport { MessageManager } from \"../messages/MessageManager\";\n\ninterface UseActivityMessageProps {\n cancelActivityMessage?: () => void;\n dismissActivityMessage?: () => void;\n activityMessageInfo?: ActivityMessageEventArgs;\n}\n\n/**\n * Hook to render an Activity message.\n * @internal\n */\nfunction useActivityMessage({\n activityMessageInfo,\n dismissActivityMessage,\n cancelActivityMessage,\n}: UseActivityMessageProps) {\n const [cancelLabel] = React.useState(UiCore.translate(\"dialog.cancel\"));\n const recentToast = React.useRef<{ close: () => void } | undefined>();\n React.useEffect(() => {\n toaster.setSettings({ placement: \"bottom\" });\n }, []);\n\n React.useEffect(() => {\n if (activityMessageInfo?.restored) {\n recentToast.current = toaster.informational(\n <ActivityMessageContent\n initialActivityMessageInfo={activityMessageInfo}\n />,\n {\n onRemove: dismissActivityMessage,\n type: \"persisting\",\n link:\n activityMessageInfo?.details?.supportsCancellation &&\n cancelActivityMessage\n ? { title: cancelLabel, onClick: cancelActivityMessage }\n : undefined,\n }\n );\n }\n if (!activityMessageInfo) {\n recentToast.current?.close();\n }\n }, [\n activityMessageInfo,\n cancelActivityMessage,\n cancelLabel,\n dismissActivityMessage,\n ]);\n}\n\n/**\n * Component wrapping the `useActivityMessage` hook to use in class components.\n * @internal\n */\nexport function ActivityMessageRenderer() {\n const [activityMessageInfo, setActivityMessageInfo] = React.useState<\n ActivityMessageEventArgs | undefined\n >();\n React.useEffect(() => {\n return MessageManager.onActivityMessageUpdatedEvent.addListener((args) => {\n setActivityMessageInfo(args);\n });\n }, []);\n\n React.useEffect(() => {\n return MessageManager.onActivityMessageCancelledEvent.addListener(() => {\n setActivityMessageInfo(undefined);\n });\n }, []);\n\n const cancelActivityMessage = React.useCallback(() => {\n MessageManager.endActivityMessage(false);\n }, []);\n\n useActivityMessage({ activityMessageInfo, cancelActivityMessage });\n return <></>;\n}\n\n/**\n * Component used to show and update activity message content.\n * @internal\n */\nfunction ActivityMessageContent({\n initialActivityMessageInfo,\n}: {\n initialActivityMessageInfo: ActivityMessageEventArgs;\n}) {\n const [percentCompleteLabel] = React.useState(\n UiFramework.translate(\"activityCenter.percentComplete\")\n );\n const [activityMessageInfo, setActivityMessageInfo] = React.useState(\n initialActivityMessageInfo\n );\n\n React.useEffect(() => {\n const handleActivityMessageUpdatedEvent = (\n args: ActivityMessageEventArgs\n ) => {\n setActivityMessageInfo(args);\n };\n\n return MessageManager.onActivityMessageUpdatedEvent.addListener(\n handleActivityMessageUpdatedEvent\n );\n }, []);\n\n return (\n <>\n {activityMessageInfo.message && (\n <Text>\n <>\n {(activityMessageInfo.message as ReactMessage).reactNode ||\n activityMessageInfo.message}\n </>\n </Text>\n )}\n {!!activityMessageInfo.details?.showPercentInMessage && (\n <Text variant=\"small\">{`${activityMessageInfo.percentage} ${percentCompleteLabel}`}</Text>\n )}\n {activityMessageInfo.details?.showProgressBar && (\n <ProgressLinear value={activityMessageInfo?.percentage} />\n )}\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"ActivityMessage.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessage.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 * as React from \"react\";\nimport type { ReactMessage } from \"@itwin/core-react\";\nimport { UiCore } from \"@itwin/core-react\";\nimport { ProgressLinear, Text, toaster } from \"@itwin/itwinui-react\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { ActivityMessageEventArgs } from \"../messages/MessageManager\";\nimport { MessageManager } from \"../messages/MessageManager\";\n\ninterface UseActivityMessageProps {\n cancelActivityMessage?: () => void;\n dismissActivityMessage?: () => void;\n activityMessageInfo?: ActivityMessageEventArgs;\n}\n\n/**\n * Hook to render an Activity message.\n * @internal\n */\nfunction useActivityMessage({\n activityMessageInfo,\n dismissActivityMessage,\n cancelActivityMessage,\n}: UseActivityMessageProps) {\n const [cancelLabel] = React.useState(UiCore.translate(\"dialog.cancel\"));\n const recentToast = React.useRef<{ close: () => void } | undefined>();\n React.useEffect(() => {\n toaster.setSettings({ placement: \"bottom\" });\n }, []);\n\n React.useEffect(() => {\n if (activityMessageInfo?.restored) {\n recentToast.current = toaster.informational(\n <ActivityMessageContent\n initialActivityMessageInfo={activityMessageInfo}\n />,\n {\n onRemove: dismissActivityMessage,\n type: \"persisting\",\n link:\n activityMessageInfo?.details?.supportsCancellation &&\n cancelActivityMessage\n ? { title: cancelLabel, onClick: cancelActivityMessage }\n : undefined,\n }\n );\n }\n if (!activityMessageInfo) {\n recentToast.current?.close();\n }\n }, [\n activityMessageInfo,\n cancelActivityMessage,\n cancelLabel,\n dismissActivityMessage,\n ]);\n}\n\n/**\n * Component wrapping the `useActivityMessage` hook to use in class components.\n * @internal\n */\nexport function ActivityMessageRenderer() {\n const [activityMessageInfo, setActivityMessageInfo] = React.useState<\n ActivityMessageEventArgs | undefined\n >();\n React.useEffect(() => {\n return MessageManager.onActivityMessageUpdatedEvent.addListener((args) => {\n setActivityMessageInfo(args);\n });\n }, []);\n\n React.useEffect(() => {\n return MessageManager.onActivityMessageCancelledEvent.addListener(() => {\n setActivityMessageInfo(undefined);\n });\n }, []);\n\n const cancelActivityMessage = React.useCallback(() => {\n MessageManager.endActivityMessage(false);\n }, []);\n\n useActivityMessage({ activityMessageInfo, cancelActivityMessage });\n return <></>;\n}\n\n/**\n * Component used to show and update activity message content.\n * @internal\n */\nfunction ActivityMessageContent({\n initialActivityMessageInfo,\n}: {\n initialActivityMessageInfo: ActivityMessageEventArgs;\n}) {\n const [percentCompleteLabel] = React.useState(\n UiFramework.translate(\"activityCenter.percentComplete\")\n );\n const [activityMessageInfo, setActivityMessageInfo] = React.useState(\n initialActivityMessageInfo\n );\n\n React.useEffect(() => {\n const handleActivityMessageUpdatedEvent = (\n args: ActivityMessageEventArgs\n ) => {\n setActivityMessageInfo(args);\n };\n\n return MessageManager.onActivityMessageUpdatedEvent.addListener(\n handleActivityMessageUpdatedEvent\n );\n }, []);\n\n return (\n <>\n {activityMessageInfo.message && (\n <Text>\n <>\n {(activityMessageInfo.message as ReactMessage).reactNode ||\n activityMessageInfo.message}\n </>\n </Text>\n )}\n {!!activityMessageInfo.details?.showPercentInMessage && (\n <Text variant=\"small\">{`${activityMessageInfo.percentage} ${percentCompleteLabel}`}</Text>\n )}\n {activityMessageInfo.details?.showProgressBar && (\n <ProgressLinear value={activityMessageInfo?.percentage} />\n )}\n </>\n );\n}\n"]}
@@ -199,11 +199,10 @@ class ViewSelector extends React.Component {
199
199
  const query = { wantPrivate: false };
200
200
  const specs = await this.props.imodel.views.getViewList(query);
201
201
  specs.forEach((spec) => {
202
- var _a;
203
202
  const viewItem = {
204
203
  key: spec.id,
205
204
  name: spec.name,
206
- enabled: spec.id === ((_a = IModelApp.viewManager.selectedView) === null || _a === void 0 ? void 0 : _a.view.id)
205
+ enabled: spec.id === IModelApp.viewManager.selectedView?.view.id
207
206
  ? true
208
207
  : false,
209
208
  type: ListItemType.Item,
@@ -228,16 +227,16 @@ class ViewSelector extends React.Component {
228
227
  sheetsFiltered = [];
229
228
  unknownFiltered = [];
230
229
  views3dFuzzySearchResults.forEach(function (result) {
231
- views3dFiltered === null || views3dFiltered === void 0 ? void 0 : views3dFiltered.push(result.item);
230
+ views3dFiltered?.push(result.item);
232
231
  });
233
232
  views2dFuzzySearchResults.forEach(function (result) {
234
- views2dFiltered === null || views2dFiltered === void 0 ? void 0 : views2dFiltered.push(result.item);
233
+ views2dFiltered?.push(result.item);
235
234
  });
236
235
  sheetsFuzzySearchResults.forEach(function (result) {
237
- sheetsFiltered === null || sheetsFiltered === void 0 ? void 0 : sheetsFiltered.push(result.item);
236
+ sheetsFiltered?.push(result.item);
238
237
  });
239
238
  unknownFuzzySearchResults.forEach(function (result) {
240
- unknownFiltered === null || unknownFiltered === void 0 ? void 0 : unknownFiltered.push(result.item);
239
+ unknownFiltered?.push(result.item);
241
240
  });
242
241
  }
243
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ViewSelector.js","sourceRoot":"","sources":["../../../../src/appui-react/pickers/ViewSelector.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 Picker\n */\n\nimport * as React from \"react\";\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { IModelConnection, ViewState } from \"@itwin/core-frontend\";\nimport { FuzzySearch, IModelApp } from \"@itwin/core-frontend\";\nimport { IconSpecUtilities, UiEvent } from \"@itwin/appui-abstract\";\nimport type { SupportsViewSelectorChange } from \"../content/ContentControl\";\nimport { connectIModelConnection } from \"../redux/connectIModel\";\nimport { UiFramework } from \"../UiFramework\";\nimport { ViewUtilities } from \"../utils/ViewUtilities\";\nimport type { ListItem } from \"./ListPicker\";\nimport { ListItemType, ListPicker } from \"./ListPicker\";\nimport { debounce } from \"lodash\";\nimport svgSavedView from \"@bentley/icons-generic/icons/saved-view.svg\";\n\n// cSpell:ignore Spatials\n\n/** [[ViewSelectorChangedEvent]] Args interface.\n * @beta\n */\nexport interface ViewSelectorChangedEventArgs {\n iModelConnection: IModelConnection;\n viewDefinitionId: Id64String;\n viewState: ViewState;\n name: string;\n}\n\n/** ViewSelector Changed Event class.\n * @beta\n */\nexport class ViewSelectorChangedEvent extends UiEvent<ViewSelectorChangedEventArgs> {}\n\n/** Properties for the [[ViewSelector]] component\n * @beta\n */\nexport interface ViewSelectorProps {\n imodel?: IModelConnection;\n listenForShowUpdates?: boolean;\n\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n searchBox?: boolean;\n panelOnly?: boolean;\n}\n\n/** State for the [[ViewSelector]] component\n * @beta\n */\ninterface ViewSelectorState {\n items: ListItem[];\n title: string;\n initialized: boolean;\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n searchBox: boolean;\n panelOnly: boolean;\n expand: boolean;\n}\n\n/** Default properties of [[ViewSelector]] component.\n * @beta\n */\nexport type ViewSelectorDefaultProps = Pick<\n ViewSelectorProps,\n \"showSpatials\" | \"showDrawings\" | \"showSheets\" | \"showUnknown\"\n>;\n\n/** ViewSelector Show Update Event Args interface.\n */\ninterface ViewSelectorShowUpdateEventArgs {\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n}\n\n/** ViewSelector Show Update Event class.\n */\nclass ViewSelectorShowUpdateEvent extends UiEvent<ViewSelectorShowUpdateEventArgs> {}\n\n/** View Selector React component\n * @beta\n */\nexport class ViewSelector extends React.Component<\n ViewSelectorProps,\n ViewSelectorState\n> {\n private static readonly _onViewSelectorShowUpdateEvent =\n new ViewSelectorShowUpdateEvent();\n private _removeShowUpdateListener?: () => void;\n private _isMounted = false;\n private _searchInput = \"\";\n\n public static readonly defaultProps: ViewSelectorDefaultProps = {\n showSpatials: true,\n showDrawings: true,\n showSheets: true,\n showUnknown: true,\n };\n\n /** Gets the [[ViewSelectorChangedEvent]] */\n public static readonly onViewSelectorChangedEvent =\n new ViewSelectorChangedEvent();\n\n /** Updates the ViewSelector show settings.\n */\n public static updateShowSettings(\n showSpatials: boolean,\n showDrawings: boolean,\n showSheets: boolean,\n showUnknown: boolean\n ): void {\n ViewSelector._onViewSelectorShowUpdateEvent.emit({\n showSpatials,\n showDrawings,\n showSheets,\n showUnknown,\n });\n }\n\n /** Creates a ViewSelector */\n constructor(props: ViewSelectorProps) {\n super(props);\n\n this.state = {\n items: new Array<ListItem>(),\n title: UiFramework.translate(\"viewTypes.views\"),\n initialized: false,\n showSpatials: props.showSpatials,\n showDrawings: props.showDrawings,\n showSheets: props.showSheets,\n showUnknown: props.showUnknown,\n searchBox: props.searchBox ? props.searchBox : true,\n panelOnly: props.panelOnly ? props.panelOnly : false,\n expand: false,\n };\n }\n\n public override async componentDidMount() {\n this._isMounted = true;\n if (this.props.listenForShowUpdates)\n this._removeShowUpdateListener =\n ViewSelector._onViewSelectorShowUpdateEvent.addListener(\n this._handleViewSelectorShowUpdateEvent\n );\n\n await this.loadViews();\n }\n\n public override async componentDidUpdate(prevProps: ViewSelectorProps) {\n if (this.props.imodel !== prevProps.imodel) {\n await this.loadViews();\n }\n }\n\n public override componentWillUnmount() {\n this._isMounted = false;\n // istanbul ignore else\n if (this._removeShowUpdateListener) this._removeShowUpdateListener();\n }\n\n private _handleViewSelectorShowUpdateEvent = (\n args: ViewSelectorShowUpdateEventArgs\n ): void => {\n // istanbul ignore next\n if (!this._isMounted) return;\n\n this.setState(args, async () => this.loadViews());\n };\n\n private setStateContainers(\n views3d: ListItem[],\n views2d: ListItem[],\n sheets: ListItem[],\n unknown?: ListItem[],\n views3dFiltered?: ListItem[],\n views2dFiltered?: ListItem[],\n sheetsFiltered?: ListItem[],\n unknownFiltered?: ListItem[]\n ) {\n const views3dContainer: ListItem = {\n key: \"views3dContainer\",\n name: UiFramework.translate(\"viewTypes.spatialViews\"),\n enabled: false,\n type: ListItemType.Container,\n children: views3dFiltered ? views3dFiltered : views3d,\n };\n\n const views2dContainer: ListItem = {\n key: \"views2dContainer\",\n name: UiFramework.translate(\"viewTypes.drawings\"),\n enabled: false,\n type: ListItemType.Container,\n children: views2dFiltered ? views2dFiltered : views2d,\n };\n\n const sheetContainer: ListItem = {\n key: \"sheetContainer\",\n name: UiFramework.translate(\"viewTypes.sheets\"),\n enabled: false,\n type: ListItemType.Container,\n children: sheetsFiltered ? sheetsFiltered : sheets,\n };\n\n const containers = [views3dContainer, views2dContainer, sheetContainer];\n\n // istanbul ignore if\n if (unknown && unknown.length > 0) {\n // This should never show, but just in case we missed a type of view state\n const unknownContainer: ListItem = {\n key: \"unknownContainer\",\n name: UiFramework.translate(\"viewTypes.others\"),\n enabled: false,\n type: ListItemType.Container,\n children: unknownFiltered ? unknownFiltered : unknown,\n };\n\n if (unknown.length !== 0) containers.push(unknownContainer);\n }\n\n // istanbul ignore next\n if (!this._isMounted) return;\n\n this.setState({\n items: containers,\n title: UiFramework.translate(\"viewTypes.views\"),\n initialized: true,\n });\n }\n /**\n * Query the views and set the initial state with the iModel's views.\n */\n public async loadViews(): Promise<void> {\n // Query views and add them to state\n const views3d: ListItem[] = [];\n const views2d: ListItem[] = [];\n const sheets: ListItem[] = [];\n const unknown: ListItem[] = [];\n let views3dFiltered: ListItem[] | undefined;\n let views2dFiltered: ListItem[] | undefined;\n let sheetsFiltered: ListItem[] | undefined;\n let unknownFiltered: ListItem[] | undefined;\n const fuzzy = new FuzzySearch<ListItem>();\n\n if (this.props.imodel && this.props.imodel.views.getViewList) {\n const query = { wantPrivate: false };\n const specs = await this.props.imodel.views.getViewList(query);\n\n specs.forEach((spec: IModelConnection.ViewSpec) => {\n const viewItem: ListItem = {\n key: spec.id,\n name: spec.name,\n enabled:\n spec.id === IModelApp.viewManager.selectedView?.view.id\n ? true\n : false,\n type: ListItemType.Item,\n };\n\n const className = ViewUtilities.getBisBaseClass(spec.class);\n\n if (ViewUtilities.isSpatial(className) && this.state.showSpatials)\n views3d.push(viewItem);\n else if (ViewUtilities.isDrawing(className) && this.state.showDrawings)\n views2d.push(viewItem);\n else if (ViewUtilities.isSheet(className) && this.state.showSheets)\n sheets.push(viewItem);\n else if (this.state.showUnknown) unknown.push(viewItem);\n });\n\n if (this._searchInput.length > 0) {\n const views3dFuzzySearchResults = fuzzy.search(\n views3d,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const views2dFuzzySearchResults = fuzzy.search(\n views2d,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const sheetsFuzzySearchResults = fuzzy.search(\n sheets,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const unknownFuzzySearchResults = fuzzy.search(\n unknown,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n views3dFiltered = [];\n views2dFiltered = [];\n sheetsFiltered = [];\n unknownFiltered = [];\n views3dFuzzySearchResults.forEach(function (result) {\n views3dFiltered?.push(result.item);\n });\n views2dFuzzySearchResults.forEach(function (result) {\n views2dFiltered?.push(result.item);\n });\n sheetsFuzzySearchResults.forEach(function (result) {\n sheetsFiltered?.push(result.item);\n });\n unknownFuzzySearchResults.forEach(function (result) {\n unknownFiltered?.push(result.item);\n });\n }\n }\n\n this.setStateContainers(\n views3d,\n views2d,\n sheets,\n unknown,\n views3dFiltered,\n views2dFiltered,\n sheetsFiltered,\n unknownFiltered\n );\n }\n\n /**\n * Update state of the entries in the widget.\n * @param viewId Identifier for the relevant view\n */\n // istanbul ignore next\n public async updateState(viewId?: any): Promise<void> {\n // Wait for initialization finished\n if (!this.state.initialized) return;\n\n // Query views and add them to state\n const views3d: ListItem[] = this.state.items[0].children!;\n const views2d: ListItem[] = this.state.items[1].children!;\n const sheets: ListItem[] = this.state.items[2].children!;\n const unknown: ListItem[] =\n this.state.items.length > 3 ? this.state.items[3].children! : [];\n\n const updateChildren = (item: ListItem) => {\n if (item.key === viewId) return { ...item, enabled: true };\n else return { ...item, enabled: false };\n };\n\n this.setStateContainers(\n views3d.map(updateChildren),\n views2d.map(updateChildren),\n sheets.map(updateChildren),\n unknown.map(updateChildren)\n );\n }\n\n // enable/disable the models\n // istanbul ignore next\n private _setEnabled = async (item: ListItem, _enabled: boolean) => {\n const activeContentControl =\n UiFramework.content.getActiveContentControl() as unknown as SupportsViewSelectorChange;\n if (\n !activeContentControl ||\n !activeContentControl.supportsViewSelectorChange\n ) {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `No active ContentControl for ViewSelector change`\n );\n return;\n }\n\n // Enable the item temporarily to let user see that their click was registered\n // while we query for view state and change the current view which may take a bit\n if (_enabled && item.type !== ListItemType.Container) {\n // This itemMapper simply looks through all the list items and their nested children and enables the one\n // that we have registered to enable\n // Also disable all other items\n const itemMapper: (tempItem: ListItem) => ListItem = (\n tempItem: ListItem\n ) => {\n if (tempItem.type === ListItemType.Container) {\n return { ...tempItem, children: tempItem.children!.map(itemMapper) };\n } else if (tempItem.key === item.key) {\n return { ...tempItem, enabled: true };\n } else {\n return { ...tempItem, enabled: false };\n }\n };\n\n // Create the new array with the current item enabled\n const itemsWithEnabled = this.state.items.map(itemMapper);\n\n // istanbul ignore next\n if (!this._isMounted) return;\n\n // Update the state so that we show the user it was enabled while we work in the background\n this.setState({ items: itemsWithEnabled });\n }\n\n // Load the view state using the viewSpec's ID\n const viewState = await this.props.imodel!.views.load(item.key);\n\n // Let activeContentControl process the ViewSelector change\n await activeContentControl.processViewSelectorChange(\n this.props.imodel!,\n item.key,\n viewState,\n item.name!\n );\n\n // Emit a change event\n ViewSelector.onViewSelectorChangedEvent.emit({\n iModelConnection: this.props.imodel!,\n viewDefinitionId: item.key,\n viewState,\n name: item.name!,\n });\n\n // Set state to show enabled the view that got selected\n void this.updateState(item.key);\n };\n\n // Hook on the category selector being expanded so that we may initialize if needed\n // istanbul ignore next\n private _onExpanded = (expand: boolean) => {\n if (expand)\n void this.updateState(\n IModelApp.viewManager.selectedView\n ? IModelApp.viewManager.selectedView.view.id\n : undefined\n );\n };\n\n /**\n * Renders ViewSelector component\n */\n public override render() {\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgSavedView);\n\n const { imodel, ...props } = this.props;\n\n return (\n <ListPicker\n {...props}\n title={this.state.title}\n setEnabled={this._setEnabled}\n items={this.state.items}\n iconSpec={iconSpec}\n onExpanded={this._onExpanded}\n searchBox={this.state.searchBox}\n onSearchValueChange={debounce((search: string) => {\n this._searchInput = search;\n if (\n this._isMounted &&\n this.state.expand === false &&\n this._searchInput.length > 0\n )\n this.setState({ expand: true });\n void this.loadViews();\n }, 300)}\n panelOnly={this.state.panelOnly}\n expanded={this.state.expand}\n />\n );\n }\n}\n\n/** ViewSelector that is connected to the IModelConnection property in the Redux store. The application must set up the Redux store and include the FrameworkReducer.\n * @beta\n */\nexport const IModelConnectedViewSelector = connectIModelConnection(\n null,\n null\n)(ViewSelector);\n"]}
1
+ {"version":3,"file":"ViewSelector.js","sourceRoot":"","sources":["../../../../src/appui-react/pickers/ViewSelector.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 Picker\n */\n\nimport * as React from \"react\";\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { IModelConnection, ViewState } from \"@itwin/core-frontend\";\nimport { FuzzySearch, IModelApp } from \"@itwin/core-frontend\";\nimport { IconSpecUtilities, UiEvent } from \"@itwin/appui-abstract\";\nimport type { SupportsViewSelectorChange } from \"../content/ContentControl\";\nimport { connectIModelConnection } from \"../redux/connectIModel\";\nimport { UiFramework } from \"../UiFramework\";\nimport { ViewUtilities } from \"../utils/ViewUtilities\";\nimport type { ListItem } from \"./ListPicker\";\nimport { ListItemType, ListPicker } from \"./ListPicker\";\nimport { debounce } from \"lodash\";\nimport svgSavedView from \"@bentley/icons-generic/icons/saved-view.svg\";\n\n// cSpell:ignore Spatials\n\n/** [[ViewSelectorChangedEvent]] Args interface.\n * @beta\n */\nexport interface ViewSelectorChangedEventArgs {\n iModelConnection: IModelConnection;\n viewDefinitionId: Id64String;\n viewState: ViewState;\n name: string;\n}\n\n/** ViewSelector Changed Event class.\n * @beta\n */\nexport class ViewSelectorChangedEvent extends UiEvent<ViewSelectorChangedEventArgs> {}\n\n/** Properties for the [[ViewSelector]] component\n * @beta\n */\nexport interface ViewSelectorProps {\n imodel?: IModelConnection;\n listenForShowUpdates?: boolean;\n\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n searchBox?: boolean;\n panelOnly?: boolean;\n}\n\n/** State for the [[ViewSelector]] component\n * @beta\n */\ninterface ViewSelectorState {\n items: ListItem[];\n title: string;\n initialized: boolean;\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n searchBox: boolean;\n panelOnly: boolean;\n expand: boolean;\n}\n\n/** Default properties of [[ViewSelector]] component.\n * @beta\n */\nexport type ViewSelectorDefaultProps = Pick<\n ViewSelectorProps,\n \"showSpatials\" | \"showDrawings\" | \"showSheets\" | \"showUnknown\"\n>;\n\n/** ViewSelector Show Update Event Args interface.\n */\ninterface ViewSelectorShowUpdateEventArgs {\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n}\n\n/** ViewSelector Show Update Event class.\n */\nclass ViewSelectorShowUpdateEvent extends UiEvent<ViewSelectorShowUpdateEventArgs> {}\n\n/** View Selector React component\n * @beta\n */\nexport class ViewSelector extends React.Component<\n ViewSelectorProps,\n ViewSelectorState\n> {\n private static readonly _onViewSelectorShowUpdateEvent =\n new ViewSelectorShowUpdateEvent();\n private _removeShowUpdateListener?: () => void;\n private _isMounted = false;\n private _searchInput = \"\";\n\n public static readonly defaultProps: ViewSelectorDefaultProps = {\n showSpatials: true,\n showDrawings: true,\n showSheets: true,\n showUnknown: true,\n };\n\n /** Gets the [[ViewSelectorChangedEvent]] */\n public static readonly onViewSelectorChangedEvent =\n new ViewSelectorChangedEvent();\n\n /** Updates the ViewSelector show settings.\n */\n public static updateShowSettings(\n showSpatials: boolean,\n showDrawings: boolean,\n showSheets: boolean,\n showUnknown: boolean\n ): void {\n ViewSelector._onViewSelectorShowUpdateEvent.emit({\n showSpatials,\n showDrawings,\n showSheets,\n showUnknown,\n });\n }\n\n /** Creates a ViewSelector */\n constructor(props: ViewSelectorProps) {\n super(props);\n\n this.state = {\n items: new Array<ListItem>(),\n title: UiFramework.translate(\"viewTypes.views\"),\n initialized: false,\n showSpatials: props.showSpatials,\n showDrawings: props.showDrawings,\n showSheets: props.showSheets,\n showUnknown: props.showUnknown,\n searchBox: props.searchBox ? props.searchBox : true,\n panelOnly: props.panelOnly ? props.panelOnly : false,\n expand: false,\n };\n }\n\n public override async componentDidMount() {\n this._isMounted = true;\n if (this.props.listenForShowUpdates)\n this._removeShowUpdateListener =\n ViewSelector._onViewSelectorShowUpdateEvent.addListener(\n this._handleViewSelectorShowUpdateEvent\n );\n\n await this.loadViews();\n }\n\n public override async componentDidUpdate(prevProps: ViewSelectorProps) {\n if (this.props.imodel !== prevProps.imodel) {\n await this.loadViews();\n }\n }\n\n public override componentWillUnmount() {\n this._isMounted = false;\n // istanbul ignore else\n if (this._removeShowUpdateListener) this._removeShowUpdateListener();\n }\n\n private _handleViewSelectorShowUpdateEvent = (\n args: ViewSelectorShowUpdateEventArgs\n ): void => {\n // istanbul ignore next\n if (!this._isMounted) return;\n\n this.setState(args, async () => this.loadViews());\n };\n\n private setStateContainers(\n views3d: ListItem[],\n views2d: ListItem[],\n sheets: ListItem[],\n unknown?: ListItem[],\n views3dFiltered?: ListItem[],\n views2dFiltered?: ListItem[],\n sheetsFiltered?: ListItem[],\n unknownFiltered?: ListItem[]\n ) {\n const views3dContainer: ListItem = {\n key: \"views3dContainer\",\n name: UiFramework.translate(\"viewTypes.spatialViews\"),\n enabled: false,\n type: ListItemType.Container,\n children: views3dFiltered ? views3dFiltered : views3d,\n };\n\n const views2dContainer: ListItem = {\n key: \"views2dContainer\",\n name: UiFramework.translate(\"viewTypes.drawings\"),\n enabled: false,\n type: ListItemType.Container,\n children: views2dFiltered ? views2dFiltered : views2d,\n };\n\n const sheetContainer: ListItem = {\n key: \"sheetContainer\",\n name: UiFramework.translate(\"viewTypes.sheets\"),\n enabled: false,\n type: ListItemType.Container,\n children: sheetsFiltered ? sheetsFiltered : sheets,\n };\n\n const containers = [views3dContainer, views2dContainer, sheetContainer];\n\n // istanbul ignore if\n if (unknown && unknown.length > 0) {\n // This should never show, but just in case we missed a type of view state\n const unknownContainer: ListItem = {\n key: \"unknownContainer\",\n name: UiFramework.translate(\"viewTypes.others\"),\n enabled: false,\n type: ListItemType.Container,\n children: unknownFiltered ? unknownFiltered : unknown,\n };\n\n if (unknown.length !== 0) containers.push(unknownContainer);\n }\n\n // istanbul ignore next\n if (!this._isMounted) return;\n\n this.setState({\n items: containers,\n title: UiFramework.translate(\"viewTypes.views\"),\n initialized: true,\n });\n }\n /**\n * Query the views and set the initial state with the iModel's views.\n */\n public async loadViews(): Promise<void> {\n // Query views and add them to state\n const views3d: ListItem[] = [];\n const views2d: ListItem[] = [];\n const sheets: ListItem[] = [];\n const unknown: ListItem[] = [];\n let views3dFiltered: ListItem[] | undefined;\n let views2dFiltered: ListItem[] | undefined;\n let sheetsFiltered: ListItem[] | undefined;\n let unknownFiltered: ListItem[] | undefined;\n const fuzzy = new FuzzySearch<ListItem>();\n\n if (this.props.imodel && this.props.imodel.views.getViewList) {\n const query = { wantPrivate: false };\n const specs = await this.props.imodel.views.getViewList(query);\n\n specs.forEach((spec: IModelConnection.ViewSpec) => {\n const viewItem: ListItem = {\n key: spec.id,\n name: spec.name,\n enabled:\n spec.id === IModelApp.viewManager.selectedView?.view.id\n ? true\n : false,\n type: ListItemType.Item,\n };\n\n const className = ViewUtilities.getBisBaseClass(spec.class);\n\n if (ViewUtilities.isSpatial(className) && this.state.showSpatials)\n views3d.push(viewItem);\n else if (ViewUtilities.isDrawing(className) && this.state.showDrawings)\n views2d.push(viewItem);\n else if (ViewUtilities.isSheet(className) && this.state.showSheets)\n sheets.push(viewItem);\n else if (this.state.showUnknown) unknown.push(viewItem);\n });\n\n if (this._searchInput.length > 0) {\n const views3dFuzzySearchResults = fuzzy.search(\n views3d,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const views2dFuzzySearchResults = fuzzy.search(\n views2d,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const sheetsFuzzySearchResults = fuzzy.search(\n sheets,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const unknownFuzzySearchResults = fuzzy.search(\n unknown,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n views3dFiltered = [];\n views2dFiltered = [];\n sheetsFiltered = [];\n unknownFiltered = [];\n views3dFuzzySearchResults.forEach(function (result) {\n views3dFiltered?.push(result.item);\n });\n views2dFuzzySearchResults.forEach(function (result) {\n views2dFiltered?.push(result.item);\n });\n sheetsFuzzySearchResults.forEach(function (result) {\n sheetsFiltered?.push(result.item);\n });\n unknownFuzzySearchResults.forEach(function (result) {\n unknownFiltered?.push(result.item);\n });\n }\n }\n\n this.setStateContainers(\n views3d,\n views2d,\n sheets,\n unknown,\n views3dFiltered,\n views2dFiltered,\n sheetsFiltered,\n unknownFiltered\n );\n }\n\n /**\n * Update state of the entries in the widget.\n * @param viewId Identifier for the relevant view\n */\n // istanbul ignore next\n public async updateState(viewId?: any): Promise<void> {\n // Wait for initialization finished\n if (!this.state.initialized) return;\n\n // Query views and add them to state\n const views3d: ListItem[] = this.state.items[0].children!;\n const views2d: ListItem[] = this.state.items[1].children!;\n const sheets: ListItem[] = this.state.items[2].children!;\n const unknown: ListItem[] =\n this.state.items.length > 3 ? this.state.items[3].children! : [];\n\n const updateChildren = (item: ListItem) => {\n if (item.key === viewId) return { ...item, enabled: true };\n else return { ...item, enabled: false };\n };\n\n this.setStateContainers(\n views3d.map(updateChildren),\n views2d.map(updateChildren),\n sheets.map(updateChildren),\n unknown.map(updateChildren)\n );\n }\n\n // enable/disable the models\n // istanbul ignore next\n private _setEnabled = async (item: ListItem, _enabled: boolean) => {\n const activeContentControl =\n UiFramework.content.getActiveContentControl() as unknown as SupportsViewSelectorChange;\n if (\n !activeContentControl ||\n !activeContentControl.supportsViewSelectorChange\n ) {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `No active ContentControl for ViewSelector change`\n );\n return;\n }\n\n // Enable the item temporarily to let user see that their click was registered\n // while we query for view state and change the current view which may take a bit\n if (_enabled && item.type !== ListItemType.Container) {\n // This itemMapper simply looks through all the list items and their nested children and enables the one\n // that we have registered to enable\n // Also disable all other items\n const itemMapper: (tempItem: ListItem) => ListItem = (\n tempItem: ListItem\n ) => {\n if (tempItem.type === ListItemType.Container) {\n return { ...tempItem, children: tempItem.children!.map(itemMapper) };\n } else if (tempItem.key === item.key) {\n return { ...tempItem, enabled: true };\n } else {\n return { ...tempItem, enabled: false };\n }\n };\n\n // Create the new array with the current item enabled\n const itemsWithEnabled = this.state.items.map(itemMapper);\n\n // istanbul ignore next\n if (!this._isMounted) return;\n\n // Update the state so that we show the user it was enabled while we work in the background\n this.setState({ items: itemsWithEnabled });\n }\n\n // Load the view state using the viewSpec's ID\n const viewState = await this.props.imodel!.views.load(item.key);\n\n // Let activeContentControl process the ViewSelector change\n await activeContentControl.processViewSelectorChange(\n this.props.imodel!,\n item.key,\n viewState,\n item.name!\n );\n\n // Emit a change event\n ViewSelector.onViewSelectorChangedEvent.emit({\n iModelConnection: this.props.imodel!,\n viewDefinitionId: item.key,\n viewState,\n name: item.name!,\n });\n\n // Set state to show enabled the view that got selected\n void this.updateState(item.key);\n };\n\n // Hook on the category selector being expanded so that we may initialize if needed\n // istanbul ignore next\n private _onExpanded = (expand: boolean) => {\n if (expand)\n void this.updateState(\n IModelApp.viewManager.selectedView\n ? IModelApp.viewManager.selectedView.view.id\n : undefined\n );\n };\n\n /**\n * Renders ViewSelector component\n */\n public override render() {\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgSavedView);\n\n const { imodel, ...props } = this.props;\n\n return (\n <ListPicker\n {...props}\n title={this.state.title}\n setEnabled={this._setEnabled}\n items={this.state.items}\n iconSpec={iconSpec}\n onExpanded={this._onExpanded}\n searchBox={this.state.searchBox}\n onSearchValueChange={debounce((search: string) => {\n this._searchInput = search;\n if (\n this._isMounted &&\n this.state.expand === false &&\n this._searchInput.length > 0\n )\n this.setState({ expand: true });\n void this.loadViews();\n }, 300)}\n panelOnly={this.state.panelOnly}\n expanded={this.state.expand}\n />\n );\n }\n}\n\n/** ViewSelector that is connected to the IModelConnection property in the Redux store. The application must set up the Redux store and include the FrameworkReducer.\n * @beta\n */\nexport const IModelConnectedViewSelector = connectIModelConnection(\n null,\n null\n)(ViewSelector);\n"]}
@@ -142,7 +142,6 @@ export function KeyinPalettePanel({ keyins, onKeyinExecuted, historyLength: allo
142
142
  return undefined;
143
143
  };
144
144
  const handleKeypressOnKeyinsList = React.useCallback(async (event) => {
145
- var _a, _b;
146
145
  const key = event.key;
147
146
  // built into listbox a "Space" key will trigger the selection of a entry so if an Enter key is pressed
148
147
  // assume user wants to execute the entry.
@@ -150,7 +149,7 @@ export function KeyinPalettePanel({ keyins, onKeyinExecuted, historyLength: allo
150
149
  if (key === SpecialKey.Enter) {
151
150
  event.preventDefault();
152
151
  // istanbul ignore next
153
- const keyinToSend = getKeyinFromListboxValue((_b = (_a = event.currentTarget) === null || _a === void 0 ? void 0 : _a.dataset) === null || _b === void 0 ? void 0 : _b.focusvalue);
152
+ const keyinToSend = getKeyinFromListboxValue(event.currentTarget?.dataset?.focusvalue);
154
153
  // istanbul ignore else
155
154
  if (keyinToSend) {
156
155
  if (event.ctrlKey)
@@ -1 +1 @@
1
- {"version":3,"file":"KeyinPalettePanel.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/KeyinPalettePanel.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 Popup\n */\n\n// cSpell:ignore focusvalue uiadmin\n\nimport * as React from \"react\";\nimport \"./KeyinPalettePanel.scss\";\nimport {\n FilteredText,\n Listbox,\n ListboxItem,\n UiStateStorageStatus,\n} from \"@itwin/core-react\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n ParseAndRunResult,\n} from \"@itwin/core-frontend\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { matchesWords, SpecialKey } from \"@itwin/appui-abstract\";\nimport { ClearKeyinPaletteHistoryTool } from \"../tools/KeyinPaletteTools\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport type { KeyinEntry } from \"../uiadmin/FrameworkUiAdmin\";\nimport { Input } from \"@itwin/itwinui-react\";\n\nconst KEYIN_PALETTE_NAMESPACE = \"KeyinPalettePanel\";\nconst KEYIN_HISTORY_KEY = \"historyArray\";\n\n/** @internal */\nexport function clearKeyinPaletteHistory() {\n const uiSettingsStorage = UiFramework.getUiStateStorage();\n // istanbul ignore else\n if (uiSettingsStorage) {\n void uiSettingsStorage.deleteSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n }\n}\n\ninterface KeyinPalettePanelProps {\n keyins: KeyinEntry[];\n onKeyinExecuted?: OnItemExecutedFunc;\n historyLength?: number;\n}\n\n/**\n * @internal\n */\nexport function KeyinPalettePanel({\n keyins,\n onKeyinExecuted,\n historyLength: allowedHistoryLength = 6,\n}: KeyinPalettePanelProps) {\n const [currentKeyin, setCurrentKeyin] = React.useState<string>(\"\");\n const placeholderLabel = React.useRef(\n UiFramework.translate(\"keyinbrowser.placeholder\")\n );\n const inputRef = React.useRef<HTMLInputElement>(null);\n const keyinSeparator = \"--#--\";\n const [historyKeyins, setHistoryKeyins] = React.useState<string[]>([]);\n const uiSettingsStorage = useUiStateStorageHandler();\n\n React.useEffect(() => {\n async function fetchState() {\n const settingsResult = await uiSettingsStorage.getSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n // istanbul ignore else\n if (UiStateStorageStatus.Success === settingsResult.status) {\n const filteredHistory = (settingsResult.setting as string[]).filter(\n (keyin) => {\n const result = IModelApp.tools.parseKeyin(keyin);\n return result.ok;\n }\n );\n setHistoryKeyins(filteredHistory);\n } else {\n setHistoryKeyins([]);\n }\n }\n\n void fetchState();\n }, [uiSettingsStorage]);\n\n // istanbul ignore next\n const storeHistoryKeyins = React.useCallback(\n async (value: string[]) => {\n const result = await uiSettingsStorage.saveSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY,\n value\n );\n if (result.status !== UiStateStorageStatus.Success) {\n const briefMessage = UiFramework.translate(\n \"keyinbrowser.couldNotSaveHistory\"\n );\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n briefMessage\n );\n IModelApp.notifications.outputMessage(errorDetails);\n }\n },\n [uiSettingsStorage]\n );\n\n const allKeyins = React.useMemo(() => {\n const availableKeyins = [];\n historyKeyins.forEach((value: string) => {\n availableKeyins.push({ value, isHistory: true });\n });\n availableKeyins.push(\n ...keyins.sort((a, b) =>\n a.value.toLowerCase().localeCompare(b.value.toLowerCase())\n )\n );\n return availableKeyins;\n }, [historyKeyins, keyins]);\n\n const submitKeyin = React.useCallback(\n async (value: string) => {\n let detailedMessage: string | undefined;\n let message: string | undefined;\n try {\n switch (await IModelApp.tools.parseAndRun(value)) {\n case ParseAndRunResult.ToolNotFound:\n message = `UiFramework.translate(\"keyinbrowser.couldNotFindTool\")} ${value}`;\n break;\n // istanbul ignore next\n case ParseAndRunResult.BadArgumentCount:\n message = UiFramework.translate(\"keyinbrowser.incorrectArgs\");\n break;\n // istanbul ignore next\n case ParseAndRunResult.FailedToRun:\n message = UiFramework.translate(\"keyinbrowser.failedToRun\");\n break;\n }\n } catch (ex) {\n // istanbul ignore next\n {\n message = UiFramework.translate(\"keyinbrowser.exceptionOccurred\");\n detailedMessage = `${UiFramework.translate(\n \"keyinbrowser.exceptionOccurred\"\n )}: ${ex}`;\n }\n }\n\n // istanbul ignore else\n if (undefined !== message) {\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n message,\n detailedMessage,\n OutputMessageType.Sticky\n );\n IModelApp.notifications.outputMessage(errorDetails);\n } else {\n // istanbul ignore next\n if (\n value.length < 400 &&\n value !== ClearKeyinPaletteHistoryTool.keyin &&\n value !== ClearKeyinPaletteHistoryTool.englishKeyin\n ) {\n const newHistoryEntries: string[] = [value];\n for (const entry of historyKeyins) {\n if (entry !== value) {\n newHistoryEntries.push(entry);\n if (newHistoryEntries.length >= allowedHistoryLength) break;\n }\n }\n await storeHistoryKeyins(newHistoryEntries);\n }\n\n // close the popup by processing the supplied onKeyinExecuted function\n if (onKeyinExecuted) onKeyinExecuted(value);\n }\n },\n [storeHistoryKeyins, onKeyinExecuted, historyKeyins, allowedHistoryLength]\n );\n\n const selectKeyin = React.useCallback(() => {\n // istanbul ignore else\n if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.setSelectionRange(\n inputRef.current.value.length,\n inputRef.current.value.length\n );\n }\n }, [inputRef]);\n\n const updateKeyin = React.useCallback(\n (value: string) => {\n setCurrentKeyin(value);\n selectKeyin();\n },\n [selectKeyin]\n );\n\n const getKeyinFromListboxValue = (value: string | undefined) => {\n // istanbul ignore else\n if (value) {\n const indexSeparator = value.search(keyinSeparator);\n // istanbul ignore else\n if (indexSeparator) return value.substring(0, indexSeparator);\n }\n // istanbul ignore next\n return undefined;\n };\n\n const handleKeypressOnKeyinsList = React.useCallback(\n async (event: React.KeyboardEvent<HTMLUListElement>) => {\n const key = event.key;\n // built into listbox a \"Space\" key will trigger the selection of a entry so if an Enter key is pressed\n // assume user wants to execute the entry.\n // istanbul ignore else\n if (key === SpecialKey.Enter) {\n event.preventDefault();\n // istanbul ignore next\n const keyinToSend = getKeyinFromListboxValue(\n event.currentTarget?.dataset?.focusvalue\n );\n // istanbul ignore else\n if (keyinToSend) {\n if (event.ctrlKey) updateKeyin(keyinToSend);\n else await submitKeyin(keyinToSend);\n }\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onListboxValueChange = React.useCallback(\n async (value: string, isControlOrCommandPressed?: boolean) => {\n const keyin = getKeyinFromListboxValue(value);\n // istanbul ignore else\n if (keyin) {\n if (isControlOrCommandPressed) updateKeyin(keyin);\n else await submitKeyin(keyin);\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onInputValueChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentKeyin(event.target.value);\n },\n []\n );\n\n const filteredKeyins = React.useMemo(() => {\n const filteredHistory: KeyinEntry[] = [];\n if (undefined === currentKeyin || 0 === currentKeyin.length) {\n return allKeyins;\n } else {\n const newKeyinSet: KeyinEntry[] = [];\n allKeyins.forEach((value) => {\n if (value.value.length >= currentKeyin.length) {\n // Force contiguous searches if key-in is over 60 characters long for performance.\n const matches = matchesWords(\n currentKeyin,\n value.value,\n currentKeyin.length > 60\n );\n if (matches && matches.length) {\n // istanbul ignore else\n if (value.isHistory) {\n filteredHistory.push(value);\n newKeyinSet.push({ ...value, matches });\n } else {\n // only add entry if no match in filtered history\n // istanbul ignore else\n if (\n -1 ===\n filteredHistory.findIndex(\n (historyEntry: KeyinEntry) =>\n historyEntry.value === value.value\n )\n )\n newKeyinSet.push({ ...value, matches });\n }\n }\n }\n });\n return newKeyinSet;\n }\n }, [allKeyins, currentKeyin]);\n\n const onInputValueKeyDown = React.useCallback(\n async (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (SpecialKey.Enter === event.key) {\n event.preventDefault();\n event.stopPropagation();\n // istanbul ignore else\n if (1 === filteredKeyins.length) {\n if (event.ctrlKey) updateKeyin(filteredKeyins[0].value);\n else await submitKeyin(filteredKeyins[0].value);\n } else {\n if (currentKeyin) await submitKeyin(currentKeyin);\n }\n } else if (SpecialKey.Tab === event.key && 1 === filteredKeyins.length) {\n event.preventDefault();\n event.stopPropagation();\n updateKeyin(filteredKeyins[0].value);\n } else {\n if (event.key === SpecialKey.ArrowDown && filteredKeyins.length > 0) {\n event.preventDefault();\n event.stopPropagation();\n // istanbul ignore else\n if (inputRef.current) {\n const nextElement = inputRef.current\n .nextElementSibling as HTMLElement;\n nextElement && nextElement.focus();\n }\n }\n }\n },\n [filteredKeyins, submitKeyin, currentKeyin, updateKeyin]\n );\n\n const lastHistoryIndex =\n filteredKeyins.findIndex((entry) => true !== entry.isHistory) - 1;\n\n return (\n <div className=\"uifw-command-palette-panel\">\n <Input\n ref={inputRef}\n type=\"text\"\n onKeyDown={onInputValueKeyDown}\n className={\"uifw-command-palette-input\"}\n data-testid=\"command-palette-input\"\n onChange={onInputValueChange}\n placeholder={placeholderLabel.current}\n value={currentKeyin}\n size=\"small\"\n />\n {filteredKeyins.length > 0 && (\n <Listbox\n id=\"uifw-command-sources\"\n className=\"map-manager-source-list\"\n onKeyDown={handleKeypressOnKeyinsList}\n onListboxValueChange={onListboxValueChange}\n >\n {filteredKeyins.map((entry, index) => {\n const value = `${entry.value}${keyinSeparator}${\n entry.isHistory ? \"history\" : \"registry\"\n }`;\n const itemClass = `uifw-command-palette-value-entry${\n index === lastHistoryIndex ? \" uifw-history-bottom-border\" : \"\"\n }`;\n return (\n <ListboxItem\n key={`${entry.value}-${index}`}\n className={itemClass}\n value={value}\n >\n <FilteredText value={entry.value} matches={entry.matches} />\n </ListboxItem>\n );\n })}\n </Listbox>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"KeyinPalettePanel.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/KeyinPalettePanel.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 Popup\n */\n\n// cSpell:ignore focusvalue uiadmin\n\nimport * as React from \"react\";\nimport \"./KeyinPalettePanel.scss\";\nimport {\n FilteredText,\n Listbox,\n ListboxItem,\n UiStateStorageStatus,\n} from \"@itwin/core-react\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n ParseAndRunResult,\n} from \"@itwin/core-frontend\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { matchesWords, SpecialKey } from \"@itwin/appui-abstract\";\nimport { ClearKeyinPaletteHistoryTool } from \"../tools/KeyinPaletteTools\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport type { KeyinEntry } from \"../uiadmin/FrameworkUiAdmin\";\nimport { Input } from \"@itwin/itwinui-react\";\n\nconst KEYIN_PALETTE_NAMESPACE = \"KeyinPalettePanel\";\nconst KEYIN_HISTORY_KEY = \"historyArray\";\n\n/** @internal */\nexport function clearKeyinPaletteHistory() {\n const uiSettingsStorage = UiFramework.getUiStateStorage();\n // istanbul ignore else\n if (uiSettingsStorage) {\n void uiSettingsStorage.deleteSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n }\n}\n\ninterface KeyinPalettePanelProps {\n keyins: KeyinEntry[];\n onKeyinExecuted?: OnItemExecutedFunc;\n historyLength?: number;\n}\n\n/**\n * @internal\n */\nexport function KeyinPalettePanel({\n keyins,\n onKeyinExecuted,\n historyLength: allowedHistoryLength = 6,\n}: KeyinPalettePanelProps) {\n const [currentKeyin, setCurrentKeyin] = React.useState<string>(\"\");\n const placeholderLabel = React.useRef(\n UiFramework.translate(\"keyinbrowser.placeholder\")\n );\n const inputRef = React.useRef<HTMLInputElement>(null);\n const keyinSeparator = \"--#--\";\n const [historyKeyins, setHistoryKeyins] = React.useState<string[]>([]);\n const uiSettingsStorage = useUiStateStorageHandler();\n\n React.useEffect(() => {\n async function fetchState() {\n const settingsResult = await uiSettingsStorage.getSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n // istanbul ignore else\n if (UiStateStorageStatus.Success === settingsResult.status) {\n const filteredHistory = (settingsResult.setting as string[]).filter(\n (keyin) => {\n const result = IModelApp.tools.parseKeyin(keyin);\n return result.ok;\n }\n );\n setHistoryKeyins(filteredHistory);\n } else {\n setHistoryKeyins([]);\n }\n }\n\n void fetchState();\n }, [uiSettingsStorage]);\n\n // istanbul ignore next\n const storeHistoryKeyins = React.useCallback(\n async (value: string[]) => {\n const result = await uiSettingsStorage.saveSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY,\n value\n );\n if (result.status !== UiStateStorageStatus.Success) {\n const briefMessage = UiFramework.translate(\n \"keyinbrowser.couldNotSaveHistory\"\n );\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n briefMessage\n );\n IModelApp.notifications.outputMessage(errorDetails);\n }\n },\n [uiSettingsStorage]\n );\n\n const allKeyins = React.useMemo(() => {\n const availableKeyins = [];\n historyKeyins.forEach((value: string) => {\n availableKeyins.push({ value, isHistory: true });\n });\n availableKeyins.push(\n ...keyins.sort((a, b) =>\n a.value.toLowerCase().localeCompare(b.value.toLowerCase())\n )\n );\n return availableKeyins;\n }, [historyKeyins, keyins]);\n\n const submitKeyin = React.useCallback(\n async (value: string) => {\n let detailedMessage: string | undefined;\n let message: string | undefined;\n try {\n switch (await IModelApp.tools.parseAndRun(value)) {\n case ParseAndRunResult.ToolNotFound:\n message = `UiFramework.translate(\"keyinbrowser.couldNotFindTool\")} ${value}`;\n break;\n // istanbul ignore next\n case ParseAndRunResult.BadArgumentCount:\n message = UiFramework.translate(\"keyinbrowser.incorrectArgs\");\n break;\n // istanbul ignore next\n case ParseAndRunResult.FailedToRun:\n message = UiFramework.translate(\"keyinbrowser.failedToRun\");\n break;\n }\n } catch (ex) {\n // istanbul ignore next\n {\n message = UiFramework.translate(\"keyinbrowser.exceptionOccurred\");\n detailedMessage = `${UiFramework.translate(\n \"keyinbrowser.exceptionOccurred\"\n )}: ${ex}`;\n }\n }\n\n // istanbul ignore else\n if (undefined !== message) {\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n message,\n detailedMessage,\n OutputMessageType.Sticky\n );\n IModelApp.notifications.outputMessage(errorDetails);\n } else {\n // istanbul ignore next\n if (\n value.length < 400 &&\n value !== ClearKeyinPaletteHistoryTool.keyin &&\n value !== ClearKeyinPaletteHistoryTool.englishKeyin\n ) {\n const newHistoryEntries: string[] = [value];\n for (const entry of historyKeyins) {\n if (entry !== value) {\n newHistoryEntries.push(entry);\n if (newHistoryEntries.length >= allowedHistoryLength) break;\n }\n }\n await storeHistoryKeyins(newHistoryEntries);\n }\n\n // close the popup by processing the supplied onKeyinExecuted function\n if (onKeyinExecuted) onKeyinExecuted(value);\n }\n },\n [storeHistoryKeyins, onKeyinExecuted, historyKeyins, allowedHistoryLength]\n );\n\n const selectKeyin = React.useCallback(() => {\n // istanbul ignore else\n if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.setSelectionRange(\n inputRef.current.value.length,\n inputRef.current.value.length\n );\n }\n }, [inputRef]);\n\n const updateKeyin = React.useCallback(\n (value: string) => {\n setCurrentKeyin(value);\n selectKeyin();\n },\n [selectKeyin]\n );\n\n const getKeyinFromListboxValue = (value: string | undefined) => {\n // istanbul ignore else\n if (value) {\n const indexSeparator = value.search(keyinSeparator);\n // istanbul ignore else\n if (indexSeparator) return value.substring(0, indexSeparator);\n }\n // istanbul ignore next\n return undefined;\n };\n\n const handleKeypressOnKeyinsList = React.useCallback(\n async (event: React.KeyboardEvent<HTMLUListElement>) => {\n const key = event.key;\n // built into listbox a \"Space\" key will trigger the selection of a entry so if an Enter key is pressed\n // assume user wants to execute the entry.\n // istanbul ignore else\n if (key === SpecialKey.Enter) {\n event.preventDefault();\n // istanbul ignore next\n const keyinToSend = getKeyinFromListboxValue(\n event.currentTarget?.dataset?.focusvalue\n );\n // istanbul ignore else\n if (keyinToSend) {\n if (event.ctrlKey) updateKeyin(keyinToSend);\n else await submitKeyin(keyinToSend);\n }\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onListboxValueChange = React.useCallback(\n async (value: string, isControlOrCommandPressed?: boolean) => {\n const keyin = getKeyinFromListboxValue(value);\n // istanbul ignore else\n if (keyin) {\n if (isControlOrCommandPressed) updateKeyin(keyin);\n else await submitKeyin(keyin);\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onInputValueChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentKeyin(event.target.value);\n },\n []\n );\n\n const filteredKeyins = React.useMemo(() => {\n const filteredHistory: KeyinEntry[] = [];\n if (undefined === currentKeyin || 0 === currentKeyin.length) {\n return allKeyins;\n } else {\n const newKeyinSet: KeyinEntry[] = [];\n allKeyins.forEach((value) => {\n if (value.value.length >= currentKeyin.length) {\n // Force contiguous searches if key-in is over 60 characters long for performance.\n const matches = matchesWords(\n currentKeyin,\n value.value,\n currentKeyin.length > 60\n );\n if (matches && matches.length) {\n // istanbul ignore else\n if (value.isHistory) {\n filteredHistory.push(value);\n newKeyinSet.push({ ...value, matches });\n } else {\n // only add entry if no match in filtered history\n // istanbul ignore else\n if (\n -1 ===\n filteredHistory.findIndex(\n (historyEntry: KeyinEntry) =>\n historyEntry.value === value.value\n )\n )\n newKeyinSet.push({ ...value, matches });\n }\n }\n }\n });\n return newKeyinSet;\n }\n }, [allKeyins, currentKeyin]);\n\n const onInputValueKeyDown = React.useCallback(\n async (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (SpecialKey.Enter === event.key) {\n event.preventDefault();\n event.stopPropagation();\n // istanbul ignore else\n if (1 === filteredKeyins.length) {\n if (event.ctrlKey) updateKeyin(filteredKeyins[0].value);\n else await submitKeyin(filteredKeyins[0].value);\n } else {\n if (currentKeyin) await submitKeyin(currentKeyin);\n }\n } else if (SpecialKey.Tab === event.key && 1 === filteredKeyins.length) {\n event.preventDefault();\n event.stopPropagation();\n updateKeyin(filteredKeyins[0].value);\n } else {\n if (event.key === SpecialKey.ArrowDown && filteredKeyins.length > 0) {\n event.preventDefault();\n event.stopPropagation();\n // istanbul ignore else\n if (inputRef.current) {\n const nextElement = inputRef.current\n .nextElementSibling as HTMLElement;\n nextElement && nextElement.focus();\n }\n }\n }\n },\n [filteredKeyins, submitKeyin, currentKeyin, updateKeyin]\n );\n\n const lastHistoryIndex =\n filteredKeyins.findIndex((entry) => true !== entry.isHistory) - 1;\n\n return (\n <div className=\"uifw-command-palette-panel\">\n <Input\n ref={inputRef}\n type=\"text\"\n onKeyDown={onInputValueKeyDown}\n className={\"uifw-command-palette-input\"}\n data-testid=\"command-palette-input\"\n onChange={onInputValueChange}\n placeholder={placeholderLabel.current}\n value={currentKeyin}\n size=\"small\"\n />\n {filteredKeyins.length > 0 && (\n <Listbox\n id=\"uifw-command-sources\"\n className=\"map-manager-source-list\"\n onKeyDown={handleKeypressOnKeyinsList}\n onListboxValueChange={onListboxValueChange}\n >\n {filteredKeyins.map((entry, index) => {\n const value = `${entry.value}${keyinSeparator}${\n entry.isHistory ? \"history\" : \"registry\"\n }`;\n const itemClass = `uifw-command-palette-value-entry${\n index === lastHistoryIndex ? \" uifw-history-bottom-border\" : \"\"\n }`;\n return (\n <ListboxItem\n key={`${entry.value}-${index}`}\n className={itemClass}\n value={value}\n >\n <FilteredText value={entry.value} matches={entry.matches} />\n </ListboxItem>\n );\n })}\n </Listbox>\n )}\n </div>\n );\n}\n"]}
@@ -226,8 +226,7 @@ export class PopupRenderer extends React.Component {
226
226
  popups: PopupManager.popups,
227
227
  };
228
228
  this._handleRefSet = (popupDiv) => {
229
- var _a;
230
- this.setState({ parentDocument: (_a = popupDiv === null || popupDiv === void 0 ? void 0 : popupDiv.ownerDocument) !== null && _a !== void 0 ? _a : null });
229
+ this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });
231
230
  };
232
231
  this._handlePopupsChangedEvent = (args) => {
233
232
  this.setState({ popups: args.popups });
@@ -1 +1 @@
1
- {"version":3,"file":"PopupManager.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/PopupManager.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 Popup\n */\n\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type {\n AbstractToolbarProps,\n DialogLayoutDataProvider,\n OnCancelFunc,\n OnItemExecutedFunc,\n OnValueCommitFunc,\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyRecord,\n PropertyValueFormat,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport type { Point, SizeProps } from \"@itwin/core-react\";\nimport { Orientation, Rectangle } from \"@itwin/core-react\";\nimport { offsetAndContainInContainer } from \"@itwin/appui-layout-react\";\nimport type { KeyinEntry } from \"../uiadmin/FrameworkUiAdmin\";\nimport { UiFramework } from \"../UiFramework\";\nimport { CardPopup } from \"./CardPopup\";\nimport { HTMLElementPopup } from \"./HTMLElementPopup\";\nimport { InputEditorCommitHandler, InputEditorPopup } from \"./InputEditorPopup\";\nimport { KeyinPalettePopup } from \"./KeyinPalettePopup\";\nimport { ToolbarPopup } from \"./ToolbarPopup\";\nimport { ToolSettingsPopup } from \"./ToolSettingsPopup\";\n\n// cSpell:ignore uiadmin\n\n/** Information maintained by PopupManager about a Popup\n * @public\n */\nexport interface PopupInfo {\n id: string;\n pt: XAndY;\n component: React.ReactNode;\n parentDocument: Document;\n}\n\n/** @public */\nexport interface PopupsChangedEventArgs {\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popups Changed Event class.\n * @public\n */\nexport class PopupsChangedEvent extends UiEvent<PopupsChangedEventArgs> {}\n\n/** Props for each popup managed by the PopupManager\n * @public\n */\nexport interface PopupPropsBase {\n id: string;\n el: HTMLElement;\n pt: XAndY;\n offset: XAndY;\n}\n\n/** Describes React based content\n * @public\n */\nexport interface ReactContent {\n reactNode: React.ReactNode;\n}\n\n/** Type for Popup Content\n * @public\n */\nexport type PopupContentType = HTMLElement | ReactContent;\n\n/** ReactContent type guard.\n * @internal\n */\nexport const isReactContent = (\n content: PopupContentType\n): content is ReactContent => {\n return (content as ReactContent).reactNode !== undefined;\n};\n\n/** Popup Manager class\n * @public\n */\nexport class PopupManager {\n private static _popups: ReadonlyArray<PopupInfo> = [];\n private static _editorId = \"InputEditor\";\n private static _toolbarId = \"Toolbar\";\n private static _htmlElementId = \"HTMLElement\";\n private static _cardId = \"Card\";\n private static _toolSettingsId = \"ToolSettings\";\n private static _keyPalettePopupId = \"KeyinPalette\";\n\n private static _defaultOffset = { x: 8, y: 8 };\n\n public static readonly onPopupsChangedEvent = new PopupsChangedEvent();\n\n public static get popupCount() {\n return this._popups.length;\n }\n public static get popups() {\n return this._popups;\n }\n\n public static set popups(popups: ReadonlyArray<PopupInfo>) {\n // istanbul ignore if\n if (this._popups === popups) return;\n this._popups = popups;\n this.onPopupsChangedEvent.emit({ popups });\n }\n\n /** @internal */\n public static clearPopups() {\n this.popups = [];\n }\n\n private static addPopup(popupInfo: PopupInfo): void {\n const popups = [...PopupManager._popups, popupInfo];\n this.popups = popups;\n }\n\n private static updatePopup(popupInfo: PopupInfo, itemIndex: number): void {\n // istanbul ignore if\n if (itemIndex < 0) return;\n\n const popups = [\n ...PopupManager._popups.slice(0, itemIndex),\n popupInfo,\n ...PopupManager._popups.slice(itemIndex + 1),\n ];\n this.popups = popups;\n }\n\n public static addOrUpdatePopup(popupInfo: PopupInfo): void {\n const itemIndex = PopupManager._popups.findIndex(\n (info: PopupInfo) => info.id === popupInfo.id\n );\n if (itemIndex >= 0) PopupManager.updatePopup(popupInfo, itemIndex);\n else PopupManager.addPopup(popupInfo);\n }\n\n public static removePopup(id: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id === info.id\n );\n let result = true;\n\n if (index >= 0) {\n const popups = PopupManager._popups.filter((info: PopupInfo) => {\n return info.id !== id;\n });\n this.popups = popups;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `removePopup: Could not find popup with id of '${id}'`\n );\n result = false;\n }\n\n return result;\n }\n\n public static get defaultOffset(): XAndY {\n return PopupManager._defaultOffset;\n }\n public static set defaultOffset(offset: XAndY) {\n PopupManager._defaultOffset = offset;\n }\n\n public static showInputEditor(\n el: HTMLElement,\n pt: XAndY,\n value: Primitives.Value,\n propertyDescription: PropertyDescription,\n onCommit: OnValueCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const primitiveValue: PrimitiveValue = {\n value,\n valueFormat: PropertyValueFormat.Primitive,\n };\n const record = new PropertyRecord(primitiveValue, propertyDescription);\n const commitHandler = new InputEditorCommitHandler(onCommit);\n const id = PopupManager._editorId;\n const component = (\n <InputEditorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n record={record}\n onCancel={onCancel}\n commitHandler={commitHandler}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideInputEditor(): boolean {\n return PopupManager.removePopup(PopupManager._editorId);\n }\n\n public static showKeyinPalette(\n keyins: KeyinEntry[],\n el: HTMLElement,\n onItemExecuted?: OnItemExecutedFunc,\n onCancel?: OnCancelFunc\n ): boolean {\n const id = PopupManager._keyPalettePopupId;\n const component = (\n <KeyinPalettePopup\n keyins={keyins}\n id={id}\n el={el}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n // since the command palette popup is always at top center of specified HTML element and it does not need to move like\n // cursor popups just set pt to 0,0.\n const pt = { x: 0, y: 0 };\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideKeyinPalette(): boolean {\n return PopupManager.removePopup(PopupManager._keyPalettePopupId);\n }\n\n public static showToolbar(\n toolbarProps: AbstractToolbarProps,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: OnItemExecutedFunc,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolbarId;\n const component = (\n <ToolbarPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n items={toolbarProps.items}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideToolbar(): boolean {\n return PopupManager.removePopup(PopupManager._toolbarId);\n }\n\n public static showHTMLElement(\n displayElement: HTMLElement,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._htmlElementId;\n const component = (\n <HTMLElementPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n element={displayElement}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideHTMLElement(): boolean {\n return PopupManager.removePopup(PopupManager._htmlElementId);\n }\n\n public static showCard(\n content: PopupContentType,\n title: string | PropertyRecord | undefined,\n toolbarProps: AbstractToolbarProps | undefined,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: OnItemExecutedFunc,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._cardId;\n const component = (\n <CardPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n content={content}\n title={title}\n items={\n toolbarProps\n ? toolbarProps.items\n : /* istanbul ignore next */ undefined\n }\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCard(): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => PopupManager._cardId === info.id\n );\n if (index >= 0) return PopupManager.removePopup(PopupManager._cardId);\n return false;\n }\n\n public static openToolSettings(\n dataProvider: DialogLayoutDataProvider,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolSettingsId;\n const component = (\n <ToolSettingsPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n dataProvider={dataProvider}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static closeToolSettings(): boolean {\n return PopupManager.removePopup(PopupManager._toolSettingsId);\n }\n\n public static getPopupPosition(\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n size: SizeProps\n ): Point {\n const containerBounds = Rectangle.create(el.getBoundingClientRect());\n const relativeBounds = Rectangle.createFromSize(size).offset(pt);\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n return position;\n }\n}\n\n/** @internal */\ninterface PopupRendererState {\n parentDocument: Document | null;\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popup Renderer\n * @public\n */\nexport class PopupRenderer extends React.Component<{}, PopupRendererState> {\n /** @internal */\n public override readonly state: PopupRendererState = {\n parentDocument: null,\n popups: PopupManager.popups,\n };\n\n public override componentDidMount(): void {\n PopupManager.onPopupsChangedEvent.addListener(\n this._handlePopupsChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n PopupManager.onPopupsChangedEvent.removeListener(\n this._handlePopupsChangedEvent\n );\n }\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (PopupManager.popupCount <= 0) return null;\n\n return (\n <div\n className=\"appui-react-popup-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.state.popups\n .filter((info) => info.parentDocument === this.state.parentDocument)\n .map((popupInfo: PopupInfo) => {\n return (\n <React.Fragment key={popupInfo.id}>\n {popupInfo.component}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n private _handlePopupsChangedEvent = (args: PopupsChangedEventArgs) => {\n this.setState({ popups: args.popups });\n };\n}\n"]}
1
+ {"version":3,"file":"PopupManager.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/PopupManager.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAa7C,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,OAAO,GACR,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAmBxD;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,OAA+B;CAAG;AAwB1E;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAyB,EACA,EAAE;IAC3B,OAAQ,OAAwB,CAAC,SAAS,KAAK,SAAS,CAAC;AAC3D,CAAC,CAAC;AAEF;;GAEG;AACH,MAAa,YAAY;IAahB,MAAM,KAAK,UAAU;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IACM,MAAM,KAAK,MAAM;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,MAAM,KAAK,MAAM,CAAC,MAAgC;QACvD,qBAAqB;QACrB,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM;YAAE,OAAO;QACpC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,SAAoB;QAC1C,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,SAAoB,EAAE,SAAiB;QAChE,qBAAqB;QACrB,IAAI,SAAS,GAAG,CAAC;YAAE,OAAO;QAE1B,MAAM,MAAM,GAAG;YACb,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;YAC3C,SAAS;YACT,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;SAC7C,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,SAAoB;QACjD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAC9C,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAC9C,CAAC;QACF,IAAI,SAAS,IAAI,CAAC;YAAE,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;;YAC9D,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,EAAU;QAClC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAC1C,CAAC,IAAe,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CACpC,CAAC;QACF,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAe,EAAE,EAAE;gBAC7D,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACtB;aAAM;YACL,MAAM,CAAC,QAAQ,CACb,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAChC,iDAAiD,EAAE,GAAG,CACvD,CAAC;YACF,MAAM,GAAG,KAAK,CAAC;SAChB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,KAAK,aAAa;QAC7B,OAAO,YAAY,CAAC,cAAc,CAAC;IACrC,CAAC;IACM,MAAM,KAAK,aAAa,CAAC,MAAa;QAC3C,YAAY,CAAC,cAAc,GAAG,MAAM,CAAC;IACvC,CAAC;IAEM,MAAM,CAAC,eAAe,CAC3B,EAAe,EACf,EAAS,EACT,KAAuB,EACvB,mBAAwC,EACxC,QAA2B,EAC3B,QAAsB;QAEtB,MAAM,cAAc,GAAmB;YACrC,KAAK;YACL,WAAW,EAAE,mBAAmB,CAAC,SAAS;SAC3C,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;QACvE,MAAM,aAAa,GAAG,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC;QAClC,MAAM,SAAS,GAAG,CAChB,oBAAC,gBAAgB,IACf,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,YAAY,CAAC,aAAa,EAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,GAC5B,CACH,CAAC;QAEF,MAAM,SAAS,GAAc;YAC3B,EAAE;YACF,EAAE;YACF,SAAS;YACT,cAAc,EAAE,EAAE,CAAC,aAAa;SACjC,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,eAAe;QAC3B,OAAO,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAC5B,MAAoB,EACpB,EAAe,EACf,cAAmC,EACnC,QAAuB;QAEvB,MAAM,EAAE,GAAG,YAAY,CAAC,kBAAkB,CAAC;QAC3C,MAAM,SAAS,GAAG,CAChB,oBAAC,iBAAiB,IAChB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,GAC9B,CACH,CAAC;QAEF,sHAAsH;QACtH,oCAAoC;QACpC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAc;YAC3B,EAAE;YACF,EAAE;YACF,SAAS;YACT,cAAc,EAAE,EAAE,CAAC,aAAa;SACjC,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,gBAAgB;QAC5B,OAAO,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,WAAW,CACvB,YAAkC,EAClC,EAAe,EACf,EAAS,EACT,MAAa,EACb,cAAkC,EAClC,QAAsB,EACtB,gBAAkC;QAElC,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC;QACnC,MAAM,SAAS,GAAG,CAChB,oBAAC,YAAY,IACX,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,CAAC,KAAK,EACzB,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,CAAC,UAAU,EACnC,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,GAC9B,CACH,CAAC;QAEF,MAAM,SAAS,GAAc;YAC3B,EAAE;YACF,EAAE;YACF,SAAS;YACT,cAAc,EAAE,EAAE,CAAC,aAAa;SACjC,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,OAAO,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;IAEM,MAAM,CAAC,eAAe,CAC3B,cAA2B,EAC3B,EAAe,EACf,EAAS,EACT,MAAa,EACb,QAAsB,EACtB,gBAAkC;QAElC,MAAM,EAAE,GAAG,YAAY,CAAC,cAAc,CAAC;QACvC,MAAM,SAAS,GAAG,CAChB,oBAAC,gBAAgB,IACf,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,EACvB,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,CAAC,UAAU,EACnC,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;QAEF,MAAM,SAAS,GAAc;YAC3B,EAAE;YACF,EAAE;YACF,SAAS;YACT,cAAc,EAAE,EAAE,CAAC,aAAa;SACjC,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,eAAe;QAC3B,OAAO,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,QAAQ,CACpB,OAAyB,EACzB,KAA0C,EAC1C,YAA8C,EAC9C,EAAe,EACf,EAAS,EACT,MAAa,EACb,cAAkC,EAClC,QAAsB,EACtB,gBAAkC;QAElC,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;QAChC,MAAM,SAAS,GAAG,CAChB,oBAAC,SAAS,IACR,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,KAAK,EACH,YAAY;gBACV,CAAC,CAAC,YAAY,CAAC,KAAK;gBACpB,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAE1C,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,CAAC,UAAU,EACnC,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,GAC9B,CACH,CAAC;QAEF,MAAM,SAAS,GAAc;YAC3B,EAAE;YACF,EAAE;YACF,SAAS;YACT,cAAc,EAAE,EAAE,CAAC,aAAa;SACjC,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,QAAQ;QACpB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAC1C,CAAC,IAAe,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CACtD,CAAC;QACF,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAC5B,YAAsC,EACtC,EAAe,EACf,EAAS,EACT,MAAa,EACb,QAAsB,EACtB,gBAAkC;QAElC,MAAM,EAAE,GAAG,YAAY,CAAC,eAAe,CAAC;QACxC,MAAM,SAAS,GAAG,CAChB,oBAAC,iBAAiB,IAChB,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,CAAC,UAAU,EACnC,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC;QAEF,MAAM,SAAS,GAAc;YAC3B,EAAE;YACF,EAAE;YACF,SAAS;YACT,cAAc,EAAE,EAAE,CAAC,aAAa;SACjC,CAAC;QACF,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,iBAAiB;QAC7B,OAAO,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAChE,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAC5B,EAAe,EACf,EAAS,EACT,MAAa,EACb,IAAe;QAEf,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,gBAAgB,GAAU,2BAA2B,CACzD,cAAc,EACd,eAAe,CAAC,OAAO,EAAE,EACzB,MAAM,CACP,CAAC;QACF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAEpE,OAAO,QAAQ,CAAC;IAClB,CAAC;;AAtVc,oBAAO,GAA6B,EAAE,CAAC;AACvC,sBAAS,GAAG,aAAa,CAAC;AAC1B,uBAAU,GAAG,SAAS,CAAC;AACvB,2BAAc,GAAG,aAAa,CAAC;AAC/B,oBAAO,GAAG,MAAM,CAAC;AACjB,4BAAe,GAAG,cAAc,CAAC;AACjC,+BAAkB,GAAG,cAAc,CAAC;AAEpC,2BAAc,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAExB,iCAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC;SAX5D,YAAY;AAgWzB;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAiC;IAA1E;;QACE,gBAAgB;QACS,UAAK,GAAuB;YACnD,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,YAAY,CAAC,MAAM;SAC5B,CAAC;QAcM,kBAAa,GAAG,CAAC,QAA4B,EAAE,EAAE;YACvD,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,IAAI,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC;QAwBM,8BAAyB,GAAG,CAAC,IAA4B,EAAE,EAAE;YACnE,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC;IAzCiB,iBAAiB;QAC/B,YAAY,CAAC,oBAAoB,CAAC,WAAW,CAC3C,IAAI,CAAC,yBAAyB,CAC/B,CAAC;IACJ,CAAC;IAEe,oBAAoB;QAClC,YAAY,CAAC,oBAAoB,CAAC,cAAc,CAC9C,IAAI,CAAC,yBAAyB,CAC/B,CAAC;IACJ,CAAC;IAMe,MAAM;QACpB,IAAI,YAAY,CAAC,UAAU,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAE9C,OAAO,CACL,6BACE,SAAS,EAAC,oCAAoC,EAC9C,GAAG,EAAE,IAAI,CAAC,aAAa,IAEtB,IAAI,CAAC,KAAK,CAAC,cAAc;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM;iBACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;iBACnE,GAAG,CAAC,CAAC,SAAoB,EAAE,EAAE;gBAC5B,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,SAAS,CAAC,EAAE,IAC9B,SAAS,CAAC,SAAS,CACL,CAClB,CAAC;YACJ,CAAC,CAAC,CACF,CACP,CAAC;IACJ,CAAC;CAKF","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 Popup\n */\n\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type {\n AbstractToolbarProps,\n DialogLayoutDataProvider,\n OnCancelFunc,\n OnItemExecutedFunc,\n OnValueCommitFunc,\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyRecord,\n PropertyValueFormat,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport type { Point, SizeProps } from \"@itwin/core-react\";\nimport { Orientation, Rectangle } from \"@itwin/core-react\";\nimport { offsetAndContainInContainer } from \"@itwin/appui-layout-react\";\nimport type { KeyinEntry } from \"../uiadmin/FrameworkUiAdmin\";\nimport { UiFramework } from \"../UiFramework\";\nimport { CardPopup } from \"./CardPopup\";\nimport { HTMLElementPopup } from \"./HTMLElementPopup\";\nimport { InputEditorCommitHandler, InputEditorPopup } from \"./InputEditorPopup\";\nimport { KeyinPalettePopup } from \"./KeyinPalettePopup\";\nimport { ToolbarPopup } from \"./ToolbarPopup\";\nimport { ToolSettingsPopup } from \"./ToolSettingsPopup\";\n\n// cSpell:ignore uiadmin\n\n/** Information maintained by PopupManager about a Popup\n * @public\n */\nexport interface PopupInfo {\n id: string;\n pt: XAndY;\n component: React.ReactNode;\n parentDocument: Document;\n}\n\n/** @public */\nexport interface PopupsChangedEventArgs {\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popups Changed Event class.\n * @public\n */\nexport class PopupsChangedEvent extends UiEvent<PopupsChangedEventArgs> {}\n\n/** Props for each popup managed by the PopupManager\n * @public\n */\nexport interface PopupPropsBase {\n id: string;\n el: HTMLElement;\n pt: XAndY;\n offset: XAndY;\n}\n\n/** Describes React based content\n * @public\n */\nexport interface ReactContent {\n reactNode: React.ReactNode;\n}\n\n/** Type for Popup Content\n * @public\n */\nexport type PopupContentType = HTMLElement | ReactContent;\n\n/** ReactContent type guard.\n * @internal\n */\nexport const isReactContent = (\n content: PopupContentType\n): content is ReactContent => {\n return (content as ReactContent).reactNode !== undefined;\n};\n\n/** Popup Manager class\n * @public\n */\nexport class PopupManager {\n private static _popups: ReadonlyArray<PopupInfo> = [];\n private static _editorId = \"InputEditor\";\n private static _toolbarId = \"Toolbar\";\n private static _htmlElementId = \"HTMLElement\";\n private static _cardId = \"Card\";\n private static _toolSettingsId = \"ToolSettings\";\n private static _keyPalettePopupId = \"KeyinPalette\";\n\n private static _defaultOffset = { x: 8, y: 8 };\n\n public static readonly onPopupsChangedEvent = new PopupsChangedEvent();\n\n public static get popupCount() {\n return this._popups.length;\n }\n public static get popups() {\n return this._popups;\n }\n\n public static set popups(popups: ReadonlyArray<PopupInfo>) {\n // istanbul ignore if\n if (this._popups === popups) return;\n this._popups = popups;\n this.onPopupsChangedEvent.emit({ popups });\n }\n\n /** @internal */\n public static clearPopups() {\n this.popups = [];\n }\n\n private static addPopup(popupInfo: PopupInfo): void {\n const popups = [...PopupManager._popups, popupInfo];\n this.popups = popups;\n }\n\n private static updatePopup(popupInfo: PopupInfo, itemIndex: number): void {\n // istanbul ignore if\n if (itemIndex < 0) return;\n\n const popups = [\n ...PopupManager._popups.slice(0, itemIndex),\n popupInfo,\n ...PopupManager._popups.slice(itemIndex + 1),\n ];\n this.popups = popups;\n }\n\n public static addOrUpdatePopup(popupInfo: PopupInfo): void {\n const itemIndex = PopupManager._popups.findIndex(\n (info: PopupInfo) => info.id === popupInfo.id\n );\n if (itemIndex >= 0) PopupManager.updatePopup(popupInfo, itemIndex);\n else PopupManager.addPopup(popupInfo);\n }\n\n public static removePopup(id: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id === info.id\n );\n let result = true;\n\n if (index >= 0) {\n const popups = PopupManager._popups.filter((info: PopupInfo) => {\n return info.id !== id;\n });\n this.popups = popups;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `removePopup: Could not find popup with id of '${id}'`\n );\n result = false;\n }\n\n return result;\n }\n\n public static get defaultOffset(): XAndY {\n return PopupManager._defaultOffset;\n }\n public static set defaultOffset(offset: XAndY) {\n PopupManager._defaultOffset = offset;\n }\n\n public static showInputEditor(\n el: HTMLElement,\n pt: XAndY,\n value: Primitives.Value,\n propertyDescription: PropertyDescription,\n onCommit: OnValueCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const primitiveValue: PrimitiveValue = {\n value,\n valueFormat: PropertyValueFormat.Primitive,\n };\n const record = new PropertyRecord(primitiveValue, propertyDescription);\n const commitHandler = new InputEditorCommitHandler(onCommit);\n const id = PopupManager._editorId;\n const component = (\n <InputEditorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n record={record}\n onCancel={onCancel}\n commitHandler={commitHandler}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideInputEditor(): boolean {\n return PopupManager.removePopup(PopupManager._editorId);\n }\n\n public static showKeyinPalette(\n keyins: KeyinEntry[],\n el: HTMLElement,\n onItemExecuted?: OnItemExecutedFunc,\n onCancel?: OnCancelFunc\n ): boolean {\n const id = PopupManager._keyPalettePopupId;\n const component = (\n <KeyinPalettePopup\n keyins={keyins}\n id={id}\n el={el}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n // since the command palette popup is always at top center of specified HTML element and it does not need to move like\n // cursor popups just set pt to 0,0.\n const pt = { x: 0, y: 0 };\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideKeyinPalette(): boolean {\n return PopupManager.removePopup(PopupManager._keyPalettePopupId);\n }\n\n public static showToolbar(\n toolbarProps: AbstractToolbarProps,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: OnItemExecutedFunc,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolbarId;\n const component = (\n <ToolbarPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n items={toolbarProps.items}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideToolbar(): boolean {\n return PopupManager.removePopup(PopupManager._toolbarId);\n }\n\n public static showHTMLElement(\n displayElement: HTMLElement,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._htmlElementId;\n const component = (\n <HTMLElementPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n element={displayElement}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideHTMLElement(): boolean {\n return PopupManager.removePopup(PopupManager._htmlElementId);\n }\n\n public static showCard(\n content: PopupContentType,\n title: string | PropertyRecord | undefined,\n toolbarProps: AbstractToolbarProps | undefined,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: OnItemExecutedFunc,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._cardId;\n const component = (\n <CardPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n content={content}\n title={title}\n items={\n toolbarProps\n ? toolbarProps.items\n : /* istanbul ignore next */ undefined\n }\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCard(): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => PopupManager._cardId === info.id\n );\n if (index >= 0) return PopupManager.removePopup(PopupManager._cardId);\n return false;\n }\n\n public static openToolSettings(\n dataProvider: DialogLayoutDataProvider,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolSettingsId;\n const component = (\n <ToolSettingsPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n dataProvider={dataProvider}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static closeToolSettings(): boolean {\n return PopupManager.removePopup(PopupManager._toolSettingsId);\n }\n\n public static getPopupPosition(\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n size: SizeProps\n ): Point {\n const containerBounds = Rectangle.create(el.getBoundingClientRect());\n const relativeBounds = Rectangle.createFromSize(size).offset(pt);\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n return position;\n }\n}\n\n/** @internal */\ninterface PopupRendererState {\n parentDocument: Document | null;\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popup Renderer\n * @public\n */\nexport class PopupRenderer extends React.Component<{}, PopupRendererState> {\n /** @internal */\n public override readonly state: PopupRendererState = {\n parentDocument: null,\n popups: PopupManager.popups,\n };\n\n public override componentDidMount(): void {\n PopupManager.onPopupsChangedEvent.addListener(\n this._handlePopupsChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n PopupManager.onPopupsChangedEvent.removeListener(\n this._handlePopupsChangedEvent\n );\n }\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (PopupManager.popupCount <= 0) return null;\n\n return (\n <div\n className=\"appui-react-popup-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.state.popups\n .filter((info) => info.parentDocument === this.state.parentDocument)\n .map((popupInfo: PopupInfo) => {\n return (\n <React.Fragment key={popupInfo.id}>\n {popupInfo.component}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n private _handlePopupsChangedEvent = (args: PopupsChangedEventArgs) => {\n this.setState({ popups: args.popups });\n };\n}\n"]}
@@ -57,12 +57,12 @@ export function isNoSelectionActive() {
57
57
  UiFramework.store.getState()[UiFramework.frameworkStateKey].frameworkState
58
58
  .sessionState.numItemsSelected;
59
59
  // istanbul ignore if
60
- if (activeContentControl === null || activeContentControl === void 0 ? void 0 : activeContentControl.viewport) {
60
+ if (activeContentControl?.viewport) {
61
61
  const hiddenElementsSet = activeContentControl.viewport.neverDrawn;
62
62
  const selectedElementsSet = activeContentControl.viewport.view.iModel.selectionSet.elements;
63
63
  // TODO: add check for categories, subcategories and models
64
64
  if (selectionCount > 0 ||
65
- ![...selectedElementsSet].every((value) => hiddenElementsSet === null || hiddenElementsSet === void 0 ? void 0 : hiddenElementsSet.has(value)))
65
+ ![...selectedElementsSet].every((value) => hiddenElementsSet?.has(value)))
66
66
  return false;
67
67
  }
68
68
  return true;