@itwin/appui-react 4.16.5 → 4.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/lib/cjs/appui-react/UiFramework.d.ts +5 -0
  3. package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
  4. package/lib/cjs/appui-react/UiFramework.js +5 -0
  5. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  6. package/lib/cjs/appui-react/accudraw/AccuDrawDialog.d.ts +1 -0
  7. package/lib/cjs/appui-react/accudraw/AccuDrawDialog.d.ts.map +1 -1
  8. package/lib/cjs/appui-react/accudraw/AccuDrawDialog.js +1 -0
  9. package/lib/cjs/appui-react/accudraw/AccuDrawDialog.js.map +1 -1
  10. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts +1 -0
  11. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  12. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js +1 -0
  13. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  14. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.d.ts +1 -0
  15. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  16. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  17. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts +1 -0
  18. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  19. package/lib/cjs/appui-react/backstage/BackstageComposer.js +2 -0
  20. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  21. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.d.ts +2 -1
  22. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.d.ts.map +1 -1
  23. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.js +2 -1
  24. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  25. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts +1 -0
  26. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  27. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js +7 -2
  28. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  29. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.scss +1 -0
  30. package/lib/cjs/appui-react/content/ContentGroup.d.ts +8 -4
  31. package/lib/cjs/appui-react/content/ContentGroup.d.ts.map +1 -1
  32. package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
  33. package/lib/cjs/appui-react/content/ContentLayout.d.ts +2 -1
  34. package/lib/cjs/appui-react/content/ContentLayout.d.ts.map +1 -1
  35. package/lib/cjs/appui-react/content/ContentLayout.js +44 -10
  36. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  37. package/lib/cjs/appui-react/content/ContentLayoutProps.d.ts +63 -0
  38. package/lib/cjs/appui-react/content/ContentLayoutProps.d.ts.map +1 -0
  39. package/lib/cjs/appui-react/content/ContentLayoutProps.js +10 -0
  40. package/lib/cjs/appui-react/content/ContentLayoutProps.js.map +1 -0
  41. package/lib/cjs/appui-react/content/ContentOverlay.d.ts +4 -0
  42. package/lib/cjs/appui-react/content/ContentOverlay.d.ts.map +1 -1
  43. package/lib/cjs/appui-react/content/ContentOverlay.js +33 -1
  44. package/lib/cjs/appui-react/content/ContentOverlay.js.map +1 -1
  45. package/lib/cjs/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
  46. package/lib/cjs/appui-react/content/FloatingViewportContent.js +1 -1
  47. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  48. package/lib/cjs/appui-react/content/InternalContentLayoutManager.d.ts +1 -1
  49. package/lib/cjs/appui-react/content/InternalContentLayoutManager.d.ts.map +1 -1
  50. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  51. package/lib/cjs/appui-react/content/InternalContentViewManager.d.ts.map +1 -1
  52. package/lib/cjs/appui-react/content/InternalContentViewManager.js +9 -3
  53. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  54. package/lib/cjs/appui-react/content/StageContentLayout.d.ts +1 -1
  55. package/lib/cjs/appui-react/content/StageContentLayout.d.ts.map +1 -1
  56. package/lib/cjs/appui-react/content/StageContentLayout.js.map +1 -1
  57. package/lib/cjs/appui-react/content/StandardContentLayouts.d.ts +20 -0
  58. package/lib/cjs/appui-react/content/StandardContentLayouts.d.ts.map +1 -0
  59. package/lib/cjs/appui-react/content/StandardContentLayouts.js +169 -0
  60. package/lib/cjs/appui-react/content/StandardContentLayouts.js.map +1 -0
  61. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts +1 -0
  62. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts.map +1 -1
  63. package/lib/cjs/appui-react/content/split-pane/SplitPane.js +1 -0
  64. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  65. package/lib/cjs/appui-react/framework/FrameworkContent.d.ts +1 -1
  66. package/lib/cjs/appui-react/framework/FrameworkContent.d.ts.map +1 -1
  67. package/lib/cjs/appui-react/framework/FrameworkContent.js.map +1 -1
  68. package/lib/cjs/appui-react/framework/FrameworkFrontstages.d.ts +3 -0
  69. package/lib/cjs/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
  70. package/lib/cjs/appui-react/framework/FrameworkFrontstages.js.map +1 -1
  71. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +1 -0
  72. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  73. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +2 -1
  74. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  75. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts +2 -0
  76. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
  77. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js +5 -0
  78. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  79. package/lib/cjs/appui-react/hooks/useConditionalProp.d.ts +3 -3
  80. package/lib/cjs/appui-react/hooks/useConditionalProp.d.ts.map +1 -1
  81. package/lib/cjs/appui-react/hooks/useConditionalProp.js.map +1 -1
  82. package/lib/cjs/appui-react/hooks/useConditionalValue.d.ts +1 -1
  83. package/lib/cjs/appui-react/hooks/useConditionalValue.js +1 -1
  84. package/lib/cjs/appui-react/hooks/useConditionalValue.js.map +1 -1
  85. package/lib/cjs/appui-react/hooks/useUiVisibility.d.ts.map +1 -1
  86. package/lib/cjs/appui-react/hooks/useUiVisibility.js +1 -0
  87. package/lib/cjs/appui-react/hooks/useUiVisibility.js.map +1 -1
  88. package/lib/cjs/appui-react/layout/base/LayoutStore.d.ts +3 -1
  89. package/lib/cjs/appui-react/layout/base/LayoutStore.d.ts.map +1 -1
  90. package/lib/cjs/appui-react/layout/base/LayoutStore.js +9 -1
  91. package/lib/cjs/appui-react/layout/base/LayoutStore.js.map +1 -1
  92. package/lib/cjs/appui-react/layout/widget/FloatingTab.scss +1 -0
  93. package/lib/cjs/appui-react/layout/widget/FloatingWidget.scss +1 -0
  94. package/lib/cjs/appui-react/layout/widget/MenuTab.scss +1 -0
  95. package/lib/cjs/appui-react/layout/widget/Overflow.scss +1 -0
  96. package/lib/cjs/appui-react/layout/widget/Tab.scss +1 -0
  97. package/lib/cjs/appui-react/layout/widget/TabBar.scss +1 -0
  98. package/lib/cjs/appui-react/layout/widget-panels/CursorOverlay.scss +1 -0
  99. package/lib/cjs/appui-react/layout/widget-panels/Grip.scss +2 -0
  100. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.scss +1 -0
  101. package/lib/cjs/appui-react/shared/ConditionalValue.d.ts +10 -7
  102. package/lib/cjs/appui-react/shared/ConditionalValue.d.ts.map +1 -1
  103. package/lib/cjs/appui-react/shared/ConditionalValue.js +3 -4
  104. package/lib/cjs/appui-react/shared/ConditionalValue.js.map +1 -1
  105. package/lib/cjs/appui-react/statusbar/StatusBarComposer.d.ts +1 -0
  106. package/lib/cjs/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
  107. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js +3 -0
  108. package/lib/cjs/appui-react/statusbar/StatusBarComposer.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/ToolbarItemsManager.d.ts.map +1 -1
  133. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js +11 -6
  134. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  135. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts +1 -0
  136. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts.map +1 -1
  137. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js +1 -0
  138. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  139. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts +3 -2
  140. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  141. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js +4 -2
  142. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  143. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts +6 -2
  144. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts.map +1 -1
  145. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +117 -88
  146. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  147. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts +2 -2
  148. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  149. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +4 -2
  150. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  151. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts +3 -2
  152. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts.map +1 -1
  153. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +79 -60
  154. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  155. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +1 -0
  156. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  157. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +3 -0
  158. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  159. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts +4 -2
  160. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts.map +1 -1
  161. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +6 -2
  162. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  163. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts +1 -0
  164. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  165. package/lib/cjs/appui-react/uistate/useUiStateStorage.js +1 -0
  166. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
  167. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.d.ts +1 -0
  168. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.d.ts.map +1 -1
  169. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js +1 -0
  170. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  171. package/lib/cjs/appui-react/widgets/BasicToolWidget.d.ts +1 -0
  172. package/lib/cjs/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  173. package/lib/cjs/appui-react/widgets/BasicToolWidget.js +1 -0
  174. package/lib/cjs/appui-react/widgets/BasicToolWidget.js.map +1 -1
  175. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.d.ts +1 -0
  176. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.d.ts.map +1 -1
  177. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.js +3 -1
  178. package/lib/cjs/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  179. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.d.ts +2 -0
  180. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.d.ts.map +1 -1
  181. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +2 -0
  182. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  183. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.d.ts +2 -1
  184. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.d.ts.map +1 -1
  185. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.js +1 -0
  186. package/lib/cjs/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  187. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.d.ts +1 -0
  188. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.d.ts.map +1 -1
  189. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.js +1 -0
  190. package/lib/cjs/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  191. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +1 -1
  192. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  193. package/lib/cjs/appui-react/widgets/WidgetDef.js +7 -7
  194. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  195. package/lib/cjs/appui-react.d.ts +3 -0
  196. package/lib/cjs/appui-react.d.ts.map +1 -1
  197. package/lib/cjs/appui-react.js +3 -0
  198. package/lib/cjs/appui-react.js.map +1 -1
  199. package/lib/esm/appui-react/UiFramework.d.ts +5 -0
  200. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  201. package/lib/esm/appui-react/UiFramework.js +6 -1
  202. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  203. package/lib/esm/appui-react/accudraw/AccuDrawDialog.d.ts +1 -0
  204. package/lib/esm/appui-react/accudraw/AccuDrawDialog.d.ts.map +1 -1
  205. package/lib/esm/appui-react/accudraw/AccuDrawDialog.js +1 -0
  206. package/lib/esm/appui-react/accudraw/AccuDrawDialog.js.map +1 -1
  207. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts +1 -0
  208. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
  209. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +1 -0
  210. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  211. package/lib/esm/appui-react/accudraw/AccuDrawInputField.d.ts +1 -0
  212. package/lib/esm/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  213. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  214. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts +1 -0
  215. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  216. package/lib/esm/appui-react/backstage/BackstageComposer.js +2 -0
  217. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  218. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.d.ts +2 -1
  219. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.d.ts.map +1 -1
  220. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.js +2 -1
  221. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  222. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts +1 -0
  223. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
  224. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js +7 -2
  225. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  226. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +1 -0
  227. package/lib/esm/appui-react/content/ContentGroup.d.ts +8 -4
  228. package/lib/esm/appui-react/content/ContentGroup.d.ts.map +1 -1
  229. package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
  230. package/lib/esm/appui-react/content/ContentLayout.d.ts +2 -1
  231. package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
  232. package/lib/esm/appui-react/content/ContentLayout.js +45 -11
  233. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  234. package/lib/esm/appui-react/content/ContentLayoutProps.d.ts +63 -0
  235. package/lib/esm/appui-react/content/ContentLayoutProps.d.ts.map +1 -0
  236. package/lib/esm/appui-react/content/ContentLayoutProps.js +9 -0
  237. package/lib/esm/appui-react/content/ContentLayoutProps.js.map +1 -0
  238. package/lib/esm/appui-react/content/ContentOverlay.d.ts +4 -0
  239. package/lib/esm/appui-react/content/ContentOverlay.d.ts.map +1 -1
  240. package/lib/esm/appui-react/content/ContentOverlay.js +32 -0
  241. package/lib/esm/appui-react/content/ContentOverlay.js.map +1 -1
  242. package/lib/esm/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
  243. package/lib/esm/appui-react/content/FloatingViewportContent.js +1 -1
  244. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  245. package/lib/esm/appui-react/content/InternalContentLayoutManager.d.ts +1 -1
  246. package/lib/esm/appui-react/content/InternalContentLayoutManager.d.ts.map +1 -1
  247. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  248. package/lib/esm/appui-react/content/InternalContentViewManager.d.ts.map +1 -1
  249. package/lib/esm/appui-react/content/InternalContentViewManager.js +9 -3
  250. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  251. package/lib/esm/appui-react/content/StageContentLayout.d.ts +1 -1
  252. package/lib/esm/appui-react/content/StageContentLayout.d.ts.map +1 -1
  253. package/lib/esm/appui-react/content/StageContentLayout.js.map +1 -1
  254. package/lib/esm/appui-react/content/StandardContentLayouts.d.ts +20 -0
  255. package/lib/esm/appui-react/content/StandardContentLayouts.d.ts.map +1 -0
  256. package/lib/esm/appui-react/content/StandardContentLayouts.js +165 -0
  257. package/lib/esm/appui-react/content/StandardContentLayouts.js.map +1 -0
  258. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts +1 -0
  259. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts.map +1 -1
  260. package/lib/esm/appui-react/content/split-pane/SplitPane.js +1 -0
  261. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  262. package/lib/esm/appui-react/framework/FrameworkContent.d.ts +1 -1
  263. package/lib/esm/appui-react/framework/FrameworkContent.d.ts.map +1 -1
  264. package/lib/esm/appui-react/framework/FrameworkContent.js.map +1 -1
  265. package/lib/esm/appui-react/framework/FrameworkFrontstages.d.ts +3 -0
  266. package/lib/esm/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
  267. package/lib/esm/appui-react/framework/FrameworkFrontstages.js.map +1 -1
  268. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +1 -0
  269. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  270. package/lib/esm/appui-react/frontstage/FrontstageDef.js +2 -1
  271. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  272. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts +2 -0
  273. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
  274. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js +5 -0
  275. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  276. package/lib/esm/appui-react/hooks/useConditionalProp.d.ts +3 -3
  277. package/lib/esm/appui-react/hooks/useConditionalProp.d.ts.map +1 -1
  278. package/lib/esm/appui-react/hooks/useConditionalProp.js.map +1 -1
  279. package/lib/esm/appui-react/hooks/useConditionalValue.d.ts +1 -1
  280. package/lib/esm/appui-react/hooks/useConditionalValue.js +1 -1
  281. package/lib/esm/appui-react/hooks/useConditionalValue.js.map +1 -1
  282. package/lib/esm/appui-react/hooks/useUiVisibility.d.ts.map +1 -1
  283. package/lib/esm/appui-react/hooks/useUiVisibility.js +1 -0
  284. package/lib/esm/appui-react/hooks/useUiVisibility.js.map +1 -1
  285. package/lib/esm/appui-react/layout/base/LayoutStore.d.ts +3 -1
  286. package/lib/esm/appui-react/layout/base/LayoutStore.d.ts.map +1 -1
  287. package/lib/esm/appui-react/layout/base/LayoutStore.js +7 -0
  288. package/lib/esm/appui-react/layout/base/LayoutStore.js.map +1 -1
  289. package/lib/esm/appui-react/layout/widget/FloatingTab.scss +1 -0
  290. package/lib/esm/appui-react/layout/widget/FloatingWidget.scss +1 -0
  291. package/lib/esm/appui-react/layout/widget/MenuTab.scss +1 -0
  292. package/lib/esm/appui-react/layout/widget/Overflow.scss +1 -0
  293. package/lib/esm/appui-react/layout/widget/Tab.scss +1 -0
  294. package/lib/esm/appui-react/layout/widget/TabBar.scss +1 -0
  295. package/lib/esm/appui-react/layout/widget-panels/CursorOverlay.scss +1 -0
  296. package/lib/esm/appui-react/layout/widget-panels/Grip.scss +2 -0
  297. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.scss +1 -0
  298. package/lib/esm/appui-react/shared/ConditionalValue.d.ts +10 -7
  299. package/lib/esm/appui-react/shared/ConditionalValue.d.ts.map +1 -1
  300. package/lib/esm/appui-react/shared/ConditionalValue.js +2 -3
  301. package/lib/esm/appui-react/shared/ConditionalValue.js.map +1 -1
  302. package/lib/esm/appui-react/statusbar/StatusBarComposer.d.ts +1 -0
  303. package/lib/esm/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
  304. package/lib/esm/appui-react/statusbar/StatusBarComposer.js +3 -0
  305. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  306. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.d.ts +1 -0
  307. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.d.ts.map +1 -1
  308. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.js +1 -0
  309. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  310. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.d.ts +1 -0
  311. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.d.ts.map +1 -1
  312. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.js +1 -0
  313. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  314. package/lib/esm/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
  315. package/lib/esm/appui-react/statusfields/SelectionScope.js +1 -1
  316. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  317. package/lib/esm/appui-react/statusfields/SnapMode.d.ts +2 -0
  318. package/lib/esm/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  319. package/lib/esm/appui-react/statusfields/SnapMode.js +59 -83
  320. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  321. package/lib/esm/appui-react/theme/ThemeManager.d.ts +7 -8
  322. package/lib/esm/appui-react/theme/ThemeManager.d.ts.map +1 -1
  323. package/lib/esm/appui-react/theme/ThemeManager.js +7 -8
  324. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  325. package/lib/esm/appui-react/toolbar/ToolbarComposer.d.ts +1 -0
  326. package/lib/esm/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
  327. package/lib/esm/appui-react/toolbar/ToolbarComposer.js +1 -0
  328. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  329. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.d.ts.map +1 -1
  330. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js +11 -6
  331. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  332. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts +1 -0
  333. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.d.ts.map +1 -1
  334. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js +1 -0
  335. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  336. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts +3 -2
  337. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
  338. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js +4 -2
  339. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  340. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts +6 -2
  341. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts.map +1 -1
  342. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +117 -88
  343. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  344. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts +2 -2
  345. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.d.ts.map +1 -1
  346. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +4 -2
  347. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  348. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts +3 -2
  349. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.d.ts.map +1 -1
  350. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +79 -60
  351. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  352. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts +1 -0
  353. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  354. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +3 -0
  355. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  356. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts +4 -2
  357. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts.map +1 -1
  358. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +6 -2
  359. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  360. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts +1 -0
  361. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  362. package/lib/esm/appui-react/uistate/useUiStateStorage.js +1 -0
  363. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
  364. package/lib/esm/appui-react/widgets/BasicNavigationWidget.d.ts +1 -0
  365. package/lib/esm/appui-react/widgets/BasicNavigationWidget.d.ts.map +1 -1
  366. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js +1 -0
  367. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  368. package/lib/esm/appui-react/widgets/BasicToolWidget.d.ts +1 -0
  369. package/lib/esm/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
  370. package/lib/esm/appui-react/widgets/BasicToolWidget.js +1 -0
  371. package/lib/esm/appui-react/widgets/BasicToolWidget.js.map +1 -1
  372. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.d.ts +1 -0
  373. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.d.ts.map +1 -1
  374. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.js +3 -1
  375. package/lib/esm/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
  376. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.d.ts +2 -0
  377. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.d.ts.map +1 -1
  378. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +2 -0
  379. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  380. package/lib/esm/appui-react/widgets/ToolWidgetComposer.d.ts +2 -1
  381. package/lib/esm/appui-react/widgets/ToolWidgetComposer.d.ts.map +1 -1
  382. package/lib/esm/appui-react/widgets/ToolWidgetComposer.js +1 -0
  383. package/lib/esm/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
  384. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.d.ts +1 -0
  385. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.d.ts.map +1 -1
  386. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.js +1 -0
  387. package/lib/esm/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
  388. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +1 -1
  389. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  390. package/lib/esm/appui-react/widgets/WidgetDef.js +7 -7
  391. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  392. package/lib/esm/appui-react.d.ts +3 -0
  393. package/lib/esm/appui-react.d.ts.map +1 -1
  394. package/lib/esm/appui-react.js +3 -0
  395. package/lib/esm/appui-react.js.map +1 -1
  396. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionScope.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SelectionScope.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD,UAAU,wBAAyB,SAAQ,WAAW;IACpD,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+HAA+H;IAC/H,eAAe,CAAC,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,kEAAkE;IAClE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,qBA6DlE"}
1
+ {"version":3,"file":"SelectionScope.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SelectionScope.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD,UAAU,wBAAyB,SAAQ,WAAW;IACpD,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+HAA+H;IAC/H,eAAe,CAAC,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,kEAAkE;IAClE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,qBA8DlE"}
@@ -44,7 +44,7 @@ function SelectionScopeField(props) {
44
44
  UiFramework_1.UiFramework.setActiveSelectionScope(newValue);
45
45
  };
46
46
  return (React.createElement("div", { className: (0, classnames_1.default)("uifw-statusFields-selectionScope", props.className), style: props.style },
47
- React.createElement(itwinui_react_1.LabeledSelect, { className: "uifw-statusFields-selectionScope-selector", label: `${translate("selectionScopeField.label")}:`, labelProps: { className: "uifw-statusFields-selectionScope-label" }, displayStyle: "inline", value: activeSelectionScope, options: options, onChange: updateSelectValue, "data-testid": "components-selectionScope-selector", title: translate("selectionScopeField.toolTip"), size: "small" })));
47
+ React.createElement(itwinui_react_1.LabeledSelect, { className: "uifw-statusFields-selectionScope-selector", label: `${translate("selectionScopeField.label")}:`, labelProps: { className: "uifw-statusFields-selectionScope-label" }, popoverProps: { placement: "top" }, displayStyle: "inline", value: activeSelectionScope, options: options, onChange: updateSelectValue, "data-testid": "components-selectionScope-selector", title: translate("selectionScopeField.toolTip"), size: "small" })));
48
48
  }
49
49
  exports.SelectionScopeField = SelectionScopeField;
50
50
  //# sourceMappingURL=SelectionScope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionScope.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SelectionScope.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,iCAA+B;AAC/B,2CAAoC;AACpC,+BAA+B;AAE/B,wDAAqD;AACrD,gDAA6C;AAC7C,4DAAyD;AACzD,8EAA2E;AAe3E;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IACvC,MAAM,yBAAyB,GAAG,IAAA,+CAAsB;IACtD,mDAAmD;IACnD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,oBAAoB,CACpD,CAAC;IACF,MAAM,6BAA6B,GAAG,IAAA,+CAAsB;IAC1D,mDAAmD;IACnD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,wBAAwB,CACxD,CAAC;IAEF,MAAM,oBAAoB,GACxB,KAAK,CAAC,WAAW,IAAI,yBAAyB,IAAI,EAAE,CAAC;IACvD,MAAM,wBAAwB,GAAG,KAAK,CAAC,OAAO,CAC5C,GAAG,EAAE,CACH,KAAK,CAAC,eAAe;QACrB,6BAA6B,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EACxE,CAAC,KAAK,CAAC,eAAe,EAAE,6BAA6B,CAAC,CACvD,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAC3B,GAAG,EAAE,CACH,wBAAwB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC,CAAC,EACJ,CAAC,wBAAwB,CAAC,CAC3B,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE;QAC7C,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,mDAAmD;QACnD,yBAAW,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,OAAO,CACL,6BACE,SAAS,EAAE,IAAA,oBAAU,EACnB,kCAAkC,EAClC,KAAK,CAAC,SAAS,CAChB,EACD,KAAK,EAAE,KAAK,CAAC,KAAK;QAElB,oBAAC,6BAAa,IACZ,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE,GAAG,SAAS,CAAC,2BAA2B,CAAC,GAAG,EACnD,UAAU,EAAE,EAAE,SAAS,EAAE,wCAAwC,EAAE,EACnE,YAAY,EAAC,QAAQ,EACrB,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,iBACf,oCAAoC,EAChD,KAAK,EAAE,SAAS,CAAC,6BAA6B,CAAC,EAC/C,IAAI,EAAC,OAAO,GACZ,CACE,CACP,CAAC;AACJ,CAAC;AA7DD,kDA6DC","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 \"./SelectionScope.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { LabeledSelect } from \"@itwin/itwinui-react\";\nimport { UiFramework } from \"../UiFramework\";\nimport { useTranslation } from \"../hooks/useTranslation\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState\";\n\n// eslint-disable-next-line deprecation/deprecation\ninterface SelectionScopeFieldProps extends CommonProps {\n /** Describes which selection scope is active. Uses redux store as a fallback. Defaults to `\"\"`. */\n activeScope?: string;\n /** Describes available selection scopes. Uses redux store as a fallback. Defaults to `{ id: \"element\", label: \"Element\" }`. */\n selectionScopes?: {\n id: string;\n label: string;\n }[];\n /** Function called when the active selection scope is changed. */\n onChange?: (scope: string) => void;\n}\n\n/** `SelectionScopeField` component is designed to be specified in a status bar.\n * It displays the active selection scope and the list of scopes from which the user can change the active selection scope.\n * @public\n */\nexport function SelectionScopeField(props: SelectionScopeFieldProps) {\n const { translate } = useTranslation();\n const reduxActiveSelectionScope = useReduxFrameworkState(\n // eslint-disable-next-line deprecation/deprecation\n (state) => state?.sessionState.activeSelectionScope\n );\n const reduxAvailableSelectionScopes = useReduxFrameworkState(\n // eslint-disable-next-line deprecation/deprecation\n (state) => state?.sessionState.availableSelectionScopes\n );\n\n const activeSelectionScope =\n props.activeScope ?? reduxActiveSelectionScope ?? \"\";\n const availableSelectionScopes = React.useMemo(\n () =>\n props.selectionScopes ??\n reduxAvailableSelectionScopes ?? [{ id: \"element\", label: \"Element\" }],\n [props.selectionScopes, reduxAvailableSelectionScopes]\n );\n\n const options = React.useMemo(\n () =>\n availableSelectionScopes.map((scope) => {\n return { value: scope.id, label: scope.label };\n }),\n [availableSelectionScopes]\n );\n\n const updateSelectValue = (newValue: string) => {\n if (!newValue) return;\n if (props.onChange) {\n props.onChange(newValue);\n return;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n UiFramework.setActiveSelectionScope(newValue);\n };\n\n return (\n <div\n className={classnames(\n \"uifw-statusFields-selectionScope\",\n props.className\n )}\n style={props.style}\n >\n <LabeledSelect\n className=\"uifw-statusFields-selectionScope-selector\"\n label={`${translate(\"selectionScopeField.label\")}:`}\n labelProps={{ className: \"uifw-statusFields-selectionScope-label\" }}\n displayStyle=\"inline\"\n value={activeSelectionScope}\n options={options}\n onChange={updateSelectValue}\n data-testid=\"components-selectionScope-selector\"\n title={translate(\"selectionScopeField.toolTip\")}\n size=\"small\"\n />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"SelectionScope.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SelectionScope.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,iCAA+B;AAC/B,2CAAoC;AACpC,+BAA+B;AAE/B,wDAAqD;AACrD,gDAA6C;AAC7C,4DAAyD;AACzD,8EAA2E;AAe3E;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IACvC,MAAM,yBAAyB,GAAG,IAAA,+CAAsB;IACtD,mDAAmD;IACnD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,oBAAoB,CACpD,CAAC;IACF,MAAM,6BAA6B,GAAG,IAAA,+CAAsB;IAC1D,mDAAmD;IACnD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,wBAAwB,CACxD,CAAC;IAEF,MAAM,oBAAoB,GACxB,KAAK,CAAC,WAAW,IAAI,yBAAyB,IAAI,EAAE,CAAC;IACvD,MAAM,wBAAwB,GAAG,KAAK,CAAC,OAAO,CAC5C,GAAG,EAAE,CACH,KAAK,CAAC,eAAe;QACrB,6BAA6B,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EACxE,CAAC,KAAK,CAAC,eAAe,EAAE,6BAA6B,CAAC,CACvD,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAC3B,GAAG,EAAE,CACH,wBAAwB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC,CAAC,EACJ,CAAC,wBAAwB,CAAC,CAC3B,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE;QAC7C,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,mDAAmD;QACnD,yBAAW,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,OAAO,CACL,6BACE,SAAS,EAAE,IAAA,oBAAU,EACnB,kCAAkC,EAClC,KAAK,CAAC,SAAS,CAChB,EACD,KAAK,EAAE,KAAK,CAAC,KAAK;QAElB,oBAAC,6BAAa,IACZ,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE,GAAG,SAAS,CAAC,2BAA2B,CAAC,GAAG,EACnD,UAAU,EAAE,EAAE,SAAS,EAAE,wCAAwC,EAAE,EACnE,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAClC,YAAY,EAAC,QAAQ,EACrB,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,iBACf,oCAAoC,EAChD,KAAK,EAAE,SAAS,CAAC,6BAA6B,CAAC,EAC/C,IAAI,EAAC,OAAO,GACZ,CACE,CACP,CAAC;AACJ,CAAC;AA9DD,kDA8DC","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 \"./SelectionScope.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { LabeledSelect } from \"@itwin/itwinui-react\";\nimport { UiFramework } from \"../UiFramework\";\nimport { useTranslation } from \"../hooks/useTranslation\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState\";\n\n// eslint-disable-next-line deprecation/deprecation\ninterface SelectionScopeFieldProps extends CommonProps {\n /** Describes which selection scope is active. Uses redux store as a fallback. Defaults to `\"\"`. */\n activeScope?: string;\n /** Describes available selection scopes. Uses redux store as a fallback. Defaults to `{ id: \"element\", label: \"Element\" }`. */\n selectionScopes?: {\n id: string;\n label: string;\n }[];\n /** Function called when the active selection scope is changed. */\n onChange?: (scope: string) => void;\n}\n\n/** `SelectionScopeField` component is designed to be specified in a status bar.\n * It displays the active selection scope and the list of scopes from which the user can change the active selection scope.\n * @public\n */\nexport function SelectionScopeField(props: SelectionScopeFieldProps) {\n const { translate } = useTranslation();\n const reduxActiveSelectionScope = useReduxFrameworkState(\n // eslint-disable-next-line deprecation/deprecation\n (state) => state?.sessionState.activeSelectionScope\n );\n const reduxAvailableSelectionScopes = useReduxFrameworkState(\n // eslint-disable-next-line deprecation/deprecation\n (state) => state?.sessionState.availableSelectionScopes\n );\n\n const activeSelectionScope =\n props.activeScope ?? reduxActiveSelectionScope ?? \"\";\n const availableSelectionScopes = React.useMemo(\n () =>\n props.selectionScopes ??\n reduxAvailableSelectionScopes ?? [{ id: \"element\", label: \"Element\" }],\n [props.selectionScopes, reduxAvailableSelectionScopes]\n );\n\n const options = React.useMemo(\n () =>\n availableSelectionScopes.map((scope) => {\n return { value: scope.id, label: scope.label };\n }),\n [availableSelectionScopes]\n );\n\n const updateSelectValue = (newValue: string) => {\n if (!newValue) return;\n if (props.onChange) {\n props.onChange(newValue);\n return;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n UiFramework.setActiveSelectionScope(newValue);\n };\n\n return (\n <div\n className={classnames(\n \"uifw-statusFields-selectionScope\",\n props.className\n )}\n style={props.style}\n >\n <LabeledSelect\n className=\"uifw-statusFields-selectionScope-selector\"\n label={`${translate(\"selectionScopeField.label\")}:`}\n labelProps={{ className: \"uifw-statusFields-selectionScope-label\" }}\n popoverProps={{ placement: \"top\" }}\n displayStyle=\"inline\"\n value={activeSelectionScope}\n options={options}\n onChange={updateSelectValue}\n data-testid=\"components-selectionScope-selector\"\n title={translate(\"selectionScopeField.toolTip\")}\n size=\"small\"\n />\n </div>\n );\n}\n"]}
@@ -10,6 +10,8 @@ interface SnapModeFieldProps extends CommonProps {
10
10
  * @note Enum flags are supported.
11
11
  */
12
12
  snapMode?: SnapMode;
13
+ /** The list of snap modes available for selection. Defaults to all the modes.*/
14
+ availableSnapModes?: SnapMode[];
13
15
  onChange?: (newSnapMode: SnapMode) => void;
14
16
  }
15
17
  /** `SnapModeField` component designed to be specified in a status bar. It will
@@ -1 +1 @@
1
- {"version":3,"file":"SnapMode.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SnapMode.tsx"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA2D/B,oEAAoE;AAEpE,UAAU,kBAAmB,SAAQ,WAAW;IAC9C;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,qBAyFtD"}
1
+ {"version":3,"file":"SnapMode.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SnapMode.tsx"],"names":[],"mappings":"AAIA;;GAEG;AASH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAwE/B,oEAAoE;AAEpE,UAAU,kBAAmB,SAAQ,WAAW;IAC9C;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,qBAyDtD"}
@@ -25,43 +25,53 @@ const useTranslation_1 = require("../hooks/useTranslation");
25
25
  const useReduxFrameworkState_1 = require("../uistate/useReduxFrameworkState");
26
26
  const itwinui_react_1 = require("@itwin/itwinui-react");
27
27
  const StatusBarPopover_1 = require("../statusbar/popup/StatusBarPopover");
28
- // eslint-disable-next-line deprecation/deprecation
29
- function getIconFromIconName(iconName) {
30
- let iconSpec = snaps_svg_1.default;
31
- switch (iconName) {
32
- case "snaps":
33
- iconSpec = snaps_svg_1.default;
34
- break;
35
- case "snaps-intersection":
36
- iconSpec = snaps_intersection_svg_1.default;
37
- break;
38
- case "snaps-center":
39
- iconSpec = snaps_center_svg_1.default;
40
- break;
41
- case "snaps-nearest":
42
- iconSpec = snaps_nearest_svg_1.default;
43
- break;
44
- case "snaps-origin":
45
- iconSpec = snaps_origin_svg_1.default;
46
- break;
47
- case "snaps-midpoint":
48
- iconSpec = snaps_midpoint_svg_1.default;
49
- break;
50
- case "snaps-bisector":
51
- iconSpec = snaps_bisector_svg_1.default;
52
- break;
53
- }
54
- return iconSpec;
55
- }
56
- /** Return icon class name for a specific snapMode. */
57
- const getSnapModeIconNameFromMode = (modeEntries, snapMode) => {
58
- for (const modeEntry of modeEntries) {
59
- if (modeEntry.value === snapMode)
60
- return modeEntry.iconName;
61
- }
62
- if (snapMode > 0)
63
- return "snaps-multione";
64
- return "placeholder";
28
+ // Field entry of all possible snap modes.
29
+ const allSnapModeFieldEntries = [
30
+ {
31
+ labelKey: "snapModeField.keypoint",
32
+ value: core_frontend_1.SnapMode.NearestKeypoint,
33
+ iconSpec: snaps_svg_1.default,
34
+ },
35
+ {
36
+ labelKey: "snapModeField.intersection",
37
+ value: core_frontend_1.SnapMode.Intersection,
38
+ iconSpec: snaps_intersection_svg_1.default,
39
+ },
40
+ {
41
+ labelKey: "snapModeField.center",
42
+ value: core_frontend_1.SnapMode.Center,
43
+ iconSpec: snaps_center_svg_1.default,
44
+ },
45
+ {
46
+ labelKey: "snapModeField.nearest",
47
+ value: core_frontend_1.SnapMode.Nearest,
48
+ iconSpec: snaps_nearest_svg_1.default,
49
+ },
50
+ {
51
+ labelKey: "snapModeField.origin",
52
+ value: core_frontend_1.SnapMode.Origin,
53
+ iconSpec: snaps_origin_svg_1.default,
54
+ },
55
+ {
56
+ labelKey: "snapModeField.midpoint",
57
+ value: core_frontend_1.SnapMode.MidPoint,
58
+ iconSpec: snaps_midpoint_svg_1.default,
59
+ },
60
+ {
61
+ labelKey: "snapModeField.bisector",
62
+ value: core_frontend_1.SnapMode.Bisector,
63
+ iconSpec: snaps_bisector_svg_1.default,
64
+ },
65
+ ];
66
+ /** Return icon for a specific snapMode. */
67
+ const getSnapModeIcon = (snapMode) => {
68
+ // Get all the modes present in the bitmask.
69
+ const modes = allSnapModeFieldEntries.filter((entry) => {
70
+ return (entry.value & snapMode) === entry.value;
71
+ });
72
+ return (
73
+ // eslint-disable-next-line deprecation/deprecation
74
+ React.createElement(core_react_1.Icon, { iconSpec: modes.length === 1 ? modes[0].iconSpec : snaps_svg_1.default }));
65
75
  };
66
76
  /** `SnapModeField` component designed to be specified in a status bar. It will
67
77
  * display the active snap mode that AccuSnap will use and allow the user to select a new snap mode.
@@ -69,62 +79,28 @@ const getSnapModeIconNameFromMode = (modeEntries, snapMode) => {
69
79
  */
70
80
  function SnapModeField(props) {
71
81
  const { translate } = (0, useTranslation_1.useTranslation)();
82
+ const snapModeEntries = props.availableSnapModes
83
+ ? allSnapModeFieldEntries.filter((entry) => {
84
+ return (props.availableSnapModes &&
85
+ props.availableSnapModes.some((availableSnap) => availableSnap === entry.value));
86
+ })
87
+ : allSnapModeFieldEntries;
72
88
  const reduxSnapMode = (0, useReduxFrameworkState_1.useReduxFrameworkState)(
73
89
  // eslint-disable-next-line deprecation/deprecation
74
90
  (state) => state?.configurableUiState.snapMode);
75
91
  const snapMode = props.snapMode ?? reduxSnapMode ?? core_frontend_1.SnapMode.NearestKeypoint;
76
- const snapModes = [
77
- {
78
- label: translate("snapModeField.keypoint"),
79
- value: core_frontend_1.SnapMode.NearestKeypoint,
80
- iconName: "snaps",
81
- },
82
- {
83
- label: translate("snapModeField.intersection"),
84
- value: core_frontend_1.SnapMode.Intersection,
85
- iconName: "snaps-intersection",
86
- },
87
- {
88
- label: translate("snapModeField.center"),
89
- value: core_frontend_1.SnapMode.Center,
90
- iconName: "snaps-center",
91
- },
92
- {
93
- label: translate("snapModeField.nearest"),
94
- value: core_frontend_1.SnapMode.Nearest,
95
- iconName: "snaps-nearest",
96
- },
97
- {
98
- label: translate("snapModeField.origin"),
99
- value: core_frontend_1.SnapMode.Origin,
100
- iconName: "snaps-origin",
101
- },
102
- {
103
- label: translate("snapModeField.midpoint"),
104
- value: core_frontend_1.SnapMode.MidPoint,
105
- iconName: "snaps-midpoint",
106
- },
107
- {
108
- label: translate("snapModeField.bisector"),
109
- value: core_frontend_1.SnapMode.Bisector,
110
- iconName: "snaps-bisector",
111
- },
112
- ];
113
- const iconName = getSnapModeIconNameFromMode(snapModes, snapMode);
114
92
  const title = translate("snapModeField.snapMode");
115
- return (React.createElement(StatusBarPopover_1.StatusBarPopover, { content: React.createElement(Panel_1.SnapModePanel, { title: title }, snapModes.map((item, index) => (React.createElement(Snap_1.Snap, { key: `SM_${index}`, onClick: () => {
93
+ return (React.createElement(StatusBarPopover_1.StatusBarPopover, { content: React.createElement(Panel_1.SnapModePanel, { title: title }, snapModeEntries.map((entry, index) => (React.createElement(Snap_1.Snap, { key: `SM_${index}`, onClick: () => {
116
94
  if (props.onChange) {
117
- props.onChange(item.value);
95
+ props.onChange(entry.value);
118
96
  return;
119
97
  }
120
98
  // eslint-disable-next-line deprecation/deprecation
121
- UiFramework_1.UiFramework.setAccudrawSnapMode(item.value);
122
- }, isActive: (snapMode & item.value) === item.value, icon:
123
- // eslint-disable-next-line deprecation/deprecation
124
- React.createElement(core_react_1.Icon, { className: `icon`, iconSpec: getIconFromIconName(item.iconName) }) }, item.label)))) },
125
- React.createElement(itwinui_react_1.Button, { styleType: "borderless", title: title,
99
+ UiFramework_1.UiFramework.setAccudrawSnapMode(entry.value);
100
+ }, isActive: (snapMode & entry.value) === entry.value, icon:
126
101
  // eslint-disable-next-line deprecation/deprecation
127
- endIcon: React.createElement(core_react_1.Icon, { iconSpec: getIconFromIconName(iconName) }) },
102
+ React.createElement(core_react_1.Icon, { className: `icon`, iconSpec: entry.iconSpec }) }, translate(entry.labelKey))))) },
103
+ React.createElement(itwinui_react_1.Button, { styleType: "borderless", title: title, endIcon: getSnapModeIcon(snapMode) },
128
104
  title,
129
105
  React.createElement(StatusBarPopover_1.StatusBarPopover.ExpandIndicator, null))));
130
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SnapMode.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SnapMode.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module StatusBar\n */\n\nimport snapModeBisector from \"@bentley/icons-generic/icons/snaps-bisector.svg\";\nimport snapModeCenter from \"@bentley/icons-generic/icons/snaps-center.svg\";\nimport snapModeIntersection from \"@bentley/icons-generic/icons/snaps-intersection.svg\";\nimport snapModeMidpoint from \"@bentley/icons-generic/icons/snaps-midpoint.svg\";\nimport snapModeNearest from \"@bentley/icons-generic/icons/snaps-nearest.svg\";\nimport snapModeOrigin from \"@bentley/icons-generic/icons/snaps-origin.svg\";\nimport snapModeKeypoint from \"@bentley/icons-generic/icons/snaps.svg\";\nimport { SnapMode } from \"@itwin/core-frontend\";\nimport { Icon } from \"@itwin/core-react\";\nimport type { CommonProps, IconSpec } from \"@itwin/core-react\";\nimport * as React from \"react\";\nimport { UiFramework } from \"../UiFramework\";\nimport { SnapModePanel } from \"../layout/footer/snap-mode/Panel\";\nimport { Snap } from \"../layout/footer/snap-mode/Snap\";\nimport { useTranslation } from \"../hooks/useTranslation\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState\";\nimport { Button } from \"@itwin/itwinui-react\";\nimport { StatusBarPopover } from \"../statusbar/popup/StatusBarPopover\";\n\n/** Define the properties that will be used to represent the available snap modes. */\ninterface SnapModeFieldEntry {\n label: string;\n value: number;\n iconName: string;\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction getIconFromIconName(iconName: string): IconSpec {\n let iconSpec = snapModeKeypoint;\n switch (iconName) {\n case \"snaps\":\n iconSpec = snapModeKeypoint;\n break;\n case \"snaps-intersection\":\n iconSpec = snapModeIntersection;\n break;\n case \"snaps-center\":\n iconSpec = snapModeCenter;\n break;\n case \"snaps-nearest\":\n iconSpec = snapModeNearest;\n break;\n case \"snaps-origin\":\n iconSpec = snapModeOrigin;\n break;\n case \"snaps-midpoint\":\n iconSpec = snapModeMidpoint;\n break;\n case \"snaps-bisector\":\n iconSpec = snapModeBisector;\n break;\n }\n return iconSpec;\n}\n\n/** Return icon class name for a specific snapMode. */\nconst getSnapModeIconNameFromMode = (\n modeEntries: SnapModeFieldEntry[],\n snapMode: number\n) => {\n for (const modeEntry of modeEntries) {\n if (modeEntry.value === snapMode) return modeEntry.iconName;\n }\n\n if (snapMode > 0) return \"snaps-multione\";\n\n return \"placeholder\";\n};\n\n/** Defines properties supported by the SnapMode Field Component. */\n// eslint-disable-next-line deprecation/deprecation\ninterface SnapModeFieldProps extends CommonProps {\n /** Uses redux store as a fallback. Defaults to {@link SnapMode.NearestKeypoint}.\n * @note Enum flags are supported.\n */\n snapMode?: SnapMode;\n onChange?: (newSnapMode: SnapMode) => void;\n}\n\n/** `SnapModeField` component designed to be specified in a status bar. It will\n * display the active snap mode that AccuSnap will use and allow the user to select a new snap mode.\n * @public\n */\nexport function SnapModeField(props: SnapModeFieldProps) {\n const { translate } = useTranslation();\n const reduxSnapMode = useReduxFrameworkState(\n // eslint-disable-next-line deprecation/deprecation\n (state) => state?.configurableUiState.snapMode\n );\n const snapMode = props.snapMode ?? reduxSnapMode ?? SnapMode.NearestKeypoint;\n\n const snapModes: SnapModeFieldEntry[] = [\n {\n label: translate(\"snapModeField.keypoint\"),\n value: SnapMode.NearestKeypoint as number,\n iconName: \"snaps\",\n },\n {\n label: translate(\"snapModeField.intersection\"),\n value: SnapMode.Intersection as number,\n iconName: \"snaps-intersection\",\n },\n {\n label: translate(\"snapModeField.center\"),\n value: SnapMode.Center as number,\n iconName: \"snaps-center\",\n },\n {\n label: translate(\"snapModeField.nearest\"),\n value: SnapMode.Nearest as number,\n iconName: \"snaps-nearest\",\n },\n {\n label: translate(\"snapModeField.origin\"),\n value: SnapMode.Origin as number,\n iconName: \"snaps-origin\",\n },\n {\n label: translate(\"snapModeField.midpoint\"),\n value: SnapMode.MidPoint as number,\n iconName: \"snaps-midpoint\",\n },\n {\n label: translate(\"snapModeField.bisector\"),\n value: SnapMode.Bisector as number,\n iconName: \"snaps-bisector\",\n },\n ];\n const iconName = getSnapModeIconNameFromMode(snapModes, snapMode);\n\n const title = translate(\"snapModeField.snapMode\");\n return (\n <StatusBarPopover\n content={\n <SnapModePanel title={title}>\n {snapModes.map((item, index) => (\n <Snap\n key={`SM_${index}`}\n onClick={() => {\n if (props.onChange) {\n props.onChange(item.value);\n return;\n }\n // eslint-disable-next-line deprecation/deprecation\n UiFramework.setAccudrawSnapMode(item.value);\n }}\n isActive={(snapMode & item.value) === item.value}\n icon={\n // eslint-disable-next-line deprecation/deprecation\n <Icon\n className={`icon`}\n iconSpec={getIconFromIconName(item.iconName)}\n />\n }\n >\n {item.label}\n </Snap>\n ))}\n </SnapModePanel>\n }\n >\n <Button\n styleType=\"borderless\"\n title={title}\n // eslint-disable-next-line deprecation/deprecation\n endIcon={<Icon iconSpec={getIconFromIconName(iconName)} />}\n >\n {title}\n <StatusBarPopover.ExpandIndicator />\n </Button>\n </StatusBarPopover>\n );\n}\n"]}
1
+ {"version":3,"file":"SnapMode.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/SnapMode.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module StatusBar\n */\n\nimport snapModeBisector from \"@bentley/icons-generic/icons/snaps-bisector.svg\";\nimport snapModeCenter from \"@bentley/icons-generic/icons/snaps-center.svg\";\nimport snapModeIntersection from \"@bentley/icons-generic/icons/snaps-intersection.svg\";\nimport snapModeMidpoint from \"@bentley/icons-generic/icons/snaps-midpoint.svg\";\nimport snapModeNearest from \"@bentley/icons-generic/icons/snaps-nearest.svg\";\nimport snapModeOrigin from \"@bentley/icons-generic/icons/snaps-origin.svg\";\nimport snapModeKeypoint from \"@bentley/icons-generic/icons/snaps.svg\";\nimport { SnapMode } from \"@itwin/core-frontend\";\nimport { Icon } from \"@itwin/core-react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport * as React from \"react\";\nimport { UiFramework } from \"../UiFramework\";\nimport { SnapModePanel } from \"../layout/footer/snap-mode/Panel\";\nimport { Snap } from \"../layout/footer/snap-mode/Snap\";\nimport { useTranslation } from \"../hooks/useTranslation\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState\";\nimport { Button } from \"@itwin/itwinui-react\";\nimport { StatusBarPopover } from \"../statusbar/popup/StatusBarPopover\";\n\n/** Define the properties that will be used to represent the available snap modes. */\ninterface SnapModeFieldEntry {\n labelKey: string;\n value: number;\n iconSpec: string;\n}\n\n// Field entry of all possible snap modes.\nconst allSnapModeFieldEntries: SnapModeFieldEntry[] = [\n {\n labelKey: \"snapModeField.keypoint\",\n value: SnapMode.NearestKeypoint as number,\n iconSpec: snapModeKeypoint,\n },\n {\n labelKey: \"snapModeField.intersection\",\n value: SnapMode.Intersection as number,\n iconSpec: snapModeIntersection,\n },\n {\n labelKey: \"snapModeField.center\",\n value: SnapMode.Center as number,\n iconSpec: snapModeCenter,\n },\n {\n labelKey: \"snapModeField.nearest\",\n value: SnapMode.Nearest as number,\n iconSpec: snapModeNearest,\n },\n {\n labelKey: \"snapModeField.origin\",\n value: SnapMode.Origin as number,\n iconSpec: snapModeOrigin,\n },\n {\n labelKey: \"snapModeField.midpoint\",\n value: SnapMode.MidPoint as number,\n iconSpec: snapModeMidpoint,\n },\n {\n labelKey: \"snapModeField.bisector\",\n value: SnapMode.Bisector as number,\n iconSpec: snapModeBisector,\n },\n];\n\n/** Return icon for a specific snapMode. */\nconst getSnapModeIcon = (snapMode: number) => {\n // Get all the modes present in the bitmask.\n const modes: SnapModeFieldEntry[] = allSnapModeFieldEntries.filter(\n (entry) => {\n return (entry.value & snapMode) === entry.value;\n }\n );\n\n return (\n // eslint-disable-next-line deprecation/deprecation\n <Icon\n iconSpec={modes.length === 1 ? modes[0].iconSpec : snapModeKeypoint}\n />\n );\n};\n\n/** Defines properties supported by the SnapMode Field Component. */\n// eslint-disable-next-line deprecation/deprecation\ninterface SnapModeFieldProps extends CommonProps {\n /** Uses redux store as a fallback. Defaults to {@link SnapMode.NearestKeypoint}.\n * @note Enum flags are supported.\n */\n snapMode?: SnapMode;\n /** The list of snap modes available for selection. Defaults to all the modes.*/\n availableSnapModes?: SnapMode[];\n onChange?: (newSnapMode: SnapMode) => void;\n}\n\n/** `SnapModeField` component designed to be specified in a status bar. It will\n * display the active snap mode that AccuSnap will use and allow the user to select a new snap mode.\n * @public\n */\nexport function SnapModeField(props: SnapModeFieldProps) {\n const { translate } = useTranslation();\n const snapModeEntries: SnapModeFieldEntry[] = props.availableSnapModes\n ? allSnapModeFieldEntries.filter((entry) => {\n return (\n props.availableSnapModes &&\n props.availableSnapModes.some(\n (availableSnap) => availableSnap === (entry.value as SnapMode)\n )\n );\n })\n : allSnapModeFieldEntries;\n\n const reduxSnapMode = useReduxFrameworkState(\n // eslint-disable-next-line deprecation/deprecation\n (state) => state?.configurableUiState.snapMode\n );\n const snapMode = props.snapMode ?? reduxSnapMode ?? SnapMode.NearestKeypoint;\n\n const title = translate(\"snapModeField.snapMode\");\n return (\n <StatusBarPopover\n content={\n <SnapModePanel title={title}>\n {snapModeEntries.map((entry, index) => (\n <Snap\n key={`SM_${index}`}\n onClick={() => {\n if (props.onChange) {\n props.onChange(entry.value);\n return;\n }\n // eslint-disable-next-line deprecation/deprecation\n UiFramework.setAccudrawSnapMode(entry.value);\n }}\n isActive={(snapMode & entry.value) === entry.value}\n icon={\n // eslint-disable-next-line deprecation/deprecation\n <Icon className={`icon`} iconSpec={entry.iconSpec} />\n }\n >\n {translate(entry.labelKey)}\n </Snap>\n ))}\n </SnapModePanel>\n }\n >\n <Button\n styleType=\"borderless\"\n title={title}\n endIcon={getSnapModeIcon(snapMode)}\n >\n {title}\n <StatusBarPopover.ExpandIndicator />\n </Button>\n </StatusBarPopover>\n );\n}\n"]}
@@ -9,16 +9,15 @@ interface ThemeManagerProps {
9
9
  /** Uses redux store as a fallback. Defaults to {@link SYSTEM_PREFERRED_COLOR_THEME}. */
10
10
  theme?: ThemeId;
11
11
  }
12
- /** ThemeManager handles setting color themes and element opacity management. Note that this component will
13
- * affect the entire application by setting the data-theme attribute to the html element.
14
- * It also sets an iTwinUI `ThemeProvider` element locally, so all elements
15
- * within the AppUI tree will have the same theme, and should be using iTwinUI 2.x or later.
16
- * A `ColorTheme` enum values will configure iTwinUI `ThemeProvider` accordingly.
17
- * Any other string will only apply the `data-theme` attribute to the `html` element
12
+ /** `ThemeManager` handles setting color themes. Note that this component will
13
+ * affect the entire application by setting the internal `data-theme` attribute.
14
+ * Component children are wrapped with `v2` and `v3` iTwinUI `ThemeProvider` components, so all nodes within the tree will have the same theme, and should be using iTwinUI 2.x or later.
15
+ * Specified `ThemeId` will be mapped to iTwinUI `theme` accordingly.
16
+ * Any other string will only apply the `data-theme` attribute to the underlying `html` element
18
17
  * and `ThemeProvider` theme will be set to `inherit`, in this case the application is
19
- * responsible for setting the theme by overriding iTwinUI css variables.
18
+ * responsible for setting the theme, i.e. by using iTwinUI css variables.
20
19
  *
21
- * This React component should wrap {@link ConfigurableUiContent}.
20
+ * This component should wrap {@link ConfigurableUiContent}.
22
21
  *
23
22
  * ```tsx
24
23
  * <ThemeManager>
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,qBA+BrE"}
1
+ {"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,UAAU,iBAAiB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,qBA+BrE"}
@@ -28,16 +28,15 @@ const highContrastColorThemes = [
28
28
  ThemeId_1.ColorTheme.HighContrastDark,
29
29
  ThemeId_1.ColorTheme.HighContrastLight,
30
30
  ];
31
- /** ThemeManager handles setting color themes and element opacity management. Note that this component will
32
- * affect the entire application by setting the data-theme attribute to the html element.
33
- * It also sets an iTwinUI `ThemeProvider` element locally, so all elements
34
- * within the AppUI tree will have the same theme, and should be using iTwinUI 2.x or later.
35
- * A `ColorTheme` enum values will configure iTwinUI `ThemeProvider` accordingly.
36
- * Any other string will only apply the `data-theme` attribute to the `html` element
31
+ /** `ThemeManager` handles setting color themes. Note that this component will
32
+ * affect the entire application by setting the internal `data-theme` attribute.
33
+ * Component children are wrapped with `v2` and `v3` iTwinUI `ThemeProvider` components, so all nodes within the tree will have the same theme, and should be using iTwinUI 2.x or later.
34
+ * Specified `ThemeId` will be mapped to iTwinUI `theme` accordingly.
35
+ * Any other string will only apply the `data-theme` attribute to the underlying `html` element
37
36
  * and `ThemeProvider` theme will be set to `inherit`, in this case the application is
38
- * responsible for setting the theme by overriding iTwinUI css variables.
37
+ * responsible for setting the theme, i.e. by using iTwinUI css variables.
39
38
  *
40
- * This React component should wrap {@link ConfigurableUiContent}.
39
+ * This component should wrap {@link ConfigurableUiContent}.
41
40
  *
42
41
  * ```tsx
43
42
  * <ThemeManager>
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA6B;AAC7B,+BAA+B;AAE/B,wDAAqD;AACrD,8DAA2E;AAE3E,uCAAqE;AACrE,8EAA2E;AAG3E,sCAAsC;AACtC,MAAM,wBAAwB,GAA+B;IAC3D,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,OAAO;IAC3B,CAAC,oBAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO;IACvC,CAAC,oBAAU,CAAC,IAAI,CAAC,EAAE,MAAM;IACzB,CAAC,oBAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM;IACrC,CAAC,oBAAU,CAAC,MAAM,CAAC,EAAE,IAAI;IACzB,EAAE,EAAE,IAAI,EAAE,0CAA0C;CACrD,CAAC;AAEF,0CAA0C;AAC1C,MAAM,uBAAuB,GAAa;IACxC,oBAAU,CAAC,gBAAgB;IAC3B,oBAAU,CAAC,iBAAiB;CAC7B,CAAC;AAQF;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAqB;IACpE,MAAM,UAAU,GAAG,IAAA,+CAAsB,EAAC,CAAC,KAAK,EAAE,EAAE;QAClD,mDAAmD;QACnD,OAAO,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,IAAI,sCAA4B,CAAC;IAExE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,aAAa,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE7D,OAAO,CACL,oBAAC,6BAAa,IACZ,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,aAAa,IAAI,SAAS,EACjC,YAAY,EAAE,EAAE,YAAY,EAAE,yBACV,eAAe,EACnC,UAAU,EAAE,IAAI;QAEhB,oBAAC,gCAAe,CAAC,iFAAiF,IAChG,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EACzB,KAAK,EAAE,aAAa,IAAI,SAAS,EACjC,YAAY,EAAE,EAAE,YAAY,EAAE,IAE7B,QAAQ,CACO,CACJ,CACjB,CAAC;AACJ,CAAC;AA/BD,oCA+BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module State\n */\n\nimport \"./ThemeManager.scss\";\nimport * as React from \"react\";\nimport type { ThemeType } from \"@itwin/itwinui-react\";\nimport { ThemeProvider } from \"@itwin/itwinui-react\";\nimport { ThemeProvider as ThemeProviderV2 } from \"@itwin/itwinui-react-v2\";\nimport type { ThemeId } from \"./ThemeId\";\nimport { ColorTheme, SYSTEM_PREFERRED_COLOR_THEME } from \"./ThemeId\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState\";\nimport type { ConfigurableUiContent } from \"../configurableui/ConfigurableUiContent\";\n\n/** Map of ColorTheme to ThemeType. */\nconst colorThemeToThemeTypeMap: { [x: string]: ThemeType } = {\n [ColorTheme.Light]: \"light\",\n [ColorTheme.HighContrastLight]: \"light\",\n [ColorTheme.Dark]: \"dark\",\n [ColorTheme.HighContrastDark]: \"dark\",\n [ColorTheme.System]: \"os\",\n os: \"os\", // handle \"os\" for backwards compatibility\n};\n\n/** List of high contrast color themes. */\nconst highContrastColorThemes: string[] = [\n ColorTheme.HighContrastDark,\n ColorTheme.HighContrastLight,\n];\n\ninterface ThemeManagerProps {\n children?: React.ReactNode;\n /** Uses redux store as a fallback. Defaults to {@link SYSTEM_PREFERRED_COLOR_THEME}. */\n theme?: ThemeId;\n}\n\n/** ThemeManager handles setting color themes and element opacity management. Note that this component will\n * affect the entire application by setting the data-theme attribute to the html element.\n * It also sets an iTwinUI `ThemeProvider` element locally, so all elements\n * within the AppUI tree will have the same theme, and should be using iTwinUI 2.x or later.\n * A `ColorTheme` enum values will configure iTwinUI `ThemeProvider` accordingly.\n * Any other string will only apply the `data-theme` attribute to the `html` element\n * and `ThemeProvider` theme will be set to `inherit`, in this case the application is\n * responsible for setting the theme by overriding iTwinUI css variables.\n *\n * This React component should wrap {@link ConfigurableUiContent}.\n *\n * ```tsx\n * <ThemeManager>\n * <ConfigurableUiContent />\n * </ThemeManager>\n * ```\n * @public\n */\nexport function ThemeManager({ children, ...props }: ThemeManagerProps) {\n const reduxTheme = useReduxFrameworkState((state) => {\n // eslint-disable-next-line deprecation/deprecation\n return state?.configurableUiState.theme;\n });\n const theme = props.theme ?? reduxTheme ?? SYSTEM_PREFERRED_COLOR_THEME;\n\n React.useEffect(() => {\n document.documentElement.setAttribute(\"data-theme\", theme);\n }, [theme]);\n\n const providerTheme = colorThemeToThemeTypeMap[theme];\n const highContrast = highContrastColorThemes.includes(theme);\n\n return (\n <ThemeProvider\n className=\"uifw-root\"\n theme={providerTheme ?? \"inherit\"}\n themeOptions={{ highContrast }}\n data-root-container=\"appui-root-id\"\n includeCss={true}\n >\n <ThemeProviderV2 /* v2 ThemeProvider is required to fix popup styling issues in widget popouts. */\n style={{ height: \"100%\" }}\n theme={providerTheme ?? \"inherit\"}\n themeOptions={{ highContrast }}\n >\n {children}\n </ThemeProviderV2>\n </ThemeProvider>\n );\n}\n"]}
1
+ {"version":3,"file":"ThemeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA6B;AAC7B,+BAA+B;AAE/B,wDAAqD;AACrD,8DAA2E;AAE3E,uCAAqE;AACrE,8EAA2E;AAG3E,sCAAsC;AACtC,MAAM,wBAAwB,GAA+B;IAC3D,CAAC,oBAAU,CAAC,KAAK,CAAC,EAAE,OAAO;IAC3B,CAAC,oBAAU,CAAC,iBAAiB,CAAC,EAAE,OAAO;IACvC,CAAC,oBAAU,CAAC,IAAI,CAAC,EAAE,MAAM;IACzB,CAAC,oBAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM;IACrC,CAAC,oBAAU,CAAC,MAAM,CAAC,EAAE,IAAI;IACzB,EAAE,EAAE,IAAI,EAAE,0CAA0C;CACrD,CAAC;AAEF,0CAA0C;AAC1C,MAAM,uBAAuB,GAAa;IACxC,oBAAU,CAAC,gBAAgB;IAC3B,oBAAU,CAAC,iBAAiB;CAC7B,CAAC;AAQF;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAqB;IACpE,MAAM,UAAU,GAAG,IAAA,+CAAsB,EAAC,CAAC,KAAK,EAAE,EAAE;QAClD,mDAAmD;QACnD,OAAO,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,IAAI,sCAA4B,CAAC;IAExE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,aAAa,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE7D,OAAO,CACL,oBAAC,6BAAa,IACZ,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,aAAa,IAAI,SAAS,EACjC,YAAY,EAAE,EAAE,YAAY,EAAE,yBACV,eAAe,EACnC,UAAU,EAAE,IAAI;QAEhB,oBAAC,gCAAe,CAAC,iFAAiF,IAChG,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EACzB,KAAK,EAAE,aAAa,IAAI,SAAS,EACjC,YAAY,EAAE,EAAE,YAAY,EAAE,IAE7B,QAAQ,CACO,CACJ,CACjB,CAAC;AACJ,CAAC;AA/BD,oCA+BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module State\n */\n\nimport \"./ThemeManager.scss\";\nimport * as React from \"react\";\nimport type { ThemeType } from \"@itwin/itwinui-react\";\nimport { ThemeProvider } from \"@itwin/itwinui-react\";\nimport { ThemeProvider as ThemeProviderV2 } from \"@itwin/itwinui-react-v2\";\nimport type { ThemeId } from \"./ThemeId\";\nimport { ColorTheme, SYSTEM_PREFERRED_COLOR_THEME } from \"./ThemeId\";\nimport { useReduxFrameworkState } from \"../uistate/useReduxFrameworkState\";\nimport type { ConfigurableUiContent } from \"../configurableui/ConfigurableUiContent\";\n\n/** Map of ColorTheme to ThemeType. */\nconst colorThemeToThemeTypeMap: { [x: string]: ThemeType } = {\n [ColorTheme.Light]: \"light\",\n [ColorTheme.HighContrastLight]: \"light\",\n [ColorTheme.Dark]: \"dark\",\n [ColorTheme.HighContrastDark]: \"dark\",\n [ColorTheme.System]: \"os\",\n os: \"os\", // handle \"os\" for backwards compatibility\n};\n\n/** List of high contrast color themes. */\nconst highContrastColorThemes: string[] = [\n ColorTheme.HighContrastDark,\n ColorTheme.HighContrastLight,\n];\n\ninterface ThemeManagerProps {\n children?: React.ReactNode;\n /** Uses redux store as a fallback. Defaults to {@link SYSTEM_PREFERRED_COLOR_THEME}. */\n theme?: ThemeId;\n}\n\n/** `ThemeManager` handles setting color themes. Note that this component will\n * affect the entire application by setting the internal `data-theme` attribute.\n * Component children are wrapped with `v2` and `v3` iTwinUI `ThemeProvider` components, so all nodes within the tree will have the same theme, and should be using iTwinUI 2.x or later.\n * Specified `ThemeId` will be mapped to iTwinUI `theme` accordingly.\n * Any other string will only apply the `data-theme` attribute to the underlying `html` element\n * and `ThemeProvider` theme will be set to `inherit`, in this case the application is\n * responsible for setting the theme, i.e. by using iTwinUI css variables.\n *\n * This component should wrap {@link ConfigurableUiContent}.\n *\n * ```tsx\n * <ThemeManager>\n * <ConfigurableUiContent />\n * </ThemeManager>\n * ```\n * @public\n */\nexport function ThemeManager({ children, ...props }: ThemeManagerProps) {\n const reduxTheme = useReduxFrameworkState((state) => {\n // eslint-disable-next-line deprecation/deprecation\n return state?.configurableUiState.theme;\n });\n const theme = props.theme ?? reduxTheme ?? SYSTEM_PREFERRED_COLOR_THEME;\n\n React.useEffect(() => {\n document.documentElement.setAttribute(\"data-theme\", theme);\n }, [theme]);\n\n const providerTheme = colorThemeToThemeTypeMap[theme];\n const highContrast = highContrastColorThemes.includes(theme);\n\n return (\n <ThemeProvider\n className=\"uifw-root\"\n theme={providerTheme ?? \"inherit\"}\n themeOptions={{ highContrast }}\n data-root-container=\"appui-root-id\"\n includeCss={true}\n >\n <ThemeProviderV2 /* v2 ThemeProvider is required to fix popup styling issues in widget popouts. */\n style={{ height: \"100%\" }}\n theme={providerTheme ?? \"inherit\"}\n themeOptions={{ highContrast }}\n >\n {children}\n </ThemeProviderV2>\n </ThemeProvider>\n );\n}\n"]}
@@ -6,6 +6,7 @@ import type { ToolbarItem } from "./ToolbarItem";
6
6
  import { ToolbarOrientation, ToolbarUsage } from "./ToolbarItem";
7
7
  /** Properties for the [[ToolbarComposer]] React components
8
8
  * @public
9
+ * @deprecated in 4.17.0. Use `React.ComponentProps<typeof ToolbarComposer>`
9
10
  */
10
11
  export interface ExtensibleToolbarProps {
11
12
  /** Toolbar items. */
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarComposer.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarComposer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,kBAAkB,EAClB,YAAY,EACb,MAAM,eAAe,CAAC;AA4JvB;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qBAAqB;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,8FAA8F;IAC9F,KAAK,EAAE,YAAY,CAAC;IACpB,2BAA2B;IAC3B,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,sBAAsB,qBA8C5D"}
1
+ {"version":3,"file":"ToolbarComposer.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarComposer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAGL,kBAAkB,EAClB,YAAY,EACb,MAAM,eAAe,CAAC;AA4JvB;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,qBAAqB;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,8FAA8F;IAC9F,KAAK,EAAE,YAAY,CAAC;IACpB,2BAA2B;IAC3B,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;;;GAIG;AAEH,wBAAgB,eAAe,CAAC,KAAK,EAAE,sBAAsB,qBA8C5D"}
@@ -130,6 +130,7 @@ const useSnapWidgetOpacitySetting = () => {
130
130
  * @note Overrides `isActive` property based on the active tool id.
131
131
  * @public
132
132
  */
133
+ // eslint-disable-next-line deprecation/deprecation
133
134
  function ToolbarComposer(props) {
134
135
  const { usage, orientation } = props;
135
136
  // process items from addon UI providers
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarComposer.tsx"],"names":[],"mappings":"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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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarItemsManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarItemsManager.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,eAAe,CAAC;AAQvB;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CAC5C;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAG9B,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAM;gBAEtC,KAAK,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC;IAI9C;;OAEG;IACH,SAAgB,cAAc,iBACrB,uBAAuB,KAAK,IAAI,EACrC;IAEJ,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACI,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC;IAIlD,yCAAyC;IACzC,IAAW,KAAK,IAAI,aAAa,CAAC,WAAW,CAAC,CAE7C;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EAEjD;IAEM,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;IAkBhE,uCAAuC;IAChC,MAAM,CACX,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAUvE,gBAAgB;IACT,SAAS;IAIhB,OAAO,CAAC,MAAM,CAAC,aAAa;WA0Bd,oBAAoB,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,EAAE;IAM3E,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA4ChC,OAAO,CAAC,4BAA4B;IA2C7B,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;IAWjD,OAAO,CAAC,MAAM,CAAC,wCAAwC;IAoBvD,OAAO,CAAC,6BAA6B;IAwBrC,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAyBvC,eAAe,CAAC,MAAM,EAAE,MAAM;CAyBtC"}
1
+ {"version":3,"file":"ToolbarItemsManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/ToolbarItemsManager.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,eAAe,CAAC;AAOvB;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CAC5C;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAG9B,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,CAAM;gBAEtC,KAAK,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC;IAI9C;;OAEG;IACH,SAAgB,cAAc,iBACrB,uBAAuB,KAAK,IAAI,EACrC;IAEJ,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACI,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC;IAIlD,yCAAyC;IACzC,IAAW,KAAK,IAAI,aAAa,CAAC,WAAW,CAAC,CAE7C;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,EAEjD;IAEM,GAAG,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;IAkBhE,uCAAuC;IAChC,MAAM,CACX,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAUvE,gBAAgB;IACT,SAAS;IAIhB,OAAO,CAAC,MAAM,CAAC,aAAa;WA2Bd,oBAAoB,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,EAAE;IAM3E,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA8ChC,OAAO,CAAC,4BAA4B;IA6C7B,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;IAWjD,OAAO,CAAC,MAAM,CAAC,wCAAwC;IAoBvD,OAAO,CAAC,6BAA6B;IAwBrC,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAyBvC,eAAe,CAAC,MAAM,EAAE,MAAM;CAyBtC"}
@@ -10,8 +10,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.ToolbarItemsManager = void 0;
11
11
  const appui_abstract_1 = require("@itwin/appui-abstract");
12
12
  const core_bentley_1 = require("@itwin/core-bentley");
13
+ const core_react_1 = require("@itwin/core-react");
13
14
  const ToolbarItem_1 = require("./ToolbarItem");
14
- const ConditionalValue_1 = require("../shared/ConditionalValue");
15
15
  function isInstance(args) {
16
16
  return !Array.isArray(args);
17
17
  }
@@ -94,8 +94,9 @@ class ToolbarItemsManager {
94
94
  }
95
95
  else if (entry instanceof appui_abstract_1.ConditionalStringValue) {
96
96
  entry.syncEventIds.forEach((eventId) => eventIds.add(eventId.toLowerCase()));
97
+ // eslint-disable-next-line deprecation/deprecation
97
98
  }
98
- else if (entry instanceof ConditionalValue_1.ConditionalIconValue) {
99
+ else if (entry instanceof core_react_1.ConditionalIconItem) {
99
100
  entry.syncEventIds.forEach((eventId) => eventIds.add(eventId.toLowerCase()));
100
101
  }
101
102
  }
@@ -133,9 +134,11 @@ class ToolbarItemsManager {
133
134
  else if (entry instanceof appui_abstract_1.ConditionalStringValue) {
134
135
  if (appui_abstract_1.ConditionalStringValue.refreshValue(entry, eventIds))
135
136
  itemsUpdated = true;
137
+ // eslint-disable-next-line deprecation/deprecation
136
138
  }
137
- else if (entry instanceof ConditionalValue_1.ConditionalIconValue) {
138
- if (ConditionalValue_1.ConditionalIconValue.refreshValue(entry, eventIds))
139
+ else if (entry instanceof core_react_1.ConditionalIconItem) {
140
+ // eslint-disable-next-line deprecation/deprecation
141
+ if (core_react_1.ConditionalIconItem.refreshValue(entry, eventIds))
139
142
  itemsUpdated = true;
140
143
  }
141
144
  }
@@ -170,9 +173,11 @@ class ToolbarItemsManager {
170
173
  else if (entry instanceof appui_abstract_1.ConditionalStringValue) {
171
174
  if (appui_abstract_1.ConditionalStringValue.refreshValue(entry, eventIds))
172
175
  updateRequired = true;
176
+ // eslint-disable-next-line deprecation/deprecation
173
177
  }
174
- else if (entry instanceof ConditionalValue_1.ConditionalIconValue) {
175
- if (ConditionalValue_1.ConditionalIconValue.refreshValue(entry, eventIds))
178
+ else if (entry instanceof core_react_1.ConditionalIconItem) {
179
+ // eslint-disable-next-line deprecation/deprecation
180
+ if (core_react_1.ConditionalIconItem.refreshValue(entry, eventIds))
176
181
  updateRequired = true;
177
182
  }
178
183
  }