@itwin/appui-react 4.16.4 → 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 (420) hide show
  1. package/CHANGELOG.md +32 -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/childwindow/CopyStyles.d.ts.map +1 -1
  26. package/lib/cjs/appui-react/childwindow/CopyStyles.js +10 -5
  27. package/lib/cjs/appui-react/childwindow/CopyStyles.js.map +1 -1
  28. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts +1 -0
  29. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  30. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js +7 -2
  31. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  32. package/lib/cjs/appui-react/content/ContentGroup.d.ts +8 -4
  33. package/lib/cjs/appui-react/content/ContentGroup.d.ts.map +1 -1
  34. package/lib/cjs/appui-react/content/ContentGroup.js +1 -1
  35. package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
  36. package/lib/cjs/appui-react/content/ContentLayout.d.ts +2 -1
  37. package/lib/cjs/appui-react/content/ContentLayout.d.ts.map +1 -1
  38. package/lib/cjs/appui-react/content/ContentLayout.js +44 -10
  39. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  40. package/lib/cjs/appui-react/content/ContentLayoutProps.d.ts +63 -0
  41. package/lib/cjs/appui-react/content/ContentLayoutProps.d.ts.map +1 -0
  42. package/lib/cjs/appui-react/content/ContentLayoutProps.js +10 -0
  43. package/lib/cjs/appui-react/content/ContentLayoutProps.js.map +1 -0
  44. package/lib/cjs/appui-react/content/ContentOverlay.d.ts +4 -0
  45. package/lib/cjs/appui-react/content/ContentOverlay.d.ts.map +1 -1
  46. package/lib/cjs/appui-react/content/ContentOverlay.js +33 -1
  47. package/lib/cjs/appui-react/content/ContentOverlay.js.map +1 -1
  48. package/lib/cjs/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
  49. package/lib/cjs/appui-react/content/FloatingViewportContent.js +1 -1
  50. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  51. package/lib/cjs/appui-react/content/InternalContentLayoutManager.d.ts +1 -1
  52. package/lib/cjs/appui-react/content/InternalContentLayoutManager.d.ts.map +1 -1
  53. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  54. package/lib/cjs/appui-react/content/InternalContentViewManager.d.ts.map +1 -1
  55. package/lib/cjs/appui-react/content/InternalContentViewManager.js +9 -3
  56. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  57. package/lib/cjs/appui-react/content/StageContentLayout.d.ts +1 -1
  58. package/lib/cjs/appui-react/content/StageContentLayout.d.ts.map +1 -1
  59. package/lib/cjs/appui-react/content/StageContentLayout.js.map +1 -1
  60. package/lib/cjs/appui-react/content/StandardContentLayouts.d.ts +20 -0
  61. package/lib/cjs/appui-react/content/StandardContentLayouts.d.ts.map +1 -0
  62. package/lib/cjs/appui-react/content/StandardContentLayouts.js +169 -0
  63. package/lib/cjs/appui-react/content/StandardContentLayouts.js.map +1 -0
  64. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts +1 -0
  65. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts.map +1 -1
  66. package/lib/cjs/appui-react/content/split-pane/SplitPane.js +1 -0
  67. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  68. package/lib/cjs/appui-react/framework/FrameworkContent.d.ts +1 -1
  69. package/lib/cjs/appui-react/framework/FrameworkContent.d.ts.map +1 -1
  70. package/lib/cjs/appui-react/framework/FrameworkContent.js.map +1 -1
  71. package/lib/cjs/appui-react/framework/FrameworkFrontstages.d.ts +3 -0
  72. package/lib/cjs/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
  73. package/lib/cjs/appui-react/framework/FrameworkFrontstages.js.map +1 -1
  74. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +1 -0
  75. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  76. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +2 -1
  77. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  78. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts +2 -0
  79. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
  80. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js +5 -0
  81. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  82. package/lib/cjs/appui-react/hooks/useConditionalProp.d.ts +3 -3
  83. package/lib/cjs/appui-react/hooks/useConditionalProp.d.ts.map +1 -1
  84. package/lib/cjs/appui-react/hooks/useConditionalProp.js.map +1 -1
  85. package/lib/cjs/appui-react/hooks/useConditionalValue.d.ts +1 -1
  86. package/lib/cjs/appui-react/hooks/useConditionalValue.js +1 -1
  87. package/lib/cjs/appui-react/hooks/useConditionalValue.js.map +1 -1
  88. package/lib/cjs/appui-react/hooks/useUiVisibility.d.ts.map +1 -1
  89. package/lib/cjs/appui-react/hooks/useUiVisibility.js +1 -0
  90. package/lib/cjs/appui-react/hooks/useUiVisibility.js.map +1 -1
  91. package/lib/cjs/appui-react/layout/base/LayoutStore.d.ts +3 -1
  92. package/lib/cjs/appui-react/layout/base/LayoutStore.d.ts.map +1 -1
  93. package/lib/cjs/appui-react/layout/base/LayoutStore.js +9 -1
  94. package/lib/cjs/appui-react/layout/base/LayoutStore.js.map +1 -1
  95. package/lib/cjs/appui-react/preview/new-toolbars/ToolGroup.scss +4 -0
  96. package/lib/cjs/appui-react/selection/SelectionContextItemDef.d.ts.map +1 -1
  97. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js +27 -25
  98. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  99. package/lib/cjs/appui-react/shared/ConditionalValue.d.ts +10 -7
  100. package/lib/cjs/appui-react/shared/ConditionalValue.d.ts.map +1 -1
  101. package/lib/cjs/appui-react/shared/ConditionalValue.js +3 -4
  102. package/lib/cjs/appui-react/shared/ConditionalValue.js.map +1 -1
  103. package/lib/cjs/appui-react/statusbar/StatusBarComposer.d.ts +1 -0
  104. package/lib/cjs/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
  105. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js +10 -6
  106. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  107. package/lib/cjs/appui-react/statusbar/StatusBarCornerComponentContext.js +2 -0
  108. package/lib/cjs/appui-react/statusbar/StatusBarCornerComponentContext.js.map +1 -1
  109. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.d.ts +1 -0
  110. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.d.ts.map +1 -1
  111. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.js +1 -0
  112. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  113. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.d.ts +1 -0
  114. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.d.ts.map +1 -1
  115. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.js +1 -0
  116. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  117. package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  118. package/lib/cjs/appui-react/statusfields/SelectionScope.js +1 -1
  119. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  120. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts +2 -0
  121. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  122. package/lib/cjs/appui-react/statusfields/SnapMode.js +59 -83
  123. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  124. package/lib/cjs/appui-react/theme/ThemeManager.d.ts +7 -8
  125. package/lib/cjs/appui-react/theme/ThemeManager.d.ts.map +1 -1
  126. package/lib/cjs/appui-react/theme/ThemeManager.js +7 -8
  127. package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
  128. package/lib/cjs/appui-react/toolbar/ToolbarComposer.d.ts +1 -0
  129. package/lib/cjs/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
  130. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js +1 -0
  131. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  132. package/lib/cjs/appui-react/toolbar/ToolbarItem.d.ts +1 -1
  133. package/lib/cjs/appui-react/toolbar/ToolbarItem.js.map +1 -1
  134. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.d.ts.map +1 -1
  135. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js +11 -6
  136. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  137. package/lib/cjs/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
  138. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +23 -25
  139. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  140. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts +1 -0
  141. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts.map +1 -1
  142. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js +1 -0
  143. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  144. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts +3 -2
  145. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  146. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js +4 -2
  147. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  148. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts +6 -2
  149. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts.map +1 -1
  150. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +117 -88
  151. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  152. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts +2 -2
  153. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  154. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +4 -2
  155. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  156. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts +3 -2
  157. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts.map +1 -1
  158. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +79 -60
  159. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  160. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +1 -0
  161. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  162. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +3 -0
  163. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  164. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts +4 -2
  165. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts.map +1 -1
  166. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +6 -2
  167. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  168. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.d.ts.map +1 -1
  169. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js +16 -12
  170. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  171. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts +1 -0
  172. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  173. package/lib/cjs/appui-react/uistate/useUiStateStorage.js +1 -0
  174. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
  175. package/lib/cjs/appui-react/utils/getActiveViewport.d.ts +10 -0
  176. package/lib/cjs/appui-react/utils/getActiveViewport.d.ts.map +1 -0
  177. package/lib/cjs/appui-react/utils/getActiveViewport.js +26 -0
  178. package/lib/cjs/appui-react/utils/getActiveViewport.js.map +1 -0
  179. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.d.ts +1 -0
  180. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.d.ts.map +1 -1
  181. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js +1 -0
  182. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  183. package/lib/cjs/appui-react/widgets/BasicToolWidget.d.ts +1 -0
  184. package/lib/cjs/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  185. package/lib/cjs/appui-react/widgets/BasicToolWidget.js +1 -0
  186. package/lib/cjs/appui-react/widgets/BasicToolWidget.js.map +1 -1
  187. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.d.ts +1 -0
  188. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.d.ts.map +1 -1
  189. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.js +3 -1
  190. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  191. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.d.ts +2 -0
  192. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.d.ts.map +1 -1
  193. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +2 -0
  194. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  195. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.d.ts +2 -1
  196. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.d.ts.map +1 -1
  197. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.js +1 -0
  198. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  199. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.d.ts +1 -0
  200. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.d.ts.map +1 -1
  201. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.js +1 -0
  202. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  203. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +1 -1
  204. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  205. package/lib/cjs/appui-react/widgets/WidgetDef.js +7 -7
  206. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  207. package/lib/cjs/appui-react.d.ts +3 -0
  208. package/lib/cjs/appui-react.d.ts.map +1 -1
  209. package/lib/cjs/appui-react.js +3 -0
  210. package/lib/cjs/appui-react.js.map +1 -1
  211. package/lib/esm/appui-react/UiFramework.d.ts +5 -0
  212. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  213. package/lib/esm/appui-react/UiFramework.js +6 -1
  214. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  215. package/lib/esm/appui-react/accudraw/AccuDrawDialog.d.ts +1 -0
  216. package/lib/esm/appui-react/accudraw/AccuDrawDialog.d.ts.map +1 -1
  217. package/lib/esm/appui-react/accudraw/AccuDrawDialog.js +1 -0
  218. package/lib/esm/appui-react/accudraw/AccuDrawDialog.js.map +1 -1
  219. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts +1 -0
  220. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  221. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +1 -0
  222. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  223. package/lib/esm/appui-react/accudraw/AccuDrawInputField.d.ts +1 -0
  224. package/lib/esm/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  225. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  226. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts +1 -0
  227. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  228. package/lib/esm/appui-react/backstage/BackstageComposer.js +2 -0
  229. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  230. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.d.ts +2 -1
  231. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.d.ts.map +1 -1
  232. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.js +2 -1
  233. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  234. package/lib/esm/appui-react/childwindow/CopyStyles.d.ts.map +1 -1
  235. package/lib/esm/appui-react/childwindow/CopyStyles.js +8 -3
  236. package/lib/esm/appui-react/childwindow/CopyStyles.js.map +1 -1
  237. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts +1 -0
  238. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  239. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js +7 -2
  240. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  241. package/lib/esm/appui-react/content/ContentGroup.d.ts +8 -4
  242. package/lib/esm/appui-react/content/ContentGroup.d.ts.map +1 -1
  243. package/lib/esm/appui-react/content/ContentGroup.js +1 -1
  244. package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
  245. package/lib/esm/appui-react/content/ContentLayout.d.ts +2 -1
  246. package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
  247. package/lib/esm/appui-react/content/ContentLayout.js +45 -11
  248. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  249. package/lib/esm/appui-react/content/ContentLayoutProps.d.ts +63 -0
  250. package/lib/esm/appui-react/content/ContentLayoutProps.d.ts.map +1 -0
  251. package/lib/esm/appui-react/content/ContentLayoutProps.js +9 -0
  252. package/lib/esm/appui-react/content/ContentLayoutProps.js.map +1 -0
  253. package/lib/esm/appui-react/content/ContentOverlay.d.ts +4 -0
  254. package/lib/esm/appui-react/content/ContentOverlay.d.ts.map +1 -1
  255. package/lib/esm/appui-react/content/ContentOverlay.js +32 -0
  256. package/lib/esm/appui-react/content/ContentOverlay.js.map +1 -1
  257. package/lib/esm/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
  258. package/lib/esm/appui-react/content/FloatingViewportContent.js +1 -1
  259. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  260. package/lib/esm/appui-react/content/InternalContentLayoutManager.d.ts +1 -1
  261. package/lib/esm/appui-react/content/InternalContentLayoutManager.d.ts.map +1 -1
  262. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  263. package/lib/esm/appui-react/content/InternalContentViewManager.d.ts.map +1 -1
  264. package/lib/esm/appui-react/content/InternalContentViewManager.js +9 -3
  265. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  266. package/lib/esm/appui-react/content/StageContentLayout.d.ts +1 -1
  267. package/lib/esm/appui-react/content/StageContentLayout.d.ts.map +1 -1
  268. package/lib/esm/appui-react/content/StageContentLayout.js.map +1 -1
  269. package/lib/esm/appui-react/content/StandardContentLayouts.d.ts +20 -0
  270. package/lib/esm/appui-react/content/StandardContentLayouts.d.ts.map +1 -0
  271. package/lib/esm/appui-react/content/StandardContentLayouts.js +165 -0
  272. package/lib/esm/appui-react/content/StandardContentLayouts.js.map +1 -0
  273. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts +1 -0
  274. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts.map +1 -1
  275. package/lib/esm/appui-react/content/split-pane/SplitPane.js +1 -0
  276. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  277. package/lib/esm/appui-react/framework/FrameworkContent.d.ts +1 -1
  278. package/lib/esm/appui-react/framework/FrameworkContent.d.ts.map +1 -1
  279. package/lib/esm/appui-react/framework/FrameworkContent.js.map +1 -1
  280. package/lib/esm/appui-react/framework/FrameworkFrontstages.d.ts +3 -0
  281. package/lib/esm/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
  282. package/lib/esm/appui-react/framework/FrameworkFrontstages.js.map +1 -1
  283. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +1 -0
  284. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  285. package/lib/esm/appui-react/frontstage/FrontstageDef.js +2 -1
  286. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  287. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts +2 -0
  288. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
  289. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js +5 -0
  290. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  291. package/lib/esm/appui-react/hooks/useConditionalProp.d.ts +3 -3
  292. package/lib/esm/appui-react/hooks/useConditionalProp.d.ts.map +1 -1
  293. package/lib/esm/appui-react/hooks/useConditionalProp.js.map +1 -1
  294. package/lib/esm/appui-react/hooks/useConditionalValue.d.ts +1 -1
  295. package/lib/esm/appui-react/hooks/useConditionalValue.js +1 -1
  296. package/lib/esm/appui-react/hooks/useConditionalValue.js.map +1 -1
  297. package/lib/esm/appui-react/hooks/useUiVisibility.d.ts.map +1 -1
  298. package/lib/esm/appui-react/hooks/useUiVisibility.js +1 -0
  299. package/lib/esm/appui-react/hooks/useUiVisibility.js.map +1 -1
  300. package/lib/esm/appui-react/layout/base/LayoutStore.d.ts +3 -1
  301. package/lib/esm/appui-react/layout/base/LayoutStore.d.ts.map +1 -1
  302. package/lib/esm/appui-react/layout/base/LayoutStore.js +7 -0
  303. package/lib/esm/appui-react/layout/base/LayoutStore.js.map +1 -1
  304. package/lib/esm/appui-react/preview/new-toolbars/ToolGroup.scss +4 -0
  305. package/lib/esm/appui-react/selection/SelectionContextItemDef.d.ts.map +1 -1
  306. package/lib/esm/appui-react/selection/SelectionContextItemDef.js +27 -25
  307. package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  308. package/lib/esm/appui-react/shared/ConditionalValue.d.ts +10 -7
  309. package/lib/esm/appui-react/shared/ConditionalValue.d.ts.map +1 -1
  310. package/lib/esm/appui-react/shared/ConditionalValue.js +2 -3
  311. package/lib/esm/appui-react/shared/ConditionalValue.js.map +1 -1
  312. package/lib/esm/appui-react/statusbar/StatusBarComposer.d.ts +1 -0
  313. package/lib/esm/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
  314. package/lib/esm/appui-react/statusbar/StatusBarComposer.js +10 -6
  315. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  316. package/lib/esm/appui-react/statusbar/StatusBarCornerComponentContext.js +2 -0
  317. package/lib/esm/appui-react/statusbar/StatusBarCornerComponentContext.js.map +1 -1
  318. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.d.ts +1 -0
  319. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.d.ts.map +1 -1
  320. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.js +1 -0
  321. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  322. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.d.ts +1 -0
  323. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.d.ts.map +1 -1
  324. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.js +1 -0
  325. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  326. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  327. package/lib/esm/appui-react/statusfields/SelectionScope.js +1 -1
  328. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  329. package/lib/esm/appui-react/statusfields/SnapMode.d.ts +2 -0
  330. package/lib/esm/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  331. package/lib/esm/appui-react/statusfields/SnapMode.js +59 -83
  332. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  333. package/lib/esm/appui-react/theme/ThemeManager.d.ts +7 -8
  334. package/lib/esm/appui-react/theme/ThemeManager.d.ts.map +1 -1
  335. package/lib/esm/appui-react/theme/ThemeManager.js +7 -8
  336. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  337. package/lib/esm/appui-react/toolbar/ToolbarComposer.d.ts +1 -0
  338. package/lib/esm/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
  339. package/lib/esm/appui-react/toolbar/ToolbarComposer.js +1 -0
  340. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  341. package/lib/esm/appui-react/toolbar/ToolbarItem.d.ts +1 -1
  342. package/lib/esm/appui-react/toolbar/ToolbarItem.js.map +1 -1
  343. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.d.ts.map +1 -1
  344. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js +11 -6
  345. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  346. package/lib/esm/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
  347. package/lib/esm/appui-react/tools/CoreToolDefinitions.js +23 -25
  348. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  349. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts +1 -0
  350. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts.map +1 -1
  351. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js +1 -0
  352. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  353. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts +3 -2
  354. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  355. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js +4 -2
  356. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  357. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts +6 -2
  358. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts.map +1 -1
  359. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +117 -88
  360. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  361. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts +2 -2
  362. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  363. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +4 -2
  364. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  365. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts +3 -2
  366. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts.map +1 -1
  367. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +79 -60
  368. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  369. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +1 -0
  370. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  371. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +3 -0
  372. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  373. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts +4 -2
  374. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts.map +1 -1
  375. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +6 -2
  376. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  377. package/lib/esm/appui-react/uiprovider/ComponentGenerator.d.ts.map +1 -1
  378. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js +16 -12
  379. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  380. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts +1 -0
  381. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  382. package/lib/esm/appui-react/uistate/useUiStateStorage.js +1 -0
  383. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
  384. package/lib/esm/appui-react/utils/getActiveViewport.d.ts +10 -0
  385. package/lib/esm/appui-react/utils/getActiveViewport.d.ts.map +1 -0
  386. package/lib/esm/appui-react/utils/getActiveViewport.js +22 -0
  387. package/lib/esm/appui-react/utils/getActiveViewport.js.map +1 -0
  388. package/lib/esm/appui-react/widgets/BasicNavigationWidget.d.ts +1 -0
  389. package/lib/esm/appui-react/widgets/BasicNavigationWidget.d.ts.map +1 -1
  390. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js +1 -0
  391. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  392. package/lib/esm/appui-react/widgets/BasicToolWidget.d.ts +1 -0
  393. package/lib/esm/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  394. package/lib/esm/appui-react/widgets/BasicToolWidget.js +1 -0
  395. package/lib/esm/appui-react/widgets/BasicToolWidget.js.map +1 -1
  396. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.d.ts +1 -0
  397. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.d.ts.map +1 -1
  398. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.js +3 -1
  399. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  400. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.d.ts +2 -0
  401. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.d.ts.map +1 -1
  402. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +2 -0
  403. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  404. package/lib/esm/appui-react/widgets/ToolWidgetComposer.d.ts +2 -1
  405. package/lib/esm/appui-react/widgets/ToolWidgetComposer.d.ts.map +1 -1
  406. package/lib/esm/appui-react/widgets/ToolWidgetComposer.js +1 -0
  407. package/lib/esm/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  408. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.d.ts +1 -0
  409. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.d.ts.map +1 -1
  410. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.js +1 -0
  411. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  412. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +1 -1
  413. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  414. package/lib/esm/appui-react/widgets/WidgetDef.js +7 -7
  415. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  416. package/lib/esm/appui-react.d.ts +3 -0
  417. package/lib/esm/appui-react.d.ts.map +1 -1
  418. package/lib/esm/appui-react.js +3 -0
  419. package/lib/esm/appui-react.js.map +1 -1
  420. package/package.json +7 -7
@@ -22,43 +22,53 @@ import { useTranslation } from "../hooks/useTranslation";
22
22
  import { useReduxFrameworkState } from "../uistate/useReduxFrameworkState";
23
23
  import { Button } from "@itwin/itwinui-react";
24
24
  import { StatusBarPopover } from "../statusbar/popup/StatusBarPopover";
25
- // eslint-disable-next-line deprecation/deprecation
26
- function getIconFromIconName(iconName) {
27
- let iconSpec = snapModeKeypoint;
28
- switch (iconName) {
29
- case "snaps":
30
- iconSpec = snapModeKeypoint;
31
- break;
32
- case "snaps-intersection":
33
- iconSpec = snapModeIntersection;
34
- break;
35
- case "snaps-center":
36
- iconSpec = snapModeCenter;
37
- break;
38
- case "snaps-nearest":
39
- iconSpec = snapModeNearest;
40
- break;
41
- case "snaps-origin":
42
- iconSpec = snapModeOrigin;
43
- break;
44
- case "snaps-midpoint":
45
- iconSpec = snapModeMidpoint;
46
- break;
47
- case "snaps-bisector":
48
- iconSpec = snapModeBisector;
49
- break;
50
- }
51
- return iconSpec;
52
- }
53
- /** Return icon class name for a specific snapMode. */
54
- const getSnapModeIconNameFromMode = (modeEntries, snapMode) => {
55
- for (const modeEntry of modeEntries) {
56
- if (modeEntry.value === snapMode)
57
- return modeEntry.iconName;
58
- }
59
- if (snapMode > 0)
60
- return "snaps-multione";
61
- return "placeholder";
25
+ // Field entry of all possible snap modes.
26
+ const allSnapModeFieldEntries = [
27
+ {
28
+ labelKey: "snapModeField.keypoint",
29
+ value: SnapMode.NearestKeypoint,
30
+ iconSpec: snapModeKeypoint,
31
+ },
32
+ {
33
+ labelKey: "snapModeField.intersection",
34
+ value: SnapMode.Intersection,
35
+ iconSpec: snapModeIntersection,
36
+ },
37
+ {
38
+ labelKey: "snapModeField.center",
39
+ value: SnapMode.Center,
40
+ iconSpec: snapModeCenter,
41
+ },
42
+ {
43
+ labelKey: "snapModeField.nearest",
44
+ value: SnapMode.Nearest,
45
+ iconSpec: snapModeNearest,
46
+ },
47
+ {
48
+ labelKey: "snapModeField.origin",
49
+ value: SnapMode.Origin,
50
+ iconSpec: snapModeOrigin,
51
+ },
52
+ {
53
+ labelKey: "snapModeField.midpoint",
54
+ value: SnapMode.MidPoint,
55
+ iconSpec: snapModeMidpoint,
56
+ },
57
+ {
58
+ labelKey: "snapModeField.bisector",
59
+ value: SnapMode.Bisector,
60
+ iconSpec: snapModeBisector,
61
+ },
62
+ ];
63
+ /** Return icon for a specific snapMode. */
64
+ const getSnapModeIcon = (snapMode) => {
65
+ // Get all the modes present in the bitmask.
66
+ const modes = allSnapModeFieldEntries.filter((entry) => {
67
+ return (entry.value & snapMode) === entry.value;
68
+ });
69
+ return (
70
+ // eslint-disable-next-line deprecation/deprecation
71
+ React.createElement(Icon, { iconSpec: modes.length === 1 ? modes[0].iconSpec : snapModeKeypoint }));
62
72
  };
63
73
  /** `SnapModeField` component designed to be specified in a status bar. It will
64
74
  * display the active snap mode that AccuSnap will use and allow the user to select a new snap mode.
@@ -66,62 +76,28 @@ const getSnapModeIconNameFromMode = (modeEntries, snapMode) => {
66
76
  */
67
77
  export function SnapModeField(props) {
68
78
  const { translate } = useTranslation();
79
+ const snapModeEntries = props.availableSnapModes
80
+ ? allSnapModeFieldEntries.filter((entry) => {
81
+ return (props.availableSnapModes &&
82
+ props.availableSnapModes.some((availableSnap) => availableSnap === entry.value));
83
+ })
84
+ : allSnapModeFieldEntries;
69
85
  const reduxSnapMode = useReduxFrameworkState(
70
86
  // eslint-disable-next-line deprecation/deprecation
71
87
  (state) => state?.configurableUiState.snapMode);
72
88
  const snapMode = props.snapMode ?? reduxSnapMode ?? SnapMode.NearestKeypoint;
73
- const snapModes = [
74
- {
75
- label: translate("snapModeField.keypoint"),
76
- value: SnapMode.NearestKeypoint,
77
- iconName: "snaps",
78
- },
79
- {
80
- label: translate("snapModeField.intersection"),
81
- value: SnapMode.Intersection,
82
- iconName: "snaps-intersection",
83
- },
84
- {
85
- label: translate("snapModeField.center"),
86
- value: SnapMode.Center,
87
- iconName: "snaps-center",
88
- },
89
- {
90
- label: translate("snapModeField.nearest"),
91
- value: SnapMode.Nearest,
92
- iconName: "snaps-nearest",
93
- },
94
- {
95
- label: translate("snapModeField.origin"),
96
- value: SnapMode.Origin,
97
- iconName: "snaps-origin",
98
- },
99
- {
100
- label: translate("snapModeField.midpoint"),
101
- value: SnapMode.MidPoint,
102
- iconName: "snaps-midpoint",
103
- },
104
- {
105
- label: translate("snapModeField.bisector"),
106
- value: SnapMode.Bisector,
107
- iconName: "snaps-bisector",
108
- },
109
- ];
110
- const iconName = getSnapModeIconNameFromMode(snapModes, snapMode);
111
89
  const title = translate("snapModeField.snapMode");
112
- return (React.createElement(StatusBarPopover, { content: React.createElement(SnapModePanel, { title: title }, snapModes.map((item, index) => (React.createElement(Snap, { key: `SM_${index}`, onClick: () => {
90
+ return (React.createElement(StatusBarPopover, { content: React.createElement(SnapModePanel, { title: title }, snapModeEntries.map((entry, index) => (React.createElement(Snap, { key: `SM_${index}`, onClick: () => {
113
91
  if (props.onChange) {
114
- props.onChange(item.value);
92
+ props.onChange(entry.value);
115
93
  return;
116
94
  }
117
95
  // eslint-disable-next-line deprecation/deprecation
118
- UiFramework.setAccudrawSnapMode(item.value);
119
- }, isActive: (snapMode & item.value) === item.value, icon:
120
- // eslint-disable-next-line deprecation/deprecation
121
- React.createElement(Icon, { className: `icon`, iconSpec: getIconFromIconName(item.iconName) }) }, item.label)))) },
122
- React.createElement(Button, { styleType: "borderless", title: title,
96
+ UiFramework.setAccudrawSnapMode(entry.value);
97
+ }, isActive: (snapMode & entry.value) === entry.value, icon:
123
98
  // eslint-disable-next-line deprecation/deprecation
124
- endIcon: React.createElement(Icon, { iconSpec: getIconFromIconName(iconName) }) },
99
+ React.createElement(Icon, { className: `icon`, iconSpec: entry.iconSpec }) }, translate(entry.labelKey))))) },
100
+ React.createElement(Button, { styleType: "borderless", title: title, endIcon: getSnapModeIcon(snapMode) },
125
101
  title,
126
102
  React.createElement(StatusBarPopover.ExpandIndicator, null))));
127
103
  }
@@ -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"}
@@ -25,16 +25,15 @@ const highContrastColorThemes = [
25
25
  ColorTheme.HighContrastDark,
26
26
  ColorTheme.HighContrastLight,
27
27
  ];
28
- /** ThemeManager handles setting color themes and element opacity management. Note that this component will
29
- * affect the entire application by setting the data-theme attribute to the html element.
30
- * It also sets an iTwinUI `ThemeProvider` element locally, so all elements
31
- * within the AppUI tree will have the same theme, and should be using iTwinUI 2.x or later.
32
- * A `ColorTheme` enum values will configure iTwinUI `ThemeProvider` accordingly.
33
- * Any other string will only apply the `data-theme` attribute to the `html` element
28
+ /** `ThemeManager` handles setting color themes. Note that this component will
29
+ * affect the entire application by setting the internal `data-theme` attribute.
30
+ * 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.
31
+ * Specified `ThemeId` will be mapped to iTwinUI `theme` accordingly.
32
+ * Any other string will only apply the `data-theme` attribute to the underlying `html` element
34
33
  * and `ThemeProvider` theme will be set to `inherit`, in this case the application is
35
- * responsible for setting the theme by overriding iTwinUI css variables.
34
+ * responsible for setting the theme, i.e. by using iTwinUI css variables.
36
35
  *
37
- * This React component should wrap {@link ConfigurableUiContent}.
36
+ * This component should wrap {@link ConfigurableUiContent}.
38
37
  *
39
38
  * ```tsx
40
39
  * <ThemeManager>
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,sCAAsC;AACtC,MAAM,wBAAwB,GAA+B;IAC3D,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO;IAC3B,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO;IACvC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM;IACzB,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM;IACrC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI;IACzB,EAAE,EAAE,IAAI,EAAE,0CAA0C;CACrD,CAAC;AAEF,0CAA0C;AAC1C,MAAM,uBAAuB,GAAa;IACxC,UAAU,CAAC,gBAAgB;IAC3B,UAAU,CAAC,iBAAiB;CAC7B,CAAC;AAQF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAqB;IACpE,MAAM,UAAU,GAAG,sBAAsB,CAAC,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,4BAA4B,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,aAAa,IACZ,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,aAAa,IAAI,SAAS,EACjC,YAAY,EAAE,EAAE,YAAY,EAAE,yBACV,eAAe,EACnC,UAAU,EAAE,IAAI;QAEhB,oBAAC,eAAe,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","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,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,sCAAsC;AACtC,MAAM,wBAAwB,GAA+B;IAC3D,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO;IAC3B,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO;IACvC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM;IACzB,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM;IACrC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI;IACzB,EAAE,EAAE,IAAI,EAAE,0CAA0C;CACrD,CAAC;AAEF,0CAA0C;AAC1C,MAAM,uBAAuB,GAAa;IACxC,UAAU,CAAC,gBAAgB;IAC3B,UAAU,CAAC,iBAAiB;CAC7B,CAAC;AAQF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAqB;IACpE,MAAM,UAAU,GAAG,sBAAsB,CAAC,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,4BAA4B,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,aAAa,IACZ,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,aAAa,IAAI,SAAS,EACjC,YAAY,EAAE,EAAE,YAAY,EAAE,yBACV,eAAe,EACnC,UAAU,EAAE,IAAI;QAEhB,oBAAC,eAAe,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","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"}
@@ -127,6 +127,7 @@ const useSnapWidgetOpacitySetting = () => {
127
127
  * @note Overrides `isActive` property based on the active tool id.
128
128
  * @public
129
129
  */
130
+ // eslint-disable-next-line deprecation/deprecation
130
131
  export function ToolbarComposer(props) {
131
132
  const { usage, orientation } = props;
132
133
  // process items from addon UI providers
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarComposer.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 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":"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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 * 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"]}
@@ -61,7 +61,7 @@ export interface CommonToolbarItem {
61
61
  */
62
62
  export interface ToolbarActionItem extends CommonToolbarItem {
63
63
  /** Name of icon WebFont entry or if specifying an imported SVG symbol use "webSvg:" prefix to imported symbol Id.
64
- * @deprecated in 4.16.0. Use {@link CommonToolbarItem.iconNode} instead.
64
+ * @deprecated in 4.16.0. Use {@link CommonToolbarItem.iconNode} instead and specify `undefined` for this property. This will be made optional in 5.0.0.
65
65
  */
66
66
  readonly icon: IconSpec;
67
67
  /** label, shown as tool tip on a button or an item label in a group. */
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarItem.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarItem.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AASH;;GAEG;AACH,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,yGAAyG;IACzG,6EAAuB,CAAA;IACvB,8EAA8E;IAC9E,mEAAkB,CAAA;AACpB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,0BAA0B;IAC1B,uEAAc,CAAA;IACd,wBAAwB;IACxB,mEAAY,CAAA;AACd,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAiGD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAiB;IAEjB,OAAO,SAAS,IAAI,IAAI,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAiB;IAEjB,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAiB;IAEjB,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport type {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport type { BadgeKind, BadgeType, IconSpec } from \"@itwin/core-react\";\nimport { UiItemsProvider } from \"../ui-items-provider/UiItemsProvider\";\n\n/** Used to specify the usage of the toolbar which determine the toolbar position.\n * @public\n */\nexport enum ToolbarUsage {\n /** Contains tools to Create Update and Delete content - in AppUI this is in top left of content area. */\n ContentManipulation = 0,\n /** Manipulate view/camera - in AppUI this is in top right of content area. */\n ViewNavigation = 1,\n}\n\n/** Used to specify the orientation of the toolbar.\n * @public\n */\nexport enum ToolbarOrientation {\n /** Horizontal toolbar. */\n Horizontal = 0,\n /** Vertical toolbar. */\n Vertical = 1,\n}\n\n/** Describes the data needed to insert a UI items into an existing set of UI items.\n * @public\n */\nexport interface CommonToolbarItem {\n /** Require uniqueId for the item. To ensure uniqueness it is suggested that a namespace prefix of the extension name be used. */\n readonly id: string;\n /** Icon of a toolbar item. */\n readonly iconNode?: React.ReactNode;\n /** Describes badge. Renders no badge if not specified.\n * @deprecated in 4.16.0. Use `badgeKind` property instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n readonly badge?: BadgeType;\n /** Specifies the kind of badge, if any, to be rendered. */\n readonly badgeKind?: BadgeKind;\n /** Optional description */\n readonly description?: string | ConditionalStringValue;\n /** Defines if the item is active (shown with an active stripe/bar). */\n readonly isActive?: boolean;\n /** Describes if the item is visible or hidden. The default is for the item to be visible. */\n readonly isHidden?: boolean | ConditionalBooleanValue;\n /** Describes if the item is enabled or disabled. The default is for the item to be enabled. */\n readonly isDisabled?: boolean | ConditionalBooleanValue;\n /** Specifies the item's grouping value. Items are sorted by group and then item priority. When\n * group priority changes a separator is inserted. It is recommended using values 10 through 100, incrementing by 10. This\n * allows extensions enough gaps to insert their own groups. If the value is not specified a groupPriority of 0 is used.\n */\n readonly groupPriority?: number;\n /** Priority within a toolbar or group. */\n readonly itemPriority: number;\n /** Describes layout specific configuration of a toolbar item.\n * @note Only used by {@link UiItemsProvider.getToolbarItems}.\n */\n readonly layouts?: ToolbarItemLayouts;\n}\n\n/** Describes the data needed to insert an action button into a toolbar.\n * @public\n */\nexport interface ToolbarActionItem extends CommonToolbarItem {\n /** Name of icon WebFont entry or if specifying an imported SVG symbol use \"webSvg:\" prefix to imported symbol Id.\n * @deprecated in 4.16.0. Use {@link CommonToolbarItem.iconNode} instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n readonly icon: IconSpec;\n /** label, shown as tool tip on a button or an item label in a group. */\n readonly label: string | ConditionalStringValue;\n /** function to run when the button is pressed. */\n readonly execute: () => void;\n /** Optional parent tool group to add the tool to. */\n readonly parentGroupItemId?: string;\n}\n\n/** Describes the data needed to insert a group button into a toolbar.\n * @public\n */\nexport interface ToolbarGroupItem extends CommonToolbarItem {\n /** Name of icon WebFont entry or if specifying an imported SVG symbol use \"webSvg:\" prefix to imported symbol Id.\n * @deprecated in 4.16.0. Use {@link CommonToolbarItem.iconNode} instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n readonly icon: IconSpec;\n /** label, shown as tool tip on group button or a group button label in a group panel. */\n readonly label: string | ConditionalStringValue;\n /** label shown as the title in at top of group panel. */\n readonly panelLabel?: string | ConditionalStringValue;\n /** children of the group */\n readonly items: ReadonlyArray<ToolbarActionItem | ToolbarGroupItem>;\n /** Optional parent tool group to add the tool to. */\n readonly parentGroupItemId?: string;\n}\n\n/** Describes the data needed to insert a custom button into a toolbar.\n * @public\n */\nexport interface ToolbarCustomItem extends CommonToolbarItem {\n /** Name of icon WebFont entry or if specifying an imported SVG symbol use \"webSvg:\" prefix to imported symbol Id.\n * @deprecated in 4.16.0. Use {@link CommonToolbarItem.iconNode} instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n readonly icon?: IconSpec;\n /** label, shown as tool tip on group button or a group button label in a group panel. */\n readonly label?: string | ConditionalStringValue;\n /** defines the content to display in popup panel */\n readonly panelContent?: React.ReactNode;\n}\n\n/** Any Button Type that can be inserted into a toolbar.\n * @public\n */\nexport type ToolbarItem =\n | ToolbarActionItem\n | ToolbarGroupItem\n | ToolbarCustomItem;\n\n/** ToolbarActionItem type guard.\n * @public\n */\nexport function isToolbarActionItem(\n item: ToolbarItem\n): item is ToolbarActionItem {\n return \"execute\" in item;\n}\n\n/** ToolbarGroupItem type guard.\n * @public\n */\nexport function isToolbarGroupItem(\n item: ToolbarItem\n): item is ToolbarGroupItem {\n return \"items\" in item;\n}\n\n/** ToolbarCustomItem type guard.\n * @public\n */\nexport function isToolbarCustomItem(\n item: ToolbarItem\n): item is ToolbarCustomItem {\n return !isToolbarActionItem(item) && !isToolbarGroupItem(item);\n}\n\n/** Describes toolbar item configuration specific for each layout.\n * @public\n */\nexport interface ToolbarItemLayouts {\n /** Toolbar item configuration in a standard layout. */\n readonly standard?: StandardLayoutToolbarItem;\n}\n\n/** Describes toolbar item configuration specific to a standard layout.\n * @public\n */\nexport interface StandardLayoutToolbarItem {\n /** Describes toolbar usage. */\n readonly usage: ToolbarUsage;\n /** Describes toolbar orientation. */\n readonly orientation: ToolbarOrientation;\n}\n"]}
1
+ {"version":3,"file":"ToolbarItem.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarItem.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AASH;;GAEG;AACH,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,yGAAyG;IACzG,6EAAuB,CAAA;IACvB,8EAA8E;IAC9E,mEAAkB,CAAA;AACpB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,0BAA0B;IAC1B,uEAAc,CAAA;IACd,wBAAwB;IACxB,mEAAY,CAAA;AACd,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAiGD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAiB;IAEjB,OAAO,SAAS,IAAI,IAAI,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAiB;IAEjB,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAiB;IAEjB,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport type {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport type { BadgeKind, BadgeType, IconSpec } from \"@itwin/core-react\";\nimport { UiItemsProvider } from \"../ui-items-provider/UiItemsProvider\";\n\n/** Used to specify the usage of the toolbar which determine the toolbar position.\n * @public\n */\nexport enum ToolbarUsage {\n /** Contains tools to Create Update and Delete content - in AppUI this is in top left of content area. */\n ContentManipulation = 0,\n /** Manipulate view/camera - in AppUI this is in top right of content area. */\n ViewNavigation = 1,\n}\n\n/** Used to specify the orientation of the toolbar.\n * @public\n */\nexport enum ToolbarOrientation {\n /** Horizontal toolbar. */\n Horizontal = 0,\n /** Vertical toolbar. */\n Vertical = 1,\n}\n\n/** Describes the data needed to insert a UI items into an existing set of UI items.\n * @public\n */\nexport interface CommonToolbarItem {\n /** Require uniqueId for the item. To ensure uniqueness it is suggested that a namespace prefix of the extension name be used. */\n readonly id: string;\n /** Icon of a toolbar item. */\n readonly iconNode?: React.ReactNode;\n /** Describes badge. Renders no badge if not specified.\n * @deprecated in 4.16.0. Use `badgeKind` property instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n readonly badge?: BadgeType;\n /** Specifies the kind of badge, if any, to be rendered. */\n readonly badgeKind?: BadgeKind;\n /** Optional description */\n readonly description?: string | ConditionalStringValue;\n /** Defines if the item is active (shown with an active stripe/bar). */\n readonly isActive?: boolean;\n /** Describes if the item is visible or hidden. The default is for the item to be visible. */\n readonly isHidden?: boolean | ConditionalBooleanValue;\n /** Describes if the item is enabled or disabled. The default is for the item to be enabled. */\n readonly isDisabled?: boolean | ConditionalBooleanValue;\n /** Specifies the item's grouping value. Items are sorted by group and then item priority. When\n * group priority changes a separator is inserted. It is recommended using values 10 through 100, incrementing by 10. This\n * allows extensions enough gaps to insert their own groups. If the value is not specified a groupPriority of 0 is used.\n */\n readonly groupPriority?: number;\n /** Priority within a toolbar or group. */\n readonly itemPriority: number;\n /** Describes layout specific configuration of a toolbar item.\n * @note Only used by {@link UiItemsProvider.getToolbarItems}.\n */\n readonly layouts?: ToolbarItemLayouts;\n}\n\n/** Describes the data needed to insert an action button into a toolbar.\n * @public\n */\nexport interface ToolbarActionItem extends CommonToolbarItem {\n /** Name of icon WebFont entry or if specifying an imported SVG symbol use \"webSvg:\" prefix to imported symbol Id.\n * @deprecated in 4.16.0. Use {@link CommonToolbarItem.iconNode} instead and specify `undefined` for this property. This will be made optional in 5.0.0.\n */\n // eslint-disable-next-line deprecation/deprecation\n readonly icon: IconSpec;\n /** label, shown as tool tip on a button or an item label in a group. */\n readonly label: string | ConditionalStringValue;\n /** function to run when the button is pressed. */\n readonly execute: () => void;\n /** Optional parent tool group to add the tool to. */\n readonly parentGroupItemId?: string;\n}\n\n/** Describes the data needed to insert a group button into a toolbar.\n * @public\n */\nexport interface ToolbarGroupItem extends CommonToolbarItem {\n /** Name of icon WebFont entry or if specifying an imported SVG symbol use \"webSvg:\" prefix to imported symbol Id.\n * @deprecated in 4.16.0. Use {@link CommonToolbarItem.iconNode} instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n readonly icon: IconSpec;\n /** label, shown as tool tip on group button or a group button label in a group panel. */\n readonly label: string | ConditionalStringValue;\n /** label shown as the title in at top of group panel. */\n readonly panelLabel?: string | ConditionalStringValue;\n /** children of the group */\n readonly items: ReadonlyArray<ToolbarActionItem | ToolbarGroupItem>;\n /** Optional parent tool group to add the tool to. */\n readonly parentGroupItemId?: string;\n}\n\n/** Describes the data needed to insert a custom button into a toolbar.\n * @public\n */\nexport interface ToolbarCustomItem extends CommonToolbarItem {\n /** Name of icon WebFont entry or if specifying an imported SVG symbol use \"webSvg:\" prefix to imported symbol Id.\n * @deprecated in 4.16.0. Use {@link CommonToolbarItem.iconNode} instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n readonly icon?: IconSpec;\n /** label, shown as tool tip on group button or a group button label in a group panel. */\n readonly label?: string | ConditionalStringValue;\n /** defines the content to display in popup panel */\n readonly panelContent?: React.ReactNode;\n}\n\n/** Any Button Type that can be inserted into a toolbar.\n * @public\n */\nexport type ToolbarItem =\n | ToolbarActionItem\n | ToolbarGroupItem\n | ToolbarCustomItem;\n\n/** ToolbarActionItem type guard.\n * @public\n */\nexport function isToolbarActionItem(\n item: ToolbarItem\n): item is ToolbarActionItem {\n return \"execute\" in item;\n}\n\n/** ToolbarGroupItem type guard.\n * @public\n */\nexport function isToolbarGroupItem(\n item: ToolbarItem\n): item is ToolbarGroupItem {\n return \"items\" in item;\n}\n\n/** ToolbarCustomItem type guard.\n * @public\n */\nexport function isToolbarCustomItem(\n item: ToolbarItem\n): item is ToolbarCustomItem {\n return !isToolbarActionItem(item) && !isToolbarGroupItem(item);\n}\n\n/** Describes toolbar item configuration specific for each layout.\n * @public\n */\nexport interface ToolbarItemLayouts {\n /** Toolbar item configuration in a standard layout. */\n readonly standard?: StandardLayoutToolbarItem;\n}\n\n/** Describes toolbar item configuration specific to a standard layout.\n * @public\n */\nexport interface StandardLayoutToolbarItem {\n /** Describes toolbar usage. */\n readonly usage: ToolbarUsage;\n /** Describes toolbar orientation. */\n readonly orientation: ToolbarOrientation;\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"}
@@ -7,8 +7,8 @@
7
7
  */
8
8
  import { ConditionalBooleanValue, ConditionalStringValue, } from "@itwin/appui-abstract";
9
9
  import { BeEvent } from "@itwin/core-bentley";
10
+ import { ConditionalIconItem } from "@itwin/core-react";
10
11
  import { isToolbarGroupItem } from "./ToolbarItem";
11
- import { ConditionalIconValue } from "../shared/ConditionalValue";
12
12
  function isInstance(args) {
13
13
  return !Array.isArray(args);
14
14
  }
@@ -91,8 +91,9 @@ export class ToolbarItemsManager {
91
91
  }
92
92
  else if (entry instanceof ConditionalStringValue) {
93
93
  entry.syncEventIds.forEach((eventId) => eventIds.add(eventId.toLowerCase()));
94
+ // eslint-disable-next-line deprecation/deprecation
94
95
  }
95
- else if (entry instanceof ConditionalIconValue) {
96
+ else if (entry instanceof ConditionalIconItem) {
96
97
  entry.syncEventIds.forEach((eventId) => eventIds.add(eventId.toLowerCase()));
97
98
  }
98
99
  }
@@ -130,9 +131,11 @@ export class ToolbarItemsManager {
130
131
  else if (entry instanceof ConditionalStringValue) {
131
132
  if (ConditionalStringValue.refreshValue(entry, eventIds))
132
133
  itemsUpdated = true;
134
+ // eslint-disable-next-line deprecation/deprecation
133
135
  }
134
- else if (entry instanceof ConditionalIconValue) {
135
- if (ConditionalIconValue.refreshValue(entry, eventIds))
136
+ else if (entry instanceof ConditionalIconItem) {
137
+ // eslint-disable-next-line deprecation/deprecation
138
+ if (ConditionalIconItem.refreshValue(entry, eventIds))
136
139
  itemsUpdated = true;
137
140
  }
138
141
  }
@@ -167,9 +170,11 @@ export class ToolbarItemsManager {
167
170
  else if (entry instanceof ConditionalStringValue) {
168
171
  if (ConditionalStringValue.refreshValue(entry, eventIds))
169
172
  updateRequired = true;
173
+ // eslint-disable-next-line deprecation/deprecation
170
174
  }
171
- else if (entry instanceof ConditionalIconValue) {
172
- if (ConditionalIconValue.refreshValue(entry, eventIds))
175
+ else if (entry instanceof ConditionalIconItem) {
176
+ // eslint-disable-next-line deprecation/deprecation
177
+ if (ConditionalIconItem.refreshValue(entry, eventIds))
173
178
  updateRequired = true;
174
179
  }
175
180
  }