@itwin/appui-react 3.0.0-extension.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (937) hide show
  1. package/CHANGELOG.md +201 -16
  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 -2
  21. package/lib/cjs/appui-react/backstage/Backstage.d.ts.map +1 -1
  22. package/lib/cjs/appui-react/backstage/Backstage.js.map +1 -1
  23. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts +2 -0
  24. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  25. package/lib/cjs/appui-react/backstage/BackstageComposer.js +26 -8
  26. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  27. package/lib/cjs/appui-react/backstage/BackstageComposerItem.d.ts +2 -2
  28. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +1 -1
  29. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  30. package/lib/cjs/appui-react/backstage/BackstageItemProps.d.ts +3 -3
  31. package/lib/cjs/appui-react/backstage/BackstageItemProps.js +1 -1
  32. package/lib/cjs/appui-react/backstage/BackstageItemProps.js.map +1 -1
  33. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.d.ts +5 -5
  34. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.js +3 -3
  35. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.js.map +1 -1
  36. package/lib/cjs/appui-react/backstage/CommandLaunch.d.ts +2 -0
  37. package/lib/cjs/appui-react/backstage/CommandLaunch.d.ts.map +1 -1
  38. package/lib/cjs/appui-react/backstage/CommandLaunch.js +1 -0
  39. package/lib/cjs/appui-react/backstage/CommandLaunch.js.map +1 -1
  40. package/lib/cjs/appui-react/backstage/FrontstageLaunch.d.ts +4 -0
  41. package/lib/cjs/appui-react/backstage/FrontstageLaunch.d.ts.map +1 -1
  42. package/lib/cjs/appui-react/backstage/FrontstageLaunch.js +5 -6
  43. package/lib/cjs/appui-react/backstage/FrontstageLaunch.js.map +1 -1
  44. package/lib/cjs/appui-react/backstage/Separator.d.ts +1 -0
  45. package/lib/cjs/appui-react/backstage/Separator.d.ts.map +1 -1
  46. package/lib/cjs/appui-react/backstage/Separator.js +3 -2
  47. package/lib/cjs/appui-react/backstage/Separator.js.map +1 -1
  48. package/lib/cjs/appui-react/childwindow/ChildWindowManager.d.ts +1 -1
  49. package/lib/cjs/appui-react/childwindow/ChildWindowManager.d.ts.map +1 -1
  50. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js +4 -5
  51. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  52. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  53. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  54. package/lib/cjs/appui-react/configurableui/state.d.ts +10 -3
  55. package/lib/cjs/appui-react/configurableui/state.d.ts.map +1 -1
  56. package/lib/cjs/appui-react/configurableui/state.js +15 -2
  57. package/lib/cjs/appui-react/configurableui/state.js.map +1 -1
  58. package/lib/cjs/appui-react/content/ContentControl.d.ts +1 -1
  59. package/lib/cjs/appui-react/content/ContentControl.d.ts.map +1 -1
  60. package/lib/cjs/appui-react/content/ContentControl.js +2 -2
  61. package/lib/cjs/appui-react/content/ContentControl.js.map +1 -1
  62. package/lib/cjs/appui-react/content/ContentLayout.d.ts +2 -2
  63. package/lib/cjs/appui-react/content/ContentLayout.d.ts.map +1 -1
  64. package/lib/cjs/appui-react/content/ContentLayout.js +4 -3
  65. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  66. package/lib/cjs/appui-react/content/ContentViewManager.d.ts +1 -1
  67. package/lib/cjs/appui-react/content/ContentViewManager.d.ts.map +1 -1
  68. package/lib/cjs/appui-react/content/ContentViewManager.js +3 -3
  69. package/lib/cjs/appui-react/content/ContentViewManager.js.map +1 -1
  70. package/lib/cjs/appui-react/content/IModelViewport.d.ts +13 -1
  71. package/lib/cjs/appui-react/content/IModelViewport.d.ts.map +1 -1
  72. package/lib/cjs/appui-react/content/IModelViewport.js +18 -5
  73. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  74. package/lib/cjs/appui-react/content/{SavedViewLayout.d.ts → StageContentLayout.d.ts} +11 -11
  75. package/lib/cjs/appui-react/content/StageContentLayout.d.ts.map +1 -0
  76. package/lib/cjs/appui-react/content/{SavedViewLayout.js → StageContentLayout.js} +19 -17
  77. package/lib/cjs/appui-react/content/StageContentLayout.js.map +1 -0
  78. package/lib/cjs/appui-react/content/{SavedView.d.ts → ViewStateHelper.d.ts} +7 -7
  79. package/lib/cjs/appui-react/content/ViewStateHelper.d.ts.map +1 -0
  80. package/lib/cjs/appui-react/content/{SavedView.js → ViewStateHelper.js} +4 -4
  81. package/lib/cjs/appui-react/content/ViewStateHelper.js.map +1 -0
  82. package/lib/cjs/appui-react/content/split-pane/Pane.d.ts +21 -0
  83. package/lib/cjs/appui-react/content/split-pane/Pane.d.ts.map +1 -0
  84. package/lib/cjs/appui-react/content/split-pane/Pane.js +43 -0
  85. package/lib/cjs/appui-react/content/split-pane/Pane.js.map +1 -0
  86. package/lib/cjs/appui-react/content/split-pane/Resizer.d.ts +23 -0
  87. package/lib/cjs/appui-react/content/split-pane/Resizer.d.ts.map +1 -0
  88. package/lib/cjs/appui-react/content/split-pane/Resizer.js +39 -0
  89. package/lib/cjs/appui-react/content/split-pane/Resizer.js.map +1 -0
  90. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts +70 -0
  91. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts.map +1 -0
  92. package/lib/cjs/appui-react/content/split-pane/SplitPane.js +243 -0
  93. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -0
  94. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts +1 -2
  95. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  96. package/lib/cjs/appui-react/cursor/CursorInformation.js +1 -1
  97. package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
  98. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  99. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  100. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +2 -2
  101. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  102. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js +3 -3
  103. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  104. package/lib/cjs/appui-react/dialog/DialogManagerBase.d.ts +1 -1
  105. package/lib/cjs/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
  106. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +2 -2
  107. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  108. package/lib/cjs/appui-react/dialog/StandardMessageBox.d.ts.map +1 -1
  109. package/lib/cjs/appui-react/dialog/StandardMessageBox.js +3 -0
  110. package/lib/cjs/appui-react/dialog/StandardMessageBox.js.map +1 -1
  111. package/lib/cjs/appui-react/dragdrop/ZoneTargets.d.ts.map +1 -1
  112. package/lib/cjs/appui-react/dragdrop/ZoneTargets.js +8 -4
  113. package/lib/cjs/appui-react/dragdrop/ZoneTargets.js.map +1 -1
  114. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts +2 -2
  115. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  116. package/lib/cjs/appui-react/feedback/ElementTooltip.js +4 -2
  117. package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
  118. package/lib/cjs/appui-react/frontstage/Frontstage.d.ts +1 -0
  119. package/lib/cjs/appui-react/frontstage/Frontstage.d.ts.map +1 -1
  120. package/lib/cjs/appui-react/frontstage/Frontstage.js +32 -13
  121. package/lib/cjs/appui-react/frontstage/Frontstage.js.map +1 -1
  122. package/lib/cjs/appui-react/frontstage/FrontstageComposer.d.ts +3 -0
  123. package/lib/cjs/appui-react/frontstage/FrontstageComposer.d.ts.map +1 -1
  124. package/lib/cjs/appui-react/frontstage/FrontstageComposer.js +16 -1
  125. package/lib/cjs/appui-react/frontstage/FrontstageComposer.js.map +1 -1
  126. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +20 -2
  127. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  128. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +164 -3
  129. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  130. package/lib/cjs/appui-react/frontstage/FrontstageManager.d.ts +3 -0
  131. package/lib/cjs/appui-react/frontstage/FrontstageManager.d.ts.map +1 -1
  132. package/lib/cjs/appui-react/frontstage/FrontstageManager.js +11 -1
  133. package/lib/cjs/appui-react/frontstage/FrontstageManager.js.map +1 -1
  134. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.d.ts +6 -0
  135. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.d.ts.map +1 -1
  136. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  137. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  138. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  139. package/lib/cjs/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  140. package/lib/cjs/appui-react/hooks/useActiveViewport.js.map +1 -1
  141. package/lib/cjs/appui-react/hooks/useFrameworkVersion.d.ts +12 -9
  142. package/lib/cjs/appui-react/hooks/useFrameworkVersion.d.ts.map +1 -1
  143. package/lib/cjs/appui-react/hooks/useFrameworkVersion.js +19 -21
  144. package/lib/cjs/appui-react/hooks/useFrameworkVersion.js.map +1 -1
  145. package/lib/cjs/appui-react/hooks/useUiVisibility.d.ts +6 -0
  146. package/lib/cjs/appui-react/hooks/useUiVisibility.d.ts.map +1 -0
  147. package/lib/cjs/appui-react/hooks/useUiVisibility.js +27 -0
  148. package/lib/cjs/appui-react/hooks/useUiVisibility.js.map +1 -0
  149. package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts +1 -1
  150. package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts.map +1 -1
  151. package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.js +6 -7
  152. package/lib/cjs/appui-react/imodel-components/VisibilityTreeEventHandler.js.map +1 -1
  153. package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts +3 -3
  154. package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts.map +1 -1
  155. package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js +3 -2
  156. package/lib/cjs/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js.map +1 -1
  157. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsTree.d.ts +0 -5
  158. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsTree.d.ts.map +1 -1
  159. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsTree.js.map +1 -1
  160. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts +1 -1
  161. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts.map +1 -1
  162. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js +81 -68
  163. package/lib/cjs/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js.map +1 -1
  164. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  165. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  166. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts +2 -1
  167. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
  168. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -1
  169. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  170. package/lib/cjs/appui-react/keyinbrowser/KeyinBrowser.d.ts +5 -5
  171. package/lib/cjs/appui-react/keyinbrowser/KeyinBrowser.d.ts.map +1 -1
  172. package/lib/cjs/appui-react/keyinbrowser/KeyinBrowser.js +3 -2
  173. package/lib/cjs/appui-react/keyinbrowser/KeyinBrowser.js.map +1 -1
  174. package/lib/cjs/appui-react/messages/AppNotificationManager.d.ts +1 -1
  175. package/lib/cjs/appui-react/messages/AppNotificationManager.js +1 -1
  176. package/lib/cjs/appui-react/messages/AppNotificationManager.js.map +1 -1
  177. package/lib/cjs/appui-react/messages/MessageManager.d.ts +1 -2
  178. package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
  179. package/lib/cjs/appui-react/messages/MessageManager.js +15 -9
  180. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  181. package/lib/cjs/appui-react/messages/Pointer.d.ts +2 -2
  182. package/lib/cjs/appui-react/messages/Pointer.d.ts.map +1 -1
  183. package/lib/cjs/appui-react/messages/Pointer.js +4 -3
  184. package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
  185. package/lib/cjs/appui-react/messages/ToastMessage.js +2 -1
  186. package/lib/cjs/appui-react/messages/ToastMessage.js.map +1 -1
  187. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.d.ts +1 -1
  188. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
  189. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js +2 -2
  190. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  191. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.d.ts +2 -1
  192. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
  193. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js +2 -1
  194. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  195. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js +6 -4
  196. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  197. package/lib/cjs/appui-react/pickers/ListPicker.d.ts +3 -0
  198. package/lib/cjs/appui-react/pickers/ListPicker.d.ts.map +1 -1
  199. package/lib/cjs/appui-react/pickers/ListPicker.js +24 -9
  200. package/lib/cjs/appui-react/pickers/ListPicker.js.map +1 -1
  201. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts +1 -1
  202. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  203. package/lib/cjs/appui-react/pickers/ViewSelector.js +9 -9
  204. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  205. package/lib/cjs/appui-react/popup/CardPopup.d.ts +7 -4
  206. package/lib/cjs/appui-react/popup/CardPopup.d.ts.map +1 -1
  207. package/lib/cjs/appui-react/popup/CardPopup.js +3 -2
  208. package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
  209. package/lib/cjs/appui-react/popup/InputEditorPopup.d.ts +3 -2
  210. package/lib/cjs/appui-react/popup/InputEditorPopup.d.ts.map +1 -1
  211. package/lib/cjs/appui-react/popup/InputEditorPopup.js +1 -1
  212. package/lib/cjs/appui-react/popup/InputEditorPopup.js.map +1 -1
  213. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +6 -6
  214. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  215. package/lib/cjs/appui-react/popup/KeyinPalettePopup.d.ts +3 -2
  216. package/lib/cjs/appui-react/popup/KeyinPalettePopup.d.ts.map +1 -1
  217. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js +1 -1
  218. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  219. package/lib/cjs/appui-react/popup/PopupManager.d.ts +10 -10
  220. package/lib/cjs/appui-react/popup/PopupManager.d.ts.map +1 -1
  221. package/lib/cjs/appui-react/popup/PopupManager.js +4 -4
  222. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  223. package/lib/cjs/appui-react/popup/PositionPopup.d.ts +5 -3
  224. package/lib/cjs/appui-react/popup/PositionPopup.d.ts.map +1 -1
  225. package/lib/cjs/appui-react/popup/PositionPopup.js +3 -2
  226. package/lib/cjs/appui-react/popup/PositionPopup.js.map +1 -1
  227. package/lib/cjs/appui-react/popup/ToolSettingsPopup.d.ts +3 -2
  228. package/lib/cjs/appui-react/popup/ToolSettingsPopup.d.ts.map +1 -1
  229. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js +1 -1
  230. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  231. package/lib/cjs/appui-react/popup/ToolbarPopup.d.ts +4 -3
  232. package/lib/cjs/appui-react/popup/ToolbarPopup.d.ts.map +1 -1
  233. package/lib/cjs/appui-react/popup/ToolbarPopup.js +2 -2
  234. package/lib/cjs/appui-react/popup/ToolbarPopup.js.map +1 -1
  235. package/lib/cjs/appui-react/redux/FrameworkState.d.ts +1 -1
  236. package/lib/cjs/appui-react/redux/SessionState.d.ts +0 -6
  237. package/lib/cjs/appui-react/redux/SessionState.d.ts.map +1 -1
  238. package/lib/cjs/appui-react/redux/SessionState.js +0 -8
  239. package/lib/cjs/appui-react/redux/SessionState.js.map +1 -1
  240. package/lib/cjs/appui-react/redux/StateManager.d.ts +1 -1
  241. package/lib/cjs/appui-react/redux/StateManager.js.map +1 -1
  242. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js +7 -7
  243. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  244. package/lib/cjs/appui-react/settings/quantityformatting/UnitSystemSelector.d.ts.map +1 -1
  245. package/lib/cjs/appui-react/settings/quantityformatting/UnitSystemSelector.js +1 -1
  246. package/lib/cjs/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  247. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  248. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js +28 -19
  249. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  250. package/lib/cjs/appui-react/shared/CustomItemDef.js.map +1 -1
  251. package/lib/cjs/appui-react/shared/CustomItemProps.js.map +1 -1
  252. package/lib/cjs/appui-react/shared/GroupItemProps.js.map +1 -1
  253. package/lib/cjs/appui-react/shared/ItemDefBase.d.ts +2 -2
  254. package/lib/cjs/appui-react/shared/ItemDefBase.d.ts.map +1 -1
  255. package/lib/cjs/appui-react/shared/ItemDefBase.js +1 -1
  256. package/lib/cjs/appui-react/shared/ItemDefBase.js.map +1 -1
  257. package/lib/cjs/appui-react/shared/ItemProps.d.ts +2 -2
  258. package/lib/cjs/appui-react/shared/ItemProps.js.map +1 -1
  259. package/lib/cjs/appui-react/shared/ToolItemDef.d.ts +1 -1
  260. package/lib/cjs/appui-react/shared/ToolItemDef.d.ts.map +1 -1
  261. package/lib/cjs/appui-react/shared/ToolItemDef.js +2 -2
  262. package/lib/cjs/appui-react/shared/ToolItemDef.js.map +1 -1
  263. package/lib/cjs/appui-react/stagepanels/FrameworkStagePanel.d.ts.map +1 -1
  264. package/lib/cjs/appui-react/stagepanels/FrameworkStagePanel.js +1 -0
  265. package/lib/cjs/appui-react/stagepanels/FrameworkStagePanel.js.map +1 -1
  266. package/lib/cjs/appui-react/stagepanels/StagePanel.d.ts +2 -2
  267. package/lib/cjs/appui-react/stagepanels/StagePanel.d.ts.map +1 -1
  268. package/lib/cjs/appui-react/stagepanels/StagePanel.js +1 -0
  269. package/lib/cjs/appui-react/stagepanels/StagePanel.js.map +1 -1
  270. package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts +26 -3
  271. package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
  272. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +26 -6
  273. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  274. package/lib/cjs/appui-react/stagepanels/StagePanelHeader.d.ts +2 -2
  275. package/lib/cjs/appui-react/stagepanels/StagePanelHeader.d.ts.map +1 -1
  276. package/lib/cjs/appui-react/stagepanels/StagePanelHeader.js +2 -1
  277. package/lib/cjs/appui-react/stagepanels/StagePanelHeader.js.map +1 -1
  278. package/lib/cjs/appui-react/statusbar/StatusBar.js +2 -1
  279. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  280. package/lib/cjs/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
  281. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js +17 -5
  282. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  283. package/lib/cjs/appui-react/statusbar/StatusBarItemsManager.d.ts +1 -1
  284. package/lib/cjs/appui-react/statusbar/StatusBarItemsManager.js +1 -1
  285. package/lib/cjs/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  286. package/lib/cjs/appui-react/statusfields/Indicator.d.ts +15 -14
  287. package/lib/cjs/appui-react/statusfields/Indicator.d.ts.map +1 -1
  288. package/lib/cjs/appui-react/statusfields/Indicator.js +23 -21
  289. package/lib/cjs/appui-react/statusfields/Indicator.js.map +1 -1
  290. package/lib/cjs/appui-react/statusfields/Indicator.scss +29 -18
  291. package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  292. package/lib/cjs/appui-react/statusfields/MessageCenter.js +2 -1
  293. package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
  294. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts +1 -0
  295. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  296. package/lib/cjs/appui-react/statusfields/SelectionScope.js +6 -4
  297. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  298. package/lib/cjs/appui-react/statusfields/SelectionScope.scss +13 -3
  299. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts +2 -10
  300. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  301. package/lib/cjs/appui-react/statusfields/SnapMode.js +4 -34
  302. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  303. package/lib/cjs/appui-react/statusfields/ViewAttributes.d.ts +0 -6
  304. package/lib/cjs/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
  305. package/lib/cjs/appui-react/statusfields/ViewAttributes.js +1 -25
  306. package/lib/cjs/appui-react/statusfields/ViewAttributes.js.map +1 -1
  307. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +7 -7
  308. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  309. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +13 -12
  310. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  311. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +8 -3
  312. package/lib/cjs/appui-react/syncui/BooleanListener.d.ts +2 -2
  313. package/lib/cjs/appui-react/syncui/BooleanListener.d.ts.map +1 -1
  314. package/lib/cjs/appui-react/syncui/BooleanListener.js +2 -1
  315. package/lib/cjs/appui-react/syncui/BooleanListener.js.map +1 -1
  316. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +8 -18
  317. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  318. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +30 -103
  319. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  320. package/lib/cjs/appui-react/toolbar/ActionButtonItem.js +2 -1
  321. package/lib/cjs/appui-react/toolbar/ActionButtonItem.js.map +1 -1
  322. package/lib/cjs/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  323. package/lib/cjs/appui-react/toolbar/ActionItemButton.js +2 -1
  324. package/lib/cjs/appui-react/toolbar/ActionItemButton.js.map +1 -1
  325. package/lib/cjs/appui-react/toolbar/GroupButtonItem.js +24 -20
  326. package/lib/cjs/appui-react/toolbar/GroupButtonItem.js.map +1 -1
  327. package/lib/cjs/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  328. package/lib/cjs/appui-react/toolbar/GroupItem.js +33 -29
  329. package/lib/cjs/appui-react/toolbar/GroupItem.js.map +1 -1
  330. package/lib/cjs/appui-react/toolbar/ToolButton.js +3 -2
  331. package/lib/cjs/appui-react/toolbar/ToolButton.js.map +1 -1
  332. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  333. package/lib/cjs/appui-react/toolbar/Toolbar.js +3 -2
  334. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  335. package/lib/cjs/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
  336. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js +22 -20
  337. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  338. package/lib/cjs/appui-react/tools/CoreToolDefinitions.d.ts +1 -1
  339. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +4 -4
  340. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  341. package/lib/cjs/appui-react/tools/MarkupToolDefinitions.d.ts +2 -2
  342. package/lib/cjs/appui-react/tools/MarkupToolDefinitions.js +2 -2
  343. package/lib/cjs/appui-react/tools/MarkupToolDefinitions.js.map +1 -1
  344. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts +8 -10
  345. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  346. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js +17 -36
  347. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  348. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts +7 -9
  349. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  350. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +12 -20
  351. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  352. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +7 -9
  353. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  354. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +39 -50
  355. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  356. package/lib/cjs/appui-react/uiprovider/DefaultDialogGridContainer.scss +7 -4
  357. package/lib/{esm/appui-react/uisettings → cjs/appui-react/uistate}/AppUiSettings.d.ts +11 -9
  358. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -0
  359. package/lib/cjs/appui-react/{uisettings → uistate}/AppUiSettings.js +12 -8
  360. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -0
  361. package/lib/cjs/appui-react/uistate/UserSettingsStorage.d.ts +15 -0
  362. package/lib/cjs/appui-react/uistate/UserSettingsStorage.d.ts.map +1 -0
  363. package/lib/cjs/appui-react/uistate/UserSettingsStorage.js +62 -0
  364. package/lib/cjs/appui-react/uistate/UserSettingsStorage.js.map +1 -0
  365. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts +20 -0
  366. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -0
  367. package/lib/cjs/appui-react/uistate/useUiStateStorage.js +38 -0
  368. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -0
  369. package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts +5 -5
  370. package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
  371. package/lib/cjs/appui-react/utils/UiShowHideManager.js +8 -8
  372. package/lib/cjs/appui-react/utils/UiShowHideManager.js.map +1 -1
  373. package/lib/cjs/appui-react/widget-panels/Content.d.ts.map +1 -1
  374. package/lib/cjs/appui-react/widget-panels/Content.js +1 -4
  375. package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
  376. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +98 -8
  377. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  378. package/lib/cjs/appui-react/widget-panels/Frontstage.js +104 -104
  379. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  380. package/lib/cjs/appui-react/widgets/BackstageAppButton.d.ts +22 -0
  381. package/lib/cjs/appui-react/widgets/BackstageAppButton.d.ts.map +1 -0
  382. package/lib/cjs/appui-react/widgets/BackstageAppButton.js +56 -0
  383. package/lib/cjs/appui-react/widgets/BackstageAppButton.js.map +1 -0
  384. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.d.ts.map +1 -1
  385. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js +3 -2
  386. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  387. package/lib/cjs/appui-react/widgets/BasicToolWidget.d.ts +0 -2
  388. package/lib/cjs/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  389. package/lib/cjs/appui-react/widgets/BasicToolWidget.js +6 -18
  390. package/lib/cjs/appui-react/widgets/BasicToolWidget.js.map +1 -1
  391. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.d.ts +9 -0
  392. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.d.ts.map +1 -1
  393. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.js +12 -2
  394. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  395. package/lib/cjs/appui-react/widgets/NavigationWidget.d.ts.map +1 -1
  396. package/lib/cjs/appui-react/widgets/NavigationWidget.js +2 -1
  397. package/lib/cjs/appui-react/widgets/NavigationWidget.js.map +1 -1
  398. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +1 -0
  399. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  400. package/lib/cjs/appui-react/widgets/StableWidgetDef.d.ts +1 -1
  401. package/lib/cjs/appui-react/widgets/StableWidgetDef.js +1 -1
  402. package/lib/cjs/appui-react/widgets/StableWidgetDef.js.map +1 -1
  403. package/lib/cjs/appui-react/widgets/ToolSettingsContent.js +2 -1
  404. package/lib/cjs/appui-react/widgets/ToolSettingsContent.js.map +1 -1
  405. package/lib/cjs/appui-react/widgets/ToolWidget.js +3 -2
  406. package/lib/cjs/appui-react/widgets/ToolWidget.js.map +1 -1
  407. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.d.ts +0 -12
  408. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.d.ts.map +1 -1
  409. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.js +1 -36
  410. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  411. package/lib/cjs/appui-react/widgets/ToolbarWidgetBase.d.ts +1 -0
  412. package/lib/cjs/appui-react/widgets/ToolbarWidgetBase.d.ts.map +1 -1
  413. package/lib/cjs/appui-react/widgets/ToolbarWidgetBase.js +5 -2
  414. package/lib/cjs/appui-react/widgets/ToolbarWidgetBase.js.map +1 -1
  415. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.d.ts +0 -1
  416. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.d.ts.map +1 -1
  417. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.js +3 -3
  418. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  419. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +2 -3
  420. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  421. package/lib/cjs/appui-react/widgets/WidgetDef.js +18 -7
  422. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  423. package/lib/cjs/appui-react/widgets/WidgetHost.d.ts.map +1 -1
  424. package/lib/cjs/appui-react/widgets/WidgetHost.js +1 -0
  425. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  426. package/lib/cjs/appui-react/widgets/WidgetStack.d.ts.map +1 -1
  427. package/lib/cjs/appui-react/widgets/WidgetStack.js +2 -0
  428. package/lib/cjs/appui-react/widgets/WidgetStack.js.map +1 -1
  429. package/lib/cjs/appui-react/zones/FrameworkZone.js.map +1 -1
  430. package/lib/cjs/appui-react/zones/StatusBarZone.js.map +1 -1
  431. package/lib/cjs/appui-react/zones/Zone.d.ts +1 -1
  432. package/lib/cjs/appui-react/zones/Zone.d.ts.map +1 -1
  433. package/lib/cjs/appui-react/zones/Zone.js +2 -1
  434. package/lib/cjs/appui-react/zones/Zone.js.map +1 -1
  435. package/lib/cjs/appui-react/zones/ZoneDef.d.ts +4 -4
  436. package/lib/cjs/appui-react/zones/ZoneDef.d.ts.map +1 -1
  437. package/lib/cjs/appui-react/zones/ZoneDef.js +5 -4
  438. package/lib/cjs/appui-react/zones/ZoneDef.js.map +1 -1
  439. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.d.ts +1 -2
  440. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.d.ts.map +1 -1
  441. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.js +3 -2
  442. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.js.map +1 -1
  443. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsZone.js.map +1 -1
  444. package/lib/cjs/appui-react.d.ts +16 -18
  445. package/lib/cjs/appui-react.d.ts.map +1 -1
  446. package/lib/cjs/appui-react.js +16 -18
  447. package/lib/cjs/appui-react.js.map +1 -1
  448. package/lib/esm/appui-react/UiFramework.d.ts +37 -22
  449. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  450. package/lib/esm/appui-react/UiFramework.js +52 -37
  451. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  452. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts +3 -3
  453. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  454. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +3 -3
  455. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  456. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js +1 -1
  457. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  458. package/lib/esm/appui-react/accudraw/Calculator.js +1 -1
  459. package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
  460. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts +4 -4
  461. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
  462. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js +6 -5
  463. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  464. package/lib/esm/appui-react/backstage/Backstage.d.ts +0 -2
  465. package/lib/esm/appui-react/backstage/Backstage.d.ts.map +1 -1
  466. package/lib/esm/appui-react/backstage/Backstage.js.map +1 -1
  467. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts +2 -0
  468. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  469. package/lib/esm/appui-react/backstage/BackstageComposer.js +27 -9
  470. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  471. package/lib/esm/appui-react/backstage/BackstageComposerItem.d.ts +2 -2
  472. package/lib/esm/appui-react/backstage/BackstageComposerItem.js +1 -1
  473. package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  474. package/lib/esm/appui-react/backstage/BackstageItemProps.d.ts +3 -3
  475. package/lib/esm/appui-react/backstage/BackstageItemProps.js +1 -1
  476. package/lib/esm/appui-react/backstage/BackstageItemProps.js.map +1 -1
  477. package/lib/esm/appui-react/backstage/BackstageItemUtilities.d.ts +5 -5
  478. package/lib/esm/appui-react/backstage/BackstageItemUtilities.js +3 -3
  479. package/lib/esm/appui-react/backstage/BackstageItemUtilities.js.map +1 -1
  480. package/lib/esm/appui-react/backstage/CommandLaunch.d.ts +2 -0
  481. package/lib/esm/appui-react/backstage/CommandLaunch.d.ts.map +1 -1
  482. package/lib/esm/appui-react/backstage/CommandLaunch.js +1 -0
  483. package/lib/esm/appui-react/backstage/CommandLaunch.js.map +1 -1
  484. package/lib/esm/appui-react/backstage/FrontstageLaunch.d.ts +4 -0
  485. package/lib/esm/appui-react/backstage/FrontstageLaunch.d.ts.map +1 -1
  486. package/lib/esm/appui-react/backstage/FrontstageLaunch.js +5 -6
  487. package/lib/esm/appui-react/backstage/FrontstageLaunch.js.map +1 -1
  488. package/lib/esm/appui-react/backstage/Separator.d.ts +1 -0
  489. package/lib/esm/appui-react/backstage/Separator.d.ts.map +1 -1
  490. package/lib/esm/appui-react/backstage/Separator.js +3 -2
  491. package/lib/esm/appui-react/backstage/Separator.js.map +1 -1
  492. package/lib/esm/appui-react/childwindow/ChildWindowManager.d.ts +1 -1
  493. package/lib/esm/appui-react/childwindow/ChildWindowManager.d.ts.map +1 -1
  494. package/lib/esm/appui-react/childwindow/ChildWindowManager.js +4 -5
  495. package/lib/esm/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  496. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  497. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  498. package/lib/esm/appui-react/configurableui/state.d.ts +10 -3
  499. package/lib/esm/appui-react/configurableui/state.d.ts.map +1 -1
  500. package/lib/esm/appui-react/configurableui/state.js +15 -2
  501. package/lib/esm/appui-react/configurableui/state.js.map +1 -1
  502. package/lib/esm/appui-react/content/ContentControl.d.ts +1 -1
  503. package/lib/esm/appui-react/content/ContentControl.d.ts.map +1 -1
  504. package/lib/esm/appui-react/content/ContentControl.js +1 -1
  505. package/lib/esm/appui-react/content/ContentControl.js.map +1 -1
  506. package/lib/esm/appui-react/content/ContentLayout.d.ts +2 -2
  507. package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
  508. package/lib/esm/appui-react/content/ContentLayout.js +3 -2
  509. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  510. package/lib/esm/appui-react/content/ContentViewManager.d.ts +1 -1
  511. package/lib/esm/appui-react/content/ContentViewManager.d.ts.map +1 -1
  512. package/lib/esm/appui-react/content/ContentViewManager.js +1 -1
  513. package/lib/esm/appui-react/content/ContentViewManager.js.map +1 -1
  514. package/lib/esm/appui-react/content/IModelViewport.d.ts +13 -1
  515. package/lib/esm/appui-react/content/IModelViewport.d.ts.map +1 -1
  516. package/lib/esm/appui-react/content/IModelViewport.js +16 -4
  517. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  518. package/lib/esm/appui-react/content/{SavedViewLayout.d.ts → StageContentLayout.d.ts} +11 -11
  519. package/lib/esm/appui-react/content/StageContentLayout.d.ts.map +1 -0
  520. package/lib/esm/appui-react/content/{SavedViewLayout.js → StageContentLayout.js} +17 -15
  521. package/lib/esm/appui-react/content/StageContentLayout.js.map +1 -0
  522. package/lib/esm/appui-react/content/{SavedView.d.ts → ViewStateHelper.d.ts} +7 -7
  523. package/lib/esm/appui-react/content/ViewStateHelper.d.ts.map +1 -0
  524. package/lib/esm/appui-react/content/{SavedView.js → ViewStateHelper.js} +2 -2
  525. package/lib/esm/appui-react/content/ViewStateHelper.js.map +1 -0
  526. package/lib/esm/appui-react/content/split-pane/Pane.d.ts +21 -0
  527. package/lib/esm/appui-react/content/split-pane/Pane.d.ts.map +1 -0
  528. package/lib/esm/appui-react/content/split-pane/Pane.js +39 -0
  529. package/lib/esm/appui-react/content/split-pane/Pane.js.map +1 -0
  530. package/lib/esm/appui-react/content/split-pane/Resizer.d.ts +23 -0
  531. package/lib/esm/appui-react/content/split-pane/Resizer.d.ts.map +1 -0
  532. package/lib/esm/appui-react/content/split-pane/Resizer.js +35 -0
  533. package/lib/esm/appui-react/content/split-pane/Resizer.js.map +1 -0
  534. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts +70 -0
  535. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts.map +1 -0
  536. package/lib/esm/appui-react/content/split-pane/SplitPane.js +239 -0
  537. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -0
  538. package/lib/esm/appui-react/cursor/CursorInformation.d.ts +1 -2
  539. package/lib/esm/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  540. package/lib/esm/appui-react/cursor/CursorInformation.js +2 -2
  541. package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
  542. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  543. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  544. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +2 -2
  545. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  546. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js +2 -2
  547. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  548. package/lib/esm/appui-react/dialog/DialogManagerBase.d.ts +1 -1
  549. package/lib/esm/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
  550. package/lib/esm/appui-react/dialog/DialogManagerBase.js +1 -1
  551. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  552. package/lib/esm/appui-react/dialog/StandardMessageBox.d.ts.map +1 -1
  553. package/lib/esm/appui-react/dialog/StandardMessageBox.js +3 -0
  554. package/lib/esm/appui-react/dialog/StandardMessageBox.js.map +1 -1
  555. package/lib/esm/appui-react/dragdrop/ZoneTargets.d.ts.map +1 -1
  556. package/lib/esm/appui-react/dragdrop/ZoneTargets.js +8 -4
  557. package/lib/esm/appui-react/dragdrop/ZoneTargets.js.map +1 -1
  558. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts +2 -2
  559. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  560. package/lib/esm/appui-react/feedback/ElementTooltip.js +4 -2
  561. package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
  562. package/lib/esm/appui-react/frontstage/Frontstage.d.ts +1 -0
  563. package/lib/esm/appui-react/frontstage/Frontstage.d.ts.map +1 -1
  564. package/lib/esm/appui-react/frontstage/Frontstage.js +32 -13
  565. package/lib/esm/appui-react/frontstage/Frontstage.js.map +1 -1
  566. package/lib/esm/appui-react/frontstage/FrontstageComposer.d.ts +3 -0
  567. package/lib/esm/appui-react/frontstage/FrontstageComposer.d.ts.map +1 -1
  568. package/lib/esm/appui-react/frontstage/FrontstageComposer.js +16 -1
  569. package/lib/esm/appui-react/frontstage/FrontstageComposer.js.map +1 -1
  570. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +20 -2
  571. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  572. package/lib/esm/appui-react/frontstage/FrontstageDef.js +166 -5
  573. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  574. package/lib/esm/appui-react/frontstage/FrontstageManager.d.ts +3 -0
  575. package/lib/esm/appui-react/frontstage/FrontstageManager.d.ts.map +1 -1
  576. package/lib/esm/appui-react/frontstage/FrontstageManager.js +11 -1
  577. package/lib/esm/appui-react/frontstage/FrontstageManager.js.map +1 -1
  578. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.d.ts +6 -0
  579. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.d.ts.map +1 -1
  580. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  581. package/lib/esm/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  582. package/lib/esm/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  583. package/lib/esm/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  584. package/lib/esm/appui-react/hooks/useActiveViewport.js.map +1 -1
  585. package/lib/esm/appui-react/hooks/useFrameworkVersion.d.ts +12 -9
  586. package/lib/esm/appui-react/hooks/useFrameworkVersion.d.ts.map +1 -1
  587. package/lib/esm/appui-react/hooks/useFrameworkVersion.js +19 -21
  588. package/lib/esm/appui-react/hooks/useFrameworkVersion.js.map +1 -1
  589. package/lib/esm/appui-react/hooks/useUiVisibility.d.ts +6 -0
  590. package/lib/esm/appui-react/hooks/useUiVisibility.d.ts.map +1 -0
  591. package/lib/esm/appui-react/hooks/useUiVisibility.js +23 -0
  592. package/lib/esm/appui-react/hooks/useUiVisibility.js.map +1 -0
  593. package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts +1 -1
  594. package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.d.ts.map +1 -1
  595. package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.js +6 -7
  596. package/lib/esm/appui-react/imodel-components/VisibilityTreeEventHandler.js.map +1 -1
  597. package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts +3 -3
  598. package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.d.ts.map +1 -1
  599. package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js +3 -2
  600. package/lib/esm/appui-react/imodel-components/category-tree/CategoryVisibilityHandler.js.map +1 -1
  601. package/lib/esm/appui-react/imodel-components/models-tree/ModelsTree.d.ts +0 -5
  602. package/lib/esm/appui-react/imodel-components/models-tree/ModelsTree.d.ts.map +1 -1
  603. package/lib/esm/appui-react/imodel-components/models-tree/ModelsTree.js.map +1 -1
  604. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts +1 -1
  605. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.d.ts.map +1 -1
  606. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js +83 -70
  607. package/lib/esm/appui-react/imodel-components/models-tree/ModelsVisibilityHandler.js.map +1 -1
  608. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  609. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  610. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts +2 -1
  611. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
  612. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +2 -2
  613. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  614. package/lib/esm/appui-react/keyinbrowser/KeyinBrowser.d.ts +5 -5
  615. package/lib/esm/appui-react/keyinbrowser/KeyinBrowser.d.ts.map +1 -1
  616. package/lib/esm/appui-react/keyinbrowser/KeyinBrowser.js +3 -2
  617. package/lib/esm/appui-react/keyinbrowser/KeyinBrowser.js.map +1 -1
  618. package/lib/esm/appui-react/messages/AppNotificationManager.d.ts +1 -1
  619. package/lib/esm/appui-react/messages/AppNotificationManager.js +1 -1
  620. package/lib/esm/appui-react/messages/AppNotificationManager.js.map +1 -1
  621. package/lib/esm/appui-react/messages/MessageManager.d.ts +1 -2
  622. package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
  623. package/lib/esm/appui-react/messages/MessageManager.js +9 -3
  624. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  625. package/lib/esm/appui-react/messages/Pointer.d.ts +2 -2
  626. package/lib/esm/appui-react/messages/Pointer.d.ts.map +1 -1
  627. package/lib/esm/appui-react/messages/Pointer.js +4 -3
  628. package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
  629. package/lib/esm/appui-react/messages/ToastMessage.js +2 -1
  630. package/lib/esm/appui-react/messages/ToastMessage.js.map +1 -1
  631. package/lib/esm/appui-react/navigationaids/NavigationAidControl.d.ts +1 -1
  632. package/lib/esm/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
  633. package/lib/esm/appui-react/navigationaids/NavigationAidControl.js +1 -1
  634. package/lib/esm/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  635. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.d.ts +2 -1
  636. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
  637. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js +2 -1
  638. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  639. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js +6 -4
  640. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  641. package/lib/esm/appui-react/pickers/ListPicker.d.ts +3 -0
  642. package/lib/esm/appui-react/pickers/ListPicker.d.ts.map +1 -1
  643. package/lib/esm/appui-react/pickers/ListPicker.js +23 -9
  644. package/lib/esm/appui-react/pickers/ListPicker.js.map +1 -1
  645. package/lib/esm/appui-react/pickers/ViewSelector.d.ts +1 -1
  646. package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  647. package/lib/esm/appui-react/pickers/ViewSelector.js +7 -7
  648. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  649. package/lib/esm/appui-react/popup/CardPopup.d.ts +7 -4
  650. package/lib/esm/appui-react/popup/CardPopup.d.ts.map +1 -1
  651. package/lib/esm/appui-react/popup/CardPopup.js +3 -2
  652. package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
  653. package/lib/esm/appui-react/popup/InputEditorPopup.d.ts +3 -2
  654. package/lib/esm/appui-react/popup/InputEditorPopup.d.ts.map +1 -1
  655. package/lib/esm/appui-react/popup/InputEditorPopup.js +1 -1
  656. package/lib/esm/appui-react/popup/InputEditorPopup.js.map +1 -1
  657. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +7 -7
  658. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  659. package/lib/esm/appui-react/popup/KeyinPalettePopup.d.ts +3 -2
  660. package/lib/esm/appui-react/popup/KeyinPalettePopup.d.ts.map +1 -1
  661. package/lib/esm/appui-react/popup/KeyinPalettePopup.js +1 -1
  662. package/lib/esm/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  663. package/lib/esm/appui-react/popup/PopupManager.d.ts +10 -10
  664. package/lib/esm/appui-react/popup/PopupManager.d.ts.map +1 -1
  665. package/lib/esm/appui-react/popup/PopupManager.js +5 -5
  666. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  667. package/lib/esm/appui-react/popup/PositionPopup.d.ts +5 -3
  668. package/lib/esm/appui-react/popup/PositionPopup.d.ts.map +1 -1
  669. package/lib/esm/appui-react/popup/PositionPopup.js +3 -2
  670. package/lib/esm/appui-react/popup/PositionPopup.js.map +1 -1
  671. package/lib/esm/appui-react/popup/ToolSettingsPopup.d.ts +3 -2
  672. package/lib/esm/appui-react/popup/ToolSettingsPopup.d.ts.map +1 -1
  673. package/lib/esm/appui-react/popup/ToolSettingsPopup.js +1 -1
  674. package/lib/esm/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  675. package/lib/esm/appui-react/popup/ToolbarPopup.d.ts +4 -3
  676. package/lib/esm/appui-react/popup/ToolbarPopup.d.ts.map +1 -1
  677. package/lib/esm/appui-react/popup/ToolbarPopup.js +2 -2
  678. package/lib/esm/appui-react/popup/ToolbarPopup.js.map +1 -1
  679. package/lib/esm/appui-react/redux/FrameworkState.d.ts +1 -1
  680. package/lib/esm/appui-react/redux/SessionState.d.ts +0 -6
  681. package/lib/esm/appui-react/redux/SessionState.d.ts.map +1 -1
  682. package/lib/esm/appui-react/redux/SessionState.js +0 -8
  683. package/lib/esm/appui-react/redux/SessionState.js.map +1 -1
  684. package/lib/esm/appui-react/redux/StateManager.d.ts +1 -1
  685. package/lib/esm/appui-react/redux/StateManager.js.map +1 -1
  686. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js +7 -7
  687. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  688. package/lib/esm/appui-react/settings/quantityformatting/UnitSystemSelector.d.ts.map +1 -1
  689. package/lib/esm/appui-react/settings/quantityformatting/UnitSystemSelector.js +1 -1
  690. package/lib/esm/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  691. package/lib/esm/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  692. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js +28 -19
  693. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  694. package/lib/esm/appui-react/shared/CustomItemDef.js.map +1 -1
  695. package/lib/esm/appui-react/shared/CustomItemProps.js.map +1 -1
  696. package/lib/esm/appui-react/shared/GroupItemProps.js.map +1 -1
  697. package/lib/esm/appui-react/shared/ItemDefBase.d.ts +2 -2
  698. package/lib/esm/appui-react/shared/ItemDefBase.d.ts.map +1 -1
  699. package/lib/esm/appui-react/shared/ItemDefBase.js +1 -1
  700. package/lib/esm/appui-react/shared/ItemDefBase.js.map +1 -1
  701. package/lib/esm/appui-react/shared/ItemProps.d.ts +2 -2
  702. package/lib/esm/appui-react/shared/ItemProps.js.map +1 -1
  703. package/lib/esm/appui-react/shared/ToolItemDef.d.ts +1 -1
  704. package/lib/esm/appui-react/shared/ToolItemDef.d.ts.map +1 -1
  705. package/lib/esm/appui-react/shared/ToolItemDef.js +2 -2
  706. package/lib/esm/appui-react/shared/ToolItemDef.js.map +1 -1
  707. package/lib/esm/appui-react/stagepanels/FrameworkStagePanel.d.ts.map +1 -1
  708. package/lib/esm/appui-react/stagepanels/FrameworkStagePanel.js +1 -0
  709. package/lib/esm/appui-react/stagepanels/FrameworkStagePanel.js.map +1 -1
  710. package/lib/esm/appui-react/stagepanels/StagePanel.d.ts +2 -2
  711. package/lib/esm/appui-react/stagepanels/StagePanel.d.ts.map +1 -1
  712. package/lib/esm/appui-react/stagepanels/StagePanel.js +1 -0
  713. package/lib/esm/appui-react/stagepanels/StagePanel.js.map +1 -1
  714. package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts +26 -3
  715. package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
  716. package/lib/esm/appui-react/stagepanels/StagePanelDef.js +25 -5
  717. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  718. package/lib/esm/appui-react/stagepanels/StagePanelHeader.d.ts +2 -2
  719. package/lib/esm/appui-react/stagepanels/StagePanelHeader.d.ts.map +1 -1
  720. package/lib/esm/appui-react/stagepanels/StagePanelHeader.js +2 -1
  721. package/lib/esm/appui-react/stagepanels/StagePanelHeader.js.map +1 -1
  722. package/lib/esm/appui-react/statusbar/StatusBar.js +2 -1
  723. package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
  724. package/lib/esm/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
  725. package/lib/esm/appui-react/statusbar/StatusBarComposer.js +17 -5
  726. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  727. package/lib/esm/appui-react/statusbar/StatusBarItemsManager.d.ts +1 -1
  728. package/lib/esm/appui-react/statusbar/StatusBarItemsManager.js +1 -1
  729. package/lib/esm/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  730. package/lib/esm/appui-react/statusfields/Indicator.d.ts +15 -14
  731. package/lib/esm/appui-react/statusfields/Indicator.d.ts.map +1 -1
  732. package/lib/esm/appui-react/statusfields/Indicator.js +23 -21
  733. package/lib/esm/appui-react/statusfields/Indicator.js.map +1 -1
  734. package/lib/esm/appui-react/statusfields/Indicator.scss +29 -18
  735. package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  736. package/lib/esm/appui-react/statusfields/MessageCenter.js +2 -1
  737. package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
  738. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts +1 -0
  739. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  740. package/lib/esm/appui-react/statusfields/SelectionScope.js +6 -4
  741. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  742. package/lib/esm/appui-react/statusfields/SelectionScope.scss +13 -3
  743. package/lib/esm/appui-react/statusfields/SnapMode.d.ts +2 -10
  744. package/lib/esm/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  745. package/lib/esm/appui-react/statusfields/SnapMode.js +5 -35
  746. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  747. package/lib/esm/appui-react/statusfields/ViewAttributes.d.ts +0 -6
  748. package/lib/esm/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
  749. package/lib/esm/appui-react/statusfields/ViewAttributes.js +2 -26
  750. package/lib/esm/appui-react/statusfields/ViewAttributes.js.map +1 -1
  751. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +7 -7
  752. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  753. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +14 -13
  754. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  755. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +8 -3
  756. package/lib/esm/appui-react/syncui/BooleanListener.d.ts +2 -2
  757. package/lib/esm/appui-react/syncui/BooleanListener.d.ts.map +1 -1
  758. package/lib/esm/appui-react/syncui/BooleanListener.js +2 -1
  759. package/lib/esm/appui-react/syncui/BooleanListener.js.map +1 -1
  760. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +8 -18
  761. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  762. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +29 -101
  763. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  764. package/lib/esm/appui-react/toolbar/ActionButtonItem.js +2 -1
  765. package/lib/esm/appui-react/toolbar/ActionButtonItem.js.map +1 -1
  766. package/lib/esm/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  767. package/lib/esm/appui-react/toolbar/ActionItemButton.js +2 -1
  768. package/lib/esm/appui-react/toolbar/ActionItemButton.js.map +1 -1
  769. package/lib/esm/appui-react/toolbar/GroupButtonItem.js +24 -20
  770. package/lib/esm/appui-react/toolbar/GroupButtonItem.js.map +1 -1
  771. package/lib/esm/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  772. package/lib/esm/appui-react/toolbar/GroupItem.js +33 -29
  773. package/lib/esm/appui-react/toolbar/GroupItem.js.map +1 -1
  774. package/lib/esm/appui-react/toolbar/ToolButton.js +3 -2
  775. package/lib/esm/appui-react/toolbar/ToolButton.js.map +1 -1
  776. package/lib/esm/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  777. package/lib/esm/appui-react/toolbar/Toolbar.js +3 -2
  778. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  779. package/lib/esm/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
  780. package/lib/esm/appui-react/toolbar/ToolbarComposer.js +22 -20
  781. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  782. package/lib/esm/appui-react/tools/CoreToolDefinitions.d.ts +1 -1
  783. package/lib/esm/appui-react/tools/CoreToolDefinitions.js +4 -4
  784. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  785. package/lib/esm/appui-react/tools/MarkupToolDefinitions.d.ts +2 -2
  786. package/lib/esm/appui-react/tools/MarkupToolDefinitions.js +2 -2
  787. package/lib/esm/appui-react/tools/MarkupToolDefinitions.js.map +1 -1
  788. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts +8 -10
  789. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  790. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js +18 -37
  791. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  792. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts +7 -9
  793. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  794. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +13 -21
  795. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  796. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +7 -9
  797. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  798. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +40 -51
  799. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  800. package/lib/esm/appui-react/uiprovider/DefaultDialogGridContainer.scss +7 -4
  801. package/lib/{cjs/appui-react/uisettings → esm/appui-react/uistate}/AppUiSettings.d.ts +11 -9
  802. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -0
  803. package/lib/esm/appui-react/{uisettings → uistate}/AppUiSettings.js +13 -9
  804. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -0
  805. package/lib/esm/appui-react/uistate/UserSettingsStorage.d.ts +15 -0
  806. package/lib/esm/appui-react/uistate/UserSettingsStorage.d.ts.map +1 -0
  807. package/lib/esm/appui-react/uistate/UserSettingsStorage.js +58 -0
  808. package/lib/esm/appui-react/uistate/UserSettingsStorage.js.map +1 -0
  809. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts +20 -0
  810. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -0
  811. package/lib/esm/appui-react/uistate/useUiStateStorage.js +33 -0
  812. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -0
  813. package/lib/esm/appui-react/utils/UiShowHideManager.d.ts +5 -5
  814. package/lib/esm/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
  815. package/lib/esm/appui-react/utils/UiShowHideManager.js +9 -9
  816. package/lib/esm/appui-react/utils/UiShowHideManager.js.map +1 -1
  817. package/lib/esm/appui-react/widget-panels/Content.d.ts.map +1 -1
  818. package/lib/esm/appui-react/widget-panels/Content.js +1 -4
  819. package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
  820. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +98 -8
  821. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  822. package/lib/esm/appui-react/widget-panels/Frontstage.js +104 -103
  823. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  824. package/lib/esm/appui-react/widgets/BackstageAppButton.d.ts +22 -0
  825. package/lib/esm/appui-react/widgets/BackstageAppButton.d.ts.map +1 -0
  826. package/lib/esm/appui-react/widgets/BackstageAppButton.js +52 -0
  827. package/lib/esm/appui-react/widgets/BackstageAppButton.js.map +1 -0
  828. package/lib/esm/appui-react/widgets/BasicNavigationWidget.d.ts.map +1 -1
  829. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js +2 -1
  830. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  831. package/lib/esm/appui-react/widgets/BasicToolWidget.d.ts +0 -2
  832. package/lib/esm/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  833. package/lib/esm/appui-react/widgets/BasicToolWidget.js +4 -15
  834. package/lib/esm/appui-react/widgets/BasicToolWidget.js.map +1 -1
  835. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.d.ts +9 -0
  836. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.d.ts.map +1 -1
  837. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.js +11 -1
  838. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  839. package/lib/esm/appui-react/widgets/NavigationWidget.d.ts.map +1 -1
  840. package/lib/esm/appui-react/widgets/NavigationWidget.js +2 -1
  841. package/lib/esm/appui-react/widgets/NavigationWidget.js.map +1 -1
  842. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +1 -0
  843. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  844. package/lib/esm/appui-react/widgets/StableWidgetDef.d.ts +1 -1
  845. package/lib/esm/appui-react/widgets/StableWidgetDef.js +1 -1
  846. package/lib/esm/appui-react/widgets/StableWidgetDef.js.map +1 -1
  847. package/lib/esm/appui-react/widgets/ToolSettingsContent.js +2 -1
  848. package/lib/esm/appui-react/widgets/ToolSettingsContent.js.map +1 -1
  849. package/lib/esm/appui-react/widgets/ToolWidget.js +3 -2
  850. package/lib/esm/appui-react/widgets/ToolWidget.js.map +1 -1
  851. package/lib/esm/appui-react/widgets/ToolWidgetComposer.d.ts +0 -12
  852. package/lib/esm/appui-react/widgets/ToolWidgetComposer.d.ts.map +1 -1
  853. package/lib/esm/appui-react/widgets/ToolWidgetComposer.js +2 -36
  854. package/lib/esm/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  855. package/lib/esm/appui-react/widgets/ToolbarWidgetBase.d.ts +1 -0
  856. package/lib/esm/appui-react/widgets/ToolbarWidgetBase.d.ts.map +1 -1
  857. package/lib/esm/appui-react/widgets/ToolbarWidgetBase.js +5 -2
  858. package/lib/esm/appui-react/widgets/ToolbarWidgetBase.js.map +1 -1
  859. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.d.ts +0 -1
  860. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.d.ts.map +1 -1
  861. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.js +2 -2
  862. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  863. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +2 -3
  864. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  865. package/lib/esm/appui-react/widgets/WidgetDef.js +18 -7
  866. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  867. package/lib/esm/appui-react/widgets/WidgetHost.d.ts.map +1 -1
  868. package/lib/esm/appui-react/widgets/WidgetHost.js +1 -0
  869. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  870. package/lib/esm/appui-react/widgets/WidgetStack.d.ts.map +1 -1
  871. package/lib/esm/appui-react/widgets/WidgetStack.js +2 -0
  872. package/lib/esm/appui-react/widgets/WidgetStack.js.map +1 -1
  873. package/lib/esm/appui-react/zones/FrameworkZone.js.map +1 -1
  874. package/lib/esm/appui-react/zones/StatusBarZone.js.map +1 -1
  875. package/lib/esm/appui-react/zones/Zone.d.ts +1 -1
  876. package/lib/esm/appui-react/zones/Zone.d.ts.map +1 -1
  877. package/lib/esm/appui-react/zones/Zone.js +2 -1
  878. package/lib/esm/appui-react/zones/Zone.js.map +1 -1
  879. package/lib/esm/appui-react/zones/ZoneDef.d.ts +4 -4
  880. package/lib/esm/appui-react/zones/ZoneDef.d.ts.map +1 -1
  881. package/lib/esm/appui-react/zones/ZoneDef.js +5 -4
  882. package/lib/esm/appui-react/zones/ZoneDef.js.map +1 -1
  883. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.d.ts +1 -2
  884. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.d.ts.map +1 -1
  885. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.js +2 -1
  886. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.js.map +1 -1
  887. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsZone.js.map +1 -1
  888. package/lib/esm/appui-react.d.ts +16 -18
  889. package/lib/esm/appui-react.d.ts.map +1 -1
  890. package/lib/esm/appui-react.js +16 -18
  891. package/lib/esm/appui-react.js.map +1 -1
  892. package/lib/public/locales/en/UiFramework.json +9 -2
  893. package/package.json +45 -53
  894. package/lib/cjs/appui-react/UserInfo.d.ts +0 -58
  895. package/lib/cjs/appui-react/UserInfo.d.ts.map +0 -1
  896. package/lib/cjs/appui-react/UserInfo.js +0 -34
  897. package/lib/cjs/appui-react/UserInfo.js.map +0 -1
  898. package/lib/cjs/appui-react/content/SavedView.d.ts.map +0 -1
  899. package/lib/cjs/appui-react/content/SavedView.js.map +0 -1
  900. package/lib/cjs/appui-react/content/SavedViewLayout.d.ts.map +0 -1
  901. package/lib/cjs/appui-react/content/SavedViewLayout.js.map +0 -1
  902. package/lib/cjs/appui-react/stagepanels/StagePanelEnums.d.ts +0 -25
  903. package/lib/cjs/appui-react/stagepanels/StagePanelEnums.d.ts.map +0 -1
  904. package/lib/cjs/appui-react/stagepanels/StagePanelEnums.js +0 -34
  905. package/lib/cjs/appui-react/stagepanels/StagePanelEnums.js.map +0 -1
  906. package/lib/cjs/appui-react/uisettings/AppUiSettings.d.ts.map +0 -1
  907. package/lib/cjs/appui-react/uisettings/AppUiSettings.js.map +0 -1
  908. package/lib/cjs/appui-react/uisettings/UserSettingsStorage.d.ts +0 -23
  909. package/lib/cjs/appui-react/uisettings/UserSettingsStorage.d.ts.map +0 -1
  910. package/lib/cjs/appui-react/uisettings/UserSettingsStorage.js +0 -74
  911. package/lib/cjs/appui-react/uisettings/UserSettingsStorage.js.map +0 -1
  912. package/lib/cjs/appui-react/uisettings/useUiSettings.d.ts +0 -21
  913. package/lib/cjs/appui-react/uisettings/useUiSettings.d.ts.map +0 -1
  914. package/lib/cjs/appui-react/uisettings/useUiSettings.js +0 -28
  915. package/lib/cjs/appui-react/uisettings/useUiSettings.js.map +0 -1
  916. package/lib/esm/appui-react/UserInfo.d.ts +0 -58
  917. package/lib/esm/appui-react/UserInfo.d.ts.map +0 -1
  918. package/lib/esm/appui-react/UserInfo.js +0 -30
  919. package/lib/esm/appui-react/UserInfo.js.map +0 -1
  920. package/lib/esm/appui-react/content/SavedView.d.ts.map +0 -1
  921. package/lib/esm/appui-react/content/SavedView.js.map +0 -1
  922. package/lib/esm/appui-react/content/SavedViewLayout.d.ts.map +0 -1
  923. package/lib/esm/appui-react/content/SavedViewLayout.js.map +0 -1
  924. package/lib/esm/appui-react/stagepanels/StagePanelEnums.d.ts +0 -25
  925. package/lib/esm/appui-react/stagepanels/StagePanelEnums.d.ts.map +0 -1
  926. package/lib/esm/appui-react/stagepanels/StagePanelEnums.js +0 -31
  927. package/lib/esm/appui-react/stagepanels/StagePanelEnums.js.map +0 -1
  928. package/lib/esm/appui-react/uisettings/AppUiSettings.d.ts.map +0 -1
  929. package/lib/esm/appui-react/uisettings/AppUiSettings.js.map +0 -1
  930. package/lib/esm/appui-react/uisettings/UserSettingsStorage.d.ts +0 -23
  931. package/lib/esm/appui-react/uisettings/UserSettingsStorage.d.ts.map +0 -1
  932. package/lib/esm/appui-react/uisettings/UserSettingsStorage.js +0 -68
  933. package/lib/esm/appui-react/uisettings/UserSettingsStorage.js.map +0 -1
  934. package/lib/esm/appui-react/uisettings/useUiSettings.d.ts +0 -21
  935. package/lib/esm/appui-react/uisettings/useUiSettings.d.ts.map +0 -1
  936. package/lib/esm/appui-react/uisettings/useUiSettings.js +0 -23
  937. 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":"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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 { 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":"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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 { 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;AAE9C,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"}
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import * as React from "react";
9
9
  import { BeEvent } from "@itwin/core-bentley";
10
+ import { QueryRowFormat } from "@itwin/core-common";
10
11
  import { PerModelCategoryVisibility } from "@itwin/core-frontend";
11
12
  import { NodeKey } from "@itwin/presentation-common";
12
13
  import { useAsyncValue } from "@itwin/components-react";
@@ -33,7 +34,7 @@ export async function loadCategoriesFromViewport(iModel, vp) {
33
34
  const categories = [];
34
35
  // istanbul ignore else
35
36
  if (iModel) {
36
- const rowIterator = iModel.query(ecsql2);
37
+ const rowIterator = iModel.query(ecsql2, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });
37
38
  // istanbul ignore next
38
39
  for await (const row of rowIterator) {
39
40
  const subCategoryIds = iModel.subcategories.getSubCategories(row.id);
@@ -42,7 +43,7 @@ export async function loadCategoriesFromViewport(iModel, vp) {
42
43
  }
43
44
  return categories;
44
45
  }
45
- /** @internal */
46
+ /** @alpha */
46
47
  export class CategoryVisibilityHandler {
47
48
  constructor(params) {
48
49
  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 { QueryRowFormat } from \"@itwin/core-common\";\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, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames });\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":"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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 * 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);