@itwin/appui-react 4.16.5 → 4.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/lib/cjs/appui-react/UiFramework.d.ts +5 -0
  3. package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
  4. package/lib/cjs/appui-react/UiFramework.js +5 -0
  5. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  6. package/lib/cjs/appui-react/accudraw/AccuDrawDialog.d.ts +1 -0
  7. package/lib/cjs/appui-react/accudraw/AccuDrawDialog.d.ts.map +1 -1
  8. package/lib/cjs/appui-react/accudraw/AccuDrawDialog.js +1 -0
  9. package/lib/cjs/appui-react/accudraw/AccuDrawDialog.js.map +1 -1
  10. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts +1 -0
  11. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  12. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js +1 -0
  13. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  14. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.d.ts +1 -0
  15. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  16. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  17. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts +1 -0
  18. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  19. package/lib/cjs/appui-react/backstage/BackstageComposer.js +2 -0
  20. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  21. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.d.ts +2 -1
  22. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.d.ts.map +1 -1
  23. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.js +2 -1
  24. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  25. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts +1 -0
  26. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  27. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js +7 -2
  28. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  29. package/lib/cjs/appui-react/content/ContentGroup.d.ts +8 -4
  30. package/lib/cjs/appui-react/content/ContentGroup.d.ts.map +1 -1
  31. package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
  32. package/lib/cjs/appui-react/content/ContentLayout.d.ts +2 -1
  33. package/lib/cjs/appui-react/content/ContentLayout.d.ts.map +1 -1
  34. package/lib/cjs/appui-react/content/ContentLayout.js +44 -10
  35. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  36. package/lib/cjs/appui-react/content/ContentLayoutProps.d.ts +63 -0
  37. package/lib/cjs/appui-react/content/ContentLayoutProps.d.ts.map +1 -0
  38. package/lib/cjs/appui-react/content/ContentLayoutProps.js +10 -0
  39. package/lib/cjs/appui-react/content/ContentLayoutProps.js.map +1 -0
  40. package/lib/cjs/appui-react/content/ContentOverlay.d.ts +4 -0
  41. package/lib/cjs/appui-react/content/ContentOverlay.d.ts.map +1 -1
  42. package/lib/cjs/appui-react/content/ContentOverlay.js +33 -1
  43. package/lib/cjs/appui-react/content/ContentOverlay.js.map +1 -1
  44. package/lib/cjs/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
  45. package/lib/cjs/appui-react/content/FloatingViewportContent.js +1 -1
  46. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  47. package/lib/cjs/appui-react/content/InternalContentLayoutManager.d.ts +1 -1
  48. package/lib/cjs/appui-react/content/InternalContentLayoutManager.d.ts.map +1 -1
  49. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  50. package/lib/cjs/appui-react/content/InternalContentViewManager.d.ts.map +1 -1
  51. package/lib/cjs/appui-react/content/InternalContentViewManager.js +9 -3
  52. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  53. package/lib/cjs/appui-react/content/StageContentLayout.d.ts +1 -1
  54. package/lib/cjs/appui-react/content/StageContentLayout.d.ts.map +1 -1
  55. package/lib/cjs/appui-react/content/StageContentLayout.js.map +1 -1
  56. package/lib/cjs/appui-react/content/StandardContentLayouts.d.ts +20 -0
  57. package/lib/cjs/appui-react/content/StandardContentLayouts.d.ts.map +1 -0
  58. package/lib/cjs/appui-react/content/StandardContentLayouts.js +169 -0
  59. package/lib/cjs/appui-react/content/StandardContentLayouts.js.map +1 -0
  60. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts +1 -0
  61. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts.map +1 -1
  62. package/lib/cjs/appui-react/content/split-pane/SplitPane.js +1 -0
  63. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  64. package/lib/cjs/appui-react/framework/FrameworkContent.d.ts +1 -1
  65. package/lib/cjs/appui-react/framework/FrameworkContent.d.ts.map +1 -1
  66. package/lib/cjs/appui-react/framework/FrameworkContent.js.map +1 -1
  67. package/lib/cjs/appui-react/framework/FrameworkFrontstages.d.ts +3 -0
  68. package/lib/cjs/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
  69. package/lib/cjs/appui-react/framework/FrameworkFrontstages.js.map +1 -1
  70. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +1 -0
  71. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  72. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +2 -1
  73. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  74. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts +2 -0
  75. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
  76. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js +5 -0
  77. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  78. package/lib/cjs/appui-react/hooks/useConditionalProp.d.ts +3 -3
  79. package/lib/cjs/appui-react/hooks/useConditionalProp.d.ts.map +1 -1
  80. package/lib/cjs/appui-react/hooks/useConditionalProp.js.map +1 -1
  81. package/lib/cjs/appui-react/hooks/useConditionalValue.d.ts +1 -1
  82. package/lib/cjs/appui-react/hooks/useConditionalValue.js +1 -1
  83. package/lib/cjs/appui-react/hooks/useConditionalValue.js.map +1 -1
  84. package/lib/cjs/appui-react/hooks/useUiVisibility.d.ts.map +1 -1
  85. package/lib/cjs/appui-react/hooks/useUiVisibility.js +1 -0
  86. package/lib/cjs/appui-react/hooks/useUiVisibility.js.map +1 -1
  87. package/lib/cjs/appui-react/layout/base/LayoutStore.d.ts +3 -1
  88. package/lib/cjs/appui-react/layout/base/LayoutStore.d.ts.map +1 -1
  89. package/lib/cjs/appui-react/layout/base/LayoutStore.js +9 -1
  90. package/lib/cjs/appui-react/layout/base/LayoutStore.js.map +1 -1
  91. package/lib/cjs/appui-react/shared/ConditionalValue.d.ts +10 -7
  92. package/lib/cjs/appui-react/shared/ConditionalValue.d.ts.map +1 -1
  93. package/lib/cjs/appui-react/shared/ConditionalValue.js +3 -4
  94. package/lib/cjs/appui-react/shared/ConditionalValue.js.map +1 -1
  95. package/lib/cjs/appui-react/statusbar/StatusBarComposer.d.ts +1 -0
  96. package/lib/cjs/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
  97. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js +3 -0
  98. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  99. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.d.ts +1 -0
  100. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.d.ts.map +1 -1
  101. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.js +1 -0
  102. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  103. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.d.ts +1 -0
  104. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.d.ts.map +1 -1
  105. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.js +1 -0
  106. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  107. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  108. package/lib/cjs/appui-react/statusfields/SelectionScope.js +1 -1
  109. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  110. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts +2 -0
  111. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  112. package/lib/cjs/appui-react/statusfields/SnapMode.js +59 -83
  113. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  114. package/lib/cjs/appui-react/theme/ThemeManager.d.ts +7 -8
  115. package/lib/cjs/appui-react/theme/ThemeManager.d.ts.map +1 -1
  116. package/lib/cjs/appui-react/theme/ThemeManager.js +7 -8
  117. package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
  118. package/lib/cjs/appui-react/toolbar/ToolbarComposer.d.ts +1 -0
  119. package/lib/cjs/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
  120. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js +1 -0
  121. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  122. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.d.ts.map +1 -1
  123. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js +11 -6
  124. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  125. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts +1 -0
  126. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts.map +1 -1
  127. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js +1 -0
  128. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  129. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts +3 -2
  130. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  131. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js +4 -2
  132. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  133. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts +6 -2
  134. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts.map +1 -1
  135. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +117 -88
  136. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  137. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts +2 -2
  138. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  139. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +4 -2
  140. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  141. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts +3 -2
  142. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts.map +1 -1
  143. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +79 -60
  144. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  145. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +1 -0
  146. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  147. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +3 -0
  148. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  149. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts +4 -2
  150. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts.map +1 -1
  151. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +6 -2
  152. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  153. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts +1 -0
  154. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  155. package/lib/cjs/appui-react/uistate/useUiStateStorage.js +1 -0
  156. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
  157. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.d.ts +1 -0
  158. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.d.ts.map +1 -1
  159. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js +1 -0
  160. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  161. package/lib/cjs/appui-react/widgets/BasicToolWidget.d.ts +1 -0
  162. package/lib/cjs/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  163. package/lib/cjs/appui-react/widgets/BasicToolWidget.js +1 -0
  164. package/lib/cjs/appui-react/widgets/BasicToolWidget.js.map +1 -1
  165. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.d.ts +1 -0
  166. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.d.ts.map +1 -1
  167. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.js +3 -1
  168. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  169. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.d.ts +2 -0
  170. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.d.ts.map +1 -1
  171. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +2 -0
  172. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  173. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.d.ts +2 -1
  174. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.d.ts.map +1 -1
  175. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.js +1 -0
  176. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  177. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.d.ts +1 -0
  178. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.d.ts.map +1 -1
  179. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.js +1 -0
  180. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  181. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +1 -1
  182. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  183. package/lib/cjs/appui-react/widgets/WidgetDef.js +7 -7
  184. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  185. package/lib/cjs/appui-react.d.ts +3 -0
  186. package/lib/cjs/appui-react.d.ts.map +1 -1
  187. package/lib/cjs/appui-react.js +3 -0
  188. package/lib/cjs/appui-react.js.map +1 -1
  189. package/lib/esm/appui-react/UiFramework.d.ts +5 -0
  190. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  191. package/lib/esm/appui-react/UiFramework.js +6 -1
  192. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  193. package/lib/esm/appui-react/accudraw/AccuDrawDialog.d.ts +1 -0
  194. package/lib/esm/appui-react/accudraw/AccuDrawDialog.d.ts.map +1 -1
  195. package/lib/esm/appui-react/accudraw/AccuDrawDialog.js +1 -0
  196. package/lib/esm/appui-react/accudraw/AccuDrawDialog.js.map +1 -1
  197. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts +1 -0
  198. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  199. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +1 -0
  200. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  201. package/lib/esm/appui-react/accudraw/AccuDrawInputField.d.ts +1 -0
  202. package/lib/esm/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  203. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  204. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts +1 -0
  205. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  206. package/lib/esm/appui-react/backstage/BackstageComposer.js +2 -0
  207. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  208. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.d.ts +2 -1
  209. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.d.ts.map +1 -1
  210. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.js +2 -1
  211. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  212. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts +1 -0
  213. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  214. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js +7 -2
  215. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  216. package/lib/esm/appui-react/content/ContentGroup.d.ts +8 -4
  217. package/lib/esm/appui-react/content/ContentGroup.d.ts.map +1 -1
  218. package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
  219. package/lib/esm/appui-react/content/ContentLayout.d.ts +2 -1
  220. package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
  221. package/lib/esm/appui-react/content/ContentLayout.js +45 -11
  222. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  223. package/lib/esm/appui-react/content/ContentLayoutProps.d.ts +63 -0
  224. package/lib/esm/appui-react/content/ContentLayoutProps.d.ts.map +1 -0
  225. package/lib/esm/appui-react/content/ContentLayoutProps.js +9 -0
  226. package/lib/esm/appui-react/content/ContentLayoutProps.js.map +1 -0
  227. package/lib/esm/appui-react/content/ContentOverlay.d.ts +4 -0
  228. package/lib/esm/appui-react/content/ContentOverlay.d.ts.map +1 -1
  229. package/lib/esm/appui-react/content/ContentOverlay.js +32 -0
  230. package/lib/esm/appui-react/content/ContentOverlay.js.map +1 -1
  231. package/lib/esm/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
  232. package/lib/esm/appui-react/content/FloatingViewportContent.js +1 -1
  233. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  234. package/lib/esm/appui-react/content/InternalContentLayoutManager.d.ts +1 -1
  235. package/lib/esm/appui-react/content/InternalContentLayoutManager.d.ts.map +1 -1
  236. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  237. package/lib/esm/appui-react/content/InternalContentViewManager.d.ts.map +1 -1
  238. package/lib/esm/appui-react/content/InternalContentViewManager.js +9 -3
  239. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  240. package/lib/esm/appui-react/content/StageContentLayout.d.ts +1 -1
  241. package/lib/esm/appui-react/content/StageContentLayout.d.ts.map +1 -1
  242. package/lib/esm/appui-react/content/StageContentLayout.js.map +1 -1
  243. package/lib/esm/appui-react/content/StandardContentLayouts.d.ts +20 -0
  244. package/lib/esm/appui-react/content/StandardContentLayouts.d.ts.map +1 -0
  245. package/lib/esm/appui-react/content/StandardContentLayouts.js +165 -0
  246. package/lib/esm/appui-react/content/StandardContentLayouts.js.map +1 -0
  247. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts +1 -0
  248. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts.map +1 -1
  249. package/lib/esm/appui-react/content/split-pane/SplitPane.js +1 -0
  250. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  251. package/lib/esm/appui-react/framework/FrameworkContent.d.ts +1 -1
  252. package/lib/esm/appui-react/framework/FrameworkContent.d.ts.map +1 -1
  253. package/lib/esm/appui-react/framework/FrameworkContent.js.map +1 -1
  254. package/lib/esm/appui-react/framework/FrameworkFrontstages.d.ts +3 -0
  255. package/lib/esm/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
  256. package/lib/esm/appui-react/framework/FrameworkFrontstages.js.map +1 -1
  257. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +1 -0
  258. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  259. package/lib/esm/appui-react/frontstage/FrontstageDef.js +2 -1
  260. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  261. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts +2 -0
  262. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
  263. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js +5 -0
  264. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  265. package/lib/esm/appui-react/hooks/useConditionalProp.d.ts +3 -3
  266. package/lib/esm/appui-react/hooks/useConditionalProp.d.ts.map +1 -1
  267. package/lib/esm/appui-react/hooks/useConditionalProp.js.map +1 -1
  268. package/lib/esm/appui-react/hooks/useConditionalValue.d.ts +1 -1
  269. package/lib/esm/appui-react/hooks/useConditionalValue.js +1 -1
  270. package/lib/esm/appui-react/hooks/useConditionalValue.js.map +1 -1
  271. package/lib/esm/appui-react/hooks/useUiVisibility.d.ts.map +1 -1
  272. package/lib/esm/appui-react/hooks/useUiVisibility.js +1 -0
  273. package/lib/esm/appui-react/hooks/useUiVisibility.js.map +1 -1
  274. package/lib/esm/appui-react/layout/base/LayoutStore.d.ts +3 -1
  275. package/lib/esm/appui-react/layout/base/LayoutStore.d.ts.map +1 -1
  276. package/lib/esm/appui-react/layout/base/LayoutStore.js +7 -0
  277. package/lib/esm/appui-react/layout/base/LayoutStore.js.map +1 -1
  278. package/lib/esm/appui-react/shared/ConditionalValue.d.ts +10 -7
  279. package/lib/esm/appui-react/shared/ConditionalValue.d.ts.map +1 -1
  280. package/lib/esm/appui-react/shared/ConditionalValue.js +2 -3
  281. package/lib/esm/appui-react/shared/ConditionalValue.js.map +1 -1
  282. package/lib/esm/appui-react/statusbar/StatusBarComposer.d.ts +1 -0
  283. package/lib/esm/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
  284. package/lib/esm/appui-react/statusbar/StatusBarComposer.js +3 -0
  285. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  286. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.d.ts +1 -0
  287. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.d.ts.map +1 -1
  288. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.js +1 -0
  289. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  290. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.d.ts +1 -0
  291. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.d.ts.map +1 -1
  292. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.js +1 -0
  293. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  294. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  295. package/lib/esm/appui-react/statusfields/SelectionScope.js +1 -1
  296. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  297. package/lib/esm/appui-react/statusfields/SnapMode.d.ts +2 -0
  298. package/lib/esm/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  299. package/lib/esm/appui-react/statusfields/SnapMode.js +59 -83
  300. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  301. package/lib/esm/appui-react/theme/ThemeManager.d.ts +7 -8
  302. package/lib/esm/appui-react/theme/ThemeManager.d.ts.map +1 -1
  303. package/lib/esm/appui-react/theme/ThemeManager.js +7 -8
  304. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  305. package/lib/esm/appui-react/toolbar/ToolbarComposer.d.ts +1 -0
  306. package/lib/esm/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
  307. package/lib/esm/appui-react/toolbar/ToolbarComposer.js +1 -0
  308. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  309. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.d.ts.map +1 -1
  310. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js +11 -6
  311. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  312. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts +1 -0
  313. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts.map +1 -1
  314. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js +1 -0
  315. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  316. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts +3 -2
  317. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  318. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js +4 -2
  319. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  320. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts +6 -2
  321. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts.map +1 -1
  322. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +117 -88
  323. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  324. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts +2 -2
  325. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  326. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +4 -2
  327. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  328. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts +3 -2
  329. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts.map +1 -1
  330. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +79 -60
  331. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  332. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +1 -0
  333. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  334. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +3 -0
  335. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  336. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts +4 -2
  337. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts.map +1 -1
  338. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +6 -2
  339. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  340. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts +1 -0
  341. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  342. package/lib/esm/appui-react/uistate/useUiStateStorage.js +1 -0
  343. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
  344. package/lib/esm/appui-react/widgets/BasicNavigationWidget.d.ts +1 -0
  345. package/lib/esm/appui-react/widgets/BasicNavigationWidget.d.ts.map +1 -1
  346. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js +1 -0
  347. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  348. package/lib/esm/appui-react/widgets/BasicToolWidget.d.ts +1 -0
  349. package/lib/esm/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  350. package/lib/esm/appui-react/widgets/BasicToolWidget.js +1 -0
  351. package/lib/esm/appui-react/widgets/BasicToolWidget.js.map +1 -1
  352. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.d.ts +1 -0
  353. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.d.ts.map +1 -1
  354. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.js +3 -1
  355. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  356. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.d.ts +2 -0
  357. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.d.ts.map +1 -1
  358. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +2 -0
  359. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  360. package/lib/esm/appui-react/widgets/ToolWidgetComposer.d.ts +2 -1
  361. package/lib/esm/appui-react/widgets/ToolWidgetComposer.d.ts.map +1 -1
  362. package/lib/esm/appui-react/widgets/ToolWidgetComposer.js +1 -0
  363. package/lib/esm/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  364. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.d.ts +1 -0
  365. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.d.ts.map +1 -1
  366. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.js +1 -0
  367. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  368. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +1 -1
  369. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  370. package/lib/esm/appui-react/widgets/WidgetDef.js +7 -7
  371. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  372. package/lib/esm/appui-react.d.ts +3 -0
  373. package/lib/esm/appui-react.d.ts.map +1 -1
  374. package/lib/esm/appui-react.js +3 -0
  375. package/lib/esm/appui-react.js.map +1 -1
  376. package/package.json +7 -7
@@ -25,43 +25,53 @@ const useTranslation_1 = require("../hooks/useTranslation");
25
25
  const useReduxFrameworkState_1 = require("../uistate/useReduxFrameworkState");
26
26
  const itwinui_react_1 = require("@itwin/itwinui-react");
27
27
  const StatusBarPopover_1 = require("../statusbar/popup/StatusBarPopover");
28
- // eslint-disable-next-line deprecation/deprecation
29
- function getIconFromIconName(iconName) {
30
- let iconSpec = snaps_svg_1.default;
31
- switch (iconName) {
32
- case "snaps":
33
- iconSpec = snaps_svg_1.default;
34
- break;
35
- case "snaps-intersection":
36
- iconSpec = snaps_intersection_svg_1.default;
37
- break;
38
- case "snaps-center":
39
- iconSpec = snaps_center_svg_1.default;
40
- break;
41
- case "snaps-nearest":
42
- iconSpec = snaps_nearest_svg_1.default;
43
- break;
44
- case "snaps-origin":
45
- iconSpec = snaps_origin_svg_1.default;
46
- break;
47
- case "snaps-midpoint":
48
- iconSpec = snaps_midpoint_svg_1.default;
49
- break;
50
- case "snaps-bisector":
51
- iconSpec = snaps_bisector_svg_1.default;
52
- break;
53
- }
54
- return iconSpec;
55
- }
56
- /** Return icon class name for a specific snapMode. */
57
- const getSnapModeIconNameFromMode = (modeEntries, snapMode) => {
58
- for (const modeEntry of modeEntries) {
59
- if (modeEntry.value === snapMode)
60
- return modeEntry.iconName;
61
- }
62
- if (snapMode > 0)
63
- return "snaps-multione";
64
- return "placeholder";
28
+ // Field entry of all possible snap modes.
29
+ const allSnapModeFieldEntries = [
30
+ {
31
+ labelKey: "snapModeField.keypoint",
32
+ value: core_frontend_1.SnapMode.NearestKeypoint,
33
+ iconSpec: snaps_svg_1.default,
34
+ },
35
+ {
36
+ labelKey: "snapModeField.intersection",
37
+ value: core_frontend_1.SnapMode.Intersection,
38
+ iconSpec: snaps_intersection_svg_1.default,
39
+ },
40
+ {
41
+ labelKey: "snapModeField.center",
42
+ value: core_frontend_1.SnapMode.Center,
43
+ iconSpec: snaps_center_svg_1.default,
44
+ },
45
+ {
46
+ labelKey: "snapModeField.nearest",
47
+ value: core_frontend_1.SnapMode.Nearest,
48
+ iconSpec: snaps_nearest_svg_1.default,
49
+ },
50
+ {
51
+ labelKey: "snapModeField.origin",
52
+ value: core_frontend_1.SnapMode.Origin,
53
+ iconSpec: snaps_origin_svg_1.default,
54
+ },
55
+ {
56
+ labelKey: "snapModeField.midpoint",
57
+ value: core_frontend_1.SnapMode.MidPoint,
58
+ iconSpec: snaps_midpoint_svg_1.default,
59
+ },
60
+ {
61
+ labelKey: "snapModeField.bisector",
62
+ value: core_frontend_1.SnapMode.Bisector,
63
+ iconSpec: snaps_bisector_svg_1.default,
64
+ },
65
+ ];
66
+ /** Return icon for a specific snapMode. */
67
+ const getSnapModeIcon = (snapMode) => {
68
+ // Get all the modes present in the bitmask.
69
+ const modes = allSnapModeFieldEntries.filter((entry) => {
70
+ return (entry.value & snapMode) === entry.value;
71
+ });
72
+ return (
73
+ // eslint-disable-next-line deprecation/deprecation
74
+ React.createElement(core_react_1.Icon, { iconSpec: modes.length === 1 ? modes[0].iconSpec : snaps_svg_1.default }));
65
75
  };
66
76
  /** `SnapModeField` component designed to be specified in a status bar. It will
67
77
  * display the active snap mode that AccuSnap will use and allow the user to select a new snap mode.
@@ -69,62 +79,28 @@ const getSnapModeIconNameFromMode = (modeEntries, snapMode) => {
69
79
  */
70
80
  function SnapModeField(props) {
71
81
  const { translate } = (0, useTranslation_1.useTranslation)();
82
+ const snapModeEntries = props.availableSnapModes
83
+ ? allSnapModeFieldEntries.filter((entry) => {
84
+ return (props.availableSnapModes &&
85
+ props.availableSnapModes.some((availableSnap) => availableSnap === entry.value));
86
+ })
87
+ : allSnapModeFieldEntries;
72
88
  const reduxSnapMode = (0, useReduxFrameworkState_1.useReduxFrameworkState)(
73
89
  // eslint-disable-next-line deprecation/deprecation
74
90
  (state) => state?.configurableUiState.snapMode);
75
91
  const snapMode = props.snapMode ?? reduxSnapMode ?? core_frontend_1.SnapMode.NearestKeypoint;
76
- const snapModes = [
77
- {
78
- label: translate("snapModeField.keypoint"),
79
- value: core_frontend_1.SnapMode.NearestKeypoint,
80
- iconName: "snaps",
81
- },
82
- {
83
- label: translate("snapModeField.intersection"),
84
- value: core_frontend_1.SnapMode.Intersection,
85
- iconName: "snaps-intersection",
86
- },
87
- {
88
- label: translate("snapModeField.center"),
89
- value: core_frontend_1.SnapMode.Center,
90
- iconName: "snaps-center",
91
- },
92
- {
93
- label: translate("snapModeField.nearest"),
94
- value: core_frontend_1.SnapMode.Nearest,
95
- iconName: "snaps-nearest",
96
- },
97
- {
98
- label: translate("snapModeField.origin"),
99
- value: core_frontend_1.SnapMode.Origin,
100
- iconName: "snaps-origin",
101
- },
102
- {
103
- label: translate("snapModeField.midpoint"),
104
- value: core_frontend_1.SnapMode.MidPoint,
105
- iconName: "snaps-midpoint",
106
- },
107
- {
108
- label: translate("snapModeField.bisector"),
109
- value: core_frontend_1.SnapMode.Bisector,
110
- iconName: "snaps-bisector",
111
- },
112
- ];
113
- const iconName = getSnapModeIconNameFromMode(snapModes, snapMode);
114
92
  const title = translate("snapModeField.snapMode");
115
- return (React.createElement(StatusBarPopover_1.StatusBarPopover, { content: React.createElement(Panel_1.SnapModePanel, { title: title }, snapModes.map((item, index) => (React.createElement(Snap_1.Snap, { key: `SM_${index}`, onClick: () => {
93
+ return (React.createElement(StatusBarPopover_1.StatusBarPopover, { content: React.createElement(Panel_1.SnapModePanel, { title: title }, snapModeEntries.map((entry, index) => (React.createElement(Snap_1.Snap, { key: `SM_${index}`, onClick: () => {
116
94
  if (props.onChange) {
117
- props.onChange(item.value);
95
+ props.onChange(entry.value);
118
96
  return;
119
97
  }
120
98
  // eslint-disable-next-line deprecation/deprecation
121
- UiFramework_1.UiFramework.setAccudrawSnapMode(item.value);
122
- }, isActive: (snapMode & item.value) === item.value, icon:
123
- // eslint-disable-next-line deprecation/deprecation
124
- React.createElement(core_react_1.Icon, { className: `icon`, iconSpec: getIconFromIconName(item.iconName) }) }, item.label)))) },
125
- React.createElement(itwinui_react_1.Button, { styleType: "borderless", title: title,
99
+ UiFramework_1.UiFramework.setAccudrawSnapMode(entry.value);
100
+ }, isActive: (snapMode & entry.value) === entry.value, icon:
126
101
  // eslint-disable-next-line deprecation/deprecation
127
- endIcon: React.createElement(core_react_1.Icon, { iconSpec: getIconFromIconName(iconName) }) },
102
+ React.createElement(core_react_1.Icon, { className: `icon`, iconSpec: entry.iconSpec }) }, translate(entry.labelKey))))) },
103
+ React.createElement(itwinui_react_1.Button, { styleType: "borderless", title: title, endIcon: getSnapModeIcon(snapMode) },
128
104
  title,
129
105
  React.createElement(StatusBarPopover_1.StatusBarPopover.ExpandIndicator, null))));
130
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SnapMode.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SnapMode.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module StatusBar\n */\n\nimport snapModeBisector from \"@bentley/icons-generic/icons/snaps-bisector.svg\";\nimport snapModeCenter from \"@bentley/icons-generic/icons/snaps-center.svg\";\nimport snapModeIntersection from \"@bentley/icons-generic/icons/snaps-intersection.svg\";\nimport snapModeMidpoint from \"@bentley/icons-generic/icons/snaps-midpoint.svg\";\nimport snapModeNearest from \"@bentley/icons-generic/icons/snaps-nearest.svg\";\nimport snapModeOrigin from \"@bentley/icons-generic/icons/snaps-origin.svg\";\nimport snapModeKeypoint from \"@bentley/icons-generic/icons/snaps.svg\";\nimport { SnapMode } from \"@itwin/core-frontend\";\nimport { Icon } from \"@itwin/core-react\";\nimport type { CommonProps, IconSpec } from \"@itwin/core-react\";\nimport * as React from \"react\";\nimport { UiFramework } from \"../UiFramework\";\nimport { SnapModePanel } from \"../layout/footer/snap-mode/Panel\";\nimport { Snap } from \"../layout/footer/snap-mode/Snap\";\nimport { useTranslation } from \"../hooks/useTranslation\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState\";\nimport { Button } from \"@itwin/itwinui-react\";\nimport { StatusBarPopover } from \"../statusbar/popup/StatusBarPopover\";\n\n/** Define the properties that will be used to represent the available snap modes. */\ninterface SnapModeFieldEntry {\n label: string;\n value: number;\n iconName: string;\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction getIconFromIconName(iconName: string): IconSpec {\n let iconSpec = snapModeKeypoint;\n switch (iconName) {\n case \"snaps\":\n iconSpec = snapModeKeypoint;\n break;\n case \"snaps-intersection\":\n iconSpec = snapModeIntersection;\n break;\n case \"snaps-center\":\n iconSpec = snapModeCenter;\n break;\n case \"snaps-nearest\":\n iconSpec = snapModeNearest;\n break;\n case \"snaps-origin\":\n iconSpec = snapModeOrigin;\n break;\n case \"snaps-midpoint\":\n iconSpec = snapModeMidpoint;\n break;\n case \"snaps-bisector\":\n iconSpec = snapModeBisector;\n break;\n }\n return iconSpec;\n}\n\n/** Return icon class name for a specific snapMode. */\nconst getSnapModeIconNameFromMode = (\n modeEntries: SnapModeFieldEntry[],\n snapMode: number\n) => {\n for (const modeEntry of modeEntries) {\n if (modeEntry.value === snapMode) return modeEntry.iconName;\n }\n\n if (snapMode > 0) return \"snaps-multione\";\n\n return \"placeholder\";\n};\n\n/** Defines properties supported by the SnapMode Field Component. */\n// eslint-disable-next-line deprecation/deprecation\ninterface SnapModeFieldProps extends CommonProps {\n /** Uses redux store as a fallback. Defaults to {@link SnapMode.NearestKeypoint}.\n * @note Enum flags are supported.\n */\n snapMode?: SnapMode;\n onChange?: (newSnapMode: SnapMode) => void;\n}\n\n/** `SnapModeField` component designed to be specified in a status bar. It will\n * display the active snap mode that AccuSnap will use and allow the user to select a new snap mode.\n * @public\n */\nexport function SnapModeField(props: SnapModeFieldProps) {\n const { translate } = useTranslation();\n const reduxSnapMode = useReduxFrameworkState(\n // eslint-disable-next-line deprecation/deprecation\n (state) => state?.configurableUiState.snapMode\n );\n const snapMode = props.snapMode ?? reduxSnapMode ?? SnapMode.NearestKeypoint;\n\n const snapModes: SnapModeFieldEntry[] = [\n {\n label: translate(\"snapModeField.keypoint\"),\n value: SnapMode.NearestKeypoint as number,\n iconName: \"snaps\",\n },\n {\n label: translate(\"snapModeField.intersection\"),\n value: SnapMode.Intersection as number,\n iconName: \"snaps-intersection\",\n },\n {\n label: translate(\"snapModeField.center\"),\n value: SnapMode.Center as number,\n iconName: \"snaps-center\",\n },\n {\n label: translate(\"snapModeField.nearest\"),\n value: SnapMode.Nearest as number,\n iconName: \"snaps-nearest\",\n },\n {\n label: translate(\"snapModeField.origin\"),\n value: SnapMode.Origin as number,\n iconName: \"snaps-origin\",\n },\n {\n label: translate(\"snapModeField.midpoint\"),\n value: SnapMode.MidPoint as number,\n iconName: \"snaps-midpoint\",\n },\n {\n label: translate(\"snapModeField.bisector\"),\n value: SnapMode.Bisector as number,\n iconName: \"snaps-bisector\",\n },\n ];\n const iconName = getSnapModeIconNameFromMode(snapModes, snapMode);\n\n const title = translate(\"snapModeField.snapMode\");\n return (\n <StatusBarPopover\n content={\n <SnapModePanel title={title}>\n {snapModes.map((item, index) => (\n <Snap\n key={`SM_${index}`}\n onClick={() => {\n if (props.onChange) {\n props.onChange(item.value);\n return;\n }\n // eslint-disable-next-line deprecation/deprecation\n UiFramework.setAccudrawSnapMode(item.value);\n }}\n isActive={(snapMode & item.value) === item.value}\n icon={\n // eslint-disable-next-line deprecation/deprecation\n <Icon\n className={`icon`}\n iconSpec={getIconFromIconName(item.iconName)}\n />\n }\n >\n {item.label}\n </Snap>\n ))}\n </SnapModePanel>\n }\n >\n <Button\n styleType=\"borderless\"\n title={title}\n // eslint-disable-next-line deprecation/deprecation\n endIcon={<Icon iconSpec={getIconFromIconName(iconName)} />}\n >\n {title}\n <StatusBarPopover.ExpandIndicator />\n </Button>\n </StatusBarPopover>\n );\n}\n"]}
1
+ {"version":3,"file":"SnapMode.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SnapMode.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module StatusBar\n */\n\nimport snapModeBisector from \"@bentley/icons-generic/icons/snaps-bisector.svg\";\nimport snapModeCenter from \"@bentley/icons-generic/icons/snaps-center.svg\";\nimport snapModeIntersection from \"@bentley/icons-generic/icons/snaps-intersection.svg\";\nimport snapModeMidpoint from \"@bentley/icons-generic/icons/snaps-midpoint.svg\";\nimport snapModeNearest from \"@bentley/icons-generic/icons/snaps-nearest.svg\";\nimport snapModeOrigin from \"@bentley/icons-generic/icons/snaps-origin.svg\";\nimport snapModeKeypoint from \"@bentley/icons-generic/icons/snaps.svg\";\nimport { SnapMode } from \"@itwin/core-frontend\";\nimport { Icon } from \"@itwin/core-react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport * as React from \"react\";\nimport { UiFramework } from \"../UiFramework\";\nimport { SnapModePanel } from \"../layout/footer/snap-mode/Panel\";\nimport { Snap } from \"../layout/footer/snap-mode/Snap\";\nimport { useTranslation } from \"../hooks/useTranslation\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState\";\nimport { Button } from \"@itwin/itwinui-react\";\nimport { StatusBarPopover } from \"../statusbar/popup/StatusBarPopover\";\n\n/** Define the properties that will be used to represent the available snap modes. */\ninterface SnapModeFieldEntry {\n labelKey: string;\n value: number;\n iconSpec: string;\n}\n\n// Field entry of all possible snap modes.\nconst allSnapModeFieldEntries: SnapModeFieldEntry[] = [\n {\n labelKey: \"snapModeField.keypoint\",\n value: SnapMode.NearestKeypoint as number,\n iconSpec: snapModeKeypoint,\n },\n {\n labelKey: \"snapModeField.intersection\",\n value: SnapMode.Intersection as number,\n iconSpec: snapModeIntersection,\n },\n {\n labelKey: \"snapModeField.center\",\n value: SnapMode.Center as number,\n iconSpec: snapModeCenter,\n },\n {\n labelKey: \"snapModeField.nearest\",\n value: SnapMode.Nearest as number,\n iconSpec: snapModeNearest,\n },\n {\n labelKey: \"snapModeField.origin\",\n value: SnapMode.Origin as number,\n iconSpec: snapModeOrigin,\n },\n {\n labelKey: \"snapModeField.midpoint\",\n value: SnapMode.MidPoint as number,\n iconSpec: snapModeMidpoint,\n },\n {\n labelKey: \"snapModeField.bisector\",\n value: SnapMode.Bisector as number,\n iconSpec: snapModeBisector,\n },\n];\n\n/** Return icon for a specific snapMode. */\nconst getSnapModeIcon = (snapMode: number) => {\n // Get all the modes present in the bitmask.\n const modes: SnapModeFieldEntry[] = allSnapModeFieldEntries.filter(\n (entry) => {\n return (entry.value & snapMode) === entry.value;\n }\n );\n\n return (\n // eslint-disable-next-line deprecation/deprecation\n <Icon\n iconSpec={modes.length === 1 ? modes[0].iconSpec : snapModeKeypoint}\n />\n );\n};\n\n/** Defines properties supported by the SnapMode Field Component. */\n// eslint-disable-next-line deprecation/deprecation\ninterface SnapModeFieldProps extends CommonProps {\n /** Uses redux store as a fallback. Defaults to {@link SnapMode.NearestKeypoint}.\n * @note Enum flags are supported.\n */\n snapMode?: SnapMode;\n /** The list of snap modes available for selection. Defaults to all the modes.*/\n availableSnapModes?: SnapMode[];\n onChange?: (newSnapMode: SnapMode) => void;\n}\n\n/** `SnapModeField` component designed to be specified in a status bar. It will\n * display the active snap mode that AccuSnap will use and allow the user to select a new snap mode.\n * @public\n */\nexport function SnapModeField(props: SnapModeFieldProps) {\n const { translate } = useTranslation();\n const snapModeEntries: SnapModeFieldEntry[] = props.availableSnapModes\n ? allSnapModeFieldEntries.filter((entry) => {\n return (\n props.availableSnapModes &&\n props.availableSnapModes.some(\n (availableSnap) => availableSnap === (entry.value as SnapMode)\n )\n );\n })\n : allSnapModeFieldEntries;\n\n const reduxSnapMode = useReduxFrameworkState(\n // eslint-disable-next-line deprecation/deprecation\n (state) => state?.configurableUiState.snapMode\n );\n const snapMode = props.snapMode ?? reduxSnapMode ?? SnapMode.NearestKeypoint;\n\n const title = translate(\"snapModeField.snapMode\");\n return (\n <StatusBarPopover\n content={\n <SnapModePanel title={title}>\n {snapModeEntries.map((entry, index) => (\n <Snap\n key={`SM_${index}`}\n onClick={() => {\n if (props.onChange) {\n props.onChange(entry.value);\n return;\n }\n // eslint-disable-next-line deprecation/deprecation\n UiFramework.setAccudrawSnapMode(entry.value);\n }}\n isActive={(snapMode & entry.value) === entry.value}\n icon={\n // eslint-disable-next-line deprecation/deprecation\n <Icon className={`icon`} iconSpec={entry.iconSpec} />\n }\n >\n {translate(entry.labelKey)}\n </Snap>\n ))}\n </SnapModePanel>\n }\n >\n <Button\n styleType=\"borderless\"\n title={title}\n endIcon={getSnapModeIcon(snapMode)}\n >\n {title}\n <StatusBarPopover.ExpandIndicator />\n </Button>\n </StatusBarPopover>\n );\n}\n"]}
@@ -9,16 +9,15 @@ interface ThemeManagerProps {
9
9
  /** Uses redux store as a fallback. Defaults to {@link SYSTEM_PREFERRED_COLOR_THEME}. */
10
10
  theme?: ThemeId;
11
11
  }
12
- /** ThemeManager handles setting color themes and element opacity management. Note that this component will
13
- * affect the entire application by setting the data-theme attribute to the html element.
14
- * It also sets an iTwinUI `ThemeProvider` element locally, so all elements
15
- * within the AppUI tree will have the same theme, and should be using iTwinUI 2.x or later.
16
- * A `ColorTheme` enum values will configure iTwinUI `ThemeProvider` accordingly.
17
- * Any other string will only apply the `data-theme` attribute to the `html` element
12
+ /** `ThemeManager` handles setting color themes. Note that this component will
13
+ * affect the entire application by setting the internal `data-theme` attribute.
14
+ * Component children are wrapped with `v2` and `v3` iTwinUI `ThemeProvider` components, so all nodes within the tree will have the same theme, and should be using iTwinUI 2.x or later.
15
+ * Specified `ThemeId` will be mapped to iTwinUI `theme` accordingly.
16
+ * Any other string will only apply the `data-theme` attribute to the underlying `html` element
18
17
  * and `ThemeProvider` theme will be set to `inherit`, in this case the application is
19
- * responsible for setting the theme by overriding iTwinUI css variables.
18
+ * responsible for setting the theme, i.e. by using iTwinUI css variables.
20
19
  *
21
- * This React component should wrap {@link ConfigurableUiContent}.
20
+ * This component should wrap {@link ConfigurableUiContent}.
22
21
  *
23
22
  * ```tsx
24
23
  * <ThemeManager>
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,qBA+BrE"}
1
+ {"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,qBA+BrE"}
@@ -28,16 +28,15 @@ const highContrastColorThemes = [
28
28
  ThemeId_1.ColorTheme.HighContrastDark,
29
29
  ThemeId_1.ColorTheme.HighContrastLight,
30
30
  ];
31
- /** ThemeManager handles setting color themes and element opacity management. Note that this component will
32
- * affect the entire application by setting the data-theme attribute to the html element.
33
- * It also sets an iTwinUI `ThemeProvider` element locally, so all elements
34
- * within the AppUI tree will have the same theme, and should be using iTwinUI 2.x or later.
35
- * A `ColorTheme` enum values will configure iTwinUI `ThemeProvider` accordingly.
36
- * Any other string will only apply the `data-theme` attribute to the `html` element
31
+ /** `ThemeManager` handles setting color themes. Note that this component will
32
+ * affect the entire application by setting the internal `data-theme` attribute.
33
+ * Component children are wrapped with `v2` and `v3` iTwinUI `ThemeProvider` components, so all nodes within the tree will have the same theme, and should be using iTwinUI 2.x or later.
34
+ * Specified `ThemeId` will be mapped to iTwinUI `theme` accordingly.
35
+ * Any other string will only apply the `data-theme` attribute to the underlying `html` element
37
36
  * and `ThemeProvider` theme will be set to `inherit`, in this case the application is
38
- * responsible for setting the theme by overriding iTwinUI css variables.
37
+ * responsible for setting the theme, i.e. by using iTwinUI css variables.
39
38
  *
40
- * This React component should wrap {@link ConfigurableUiContent}.
39
+ * This component should wrap {@link ConfigurableUiContent}.
41
40
  *
42
41
  * ```tsx
43
42
  * <ThemeManager>
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA6B;AAC7B,+BAA+B;AAE/B,wDAAqD;AACrD,8DAA2E;AAE3E,uCAAqE;AACrE,8EAA2E;AAG3E,sCAAsC;AACtC,MAAM,wBAAwB,GAA+B;IAC3D,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,OAAO;IAC3B,CAAC,oBAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO;IACvC,CAAC,oBAAU,CAAC,IAAI,CAAC,EAAE,MAAM;IACzB,CAAC,oBAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM;IACrC,CAAC,oBAAU,CAAC,MAAM,CAAC,EAAE,IAAI;IACzB,EAAE,EAAE,IAAI,EAAE,0CAA0C;CACrD,CAAC;AAEF,0CAA0C;AAC1C,MAAM,uBAAuB,GAAa;IACxC,oBAAU,CAAC,gBAAgB;IAC3B,oBAAU,CAAC,iBAAiB;CAC7B,CAAC;AAQF;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAqB;IACpE,MAAM,UAAU,GAAG,IAAA,+CAAsB,EAAC,CAAC,KAAK,EAAE,EAAE;QAClD,mDAAmD;QACnD,OAAO,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,IAAI,sCAA4B,CAAC;IAExE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,aAAa,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE7D,OAAO,CACL,oBAAC,6BAAa,IACZ,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,aAAa,IAAI,SAAS,EACjC,YAAY,EAAE,EAAE,YAAY,EAAE,yBACV,eAAe,EACnC,UAAU,EAAE,IAAI;QAEhB,oBAAC,gCAAe,CAAC,iFAAiF,IAChG,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EACzB,KAAK,EAAE,aAAa,IAAI,SAAS,EACjC,YAAY,EAAE,EAAE,YAAY,EAAE,IAE7B,QAAQ,CACO,CACJ,CACjB,CAAC;AACJ,CAAC;AA/BD,oCA+BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module State\n */\n\nimport \"./ThemeManager.scss\";\nimport * as React from \"react\";\nimport type { ThemeType } from \"@itwin/itwinui-react\";\nimport { ThemeProvider } from \"@itwin/itwinui-react\";\nimport { ThemeProvider as ThemeProviderV2 } from \"@itwin/itwinui-react-v2\";\nimport type { ThemeId } from \"./ThemeId\";\nimport { ColorTheme, SYSTEM_PREFERRED_COLOR_THEME } from \"./ThemeId\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState\";\nimport type { ConfigurableUiContent } from \"../configurableui/ConfigurableUiContent\";\n\n/** Map of ColorTheme to ThemeType. */\nconst colorThemeToThemeTypeMap: { [x: string]: ThemeType } = {\n [ColorTheme.Light]: \"light\",\n [ColorTheme.HighContrastLight]: \"light\",\n [ColorTheme.Dark]: \"dark\",\n [ColorTheme.HighContrastDark]: \"dark\",\n [ColorTheme.System]: \"os\",\n os: \"os\", // handle \"os\" for backwards compatibility\n};\n\n/** List of high contrast color themes. */\nconst highContrastColorThemes: string[] = [\n ColorTheme.HighContrastDark,\n ColorTheme.HighContrastLight,\n];\n\ninterface ThemeManagerProps {\n children?: React.ReactNode;\n /** Uses redux store as a fallback. Defaults to {@link SYSTEM_PREFERRED_COLOR_THEME}. */\n theme?: ThemeId;\n}\n\n/** ThemeManager handles setting color themes and element opacity management. Note that this component will\n * affect the entire application by setting the data-theme attribute to the html element.\n * It also sets an iTwinUI `ThemeProvider` element locally, so all elements\n * within the AppUI tree will have the same theme, and should be using iTwinUI 2.x or later.\n * A `ColorTheme` enum values will configure iTwinUI `ThemeProvider` accordingly.\n * Any other string will only apply the `data-theme` attribute to the `html` element\n * and `ThemeProvider` theme will be set to `inherit`, in this case the application is\n * responsible for setting the theme by overriding iTwinUI css variables.\n *\n * This React component should wrap {@link ConfigurableUiContent}.\n *\n * ```tsx\n * <ThemeManager>\n * <ConfigurableUiContent />\n * </ThemeManager>\n * ```\n * @public\n */\nexport function ThemeManager({ children, ...props }: ThemeManagerProps) {\n const reduxTheme = useReduxFrameworkState((state) => {\n // eslint-disable-next-line deprecation/deprecation\n return state?.configurableUiState.theme;\n });\n const theme = props.theme ?? reduxTheme ?? SYSTEM_PREFERRED_COLOR_THEME;\n\n React.useEffect(() => {\n document.documentElement.setAttribute(\"data-theme\", theme);\n }, [theme]);\n\n const providerTheme = colorThemeToThemeTypeMap[theme];\n const highContrast = highContrastColorThemes.includes(theme);\n\n return (\n <ThemeProvider\n className=\"uifw-root\"\n theme={providerTheme ?? \"inherit\"}\n themeOptions={{ highContrast }}\n data-root-container=\"appui-root-id\"\n includeCss={true}\n >\n <ThemeProviderV2 /* v2 ThemeProvider is required to fix popup styling issues in widget popouts. */\n style={{ height: \"100%\" }}\n theme={providerTheme ?? \"inherit\"}\n themeOptions={{ highContrast }}\n >\n {children}\n </ThemeProviderV2>\n </ThemeProvider>\n );\n}\n"]}
1
+ {"version":3,"file":"ThemeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA6B;AAC7B,+BAA+B;AAE/B,wDAAqD;AACrD,8DAA2E;AAE3E,uCAAqE;AACrE,8EAA2E;AAG3E,sCAAsC;AACtC,MAAM,wBAAwB,GAA+B;IAC3D,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,OAAO;IAC3B,CAAC,oBAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO;IACvC,CAAC,oBAAU,CAAC,IAAI,CAAC,EAAE,MAAM;IACzB,CAAC,oBAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM;IACrC,CAAC,oBAAU,CAAC,MAAM,CAAC,EAAE,IAAI;IACzB,EAAE,EAAE,IAAI,EAAE,0CAA0C;CACrD,CAAC;AAEF,0CAA0C;AAC1C,MAAM,uBAAuB,GAAa;IACxC,oBAAU,CAAC,gBAAgB;IAC3B,oBAAU,CAAC,iBAAiB;CAC7B,CAAC;AAQF;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAqB;IACpE,MAAM,UAAU,GAAG,IAAA,+CAAsB,EAAC,CAAC,KAAK,EAAE,EAAE;QAClD,mDAAmD;QACnD,OAAO,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,IAAI,sCAA4B,CAAC;IAExE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,aAAa,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE7D,OAAO,CACL,oBAAC,6BAAa,IACZ,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,aAAa,IAAI,SAAS,EACjC,YAAY,EAAE,EAAE,YAAY,EAAE,yBACV,eAAe,EACnC,UAAU,EAAE,IAAI;QAEhB,oBAAC,gCAAe,CAAC,iFAAiF,IAChG,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EACzB,KAAK,EAAE,aAAa,IAAI,SAAS,EACjC,YAAY,EAAE,EAAE,YAAY,EAAE,IAE7B,QAAQ,CACO,CACJ,CACjB,CAAC;AACJ,CAAC;AA/BD,oCA+BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module State\n */\n\nimport \"./ThemeManager.scss\";\nimport * as React from \"react\";\nimport type { ThemeType } from \"@itwin/itwinui-react\";\nimport { ThemeProvider } from \"@itwin/itwinui-react\";\nimport { ThemeProvider as ThemeProviderV2 } from \"@itwin/itwinui-react-v2\";\nimport type { ThemeId } from \"./ThemeId\";\nimport { ColorTheme, SYSTEM_PREFERRED_COLOR_THEME } from \"./ThemeId\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState\";\nimport type { ConfigurableUiContent } from \"../configurableui/ConfigurableUiContent\";\n\n/** Map of ColorTheme to ThemeType. */\nconst colorThemeToThemeTypeMap: { [x: string]: ThemeType } = {\n [ColorTheme.Light]: \"light\",\n [ColorTheme.HighContrastLight]: \"light\",\n [ColorTheme.Dark]: \"dark\",\n [ColorTheme.HighContrastDark]: \"dark\",\n [ColorTheme.System]: \"os\",\n os: \"os\", // handle \"os\" for backwards compatibility\n};\n\n/** List of high contrast color themes. */\nconst highContrastColorThemes: string[] = [\n ColorTheme.HighContrastDark,\n ColorTheme.HighContrastLight,\n];\n\ninterface ThemeManagerProps {\n children?: React.ReactNode;\n /** Uses redux store as a fallback. Defaults to {@link SYSTEM_PREFERRED_COLOR_THEME}. */\n theme?: ThemeId;\n}\n\n/** `ThemeManager` handles setting color themes. Note that this component will\n * affect the entire application by setting the internal `data-theme` attribute.\n * Component children are wrapped with `v2` and `v3` iTwinUI `ThemeProvider` components, so all nodes within the tree will have the same theme, and should be using iTwinUI 2.x or later.\n * Specified `ThemeId` will be mapped to iTwinUI `theme` accordingly.\n * Any other string will only apply the `data-theme` attribute to the underlying `html` element\n * and `ThemeProvider` theme will be set to `inherit`, in this case the application is\n * responsible for setting the theme, i.e. by using iTwinUI css variables.\n *\n * This component should wrap {@link ConfigurableUiContent}.\n *\n * ```tsx\n * <ThemeManager>\n * <ConfigurableUiContent />\n * </ThemeManager>\n * ```\n * @public\n */\nexport function ThemeManager({ children, ...props }: ThemeManagerProps) {\n const reduxTheme = useReduxFrameworkState((state) => {\n // eslint-disable-next-line deprecation/deprecation\n return state?.configurableUiState.theme;\n });\n const theme = props.theme ?? reduxTheme ?? SYSTEM_PREFERRED_COLOR_THEME;\n\n React.useEffect(() => {\n document.documentElement.setAttribute(\"data-theme\", theme);\n }, [theme]);\n\n const providerTheme = colorThemeToThemeTypeMap[theme];\n const highContrast = highContrastColorThemes.includes(theme);\n\n return (\n <ThemeProvider\n className=\"uifw-root\"\n theme={providerTheme ?? \"inherit\"}\n themeOptions={{ highContrast }}\n data-root-container=\"appui-root-id\"\n includeCss={true}\n >\n <ThemeProviderV2 /* v2 ThemeProvider is required to fix popup styling issues in widget popouts. */\n style={{ height: \"100%\" }}\n theme={providerTheme ?? \"inherit\"}\n themeOptions={{ highContrast }}\n >\n {children}\n </ThemeProviderV2>\n </ThemeProvider>\n );\n}\n"]}
@@ -6,6 +6,7 @@ import type { ToolbarItem } from "./ToolbarItem";
6
6
  import { ToolbarOrientation, ToolbarUsage } from "./ToolbarItem";
7
7
  /** Properties for the [[ToolbarComposer]] React components
8
8
  * @public
9
+ * @deprecated in 4.17.0. Use `React.ComponentProps<typeof ToolbarComposer>`
9
10
  */
10
11
  export interface ExtensibleToolbarProps {
11
12
  /** Toolbar items. */
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarComposer.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarComposer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,kBAAkB,EAClB,YAAY,EACb,MAAM,eAAe,CAAC;AA4JvB;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qBAAqB;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,8FAA8F;IAC9F,KAAK,EAAE,YAAY,CAAC;IACpB,2BAA2B;IAC3B,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,sBAAsB,qBA8C5D"}
1
+ {"version":3,"file":"ToolbarComposer.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarComposer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,kBAAkB,EAClB,YAAY,EACb,MAAM,eAAe,CAAC;AA4JvB;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,qBAAqB;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,8FAA8F;IAC9F,KAAK,EAAE,YAAY,CAAC;IACpB,2BAA2B;IAC3B,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;;;GAIG;AAEH,wBAAgB,eAAe,CAAC,KAAK,EAAE,sBAAsB,qBA8C5D"}
@@ -130,6 +130,7 @@ const useSnapWidgetOpacitySetting = () => {
130
130
  * @note Overrides `isActive` property based on the active tool id.
131
131
  * @public
132
132
  */
133
+ // eslint-disable-next-line deprecation/deprecation
133
134
  function ToolbarComposer(props) {
134
135
  const { usage, orientation } = props;
135
136
  // process items from addon UI providers
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarComposer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,8DAKiC;AACjC,sDAA8D;AAC9D,gDAA6C;AAC7C,uDAAkE;AAMlE,+CAKuB;AACvB,uCAAoC;AACpC,+EAA4E;AAC5E,6FAA0F;AAE1F,SAAS,6BAA6B,CACpC,KAAmB,EACnB,aAA0D;IAE1D,MAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,IAAA,gCAAkB,EAAC,WAAW,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,6BAA6B,CAC/C,WAAW,CAAC,KAAK,EACjB,aAAa,CACd,CAAC;QACF,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,iBAAiB,KAAK,WAAW,CAAC,EAAE,EAAE,CAAC;gBAC/C,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,8EAA8E;YAC9E,YAAY;iBACT,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;iBACrB,OAAO,EAAE;iBACT,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtB,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC5C,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;QACP,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,OAAyB;IAC3C,MAAM,UAAU,GAAgD,EAAE,CAAC;IACnE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,IAAI,IAAA,gCAAkB,EAAC,IAAI,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;;YAC3D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACtD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAiB;IACzC,MAAM,UAAU,GAAG,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAC7E,OAAO,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAChD,CAAC;AAED,SAAS,SAAS,CAAC,KAAiC;IAClD,OAAO,CAAC,GAAG,KAAK,CAAC;SACd,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,IAAA,gCAAkB,EAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,iBAAiB,CACxB,KAAoB,EACpB,aAAuD;IAEvD,OAAO,CAAC,OAAoB,EAAE,EAAE;QAC9B,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7D,sGAAsG;YACtG,MAAM,WAAW,GAAG,IAAA,gCAAkB,EAAC,OAAO,CAAC;gBAC7C,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;gBACrB,CAAC,CAAC,OAAO,CAAC;YACZ,IACE,CAAC,IAAA,gCAAkB,EAAC,WAAW,CAAC,IAAI,IAAA,iCAAmB,EAAC,WAAW,CAAC,CAAC;gBACrE,WAAW,CAAC,iBAAiB;gBAE7B,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;gBAC7B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,SAAS,YAAY,CACnB,YAAwC,EACxC,UAAsC;IAEtC,IAAI,KAAK,GAAkB,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAgD,EAAE,CAAC;IAEtE,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9D,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5D,2IAA2I;IAC3I,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,KAAK,GAAG,6BAA6B,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAE5D,aAAa,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;YACpC,qBAAM,CAAC,UAAU,CACf,iBAAiB,EACjB,2BAA2B,WAAW,CAAC,iBAAkB,yBACvD,WAAW,CAAC,EACd,iCAAiC,CAClC,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,0BAA0B,GAAG,GAAG,EAAE;IACtC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAC5D,yBAAW,CAAC,UAAU,CAAC,mBAAmB,CAAC,8CAA8C;KAC1F,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,yBAAW,CAAC,qBAAqB,CAAC,WAAW,CAC3C,GAAG,EAAE,CAAC,mBAAmB,CAAC,yBAAW,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,8CAA8C;SACrH,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,GAAG,EAAE;IACvC,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAC9D,yBAAW,CAAC,UAAU,CAAC,iBAAiB,CACzC,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,yBAAW,CAAC,qBAAqB,CAAC,WAAW,CAAC,GAAG,EAAE,CACjD,oBAAoB,CAAC,yBAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAC/D,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAcF;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAA6B;IAC3D,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAErC,wCAAwC;IACxC,MAAM,UAAU,GAAG,IAAA,uEAAkC,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAClC,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAE9B,MAAM,KAAK,GAAG,IAAA,yDAA2B,EAAC,QAAQ,EAAE,yBAAW,CAAC,WAAW,CAAC,CAAC;IAE7E,MAAM,kBAAkB,GACtB,WAAW,KAAK,gCAAkB,CAAC,UAAU;QAC3C,CAAC,CAAC,8BAAW,CAAC,UAAU;QACxB,CAAC,CAAC,8BAAW,CAAC,QAAQ,CAAC;IAC3B,MAAM,SAAS,GACb,kBAAkB,KAAK,8BAAW,CAAC,UAAU;QAC3C,CAAC,CAAC,4BAAS,CAAC,MAAM;QAClB,CAAC,CAAC,KAAK,KAAK,0BAAY,CAAC,cAAc;YACvC,CAAC,CAAC,4BAAS,CAAC,IAAI;YAChB,CAAC,CAAC,4BAAS,CAAC,KAAK,CAAC;IACtB,MAAM,cAAc,GAClB,kBAAkB,KAAK,8BAAW,CAAC,UAAU;QAC7C,KAAK,KAAK,0BAAY,CAAC,cAAc;QACnC,CAAC,CAAC,wCAAqB,CAAC,GAAG;QAC3B,CAAC,CAAC,wCAAqB,CAAC,KAAK,CAAC;IAClC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,+CAA6B,CAAC,CAAC;IACtE,MAAM,mBAAmB,GAAG,0BAA0B,EAAE,CAAC;IACzD,MAAM,iBAAiB,GAAG,2BAA2B,EAAE,CAAC;IAExD,OAAO,CACL,oBAAC,iBAAO,IACN,cAAc,EAAE,IAAI,EACpB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,aAAa,EACjC,qBAAqB,EACnB,CAAC,mBAAmB,IAAI,iBAAiB,CAAC;YAC1C,CAAC,8BAAe,CAAC,eAAe;YAC9B,CAAC,CAAC,wCAAqB,CAAC,SAAS;YACjC,CAAC,CAAC,wCAAqB,CAAC,QAAQ,GAEpC,CACH,CAAC;AACJ,CAAC;AA9CD,0CA8CC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport * as React from \"react\";\nimport {\n Direction,\n Orientation,\n ToolbarOpacitySetting,\n ToolbarPanelAlignment,\n} from \"@itwin/components-react\";\nimport { Logger, ProcessDetector } from \"@itwin/core-bentley\";\nimport { UiFramework } from \"../UiFramework\";\nimport { ToolbarDragInteractionContext } from \"./DragInteraction\";\nimport type {\n ToolbarActionItem,\n ToolbarGroupItem,\n ToolbarItem,\n} from \"./ToolbarItem\";\nimport {\n isToolbarActionItem,\n isToolbarGroupItem,\n ToolbarOrientation,\n ToolbarUsage,\n} from \"./ToolbarItem\";\nimport { Toolbar } from \"./Toolbar\";\nimport { useActiveToolIdSynchedItems } from \"./useActiveToolIdSynchedItems\";\nimport { useActiveStageProvidedToolbarItems } from \"./useActiveStageProvidedToolbarItems\";\n\nfunction addItemToSpecifiedParentGroup<T extends ToolbarItem>(\n items: readonly T[],\n groupChildren: Array<ToolbarActionItem | ToolbarGroupItem>\n): T[] {\n const outItems: T[] = [];\n for (const toolbarItem of items) {\n if (!isToolbarGroupItem(toolbarItem)) {\n outItems.push(toolbarItem);\n continue;\n }\n\n const newChildren = addItemToSpecifiedParentGroup(\n toolbarItem.items,\n groupChildren\n );\n const foundIndices: number[] = [];\n\n groupChildren.forEach((entry, index) => {\n if (entry.parentGroupItemId === toolbarItem.id) {\n foundIndices.push(index);\n }\n });\n\n if (foundIndices.length) {\n // process in reverse order so groupChildren can be reduced as we find matches\n foundIndices\n .sort((a, b) => a - b)\n .reverse()\n .forEach((foundIndex) => {\n newChildren.push(groupChildren[foundIndex]);\n groupChildren.splice(foundIndex);\n });\n }\n\n outItems.push({ ...toolbarItem, items: newChildren });\n }\n return outItems;\n}\n\nfunction cloneGroup(inGroup: ToolbarGroupItem): ToolbarGroupItem {\n const childItems: Array<ToolbarActionItem | ToolbarGroupItem> = [];\n inGroup.items.forEach((item) => {\n if (isToolbarGroupItem(item)) childItems.push(cloneGroup(item));\n else childItems.push(item);\n });\n\n const clonedGroup = { ...inGroup, items: childItems };\n return clonedGroup;\n}\n\nfunction getItemSortValue(item: ToolbarItem) {\n const groupValue = undefined === item.groupPriority ? 0 : item.groupPriority;\n return groupValue * 10000 + item.itemPriority;\n}\n\nfunction sortItems(items: ReadonlyArray<ToolbarItem>): ToolbarItem[] {\n return [...items]\n .sort((a, b) => getItemSortValue(a) - getItemSortValue(b))\n .map((i) => {\n if (isToolbarGroupItem(i)) {\n return { ...i, items: sortItems(i.items) };\n }\n return i;\n });\n}\n\n/**\n * Create a forEach handler that will add every element of an array of ToolbarItems\n * to a list of items that can then be replaced in its proper place, ensuring that\n * the same item, from different list, is not added multiple times.\n * @param items Output list of items\n * @param groupChildren Output list of group children to redistribute.\n * @returns Array<ToolbarItem>.forEach handler.\n */\nfunction addIfNotDuplicate(\n items: ToolbarItem[],\n groupChildren: (ToolbarActionItem | ToolbarGroupItem)[]\n): (value: ToolbarItem) => void {\n return (srcItem: ToolbarItem) => {\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\n // if the default item is a group that an addon may insert into copy it so we don't mess with original\n const toolbarItem = isToolbarGroupItem(srcItem)\n ? cloneGroup(srcItem)\n : srcItem;\n if (\n (isToolbarGroupItem(toolbarItem) || isToolbarActionItem(toolbarItem)) &&\n toolbarItem.parentGroupItemId\n )\n groupChildren.push(toolbarItem);\n else items.push(toolbarItem);\n }\n };\n}\n\n/** local function to combine items from Stage and from Extensions */\nfunction combineItems(\n defaultItems: ReadonlyArray<ToolbarItem>,\n addonItems: ReadonlyArray<ToolbarItem>\n): ToolbarItem[] {\n let items: ToolbarItem[] = [];\n const groupChildren: Array<ToolbarActionItem | ToolbarGroupItem> = [];\n\n defaultItems.forEach(addIfNotDuplicate(items, groupChildren));\n addonItems.forEach(addIfNotDuplicate(items, groupChildren));\n\n // if an item from an addon has specified a parent group then try to find it and insert it. If no parent is found, add item at root level.\n if (groupChildren.length) {\n items = addItemToSpecifiedParentGroup(items, groupChildren);\n\n groupChildren.forEach((toolbarItem) => {\n Logger.logWarning(\n \"ToolbarComposer\",\n `Requested Parent Group [${toolbarItem.parentGroupItemId!}] not found, so item [${\n toolbarItem.id\n }] is added directly to toolbar.`\n );\n items.push(toolbarItem);\n });\n }\n\n return sortItems(items);\n}\n\nconst useProximityOpacitySetting = () => {\n const [proximityOpacity, setProximityOpacity] = React.useState(\n UiFramework.visibility.useProximityOpacity // eslint-disable-line deprecation/deprecation\n );\n\n React.useEffect(() => {\n UiFramework.onUiVisibilityChanged.addListener(\n () => setProximityOpacity(UiFramework.visibility.useProximityOpacity) // eslint-disable-line deprecation/deprecation\n );\n }, []);\n\n return proximityOpacity;\n};\n\nconst useSnapWidgetOpacitySetting = () => {\n const [snapWidgetOpacity, setSnapWidgetOpacity] = React.useState(\n UiFramework.visibility.snapWidgetOpacity\n );\n\n React.useEffect(() => {\n UiFramework.onUiVisibilityChanged.addListener(() =>\n setSnapWidgetOpacity(UiFramework.visibility.snapWidgetOpacity)\n );\n }, []);\n\n return snapWidgetOpacity;\n};\n\n/** Properties for the [[ToolbarComposer]] React components\n * @public\n */\nexport interface ExtensibleToolbarProps {\n /** Toolbar items. */\n items: ToolbarItem[];\n /** Toolbar usage based on which additional toolbar items are added from UI item providers. */\n usage: ToolbarUsage;\n /** Toolbar orientation. */\n orientation: ToolbarOrientation;\n}\n\n/**\n * Toolbar that is populated and maintained by UI item providers.\n * @note Overrides `isActive` property based on the active tool id.\n * @public\n */\nexport function ToolbarComposer(props: ExtensibleToolbarProps) {\n const { usage, orientation } = props;\n\n // process items from addon UI providers\n const addonItems = useActiveStageProvidedToolbarItems(usage, orientation);\n\n const allItems = React.useMemo(() => {\n return combineItems(props.items, addonItems);\n }, [props.items, addonItems]);\n\n const items = useActiveToolIdSynchedItems(allItems, UiFramework.frontstages);\n\n const toolbarOrientation =\n orientation === ToolbarOrientation.Horizontal\n ? Orientation.Horizontal\n : Orientation.Vertical;\n const expandsTo =\n toolbarOrientation === Orientation.Horizontal\n ? Direction.Bottom\n : usage === ToolbarUsage.ViewNavigation\n ? Direction.Left\n : Direction.Right;\n const panelAlignment =\n toolbarOrientation === Orientation.Horizontal &&\n usage === ToolbarUsage.ViewNavigation\n ? ToolbarPanelAlignment.End\n : ToolbarPanelAlignment.Start;\n const isDragEnabled = React.useContext(ToolbarDragInteractionContext);\n const useProximityOpacity = useProximityOpacitySetting();\n const snapWidgetOpacity = useSnapWidgetOpacitySetting();\n\n return (\n <Toolbar\n enableOverflow={true}\n expandsTo={expandsTo}\n panelAlignment={panelAlignment}\n items={items}\n useDragInteraction={isDragEnabled}\n toolbarOpacitySetting={\n (useProximityOpacity || snapWidgetOpacity) &&\n !ProcessDetector.isMobileBrowser\n ? ToolbarOpacitySetting.Proximity\n : ToolbarOpacitySetting.Defaults\n }\n />\n );\n}\n"]}
1
+ {"version":3,"file":"ToolbarComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarComposer.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,8DAKiC;AACjC,sDAA8D;AAC9D,gDAA6C;AAC7C,uDAAkE;AAMlE,+CAKuB;AACvB,uCAAoC;AACpC,+EAA4E;AAC5E,6FAA0F;AAE1F,SAAS,6BAA6B,CACpC,KAAmB,EACnB,aAA0D;IAE1D,MAAM,QAAQ,GAAQ,EAAE,CAAC;IACzB,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,IAAA,gCAAkB,EAAC,WAAW,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,6BAA6B,CAC/C,WAAW,CAAC,KAAK,EACjB,aAAa,CACd,CAAC;QACF,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,iBAAiB,KAAK,WAAW,CAAC,EAAE,EAAE,CAAC;gBAC/C,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,8EAA8E;YAC9E,YAAY;iBACT,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;iBACrB,OAAO,EAAE;iBACT,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtB,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC5C,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;QACP,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,OAAyB;IAC3C,MAAM,UAAU,GAAgD,EAAE,CAAC;IACnE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,IAAI,IAAA,gCAAkB,EAAC,IAAI,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;;YAC3D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACtD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAiB;IACzC,MAAM,UAAU,GAAG,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAC7E,OAAO,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAChD,CAAC;AAED,SAAS,SAAS,CAAC,KAAiC;IAClD,OAAO,CAAC,GAAG,KAAK,CAAC;SACd,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,IAAA,gCAAkB,EAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,iBAAiB,CACxB,KAAoB,EACpB,aAAuD;IAEvD,OAAO,CAAC,OAAoB,EAAE,EAAE;QAC9B,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7D,sGAAsG;YACtG,MAAM,WAAW,GAAG,IAAA,gCAAkB,EAAC,OAAO,CAAC;gBAC7C,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;gBACrB,CAAC,CAAC,OAAO,CAAC;YACZ,IACE,CAAC,IAAA,gCAAkB,EAAC,WAAW,CAAC,IAAI,IAAA,iCAAmB,EAAC,WAAW,CAAC,CAAC;gBACrE,WAAW,CAAC,iBAAiB;gBAE7B,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;gBAC7B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,SAAS,YAAY,CACnB,YAAwC,EACxC,UAAsC;IAEtC,IAAI,KAAK,GAAkB,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAgD,EAAE,CAAC;IAEtE,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9D,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5D,2IAA2I;IAC3I,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,KAAK,GAAG,6BAA6B,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAE5D,aAAa,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;YACpC,qBAAM,CAAC,UAAU,CACf,iBAAiB,EACjB,2BAA2B,WAAW,CAAC,iBAAkB,yBACvD,WAAW,CAAC,EACd,iCAAiC,CAClC,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,0BAA0B,GAAG,GAAG,EAAE;IACtC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAC5D,yBAAW,CAAC,UAAU,CAAC,mBAAmB,CAAC,8CAA8C;KAC1F,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,yBAAW,CAAC,qBAAqB,CAAC,WAAW,CAC3C,GAAG,EAAE,CAAC,mBAAmB,CAAC,yBAAW,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,8CAA8C;SACrH,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,GAAG,EAAE;IACvC,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAC9D,yBAAW,CAAC,UAAU,CAAC,iBAAiB,CACzC,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,yBAAW,CAAC,qBAAqB,CAAC,WAAW,CAAC,GAAG,EAAE,CACjD,oBAAoB,CAAC,yBAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAC/D,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAeF;;;;GAIG;AACH,mDAAmD;AACnD,SAAgB,eAAe,CAAC,KAA6B;IAC3D,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAErC,wCAAwC;IACxC,MAAM,UAAU,GAAG,IAAA,uEAAkC,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAClC,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IAE9B,MAAM,KAAK,GAAG,IAAA,yDAA2B,EAAC,QAAQ,EAAE,yBAAW,CAAC,WAAW,CAAC,CAAC;IAE7E,MAAM,kBAAkB,GACtB,WAAW,KAAK,gCAAkB,CAAC,UAAU;QAC3C,CAAC,CAAC,8BAAW,CAAC,UAAU;QACxB,CAAC,CAAC,8BAAW,CAAC,QAAQ,CAAC;IAC3B,MAAM,SAAS,GACb,kBAAkB,KAAK,8BAAW,CAAC,UAAU;QAC3C,CAAC,CAAC,4BAAS,CAAC,MAAM;QAClB,CAAC,CAAC,KAAK,KAAK,0BAAY,CAAC,cAAc;YACvC,CAAC,CAAC,4BAAS,CAAC,IAAI;YAChB,CAAC,CAAC,4BAAS,CAAC,KAAK,CAAC;IACtB,MAAM,cAAc,GAClB,kBAAkB,KAAK,8BAAW,CAAC,UAAU;QAC7C,KAAK,KAAK,0BAAY,CAAC,cAAc;QACnC,CAAC,CAAC,wCAAqB,CAAC,GAAG;QAC3B,CAAC,CAAC,wCAAqB,CAAC,KAAK,CAAC;IAClC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,+CAA6B,CAAC,CAAC;IACtE,MAAM,mBAAmB,GAAG,0BAA0B,EAAE,CAAC;IACzD,MAAM,iBAAiB,GAAG,2BAA2B,EAAE,CAAC;IAExD,OAAO,CACL,oBAAC,iBAAO,IACN,cAAc,EAAE,IAAI,EACpB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,aAAa,EACjC,qBAAqB,EACnB,CAAC,mBAAmB,IAAI,iBAAiB,CAAC;YAC1C,CAAC,8BAAe,CAAC,eAAe;YAC9B,CAAC,CAAC,wCAAqB,CAAC,SAAS;YACjC,CAAC,CAAC,wCAAqB,CAAC,QAAQ,GAEpC,CACH,CAAC;AACJ,CAAC;AA9CD,0CA8CC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport * as React from \"react\";\nimport {\n Direction,\n Orientation,\n ToolbarOpacitySetting,\n ToolbarPanelAlignment,\n} from \"@itwin/components-react\";\nimport { Logger, ProcessDetector } from \"@itwin/core-bentley\";\nimport { UiFramework } from \"../UiFramework\";\nimport { ToolbarDragInteractionContext } from \"./DragInteraction\";\nimport type {\n ToolbarActionItem,\n ToolbarGroupItem,\n ToolbarItem,\n} from \"./ToolbarItem\";\nimport {\n isToolbarActionItem,\n isToolbarGroupItem,\n ToolbarOrientation,\n ToolbarUsage,\n} from \"./ToolbarItem\";\nimport { Toolbar } from \"./Toolbar\";\nimport { useActiveToolIdSynchedItems } from \"./useActiveToolIdSynchedItems\";\nimport { useActiveStageProvidedToolbarItems } from \"./useActiveStageProvidedToolbarItems\";\n\nfunction addItemToSpecifiedParentGroup<T extends ToolbarItem>(\n items: readonly T[],\n groupChildren: Array<ToolbarActionItem | ToolbarGroupItem>\n): T[] {\n const outItems: T[] = [];\n for (const toolbarItem of items) {\n if (!isToolbarGroupItem(toolbarItem)) {\n outItems.push(toolbarItem);\n continue;\n }\n\n const newChildren = addItemToSpecifiedParentGroup(\n toolbarItem.items,\n groupChildren\n );\n const foundIndices: number[] = [];\n\n groupChildren.forEach((entry, index) => {\n if (entry.parentGroupItemId === toolbarItem.id) {\n foundIndices.push(index);\n }\n });\n\n if (foundIndices.length) {\n // process in reverse order so groupChildren can be reduced as we find matches\n foundIndices\n .sort((a, b) => a - b)\n .reverse()\n .forEach((foundIndex) => {\n newChildren.push(groupChildren[foundIndex]);\n groupChildren.splice(foundIndex);\n });\n }\n\n outItems.push({ ...toolbarItem, items: newChildren });\n }\n return outItems;\n}\n\nfunction cloneGroup(inGroup: ToolbarGroupItem): ToolbarGroupItem {\n const childItems: Array<ToolbarActionItem | ToolbarGroupItem> = [];\n inGroup.items.forEach((item) => {\n if (isToolbarGroupItem(item)) childItems.push(cloneGroup(item));\n else childItems.push(item);\n });\n\n const clonedGroup = { ...inGroup, items: childItems };\n return clonedGroup;\n}\n\nfunction getItemSortValue(item: ToolbarItem) {\n const groupValue = undefined === item.groupPriority ? 0 : item.groupPriority;\n return groupValue * 10000 + item.itemPriority;\n}\n\nfunction sortItems(items: ReadonlyArray<ToolbarItem>): ToolbarItem[] {\n return [...items]\n .sort((a, b) => getItemSortValue(a) - getItemSortValue(b))\n .map((i) => {\n if (isToolbarGroupItem(i)) {\n return { ...i, items: sortItems(i.items) };\n }\n return i;\n });\n}\n\n/**\n * Create a forEach handler that will add every element of an array of ToolbarItems\n * to a list of items that can then be replaced in its proper place, ensuring that\n * the same item, from different list, is not added multiple times.\n * @param items Output list of items\n * @param groupChildren Output list of group children to redistribute.\n * @returns Array<ToolbarItem>.forEach handler.\n */\nfunction addIfNotDuplicate(\n items: ToolbarItem[],\n groupChildren: (ToolbarActionItem | ToolbarGroupItem)[]\n): (value: ToolbarItem) => void {\n return (srcItem: ToolbarItem) => {\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\n // if the default item is a group that an addon may insert into copy it so we don't mess with original\n const toolbarItem = isToolbarGroupItem(srcItem)\n ? cloneGroup(srcItem)\n : srcItem;\n if (\n (isToolbarGroupItem(toolbarItem) || isToolbarActionItem(toolbarItem)) &&\n toolbarItem.parentGroupItemId\n )\n groupChildren.push(toolbarItem);\n else items.push(toolbarItem);\n }\n };\n}\n\n/** local function to combine items from Stage and from Extensions */\nfunction combineItems(\n defaultItems: ReadonlyArray<ToolbarItem>,\n addonItems: ReadonlyArray<ToolbarItem>\n): ToolbarItem[] {\n let items: ToolbarItem[] = [];\n const groupChildren: Array<ToolbarActionItem | ToolbarGroupItem> = [];\n\n defaultItems.forEach(addIfNotDuplicate(items, groupChildren));\n addonItems.forEach(addIfNotDuplicate(items, groupChildren));\n\n // if an item from an addon has specified a parent group then try to find it and insert it. If no parent is found, add item at root level.\n if (groupChildren.length) {\n items = addItemToSpecifiedParentGroup(items, groupChildren);\n\n groupChildren.forEach((toolbarItem) => {\n Logger.logWarning(\n \"ToolbarComposer\",\n `Requested Parent Group [${toolbarItem.parentGroupItemId!}] not found, so item [${\n toolbarItem.id\n }] is added directly to toolbar.`\n );\n items.push(toolbarItem);\n });\n }\n\n return sortItems(items);\n}\n\nconst useProximityOpacitySetting = () => {\n const [proximityOpacity, setProximityOpacity] = React.useState(\n UiFramework.visibility.useProximityOpacity // eslint-disable-line deprecation/deprecation\n );\n\n React.useEffect(() => {\n UiFramework.onUiVisibilityChanged.addListener(\n () => setProximityOpacity(UiFramework.visibility.useProximityOpacity) // eslint-disable-line deprecation/deprecation\n );\n }, []);\n\n return proximityOpacity;\n};\n\nconst useSnapWidgetOpacitySetting = () => {\n const [snapWidgetOpacity, setSnapWidgetOpacity] = React.useState(\n UiFramework.visibility.snapWidgetOpacity\n );\n\n React.useEffect(() => {\n UiFramework.onUiVisibilityChanged.addListener(() =>\n setSnapWidgetOpacity(UiFramework.visibility.snapWidgetOpacity)\n );\n }, []);\n\n return snapWidgetOpacity;\n};\n\n/** Properties for the [[ToolbarComposer]] React components\n * @public\n * @deprecated in 4.17.0. Use `React.ComponentProps<typeof ToolbarComposer>`\n */\nexport interface ExtensibleToolbarProps {\n /** Toolbar items. */\n items: ToolbarItem[];\n /** Toolbar usage based on which additional toolbar items are added from UI item providers. */\n usage: ToolbarUsage;\n /** Toolbar orientation. */\n orientation: ToolbarOrientation;\n}\n\n/**\n * Toolbar that is populated and maintained by UI item providers.\n * @note Overrides `isActive` property based on the active tool id.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function ToolbarComposer(props: ExtensibleToolbarProps) {\n const { usage, orientation } = props;\n\n // process items from addon UI providers\n const addonItems = useActiveStageProvidedToolbarItems(usage, orientation);\n\n const allItems = React.useMemo(() => {\n return combineItems(props.items, addonItems);\n }, [props.items, addonItems]);\n\n const items = useActiveToolIdSynchedItems(allItems, UiFramework.frontstages);\n\n const toolbarOrientation =\n orientation === ToolbarOrientation.Horizontal\n ? Orientation.Horizontal\n : Orientation.Vertical;\n const expandsTo =\n toolbarOrientation === Orientation.Horizontal\n ? Direction.Bottom\n : usage === ToolbarUsage.ViewNavigation\n ? Direction.Left\n : Direction.Right;\n const panelAlignment =\n toolbarOrientation === Orientation.Horizontal &&\n usage === ToolbarUsage.ViewNavigation\n ? ToolbarPanelAlignment.End\n : ToolbarPanelAlignment.Start;\n const isDragEnabled = React.useContext(ToolbarDragInteractionContext);\n const useProximityOpacity = useProximityOpacitySetting();\n const snapWidgetOpacity = useSnapWidgetOpacitySetting();\n\n return (\n <Toolbar\n enableOverflow={true}\n expandsTo={expandsTo}\n panelAlignment={panelAlignment}\n items={items}\n useDragInteraction={isDragEnabled}\n toolbarOpacitySetting={\n (useProximityOpacity || snapWidgetOpacity) &&\n !ProcessDetector.isMobileBrowser\n ? ToolbarOpacitySetting.Proximity\n : ToolbarOpacitySetting.Defaults\n }\n />\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarItemsManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarItemsManager.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,eAAe,CAAC;AAQvB;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CAC5C;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAG9B,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAM;gBAEtC,KAAK,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC;IAI9C;;OAEG;IACH,SAAgB,cAAc,iBACrB,uBAAuB,KAAK,IAAI,EACrC;IAEJ,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACI,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC;IAIlD,yCAAyC;IACzC,IAAW,KAAK,IAAI,aAAa,CAAC,WAAW,CAAC,CAE7C;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EAEjD;IAEM,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;IAkBhE,uCAAuC;IAChC,MAAM,CACX,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAUvE,gBAAgB;IACT,SAAS;IAIhB,OAAO,CAAC,MAAM,CAAC,aAAa;WA0Bd,oBAAoB,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,EAAE;IAM3E,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA4ChC,OAAO,CAAC,4BAA4B;IA2C7B,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;IAWjD,OAAO,CAAC,MAAM,CAAC,wCAAwC;IAoBvD,OAAO,CAAC,6BAA6B;IAwBrC,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAyBvC,eAAe,CAAC,MAAM,EAAE,MAAM;CAyBtC"}
1
+ {"version":3,"file":"ToolbarItemsManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarItemsManager.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,eAAe,CAAC;AAOvB;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CAC5C;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAG9B,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAM;gBAEtC,KAAK,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC;IAI9C;;OAEG;IACH,SAAgB,cAAc,iBACrB,uBAAuB,KAAK,IAAI,EACrC;IAEJ,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACI,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC;IAIlD,yCAAyC;IACzC,IAAW,KAAK,IAAI,aAAa,CAAC,WAAW,CAAC,CAE7C;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EAEjD;IAEM,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;IAkBhE,uCAAuC;IAChC,MAAM,CACX,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAUvE,gBAAgB;IACT,SAAS;IAIhB,OAAO,CAAC,MAAM,CAAC,aAAa;WA2Bd,oBAAoB,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,EAAE;IAM3E,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA8ChC,OAAO,CAAC,4BAA4B;IA6C7B,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;IAWjD,OAAO,CAAC,MAAM,CAAC,wCAAwC;IAoBvD,OAAO,CAAC,6BAA6B;IAwBrC,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAyBvC,eAAe,CAAC,MAAM,EAAE,MAAM;CAyBtC"}
@@ -10,8 +10,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.ToolbarItemsManager = void 0;
11
11
  const appui_abstract_1 = require("@itwin/appui-abstract");
12
12
  const core_bentley_1 = require("@itwin/core-bentley");
13
+ const core_react_1 = require("@itwin/core-react");
13
14
  const ToolbarItem_1 = require("./ToolbarItem");
14
- const ConditionalValue_1 = require("../shared/ConditionalValue");
15
15
  function isInstance(args) {
16
16
  return !Array.isArray(args);
17
17
  }
@@ -94,8 +94,9 @@ class ToolbarItemsManager {
94
94
  }
95
95
  else if (entry instanceof appui_abstract_1.ConditionalStringValue) {
96
96
  entry.syncEventIds.forEach((eventId) => eventIds.add(eventId.toLowerCase()));
97
+ // eslint-disable-next-line deprecation/deprecation
97
98
  }
98
- else if (entry instanceof ConditionalValue_1.ConditionalIconValue) {
99
+ else if (entry instanceof core_react_1.ConditionalIconItem) {
99
100
  entry.syncEventIds.forEach((eventId) => eventIds.add(eventId.toLowerCase()));
100
101
  }
101
102
  }
@@ -133,9 +134,11 @@ class ToolbarItemsManager {
133
134
  else if (entry instanceof appui_abstract_1.ConditionalStringValue) {
134
135
  if (appui_abstract_1.ConditionalStringValue.refreshValue(entry, eventIds))
135
136
  itemsUpdated = true;
137
+ // eslint-disable-next-line deprecation/deprecation
136
138
  }
137
- else if (entry instanceof ConditionalValue_1.ConditionalIconValue) {
138
- if (ConditionalValue_1.ConditionalIconValue.refreshValue(entry, eventIds))
139
+ else if (entry instanceof core_react_1.ConditionalIconItem) {
140
+ // eslint-disable-next-line deprecation/deprecation
141
+ if (core_react_1.ConditionalIconItem.refreshValue(entry, eventIds))
139
142
  itemsUpdated = true;
140
143
  }
141
144
  }
@@ -170,9 +173,11 @@ class ToolbarItemsManager {
170
173
  else if (entry instanceof appui_abstract_1.ConditionalStringValue) {
171
174
  if (appui_abstract_1.ConditionalStringValue.refreshValue(entry, eventIds))
172
175
  updateRequired = true;
176
+ // eslint-disable-next-line deprecation/deprecation
173
177
  }
174
- else if (entry instanceof ConditionalValue_1.ConditionalIconValue) {
175
- if (ConditionalValue_1.ConditionalIconValue.refreshValue(entry, eventIds))
178
+ else if (entry instanceof core_react_1.ConditionalIconItem) {
179
+ // eslint-disable-next-line deprecation/deprecation
180
+ if (core_react_1.ConditionalIconItem.refreshValue(entry, eventIds))
176
181
  updateRequired = true;
177
182
  }
178
183
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarItemsManager.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarItemsManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type {\n ToolbarActionItem,\n ToolbarGroupItem,\n ToolbarItem,\n} from \"./ToolbarItem\";\nimport { isToolbarGroupItem } from \"./ToolbarItem\";\nimport { ConditionalIconValue } from \"../shared/ConditionalValue\";\n\nfunction isInstance<T>(args: T | ReadonlyArray<T>): args is T {\n return !Array.isArray(args);\n}\n\n/** Arguments of [[ToolbarItemsManager.onChanged]] event.\n * @internal\n */\nexport interface ToolbarItemsChangedArgs {\n readonly items: ReadonlyArray<ToolbarItem>;\n}\n\n/**\n * Controls status bar items.\n * @internal\n * @deprecated in 4.4.0. This is no longer used internally, left because of an erroneous public dependency that is also deprecated.\n */\nexport class ToolbarItemsManager {\n // This class should be removed once `useDefaultToolbarItems` and `useUiItemsProviderToolbarItems` (public version) get removed.\n // If you are attempting to fix/clean this class, it is probably an error as it is no longer used and should not be reintroduced, use Hooks instead.\n protected _items: ReadonlyArray<ToolbarItem> = [];\n\n constructor(items?: ReadonlyArray<ToolbarItem>) {\n if (items) this.loadItemsInternal(items, true, false);\n }\n\n /** Event raised when Toolbar items are changed.\n * @internal\n */\n public readonly onItemsChanged = new BeEvent<\n (args: ToolbarItemsChangedArgs) => void\n >();\n\n private loadItemsInternal(\n items: ReadonlyArray<ToolbarItem>,\n processConditions: boolean,\n sendItemChanged: boolean\n ) {\n if (processConditions && items) {\n // eslint-disable-next-line deprecation/deprecation\n const eventIds = ToolbarItemsManager.getSyncIdsOfInterest(items);\n if (0 !== eventIds.length) {\n const { itemsUpdated, updatedItems } =\n this.internalRefreshAffectedItems(items, new Set(eventIds));\n\n if (itemsUpdated) items = updatedItems;\n }\n }\n\n this._items = items;\n if (sendItemChanged) this.onItemsChanged.raiseEvent({ items });\n }\n\n /** load items but do not fire onItemsChanged\n * @internal\n */\n public loadItems(items: ReadonlyArray<ToolbarItem>) {\n this.loadItemsInternal(items, true, false);\n }\n\n /** Get an array of the Toolbar items */\n public get items(): ReadonlyArray<ToolbarItem> {\n return this._items;\n }\n\n public set items(items: ReadonlyArray<ToolbarItem>) {\n if (items !== this._items) this.loadItemsInternal(items, true, true);\n }\n\n public add(itemOrItems: ToolbarItem | ReadonlyArray<ToolbarItem>) {\n let itemsToAdd;\n if (isInstance(itemOrItems)) itemsToAdd = [itemOrItems];\n else {\n itemsToAdd = itemOrItems.filter(\n (itemToAdd, index) =>\n itemOrItems.findIndex((item) => item.id === itemToAdd.id) === index\n );\n }\n itemsToAdd = itemsToAdd.filter(\n (itemToAdd) =>\n this._items.find((item) => item.id === itemToAdd.id) === undefined\n );\n if (itemsToAdd.length === 0) return;\n const items = [...this._items, ...itemsToAdd];\n this.items = items;\n }\n\n /** Remove Toolbar items based on id */\n public remove(\n itemIdOrItemIds: ToolbarItem[\"id\"] | ReadonlyArray<ToolbarItem[\"id\"]>\n ) {\n const items = this._items.filter((item) => {\n return isInstance(itemIdOrItemIds)\n ? item.id !== itemIdOrItemIds\n : !itemIdOrItemIds.find((itemId) => itemId === item.id);\n });\n this.items = items;\n }\n\n /** @internal */\n public removeAll() {\n this._items = [];\n }\n\n private static gatherSyncIds(\n eventIds: Set<string>,\n items: readonly ToolbarItem[]\n ) {\n for (const item of items) {\n for (const [, entry] of Object.entries(item)) {\n if (entry instanceof ConditionalBooleanValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (entry instanceof ConditionalStringValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (entry instanceof ConditionalIconValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n }\n }\n if (isToolbarGroupItem(item)) {\n this.gatherSyncIds(eventIds, item.items);\n }\n }\n }\n\n public static getSyncIdsOfInterest(items: readonly ToolbarItem[]): string[] {\n const eventIds = new Set<string>();\n this.gatherSyncIds(eventIds, items);\n return [...eventIds.values()];\n }\n\n private static refreshChildItems(\n parentItem: ToolbarGroupItem,\n eventIds: Set<string>\n ): {\n childrenUpdated: boolean;\n childItems: ReadonlyArray<ToolbarActionItem | ToolbarGroupItem>;\n } {\n const updatedItems: Array<ToolbarActionItem | ToolbarGroupItem> = [];\n let itemsUpdated = false;\n\n for (const item of parentItem.items) {\n let updatedItem;\n if (isToolbarGroupItem(item)) {\n updatedItem = { ...item };\n const { childrenUpdated, childItems } = this.refreshChildItems(\n updatedItem,\n eventIds\n );\n if (childrenUpdated) {\n updatedItem.items = childItems;\n itemsUpdated = true;\n }\n } else {\n updatedItem = { ...item };\n }\n\n for (const [, entry] of Object.entries(updatedItem)) {\n if (entry instanceof ConditionalBooleanValue) {\n if (ConditionalBooleanValue.refreshValue(entry, eventIds))\n itemsUpdated = true;\n } else if (entry instanceof ConditionalStringValue) {\n if (ConditionalStringValue.refreshValue(entry, eventIds))\n itemsUpdated = true;\n } else if (entry instanceof ConditionalIconValue) {\n if (ConditionalIconValue.refreshValue(entry, eventIds))\n itemsUpdated = true;\n }\n }\n\n updatedItems.push(updatedItem);\n }\n return { childrenUpdated: itemsUpdated, childItems: updatedItems };\n }\n\n private internalRefreshAffectedItems(\n items: readonly ToolbarItem[],\n eventIds: Set<string>\n ): { itemsUpdated: boolean; updatedItems: ToolbarItem[] } {\n if (0 === eventIds.size) return { itemsUpdated: false, updatedItems: [] };\n\n let updateRequired = false;\n\n const newItems: ToolbarItem[] = [];\n for (const item of items) {\n let updatedItem = { ...item };\n if (isToolbarGroupItem(updatedItem)) {\n const { childrenUpdated, childItems } =\n // eslint-disable-next-line deprecation/deprecation\n ToolbarItemsManager.refreshChildItems(updatedItem, eventIds);\n if (childrenUpdated) {\n updatedItem = {\n ...updatedItem,\n items: childItems,\n };\n updateRequired = true;\n }\n }\n\n for (const [, entry] of Object.entries(updatedItem)) {\n if (entry instanceof ConditionalBooleanValue) {\n if (ConditionalBooleanValue.refreshValue(entry, eventIds))\n updateRequired = true;\n } else if (entry instanceof ConditionalStringValue) {\n if (ConditionalStringValue.refreshValue(entry, eventIds))\n updateRequired = true;\n } else if (entry instanceof ConditionalIconValue) {\n if (ConditionalIconValue.refreshValue(entry, eventIds))\n updateRequired = true;\n }\n }\n\n newItems.push(updatedItem);\n }\n\n return { itemsUpdated: updateRequired, updatedItems: newItems };\n }\n\n public refreshAffectedItems(eventIds: Set<string>) {\n if (0 === eventIds.size) return;\n\n const { itemsUpdated, updatedItems } = this.internalRefreshAffectedItems(\n this.items,\n eventIds\n );\n\n if (itemsUpdated) this.loadItemsInternal(updatedItems, false, true);\n }\n\n private static isActiveToolIdRefreshRequiredForChildren(\n children: ReadonlyArray<ToolbarActionItem | ToolbarGroupItem>,\n toolId: string\n ): boolean {\n for (const item of children) {\n if (isToolbarGroupItem(item)) {\n if (this.isActiveToolIdRefreshRequiredForChildren(item.items, toolId))\n return true;\n } else {\n const isActive = !!item.isActive;\n if (\n (isActive && item.id !== toolId) ||\n (!isActive && item.id === toolId)\n )\n return true;\n }\n }\n return false;\n }\n\n private isActiveToolIdRefreshRequired(toolId: string): boolean {\n for (const item of this.items) {\n if (isToolbarGroupItem(item)) {\n if (\n // eslint-disable-next-line deprecation/deprecation\n ToolbarItemsManager.isActiveToolIdRefreshRequiredForChildren(\n item.items,\n toolId\n )\n )\n return true;\n } else {\n const isActive = !!item.isActive;\n if (\n (isActive && item.id !== toolId) ||\n (!isActive && item.id === toolId)\n )\n return true;\n }\n }\n\n return false;\n }\n\n private static refreshActiveToolIdInChildItems(\n parentItem: ToolbarGroupItem,\n toolId: string\n ): Array<ToolbarActionItem | ToolbarGroupItem> {\n const newChildren: Array<ToolbarActionItem | ToolbarGroupItem> = [];\n for (const item of parentItem.items) {\n let updatedItem = { ...item };\n\n if (isToolbarGroupItem(updatedItem)) {\n updatedItem = {\n ...updatedItem,\n // eslint-disable-next-line deprecation/deprecation\n items: ToolbarItemsManager.refreshActiveToolIdInChildItems(\n updatedItem,\n toolId\n ),\n };\n }\n\n updatedItem.isActive = updatedItem.id === toolId;\n newChildren.push(updatedItem);\n }\n return newChildren;\n }\n\n public setActiveToolId(toolId: string) {\n // first see if any updates are really necessary\n if (!this.isActiveToolIdRefreshRequired(toolId)) return;\n\n const newItems: ToolbarItem[] = [];\n for (const item of this.items) {\n let updatedItem = { ...item };\n\n if (isToolbarGroupItem(updatedItem)) {\n updatedItem = {\n ...updatedItem,\n // eslint-disable-next-line deprecation/deprecation\n items: ToolbarItemsManager.refreshActiveToolIdInChildItems(\n updatedItem,\n toolId\n ),\n };\n }\n\n updatedItem.isActive = updatedItem.id === toolId;\n newItems.push(updatedItem);\n }\n\n this.items = newItems;\n }\n}\n"]}
1
+ {"version":3,"file":"ToolbarItemsManager.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarItemsManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { ConditionalIconItem } from \"@itwin/core-react\";\nimport type {\n ToolbarActionItem,\n ToolbarGroupItem,\n ToolbarItem,\n} from \"./ToolbarItem\";\nimport { isToolbarGroupItem } from \"./ToolbarItem\";\n\nfunction isInstance<T>(args: T | ReadonlyArray<T>): args is T {\n return !Array.isArray(args);\n}\n\n/** Arguments of [[ToolbarItemsManager.onChanged]] event.\n * @internal\n */\nexport interface ToolbarItemsChangedArgs {\n readonly items: ReadonlyArray<ToolbarItem>;\n}\n\n/**\n * Controls status bar items.\n * @internal\n * @deprecated in 4.4.0. This is no longer used internally, left because of an erroneous public dependency that is also deprecated.\n */\nexport class ToolbarItemsManager {\n // This class should be removed once `useDefaultToolbarItems` and `useUiItemsProviderToolbarItems` (public version) get removed.\n // If you are attempting to fix/clean this class, it is probably an error as it is no longer used and should not be reintroduced, use Hooks instead.\n protected _items: ReadonlyArray<ToolbarItem> = [];\n\n constructor(items?: ReadonlyArray<ToolbarItem>) {\n if (items) this.loadItemsInternal(items, true, false);\n }\n\n /** Event raised when Toolbar items are changed.\n * @internal\n */\n public readonly onItemsChanged = new BeEvent<\n (args: ToolbarItemsChangedArgs) => void\n >();\n\n private loadItemsInternal(\n items: ReadonlyArray<ToolbarItem>,\n processConditions: boolean,\n sendItemChanged: boolean\n ) {\n if (processConditions && items) {\n // eslint-disable-next-line deprecation/deprecation\n const eventIds = ToolbarItemsManager.getSyncIdsOfInterest(items);\n if (0 !== eventIds.length) {\n const { itemsUpdated, updatedItems } =\n this.internalRefreshAffectedItems(items, new Set(eventIds));\n\n if (itemsUpdated) items = updatedItems;\n }\n }\n\n this._items = items;\n if (sendItemChanged) this.onItemsChanged.raiseEvent({ items });\n }\n\n /** load items but do not fire onItemsChanged\n * @internal\n */\n public loadItems(items: ReadonlyArray<ToolbarItem>) {\n this.loadItemsInternal(items, true, false);\n }\n\n /** Get an array of the Toolbar items */\n public get items(): ReadonlyArray<ToolbarItem> {\n return this._items;\n }\n\n public set items(items: ReadonlyArray<ToolbarItem>) {\n if (items !== this._items) this.loadItemsInternal(items, true, true);\n }\n\n public add(itemOrItems: ToolbarItem | ReadonlyArray<ToolbarItem>) {\n let itemsToAdd;\n if (isInstance(itemOrItems)) itemsToAdd = [itemOrItems];\n else {\n itemsToAdd = itemOrItems.filter(\n (itemToAdd, index) =>\n itemOrItems.findIndex((item) => item.id === itemToAdd.id) === index\n );\n }\n itemsToAdd = itemsToAdd.filter(\n (itemToAdd) =>\n this._items.find((item) => item.id === itemToAdd.id) === undefined\n );\n if (itemsToAdd.length === 0) return;\n const items = [...this._items, ...itemsToAdd];\n this.items = items;\n }\n\n /** Remove Toolbar items based on id */\n public remove(\n itemIdOrItemIds: ToolbarItem[\"id\"] | ReadonlyArray<ToolbarItem[\"id\"]>\n ) {\n const items = this._items.filter((item) => {\n return isInstance(itemIdOrItemIds)\n ? item.id !== itemIdOrItemIds\n : !itemIdOrItemIds.find((itemId) => itemId === item.id);\n });\n this.items = items;\n }\n\n /** @internal */\n public removeAll() {\n this._items = [];\n }\n\n private static gatherSyncIds(\n eventIds: Set<string>,\n items: readonly ToolbarItem[]\n ) {\n for (const item of items) {\n for (const [, entry] of Object.entries(item)) {\n if (entry instanceof ConditionalBooleanValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (entry instanceof ConditionalStringValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n // eslint-disable-next-line deprecation/deprecation\n } else if (entry instanceof ConditionalIconItem) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n }\n }\n if (isToolbarGroupItem(item)) {\n this.gatherSyncIds(eventIds, item.items);\n }\n }\n }\n\n public static getSyncIdsOfInterest(items: readonly ToolbarItem[]): string[] {\n const eventIds = new Set<string>();\n this.gatherSyncIds(eventIds, items);\n return [...eventIds.values()];\n }\n\n private static refreshChildItems(\n parentItem: ToolbarGroupItem,\n eventIds: Set<string>\n ): {\n childrenUpdated: boolean;\n childItems: ReadonlyArray<ToolbarActionItem | ToolbarGroupItem>;\n } {\n const updatedItems: Array<ToolbarActionItem | ToolbarGroupItem> = [];\n let itemsUpdated = false;\n\n for (const item of parentItem.items) {\n let updatedItem;\n if (isToolbarGroupItem(item)) {\n updatedItem = { ...item };\n const { childrenUpdated, childItems } = this.refreshChildItems(\n updatedItem,\n eventIds\n );\n if (childrenUpdated) {\n updatedItem.items = childItems;\n itemsUpdated = true;\n }\n } else {\n updatedItem = { ...item };\n }\n\n for (const [, entry] of Object.entries(updatedItem)) {\n if (entry instanceof ConditionalBooleanValue) {\n if (ConditionalBooleanValue.refreshValue(entry, eventIds))\n itemsUpdated = true;\n } else if (entry instanceof ConditionalStringValue) {\n if (ConditionalStringValue.refreshValue(entry, eventIds))\n itemsUpdated = true;\n // eslint-disable-next-line deprecation/deprecation\n } else if (entry instanceof ConditionalIconItem) {\n // eslint-disable-next-line deprecation/deprecation\n if (ConditionalIconItem.refreshValue(entry, eventIds))\n itemsUpdated = true;\n }\n }\n\n updatedItems.push(updatedItem);\n }\n return { childrenUpdated: itemsUpdated, childItems: updatedItems };\n }\n\n private internalRefreshAffectedItems(\n items: readonly ToolbarItem[],\n eventIds: Set<string>\n ): { itemsUpdated: boolean; updatedItems: ToolbarItem[] } {\n if (0 === eventIds.size) return { itemsUpdated: false, updatedItems: [] };\n\n let updateRequired = false;\n\n const newItems: ToolbarItem[] = [];\n for (const item of items) {\n let updatedItem = { ...item };\n if (isToolbarGroupItem(updatedItem)) {\n const { childrenUpdated, childItems } =\n // eslint-disable-next-line deprecation/deprecation\n ToolbarItemsManager.refreshChildItems(updatedItem, eventIds);\n if (childrenUpdated) {\n updatedItem = {\n ...updatedItem,\n items: childItems,\n };\n updateRequired = true;\n }\n }\n\n for (const [, entry] of Object.entries(updatedItem)) {\n if (entry instanceof ConditionalBooleanValue) {\n if (ConditionalBooleanValue.refreshValue(entry, eventIds))\n updateRequired = true;\n } else if (entry instanceof ConditionalStringValue) {\n if (ConditionalStringValue.refreshValue(entry, eventIds))\n updateRequired = true;\n // eslint-disable-next-line deprecation/deprecation\n } else if (entry instanceof ConditionalIconItem) {\n // eslint-disable-next-line deprecation/deprecation\n if (ConditionalIconItem.refreshValue(entry, eventIds))\n updateRequired = true;\n }\n }\n\n newItems.push(updatedItem);\n }\n\n return { itemsUpdated: updateRequired, updatedItems: newItems };\n }\n\n public refreshAffectedItems(eventIds: Set<string>) {\n if (0 === eventIds.size) return;\n\n const { itemsUpdated, updatedItems } = this.internalRefreshAffectedItems(\n this.items,\n eventIds\n );\n\n if (itemsUpdated) this.loadItemsInternal(updatedItems, false, true);\n }\n\n private static isActiveToolIdRefreshRequiredForChildren(\n children: ReadonlyArray<ToolbarActionItem | ToolbarGroupItem>,\n toolId: string\n ): boolean {\n for (const item of children) {\n if (isToolbarGroupItem(item)) {\n if (this.isActiveToolIdRefreshRequiredForChildren(item.items, toolId))\n return true;\n } else {\n const isActive = !!item.isActive;\n if (\n (isActive && item.id !== toolId) ||\n (!isActive && item.id === toolId)\n )\n return true;\n }\n }\n return false;\n }\n\n private isActiveToolIdRefreshRequired(toolId: string): boolean {\n for (const item of this.items) {\n if (isToolbarGroupItem(item)) {\n if (\n // eslint-disable-next-line deprecation/deprecation\n ToolbarItemsManager.isActiveToolIdRefreshRequiredForChildren(\n item.items,\n toolId\n )\n )\n return true;\n } else {\n const isActive = !!item.isActive;\n if (\n (isActive && item.id !== toolId) ||\n (!isActive && item.id === toolId)\n )\n return true;\n }\n }\n\n return false;\n }\n\n private static refreshActiveToolIdInChildItems(\n parentItem: ToolbarGroupItem,\n toolId: string\n ): Array<ToolbarActionItem | ToolbarGroupItem> {\n const newChildren: Array<ToolbarActionItem | ToolbarGroupItem> = [];\n for (const item of parentItem.items) {\n let updatedItem = { ...item };\n\n if (isToolbarGroupItem(updatedItem)) {\n updatedItem = {\n ...updatedItem,\n // eslint-disable-next-line deprecation/deprecation\n items: ToolbarItemsManager.refreshActiveToolIdInChildItems(\n updatedItem,\n toolId\n ),\n };\n }\n\n updatedItem.isActive = updatedItem.id === toolId;\n newChildren.push(updatedItem);\n }\n return newChildren;\n }\n\n public setActiveToolId(toolId: string) {\n // first see if any updates are really necessary\n if (!this.isActiveToolIdRefreshRequired(toolId)) return;\n\n const newItems: ToolbarItem[] = [];\n for (const item of this.items) {\n let updatedItem = { ...item };\n\n if (isToolbarGroupItem(updatedItem)) {\n updatedItem = {\n ...updatedItem,\n // eslint-disable-next-line deprecation/deprecation\n items: ToolbarItemsManager.refreshActiveToolIdInChildItems(\n updatedItem,\n toolId\n ),\n };\n }\n\n updatedItem.isActive = updatedItem.id === toolId;\n newItems.push(updatedItem);\n }\n\n this.items = newItems;\n }\n}\n"]}
@@ -10,6 +10,7 @@ import type { UiItemsProvider } from "./UiItemsProvider";
10
10
  /** Base implementation of a UiItemsProvider. The base class allows the user to pass in a function that is used to determine if the
11
11
  * active stage should be provided items. Derived provider classes should override the `xxxInternal` methods to provide items.
12
12
  * @public
13
+ * @deprecated in 4.17.0. Use {@link UiItemsProviderOverrides} to specify supported frontstages when registering the provider.
13
14
  */
14
15
  export declare class BaseUiItemsProvider implements UiItemsProvider {
15
16
  protected _providerId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseUiItemsProvider.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/ui-items-provider/BaseUiItemsProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IAQvD,SAAS,CAAC,WAAW,EAAE,MAAM;IACtB,gBAAgB,CAAC,aACb,MAAM,cACH,MAAM,iBACH,GAAG,aACP,eAAe,KACvB,OAAO;gBANF,WAAW,EAAE,MAAM,EACtB,gBAAgB,CAAC,aACb,MAAM,cACH,MAAM,iBACH,GAAG,aACP,eAAe,KACvB,OAAO,aAAA;IAGd,IAAW,EAAE,IAAI,MAAM,CAEtB;IACM,YAAY,IAAI,IAAI;IAEpB,UAAU;IAIV,2BAA2B,CAChC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,YAAY,EAC3B,mBAAmB,EAAE,kBAAkB,EACvC,aAAa,CAAC,EAAE,GAAG,GAClB,WAAW,EAAE;IAIT,mBAAmB,CACxB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,CAAC,EAAE,GAAG,GACjB,WAAW,EAAE;IAyBT,6BAA6B,CAClC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,GAAG,GAClB,aAAa,EAAE;IAIX,qBAAqB,CAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,GAAG,GACjB,aAAa,EAAE;IAmBX,sBAAsB,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,aAAa,CAAC,EAAE,GAAG,GAClB,MAAM,EAAE;IAIJ,cAAc,CACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,CAAC,EAAE,iBAAiB,EAC3B,YAAY,CAAC,EAAE,GAAG,GACjB,aAAa,CAAC,MAAM,CAAC;CAwBzB"}
1
+ {"version":3,"file":"BaseUiItemsProvider.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/ui-items-provider/BaseUiItemsProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,YAAY,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IAQvD,SAAS,CAAC,WAAW,EAAE,MAAM;IACtB,gBAAgB,CAAC,aACb,MAAM,cACH,MAAM,iBACH,GAAG,aACP,eAAe,KACvB,OAAO;gBANF,WAAW,EAAE,MAAM,EACtB,gBAAgB,CAAC,aACb,MAAM,cACH,MAAM,iBACH,GAAG,aACP,eAAe,KACvB,OAAO,aAAA;IAGd,IAAW,EAAE,IAAI,MAAM,CAEtB;IACM,YAAY,IAAI,IAAI;IAEpB,UAAU;IAIV,2BAA2B,CAChC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,YAAY,EAC3B,mBAAmB,EAAE,kBAAkB,EACvC,aAAa,CAAC,EAAE,GAAG,GAClB,WAAW,EAAE;IAIT,mBAAmB,CACxB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,CAAC,EAAE,GAAG,GACjB,WAAW,EAAE;IAyBT,6BAA6B,CAClC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,GAAG,GAClB,aAAa,EAAE;IAIX,qBAAqB,CAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,GAAG,GACjB,aAAa,EAAE;IAmBX,sBAAsB,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,kBAAkB,EAC7B,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,aAAa,CAAC,EAAE,GAAG,GAClB,MAAM,EAAE;IAIJ,cAAc,CACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,CAAC,EAAE,iBAAiB,EAC3B,YAAY,CAAC,EAAE,GAAG,GACjB,aAAa,CAAC,MAAM,CAAC;CAwBzB"}
@@ -13,6 +13,7 @@ const UiItemsManager_1 = require("./UiItemsManager");
13
13
  /** Base implementation of a UiItemsProvider. The base class allows the user to pass in a function that is used to determine if the
14
14
  * active stage should be provided items. Derived provider classes should override the `xxxInternal` methods to provide items.
15
15
  * @public
16
+ * @deprecated in 4.17.0. Use {@link UiItemsProviderOverrides} to specify supported frontstages when registering the provider.
16
17
  */
17
18
  class BaseUiItemsProvider {
18
19
  /*