@itwin/appui-react 3.0.0-extension.0 → 3.1.0-dev.11

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 (975) hide show
  1. package/CHANGELOG.md +80 -1
  2. package/LICENSE.md +1 -1
  3. package/README.md +3 -3
  4. package/lib/cjs/appui-react/UiFramework.d.ts +37 -22
  5. package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
  6. package/lib/cjs/appui-react/UiFramework.js +53 -38
  7. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  8. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts +3 -3
  9. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  10. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js +3 -3
  11. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  12. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js +1 -1
  13. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  14. package/lib/cjs/appui-react/accudraw/Calculator.js +1 -1
  15. package/lib/cjs/appui-react/accudraw/Calculator.js.map +1 -1
  16. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.d.ts +4 -4
  17. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
  18. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js +5 -4
  19. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  20. package/lib/cjs/appui-react/backstage/Backstage.d.ts +0 -4
  21. package/lib/cjs/appui-react/backstage/Backstage.d.ts.map +1 -1
  22. package/lib/cjs/appui-react/backstage/Backstage.js +0 -1
  23. package/lib/cjs/appui-react/backstage/Backstage.js.map +1 -1
  24. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts +2 -0
  25. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  26. package/lib/cjs/appui-react/backstage/BackstageComposer.js +26 -8
  27. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  28. package/lib/cjs/appui-react/backstage/BackstageComposerItem.d.ts +2 -2
  29. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +1 -1
  30. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  31. package/lib/cjs/appui-react/backstage/BackstageItemProps.d.ts +3 -3
  32. package/lib/cjs/appui-react/backstage/BackstageItemProps.js +1 -1
  33. package/lib/cjs/appui-react/backstage/BackstageItemProps.js.map +1 -1
  34. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.d.ts +5 -5
  35. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.js +3 -3
  36. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.js.map +1 -1
  37. package/lib/cjs/appui-react/backstage/CommandLaunch.d.ts +2 -0
  38. package/lib/cjs/appui-react/backstage/CommandLaunch.d.ts.map +1 -1
  39. package/lib/cjs/appui-react/backstage/CommandLaunch.js +1 -0
  40. package/lib/cjs/appui-react/backstage/CommandLaunch.js.map +1 -1
  41. package/lib/cjs/appui-react/backstage/FrontstageLaunch.d.ts +4 -0
  42. package/lib/cjs/appui-react/backstage/FrontstageLaunch.d.ts.map +1 -1
  43. package/lib/cjs/appui-react/backstage/FrontstageLaunch.js +5 -6
  44. package/lib/cjs/appui-react/backstage/FrontstageLaunch.js.map +1 -1
  45. package/lib/cjs/appui-react/backstage/Separator.d.ts +1 -0
  46. package/lib/cjs/appui-react/backstage/Separator.d.ts.map +1 -1
  47. package/lib/cjs/appui-react/backstage/Separator.js +3 -2
  48. package/lib/cjs/appui-react/backstage/Separator.js.map +1 -1
  49. package/lib/cjs/appui-react/childwindow/ChildWindowManager.d.ts +1 -1
  50. package/lib/cjs/appui-react/childwindow/ChildWindowManager.d.ts.map +1 -1
  51. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js +4 -5
  52. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  53. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  54. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js +2 -0
  55. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  56. package/lib/cjs/appui-react/configurableui/ConfigurableUiManager.d.ts.map +1 -1
  57. package/lib/cjs/appui-react/configurableui/ConfigurableUiManager.js +6 -1
  58. package/lib/cjs/appui-react/configurableui/ConfigurableUiManager.js.map +1 -1
  59. package/lib/cjs/appui-react/configurableui/state.d.ts +10 -3
  60. package/lib/cjs/appui-react/configurableui/state.d.ts.map +1 -1
  61. package/lib/cjs/appui-react/configurableui/state.js +15 -2
  62. package/lib/cjs/appui-react/configurableui/state.js.map +1 -1
  63. package/lib/cjs/appui-react/content/ContentControl.d.ts +7 -1
  64. package/lib/cjs/appui-react/content/ContentControl.d.ts.map +1 -1
  65. package/lib/cjs/appui-react/content/ContentControl.js +13 -3
  66. package/lib/cjs/appui-react/content/ContentControl.js.map +1 -1
  67. package/lib/cjs/appui-react/content/ContentLayout.d.ts +10 -2
  68. package/lib/cjs/appui-react/content/ContentLayout.d.ts.map +1 -1
  69. package/lib/cjs/appui-react/content/ContentLayout.js +47 -39
  70. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  71. package/lib/cjs/appui-react/content/ContentLayout.scss +27 -27
  72. package/lib/cjs/appui-react/content/ContentViewManager.d.ts +8 -1
  73. package/lib/cjs/appui-react/content/ContentViewManager.d.ts.map +1 -1
  74. package/lib/cjs/appui-react/content/ContentViewManager.js +49 -25
  75. package/lib/cjs/appui-react/content/ContentViewManager.js.map +1 -1
  76. package/lib/cjs/appui-react/content/FloatingViewportContent.css +9 -0
  77. package/lib/cjs/appui-react/content/FloatingViewportContent.d.ts +25 -0
  78. package/lib/cjs/appui-react/content/FloatingViewportContent.d.ts.map +1 -0
  79. package/lib/cjs/appui-react/content/FloatingViewportContent.js +73 -0
  80. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -0
  81. package/lib/cjs/appui-react/content/IModelViewport.d.ts +13 -1
  82. package/lib/cjs/appui-react/content/IModelViewport.d.ts.map +1 -1
  83. package/lib/cjs/appui-react/content/IModelViewport.js +18 -5
  84. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  85. package/lib/cjs/appui-react/content/{SavedViewLayout.d.ts → StageContentLayout.d.ts} +11 -11
  86. package/lib/cjs/appui-react/content/StageContentLayout.d.ts.map +1 -0
  87. package/lib/cjs/appui-react/content/{SavedViewLayout.js → StageContentLayout.js} +19 -17
  88. package/lib/cjs/appui-react/content/StageContentLayout.js.map +1 -0
  89. package/lib/cjs/appui-react/content/{SavedView.d.ts → ViewStateHelper.d.ts} +7 -7
  90. package/lib/cjs/appui-react/content/ViewStateHelper.d.ts.map +1 -0
  91. package/lib/cjs/appui-react/content/{SavedView.js → ViewStateHelper.js} +4 -4
  92. package/lib/cjs/appui-react/content/ViewStateHelper.js.map +1 -0
  93. package/lib/cjs/appui-react/content/ViewportContentControl.d.ts +9 -0
  94. package/lib/cjs/appui-react/content/ViewportContentControl.d.ts.map +1 -1
  95. package/lib/cjs/appui-react/content/ViewportContentControl.js +24 -1
  96. package/lib/cjs/appui-react/content/ViewportContentControl.js.map +1 -1
  97. package/lib/cjs/appui-react/content/split-pane/Pane.d.ts +21 -0
  98. package/lib/cjs/appui-react/content/split-pane/Pane.d.ts.map +1 -0
  99. package/lib/cjs/appui-react/content/split-pane/Pane.js +43 -0
  100. package/lib/cjs/appui-react/content/split-pane/Pane.js.map +1 -0
  101. package/lib/cjs/appui-react/content/split-pane/Resizer.d.ts +23 -0
  102. package/lib/cjs/appui-react/content/split-pane/Resizer.d.ts.map +1 -0
  103. package/lib/cjs/appui-react/content/split-pane/Resizer.js +39 -0
  104. package/lib/cjs/appui-react/content/split-pane/Resizer.js.map +1 -0
  105. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts +70 -0
  106. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts.map +1 -0
  107. package/lib/cjs/appui-react/content/split-pane/SplitPane.js +243 -0
  108. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -0
  109. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts +1 -2
  110. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  111. package/lib/cjs/appui-react/cursor/CursorInformation.js +1 -1
  112. package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
  113. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  114. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  115. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +2 -2
  116. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  117. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js +3 -3
  118. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  119. package/lib/cjs/appui-react/dialog/ContentDialog.d.ts +24 -0
  120. package/lib/cjs/appui-react/dialog/ContentDialog.d.ts.map +1 -0
  121. package/lib/cjs/appui-react/dialog/ContentDialog.js +72 -0
  122. package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -0
  123. package/lib/cjs/appui-react/dialog/ContentDialog.scss +25 -0
  124. package/lib/cjs/appui-react/dialog/ContentDialogManager.d.ts +65 -0
  125. package/lib/cjs/appui-react/dialog/ContentDialogManager.d.ts.map +1 -0
  126. package/lib/cjs/appui-react/dialog/ContentDialogManager.js +148 -0
  127. package/lib/cjs/appui-react/dialog/ContentDialogManager.js.map +1 -0
  128. package/lib/cjs/appui-react/dialog/DialogManagerBase.d.ts +1 -1
  129. package/lib/cjs/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
  130. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +2 -2
  131. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  132. package/lib/cjs/appui-react/dialog/StandardMessageBox.d.ts.map +1 -1
  133. package/lib/cjs/appui-react/dialog/StandardMessageBox.js +3 -0
  134. package/lib/cjs/appui-react/dialog/StandardMessageBox.js.map +1 -1
  135. package/lib/cjs/appui-react/dragdrop/ZoneTargets.d.ts.map +1 -1
  136. package/lib/cjs/appui-react/dragdrop/ZoneTargets.js +8 -4
  137. package/lib/cjs/appui-react/dragdrop/ZoneTargets.js.map +1 -1
  138. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts +2 -2
  139. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  140. package/lib/cjs/appui-react/feedback/ElementTooltip.js +4 -2
  141. package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
  142. package/lib/cjs/appui-react/frontstage/Frontstage.d.ts +1 -0
  143. package/lib/cjs/appui-react/frontstage/Frontstage.d.ts.map +1 -1
  144. package/lib/cjs/appui-react/frontstage/Frontstage.js +32 -13
  145. package/lib/cjs/appui-react/frontstage/Frontstage.js.map +1 -1
  146. package/lib/cjs/appui-react/frontstage/FrontstageComposer.d.ts +3 -0
  147. package/lib/cjs/appui-react/frontstage/FrontstageComposer.d.ts.map +1 -1
  148. package/lib/cjs/appui-react/frontstage/FrontstageComposer.js +15 -1
  149. package/lib/cjs/appui-react/frontstage/FrontstageComposer.js.map +1 -1
  150. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +19 -2
  151. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  152. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +168 -6
  153. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  154. package/lib/cjs/appui-react/frontstage/FrontstageManager.d.ts.map +1 -1
  155. package/lib/cjs/appui-react/frontstage/FrontstageManager.js +2 -1
  156. package/lib/cjs/appui-react/frontstage/FrontstageManager.js.map +1 -1
  157. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.d.ts +6 -0
  158. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.d.ts.map +1 -1
  159. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  160. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  161. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  162. package/lib/cjs/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  163. package/lib/cjs/appui-react/hooks/useActiveViewport.js.map +1 -1
  164. package/lib/cjs/appui-react/hooks/useFrameworkVersion.d.ts +12 -9
  165. package/lib/cjs/appui-react/hooks/useFrameworkVersion.d.ts.map +1 -1
  166. package/lib/cjs/appui-react/hooks/useFrameworkVersion.js +19 -21
  167. package/lib/cjs/appui-react/hooks/useFrameworkVersion.js.map +1 -1
  168. package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts +1 -1
  169. package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts.map +1 -1
  170. package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.js +6 -7
  171. package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.js.map +1 -1
  172. package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts +3 -3
  173. package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts.map +1 -1
  174. package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js +1 -1
  175. package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js.map +1 -1
  176. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsTree.d.ts +0 -5
  177. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsTree.d.ts.map +1 -1
  178. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsTree.js.map +1 -1
  179. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts +1 -1
  180. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts.map +1 -1
  181. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js +81 -68
  182. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js.map +1 -1
  183. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  184. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  185. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts +2 -1
  186. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
  187. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -1
  188. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  189. package/lib/cjs/appui-react/keyinbrowser/KeyinBrowser.d.ts +5 -5
  190. package/lib/cjs/appui-react/keyinbrowser/KeyinBrowser.d.ts.map +1 -1
  191. package/lib/cjs/appui-react/keyinbrowser/KeyinBrowser.js +3 -2
  192. package/lib/cjs/appui-react/keyinbrowser/KeyinBrowser.js.map +1 -1
  193. package/lib/cjs/appui-react/messages/AppNotificationManager.d.ts +1 -1
  194. package/lib/cjs/appui-react/messages/AppNotificationManager.js +1 -1
  195. package/lib/cjs/appui-react/messages/AppNotificationManager.js.map +1 -1
  196. package/lib/cjs/appui-react/messages/MessageManager.d.ts +1 -2
  197. package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
  198. package/lib/cjs/appui-react/messages/MessageManager.js +15 -9
  199. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  200. package/lib/cjs/appui-react/messages/Pointer.d.ts +2 -2
  201. package/lib/cjs/appui-react/messages/Pointer.d.ts.map +1 -1
  202. package/lib/cjs/appui-react/messages/Pointer.js +4 -3
  203. package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
  204. package/lib/cjs/appui-react/messages/ToastMessage.js +2 -1
  205. package/lib/cjs/appui-react/messages/ToastMessage.js.map +1 -1
  206. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.d.ts +1 -1
  207. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
  208. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js +2 -2
  209. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  210. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.d.ts +2 -1
  211. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
  212. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js +2 -1
  213. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  214. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js +6 -4
  215. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  216. package/lib/cjs/appui-react/pickers/ListPicker.d.ts +3 -0
  217. package/lib/cjs/appui-react/pickers/ListPicker.d.ts.map +1 -1
  218. package/lib/cjs/appui-react/pickers/ListPicker.js +24 -9
  219. package/lib/cjs/appui-react/pickers/ListPicker.js.map +1 -1
  220. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts +1 -1
  221. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  222. package/lib/cjs/appui-react/pickers/ViewSelector.js +9 -9
  223. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  224. package/lib/cjs/appui-react/popup/CardPopup.d.ts +7 -4
  225. package/lib/cjs/appui-react/popup/CardPopup.d.ts.map +1 -1
  226. package/lib/cjs/appui-react/popup/CardPopup.js +3 -2
  227. package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
  228. package/lib/cjs/appui-react/popup/CardPopup.scss +3 -1
  229. package/lib/cjs/appui-react/popup/InputEditorPopup.d.ts +3 -2
  230. package/lib/cjs/appui-react/popup/InputEditorPopup.d.ts.map +1 -1
  231. package/lib/cjs/appui-react/popup/InputEditorPopup.js +1 -1
  232. package/lib/cjs/appui-react/popup/InputEditorPopup.js.map +1 -1
  233. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +6 -6
  234. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  235. package/lib/cjs/appui-react/popup/KeyinPalettePopup.d.ts +3 -2
  236. package/lib/cjs/appui-react/popup/KeyinPalettePopup.d.ts.map +1 -1
  237. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js +1 -1
  238. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  239. package/lib/cjs/appui-react/popup/PopupManager.d.ts +10 -10
  240. package/lib/cjs/appui-react/popup/PopupManager.d.ts.map +1 -1
  241. package/lib/cjs/appui-react/popup/PopupManager.js +4 -4
  242. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  243. package/lib/cjs/appui-react/popup/PositionPopup.d.ts +5 -3
  244. package/lib/cjs/appui-react/popup/PositionPopup.d.ts.map +1 -1
  245. package/lib/cjs/appui-react/popup/PositionPopup.js +3 -2
  246. package/lib/cjs/appui-react/popup/PositionPopup.js.map +1 -1
  247. package/lib/cjs/appui-react/popup/ToolSettingsPopup.d.ts +3 -2
  248. package/lib/cjs/appui-react/popup/ToolSettingsPopup.d.ts.map +1 -1
  249. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js +1 -1
  250. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  251. package/lib/cjs/appui-react/popup/ToolbarPopup.d.ts +4 -3
  252. package/lib/cjs/appui-react/popup/ToolbarPopup.d.ts.map +1 -1
  253. package/lib/cjs/appui-react/popup/ToolbarPopup.js +2 -2
  254. package/lib/cjs/appui-react/popup/ToolbarPopup.js.map +1 -1
  255. package/lib/cjs/appui-react/redux/FrameworkState.d.ts +1 -1
  256. package/lib/cjs/appui-react/redux/SessionState.d.ts +0 -6
  257. package/lib/cjs/appui-react/redux/SessionState.d.ts.map +1 -1
  258. package/lib/cjs/appui-react/redux/SessionState.js +0 -8
  259. package/lib/cjs/appui-react/redux/SessionState.js.map +1 -1
  260. package/lib/cjs/appui-react/redux/StateManager.d.ts +1 -1
  261. package/lib/cjs/appui-react/redux/StateManager.js.map +1 -1
  262. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js +7 -7
  263. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  264. package/lib/cjs/appui-react/settings/quantityformatting/UnitSystemSelector.d.ts.map +1 -1
  265. package/lib/cjs/appui-react/settings/quantityformatting/UnitSystemSelector.js +1 -1
  266. package/lib/cjs/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  267. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  268. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js +28 -19
  269. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  270. package/lib/cjs/appui-react/shared/CustomItemDef.js.map +1 -1
  271. package/lib/cjs/appui-react/shared/CustomItemProps.js.map +1 -1
  272. package/lib/cjs/appui-react/shared/GroupItemProps.js.map +1 -1
  273. package/lib/cjs/appui-react/shared/ItemDefBase.d.ts +2 -2
  274. package/lib/cjs/appui-react/shared/ItemDefBase.d.ts.map +1 -1
  275. package/lib/cjs/appui-react/shared/ItemDefBase.js +1 -1
  276. package/lib/cjs/appui-react/shared/ItemDefBase.js.map +1 -1
  277. package/lib/cjs/appui-react/shared/ItemProps.d.ts +2 -2
  278. package/lib/cjs/appui-react/shared/ItemProps.js.map +1 -1
  279. package/lib/cjs/appui-react/shared/ToolItemDef.d.ts +1 -1
  280. package/lib/cjs/appui-react/shared/ToolItemDef.d.ts.map +1 -1
  281. package/lib/cjs/appui-react/shared/ToolItemDef.js +2 -2
  282. package/lib/cjs/appui-react/shared/ToolItemDef.js.map +1 -1
  283. package/lib/cjs/appui-react/stagepanels/FrameworkStagePanel.d.ts.map +1 -1
  284. package/lib/cjs/appui-react/stagepanels/FrameworkStagePanel.js +1 -0
  285. package/lib/cjs/appui-react/stagepanels/FrameworkStagePanel.js.map +1 -1
  286. package/lib/cjs/appui-react/stagepanels/StagePanel.d.ts +2 -2
  287. package/lib/cjs/appui-react/stagepanels/StagePanel.d.ts.map +1 -1
  288. package/lib/cjs/appui-react/stagepanels/StagePanel.js +1 -0
  289. package/lib/cjs/appui-react/stagepanels/StagePanel.js.map +1 -1
  290. package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts +26 -2
  291. package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
  292. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +24 -3
  293. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  294. package/lib/cjs/appui-react/stagepanels/StagePanelHeader.d.ts +2 -2
  295. package/lib/cjs/appui-react/stagepanels/StagePanelHeader.d.ts.map +1 -1
  296. package/lib/cjs/appui-react/stagepanels/StagePanelHeader.js +2 -1
  297. package/lib/cjs/appui-react/stagepanels/StagePanelHeader.js.map +1 -1
  298. package/lib/cjs/appui-react/statusbar/StatusBar.js +2 -1
  299. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  300. package/lib/cjs/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
  301. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js +17 -5
  302. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  303. package/lib/cjs/appui-react/statusbar/StatusBarItemsManager.d.ts +1 -1
  304. package/lib/cjs/appui-react/statusbar/StatusBarItemsManager.js +1 -1
  305. package/lib/cjs/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  306. package/lib/cjs/appui-react/statusfields/Indicator.d.ts +15 -14
  307. package/lib/cjs/appui-react/statusfields/Indicator.d.ts.map +1 -1
  308. package/lib/cjs/appui-react/statusfields/Indicator.js +23 -21
  309. package/lib/cjs/appui-react/statusfields/Indicator.js.map +1 -1
  310. package/lib/cjs/appui-react/statusfields/Indicator.scss +29 -18
  311. package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  312. package/lib/cjs/appui-react/statusfields/MessageCenter.js +2 -1
  313. package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
  314. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts +1 -0
  315. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  316. package/lib/cjs/appui-react/statusfields/SelectionScope.js +6 -4
  317. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  318. package/lib/cjs/appui-react/statusfields/SelectionScope.scss +13 -3
  319. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts +2 -10
  320. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  321. package/lib/cjs/appui-react/statusfields/SnapMode.js +4 -34
  322. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  323. package/lib/cjs/appui-react/statusfields/ViewAttributes.d.ts +0 -6
  324. package/lib/cjs/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
  325. package/lib/cjs/appui-react/statusfields/ViewAttributes.js +1 -25
  326. package/lib/cjs/appui-react/statusfields/ViewAttributes.js.map +1 -1
  327. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +7 -7
  328. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  329. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +13 -12
  330. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  331. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +8 -3
  332. package/lib/cjs/appui-react/syncui/BooleanListener.d.ts +2 -2
  333. package/lib/cjs/appui-react/syncui/BooleanListener.d.ts.map +1 -1
  334. package/lib/cjs/appui-react/syncui/BooleanListener.js +2 -1
  335. package/lib/cjs/appui-react/syncui/BooleanListener.js.map +1 -1
  336. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +8 -18
  337. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  338. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +30 -103
  339. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  340. package/lib/cjs/appui-react/toolbar/ActionButtonItem.js +2 -1
  341. package/lib/cjs/appui-react/toolbar/ActionButtonItem.js.map +1 -1
  342. package/lib/cjs/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  343. package/lib/cjs/appui-react/toolbar/ActionItemButton.js +2 -1
  344. package/lib/cjs/appui-react/toolbar/ActionItemButton.js.map +1 -1
  345. package/lib/cjs/appui-react/toolbar/GroupButtonItem.js +24 -20
  346. package/lib/cjs/appui-react/toolbar/GroupButtonItem.js.map +1 -1
  347. package/lib/cjs/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  348. package/lib/cjs/appui-react/toolbar/GroupItem.js +33 -29
  349. package/lib/cjs/appui-react/toolbar/GroupItem.js.map +1 -1
  350. package/lib/cjs/appui-react/toolbar/ToolButton.js +3 -2
  351. package/lib/cjs/appui-react/toolbar/ToolButton.js.map +1 -1
  352. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  353. package/lib/cjs/appui-react/toolbar/Toolbar.js +3 -2
  354. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  355. package/lib/cjs/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
  356. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js +22 -20
  357. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  358. package/lib/cjs/appui-react/tools/CoreToolDefinitions.d.ts +1 -1
  359. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +4 -4
  360. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  361. package/lib/cjs/appui-react/tools/MarkupToolDefinitions.d.ts +2 -2
  362. package/lib/cjs/appui-react/tools/MarkupToolDefinitions.js +2 -2
  363. package/lib/cjs/appui-react/tools/MarkupToolDefinitions.js.map +1 -1
  364. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts +8 -10
  365. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  366. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js +17 -36
  367. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  368. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts +7 -9
  369. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  370. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +12 -20
  371. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  372. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +7 -9
  373. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  374. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +39 -50
  375. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  376. package/lib/cjs/appui-react/uiprovider/DefaultDialogGridContainer.scss +4 -4
  377. package/lib/{esm/appui-react/uisettings → cjs/appui-react/uistate}/AppUiSettings.d.ts +11 -9
  378. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -0
  379. package/lib/cjs/appui-react/{uisettings → uistate}/AppUiSettings.js +12 -8
  380. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -0
  381. package/lib/cjs/appui-react/uistate/UserSettingsStorage.d.ts +15 -0
  382. package/lib/cjs/appui-react/uistate/UserSettingsStorage.d.ts.map +1 -0
  383. package/lib/cjs/appui-react/uistate/UserSettingsStorage.js +59 -0
  384. package/lib/cjs/appui-react/uistate/UserSettingsStorage.js.map +1 -0
  385. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts +20 -0
  386. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -0
  387. package/lib/cjs/appui-react/uistate/useUiStateStorage.js +38 -0
  388. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -0
  389. package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts +5 -5
  390. package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
  391. package/lib/cjs/appui-react/utils/UiShowHideManager.js +8 -8
  392. package/lib/cjs/appui-react/utils/UiShowHideManager.js.map +1 -1
  393. package/lib/cjs/appui-react/widget-panels/Content.d.ts.map +1 -1
  394. package/lib/cjs/appui-react/widget-panels/Content.js +1 -4
  395. package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
  396. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +98 -8
  397. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  398. package/lib/cjs/appui-react/widget-panels/Frontstage.js +92 -97
  399. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  400. package/lib/cjs/appui-react/widgets/BackstageAppButton.d.ts +22 -0
  401. package/lib/cjs/appui-react/widgets/BackstageAppButton.d.ts.map +1 -0
  402. package/lib/cjs/appui-react/widgets/BackstageAppButton.js +56 -0
  403. package/lib/cjs/appui-react/widgets/BackstageAppButton.js.map +1 -0
  404. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.d.ts.map +1 -1
  405. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js +1 -0
  406. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  407. package/lib/cjs/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  408. package/lib/cjs/appui-react/widgets/BasicToolWidget.js +3 -1
  409. package/lib/cjs/appui-react/widgets/BasicToolWidget.js.map +1 -1
  410. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.d.ts +9 -0
  411. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.d.ts.map +1 -1
  412. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.js +10 -0
  413. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  414. package/lib/cjs/appui-react/widgets/NavigationWidget.d.ts.map +1 -1
  415. package/lib/cjs/appui-react/widgets/NavigationWidget.js +2 -1
  416. package/lib/cjs/appui-react/widgets/NavigationWidget.js.map +1 -1
  417. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +1 -0
  418. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  419. package/lib/cjs/appui-react/widgets/StableWidgetDef.d.ts +1 -1
  420. package/lib/cjs/appui-react/widgets/StableWidgetDef.js +1 -1
  421. package/lib/cjs/appui-react/widgets/StableWidgetDef.js.map +1 -1
  422. package/lib/cjs/appui-react/widgets/ToolSettingsContent.js +2 -1
  423. package/lib/cjs/appui-react/widgets/ToolSettingsContent.js.map +1 -1
  424. package/lib/cjs/appui-react/widgets/ToolWidget.js +3 -2
  425. package/lib/cjs/appui-react/widgets/ToolWidget.js.map +1 -1
  426. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.d.ts +0 -12
  427. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.d.ts.map +1 -1
  428. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.js +1 -36
  429. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  430. package/lib/cjs/appui-react/widgets/ToolbarWidgetBase.d.ts +1 -0
  431. package/lib/cjs/appui-react/widgets/ToolbarWidgetBase.d.ts.map +1 -1
  432. package/lib/cjs/appui-react/widgets/ToolbarWidgetBase.js +5 -2
  433. package/lib/cjs/appui-react/widgets/ToolbarWidgetBase.js.map +1 -1
  434. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.d.ts +0 -1
  435. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.d.ts.map +1 -1
  436. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.js +1 -1
  437. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  438. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +2 -3
  439. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  440. package/lib/cjs/appui-react/widgets/WidgetDef.js +18 -7
  441. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  442. package/lib/cjs/appui-react/widgets/WidgetHost.d.ts.map +1 -1
  443. package/lib/cjs/appui-react/widgets/WidgetHost.js +1 -0
  444. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  445. package/lib/cjs/appui-react/widgets/WidgetStack.d.ts.map +1 -1
  446. package/lib/cjs/appui-react/widgets/WidgetStack.js +2 -0
  447. package/lib/cjs/appui-react/widgets/WidgetStack.js.map +1 -1
  448. package/lib/cjs/appui-react/zones/FrameworkZone.js.map +1 -1
  449. package/lib/cjs/appui-react/zones/StatusBarZone.js.map +1 -1
  450. package/lib/cjs/appui-react/zones/Zone.d.ts +1 -1
  451. package/lib/cjs/appui-react/zones/Zone.d.ts.map +1 -1
  452. package/lib/cjs/appui-react/zones/Zone.js +2 -1
  453. package/lib/cjs/appui-react/zones/Zone.js.map +1 -1
  454. package/lib/cjs/appui-react/zones/ZoneDef.d.ts +4 -4
  455. package/lib/cjs/appui-react/zones/ZoneDef.d.ts.map +1 -1
  456. package/lib/cjs/appui-react/zones/ZoneDef.js +5 -4
  457. package/lib/cjs/appui-react/zones/ZoneDef.js.map +1 -1
  458. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.d.ts +1 -2
  459. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.d.ts.map +1 -1
  460. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.js +3 -2
  461. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.js.map +1 -1
  462. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsZone.js.map +1 -1
  463. package/lib/cjs/appui-react.d.ts +18 -18
  464. package/lib/cjs/appui-react.d.ts.map +1 -1
  465. package/lib/cjs/appui-react.js +18 -18
  466. package/lib/cjs/appui-react.js.map +1 -1
  467. package/lib/esm/appui-react/UiFramework.d.ts +37 -22
  468. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  469. package/lib/esm/appui-react/UiFramework.js +52 -37
  470. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  471. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts +3 -3
  472. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  473. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +3 -3
  474. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  475. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js +1 -1
  476. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  477. package/lib/esm/appui-react/accudraw/Calculator.js +1 -1
  478. package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
  479. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts +4 -4
  480. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
  481. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js +6 -5
  482. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  483. package/lib/esm/appui-react/backstage/Backstage.d.ts +0 -4
  484. package/lib/esm/appui-react/backstage/Backstage.d.ts.map +1 -1
  485. package/lib/esm/appui-react/backstage/Backstage.js +0 -1
  486. package/lib/esm/appui-react/backstage/Backstage.js.map +1 -1
  487. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts +2 -0
  488. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  489. package/lib/esm/appui-react/backstage/BackstageComposer.js +27 -9
  490. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  491. package/lib/esm/appui-react/backstage/BackstageComposerItem.d.ts +2 -2
  492. package/lib/esm/appui-react/backstage/BackstageComposerItem.js +1 -1
  493. package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  494. package/lib/esm/appui-react/backstage/BackstageItemProps.d.ts +3 -3
  495. package/lib/esm/appui-react/backstage/BackstageItemProps.js +1 -1
  496. package/lib/esm/appui-react/backstage/BackstageItemProps.js.map +1 -1
  497. package/lib/esm/appui-react/backstage/BackstageItemUtilities.d.ts +5 -5
  498. package/lib/esm/appui-react/backstage/BackstageItemUtilities.js +3 -3
  499. package/lib/esm/appui-react/backstage/BackstageItemUtilities.js.map +1 -1
  500. package/lib/esm/appui-react/backstage/CommandLaunch.d.ts +2 -0
  501. package/lib/esm/appui-react/backstage/CommandLaunch.d.ts.map +1 -1
  502. package/lib/esm/appui-react/backstage/CommandLaunch.js +1 -0
  503. package/lib/esm/appui-react/backstage/CommandLaunch.js.map +1 -1
  504. package/lib/esm/appui-react/backstage/FrontstageLaunch.d.ts +4 -0
  505. package/lib/esm/appui-react/backstage/FrontstageLaunch.d.ts.map +1 -1
  506. package/lib/esm/appui-react/backstage/FrontstageLaunch.js +5 -6
  507. package/lib/esm/appui-react/backstage/FrontstageLaunch.js.map +1 -1
  508. package/lib/esm/appui-react/backstage/Separator.d.ts +1 -0
  509. package/lib/esm/appui-react/backstage/Separator.d.ts.map +1 -1
  510. package/lib/esm/appui-react/backstage/Separator.js +3 -2
  511. package/lib/esm/appui-react/backstage/Separator.js.map +1 -1
  512. package/lib/esm/appui-react/childwindow/ChildWindowManager.d.ts +1 -1
  513. package/lib/esm/appui-react/childwindow/ChildWindowManager.d.ts.map +1 -1
  514. package/lib/esm/appui-react/childwindow/ChildWindowManager.js +4 -5
  515. package/lib/esm/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  516. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  517. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js +2 -0
  518. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  519. package/lib/esm/appui-react/configurableui/ConfigurableUiManager.d.ts.map +1 -1
  520. package/lib/esm/appui-react/configurableui/ConfigurableUiManager.js +6 -1
  521. package/lib/esm/appui-react/configurableui/ConfigurableUiManager.js.map +1 -1
  522. package/lib/esm/appui-react/configurableui/state.d.ts +10 -3
  523. package/lib/esm/appui-react/configurableui/state.d.ts.map +1 -1
  524. package/lib/esm/appui-react/configurableui/state.js +15 -2
  525. package/lib/esm/appui-react/configurableui/state.js.map +1 -1
  526. package/lib/esm/appui-react/content/ContentControl.d.ts +7 -1
  527. package/lib/esm/appui-react/content/ContentControl.d.ts.map +1 -1
  528. package/lib/esm/appui-react/content/ContentControl.js +11 -2
  529. package/lib/esm/appui-react/content/ContentControl.js.map +1 -1
  530. package/lib/esm/appui-react/content/ContentLayout.d.ts +10 -2
  531. package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
  532. package/lib/esm/appui-react/content/ContentLayout.js +44 -37
  533. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  534. package/lib/esm/appui-react/content/ContentLayout.scss +27 -27
  535. package/lib/esm/appui-react/content/ContentViewManager.d.ts +8 -1
  536. package/lib/esm/appui-react/content/ContentViewManager.d.ts.map +1 -1
  537. package/lib/esm/appui-react/content/ContentViewManager.js +47 -23
  538. package/lib/esm/appui-react/content/ContentViewManager.js.map +1 -1
  539. package/lib/esm/appui-react/content/FloatingViewportContent.css +9 -0
  540. package/lib/esm/appui-react/content/FloatingViewportContent.d.ts +25 -0
  541. package/lib/esm/appui-react/content/FloatingViewportContent.d.ts.map +1 -0
  542. package/lib/esm/appui-react/content/FloatingViewportContent.js +69 -0
  543. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -0
  544. package/lib/esm/appui-react/content/IModelViewport.d.ts +13 -1
  545. package/lib/esm/appui-react/content/IModelViewport.d.ts.map +1 -1
  546. package/lib/esm/appui-react/content/IModelViewport.js +16 -4
  547. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  548. package/lib/esm/appui-react/content/{SavedViewLayout.d.ts → StageContentLayout.d.ts} +11 -11
  549. package/lib/esm/appui-react/content/StageContentLayout.d.ts.map +1 -0
  550. package/lib/esm/appui-react/content/{SavedViewLayout.js → StageContentLayout.js} +17 -15
  551. package/lib/esm/appui-react/content/StageContentLayout.js.map +1 -0
  552. package/lib/esm/appui-react/content/{SavedView.d.ts → ViewStateHelper.d.ts} +7 -7
  553. package/lib/esm/appui-react/content/ViewStateHelper.d.ts.map +1 -0
  554. package/lib/esm/appui-react/content/{SavedView.js → ViewStateHelper.js} +2 -2
  555. package/lib/esm/appui-react/content/ViewStateHelper.js.map +1 -0
  556. package/lib/esm/appui-react/content/ViewportContentControl.d.ts +9 -0
  557. package/lib/esm/appui-react/content/ViewportContentControl.d.ts.map +1 -1
  558. package/lib/esm/appui-react/content/ViewportContentControl.js +23 -1
  559. package/lib/esm/appui-react/content/ViewportContentControl.js.map +1 -1
  560. package/lib/esm/appui-react/content/split-pane/Pane.d.ts +21 -0
  561. package/lib/esm/appui-react/content/split-pane/Pane.d.ts.map +1 -0
  562. package/lib/esm/appui-react/content/split-pane/Pane.js +39 -0
  563. package/lib/esm/appui-react/content/split-pane/Pane.js.map +1 -0
  564. package/lib/esm/appui-react/content/split-pane/Resizer.d.ts +23 -0
  565. package/lib/esm/appui-react/content/split-pane/Resizer.d.ts.map +1 -0
  566. package/lib/esm/appui-react/content/split-pane/Resizer.js +35 -0
  567. package/lib/esm/appui-react/content/split-pane/Resizer.js.map +1 -0
  568. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts +70 -0
  569. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts.map +1 -0
  570. package/lib/esm/appui-react/content/split-pane/SplitPane.js +239 -0
  571. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -0
  572. package/lib/esm/appui-react/cursor/CursorInformation.d.ts +1 -2
  573. package/lib/esm/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  574. package/lib/esm/appui-react/cursor/CursorInformation.js +2 -2
  575. package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
  576. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  577. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  578. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +2 -2
  579. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  580. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js +2 -2
  581. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  582. package/lib/esm/appui-react/dialog/ContentDialog.d.ts +24 -0
  583. package/lib/esm/appui-react/dialog/ContentDialog.d.ts.map +1 -0
  584. package/lib/esm/appui-react/dialog/ContentDialog.js +67 -0
  585. package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -0
  586. package/lib/esm/appui-react/dialog/ContentDialog.scss +25 -0
  587. package/lib/esm/appui-react/dialog/ContentDialogManager.d.ts +65 -0
  588. package/lib/esm/appui-react/dialog/ContentDialogManager.d.ts.map +1 -0
  589. package/lib/esm/appui-react/dialog/ContentDialogManager.js +142 -0
  590. package/lib/esm/appui-react/dialog/ContentDialogManager.js.map +1 -0
  591. package/lib/esm/appui-react/dialog/DialogManagerBase.d.ts +1 -1
  592. package/lib/esm/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
  593. package/lib/esm/appui-react/dialog/DialogManagerBase.js +1 -1
  594. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  595. package/lib/esm/appui-react/dialog/StandardMessageBox.d.ts.map +1 -1
  596. package/lib/esm/appui-react/dialog/StandardMessageBox.js +3 -0
  597. package/lib/esm/appui-react/dialog/StandardMessageBox.js.map +1 -1
  598. package/lib/esm/appui-react/dragdrop/ZoneTargets.d.ts.map +1 -1
  599. package/lib/esm/appui-react/dragdrop/ZoneTargets.js +8 -4
  600. package/lib/esm/appui-react/dragdrop/ZoneTargets.js.map +1 -1
  601. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts +2 -2
  602. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  603. package/lib/esm/appui-react/feedback/ElementTooltip.js +4 -2
  604. package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
  605. package/lib/esm/appui-react/frontstage/Frontstage.d.ts +1 -0
  606. package/lib/esm/appui-react/frontstage/Frontstage.d.ts.map +1 -1
  607. package/lib/esm/appui-react/frontstage/Frontstage.js +32 -13
  608. package/lib/esm/appui-react/frontstage/Frontstage.js.map +1 -1
  609. package/lib/esm/appui-react/frontstage/FrontstageComposer.d.ts +3 -0
  610. package/lib/esm/appui-react/frontstage/FrontstageComposer.d.ts.map +1 -1
  611. package/lib/esm/appui-react/frontstage/FrontstageComposer.js +15 -1
  612. package/lib/esm/appui-react/frontstage/FrontstageComposer.js.map +1 -1
  613. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +19 -2
  614. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  615. package/lib/esm/appui-react/frontstage/FrontstageDef.js +170 -8
  616. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  617. package/lib/esm/appui-react/frontstage/FrontstageManager.d.ts.map +1 -1
  618. package/lib/esm/appui-react/frontstage/FrontstageManager.js +2 -1
  619. package/lib/esm/appui-react/frontstage/FrontstageManager.js.map +1 -1
  620. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.d.ts +6 -0
  621. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.d.ts.map +1 -1
  622. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  623. package/lib/esm/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  624. package/lib/esm/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  625. package/lib/esm/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  626. package/lib/esm/appui-react/hooks/useActiveViewport.js.map +1 -1
  627. package/lib/esm/appui-react/hooks/useFrameworkVersion.d.ts +12 -9
  628. package/lib/esm/appui-react/hooks/useFrameworkVersion.d.ts.map +1 -1
  629. package/lib/esm/appui-react/hooks/useFrameworkVersion.js +19 -21
  630. package/lib/esm/appui-react/hooks/useFrameworkVersion.js.map +1 -1
  631. package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts +1 -1
  632. package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts.map +1 -1
  633. package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.js +6 -7
  634. package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.js.map +1 -1
  635. package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts +3 -3
  636. package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts.map +1 -1
  637. package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js +1 -1
  638. package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js.map +1 -1
  639. package/lib/esm/appui-react/imodel-components/models-tree/ModelsTree.d.ts +0 -5
  640. package/lib/esm/appui-react/imodel-components/models-tree/ModelsTree.d.ts.map +1 -1
  641. package/lib/esm/appui-react/imodel-components/models-tree/ModelsTree.js.map +1 -1
  642. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts +1 -1
  643. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts.map +1 -1
  644. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js +83 -70
  645. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js.map +1 -1
  646. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  647. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  648. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts +2 -1
  649. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
  650. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +2 -2
  651. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  652. package/lib/esm/appui-react/keyinbrowser/KeyinBrowser.d.ts +5 -5
  653. package/lib/esm/appui-react/keyinbrowser/KeyinBrowser.d.ts.map +1 -1
  654. package/lib/esm/appui-react/keyinbrowser/KeyinBrowser.js +3 -2
  655. package/lib/esm/appui-react/keyinbrowser/KeyinBrowser.js.map +1 -1
  656. package/lib/esm/appui-react/messages/AppNotificationManager.d.ts +1 -1
  657. package/lib/esm/appui-react/messages/AppNotificationManager.js +1 -1
  658. package/lib/esm/appui-react/messages/AppNotificationManager.js.map +1 -1
  659. package/lib/esm/appui-react/messages/MessageManager.d.ts +1 -2
  660. package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
  661. package/lib/esm/appui-react/messages/MessageManager.js +9 -3
  662. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  663. package/lib/esm/appui-react/messages/Pointer.d.ts +2 -2
  664. package/lib/esm/appui-react/messages/Pointer.d.ts.map +1 -1
  665. package/lib/esm/appui-react/messages/Pointer.js +4 -3
  666. package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
  667. package/lib/esm/appui-react/messages/ToastMessage.js +2 -1
  668. package/lib/esm/appui-react/messages/ToastMessage.js.map +1 -1
  669. package/lib/esm/appui-react/navigationaids/NavigationAidControl.d.ts +1 -1
  670. package/lib/esm/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
  671. package/lib/esm/appui-react/navigationaids/NavigationAidControl.js +1 -1
  672. package/lib/esm/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  673. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.d.ts +2 -1
  674. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
  675. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js +2 -1
  676. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  677. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js +6 -4
  678. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  679. package/lib/esm/appui-react/pickers/ListPicker.d.ts +3 -0
  680. package/lib/esm/appui-react/pickers/ListPicker.d.ts.map +1 -1
  681. package/lib/esm/appui-react/pickers/ListPicker.js +23 -9
  682. package/lib/esm/appui-react/pickers/ListPicker.js.map +1 -1
  683. package/lib/esm/appui-react/pickers/ViewSelector.d.ts +1 -1
  684. package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  685. package/lib/esm/appui-react/pickers/ViewSelector.js +7 -7
  686. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  687. package/lib/esm/appui-react/popup/CardPopup.d.ts +7 -4
  688. package/lib/esm/appui-react/popup/CardPopup.d.ts.map +1 -1
  689. package/lib/esm/appui-react/popup/CardPopup.js +3 -2
  690. package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
  691. package/lib/esm/appui-react/popup/CardPopup.scss +3 -1
  692. package/lib/esm/appui-react/popup/InputEditorPopup.d.ts +3 -2
  693. package/lib/esm/appui-react/popup/InputEditorPopup.d.ts.map +1 -1
  694. package/lib/esm/appui-react/popup/InputEditorPopup.js +1 -1
  695. package/lib/esm/appui-react/popup/InputEditorPopup.js.map +1 -1
  696. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +7 -7
  697. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  698. package/lib/esm/appui-react/popup/KeyinPalettePopup.d.ts +3 -2
  699. package/lib/esm/appui-react/popup/KeyinPalettePopup.d.ts.map +1 -1
  700. package/lib/esm/appui-react/popup/KeyinPalettePopup.js +1 -1
  701. package/lib/esm/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  702. package/lib/esm/appui-react/popup/PopupManager.d.ts +10 -10
  703. package/lib/esm/appui-react/popup/PopupManager.d.ts.map +1 -1
  704. package/lib/esm/appui-react/popup/PopupManager.js +5 -5
  705. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  706. package/lib/esm/appui-react/popup/PositionPopup.d.ts +5 -3
  707. package/lib/esm/appui-react/popup/PositionPopup.d.ts.map +1 -1
  708. package/lib/esm/appui-react/popup/PositionPopup.js +3 -2
  709. package/lib/esm/appui-react/popup/PositionPopup.js.map +1 -1
  710. package/lib/esm/appui-react/popup/ToolSettingsPopup.d.ts +3 -2
  711. package/lib/esm/appui-react/popup/ToolSettingsPopup.d.ts.map +1 -1
  712. package/lib/esm/appui-react/popup/ToolSettingsPopup.js +1 -1
  713. package/lib/esm/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  714. package/lib/esm/appui-react/popup/ToolbarPopup.d.ts +4 -3
  715. package/lib/esm/appui-react/popup/ToolbarPopup.d.ts.map +1 -1
  716. package/lib/esm/appui-react/popup/ToolbarPopup.js +2 -2
  717. package/lib/esm/appui-react/popup/ToolbarPopup.js.map +1 -1
  718. package/lib/esm/appui-react/redux/FrameworkState.d.ts +1 -1
  719. package/lib/esm/appui-react/redux/SessionState.d.ts +0 -6
  720. package/lib/esm/appui-react/redux/SessionState.d.ts.map +1 -1
  721. package/lib/esm/appui-react/redux/SessionState.js +0 -8
  722. package/lib/esm/appui-react/redux/SessionState.js.map +1 -1
  723. package/lib/esm/appui-react/redux/StateManager.d.ts +1 -1
  724. package/lib/esm/appui-react/redux/StateManager.js.map +1 -1
  725. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js +7 -7
  726. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  727. package/lib/esm/appui-react/settings/quantityformatting/UnitSystemSelector.d.ts.map +1 -1
  728. package/lib/esm/appui-react/settings/quantityformatting/UnitSystemSelector.js +1 -1
  729. package/lib/esm/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  730. package/lib/esm/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  731. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js +28 -19
  732. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  733. package/lib/esm/appui-react/shared/CustomItemDef.js.map +1 -1
  734. package/lib/esm/appui-react/shared/CustomItemProps.js.map +1 -1
  735. package/lib/esm/appui-react/shared/GroupItemProps.js.map +1 -1
  736. package/lib/esm/appui-react/shared/ItemDefBase.d.ts +2 -2
  737. package/lib/esm/appui-react/shared/ItemDefBase.d.ts.map +1 -1
  738. package/lib/esm/appui-react/shared/ItemDefBase.js +1 -1
  739. package/lib/esm/appui-react/shared/ItemDefBase.js.map +1 -1
  740. package/lib/esm/appui-react/shared/ItemProps.d.ts +2 -2
  741. package/lib/esm/appui-react/shared/ItemProps.js.map +1 -1
  742. package/lib/esm/appui-react/shared/ToolItemDef.d.ts +1 -1
  743. package/lib/esm/appui-react/shared/ToolItemDef.d.ts.map +1 -1
  744. package/lib/esm/appui-react/shared/ToolItemDef.js +2 -2
  745. package/lib/esm/appui-react/shared/ToolItemDef.js.map +1 -1
  746. package/lib/esm/appui-react/stagepanels/FrameworkStagePanel.d.ts.map +1 -1
  747. package/lib/esm/appui-react/stagepanels/FrameworkStagePanel.js +1 -0
  748. package/lib/esm/appui-react/stagepanels/FrameworkStagePanel.js.map +1 -1
  749. package/lib/esm/appui-react/stagepanels/StagePanel.d.ts +2 -2
  750. package/lib/esm/appui-react/stagepanels/StagePanel.d.ts.map +1 -1
  751. package/lib/esm/appui-react/stagepanels/StagePanel.js +1 -0
  752. package/lib/esm/appui-react/stagepanels/StagePanel.js.map +1 -1
  753. package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts +26 -2
  754. package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
  755. package/lib/esm/appui-react/stagepanels/StagePanelDef.js +24 -3
  756. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  757. package/lib/esm/appui-react/stagepanels/StagePanelHeader.d.ts +2 -2
  758. package/lib/esm/appui-react/stagepanels/StagePanelHeader.d.ts.map +1 -1
  759. package/lib/esm/appui-react/stagepanels/StagePanelHeader.js +2 -1
  760. package/lib/esm/appui-react/stagepanels/StagePanelHeader.js.map +1 -1
  761. package/lib/esm/appui-react/statusbar/StatusBar.js +2 -1
  762. package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
  763. package/lib/esm/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
  764. package/lib/esm/appui-react/statusbar/StatusBarComposer.js +17 -5
  765. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  766. package/lib/esm/appui-react/statusbar/StatusBarItemsManager.d.ts +1 -1
  767. package/lib/esm/appui-react/statusbar/StatusBarItemsManager.js +1 -1
  768. package/lib/esm/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  769. package/lib/esm/appui-react/statusfields/Indicator.d.ts +15 -14
  770. package/lib/esm/appui-react/statusfields/Indicator.d.ts.map +1 -1
  771. package/lib/esm/appui-react/statusfields/Indicator.js +23 -21
  772. package/lib/esm/appui-react/statusfields/Indicator.js.map +1 -1
  773. package/lib/esm/appui-react/statusfields/Indicator.scss +29 -18
  774. package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  775. package/lib/esm/appui-react/statusfields/MessageCenter.js +2 -1
  776. package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
  777. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts +1 -0
  778. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  779. package/lib/esm/appui-react/statusfields/SelectionScope.js +6 -4
  780. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  781. package/lib/esm/appui-react/statusfields/SelectionScope.scss +13 -3
  782. package/lib/esm/appui-react/statusfields/SnapMode.d.ts +2 -10
  783. package/lib/esm/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  784. package/lib/esm/appui-react/statusfields/SnapMode.js +5 -35
  785. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  786. package/lib/esm/appui-react/statusfields/ViewAttributes.d.ts +0 -6
  787. package/lib/esm/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
  788. package/lib/esm/appui-react/statusfields/ViewAttributes.js +2 -26
  789. package/lib/esm/appui-react/statusfields/ViewAttributes.js.map +1 -1
  790. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +7 -7
  791. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  792. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +14 -13
  793. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  794. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +8 -3
  795. package/lib/esm/appui-react/syncui/BooleanListener.d.ts +2 -2
  796. package/lib/esm/appui-react/syncui/BooleanListener.d.ts.map +1 -1
  797. package/lib/esm/appui-react/syncui/BooleanListener.js +2 -1
  798. package/lib/esm/appui-react/syncui/BooleanListener.js.map +1 -1
  799. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +8 -18
  800. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  801. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +29 -101
  802. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  803. package/lib/esm/appui-react/toolbar/ActionButtonItem.js +2 -1
  804. package/lib/esm/appui-react/toolbar/ActionButtonItem.js.map +1 -1
  805. package/lib/esm/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  806. package/lib/esm/appui-react/toolbar/ActionItemButton.js +2 -1
  807. package/lib/esm/appui-react/toolbar/ActionItemButton.js.map +1 -1
  808. package/lib/esm/appui-react/toolbar/GroupButtonItem.js +24 -20
  809. package/lib/esm/appui-react/toolbar/GroupButtonItem.js.map +1 -1
  810. package/lib/esm/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  811. package/lib/esm/appui-react/toolbar/GroupItem.js +33 -29
  812. package/lib/esm/appui-react/toolbar/GroupItem.js.map +1 -1
  813. package/lib/esm/appui-react/toolbar/ToolButton.js +3 -2
  814. package/lib/esm/appui-react/toolbar/ToolButton.js.map +1 -1
  815. package/lib/esm/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  816. package/lib/esm/appui-react/toolbar/Toolbar.js +3 -2
  817. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  818. package/lib/esm/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
  819. package/lib/esm/appui-react/toolbar/ToolbarComposer.js +22 -20
  820. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  821. package/lib/esm/appui-react/tools/CoreToolDefinitions.d.ts +1 -1
  822. package/lib/esm/appui-react/tools/CoreToolDefinitions.js +4 -4
  823. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  824. package/lib/esm/appui-react/tools/MarkupToolDefinitions.d.ts +2 -2
  825. package/lib/esm/appui-react/tools/MarkupToolDefinitions.js +2 -2
  826. package/lib/esm/appui-react/tools/MarkupToolDefinitions.js.map +1 -1
  827. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts +8 -10
  828. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  829. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js +18 -37
  830. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  831. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts +7 -9
  832. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  833. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +13 -21
  834. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  835. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +7 -9
  836. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  837. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +40 -51
  838. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  839. package/lib/esm/appui-react/uiprovider/DefaultDialogGridContainer.scss +4 -4
  840. package/lib/{cjs/appui-react/uisettings → esm/appui-react/uistate}/AppUiSettings.d.ts +11 -9
  841. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -0
  842. package/lib/esm/appui-react/{uisettings → uistate}/AppUiSettings.js +13 -9
  843. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -0
  844. package/lib/esm/appui-react/uistate/UserSettingsStorage.d.ts +15 -0
  845. package/lib/esm/appui-react/uistate/UserSettingsStorage.d.ts.map +1 -0
  846. package/lib/esm/appui-react/uistate/UserSettingsStorage.js +55 -0
  847. package/lib/esm/appui-react/uistate/UserSettingsStorage.js.map +1 -0
  848. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts +20 -0
  849. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -0
  850. package/lib/esm/appui-react/uistate/useUiStateStorage.js +33 -0
  851. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -0
  852. package/lib/esm/appui-react/utils/UiShowHideManager.d.ts +5 -5
  853. package/lib/esm/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
  854. package/lib/esm/appui-react/utils/UiShowHideManager.js +9 -9
  855. package/lib/esm/appui-react/utils/UiShowHideManager.js.map +1 -1
  856. package/lib/esm/appui-react/widget-panels/Content.d.ts.map +1 -1
  857. package/lib/esm/appui-react/widget-panels/Content.js +1 -4
  858. package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
  859. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +98 -8
  860. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  861. package/lib/esm/appui-react/widget-panels/Frontstage.js +92 -96
  862. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  863. package/lib/esm/appui-react/widgets/BackstageAppButton.d.ts +22 -0
  864. package/lib/esm/appui-react/widgets/BackstageAppButton.d.ts.map +1 -0
  865. package/lib/esm/appui-react/widgets/BackstageAppButton.js +52 -0
  866. package/lib/esm/appui-react/widgets/BackstageAppButton.js.map +1 -0
  867. package/lib/esm/appui-react/widgets/BasicNavigationWidget.d.ts.map +1 -1
  868. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js +1 -0
  869. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  870. package/lib/esm/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  871. package/lib/esm/appui-react/widgets/BasicToolWidget.js +3 -1
  872. package/lib/esm/appui-react/widgets/BasicToolWidget.js.map +1 -1
  873. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.d.ts +9 -0
  874. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.d.ts.map +1 -1
  875. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.js +10 -0
  876. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  877. package/lib/esm/appui-react/widgets/NavigationWidget.d.ts.map +1 -1
  878. package/lib/esm/appui-react/widgets/NavigationWidget.js +2 -1
  879. package/lib/esm/appui-react/widgets/NavigationWidget.js.map +1 -1
  880. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +1 -0
  881. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  882. package/lib/esm/appui-react/widgets/StableWidgetDef.d.ts +1 -1
  883. package/lib/esm/appui-react/widgets/StableWidgetDef.js +1 -1
  884. package/lib/esm/appui-react/widgets/StableWidgetDef.js.map +1 -1
  885. package/lib/esm/appui-react/widgets/ToolSettingsContent.js +2 -1
  886. package/lib/esm/appui-react/widgets/ToolSettingsContent.js.map +1 -1
  887. package/lib/esm/appui-react/widgets/ToolWidget.js +3 -2
  888. package/lib/esm/appui-react/widgets/ToolWidget.js.map +1 -1
  889. package/lib/esm/appui-react/widgets/ToolWidgetComposer.d.ts +0 -12
  890. package/lib/esm/appui-react/widgets/ToolWidgetComposer.d.ts.map +1 -1
  891. package/lib/esm/appui-react/widgets/ToolWidgetComposer.js +2 -36
  892. package/lib/esm/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  893. package/lib/esm/appui-react/widgets/ToolbarWidgetBase.d.ts +1 -0
  894. package/lib/esm/appui-react/widgets/ToolbarWidgetBase.d.ts.map +1 -1
  895. package/lib/esm/appui-react/widgets/ToolbarWidgetBase.js +5 -2
  896. package/lib/esm/appui-react/widgets/ToolbarWidgetBase.js.map +1 -1
  897. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.d.ts +0 -1
  898. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.d.ts.map +1 -1
  899. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.js +1 -1
  900. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  901. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +2 -3
  902. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  903. package/lib/esm/appui-react/widgets/WidgetDef.js +18 -7
  904. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  905. package/lib/esm/appui-react/widgets/WidgetHost.d.ts.map +1 -1
  906. package/lib/esm/appui-react/widgets/WidgetHost.js +1 -0
  907. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  908. package/lib/esm/appui-react/widgets/WidgetStack.d.ts.map +1 -1
  909. package/lib/esm/appui-react/widgets/WidgetStack.js +2 -0
  910. package/lib/esm/appui-react/widgets/WidgetStack.js.map +1 -1
  911. package/lib/esm/appui-react/zones/FrameworkZone.js.map +1 -1
  912. package/lib/esm/appui-react/zones/StatusBarZone.js.map +1 -1
  913. package/lib/esm/appui-react/zones/Zone.d.ts +1 -1
  914. package/lib/esm/appui-react/zones/Zone.d.ts.map +1 -1
  915. package/lib/esm/appui-react/zones/Zone.js +2 -1
  916. package/lib/esm/appui-react/zones/Zone.js.map +1 -1
  917. package/lib/esm/appui-react/zones/ZoneDef.d.ts +4 -4
  918. package/lib/esm/appui-react/zones/ZoneDef.d.ts.map +1 -1
  919. package/lib/esm/appui-react/zones/ZoneDef.js +5 -4
  920. package/lib/esm/appui-react/zones/ZoneDef.js.map +1 -1
  921. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.d.ts +1 -2
  922. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.d.ts.map +1 -1
  923. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.js +2 -1
  924. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.js.map +1 -1
  925. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsZone.js.map +1 -1
  926. package/lib/esm/appui-react.d.ts +18 -18
  927. package/lib/esm/appui-react.d.ts.map +1 -1
  928. package/lib/esm/appui-react.js +18 -18
  929. package/lib/esm/appui-react.js.map +1 -1
  930. package/lib/public/locales/en/UiFramework.json +9 -2
  931. package/package.json +46 -53
  932. package/lib/cjs/appui-react/UserInfo.d.ts +0 -58
  933. package/lib/cjs/appui-react/UserInfo.d.ts.map +0 -1
  934. package/lib/cjs/appui-react/UserInfo.js +0 -34
  935. package/lib/cjs/appui-react/UserInfo.js.map +0 -1
  936. package/lib/cjs/appui-react/content/SavedView.d.ts.map +0 -1
  937. package/lib/cjs/appui-react/content/SavedView.js.map +0 -1
  938. package/lib/cjs/appui-react/content/SavedViewLayout.d.ts.map +0 -1
  939. package/lib/cjs/appui-react/content/SavedViewLayout.js.map +0 -1
  940. package/lib/cjs/appui-react/stagepanels/StagePanelEnums.d.ts +0 -25
  941. package/lib/cjs/appui-react/stagepanels/StagePanelEnums.d.ts.map +0 -1
  942. package/lib/cjs/appui-react/stagepanels/StagePanelEnums.js +0 -34
  943. package/lib/cjs/appui-react/stagepanels/StagePanelEnums.js.map +0 -1
  944. package/lib/cjs/appui-react/uisettings/AppUiSettings.d.ts.map +0 -1
  945. package/lib/cjs/appui-react/uisettings/AppUiSettings.js.map +0 -1
  946. package/lib/cjs/appui-react/uisettings/UserSettingsStorage.d.ts +0 -23
  947. package/lib/cjs/appui-react/uisettings/UserSettingsStorage.d.ts.map +0 -1
  948. package/lib/cjs/appui-react/uisettings/UserSettingsStorage.js +0 -74
  949. package/lib/cjs/appui-react/uisettings/UserSettingsStorage.js.map +0 -1
  950. package/lib/cjs/appui-react/uisettings/useUiSettings.d.ts +0 -21
  951. package/lib/cjs/appui-react/uisettings/useUiSettings.d.ts.map +0 -1
  952. package/lib/cjs/appui-react/uisettings/useUiSettings.js +0 -28
  953. package/lib/cjs/appui-react/uisettings/useUiSettings.js.map +0 -1
  954. package/lib/esm/appui-react/UserInfo.d.ts +0 -58
  955. package/lib/esm/appui-react/UserInfo.d.ts.map +0 -1
  956. package/lib/esm/appui-react/UserInfo.js +0 -30
  957. package/lib/esm/appui-react/UserInfo.js.map +0 -1
  958. package/lib/esm/appui-react/content/SavedView.d.ts.map +0 -1
  959. package/lib/esm/appui-react/content/SavedView.js.map +0 -1
  960. package/lib/esm/appui-react/content/SavedViewLayout.d.ts.map +0 -1
  961. package/lib/esm/appui-react/content/SavedViewLayout.js.map +0 -1
  962. package/lib/esm/appui-react/stagepanels/StagePanelEnums.d.ts +0 -25
  963. package/lib/esm/appui-react/stagepanels/StagePanelEnums.d.ts.map +0 -1
  964. package/lib/esm/appui-react/stagepanels/StagePanelEnums.js +0 -31
  965. package/lib/esm/appui-react/stagepanels/StagePanelEnums.js.map +0 -1
  966. package/lib/esm/appui-react/uisettings/AppUiSettings.d.ts.map +0 -1
  967. package/lib/esm/appui-react/uisettings/AppUiSettings.js.map +0 -1
  968. package/lib/esm/appui-react/uisettings/UserSettingsStorage.d.ts +0 -23
  969. package/lib/esm/appui-react/uisettings/UserSettingsStorage.d.ts.map +0 -1
  970. package/lib/esm/appui-react/uisettings/UserSettingsStorage.js +0 -68
  971. package/lib/esm/appui-react/uisettings/UserSettingsStorage.js.map +0 -1
  972. package/lib/esm/appui-react/uisettings/useUiSettings.d.ts +0 -21
  973. package/lib/esm/appui-react/uisettings/useUiSettings.d.ts.map +0 -1
  974. package/lib/esm/appui-react/uisettings/useUiSettings.js +0 -23
  975. package/lib/esm/appui-react/uisettings/useUiSettings.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityTreeEventHandler.js","sourceRoot":"","sources":["../../../../src/appui-react/imodel-components/VisibilityTreeEventHandler.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAG5D,OAAO,EAAE,gCAAgC,EAA0C,MAAM,gCAAgC,CAAC;AAC1H,OAAO,EAC8B,gBAAgB,GAEpD,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA2CjE;;;GAGG;AACH,MAAM,OAAO,0BAA2B,SAAQ,gCAAgC;IAK9E,YAAY,MAAwC;QAClD,KAAK,CAAC,MAAM,CAAC,CAAC;QAHR,eAAU,GAAG,IAAI,KAAK,EAAc,CAAC;QAI3C,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAErD,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;SACrK;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACxK,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,8DAA8D;IACzF,CAAC;IAEe,OAAO;QACrB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,CAAC;IAEO,oBAAoB,CAAC,KAAqB;QAChD,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAC3B,OAAO,KAAK,CAAC;QAEf,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACxF,CAAC;IAEe,mBAAmB,CAAC,EAAE,aAAa,EAAsC;QACvF,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC,IAAI,CAC/D,GAAG,CAAC,CAAC,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,EAAE,EAAE;YACjD,OAAO;gBACL,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;gBAC/D,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC;aACpE,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QACF,OAAO,KAAK,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC5E,CAAC;IAEe,mBAAmB,CAAC,EAAE,YAAY,EAAqC;QACrF,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE;YAC5B,OAAO;gBACL,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;aAChE,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QACF,OAAO,KAAK,CAAC,mBAAmB,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEe,sBAAsB,CAAC,KAAuC;QAC5E,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAC1B,OAAO,SAAS,CAAC;QAEnB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;aACrB,IAAI,CACH,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CACtD;aACA,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,gBAAgB,CAAC,OAA8B;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC;aACjB,IAAI,CACH,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;YAClC,qBAAqB;YACrB,IAAI,CAAC,IAAI,CAAC,kBAAkB;gBAC1B,OAAO,KAAK,CAAC;YACf,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,KAAK,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5H,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,aAAwB,EAAE,gBAAgD;QACvG,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEO,WAAW,CAAC,OAAkC;QACpD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,KAAK,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,OAAO,EAAE;gBAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnC,qBAAqB;gBACrB,IAAI,CAAC,IAAI;oBACP,SAAS;gBAEX,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;gBACnD,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;aAC9C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,iCAAiC,CAAC,aAAuB,EAAE,gBAAgD;QACvH,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;QACnD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAC5B,OAAO,UAAU,CAAC;QAEpB,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACzD,qBAAqB;YACrB,IAAI,CAAC,IAAI;gBACP,SAAS;YAEX,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;SAChF;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,4BAA4B,CAAC,gBAAgD;QACzF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;QACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,qBAAqB,EAAE,EAAE;YACtE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;SACjF;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,IAAmB,EAAE,gBAAgD;;QACrG,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAC1B,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAEhD,MAAM,MAAM,GAAG,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,mCAAI,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpI,IAAI,aAAa,CAAC,MAAM,CAAC;YACvB,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,MAAM,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAEO,kBAAkB,CAAC,MAAwB;QACjD,OAAO;YACL,KAAK,EAAE,8BAA8B,CAAC,MAAM,CAAC;YAC7C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;YACtC,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,8BAA8B,GAAG,CAAC,MAAwB,EAAE,EAAE;IAClE,QAAQ,MAAM,CAAC,KAAK,EAAE;QACpB,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,EAAE,CAAC;QAC1B,uBAAuB;QACvB,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,OAAO,CAAC;QAC/B,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,aAAa,CAAC,GAAG,CAAC;KAC5B;AACH,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelComponents\r\n */\r\n\r\nimport { EMPTY } from \"rxjs/internal/observable/empty\";\r\nimport { from } from \"rxjs/internal/observable/from\";\r\nimport { map } from \"rxjs/internal/operators/map\";\r\nimport { mergeMap } from \"rxjs/internal/operators/mergeMap\";\r\nimport { BeEvent, IDisposable } from \"@itwin/core-bentley\";\r\nimport { NodeKey } from \"@itwin/presentation-common\";\r\nimport { UnifiedSelectionTreeEventHandler, UnifiedSelectionTreeEventHandlerParams } from \"@itwin/presentation-components\";\r\nimport {\r\n CheckBoxInfo, CheckboxStateChange, toRxjsObservable, TreeCheckboxStateChangeEventArgs, TreeModelNode, TreeNodeItem,\r\n TreeSelectionModificationEventArgs, TreeSelectionReplacementEventArgs,\r\n} from \"@itwin/components-react\";\r\nimport { CheckBoxState, isPromiseLike } from \"@itwin/core-react\";\r\n\r\n/**\r\n * Data structure that describes instance visibility status.\r\n * @alpha\r\n */\r\nexport interface VisibilityStatus {\r\n state: \"visible\" | \"partial\" | \"hidden\";\r\n isDisabled?: boolean;\r\n tooltip?: string;\r\n}\r\n\r\n/**\r\n * Type definition of visibility change event listener.\r\n * @alpha\r\n */\r\nexport type VisibilityChangeListener = (nodeIds?: string[], visibilityStatus?: Map<string, VisibilityStatus>) => void;\r\n\r\n/**\r\n * Visibility handler used to change or get visibility of instances represented by the tree node.\r\n * @alpha\r\n */\r\nexport interface IVisibilityHandler extends IDisposable {\r\n getVisibilityStatus(node: TreeNodeItem, nodeKey: NodeKey): VisibilityStatus | Promise<VisibilityStatus>;\r\n changeVisibility(node: TreeNodeItem, nodeKey: NodeKey, shouldDisplay: boolean): Promise<void>;\r\n onVisibilityChange: BeEvent<VisibilityChangeListener>;\r\n}\r\n\r\n/**\r\n * Type definition of predicate used to decide if node can be selected.\r\n * @alpha\r\n */\r\nexport type VisibilityTreeSelectionPredicate = (key: NodeKey, node: TreeNodeItem) => boolean;\r\n\r\n/**\r\n * Parameters for [[VisibilityTreeEventHandler]]\r\n * @alpha\r\n */\r\nexport interface VisibilityTreeEventHandlerParams extends UnifiedSelectionTreeEventHandlerParams {\r\n visibilityHandler: IVisibilityHandler | undefined;\r\n selectionPredicate?: VisibilityTreeSelectionPredicate;\r\n}\r\n\r\n/**\r\n * Base event handler for visibility tree.\r\n * @alpha\r\n */\r\nexport class VisibilityTreeEventHandler extends UnifiedSelectionTreeEventHandler {\r\n private _visibilityHandler: IVisibilityHandler | undefined;\r\n private _selectionPredicate?: VisibilityTreeSelectionPredicate;\r\n private _listeners = new Array<() => void>();\r\n\r\n constructor(params: VisibilityTreeEventHandlerParams) {\r\n super(params);\r\n this._visibilityHandler = params.visibilityHandler;\r\n this._selectionPredicate = params.selectionPredicate;\r\n\r\n if (this._visibilityHandler) {\r\n this._listeners.push(this._visibilityHandler.onVisibilityChange.addListener(async (nodeIds, visibilityStatus) => this.updateCheckboxes(nodeIds, visibilityStatus)));\r\n }\r\n\r\n this._listeners.push(this.modelSource.onModelChanged.addListener(async ([_, changes]) => this.updateCheckboxes([...changes.addedNodeIds, ...changes.modifiedNodeIds])));\r\n this.updateCheckboxes(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n this._listeners.forEach((disposeFunc) => disposeFunc());\r\n }\r\n\r\n private filterSelectionItems(items: TreeNodeItem[]) {\r\n // istanbul ignore if\r\n if (!this._selectionPredicate)\r\n return items;\r\n\r\n return items.filter((item) => this._selectionPredicate!(this.getNodeKey(item), item));\r\n }\r\n\r\n public override onSelectionModified({ modifications }: TreeSelectionModificationEventArgs) {\r\n const filteredModification = toRxjsObservable(modifications).pipe(\r\n map(({ selectedNodeItems, deselectedNodeItems }) => {\r\n return {\r\n selectedNodeItems: this.filterSelectionItems(selectedNodeItems),\r\n deselectedNodeItems: this.filterSelectionItems(deselectedNodeItems),\r\n };\r\n }),\r\n );\r\n return super.onSelectionModified({ modifications: filteredModification });\r\n }\r\n\r\n public override onSelectionReplaced({ replacements }: TreeSelectionReplacementEventArgs) {\r\n const filteredReplacements = toRxjsObservable(replacements).pipe(\r\n map(({ selectedNodeItems }) => {\r\n return {\r\n selectedNodeItems: this.filterSelectionItems(selectedNodeItems),\r\n };\r\n }),\r\n );\r\n return super.onSelectionReplaced({ replacements: filteredReplacements });\r\n }\r\n\r\n public override onCheckboxStateChanged(event: TreeCheckboxStateChangeEventArgs) {\r\n // istanbul ignore if\r\n if (!this._visibilityHandler)\r\n return undefined;\r\n\r\n from(event.stateChanges)\r\n .pipe(\r\n mergeMap((changes) => this.changeVisibility(changes)),\r\n )\r\n .subscribe();\r\n return undefined;\r\n }\r\n\r\n private changeVisibility(changes: CheckboxStateChange[]) {\r\n return from(changes)\r\n .pipe(\r\n mergeMap(({ nodeItem, newState }) => {\r\n // istanbul ignore if\r\n if (!this._visibilityHandler)\r\n return EMPTY;\r\n return from(this._visibilityHandler.changeVisibility(nodeItem, this.getNodeKey(nodeItem), newState === CheckBoxState.On));\r\n }),\r\n );\r\n }\r\n\r\n private async updateCheckboxes(affectedNodes?: string[], visibilityStatus?: Map<string, VisibilityStatus>) {\r\n const changes = await (affectedNodes ? this.collectAffectedNodesCheckboxInfos(affectedNodes, visibilityStatus) : this.collectAllNodesCheckboxInfos(visibilityStatus));\r\n this.updateModel(changes);\r\n }\r\n\r\n private updateModel(changes: Map<string, CheckBoxInfo>) {\r\n this.modelSource.modifyModel((model) => {\r\n for (const [nodeId, checkboxInfo] of changes) {\r\n const node = model.getNode(nodeId);\r\n // istanbul ignore if\r\n if (!node)\r\n continue;\r\n\r\n node.checkbox.isDisabled = checkboxInfo.isDisabled;\r\n node.checkbox.isVisible = checkboxInfo.isVisible;\r\n node.checkbox.state = checkboxInfo.state;\r\n node.checkbox.tooltip = checkboxInfo.tooltip;\r\n }\r\n });\r\n }\r\n\r\n private async collectAffectedNodesCheckboxInfos(affectedNodes: string[], visibilityStatus?: Map<string, VisibilityStatus>) {\r\n const nodeStates = new Map<string, CheckBoxInfo>();\r\n if (affectedNodes.length === 0)\r\n return nodeStates;\r\n\r\n for (const nodeId of affectedNodes) {\r\n const node = this.modelSource.getModel().getNode(nodeId);\r\n // istanbul ignore if\r\n if (!node)\r\n continue;\r\n\r\n nodeStates.set(nodeId, await this.getNodeCheckBoxInfo(node, visibilityStatus));\r\n }\r\n return nodeStates;\r\n }\r\n\r\n private async collectAllNodesCheckboxInfos(visibilityStatus?: Map<string, VisibilityStatus>) {\r\n const nodeStates = new Map<string, CheckBoxInfo>();\r\n for (const node of this.modelSource.getModel().iterateTreeModelNodes()) {\r\n nodeStates.set(node.id, await this.getNodeCheckBoxInfo(node, visibilityStatus));\r\n }\r\n return nodeStates;\r\n }\r\n\r\n private async getNodeCheckBoxInfo(node: TreeModelNode, visibilityStatus?: Map<string, VisibilityStatus>): Promise<CheckBoxInfo> {\r\n if (!this._visibilityHandler)\r\n return { ...node.checkbox, isVisible: false };\r\n\r\n const result = visibilityStatus?.get(node.id) ?? this._visibilityHandler.getVisibilityStatus(node.item, this.getNodeKey(node.item));\r\n\r\n if (isPromiseLike(result))\r\n return this.createCheckboxInfo(await result);\r\n return this.createCheckboxInfo(result);\r\n }\r\n\r\n private createCheckboxInfo(status: VisibilityStatus): CheckBoxInfo {\r\n return {\r\n state: visibilityStateToCheckboxState(status),\r\n isDisabled: status.isDisabled || false,\r\n isVisible: true,\r\n tooltip: status.tooltip,\r\n };\r\n }\r\n}\r\n\r\nconst visibilityStateToCheckboxState = (status: VisibilityStatus) => {\r\n switch (status.state) {\r\n case \"visible\":\r\n return CheckBoxState.On;\r\n // istanbul ignore next\r\n case \"partial\":\r\n return CheckBoxState.Partial;\r\n case \"hidden\":\r\n default:\r\n return CheckBoxState.Off;\r\n }\r\n};\r\n"]}
1
+ {"version":3,"file":"VisibilityTreeEventHandler.js","sourceRoot":"","sources":["../../../../src/appui-react/imodel-components/VisibilityTreeEventHandler.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAC8B,gBAAgB,GAEpD,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,gCAAgC,EAA0C,MAAM,gCAAgC,CAAC;AA2C1H;;;GAGG;AACH,MAAM,OAAO,0BAA2B,SAAQ,gCAAgC;IAK9E,YAAY,MAAwC;QAClD,KAAK,CAAC,MAAM,CAAC,CAAC;QAHR,eAAU,GAAG,IAAI,KAAK,EAAc,CAAC;QAI3C,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAErD,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;SACrK;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACxK,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,8DAA8D;IACzF,CAAC;IAEe,OAAO;QACrB,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,CAAC;IAEO,oBAAoB,CAAC,KAAqB;QAChD,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAC3B,OAAO,KAAK,CAAC;QAEf,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACxF,CAAC;IAEe,mBAAmB,CAAC,EAAE,aAAa,EAAsC;QACvF,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC,IAAI,CAC/D,GAAG,CAAC,CAAC,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,EAAE,EAAE;YACjD,OAAO;gBACL,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;gBAC/D,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC;aACpE,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QACF,OAAO,KAAK,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC5E,CAAC;IAEe,mBAAmB,CAAC,EAAE,YAAY,EAAqC;QACrF,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE;YAC5B,OAAO;gBACL,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;aAChE,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QACF,OAAO,KAAK,CAAC,mBAAmB,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEe,sBAAsB,CAAC,KAAuC;QAC5E,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAC1B,OAAO,SAAS,CAAC;QAEnB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;aACrB,IAAI,CACH,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CACtD;aACA,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,gBAAgB,CAAC,OAA8B;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC;aACjB,IAAI,CACH,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;YAClC,qBAAqB;YACrB,IAAI,CAAC,IAAI,CAAC,kBAAkB;gBAC1B,OAAO,KAAK,CAAC;YACf,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,KAAK,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5H,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,aAAwB,EAAE,gBAAgD;QACvG,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEO,WAAW,CAAC,OAAkC;QACpD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,KAAK,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,OAAO,EAAE;gBAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnC,qBAAqB;gBACrB,IAAI,CAAC,IAAI;oBACP,SAAS;gBAEX,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;gBACnD,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;aAC9C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,iCAAiC,CAAC,aAAuB,EAAE,gBAAgD;QACvH,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;QACnD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAC5B,OAAO,UAAU,CAAC;QAEpB,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACzD,uBAAuB;YACvB,IAAI,IAAI;gBACN,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC,CAAC;QACJ,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,4BAA4B,CAAC,gBAAgD;QACzF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;QACnD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,qBAAqB,EAAE,EAAE;YACtE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;SACjF;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,IAAmB,EAAE,gBAAgD;;QACrG,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAC1B,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAEhD,MAAM,MAAM,GAAG,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,mCAAI,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpI,IAAI,aAAa,CAAC,MAAM,CAAC;YACvB,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,MAAM,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAEO,kBAAkB,CAAC,MAAwB;QACjD,OAAO;YACL,KAAK,EAAE,8BAA8B,CAAC,MAAM,CAAC;YAC7C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;YACtC,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,8BAA8B,GAAG,CAAC,MAAwB,EAAE,EAAE;IAClE,QAAQ,MAAM,CAAC,KAAK,EAAE;QACpB,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,EAAE,CAAC;QAC1B,uBAAuB;QACvB,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,OAAO,CAAC;QAC/B,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,aAAa,CAAC,GAAG,CAAC;KAC5B;AACH,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelComponents\r\n */\r\n\r\nimport { EMPTY } from \"rxjs/internal/observable/empty\";\r\nimport { from } from \"rxjs/internal/observable/from\";\r\nimport { map } from \"rxjs/internal/operators/map\";\r\nimport { mergeMap } from \"rxjs/internal/operators/mergeMap\";\r\nimport {\r\n CheckBoxInfo, CheckboxStateChange, toRxjsObservable, TreeCheckboxStateChangeEventArgs, TreeModelNode, TreeNodeItem,\r\n TreeSelectionModificationEventArgs, TreeSelectionReplacementEventArgs,\r\n} from \"@itwin/components-react\";\r\nimport { BeEvent, IDisposable } from \"@itwin/core-bentley\";\r\nimport { CheckBoxState, isPromiseLike } from \"@itwin/core-react\";\r\nimport { NodeKey } from \"@itwin/presentation-common\";\r\nimport { UnifiedSelectionTreeEventHandler, UnifiedSelectionTreeEventHandlerParams } from \"@itwin/presentation-components\";\r\n\r\n/**\r\n * Data structure that describes instance visibility status.\r\n * @alpha\r\n */\r\nexport interface VisibilityStatus {\r\n state: \"visible\" | \"partial\" | \"hidden\";\r\n isDisabled?: boolean;\r\n tooltip?: string;\r\n}\r\n\r\n/**\r\n * Type definition of visibility change event listener.\r\n * @alpha\r\n */\r\nexport type VisibilityChangeListener = (nodeIds?: string[], visibilityStatus?: Map<string, VisibilityStatus>) => void;\r\n\r\n/**\r\n * Visibility handler used to change or get visibility of instances represented by the tree node.\r\n * @alpha\r\n */\r\nexport interface IVisibilityHandler extends IDisposable {\r\n getVisibilityStatus(node: TreeNodeItem, nodeKey: NodeKey): VisibilityStatus | Promise<VisibilityStatus>;\r\n changeVisibility(node: TreeNodeItem, nodeKey: NodeKey, shouldDisplay: boolean): Promise<void>;\r\n onVisibilityChange: BeEvent<VisibilityChangeListener>;\r\n}\r\n\r\n/**\r\n * Type definition of predicate used to decide if node can be selected.\r\n * @alpha\r\n */\r\nexport type VisibilityTreeSelectionPredicate = (key: NodeKey, node: TreeNodeItem) => boolean;\r\n\r\n/**\r\n * Parameters for [[VisibilityTreeEventHandler]]\r\n * @alpha\r\n */\r\nexport interface VisibilityTreeEventHandlerParams extends UnifiedSelectionTreeEventHandlerParams {\r\n visibilityHandler: IVisibilityHandler | undefined;\r\n selectionPredicate?: VisibilityTreeSelectionPredicate;\r\n}\r\n\r\n/**\r\n * Base event handler for visibility tree.\r\n * @alpha\r\n */\r\nexport class VisibilityTreeEventHandler extends UnifiedSelectionTreeEventHandler {\r\n private _visibilityHandler: IVisibilityHandler | undefined;\r\n private _selectionPredicate?: VisibilityTreeSelectionPredicate;\r\n private _listeners = new Array<() => void>();\r\n\r\n constructor(params: VisibilityTreeEventHandlerParams) {\r\n super(params);\r\n this._visibilityHandler = params.visibilityHandler;\r\n this._selectionPredicate = params.selectionPredicate;\r\n\r\n if (this._visibilityHandler) {\r\n this._listeners.push(this._visibilityHandler.onVisibilityChange.addListener(async (nodeIds, visibilityStatus) => this.updateCheckboxes(nodeIds, visibilityStatus)));\r\n }\r\n\r\n this._listeners.push(this.modelSource.onModelChanged.addListener(async ([_, changes]) => this.updateCheckboxes([...changes.addedNodeIds, ...changes.modifiedNodeIds])));\r\n this.updateCheckboxes(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n this._listeners.forEach((disposeFunc) => disposeFunc());\r\n }\r\n\r\n private filterSelectionItems(items: TreeNodeItem[]) {\r\n // istanbul ignore if\r\n if (!this._selectionPredicate)\r\n return items;\r\n\r\n return items.filter((item) => this._selectionPredicate!(this.getNodeKey(item), item));\r\n }\r\n\r\n public override onSelectionModified({ modifications }: TreeSelectionModificationEventArgs) {\r\n const filteredModification = toRxjsObservable(modifications).pipe(\r\n map(({ selectedNodeItems, deselectedNodeItems }) => {\r\n return {\r\n selectedNodeItems: this.filterSelectionItems(selectedNodeItems),\r\n deselectedNodeItems: this.filterSelectionItems(deselectedNodeItems),\r\n };\r\n }),\r\n );\r\n return super.onSelectionModified({ modifications: filteredModification });\r\n }\r\n\r\n public override onSelectionReplaced({ replacements }: TreeSelectionReplacementEventArgs) {\r\n const filteredReplacements = toRxjsObservable(replacements).pipe(\r\n map(({ selectedNodeItems }) => {\r\n return {\r\n selectedNodeItems: this.filterSelectionItems(selectedNodeItems),\r\n };\r\n }),\r\n );\r\n return super.onSelectionReplaced({ replacements: filteredReplacements });\r\n }\r\n\r\n public override onCheckboxStateChanged(event: TreeCheckboxStateChangeEventArgs) {\r\n // istanbul ignore if\r\n if (!this._visibilityHandler)\r\n return undefined;\r\n\r\n from(event.stateChanges)\r\n .pipe(\r\n mergeMap((changes) => this.changeVisibility(changes)),\r\n )\r\n .subscribe();\r\n return undefined;\r\n }\r\n\r\n private changeVisibility(changes: CheckboxStateChange[]) {\r\n return from(changes)\r\n .pipe(\r\n mergeMap(({ nodeItem, newState }) => {\r\n // istanbul ignore if\r\n if (!this._visibilityHandler)\r\n return EMPTY;\r\n return from(this._visibilityHandler.changeVisibility(nodeItem, this.getNodeKey(nodeItem), newState === CheckBoxState.On));\r\n }),\r\n );\r\n }\r\n\r\n private async updateCheckboxes(affectedNodes?: string[], visibilityStatus?: Map<string, VisibilityStatus>) {\r\n const changes = await (affectedNodes ? this.collectAffectedNodesCheckboxInfos(affectedNodes, visibilityStatus) : this.collectAllNodesCheckboxInfos(visibilityStatus));\r\n this.updateModel(changes);\r\n }\r\n\r\n private updateModel(changes: Map<string, CheckBoxInfo>) {\r\n this.modelSource.modifyModel((model) => {\r\n for (const [nodeId, checkboxInfo] of changes) {\r\n const node = model.getNode(nodeId);\r\n // istanbul ignore if\r\n if (!node)\r\n continue;\r\n\r\n node.checkbox.isDisabled = checkboxInfo.isDisabled;\r\n node.checkbox.isVisible = checkboxInfo.isVisible;\r\n node.checkbox.state = checkboxInfo.state;\r\n node.checkbox.tooltip = checkboxInfo.tooltip;\r\n }\r\n });\r\n }\r\n\r\n private async collectAffectedNodesCheckboxInfos(affectedNodes: string[], visibilityStatus?: Map<string, VisibilityStatus>) {\r\n const nodeStates = new Map<string, CheckBoxInfo>();\r\n if (affectedNodes.length === 0)\r\n return nodeStates;\r\n\r\n await Promise.all(affectedNodes.map(async (nodeId) => {\r\n const node = this.modelSource.getModel().getNode(nodeId);\r\n // istanbul ignore else\r\n if (node)\r\n nodeStates.set(nodeId, await this.getNodeCheckBoxInfo(node, visibilityStatus));\r\n }));\r\n return nodeStates;\r\n }\r\n\r\n private async collectAllNodesCheckboxInfos(visibilityStatus?: Map<string, VisibilityStatus>) {\r\n const nodeStates = new Map<string, CheckBoxInfo>();\r\n for (const node of this.modelSource.getModel().iterateTreeModelNodes()) {\r\n nodeStates.set(node.id, await this.getNodeCheckBoxInfo(node, visibilityStatus));\r\n }\r\n return nodeStates;\r\n }\r\n\r\n private async getNodeCheckBoxInfo(node: TreeModelNode, visibilityStatus?: Map<string, VisibilityStatus>): Promise<CheckBoxInfo> {\r\n if (!this._visibilityHandler)\r\n return { ...node.checkbox, isVisible: false };\r\n\r\n const result = visibilityStatus?.get(node.id) ?? this._visibilityHandler.getVisibilityStatus(node.item, this.getNodeKey(node.item));\r\n\r\n if (isPromiseLike(result))\r\n return this.createCheckboxInfo(await result);\r\n return this.createCheckboxInfo(result);\r\n }\r\n\r\n private createCheckboxInfo(status: VisibilityStatus): CheckBoxInfo {\r\n return {\r\n state: visibilityStateToCheckboxState(status),\r\n isDisabled: status.isDisabled || false,\r\n isVisible: true,\r\n tooltip: status.tooltip,\r\n };\r\n }\r\n}\r\n\r\nconst visibilityStateToCheckboxState = (status: VisibilityStatus) => {\r\n switch (status.state) {\r\n case \"visible\":\r\n return CheckBoxState.On;\r\n // istanbul ignore next\r\n case \"partial\":\r\n return CheckBoxState.Partial;\r\n case \"hidden\":\r\n default:\r\n return CheckBoxState.Off;\r\n }\r\n};\r\n"]}
@@ -15,13 +15,13 @@ export declare function useCategories(viewManager: ViewManager, imodel: IModelCo
15
15
  export declare function loadCategoriesFromViewport(iModel?: IModelConnection, vp?: Viewport): Promise<Category[]>;
16
16
  /**
17
17
  * Data structure that describes category.
18
- * @internal
18
+ * @alpha
19
19
  */
20
20
  export interface Category {
21
21
  key: string;
22
22
  children?: string[];
23
23
  }
24
- /** @internal */
24
+ /** @alpha */
25
25
  export interface CategoryVisibilityHandlerParams {
26
26
  viewManager: ViewManager;
27
27
  imodel: IModelConnection;
@@ -29,7 +29,7 @@ export interface CategoryVisibilityHandlerParams {
29
29
  activeView?: Viewport;
30
30
  allViewports?: boolean;
31
31
  }
32
- /** @internal */
32
+ /** @alpha */
33
33
  export declare class CategoryVisibilityHandler implements IVisibilityHandler {
34
34
  private _viewManager;
35
35
  private _imodel;
@@ -1 +1 @@
1
- {"version":3,"file":"CategoryVisibilityHandler.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAA8B,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3G,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAiB,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAI/G;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,QAAQ,cAIhG;AAED,gBAAgB;AAChB,wBAAsB,0BAA0B,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,QAAQ,uBAuBxF;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,gBAAgB;AAChB,MAAM,WAAW,+BAA+B;IAC9C,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,gBAAgB;AAChB,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,wBAAwB,CAAkB;IAClD,OAAO,CAAC,WAAW,CAAC,CAAW;IAC/B,OAAO,CAAC,gBAAgB,CAAU;IAClC,OAAO,CAAC,WAAW,CAAa;gBAEpB,MAAM,EAAE,+BAA+B;IAa5C,OAAO;IAQP,kBAAkB,oCAA2C;IAE7D,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB;IAKrE,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnG,wBAAwB,CAAC,EAAE,EAAE,MAAM;IASnC,qBAAqB,CAAC,EAAE,EAAE,MAAM;IAMhC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAanD,OAAO,CAAC,qBAAqB,CAE3B;IAGF,OAAO,CAAC,yBAAyB,CAE/B;IAEF,OAAO,CAAC,0BAA0B;WAUpB,4BAA4B,CAAC,OAAO,EAAE,OAAO;IAI3D,+CAA+C;WACjC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,sBAAsB,UAAO;IA0CzK,kDAAkD;WACpC,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,OAAO;CAqBnH"}
1
+ {"version":3,"file":"CategoryVisibilityHandler.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAA8B,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3G,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAiB,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAI/G;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,QAAQ,cAIhG;AAED,gBAAgB;AAChB,wBAAsB,0BAA0B,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,QAAQ,uBAuBxF;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,aAAa;AACb,MAAM,WAAW,+BAA+B;IAC9C,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,aAAa;AACb,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,wBAAwB,CAAkB;IAClD,OAAO,CAAC,WAAW,CAAC,CAAW;IAC/B,OAAO,CAAC,gBAAgB,CAAU;IAClC,OAAO,CAAC,WAAW,CAAa;gBAEpB,MAAM,EAAE,+BAA+B;IAa5C,OAAO;IAQP,kBAAkB,oCAA2C;IAE7D,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB;IAKrE,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnG,wBAAwB,CAAC,EAAE,EAAE,MAAM;IASnC,qBAAqB,CAAC,EAAE,EAAE,MAAM;IAMhC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAanD,OAAO,CAAC,qBAAqB,CAE3B;IAGF,OAAO,CAAC,yBAAyB,CAE/B;IAEF,OAAO,CAAC,0BAA0B;WAUpB,4BAA4B,CAAC,OAAO,EAAE,OAAO;IAI3D,+CAA+C;WACjC,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,sBAAsB,UAAO;IA0CzK,kDAAkD;WACpC,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,OAAO;CAqBnH"}
@@ -42,7 +42,7 @@ export async function loadCategoriesFromViewport(iModel, vp) {
42
42
  }
43
43
  return categories;
44
44
  }
45
- /** @internal */
45
+ /** @alpha */
46
46
  export class CategoryVisibilityHandler {
47
47
  constructor(params) {
48
48
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"CategoryVisibilityHandler.js","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelComponents\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { IModelConnection, PerModelCategoryVisibility, ViewManager, Viewport } from \"@itwin/core-frontend\";\r\nimport { NodeKey } from \"@itwin/presentation-common\";\r\nimport { TreeNodeItem, useAsyncValue } from \"@itwin/components-react\";\r\nimport { IVisibilityHandler, VisibilityChangeListener, VisibilityStatus } from \"../VisibilityTreeEventHandler\";\r\n\r\nconst EMPTY_CATEGORIES_ARRAY: Category[] = [];\r\n\r\n/**\r\n * Loads categories from viewport or uses provided list of categories.\r\n * @internal\r\n */\r\nexport function useCategories(viewManager: ViewManager, imodel: IModelConnection, view?: Viewport) {\r\n const currentView = view || viewManager.getFirstOpenView();\r\n const categoriesPromise = React.useMemo(async () => loadCategoriesFromViewport(imodel, currentView), [imodel, currentView]);\r\n return useAsyncValue(categoriesPromise) ?? EMPTY_CATEGORIES_ARRAY;\r\n}\r\n\r\n/** @internal */\r\nexport async function loadCategoriesFromViewport(iModel?: IModelConnection, vp?: Viewport) {\r\n if (!vp)\r\n return EMPTY_CATEGORIES_ARRAY;\r\n\r\n // Query categories and add them to state\r\n const selectUsedSpatialCategoryIds = \"SELECT DISTINCT Category.Id as id from BisCore.GeometricElement3d WHERE Category.Id IN (SELECT ECInstanceId from BisCore.SpatialCategory)\";\r\n const selectUsedDrawingCategoryIds = \"SELECT DISTINCT Category.Id as id from BisCore.GeometricElement2d WHERE Model.Id=? AND Category.Id IN (SELECT ECInstanceId from BisCore.DrawingCategory)\";\r\n const ecsql = vp.view.is3d() ? selectUsedSpatialCategoryIds : selectUsedDrawingCategoryIds;\r\n const ecsql2 = `SELECT ECInstanceId as id, UserLabel as label, CodeValue as code FROM ${vp.view.is3d() ? \"BisCore.SpatialCategory\" : \"BisCore.DrawingCategory\"} WHERE ECInstanceId IN (${ecsql})`;\r\n\r\n const categories: Category[] = [];\r\n\r\n // istanbul ignore else\r\n if (iModel) {\r\n const rowIterator = iModel.query(ecsql2);\r\n // istanbul ignore next\r\n for await (const row of rowIterator) {\r\n const subCategoryIds = iModel.subcategories.getSubCategories(row.id);\r\n categories.push({ key: row.id, children: (subCategoryIds) ? [...subCategoryIds] : undefined });\r\n }\r\n }\r\n\r\n return categories;\r\n}\r\n\r\n/**\r\n * Data structure that describes category.\r\n * @internal\r\n */\r\nexport interface Category {\r\n key: string;\r\n children?: string[];\r\n}\r\n\r\n/** @internal */\r\nexport interface CategoryVisibilityHandlerParams {\r\n viewManager: ViewManager;\r\n imodel: IModelConnection;\r\n categories: Category[];\r\n activeView?: Viewport;\r\n allViewports?: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class CategoryVisibilityHandler implements IVisibilityHandler {\r\n private _viewManager: ViewManager;\r\n private _imodel: IModelConnection;\r\n private _pendingVisibilityChange: any | undefined;\r\n private _activeView?: Viewport;\r\n private _useAllViewports: boolean;\r\n private _categories: Category[];\r\n\r\n constructor(params: CategoryVisibilityHandlerParams) {\r\n this._viewManager = params.viewManager;\r\n this._imodel = params.imodel;\r\n this._activeView = params.activeView;\r\n // istanbul ignore next\r\n this._useAllViewports = params.allViewports ?? false;\r\n this._categories = params.categories;\r\n if (this._activeView) {\r\n this._activeView.onDisplayStyleChanged.addListener(this.onDisplayStyleChanged);\r\n this._activeView.onViewedCategoriesChanged.addListener(this.onViewedCategoriesChanged);\r\n }\r\n }\r\n\r\n public dispose() {\r\n if (this._activeView) {\r\n this._activeView.onDisplayStyleChanged.removeListener(this.onDisplayStyleChanged);\r\n this._activeView.onViewedCategoriesChanged.removeListener(this.onViewedCategoriesChanged);\r\n }\r\n clearTimeout(this._pendingVisibilityChange);\r\n }\r\n\r\n public onVisibilityChange = new BeEvent<VisibilityChangeListener>();\r\n\r\n public getVisibilityStatus(node: TreeNodeItem, nodeKey: NodeKey): VisibilityStatus {\r\n const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\r\n return { state: node.parentId ? this.getSubCategoryVisibility(instanceId) : this.getCategoryVisibility(instanceId) };\r\n }\r\n\r\n public async changeVisibility(node: TreeNodeItem, nodeKey: NodeKey, shouldDisplay: boolean): Promise<void> {\r\n // handle subcategory visibility change\r\n if (node.parentId) {\r\n const childId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\r\n // istanbul ignore next\r\n const parentId = this.getParent(childId)?.key;\r\n\r\n // make sure parent category is enabled\r\n if (shouldDisplay && parentId)\r\n CategoryVisibilityHandler.enableCategory(this._viewManager, this._imodel, [parentId], true, this._useAllViewports, false);\r\n\r\n CategoryVisibilityHandler.enableSubCategory(this._viewManager, childId, shouldDisplay, this._useAllViewports);\r\n return;\r\n }\r\n\r\n const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\r\n CategoryVisibilityHandler.enableCategory(this._viewManager, this._imodel, [instanceId], shouldDisplay, true);\r\n }\r\n\r\n public getSubCategoryVisibility(id: string) {\r\n const parentItem = this.getParent(id);\r\n if (!parentItem || !this._activeView)\r\n return \"hidden\";\r\n\r\n const isVisible = this._activeView.view.viewsCategory(parentItem.key) && this._activeView.isSubCategoryVisible(id);\r\n return isVisible ? \"visible\" : \"hidden\";\r\n }\r\n\r\n public getCategoryVisibility(id: string) {\r\n if (!this._activeView)\r\n return \"hidden\";\r\n return this._activeView.view.viewsCategory(id) ? \"visible\" : \"hidden\";\r\n }\r\n\r\n public getParent(key: string): Category | undefined {\r\n for (const category of this._categories) {\r\n // istanbul ignore else\r\n if (category.children) {\r\n if (category.children.indexOf(key) !== -1)\r\n return category;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onDisplayStyleChanged = () => {\r\n this.onVisibilityChangeInternal();\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onViewedCategoriesChanged = () => {\r\n this.onVisibilityChangeInternal();\r\n };\r\n\r\n private onVisibilityChangeInternal() {\r\n if (this._pendingVisibilityChange)\r\n return;\r\n\r\n this._pendingVisibilityChange = setTimeout(() => {\r\n this.onVisibilityChange.raiseEvent();\r\n this._pendingVisibilityChange = undefined;\r\n }, 0);\r\n }\r\n\r\n public static getInstanceIdFromTreeNodeKey(nodeKey: NodeKey) {\r\n return (NodeKey.isInstancesNodeKey(nodeKey) && nodeKey.instanceKeys.length > 0) ? nodeKey.instanceKeys[0].id : /* istanbul ignore next */ \"\";\r\n }\r\n\r\n /** Changes category display in the viewport */\r\n public static enableCategory(viewManager: ViewManager, imodel: IModelConnection, ids: string[], enabled: boolean, forAllViewports: boolean, enableAllSubCategories = true) {\r\n if (!viewManager.selectedView)\r\n return;\r\n\r\n const updateViewport = (vp: Viewport) => {\r\n // Only act on viewports that are both 3D or both 2D. Important if we have multiple viewports opened and we\r\n // are using 'allViewports' property\r\n if (viewManager.selectedView && viewManager.selectedView.view.is3d() === vp.view.is3d()) {\r\n vp.changeCategoryDisplay(ids, enabled, enableAllSubCategories);\r\n\r\n // remove category overrides per model\r\n const modelsContainingOverrides: string[] = [];\r\n for (const ovr of vp.perModelCategoryVisibility) {\r\n // istanbul ignore else\r\n if (ids.findIndex((id) => id === ovr.categoryId) !== -1)\r\n modelsContainingOverrides.push(ovr.modelId);\r\n }\r\n vp.perModelCategoryVisibility.setOverride(modelsContainingOverrides, ids, PerModelCategoryVisibility.Override.None);\r\n\r\n // changeCategoryDisplay only enables subcategories, it does not disabled them. So we must do that ourselves.\r\n if (false === enabled) {\r\n ids.forEach((id) => {\r\n const subCategoryIds = imodel.subcategories.getSubCategories(id);\r\n // istanbul ignore else\r\n if (subCategoryIds) {\r\n subCategoryIds.forEach((subCategoryId) => CategoryVisibilityHandler.enableSubCategory(viewManager, subCategoryId, false, forAllViewports));\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n // This property let us act on all viewports or just on the selected one, configurable by the app\r\n if (forAllViewports) {\r\n for (const viewport of viewManager) {\r\n updateViewport(viewport);\r\n }\r\n } else {\r\n updateViewport(viewManager.selectedView);\r\n }\r\n }\r\n\r\n /** Changes subcategory display in the viewport */\r\n public static enableSubCategory(viewManager: ViewManager, key: string, enabled: boolean, forAllViewports?: boolean) {\r\n if (!viewManager.selectedView)\r\n return;\r\n\r\n const updateViewport = (vp: Viewport) => {\r\n // Only act on viewports that are both 3D or both 2D. Important if we have multiple viewports opened and we\r\n // are using 'allViewports' property\r\n if (viewManager.selectedView && viewManager.selectedView.view.is3d() === vp.view.is3d()) {\r\n vp.changeSubCategoryDisplay(key, enabled);\r\n }\r\n };\r\n\r\n // This property let us act on all viewports or just on the selected one, configurable by the app\r\n if (forAllViewports) {\r\n for (const viewport of viewManager) {\r\n updateViewport(viewport);\r\n }\r\n } else {\r\n updateViewport(viewManager.selectedView);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"CategoryVisibilityHandler.js","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelComponents\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { BeEvent } from \"@itwin/core-bentley\";\r\nimport { IModelConnection, PerModelCategoryVisibility, ViewManager, Viewport } from \"@itwin/core-frontend\";\r\nimport { NodeKey } from \"@itwin/presentation-common\";\r\nimport { TreeNodeItem, useAsyncValue } from \"@itwin/components-react\";\r\nimport { IVisibilityHandler, VisibilityChangeListener, VisibilityStatus } from \"../VisibilityTreeEventHandler\";\r\n\r\nconst EMPTY_CATEGORIES_ARRAY: Category[] = [];\r\n\r\n/**\r\n * Loads categories from viewport or uses provided list of categories.\r\n * @internal\r\n */\r\nexport function useCategories(viewManager: ViewManager, imodel: IModelConnection, view?: Viewport) {\r\n const currentView = view || viewManager.getFirstOpenView();\r\n const categoriesPromise = React.useMemo(async () => loadCategoriesFromViewport(imodel, currentView), [imodel, currentView]);\r\n return useAsyncValue(categoriesPromise) ?? EMPTY_CATEGORIES_ARRAY;\r\n}\r\n\r\n/** @internal */\r\nexport async function loadCategoriesFromViewport(iModel?: IModelConnection, vp?: Viewport) {\r\n if (!vp)\r\n return EMPTY_CATEGORIES_ARRAY;\r\n\r\n // Query categories and add them to state\r\n const selectUsedSpatialCategoryIds = \"SELECT DISTINCT Category.Id as id from BisCore.GeometricElement3d WHERE Category.Id IN (SELECT ECInstanceId from BisCore.SpatialCategory)\";\r\n const selectUsedDrawingCategoryIds = \"SELECT DISTINCT Category.Id as id from BisCore.GeometricElement2d WHERE Model.Id=? AND Category.Id IN (SELECT ECInstanceId from BisCore.DrawingCategory)\";\r\n const ecsql = vp.view.is3d() ? selectUsedSpatialCategoryIds : selectUsedDrawingCategoryIds;\r\n const ecsql2 = `SELECT ECInstanceId as id, UserLabel as label, CodeValue as code FROM ${vp.view.is3d() ? \"BisCore.SpatialCategory\" : \"BisCore.DrawingCategory\"} WHERE ECInstanceId IN (${ecsql})`;\r\n\r\n const categories: Category[] = [];\r\n\r\n // istanbul ignore else\r\n if (iModel) {\r\n const rowIterator = iModel.query(ecsql2);\r\n // istanbul ignore next\r\n for await (const row of rowIterator) {\r\n const subCategoryIds = iModel.subcategories.getSubCategories(row.id);\r\n categories.push({ key: row.id, children: (subCategoryIds) ? [...subCategoryIds] : undefined });\r\n }\r\n }\r\n\r\n return categories;\r\n}\r\n\r\n/**\r\n * Data structure that describes category.\r\n * @alpha\r\n */\r\nexport interface Category {\r\n key: string;\r\n children?: string[];\r\n}\r\n\r\n/** @alpha */\r\nexport interface CategoryVisibilityHandlerParams {\r\n viewManager: ViewManager;\r\n imodel: IModelConnection;\r\n categories: Category[];\r\n activeView?: Viewport;\r\n allViewports?: boolean;\r\n}\r\n\r\n/** @alpha */\r\nexport class CategoryVisibilityHandler implements IVisibilityHandler {\r\n private _viewManager: ViewManager;\r\n private _imodel: IModelConnection;\r\n private _pendingVisibilityChange: any | undefined;\r\n private _activeView?: Viewport;\r\n private _useAllViewports: boolean;\r\n private _categories: Category[];\r\n\r\n constructor(params: CategoryVisibilityHandlerParams) {\r\n this._viewManager = params.viewManager;\r\n this._imodel = params.imodel;\r\n this._activeView = params.activeView;\r\n // istanbul ignore next\r\n this._useAllViewports = params.allViewports ?? false;\r\n this._categories = params.categories;\r\n if (this._activeView) {\r\n this._activeView.onDisplayStyleChanged.addListener(this.onDisplayStyleChanged);\r\n this._activeView.onViewedCategoriesChanged.addListener(this.onViewedCategoriesChanged);\r\n }\r\n }\r\n\r\n public dispose() {\r\n if (this._activeView) {\r\n this._activeView.onDisplayStyleChanged.removeListener(this.onDisplayStyleChanged);\r\n this._activeView.onViewedCategoriesChanged.removeListener(this.onViewedCategoriesChanged);\r\n }\r\n clearTimeout(this._pendingVisibilityChange);\r\n }\r\n\r\n public onVisibilityChange = new BeEvent<VisibilityChangeListener>();\r\n\r\n public getVisibilityStatus(node: TreeNodeItem, nodeKey: NodeKey): VisibilityStatus {\r\n const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\r\n return { state: node.parentId ? this.getSubCategoryVisibility(instanceId) : this.getCategoryVisibility(instanceId) };\r\n }\r\n\r\n public async changeVisibility(node: TreeNodeItem, nodeKey: NodeKey, shouldDisplay: boolean): Promise<void> {\r\n // handle subcategory visibility change\r\n if (node.parentId) {\r\n const childId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\r\n // istanbul ignore next\r\n const parentId = this.getParent(childId)?.key;\r\n\r\n // make sure parent category is enabled\r\n if (shouldDisplay && parentId)\r\n CategoryVisibilityHandler.enableCategory(this._viewManager, this._imodel, [parentId], true, this._useAllViewports, false);\r\n\r\n CategoryVisibilityHandler.enableSubCategory(this._viewManager, childId, shouldDisplay, this._useAllViewports);\r\n return;\r\n }\r\n\r\n const instanceId = CategoryVisibilityHandler.getInstanceIdFromTreeNodeKey(nodeKey);\r\n CategoryVisibilityHandler.enableCategory(this._viewManager, this._imodel, [instanceId], shouldDisplay, true);\r\n }\r\n\r\n public getSubCategoryVisibility(id: string) {\r\n const parentItem = this.getParent(id);\r\n if (!parentItem || !this._activeView)\r\n return \"hidden\";\r\n\r\n const isVisible = this._activeView.view.viewsCategory(parentItem.key) && this._activeView.isSubCategoryVisible(id);\r\n return isVisible ? \"visible\" : \"hidden\";\r\n }\r\n\r\n public getCategoryVisibility(id: string) {\r\n if (!this._activeView)\r\n return \"hidden\";\r\n return this._activeView.view.viewsCategory(id) ? \"visible\" : \"hidden\";\r\n }\r\n\r\n public getParent(key: string): Category | undefined {\r\n for (const category of this._categories) {\r\n // istanbul ignore else\r\n if (category.children) {\r\n if (category.children.indexOf(key) !== -1)\r\n return category;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onDisplayStyleChanged = () => {\r\n this.onVisibilityChangeInternal();\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private onViewedCategoriesChanged = () => {\r\n this.onVisibilityChangeInternal();\r\n };\r\n\r\n private onVisibilityChangeInternal() {\r\n if (this._pendingVisibilityChange)\r\n return;\r\n\r\n this._pendingVisibilityChange = setTimeout(() => {\r\n this.onVisibilityChange.raiseEvent();\r\n this._pendingVisibilityChange = undefined;\r\n }, 0);\r\n }\r\n\r\n public static getInstanceIdFromTreeNodeKey(nodeKey: NodeKey) {\r\n return (NodeKey.isInstancesNodeKey(nodeKey) && nodeKey.instanceKeys.length > 0) ? nodeKey.instanceKeys[0].id : /* istanbul ignore next */ \"\";\r\n }\r\n\r\n /** Changes category display in the viewport */\r\n public static enableCategory(viewManager: ViewManager, imodel: IModelConnection, ids: string[], enabled: boolean, forAllViewports: boolean, enableAllSubCategories = true) {\r\n if (!viewManager.selectedView)\r\n return;\r\n\r\n const updateViewport = (vp: Viewport) => {\r\n // Only act on viewports that are both 3D or both 2D. Important if we have multiple viewports opened and we\r\n // are using 'allViewports' property\r\n if (viewManager.selectedView && viewManager.selectedView.view.is3d() === vp.view.is3d()) {\r\n vp.changeCategoryDisplay(ids, enabled, enableAllSubCategories);\r\n\r\n // remove category overrides per model\r\n const modelsContainingOverrides: string[] = [];\r\n for (const ovr of vp.perModelCategoryVisibility) {\r\n // istanbul ignore else\r\n if (ids.findIndex((id) => id === ovr.categoryId) !== -1)\r\n modelsContainingOverrides.push(ovr.modelId);\r\n }\r\n vp.perModelCategoryVisibility.setOverride(modelsContainingOverrides, ids, PerModelCategoryVisibility.Override.None);\r\n\r\n // changeCategoryDisplay only enables subcategories, it does not disabled them. So we must do that ourselves.\r\n if (false === enabled) {\r\n ids.forEach((id) => {\r\n const subCategoryIds = imodel.subcategories.getSubCategories(id);\r\n // istanbul ignore else\r\n if (subCategoryIds) {\r\n subCategoryIds.forEach((subCategoryId) => CategoryVisibilityHandler.enableSubCategory(viewManager, subCategoryId, false, forAllViewports));\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n // This property let us act on all viewports or just on the selected one, configurable by the app\r\n if (forAllViewports) {\r\n for (const viewport of viewManager) {\r\n updateViewport(viewport);\r\n }\r\n } else {\r\n updateViewport(viewManager.selectedView);\r\n }\r\n }\r\n\r\n /** Changes subcategory display in the viewport */\r\n public static enableSubCategory(viewManager: ViewManager, key: string, enabled: boolean, forAllViewports?: boolean) {\r\n if (!viewManager.selectedView)\r\n return;\r\n\r\n const updateViewport = (vp: Viewport) => {\r\n // Only act on viewports that are both 3D or both 2D. Important if we have multiple viewports opened and we\r\n // are using 'allViewports' property\r\n if (viewManager.selectedView && viewManager.selectedView.view.is3d() === vp.view.is3d()) {\r\n vp.changeSubCategoryDisplay(key, enabled);\r\n }\r\n };\r\n\r\n // This property let us act on all viewports or just on the selected one, configurable by the app\r\n if (forAllViewports) {\r\n for (const viewport of viewManager) {\r\n updateViewport(viewport);\r\n }\r\n } else {\r\n updateViewport(viewManager.selectedView);\r\n }\r\n }\r\n}\r\n"]}
@@ -35,11 +35,6 @@ export interface ModelsTreeProps {
35
35
  * @alpha
36
36
  */
37
37
  selectionPredicate?: ModelsTreeSelectionPredicate;
38
- /**
39
- * Start loading hierarchy as soon as the component is created
40
- * @deprecated Going to be removed due to too high pressure on the backend
41
- */
42
- enablePreloading?: boolean;
43
38
  /**
44
39
  * Active view used to determine and control visibility
45
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ModelsTree.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/models-tree/ModelsTree.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAW,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EACkC,6BAA6B,EACrE,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAkB,aAAa,EAA8B,MAAM,yBAAyB,CAAC;AAGpG,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAG1E,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAIlG,gBAAgB;AAChB,eAAO,MAAM,cAAc,EAAE,OAAqC,CAAC;AACnE,gBAAgB;AAChB,eAAO,MAAM,+BAA+B,EAAE,OAAoD,CAAC;AAInG;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,gBAAgB,CAAC;IACzB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,4BAA4B,CAAC;IAClD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3C;;;OAGG;IACH,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,oBAAoB,EAAE,6BAA6B,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACtG;;;OAGG;IACH,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;IAClD;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,eAqDhD"}
1
+ {"version":3,"file":"ModelsTree.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/models-tree/ModelsTree.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAW,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EACkC,6BAA6B,EACrE,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAkB,aAAa,EAA8B,MAAM,yBAAyB,CAAC;AAGpG,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAG1E,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAIlG,gBAAgB;AAChB,eAAO,MAAM,cAAc,EAAE,OAAqC,CAAC;AACnE,gBAAgB;AAChB,eAAO,MAAM,+BAA+B,EAAE,OAAoD,CAAC;AAInG;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,gBAAgB,CAAC;IACzB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,4BAA4B,CAAC;IAClD;;OAEG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3C;;;OAGG;IACH,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,oBAAoB,EAAE,6BAA6B,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACtG;;;OAGG;IACH,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;IAClD;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,eAqDhD"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModelsTree.js","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/models-tree/ModelsTree.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EACiE,6BAA6B,GACpG,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAgB,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAA4B,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAChI,OAAO,EAAgC,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAElG,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAY,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,yDAAyD;AAC7H,gBAAgB;AAChB,MAAM,CAAC,MAAM,+BAA+B,GAAY,OAAO,CAAC,iCAAiC,CAAC,CAAC,CAAC,yDAAyD;AAE7J,MAAM,qBAAqB,GAAY,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,yDAAyD;AAmEpI;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,qBAAqB,EAAE,GAAG,0BAA0B,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IACnJ,MAAM,aAAa,GAAG,kBAAkB,KAAK,UAAU,CAAC;IAExD,MAAM,EAAE,UAAU,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC;IAC1E,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,GAAY,EAAE,IAAkB,EAAE,EAAE;QACpF,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAClI,CAAC,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAElD,MAAM,iBAAiB,GAAG,oBAAoB,CAC5C,UAAU,CAAC,YAAY,CAAC,SAAS,EACjC,UAAU,EACV,uBAAuB,EACvB,uBAAuB,CAAC,kBAAkB,CAAC,YAAY,CAAC,EACxD,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,0BAA0B,CAAC;QACxF,UAAU,EAAE,kBAAkB;QAC9B,iBAAiB;QACjB,gCAAgC,EAAE,IAAI;QACtC,kBAAkB,EAAE,sBAAsB;KAC3C,CAAC,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAEtE,MAAM,SAAS,GAAG,YAAY,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,6BAAK,SAAS,EAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAElF,uBAAuB;IACvB,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpD,OAAO,oBAAC,4BAA4B,IAClC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,oCAAoC,CAAC,EACxF,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,4CAA4C,CAAC,GAClG,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,6BAAK,SAAS,EAAC,mBAAmB,EAAC,GAAG,EAAE,KAAK,CAAC,cAAc;QAC1D,oBAAC,cAAc,IACb,UAAU,EAAE,kBAAkB,EAC9B,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,EACxD,aAAa,EAAE,YAAY,EAC3B,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,EAClE,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,GACpB;QACD,OAAO,CACJ,CACP,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAsB;;IACrD,yGAAyG;IACzG,gFAAgF;IAChF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAClC,OAAO;YACL,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE,GAAG,+BAA+B,EAAE;YACzI,MAAM,EAAE,EAAE,GAAG,qBAAqB,EAAE;SACrC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kDAAkD;IAClF,qBAAqB;IACrB,iIAAiI;IACjI,mCAAmC;IACnC,KAAK;IAEL,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,6BAA6B,CAAC;QACpE,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,mCAAmC,EAAE,CAAC,KAAK,CAAC,2BAA2B,KAAK,mBAAmB,CAAC,aAAa,CAAC;QAC9G,UAAU,EAAE,WAAW;QACvB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB;KAC3D,CAAC,CAAC;IACH,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,GAAG,6BAA6B,CAAC;QAC7G,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,QAAQ,CAAC,MAAM;QACxB,UAAU,EAAE,WAAW;QACvB,yBAAyB,EAAE,KAAK,CAAC,yBAAyB;KAC3D,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,CAAA,MAAA,KAAK,CAAC,UAAU,0CAAE,MAAM,EAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC;IAClF,MAAM,2BAA2B,GAAG,CAAA,MAAA,KAAK,CAAC,UAAU,0CAAE,MAAM,EAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,eAAe,CAAC;IAEvG,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACrF,IAAI,KAAK,CAAC,kBAAkB,EAAE;QAC5B,mEAAmE;QACnE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;KACjE;SAAM;QACL,mEAAmE;QACnE,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACpC;IAED,OAAO;QACL,UAAU,EAAE,gBAAgB;QAC5B,eAAe,EAAE,2BAA2B;KAC7C,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAAiB,EACjB,UAAqB,EACrB,iBAA2C,EAC3C,oBAA4D,EAC5D,0BAAoC;IAEpC,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC5E,OAAO,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,SAAS,EAAE,UAAU,EAAE,0BAA0B,CAAC,CAAC;IACpH,CAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC;IAE5E,MAAM,OAAO,GAAG,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,wBAAwB,CAAC;IAE9D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,OAAO,IAAI,OAAO,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IACnE,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAEpC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,uBAAuB,GAAG,CAAC,SAAiB,EAAE,UAAqB,EAAE,0BAAoC,EAAuC,EAAE;IACtJ,uBAAuB;IACvB,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,uBAAuB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/H,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,YAAmF,EAAyD,EAAE;IAC5K,MAAM,gBAAgB,GAAG,YAAqD,CAAC;IAC/E,OAAO,gBAAgB,CAAC,iBAAiB,KAAK,SAAS,IAAI,gBAAgB,CAAC,cAAc,KAAK,SAAS,IAAI,gBAAgB,CAAC,qBAAqB,KAAK,SAAS,CAAC;AACnK,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,YAAmF,EAAqD,EAAE;IACzK,OAAO,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelComponents\r\n */\r\n\r\nimport \"./ModelsTree.scss\";\r\nimport * as React from \"react\";\r\nimport { Id64Array } from \"@itwin/core-bentley\";\r\nimport { IModelConnection, Viewport } from \"@itwin/core-frontend\";\r\nimport { NodeKey, Ruleset } from \"@itwin/presentation-common\";\r\nimport {\r\n IFilteredPresentationTreeDataProvider, IPresentationTreeDataProvider, usePresentationTreeNodeLoader,\r\n} from \"@itwin/presentation-components\";\r\nimport { Presentation } from \"@itwin/presentation-frontend\";\r\nimport { ControlledTree, SelectionMode, TreeNodeItem, useTreeModel } from \"@itwin/components-react\";\r\nimport { useDisposable, useOptionalDisposable } from \"@itwin/core-react\";\r\nimport { UiFramework } from \"../../../appui-react/UiFramework\";\r\nimport { ClassGroupingOption, VisibilityTreeFilterInfo } from \"../Common\";\r\nimport { VisibilityTreeEventHandler } from \"../VisibilityTreeEventHandler\";\r\nimport { useVisibilityTreeFiltering, useVisibilityTreeRenderer, VisibilityTreeNoFilteredData } from \"../VisibilityTreeRenderer\";\r\nimport { ModelsTreeSelectionPredicate, ModelsVisibilityHandler } from \"./ModelsVisibilityHandler\";\r\n\r\nconst PAGING_SIZE = 20;\r\n\r\n/** @internal */\r\nexport const RULESET_MODELS: Ruleset = require(\"./Hierarchy.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\r\n/** @internal */\r\nexport const RULESET_MODELS_GROUPED_BY_CLASS: Ruleset = require(\"./Hierarchy.GroupedByClass.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\r\n\r\nconst RULESET_MODELS_SEARCH: Ruleset = require(\"./ModelsTreeSearch.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\r\n\r\n/** Props for [[ModelsTree]] component\r\n * @public\r\n */\r\nexport interface ModelsTreeProps {\r\n /**\r\n * An IModel to pull data from\r\n */\r\n iModel: IModelConnection;\r\n /** Width of the component */\r\n width: number;\r\n /** Height of the component */\r\n height: number;\r\n /**\r\n * Selection mode in the tree\r\n */\r\n selectionMode?: SelectionMode;\r\n /**\r\n * Predicate which indicates whether node can be selected or no\r\n * @alpha\r\n */\r\n selectionPredicate?: ModelsTreeSelectionPredicate;\r\n /**\r\n * Start loading hierarchy as soon as the component is created\r\n * @deprecated Going to be removed due to too high pressure on the backend\r\n */\r\n enablePreloading?: boolean;\r\n /**\r\n * Active view used to determine and control visibility\r\n */\r\n activeView?: Viewport;\r\n /**\r\n * Ref to the root HTML element used by this component\r\n */\r\n rootElementRef?: React.Ref<HTMLDivElement>;\r\n /**\r\n * Information for tree filtering.\r\n * @alpha\r\n */\r\n filterInfo?: VisibilityTreeFilterInfo;\r\n /**\r\n * Filter the hierarchy by given element IDs.\r\n * @alpha\r\n */\r\n filteredElementIds?: Id64Array;\r\n /**\r\n * Callback invoked when tree is filtered.\r\n */\r\n onFilterApplied?: (filteredDataProvider: IPresentationTreeDataProvider, matchesCount: number) => void;\r\n /**\r\n * Should the tree group displayed element nodes by class.\r\n * @beta\r\n */\r\n enableElementsClassGrouping?: ClassGroupingOption;\r\n /**\r\n * Auto-update the hierarchy when data in the iModel changes.\r\n * @alpha\r\n */\r\n enableHierarchyAutoUpdate?: boolean;\r\n /**\r\n * Custom visibility handler.\r\n * @alpha\r\n */\r\n modelsVisibilityHandler?: ModelsVisibilityHandler;\r\n}\r\n\r\n/**\r\n * A tree component that shows a subject - model - category - element\r\n * hierarchy along with checkboxes that represent and allow changing\r\n * the display of those instances.\r\n * @public\r\n */\r\nexport function ModelsTree(props: ModelsTreeProps) {\r\n const { nodeLoader, onItemsRendered } = useModelsTreeNodeLoader(props);\r\n const { filteredNodeLoader, isFiltering, nodeHighlightingProps } = useVisibilityTreeFiltering(nodeLoader, props.filterInfo, props.onFilterApplied);\r\n const filterApplied = filteredNodeLoader !== nodeLoader;\r\n\r\n const { activeView, modelsVisibilityHandler, selectionPredicate } = props;\r\n const nodeSelectionPredicate = React.useCallback((key: NodeKey, node: TreeNodeItem) => {\r\n return !selectionPredicate ? true : selectionPredicate(key, ModelsVisibilityHandler.getNodeType(node, nodeLoader.dataProvider));\r\n }, [selectionPredicate, nodeLoader.dataProvider]);\r\n\r\n const visibilityHandler = useVisibilityHandler(\r\n nodeLoader.dataProvider.rulesetId,\r\n activeView,\r\n modelsVisibilityHandler,\r\n getFilteredDataProvider(filteredNodeLoader.dataProvider),\r\n props.enableHierarchyAutoUpdate);\r\n const eventHandler = useDisposable(React.useCallback(() => new VisibilityTreeEventHandler({\r\n nodeLoader: filteredNodeLoader,\r\n visibilityHandler,\r\n collapsedChildrenDisposalEnabled: true,\r\n selectionPredicate: nodeSelectionPredicate,\r\n }), [filteredNodeLoader, visibilityHandler, nodeSelectionPredicate]));\r\n\r\n const treeModel = useTreeModel(filteredNodeLoader.modelSource);\r\n const treeRenderer = useVisibilityTreeRenderer(true, false);\r\n\r\n const overlay = isFiltering ? <div className=\"filteredTreeOverlay\" /> : undefined;\r\n\r\n // istanbul ignore next\r\n const noFilteredDataRenderer = React.useCallback(() => {\r\n return <VisibilityTreeNoFilteredData\r\n title={UiFramework.localization.getLocalizedString(\"UiFramework:modelTree.noModelFound\")}\r\n message={UiFramework.localization.getLocalizedString(\"UiFramework:modelTree.noMatchingModelNames\")}\r\n />;\r\n }, []);\r\n\r\n return (\r\n <div className=\"ui-fw-models-tree\" ref={props.rootElementRef}>\r\n <ControlledTree\r\n nodeLoader={filteredNodeLoader}\r\n model={treeModel}\r\n selectionMode={props.selectionMode || SelectionMode.None}\r\n eventsHandler={eventHandler}\r\n treeRenderer={treeRenderer}\r\n nodeHighlightingProps={nodeHighlightingProps}\r\n noDataRenderer={filterApplied ? noFilteredDataRenderer : undefined}\r\n onItemsRendered={onItemsRendered}\r\n width={props.width}\r\n height={props.height}\r\n />\r\n {overlay}\r\n </div>\r\n );\r\n}\r\n\r\nfunction useModelsTreeNodeLoader(props: ModelsTreeProps) {\r\n // note: this is a temporary workaround for auto-update not working on ruleset variable changes - instead\r\n // of auto-updating we just re-create the node loader by re-creating the ruleset\r\n const rulesets = React.useMemo(() => {\r\n return {\r\n general: (!props.enableElementsClassGrouping) ? { ...RULESET_MODELS } : /* istanbul ignore next */ { ...RULESET_MODELS_GROUPED_BY_CLASS },\r\n search: { ...RULESET_MODELS_SEARCH },\r\n };\r\n }, [props.filteredElementIds]); // eslint-disable-line react-hooks/exhaustive-deps\r\n // const rulesets = {\r\n // general: (!props.enableElementsClassGrouping) ? RULESET_MODELS : /* istanbul ignore next */ RULESET_MODELS_GROUPED_BY_CLASS,\r\n // search: RULESET_MODELS_SEARCH,\r\n // };\r\n\r\n const { nodeLoader, onItemsRendered } = usePresentationTreeNodeLoader({\r\n imodel: props.iModel,\r\n ruleset: rulesets.general,\r\n appendChildrenCountForGroupingNodes: (props.enableElementsClassGrouping === ClassGroupingOption.YesWithCounts),\r\n pagingSize: PAGING_SIZE,\r\n enableHierarchyAutoUpdate: props.enableHierarchyAutoUpdate,\r\n });\r\n const { nodeLoader: searchNodeLoader, onItemsRendered: onSearchItemsRendered } = usePresentationTreeNodeLoader({\r\n imodel: props.iModel,\r\n ruleset: rulesets.search,\r\n pagingSize: PAGING_SIZE,\r\n enableHierarchyAutoUpdate: props.enableHierarchyAutoUpdate,\r\n });\r\n\r\n const activeNodeLoader = props.filterInfo?.filter ? searchNodeLoader : nodeLoader;\r\n const activeItemsRenderedCallback = props.filterInfo?.filter ? onSearchItemsRendered : onItemsRendered;\r\n\r\n const vars = Presentation.presentation.vars(activeNodeLoader.dataProvider.rulesetId);\r\n if (props.filteredElementIds) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n vars.setId64s(\"filtered-element-ids\", props.filteredElementIds);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n vars.unset(\"filtered-element-ids\");\r\n }\r\n\r\n return {\r\n nodeLoader: activeNodeLoader,\r\n onItemsRendered: activeItemsRenderedCallback,\r\n };\r\n}\r\n\r\nfunction useVisibilityHandler(\r\n rulesetId: string,\r\n activeView?: Viewport,\r\n visibilityHandler?: ModelsVisibilityHandler,\r\n filteredDataProvider?: IFilteredPresentationTreeDataProvider,\r\n hierarchyAutoUpdateEnabled?: boolean,\r\n) {\r\n const defaultVisibilityHandler = useOptionalDisposable(React.useCallback(() => {\r\n return visibilityHandler ? undefined : createVisibilityHandler(rulesetId, activeView, hierarchyAutoUpdateEnabled);\r\n }, [visibilityHandler, rulesetId, activeView, hierarchyAutoUpdateEnabled]));\r\n\r\n const handler = visibilityHandler ?? defaultVisibilityHandler;\r\n\r\n React.useEffect(() => {\r\n handler && handler.setFilteredDataProvider(filteredDataProvider);\r\n }, [handler, filteredDataProvider]);\r\n\r\n return handler;\r\n}\r\n\r\nconst createVisibilityHandler = (rulesetId: string, activeView?: Viewport, hierarchyAutoUpdateEnabled?: boolean): ModelsVisibilityHandler | undefined => {\r\n // istanbul ignore next\r\n return activeView ? new ModelsVisibilityHandler({ rulesetId, viewport: activeView, hierarchyAutoUpdateEnabled }) : undefined;\r\n};\r\n\r\nconst isFilteredDataProvider = (dataProvider: IPresentationTreeDataProvider | IFilteredPresentationTreeDataProvider): dataProvider is IFilteredPresentationTreeDataProvider => {\r\n const filteredProvider = dataProvider as IFilteredPresentationTreeDataProvider;\r\n return filteredProvider.nodeMatchesFilter !== undefined && filteredProvider.getActiveMatch !== undefined && filteredProvider.countFilteringResults !== undefined;\r\n};\r\n\r\nconst getFilteredDataProvider = (dataProvider: IPresentationTreeDataProvider | IFilteredPresentationTreeDataProvider): IFilteredPresentationTreeDataProvider | undefined => {\r\n return isFilteredDataProvider(dataProvider) ? dataProvider : undefined;\r\n};\r\n"]}
1
+ {"version":3,"file":"ModelsTree.js","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/models-tree/ModelsTree.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module IModelComponents\r\n */\r\n\r\nimport \"./ModelsTree.scss\";\r\nimport * as React from \"react\";\r\nimport { Id64Array } from \"@itwin/core-bentley\";\r\nimport { IModelConnection, Viewport } from \"@itwin/core-frontend\";\r\nimport { NodeKey, Ruleset } from \"@itwin/presentation-common\";\r\nimport {\r\n IFilteredPresentationTreeDataProvider, IPresentationTreeDataProvider, usePresentationTreeNodeLoader,\r\n} from \"@itwin/presentation-components\";\r\nimport { Presentation } from \"@itwin/presentation-frontend\";\r\nimport { ControlledTree, SelectionMode, TreeNodeItem, useTreeModel } from \"@itwin/components-react\";\r\nimport { useDisposable, useOptionalDisposable } from \"@itwin/core-react\";\r\nimport { UiFramework } from \"../../../appui-react/UiFramework\";\r\nimport { ClassGroupingOption, VisibilityTreeFilterInfo } from \"../Common\";\r\nimport { VisibilityTreeEventHandler } from \"../VisibilityTreeEventHandler\";\r\nimport { useVisibilityTreeFiltering, useVisibilityTreeRenderer, VisibilityTreeNoFilteredData } from \"../VisibilityTreeRenderer\";\r\nimport { ModelsTreeSelectionPredicate, ModelsVisibilityHandler } from \"./ModelsVisibilityHandler\";\r\n\r\nconst PAGING_SIZE = 20;\r\n\r\n/** @internal */\r\nexport const RULESET_MODELS: Ruleset = require(\"./Hierarchy.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\r\n/** @internal */\r\nexport const RULESET_MODELS_GROUPED_BY_CLASS: Ruleset = require(\"./Hierarchy.GroupedByClass.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\r\n\r\nconst RULESET_MODELS_SEARCH: Ruleset = require(\"./ModelsTreeSearch.json\"); // eslint-disable-line @typescript-eslint/no-var-requires\r\n\r\n/** Props for [[ModelsTree]] component\r\n * @public\r\n */\r\nexport interface ModelsTreeProps {\r\n /**\r\n * An IModel to pull data from\r\n */\r\n iModel: IModelConnection;\r\n /** Width of the component */\r\n width: number;\r\n /** Height of the component */\r\n height: number;\r\n /**\r\n * Selection mode in the tree\r\n */\r\n selectionMode?: SelectionMode;\r\n /**\r\n * Predicate which indicates whether node can be selected or no\r\n * @alpha\r\n */\r\n selectionPredicate?: ModelsTreeSelectionPredicate;\r\n /**\r\n * Active view used to determine and control visibility\r\n */\r\n activeView?: Viewport;\r\n /**\r\n * Ref to the root HTML element used by this component\r\n */\r\n rootElementRef?: React.Ref<HTMLDivElement>;\r\n /**\r\n * Information for tree filtering.\r\n * @alpha\r\n */\r\n filterInfo?: VisibilityTreeFilterInfo;\r\n /**\r\n * Filter the hierarchy by given element IDs.\r\n * @alpha\r\n */\r\n filteredElementIds?: Id64Array;\r\n /**\r\n * Callback invoked when tree is filtered.\r\n */\r\n onFilterApplied?: (filteredDataProvider: IPresentationTreeDataProvider, matchesCount: number) => void;\r\n /**\r\n * Should the tree group displayed element nodes by class.\r\n * @beta\r\n */\r\n enableElementsClassGrouping?: ClassGroupingOption;\r\n /**\r\n * Auto-update the hierarchy when data in the iModel changes.\r\n * @alpha\r\n */\r\n enableHierarchyAutoUpdate?: boolean;\r\n /**\r\n * Custom visibility handler.\r\n * @alpha\r\n */\r\n modelsVisibilityHandler?: ModelsVisibilityHandler;\r\n}\r\n\r\n/**\r\n * A tree component that shows a subject - model - category - element\r\n * hierarchy along with checkboxes that represent and allow changing\r\n * the display of those instances.\r\n * @public\r\n */\r\nexport function ModelsTree(props: ModelsTreeProps) {\r\n const { nodeLoader, onItemsRendered } = useModelsTreeNodeLoader(props);\r\n const { filteredNodeLoader, isFiltering, nodeHighlightingProps } = useVisibilityTreeFiltering(nodeLoader, props.filterInfo, props.onFilterApplied);\r\n const filterApplied = filteredNodeLoader !== nodeLoader;\r\n\r\n const { activeView, modelsVisibilityHandler, selectionPredicate } = props;\r\n const nodeSelectionPredicate = React.useCallback((key: NodeKey, node: TreeNodeItem) => {\r\n return !selectionPredicate ? true : selectionPredicate(key, ModelsVisibilityHandler.getNodeType(node, nodeLoader.dataProvider));\r\n }, [selectionPredicate, nodeLoader.dataProvider]);\r\n\r\n const visibilityHandler = useVisibilityHandler(\r\n nodeLoader.dataProvider.rulesetId,\r\n activeView,\r\n modelsVisibilityHandler,\r\n getFilteredDataProvider(filteredNodeLoader.dataProvider),\r\n props.enableHierarchyAutoUpdate);\r\n const eventHandler = useDisposable(React.useCallback(() => new VisibilityTreeEventHandler({\r\n nodeLoader: filteredNodeLoader,\r\n visibilityHandler,\r\n collapsedChildrenDisposalEnabled: true,\r\n selectionPredicate: nodeSelectionPredicate,\r\n }), [filteredNodeLoader, visibilityHandler, nodeSelectionPredicate]));\r\n\r\n const treeModel = useTreeModel(filteredNodeLoader.modelSource);\r\n const treeRenderer = useVisibilityTreeRenderer(true, false);\r\n\r\n const overlay = isFiltering ? <div className=\"filteredTreeOverlay\" /> : undefined;\r\n\r\n // istanbul ignore next\r\n const noFilteredDataRenderer = React.useCallback(() => {\r\n return <VisibilityTreeNoFilteredData\r\n title={UiFramework.localization.getLocalizedString(\"UiFramework:modelTree.noModelFound\")}\r\n message={UiFramework.localization.getLocalizedString(\"UiFramework:modelTree.noMatchingModelNames\")}\r\n />;\r\n }, []);\r\n\r\n return (\r\n <div className=\"ui-fw-models-tree\" ref={props.rootElementRef}>\r\n <ControlledTree\r\n nodeLoader={filteredNodeLoader}\r\n model={treeModel}\r\n selectionMode={props.selectionMode || SelectionMode.None}\r\n eventsHandler={eventHandler}\r\n treeRenderer={treeRenderer}\r\n nodeHighlightingProps={nodeHighlightingProps}\r\n noDataRenderer={filterApplied ? noFilteredDataRenderer : undefined}\r\n onItemsRendered={onItemsRendered}\r\n width={props.width}\r\n height={props.height}\r\n />\r\n {overlay}\r\n </div>\r\n );\r\n}\r\n\r\nfunction useModelsTreeNodeLoader(props: ModelsTreeProps) {\r\n // note: this is a temporary workaround for auto-update not working on ruleset variable changes - instead\r\n // of auto-updating we just re-create the node loader by re-creating the ruleset\r\n const rulesets = React.useMemo(() => {\r\n return {\r\n general: (!props.enableElementsClassGrouping) ? { ...RULESET_MODELS } : /* istanbul ignore next */ { ...RULESET_MODELS_GROUPED_BY_CLASS },\r\n search: { ...RULESET_MODELS_SEARCH },\r\n };\r\n }, [props.filteredElementIds]); // eslint-disable-line react-hooks/exhaustive-deps\r\n // const rulesets = {\r\n // general: (!props.enableElementsClassGrouping) ? RULESET_MODELS : /* istanbul ignore next */ RULESET_MODELS_GROUPED_BY_CLASS,\r\n // search: RULESET_MODELS_SEARCH,\r\n // };\r\n\r\n const { nodeLoader, onItemsRendered } = usePresentationTreeNodeLoader({\r\n imodel: props.iModel,\r\n ruleset: rulesets.general,\r\n appendChildrenCountForGroupingNodes: (props.enableElementsClassGrouping === ClassGroupingOption.YesWithCounts),\r\n pagingSize: PAGING_SIZE,\r\n enableHierarchyAutoUpdate: props.enableHierarchyAutoUpdate,\r\n });\r\n const { nodeLoader: searchNodeLoader, onItemsRendered: onSearchItemsRendered } = usePresentationTreeNodeLoader({\r\n imodel: props.iModel,\r\n ruleset: rulesets.search,\r\n pagingSize: PAGING_SIZE,\r\n enableHierarchyAutoUpdate: props.enableHierarchyAutoUpdate,\r\n });\r\n\r\n const activeNodeLoader = props.filterInfo?.filter ? searchNodeLoader : nodeLoader;\r\n const activeItemsRenderedCallback = props.filterInfo?.filter ? onSearchItemsRendered : onItemsRendered;\r\n\r\n const vars = Presentation.presentation.vars(activeNodeLoader.dataProvider.rulesetId);\r\n if (props.filteredElementIds) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n vars.setId64s(\"filtered-element-ids\", props.filteredElementIds);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n vars.unset(\"filtered-element-ids\");\r\n }\r\n\r\n return {\r\n nodeLoader: activeNodeLoader,\r\n onItemsRendered: activeItemsRenderedCallback,\r\n };\r\n}\r\n\r\nfunction useVisibilityHandler(\r\n rulesetId: string,\r\n activeView?: Viewport,\r\n visibilityHandler?: ModelsVisibilityHandler,\r\n filteredDataProvider?: IFilteredPresentationTreeDataProvider,\r\n hierarchyAutoUpdateEnabled?: boolean,\r\n) {\r\n const defaultVisibilityHandler = useOptionalDisposable(React.useCallback(() => {\r\n return visibilityHandler ? undefined : createVisibilityHandler(rulesetId, activeView, hierarchyAutoUpdateEnabled);\r\n }, [visibilityHandler, rulesetId, activeView, hierarchyAutoUpdateEnabled]));\r\n\r\n const handler = visibilityHandler ?? defaultVisibilityHandler;\r\n\r\n React.useEffect(() => {\r\n handler && handler.setFilteredDataProvider(filteredDataProvider);\r\n }, [handler, filteredDataProvider]);\r\n\r\n return handler;\r\n}\r\n\r\nconst createVisibilityHandler = (rulesetId: string, activeView?: Viewport, hierarchyAutoUpdateEnabled?: boolean): ModelsVisibilityHandler | undefined => {\r\n // istanbul ignore next\r\n return activeView ? new ModelsVisibilityHandler({ rulesetId, viewport: activeView, hierarchyAutoUpdateEnabled }) : undefined;\r\n};\r\n\r\nconst isFilteredDataProvider = (dataProvider: IPresentationTreeDataProvider | IFilteredPresentationTreeDataProvider): dataProvider is IFilteredPresentationTreeDataProvider => {\r\n const filteredProvider = dataProvider as IFilteredPresentationTreeDataProvider;\r\n return filteredProvider.nodeMatchesFilter !== undefined && filteredProvider.getActiveMatch !== undefined && filteredProvider.countFilteringResults !== undefined;\r\n};\r\n\r\nconst getFilteredDataProvider = (dataProvider: IPresentationTreeDataProvider | IFilteredPresentationTreeDataProvider): IFilteredPresentationTreeDataProvider | undefined => {\r\n return isFilteredDataProvider(dataProvider) ? dataProvider : undefined;\r\n};\r\n"]}
@@ -72,7 +72,7 @@ export declare class ModelsVisibilityHandler implements IVisibilityHandler {
72
72
  protected changeCategoryState(categoryId: Id64String, parentModelId: Id64String | undefined, on: boolean): void;
73
73
  protected changeElementGroupingNodeState(key: ECClassGroupingNodeKey, on: boolean): Promise<void>;
74
74
  protected changeElementState(id: Id64String, modelId: Id64String | undefined, categoryId: Id64String | undefined, on: boolean): Promise<void>;
75
- protected changeElementsState(modelId: Id64String | undefined, categoryId: Id64String | undefined, elementIds: Id64String[], on: boolean): void;
75
+ protected changeElementsState(modelId: Id64String | undefined, categoryId: Id64String | undefined, elementIds: AsyncGenerator<Id64String>, on: boolean): Promise<void>;
76
76
  private onVisibilityChangeInternal;
77
77
  private onViewChanged;
78
78
  private onElementAlwaysDrawnChanged;
@@ -1 +1 @@
1
- {"version":3,"file":"ModelsVisibilityHandler.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelsVisibilityHandler.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,9 @@
6
6
  * @module IModelComponents
7
7
  */
8
8
  import { BeEvent } from "@itwin/core-bentley";
9
- import { QueryBinder } from "@itwin/core-common";
9
+ import { QueryBinder, QueryRowFormat } from "@itwin/core-common";
10
10
  import { PerModelCategoryVisibility } from "@itwin/core-frontend";
11
- import { ContentFlags, KeySet, NodeKey } from "@itwin/presentation-common";
12
- import { ContentDataProvider } from "@itwin/presentation-components";
11
+ import { KeySet, NodeKey } from "@itwin/presentation-common";
13
12
  import { Presentation } from "@itwin/presentation-frontend";
14
13
  import { UiFramework } from "../../UiFramework";
15
14
  /**
@@ -175,16 +174,30 @@ export class ModelsVisibilityHandler {
175
174
  const { modelId, categoryId, elementIds } = await this.getGroupedElementIds(key);
176
175
  if (!modelId || !this._props.viewport.view.viewsModel(modelId))
177
176
  return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "element.modelNotDisplayed") };
178
- const atLeastOneElementForceDisplayed = (this._props.viewport.alwaysDrawn !== undefined)
179
- && elementIds.some((elementId) => this._props.viewport.alwaysDrawn.has(elementId));
180
- if (atLeastOneElementForceDisplayed)
181
- return { state: "visible", tooltip: createTooltip("visible", "element.displayedThroughAlwaysDrawnList") };
177
+ if (this._props.viewport.alwaysDrawn !== undefined && this._props.viewport.alwaysDrawn.size > 0) {
178
+ let atLeastOneElementForceDisplayed = false;
179
+ for await (const elementId of elementIds.getElementIds()) {
180
+ if (this._props.viewport.alwaysDrawn.has(elementId)) {
181
+ atLeastOneElementForceDisplayed = true;
182
+ break;
183
+ }
184
+ }
185
+ if (atLeastOneElementForceDisplayed)
186
+ return { state: "visible", tooltip: createTooltip("visible", "element.displayedThroughAlwaysDrawnList") };
187
+ }
182
188
  if (this._props.viewport.alwaysDrawn !== undefined && this._props.viewport.alwaysDrawn.size !== 0 && this._props.viewport.isAlwaysDrawnExclusive)
183
189
  return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn") };
184
- const allElementsForceHidden = (this._props.viewport.neverDrawn !== undefined)
185
- && elementIds.every((elementId) => this._props.viewport.neverDrawn.has(elementId));
186
- if (allElementsForceHidden)
187
- return { state: "hidden", tooltip: createTooltip("visible", "element.hiddenThroughNeverDrawnList") };
190
+ if (this._props.viewport.neverDrawn !== undefined && this._props.viewport.neverDrawn.size > 0) {
191
+ let allElementsForceHidden = true;
192
+ for await (const elementId of elementIds.getElementIds()) {
193
+ if (!this._props.viewport.neverDrawn.has(elementId)) {
194
+ allElementsForceHidden = false;
195
+ break;
196
+ }
197
+ }
198
+ if (allElementsForceHidden)
199
+ return { state: "hidden", tooltip: createTooltip("visible", "element.hiddenThroughNeverDrawnList") };
200
+ }
188
201
  if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === "visible")
189
202
  return { state: "visible", tooltip: createTooltip("visible", undefined) };
190
203
  return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenThroughCategory") };
@@ -249,19 +262,25 @@ export class ModelsVisibilityHandler {
249
262
  }
250
263
  async changeElementGroupingNodeState(key, on) {
251
264
  const { modelId, categoryId, elementIds } = await this.getGroupedElementIds(key);
252
- this.changeElementsState(modelId, categoryId, elementIds, on);
265
+ await this.changeElementsState(modelId, categoryId, elementIds.getElementIds(), on);
253
266
  }
254
267
  async changeElementState(id, modelId, categoryId, on) {
255
- this.changeElementsState(modelId, categoryId, [id, ...await this.getAssemblyElementIds(id)], on);
268
+ const childIdsContainer = this.getAssemblyElementIds(id);
269
+ async function* elementIds() {
270
+ yield id;
271
+ for await (const childId of childIdsContainer.getElementIds())
272
+ yield childId;
273
+ }
274
+ await this.changeElementsState(modelId, categoryId, elementIds(), on);
256
275
  }
257
- changeElementsState(modelId, categoryId, elementIds, on) {
276
+ async changeElementsState(modelId, categoryId, elementIds, on) {
258
277
  const isDisplayedByDefault = modelId && this.getModelDisplayStatus(modelId).state === "visible"
259
278
  && categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === "visible";
260
279
  const isHiddenDueToExclusiveAlwaysDrawnElements = this._props.viewport.isAlwaysDrawnExclusive && this._props.viewport.alwaysDrawn && 0 !== this._props.viewport.alwaysDrawn.size;
261
280
  const currNeverDrawn = new Set(this._props.viewport.neverDrawn ? this._props.viewport.neverDrawn : []);
262
281
  const currAlwaysDrawn = new Set(this._props.viewport.alwaysDrawn ?
263
282
  this._props.viewport.alwaysDrawn : /* istanbul ignore next */ []);
264
- elementIds.forEach((elementId) => {
283
+ for await (const elementId of elementIds) {
265
284
  if (on) {
266
285
  currNeverDrawn.delete(elementId);
267
286
  if (!isDisplayedByDefault || isHiddenDueToExclusiveAlwaysDrawnElements)
@@ -272,7 +291,7 @@ export class ModelsVisibilityHandler {
272
291
  if (isDisplayedByDefault && !isHiddenDueToExclusiveAlwaysDrawnElements)
273
292
  currNeverDrawn.add(elementId);
274
293
  }
275
- });
294
+ }
276
295
  this._props.viewport.setNeverDrawn(currNeverDrawn);
277
296
  this._props.viewport.setAlwaysDrawn(currAlwaysDrawn, this._props.viewport.isAlwaysDrawnExclusive);
278
297
  }
@@ -298,7 +317,7 @@ export class ModelsVisibilityHandler {
298
317
  .reduce((allModelIds, curr) => [...allModelIds, ...curr], []);
299
318
  }
300
319
  // istanbul ignore next
301
- async getAssemblyElementIds(assemblyId) {
320
+ getAssemblyElementIds(assemblyId) {
302
321
  return this._elementIdsCache.getAssemblyElementIds(assemblyId);
303
322
  }
304
323
  // istanbul ignore next
@@ -313,7 +332,7 @@ class SubjectModelIdsCache {
313
332
  async initSubjectsHierarchy() {
314
333
  this._subjectsHierarchy = new Map();
315
334
  const ecsql = `SELECT ECInstanceId id, Parent.Id parentId FROM bis.Subject WHERE Parent IS NOT NULL`;
316
- const result = this._imodel.query(ecsql);
335
+ const result = this._imodel.query(ecsql, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });
317
336
  for await (const row of result) {
318
337
  let list = this._subjectsHierarchy.get(row.parentId);
319
338
  if (!list) {
@@ -331,7 +350,7 @@ class SubjectModelIdsCache {
331
350
  INNER JOIN bis.GeometricModel3d m ON m.ModeledElement.Id = p.ECInstanceId
332
351
  INNER JOIN bis.Subject s ON (s.ECInstanceId = p.Parent.Id OR json_extract(s.JsonProperties, '$.Subject.Model.TargetPartition') = printf('0x%x', p.ECInstanceId))
333
352
  WHERE NOT m.IsPrivate`;
334
- const result = this._imodel.query(ecsql);
353
+ const result = this._imodel.query(ecsql, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });
335
354
  for await (const row of result) {
336
355
  let list = this._subjectModels.get(row.subjectId);
337
356
  if (!list) {
@@ -364,29 +383,6 @@ class SubjectModelIdsCache {
364
383
  }
365
384
  }
366
385
  // istanbul ignore next
367
- class RulesetDrivenIdsProvider extends ContentDataProvider {
368
- constructor(imodel, rulesetId, displayType, inputKeys) {
369
- super({ imodel, ruleset: rulesetId, displayType });
370
- this.keys = new KeySet(inputKeys);
371
- }
372
- async getDescriptorOverrides() {
373
- return {
374
- displayType: this.displayType,
375
- contentFlags: ContentFlags.KeysOnly,
376
- };
377
- }
378
- async getResultIds() {
379
- const content = await this.getContent();
380
- if (!content)
381
- return [];
382
- const result = [];
383
- content.contentSet.forEach((item) => {
384
- result.push(...item.primaryKeys.map((k) => k.id));
385
- });
386
- return result;
387
- }
388
- }
389
- // istanbul ignore next
390
386
  class ElementIdsCache {
391
387
  constructor(_imodel, _rulesetId) {
392
388
  this._imodel = _imodel;
@@ -398,51 +394,68 @@ class ElementIdsCache {
398
394
  this._assemblyElementIdsCache.clear();
399
395
  this._groupedElementIdsCache.clear();
400
396
  }
401
- async getAssemblyElementIds(assemblyId) {
397
+ getAssemblyElementIds(assemblyId) {
402
398
  const ids = this._assemblyElementIdsCache.get(assemblyId);
403
399
  if (ids)
404
400
  return ids;
405
- const idsProvider = new AssemblyElementIdsProvider(this._imodel, this._rulesetId, assemblyId);
406
- const newIds = await idsProvider.getElementIds();
407
- this._assemblyElementIdsCache.set(assemblyId, newIds);
408
- return newIds;
401
+ const container = createAssemblyElementIdsContainer(this._imodel, this._rulesetId, assemblyId);
402
+ this._assemblyElementIdsCache.set(assemblyId, container);
403
+ return container;
409
404
  }
410
405
  async getGroupedElementIds(groupingNodeKey) {
411
406
  const keyString = JSON.stringify(groupingNodeKey);
412
407
  const ids = this._groupedElementIdsCache.get(keyString);
413
408
  if (ids)
414
409
  return ids;
415
- const idsProvider = new GroupedElementIdsProvider(this._imodel, this._rulesetId, groupingNodeKey);
416
- const newIds = await idsProvider.getElementIds();
417
- this._groupedElementIdsCache.set(keyString, newIds);
418
- return newIds;
410
+ const info = await createGroupedElementsInfo(this._imodel, this._rulesetId, groupingNodeKey);
411
+ this._groupedElementIdsCache.set(keyString, info);
412
+ return info;
419
413
  }
420
414
  }
421
- // istanbul ignore next
422
- class AssemblyElementIdsProvider extends RulesetDrivenIdsProvider {
423
- constructor(imodel, rulesetId, assemblyId) {
424
- super(imodel, rulesetId, "AssemblyElementsRequest", [{ className: "BisCore:Element", id: assemblyId }]);
425
- }
426
- async getElementIds() {
427
- return this.getResultIds();
415
+ async function* createInstanceIdsGenerator(imodel, rulesetId, displayType, inputKeys) {
416
+ const res = await Presentation.presentation.getContentInstanceKeys({
417
+ imodel,
418
+ rulesetOrId: rulesetId,
419
+ displayType,
420
+ keys: new KeySet(inputKeys),
421
+ });
422
+ for await (const key of res.items()) {
423
+ yield key.id;
428
424
  }
429
425
  }
430
426
  // istanbul ignore next
431
- class GroupedElementIdsProvider extends RulesetDrivenIdsProvider {
432
- constructor(imodel, rulesetId, groupingNodeKey) {
433
- super(imodel, rulesetId, "AssemblyElementsRequest", [groupingNodeKey]);
434
- }
435
- async getElementIds() {
436
- const elementIds = await this.getResultIds();
437
- let modelId, categoryId;
438
- const query = `SELECT Model.Id AS modelId, Category.Id AS categoryId FROM bis.GeometricElement3d WHERE ECInstanceId = ? LIMIT 1`;
439
- for await (const modelAndCategoryIds of this.imodel.query(query, QueryBinder.from([elementIds[0]]))) {
440
- modelId = modelAndCategoryIds.modelId;
441
- categoryId = modelAndCategoryIds.categoryId;
427
+ class CachingElementIdsContainer {
428
+ constructor(generator) {
429
+ this._generator = generator;
430
+ this._ids = new Array();
431
+ }
432
+ async *getElementIds() {
433
+ for (const id of this._ids) {
434
+ yield id;
435
+ }
436
+ for await (const id of this._generator) {
437
+ this._ids.push(id);
438
+ yield id;
442
439
  }
443
- return { modelId, categoryId, elementIds };
444
440
  }
445
441
  }
442
+ function createAssemblyElementIdsContainer(imodel, rulesetId, assemblyId) {
443
+ return new CachingElementIdsContainer(createInstanceIdsGenerator(imodel, rulesetId, "AssemblyElementsRequest", [{ className: "BisCore:Element", id: assemblyId }]));
444
+ }
445
+ async function createGroupedElementsInfo(imodel, rulesetId, groupingNodeKey) {
446
+ const groupedElementIdsContainer = new CachingElementIdsContainer(createInstanceIdsGenerator(imodel, rulesetId, "AssemblyElementsRequest", [groupingNodeKey]));
447
+ const elementId = await groupedElementIdsContainer.getElementIds().next();
448
+ if (elementId.done)
449
+ throw new Error("Invalid grouping node key");
450
+ let modelId, categoryId;
451
+ const query = `SELECT Model.Id AS modelId, Category.Id AS categoryId FROM bis.GeometricElement3d WHERE ECInstanceId = ? LIMIT 1`;
452
+ for await (const modelAndCategoryIds of imodel.query(query, QueryBinder.from([elementId.value]), { rowFormat: QueryRowFormat.UseJsPropertyNames })) {
453
+ modelId = modelAndCategoryIds.modelId;
454
+ categoryId = modelAndCategoryIds.categoryId;
455
+ break;
456
+ }
457
+ return { modelId, categoryId, elementIds: groupedElementIdsContainer };
458
+ }
446
459
  const createTooltip = (status, tooltipStringId) => {
447
460
  const statusStringId = `UiFramework:modelTree.status.${status}`;
448
461
  const statusString = UiFramework.localization.getLocalizedString(statusStringId);