@itwin/appui-react 4.13.2 → 4.13.4

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 (616) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/lib/cjs/appui-react/UiFramework.js +1 -1
  3. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  4. package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  5. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.d.ts +1 -1
  6. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  7. package/lib/cjs/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  8. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
  9. package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  10. package/lib/cjs/appui-react/accudraw/AccuDrawWidget.js +1 -1
  11. package/lib/cjs/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  12. package/lib/cjs/appui-react/accudraw/Calculator.js +1 -1
  13. package/lib/cjs/appui-react/accudraw/Calculator.js.map +1 -1
  14. package/lib/cjs/appui-react/accudraw/CalculatorEngine.js +2 -2
  15. package/lib/cjs/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  16. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js +1 -1
  17. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  18. package/lib/cjs/appui-react/accudraw/MenuButton.js.map +1 -1
  19. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  20. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  21. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.js +1 -1
  22. package/lib/cjs/appui-react/backstage/BackstageItemUtilities.js.map +1 -1
  23. package/lib/cjs/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  24. package/lib/cjs/appui-react/backstage/useDefaultBackstageItems.js.map +1 -1
  25. package/lib/cjs/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  26. package/lib/cjs/appui-react/childwindow/ChildWindowWidget.js.map +1 -1
  27. package/lib/cjs/appui-react/childwindow/CopyStyles.js.map +1 -1
  28. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
  29. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +2 -0
  30. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  31. package/lib/cjs/appui-react/configurableui/ActivityTracker.js.map +1 -1
  32. package/lib/cjs/appui-react/configurableui/ConfigurableUiControl.js +1 -1
  33. package/lib/cjs/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
  34. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  35. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  36. package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
  37. package/lib/cjs/appui-react/configurableui/state.js +1 -1
  38. package/lib/cjs/appui-react/configurableui/state.js.map +1 -1
  39. package/lib/cjs/appui-react/content/ContentControl.js.map +1 -1
  40. package/lib/cjs/appui-react/content/ContentGroup.js +1 -1
  41. package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
  42. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  43. package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
  44. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  45. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  46. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +1 -1
  47. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  48. package/lib/cjs/appui-react/content/InternalContentViewManager.js +1 -1
  49. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  50. package/lib/cjs/appui-react/content/StageContentLayout.js.map +1 -1
  51. package/lib/cjs/appui-react/content/ViewStateHelper.js.map +1 -1
  52. package/lib/cjs/appui-react/content/ViewportContentControl.js.map +1 -1
  53. package/lib/cjs/appui-react/content/split-pane/Pane.js.map +1 -1
  54. package/lib/cjs/appui-react/content/split-pane/Resizer.js.map +1 -1
  55. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  56. package/lib/cjs/appui-react/cursor/CursorInformation.js +3 -3
  57. package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
  58. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  59. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.js +2 -2
  60. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  61. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js +1 -1
  62. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  63. package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  64. package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
  65. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +1 -1
  66. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  67. package/lib/cjs/appui-react/dialog/InternalContentDialogManager.js +1 -1
  68. package/lib/cjs/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  69. package/lib/cjs/appui-react/dialog/InternalModalDialogManager.js +1 -1
  70. package/lib/cjs/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  71. package/lib/cjs/appui-react/dialog/InternalModelessDialogManager.js +1 -1
  72. package/lib/cjs/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  73. package/lib/cjs/appui-react/dialog/StandardMessageBox.js.map +1 -1
  74. package/lib/cjs/appui-react/dialog/UiDataProvidedDialog.js.map +1 -1
  75. package/lib/cjs/appui-react/feedback/ElementTooltip.js +1 -1
  76. package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
  77. package/lib/cjs/appui-react/feedback/ValidationTextbox.js +1 -1
  78. package/lib/cjs/appui-react/feedback/ValidationTextbox.js.map +1 -1
  79. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +1 -1
  80. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +1 -1
  81. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  82. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js +1 -1
  83. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  84. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +1 -1
  85. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  86. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js +1 -1
  87. package/lib/cjs/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  88. package/lib/cjs/appui-react/frontstage/StageUsage.js +1 -1
  89. package/lib/cjs/appui-react/frontstage/StageUsage.js.map +1 -1
  90. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  91. package/lib/cjs/appui-react/hooks/useActiveViewport.js.map +1 -1
  92. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  93. package/lib/cjs/appui-react/hooks/useConditionalValue.js.map +1 -1
  94. package/lib/cjs/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  95. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  96. package/lib/cjs/appui-react/hooks/useTranslation.js.map +1 -1
  97. package/lib/cjs/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +1 -1
  98. package/lib/cjs/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  99. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  100. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -1
  101. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  102. package/lib/cjs/appui-react/keyins/Keyins.js +1 -1
  103. package/lib/cjs/appui-react/keyins/Keyins.js.map +1 -1
  104. package/lib/cjs/appui-react/layout/backstage/Backstage.js +1 -1
  105. package/lib/cjs/appui-react/layout/backstage/Backstage.js.map +1 -1
  106. package/lib/cjs/appui-react/layout/base/DragManager.js.map +1 -1
  107. package/lib/cjs/appui-react/layout/base/NineZone.js.map +1 -1
  108. package/lib/cjs/appui-react/layout/base/SafeAreaInsets.js +1 -1
  109. package/lib/cjs/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  110. package/lib/cjs/appui-react/layout/base/usePointerCaptor.js.map +1 -1
  111. package/lib/cjs/appui-react/layout/footer/Indicator.js +1 -1
  112. package/lib/cjs/appui-react/layout/footer/Indicator.js.map +1 -1
  113. package/lib/cjs/appui-react/layout/outline/PanelOutline.js.map +1 -1
  114. package/lib/cjs/appui-react/layout/popup/Tooltip.js +1 -1
  115. package/lib/cjs/appui-react/layout/popup/Tooltip.js.map +1 -1
  116. package/lib/cjs/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
  117. package/lib/cjs/appui-react/layout/state/TabLocation.js.map +1 -1
  118. package/lib/cjs/appui-react/layout/state/WidgetLocation.js.map +1 -1
  119. package/lib/cjs/appui-react/layout/state/internal/NineZoneStateHelpers.js.map +1 -1
  120. package/lib/cjs/appui-react/layout/state/internal/PanelStateHelpers.js.map +1 -1
  121. package/lib/cjs/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
  122. package/lib/cjs/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
  123. package/lib/cjs/appui-react/layout/target/PanelTargets.js.map +1 -1
  124. package/lib/cjs/appui-react/layout/target/SectionTarget.js.map +1 -1
  125. package/lib/cjs/appui-react/layout/target/useAllowedSideTarget.js.map +1 -1
  126. package/lib/cjs/appui-react/layout/target/useAllowedWidgetTarget.js.map +1 -1
  127. package/lib/cjs/appui-react/layout/tool-settings/Docked.js.map +1 -1
  128. package/lib/cjs/appui-react/layout/widget/Buttons.js.map +1 -1
  129. package/lib/cjs/appui-react/layout/widget/ContentManager.js.map +1 -1
  130. package/lib/cjs/appui-react/layout/widget/ContentRenderer.js.map +1 -1
  131. package/lib/cjs/appui-react/layout/widget/FloatingWidget.js.map +1 -1
  132. package/lib/cjs/appui-react/layout/widget/Overflow.js.map +1 -1
  133. package/lib/cjs/appui-react/layout/widget/PanelWidget.js.map +1 -1
  134. package/lib/cjs/appui-react/layout/widget/SendBack.js.map +1 -1
  135. package/lib/cjs/appui-react/layout/widget/Tab.js.map +1 -1
  136. package/lib/cjs/appui-react/layout/widget/TabBar.js.map +1 -1
  137. package/lib/cjs/appui-react/layout/widget/Tabs.js.map +1 -1
  138. package/lib/cjs/appui-react/layout/widget/Widget.js.map +1 -1
  139. package/lib/cjs/appui-react/layout/widget/tools/button/Button.js.map +1 -1
  140. package/lib/cjs/appui-react/layout/widget-panels/Expander.js.map +1 -1
  141. package/lib/cjs/appui-react/layout/widget-panels/Grip.js.map +1 -1
  142. package/lib/cjs/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
  143. package/lib/cjs/appui-react/layout/widget-panels/useAnimatePanel.js.map +1 -1
  144. package/lib/cjs/appui-react/layout/widget-panels/usePanelsAutoCollapse.js.map +1 -1
  145. package/lib/cjs/appui-react/messages/AppNotificationManager.js.map +1 -1
  146. package/lib/cjs/appui-react/messages/InputField.js.map +1 -1
  147. package/lib/cjs/appui-react/messages/MessageManager.js +1 -1
  148. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  149. package/lib/cjs/appui-react/messages/MessageRenderer.js.map +1 -1
  150. package/lib/cjs/appui-react/messages/Pointer.js +1 -1
  151. package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
  152. package/lib/cjs/appui-react/messages/StatusMessageManager.js.map +1 -1
  153. package/lib/cjs/appui-react/messages/getToastCategory.d.ts +1 -1
  154. package/lib/cjs/appui-react/messages/getToastCategory.js.map +1 -1
  155. package/lib/cjs/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
  156. package/lib/cjs/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  157. package/lib/cjs/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
  158. package/lib/cjs/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  159. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js +1 -1
  160. package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  161. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js +1 -1
  162. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  163. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -1
  164. package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  165. package/lib/cjs/appui-react/pickers/ListPicker.js +1 -1
  166. package/lib/cjs/appui-react/pickers/ListPicker.js.map +1 -1
  167. package/lib/cjs/appui-react/pickers/ViewSelector.js +1 -1
  168. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  169. package/lib/cjs/appui-react/popup/CardPopup.js +1 -1
  170. package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
  171. package/lib/cjs/appui-react/popup/ComponentPopup.js.map +1 -1
  172. package/lib/cjs/appui-react/popup/InputEditorPopup.js.map +1 -1
  173. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  174. package/lib/cjs/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  175. package/lib/cjs/appui-react/popup/PopupManager.js +2 -2
  176. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  177. package/lib/cjs/appui-react/popup/PositionPopup.js.map +1 -1
  178. package/lib/cjs/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  179. package/lib/cjs/appui-react/popup/ToolbarPopup.js +1 -1
  180. package/lib/cjs/appui-react/popup/ToolbarPopup.js.map +1 -1
  181. package/lib/cjs/appui-react/preview/PreviewFeatures.js.map +1 -1
  182. package/lib/cjs/appui-react/preview/activate-dropped-tab/activateDroppedTab.js.map +1 -1
  183. package/lib/cjs/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -1
  184. package/lib/cjs/appui-react/preview/new-toolbars/ActionItem.js.map +1 -1
  185. package/lib/cjs/appui-react/preview/new-toolbars/CustomItem.js.map +1 -1
  186. package/lib/cjs/appui-react/preview/new-toolbars/GroupItem.js.map +1 -1
  187. package/lib/cjs/appui-react/preview/new-toolbars/ToolGroup.js.map +1 -1
  188. package/lib/cjs/appui-react/preview/new-toolbars/Toolbar.js.map +1 -1
  189. package/lib/cjs/appui-react/preview/new-toolbars/useOverflow.js.map +1 -1
  190. package/lib/cjs/appui-react/preview/reparent-popout-widgets/usePopoutsStore.js.map +1 -1
  191. package/lib/cjs/appui-react/preview/reparent-popout-widgets/useReparentPopoutWidget.js.map +1 -1
  192. package/lib/cjs/appui-react/preview/widget-action-dropdown/Button.js.map +1 -1
  193. package/lib/cjs/appui-react/redux/ReducerRegistry.js.map +1 -1
  194. package/lib/cjs/appui-react/redux/SessionState.js +2 -2
  195. package/lib/cjs/appui-react/redux/SessionState.js.map +1 -1
  196. package/lib/cjs/appui-react/redux/StateManager.js +1 -1
  197. package/lib/cjs/appui-react/redux/StateManager.js.map +1 -1
  198. package/lib/cjs/appui-react/redux/connectIModel.js +3 -3
  199. package/lib/cjs/appui-react/redux/connectIModel.js.map +1 -1
  200. package/lib/cjs/appui-react/safearea/SafeAreaInsets.js +1 -1
  201. package/lib/cjs/appui-react/safearea/SafeAreaInsets.js.map +1 -1
  202. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js +3 -3
  203. package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  204. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  205. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  206. package/lib/cjs/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  207. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  208. package/lib/cjs/appui-react/shared/ActionButtonItemDef.js +1 -1
  209. package/lib/cjs/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  210. package/lib/cjs/appui-react/shared/CommandItemDef.js +1 -1
  211. package/lib/cjs/appui-react/shared/CommandItemDef.js.map +1 -1
  212. package/lib/cjs/appui-react/shared/CustomItemDef.js +1 -1
  213. package/lib/cjs/appui-react/shared/CustomItemDef.js.map +1 -1
  214. package/lib/cjs/appui-react/shared/MenuItem.js.map +1 -1
  215. package/lib/cjs/appui-react/shared/SelectionScope.js +1 -1
  216. package/lib/cjs/appui-react/shared/SelectionScope.js.map +1 -1
  217. package/lib/cjs/appui-react/shared/ToolItemDef.js.map +1 -1
  218. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  219. package/lib/cjs/appui-react/stagepanels/StagePanelLocation.js +1 -1
  220. package/lib/cjs/appui-react/stagepanels/StagePanelLocation.js.map +1 -1
  221. package/lib/cjs/appui-react/stagepanels/StagePanelSection.js +1 -1
  222. package/lib/cjs/appui-react/stagepanels/StagePanelSection.js.map +1 -1
  223. package/lib/cjs/appui-react/stagepanels/StagePanelState.js +1 -1
  224. package/lib/cjs/appui-react/stagepanels/StagePanelState.js.map +1 -1
  225. package/lib/cjs/appui-react/statusbar/Field.js +2 -4
  226. package/lib/cjs/appui-react/statusbar/Field.js.map +1 -1
  227. package/lib/cjs/appui-react/statusbar/StatusBar.js +1 -1
  228. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  229. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  230. package/lib/cjs/appui-react/statusbar/StatusBarItem.d.ts +3 -3
  231. package/lib/cjs/appui-react/statusbar/StatusBarItem.d.ts.map +1 -1
  232. package/lib/cjs/appui-react/statusbar/StatusBarItem.js +2 -2
  233. package/lib/cjs/appui-react/statusbar/StatusBarItem.js.map +1 -1
  234. package/lib/cjs/appui-react/statusbar/StatusBarItemUtilities.js +1 -1
  235. package/lib/cjs/appui-react/statusbar/StatusBarItemUtilities.js.map +1 -1
  236. package/lib/cjs/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  237. package/lib/cjs/appui-react/statusbar/dialog/Dialog.js +1 -1
  238. package/lib/cjs/appui-react/statusbar/dialog/Dialog.js.map +1 -1
  239. package/lib/cjs/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  240. package/lib/cjs/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  241. package/lib/cjs/appui-react/statusfields/SectionsField.js.map +1 -1
  242. package/lib/cjs/appui-react/statusfields/SelectionCount.js.map +1 -1
  243. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  244. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  245. package/lib/cjs/appui-react/statusfields/ViewAttributes.js.map +1 -1
  246. package/lib/cjs/appui-react/statusfields/message-center/MessageCenterField.js.map +1 -1
  247. package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  248. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  249. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  250. package/lib/cjs/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  251. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +2 -2
  252. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  253. package/lib/cjs/appui-react/theme/ThemeManager.js +1 -1
  254. package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
  255. package/lib/cjs/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  256. package/lib/cjs/appui-react/timeline/ScheduleAnimationProvider.js +1 -1
  257. package/lib/cjs/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  258. package/lib/cjs/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  259. package/lib/cjs/appui-react/toolbar/GroupItem.js +1 -1
  260. package/lib/cjs/appui-react/toolbar/GroupItem.js.map +1 -1
  261. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  262. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  263. package/lib/cjs/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  264. package/lib/cjs/appui-react/toolbar/ToolbarItem.js +2 -2
  265. package/lib/cjs/appui-react/toolbar/ToolbarItem.js.map +1 -1
  266. package/lib/cjs/appui-react/toolbar/ToolbarItemUtilities.js +1 -1
  267. package/lib/cjs/appui-react/toolbar/ToolbarItemUtilities.js.map +1 -1
  268. package/lib/cjs/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  269. package/lib/cjs/appui-react/toolbar/toUIAToolbarItem.js.map +1 -1
  270. package/lib/cjs/appui-react/toolbar/useActiveStageProvidedToolbarItems.js.map +1 -1
  271. package/lib/cjs/appui-react/toolbar/useActiveToolIdSynchedItems.js.map +1 -1
  272. package/lib/cjs/appui-react/toolbar/useDefaultToolbarItems.js.map +1 -1
  273. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  274. package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  275. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js +1 -1
  276. package/lib/cjs/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  277. package/lib/cjs/appui-react/tools/OpenSettingsTool.js +1 -1
  278. package/lib/cjs/appui-react/tools/OpenSettingsTool.js.map +1 -1
  279. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js +2 -2
  280. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  281. package/lib/cjs/appui-react/tools/ToolSettingsTools.js +2 -2
  282. package/lib/cjs/appui-react/tools/ToolSettingsTools.js.map +1 -1
  283. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  284. package/lib/cjs/appui-react/toolsettings/InternalToolSettingsManager.js +1 -1
  285. package/lib/cjs/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  286. package/lib/cjs/appui-react/toolsettings/ToolInformation.js.map +1 -1
  287. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  288. package/lib/cjs/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  289. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  290. package/lib/cjs/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  291. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  292. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +1 -1
  293. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  294. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  295. package/lib/cjs/appui-react/uistate/AppUiSettings.js +1 -1
  296. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  297. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +2 -2
  298. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  299. package/lib/cjs/appui-react/utils/PropsHelper.js.map +1 -1
  300. package/lib/cjs/appui-react/utils/ToolbarButtonHelper.js.map +1 -1
  301. package/lib/cjs/appui-react/utils/matchesWords.js.map +1 -1
  302. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +1 -4
  303. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  304. package/lib/cjs/appui-react/widget-panels/Frontstage.js +3 -77
  305. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  306. package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts +1 -1
  307. package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  308. package/lib/cjs/appui-react/widget-panels/useSaveFrontstageSettings.d.ts +8 -0
  309. package/lib/cjs/appui-react/widget-panels/useSaveFrontstageSettings.d.ts.map +1 -0
  310. package/lib/cjs/appui-react/widget-panels/useSaveFrontstageSettings.js +55 -0
  311. package/lib/cjs/appui-react/widget-panels/useSaveFrontstageSettings.js.map +1 -0
  312. package/lib/cjs/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  313. package/lib/cjs/appui-react/widgets/BackstageAppButton.js.map +1 -1
  314. package/lib/cjs/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  315. package/lib/cjs/appui-react/widgets/BasicToolWidget.js.map +1 -1
  316. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  317. package/lib/cjs/appui-react/widgets/StableWidgetDef.js.map +1 -1
  318. package/lib/cjs/appui-react/widgets/StatusBarWidgetComposerControl.js +1 -1
  319. package/lib/cjs/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  320. package/lib/cjs/appui-react/widgets/WidgetDef.js +2 -2
  321. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  322. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  323. package/lib/cjs/appui-react/widgets/WidgetManager.js.map +1 -1
  324. package/lib/cjs/appui-react/widgets/WidgetState.js +1 -1
  325. package/lib/cjs/appui-react/widgets/WidgetState.js.map +1 -1
  326. package/lib/cjs/appui-react/widgets/useWidget.js.map +1 -1
  327. package/lib/esm/appui-react/UiFramework.js +1 -2
  328. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  329. package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
  330. package/lib/esm/appui-react/accudraw/AccuDrawInputField.d.ts +1 -1
  331. package/lib/esm/appui-react/accudraw/AccuDrawInputField.d.ts.map +1 -1
  332. package/lib/esm/appui-react/accudraw/AccuDrawInputField.js.map +1 -1
  333. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js +1 -2
  334. package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  335. package/lib/esm/appui-react/accudraw/AccuDrawWidget.js +1 -2
  336. package/lib/esm/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  337. package/lib/esm/appui-react/accudraw/Calculator.js +1 -2
  338. package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
  339. package/lib/esm/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  340. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js +1 -2
  341. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  342. package/lib/esm/appui-react/accudraw/MenuButton.js.map +1 -1
  343. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  344. package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  345. package/lib/esm/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  346. package/lib/esm/appui-react/backstage/useDefaultBackstageItems.js.map +1 -1
  347. package/lib/esm/appui-react/backstage/useUiItemsProviderBackstageItems.js.map +1 -1
  348. package/lib/esm/appui-react/childwindow/ChildWindowWidget.js.map +1 -1
  349. package/lib/esm/appui-react/childwindow/CopyStyles.js.map +1 -1
  350. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
  351. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +2 -0
  352. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  353. package/lib/esm/appui-react/configurableui/ActivityTracker.js.map +1 -1
  354. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -2
  355. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  356. package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
  357. package/lib/esm/appui-react/configurableui/state.js.map +1 -1
  358. package/lib/esm/appui-react/content/ContentControl.js.map +1 -1
  359. package/lib/esm/appui-react/content/ContentGroup.js +1 -2
  360. package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
  361. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  362. package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
  363. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  364. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  365. package/lib/esm/appui-react/content/InternalContentLayoutManager.js +1 -2
  366. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  367. package/lib/esm/appui-react/content/InternalContentViewManager.js +1 -2
  368. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  369. package/lib/esm/appui-react/content/StageContentLayout.js.map +1 -1
  370. package/lib/esm/appui-react/content/ViewStateHelper.js.map +1 -1
  371. package/lib/esm/appui-react/content/ViewportContentControl.js.map +1 -1
  372. package/lib/esm/appui-react/content/split-pane/Pane.js.map +1 -1
  373. package/lib/esm/appui-react/content/split-pane/Resizer.js.map +1 -1
  374. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  375. package/lib/esm/appui-react/cursor/CursorInformation.js +1 -2
  376. package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
  377. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  378. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.js +1 -2
  379. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  380. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js +1 -2
  381. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  382. package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  383. package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
  384. package/lib/esm/appui-react/dialog/DialogManagerBase.js +1 -2
  385. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  386. package/lib/esm/appui-react/dialog/InternalContentDialogManager.js +1 -2
  387. package/lib/esm/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  388. package/lib/esm/appui-react/dialog/InternalModalDialogManager.js +1 -2
  389. package/lib/esm/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  390. package/lib/esm/appui-react/dialog/InternalModelessDialogManager.js +1 -2
  391. package/lib/esm/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  392. package/lib/esm/appui-react/dialog/StandardMessageBox.js.map +1 -1
  393. package/lib/esm/appui-react/dialog/UiDataProvidedDialog.js.map +1 -1
  394. package/lib/esm/appui-react/feedback/ElementTooltip.js +1 -2
  395. package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
  396. package/lib/esm/appui-react/feedback/ValidationTextbox.js.map +1 -1
  397. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +1 -1
  398. package/lib/esm/appui-react/frontstage/FrontstageDef.js +1 -1
  399. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  400. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js +1 -2
  401. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  402. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +1 -2
  403. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  404. package/lib/esm/appui-react/frontstage/NestedFrontstage.js +1 -2
  405. package/lib/esm/appui-react/frontstage/NestedFrontstage.js.map +1 -1
  406. package/lib/esm/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  407. package/lib/esm/appui-react/hooks/useActiveViewport.js.map +1 -1
  408. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  409. package/lib/esm/appui-react/hooks/useConditionalValue.js.map +1 -1
  410. package/lib/esm/appui-react/hooks/useEscapeSetFocusToHome.js.map +1 -1
  411. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  412. package/lib/esm/appui-react/hooks/useTranslation.js.map +1 -1
  413. package/lib/esm/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +1 -2
  414. package/lib/esm/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  415. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  416. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -2
  417. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  418. package/lib/esm/appui-react/keyins/Keyins.js.map +1 -1
  419. package/lib/esm/appui-react/layout/backstage/Backstage.js +1 -2
  420. package/lib/esm/appui-react/layout/backstage/Backstage.js.map +1 -1
  421. package/lib/esm/appui-react/layout/base/DragManager.js.map +1 -1
  422. package/lib/esm/appui-react/layout/base/NineZone.js.map +1 -1
  423. package/lib/esm/appui-react/layout/base/SafeAreaInsets.js +1 -2
  424. package/lib/esm/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  425. package/lib/esm/appui-react/layout/base/usePointerCaptor.js.map +1 -1
  426. package/lib/esm/appui-react/layout/footer/Indicator.js +1 -1
  427. package/lib/esm/appui-react/layout/footer/Indicator.js.map +1 -1
  428. package/lib/esm/appui-react/layout/outline/PanelOutline.js.map +1 -1
  429. package/lib/esm/appui-react/layout/popup/Tooltip.js +1 -2
  430. package/lib/esm/appui-react/layout/popup/Tooltip.js.map +1 -1
  431. package/lib/esm/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
  432. package/lib/esm/appui-react/layout/state/TabLocation.js.map +1 -1
  433. package/lib/esm/appui-react/layout/state/WidgetLocation.js.map +1 -1
  434. package/lib/esm/appui-react/layout/state/internal/NineZoneStateHelpers.js.map +1 -1
  435. package/lib/esm/appui-react/layout/state/internal/PanelStateHelpers.js.map +1 -1
  436. package/lib/esm/appui-react/layout/state/internal/TabStateHelpers.js.map +1 -1
  437. package/lib/esm/appui-react/layout/state/internal/WidgetStateHelpers.js.map +1 -1
  438. package/lib/esm/appui-react/layout/target/PanelTargets.js.map +1 -1
  439. package/lib/esm/appui-react/layout/target/SectionTarget.js.map +1 -1
  440. package/lib/esm/appui-react/layout/target/useAllowedSideTarget.js.map +1 -1
  441. package/lib/esm/appui-react/layout/target/useAllowedWidgetTarget.js.map +1 -1
  442. package/lib/esm/appui-react/layout/tool-settings/Docked.js.map +1 -1
  443. package/lib/esm/appui-react/layout/widget/Buttons.js.map +1 -1
  444. package/lib/esm/appui-react/layout/widget/ContentManager.js.map +1 -1
  445. package/lib/esm/appui-react/layout/widget/ContentRenderer.js.map +1 -1
  446. package/lib/esm/appui-react/layout/widget/FloatingWidget.js.map +1 -1
  447. package/lib/esm/appui-react/layout/widget/Overflow.js.map +1 -1
  448. package/lib/esm/appui-react/layout/widget/PanelWidget.js.map +1 -1
  449. package/lib/esm/appui-react/layout/widget/SendBack.js.map +1 -1
  450. package/lib/esm/appui-react/layout/widget/Tab.js.map +1 -1
  451. package/lib/esm/appui-react/layout/widget/TabBar.js.map +1 -1
  452. package/lib/esm/appui-react/layout/widget/Tabs.js.map +1 -1
  453. package/lib/esm/appui-react/layout/widget/Widget.js.map +1 -1
  454. package/lib/esm/appui-react/layout/widget/tools/button/Button.js.map +1 -1
  455. package/lib/esm/appui-react/layout/widget-panels/Expander.js.map +1 -1
  456. package/lib/esm/appui-react/layout/widget-panels/Grip.js.map +1 -1
  457. package/lib/esm/appui-react/layout/widget-panels/PanelSections.js.map +1 -1
  458. package/lib/esm/appui-react/layout/widget-panels/useAnimatePanel.js.map +1 -1
  459. package/lib/esm/appui-react/layout/widget-panels/usePanelsAutoCollapse.js.map +1 -1
  460. package/lib/esm/appui-react/messages/AppNotificationManager.js.map +1 -1
  461. package/lib/esm/appui-react/messages/InputField.js.map +1 -1
  462. package/lib/esm/appui-react/messages/MessageManager.js +1 -2
  463. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  464. package/lib/esm/appui-react/messages/MessageRenderer.js.map +1 -1
  465. package/lib/esm/appui-react/messages/Pointer.js +1 -2
  466. package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
  467. package/lib/esm/appui-react/messages/StatusMessageManager.js.map +1 -1
  468. package/lib/esm/appui-react/messages/getToastCategory.d.ts +1 -1
  469. package/lib/esm/appui-react/messages/getToastCategory.js.map +1 -1
  470. package/lib/esm/appui-react/navigationaids/CubeNavigationAidControl.js +1 -2
  471. package/lib/esm/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  472. package/lib/esm/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -2
  473. package/lib/esm/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  474. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js +1 -2
  475. package/lib/esm/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  476. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js +1 -2
  477. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  478. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js +1 -2
  479. package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  480. package/lib/esm/appui-react/pickers/ListPicker.js.map +1 -1
  481. package/lib/esm/appui-react/pickers/ViewSelector.js +1 -2
  482. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  483. package/lib/esm/appui-react/popup/CardPopup.js +1 -2
  484. package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
  485. package/lib/esm/appui-react/popup/ComponentPopup.js.map +1 -1
  486. package/lib/esm/appui-react/popup/InputEditorPopup.js.map +1 -1
  487. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  488. package/lib/esm/appui-react/popup/KeyinPalettePopup.js.map +1 -1
  489. package/lib/esm/appui-react/popup/PopupManager.js +2 -4
  490. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  491. package/lib/esm/appui-react/popup/PositionPopup.js.map +1 -1
  492. package/lib/esm/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  493. package/lib/esm/appui-react/popup/ToolbarPopup.js +1 -2
  494. package/lib/esm/appui-react/popup/ToolbarPopup.js.map +1 -1
  495. package/lib/esm/appui-react/preview/PreviewFeatures.js.map +1 -1
  496. package/lib/esm/appui-react/preview/activate-dropped-tab/activateDroppedTab.js.map +1 -1
  497. package/lib/esm/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.js.map +1 -1
  498. package/lib/esm/appui-react/preview/new-toolbars/ActionItem.js.map +1 -1
  499. package/lib/esm/appui-react/preview/new-toolbars/CustomItem.js.map +1 -1
  500. package/lib/esm/appui-react/preview/new-toolbars/GroupItem.js.map +1 -1
  501. package/lib/esm/appui-react/preview/new-toolbars/ToolGroup.js.map +1 -1
  502. package/lib/esm/appui-react/preview/new-toolbars/Toolbar.js.map +1 -1
  503. package/lib/esm/appui-react/preview/new-toolbars/useOverflow.js.map +1 -1
  504. package/lib/esm/appui-react/preview/reparent-popout-widgets/usePopoutsStore.js.map +1 -1
  505. package/lib/esm/appui-react/preview/reparent-popout-widgets/useReparentPopoutWidget.js.map +1 -1
  506. package/lib/esm/appui-react/preview/widget-action-dropdown/Button.js.map +1 -1
  507. package/lib/esm/appui-react/redux/ReducerRegistry.js.map +1 -1
  508. package/lib/esm/appui-react/redux/SessionState.js +1 -1
  509. package/lib/esm/appui-react/redux/SessionState.js.map +1 -1
  510. package/lib/esm/appui-react/redux/StateManager.js +1 -2
  511. package/lib/esm/appui-react/redux/StateManager.js.map +1 -1
  512. package/lib/esm/appui-react/redux/connectIModel.js +3 -3
  513. package/lib/esm/appui-react/redux/connectIModel.js.map +1 -1
  514. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js +2 -4
  515. package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  516. package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  517. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  518. package/lib/esm/appui-react/settings/quantityformatting/UnitSystemSelector.js.map +1 -1
  519. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  520. package/lib/esm/appui-react/shared/ActionButtonItemDef.js +1 -2
  521. package/lib/esm/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  522. package/lib/esm/appui-react/shared/CommandItemDef.js +1 -2
  523. package/lib/esm/appui-react/shared/CommandItemDef.js.map +1 -1
  524. package/lib/esm/appui-react/shared/CustomItemDef.js +1 -2
  525. package/lib/esm/appui-react/shared/CustomItemDef.js.map +1 -1
  526. package/lib/esm/appui-react/shared/MenuItem.js.map +1 -1
  527. package/lib/esm/appui-react/shared/ToolItemDef.js.map +1 -1
  528. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  529. package/lib/esm/appui-react/statusbar/Field.js +2 -4
  530. package/lib/esm/appui-react/statusbar/Field.js.map +1 -1
  531. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  532. package/lib/esm/appui-react/statusbar/StatusBarItem.d.ts +3 -3
  533. package/lib/esm/appui-react/statusbar/StatusBarItem.d.ts.map +1 -1
  534. package/lib/esm/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  535. package/lib/esm/appui-react/statusbar/useDefaultStatusBarItems.js.map +1 -1
  536. package/lib/esm/appui-react/statusbar/useUiItemsProviderStatusBarItems.js.map +1 -1
  537. package/lib/esm/appui-react/statusfields/SectionsField.js.map +1 -1
  538. package/lib/esm/appui-react/statusfields/SelectionCount.js.map +1 -1
  539. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  540. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  541. package/lib/esm/appui-react/statusfields/ViewAttributes.js.map +1 -1
  542. package/lib/esm/appui-react/statusfields/message-center/MessageCenterField.js.map +1 -1
  543. package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  544. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -2
  545. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  546. package/lib/esm/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  547. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +1 -2
  548. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  549. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  550. package/lib/esm/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  551. package/lib/esm/appui-react/timeline/ScheduleAnimationProvider.js +1 -1
  552. package/lib/esm/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  553. package/lib/esm/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  554. package/lib/esm/appui-react/toolbar/GroupItem.js +1 -2
  555. package/lib/esm/appui-react/toolbar/GroupItem.js.map +1 -1
  556. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  557. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  558. package/lib/esm/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  559. package/lib/esm/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  560. package/lib/esm/appui-react/toolbar/toUIAToolbarItem.js.map +1 -1
  561. package/lib/esm/appui-react/toolbar/useActiveStageProvidedToolbarItems.js.map +1 -1
  562. package/lib/esm/appui-react/toolbar/useActiveToolIdSynchedItems.js.map +1 -1
  563. package/lib/esm/appui-react/toolbar/useDefaultToolbarItems.js.map +1 -1
  564. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  565. package/lib/esm/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  566. package/lib/esm/appui-react/tools/KeyinPaletteTools.js +1 -2
  567. package/lib/esm/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  568. package/lib/esm/appui-react/tools/OpenSettingsTool.js +1 -2
  569. package/lib/esm/appui-react/tools/OpenSettingsTool.js.map +1 -1
  570. package/lib/esm/appui-react/tools/RestoreLayoutTool.js +2 -4
  571. package/lib/esm/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  572. package/lib/esm/appui-react/tools/ToolSettingsTools.js +2 -4
  573. package/lib/esm/appui-react/tools/ToolSettingsTools.js.map +1 -1
  574. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  575. package/lib/esm/appui-react/toolsettings/InternalToolSettingsManager.js +1 -2
  576. package/lib/esm/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  577. package/lib/esm/appui-react/toolsettings/ToolInformation.js.map +1 -1
  578. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  579. package/lib/esm/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  580. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  581. package/lib/esm/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  582. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  583. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +1 -2
  584. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  585. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  586. package/lib/esm/appui-react/uistate/AppUiSettings.js +1 -2
  587. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  588. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +2 -4
  589. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  590. package/lib/esm/appui-react/utils/PropsHelper.js.map +1 -1
  591. package/lib/esm/appui-react/utils/ToolbarButtonHelper.js.map +1 -1
  592. package/lib/esm/appui-react/utils/matchesWords.js.map +1 -1
  593. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +1 -4
  594. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  595. package/lib/esm/appui-react/widget-panels/Frontstage.js +1 -74
  596. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  597. package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts +1 -1
  598. package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  599. package/lib/esm/appui-react/widget-panels/useSaveFrontstageSettings.d.ts +8 -0
  600. package/lib/esm/appui-react/widget-panels/useSaveFrontstageSettings.d.ts.map +1 -0
  601. package/lib/esm/appui-react/widget-panels/useSaveFrontstageSettings.js +51 -0
  602. package/lib/esm/appui-react/widget-panels/useSaveFrontstageSettings.js.map +1 -0
  603. package/lib/esm/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  604. package/lib/esm/appui-react/widgets/BackstageAppButton.js.map +1 -1
  605. package/lib/esm/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
  606. package/lib/esm/appui-react/widgets/BasicToolWidget.js.map +1 -1
  607. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  608. package/lib/esm/appui-react/widgets/StableWidgetDef.js.map +1 -1
  609. package/lib/esm/appui-react/widgets/StatusBarWidgetComposerControl.js +1 -2
  610. package/lib/esm/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  611. package/lib/esm/appui-react/widgets/WidgetDef.js +1 -2
  612. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  613. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  614. package/lib/esm/appui-react/widgets/WidgetManager.js.map +1 -1
  615. package/lib/esm/appui-react/widgets/useWidget.js.map +1 -1
  616. package/package.json +17 -19
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/ComponentPopup.tsx"],"names":[],"mappings":";;;AAKA,kDAAqE;AACrE,+BAA+B;AAC/B,mEAAgE;AAEhE,iDAA8C;AAC9C,mDAAgD;AAChD,iCAA4C;AAC5C,mFAAyE;AAYzE;;;GAGG;AACI,MAAM,cAAc,GAAkC,CAAC,EAC5D,EAAE,EACF,QAAQ,EACR,MAAM,EACN,SAAS,EACT,EAAE,EACF,QAAQ,EACR,MAAM,GACP,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,sCAAc,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAO,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,iBAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACzB,OAAO,CAAC,OAAO,CAAC,CAAC;SAClB;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAI,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CACvC,MAAM,IAAI,OAAO,EACjB,EAAE,EACF,IAAI,kBAAK,EAAE,EACX,IAAI,CACL,CAAC;IAEF,MAAM,SAAS,GAAG,yBAAW,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3E,KAAK,GAAG,IAAI,kBAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAEjD,MAAM,eAAe,GAAG,CAAC,OAAkB,EAAE,EAAE;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,6BAAa,IACZ,GAAG,EAAE,EAAE,EACP,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,eAAe;QAG5B,oBAAC,gCAAmB,IAAC,cAAc,EAAE,QAAQ,IAC1C,QAAQ,CACW,CACR,CACjB,CAAC;AACJ,CAAC,CAAC;AA9CW,QAAA,cAAc,kBA8CzB","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 *--------------------------------------------------------------------------------------------*/\nimport type { Orientation, SizeProps } from \"@itwin/core-react\";\nimport { DivWithOutsideClick, Point, Size } from \"@itwin/core-react\";\nimport * as React from \"react\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup\";\nimport type { PopupPropsBase } from \"./PopupManager\";\nimport { PopupManager } from \"./PopupManager\";\nimport { PositionPopup } from \"./PositionPopup\";\nimport { useEffect, useState } from \"react\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent\";\nimport { type Placement } from \"../utils/Placement\";\n\n// Props used for the ComponentPopup.\ninterface ComponentPopupProps extends Omit<PopupPropsBase, \"el\"> {\n children?: React.ReactNode;\n placement: Placement;\n orientation: Orientation;\n onCancel: () => void;\n anchor?: HTMLElement;\n}\n\n/**\n * Displays a React Component inside a popup. The user-facing API is the {@link PopupManager} and should be used instead of this component.\n * @internal\n */\nexport const ComponentPopup: React.FC<ComponentPopupProps> = ({\n pt,\n children,\n offset,\n placement,\n id,\n onCancel,\n anchor,\n}) => {\n const wrapper = React.useContext(WrapperContext);\n const [size, setSize] = useState<Size>(new Size(-1, -1));\n\n useEffect(() => {\n const newSize = Size.create(size);\n if (!size.equals(newSize)) {\n setSize(newSize);\n }\n }, [size]);\n\n let point = PopupManager.getPopupPosition(\n anchor ?? wrapper,\n pt,\n new Point(),\n size\n );\n\n const popupRect = CursorPopup.getPopupRect(point, offset, size, placement);\n point = new Point(popupRect.left, popupRect.top);\n\n const handleSizeKnown = (newSize: SizeProps) => {\n if (!size.equals(newSize)) setSize(Size.create(newSize));\n };\n\n return (\n <PositionPopup\n key={id}\n className=\"uifw-no-border\"\n point={point}\n onSizeKnown={handleSizeKnown}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <DivWithOutsideClick onOutsideClick={onCancel}>\n {children}\n </DivWithOutsideClick>\n </PositionPopup>\n );\n};\n"]}
1
+ {"version":3,"file":"ComponentPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/ComponentPopup.tsx"],"names":[],"mappings":";;;AAKA,kDAAqE;AACrE,+BAA+B;AAC/B,mEAAgE;AAEhE,iDAA8C;AAC9C,mDAAgD;AAChD,iCAA4C;AAC5C,mFAAyE;AAYzE;;;GAGG;AACI,MAAM,cAAc,GAAkC,CAAC,EAC5D,EAAE,EACF,QAAQ,EACR,MAAM,EACN,SAAS,EACT,EAAE,EACF,QAAQ,EACR,MAAM,GACP,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,sCAAc,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAO,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,iBAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAI,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CACvC,MAAM,IAAI,OAAO,EACjB,EAAE,EACF,IAAI,kBAAK,EAAE,EACX,IAAI,CACL,CAAC;IAEF,MAAM,SAAS,GAAG,yBAAW,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3E,KAAK,GAAG,IAAI,kBAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAEjD,MAAM,eAAe,GAAG,CAAC,OAAkB,EAAE,EAAE;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,6BAAa,IACZ,GAAG,EAAE,EAAE,EACP,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,eAAe;QAG5B,oBAAC,gCAAmB,IAAC,cAAc,EAAE,QAAQ,IAC1C,QAAQ,CACW,CACR,CACjB,CAAC;AACJ,CAAC,CAAC;AA9CW,QAAA,cAAc,kBA8CzB","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 *--------------------------------------------------------------------------------------------*/\nimport type { Orientation, SizeProps } from \"@itwin/core-react\";\nimport { DivWithOutsideClick, Point, Size } from \"@itwin/core-react\";\nimport * as React from \"react\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup\";\nimport type { PopupPropsBase } from \"./PopupManager\";\nimport { PopupManager } from \"./PopupManager\";\nimport { PositionPopup } from \"./PositionPopup\";\nimport { useEffect, useState } from \"react\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent\";\nimport { type Placement } from \"../utils/Placement\";\n\n// Props used for the ComponentPopup.\ninterface ComponentPopupProps extends Omit<PopupPropsBase, \"el\"> {\n children?: React.ReactNode;\n placement: Placement;\n orientation: Orientation;\n onCancel: () => void;\n anchor?: HTMLElement;\n}\n\n/**\n * Displays a React Component inside a popup. The user-facing API is the {@link PopupManager} and should be used instead of this component.\n * @internal\n */\nexport const ComponentPopup: React.FC<ComponentPopupProps> = ({\n pt,\n children,\n offset,\n placement,\n id,\n onCancel,\n anchor,\n}) => {\n const wrapper = React.useContext(WrapperContext);\n const [size, setSize] = useState<Size>(new Size(-1, -1));\n\n useEffect(() => {\n const newSize = Size.create(size);\n if (!size.equals(newSize)) {\n setSize(newSize);\n }\n }, [size]);\n\n let point = PopupManager.getPopupPosition(\n anchor ?? wrapper,\n pt,\n new Point(),\n size\n );\n\n const popupRect = CursorPopup.getPopupRect(point, offset, size, placement);\n point = new Point(popupRect.left, popupRect.top);\n\n const handleSizeKnown = (newSize: SizeProps) => {\n if (!size.equals(newSize)) setSize(Size.create(newSize));\n };\n\n return (\n <PositionPopup\n key={id}\n className=\"uifw-no-border\"\n point={point}\n onSizeKnown={handleSizeKnown}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <DivWithOutsideClick onOutsideClick={onCancel}>\n {children}\n </DivWithOutsideClick>\n </PositionPopup>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"InputEditorPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/InputEditorPopup.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAE/B,0DAA4D;AAE5D,8DAA0D;AAE1D,kDAA8D;AAE9D,iDAA8C;AAC9C,mDAAsE;AAEtE,YAAY;AACZ,MAAa,wBAAwB;IACnC,YAA4B,QAA2C;QAA3C,aAAQ,GAAR,QAAQ,CAAmC;QAEhE,iBAAY,GAAG,CAAC,IAAyB,EAAE,EAAE;YAClD,IAAI,QAAQ,GAAqB,CAAC,CAAC;YACnC,uBAAuB;YACvB,IACE,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,oCAAmB,CAAC,SAAS;gBAC3D,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,EACjC;gBACA,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;aAChC;YACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC;IAZwE,CAAC;CAa5E;AAdD,4DAcC;AAeD;;GAEG;AACH,MAAa,gBAAiB,SAAQ,KAAK,CAAC,aAG3C;IAHD;;QAIE,gBAAgB;QACS,UAAK,GAAG;YAC/B,IAAI,EAAE,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,CAAC;QAEM,iBAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;YAC5C,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;IA+BJ,CAAC;IA7BC,gBAAgB;IACA,MAAM;QACpB,MAAM,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CACzC,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;QAEF,OAAO,CACL,oBAAC,6BAAa,IACZ,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAClB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAG9B,oBAAC,gCAAmB,IAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACtD,oBAAC,oCAAoB;oBACnB,oBAAC,kCAAe,IACd,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,EAC/C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,QAAQ,EAAE,IAAI,GACd,CACmB,CACH,CACR,CACjB,CAAC;IACJ,CAAC;CACF;AA5CD,4CA4CC","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 Popup\n */\n\nimport * as React from \"react\";\nimport type { Primitives, PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport type { PropertyUpdatedArgs } from \"@itwin/components-react\";\nimport { EditorContainer } from \"@itwin/components-react\";\nimport type { SizeProps } from \"@itwin/core-react\";\nimport { DivWithOutsideClick, Size } from \"@itwin/core-react\";\nimport type { PopupPropsBase } from \"./PopupManager\";\nimport { PopupManager } from \"./PopupManager\";\nimport { PositionPopup, PositionPopupContent } from \"./PositionPopup\";\n\n/** @beta */\nexport class InputEditorCommitHandler {\n constructor(public readonly onCommit: (value: Primitives.Value) => void) {}\n\n public handleCommit = (args: PropertyUpdatedArgs) => {\n let newValue: Primitives.Value = 0;\n // istanbul ignore else\n if (\n args.newValue.valueFormat === PropertyValueFormat.Primitive &&\n args.newValue.value !== undefined\n ) {\n newValue = args.newValue.value;\n }\n this.onCommit(newValue);\n };\n}\n\n/** Props for popup editor\n * @beta */\nexport interface InputEditorPopupProps extends PopupPropsBase {\n record: PropertyRecord;\n onCancel: () => void;\n commitHandler: InputEditorCommitHandler;\n}\n\n/** @internal */\ninterface InputEditorPopupState {\n size: Size;\n}\n\n/** Popup component for Input Editor\n * @alpha\n */\nexport class InputEditorPopup extends React.PureComponent<\n InputEditorPopupProps,\n InputEditorPopupState\n> {\n /** @internal */\n public override readonly state = {\n size: new Size(-1, -1),\n };\n\n private _onSizeKnown = (newSize: SizeProps) => {\n // istanbul ignore else\n if (!this.state.size.equals(newSize))\n this.setState({ size: Size.create(newSize) });\n };\n\n /** @internal */\n public override render() {\n const point = PopupManager.getPopupPosition(\n this.props.el,\n this.props.pt,\n this.props.offset,\n this.state.size\n );\n\n return (\n <PositionPopup\n key={this.props.id}\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <DivWithOutsideClick onOutsideClick={this.props.onCancel}>\n <PositionPopupContent>\n <EditorContainer\n propertyRecord={this.props.record}\n onCommit={this.props.commitHandler.handleCommit}\n onCancel={this.props.onCancel}\n setFocus={true}\n />\n </PositionPopupContent>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"InputEditorPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/InputEditorPopup.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAE/B,0DAA4D;AAE5D,8DAA0D;AAE1D,kDAA8D;AAE9D,iDAA8C;AAC9C,mDAAsE;AAEtE,YAAY;AACZ,MAAa,wBAAwB;IACnC,YAA4B,QAA2C;QAA3C,aAAQ,GAAR,QAAQ,CAAmC;QAEhE,iBAAY,GAAG,CAAC,IAAyB,EAAE,EAAE;YAClD,IAAI,QAAQ,GAAqB,CAAC,CAAC;YACnC,uBAAuB;YACvB,IACE,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,oCAAmB,CAAC,SAAS;gBAC3D,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,EACjC,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACjC,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC;IAZwE,CAAC;CAa5E;AAdD,4DAcC;AAeD;;GAEG;AACH,MAAa,gBAAiB,SAAQ,KAAK,CAAC,aAG3C;IAHD;;QAIE,gBAAgB;QACS,UAAK,GAAG;YAC/B,IAAI,EAAE,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,CAAC;QAEM,iBAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;YAC5C,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;IA+BJ,CAAC;IA7BC,gBAAgB;IACA,MAAM;QACpB,MAAM,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CACzC,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;QAEF,OAAO,CACL,oBAAC,6BAAa,IACZ,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAClB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAG9B,oBAAC,gCAAmB,IAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACtD,oBAAC,oCAAoB;oBACnB,oBAAC,kCAAe,IACd,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,EAC/C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,QAAQ,EAAE,IAAI,GACd,CACmB,CACH,CACR,CACjB,CAAC;IACJ,CAAC;CACF;AA5CD,4CA4CC","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 Popup\n */\n\nimport * as React from \"react\";\nimport type { Primitives, PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport type { PropertyUpdatedArgs } from \"@itwin/components-react\";\nimport { EditorContainer } from \"@itwin/components-react\";\nimport type { SizeProps } from \"@itwin/core-react\";\nimport { DivWithOutsideClick, Size } from \"@itwin/core-react\";\nimport type { PopupPropsBase } from \"./PopupManager\";\nimport { PopupManager } from \"./PopupManager\";\nimport { PositionPopup, PositionPopupContent } from \"./PositionPopup\";\n\n/** @beta */\nexport class InputEditorCommitHandler {\n constructor(public readonly onCommit: (value: Primitives.Value) => void) {}\n\n public handleCommit = (args: PropertyUpdatedArgs) => {\n let newValue: Primitives.Value = 0;\n // istanbul ignore else\n if (\n args.newValue.valueFormat === PropertyValueFormat.Primitive &&\n args.newValue.value !== undefined\n ) {\n newValue = args.newValue.value;\n }\n this.onCommit(newValue);\n };\n}\n\n/** Props for popup editor\n * @beta */\nexport interface InputEditorPopupProps extends PopupPropsBase {\n record: PropertyRecord;\n onCancel: () => void;\n commitHandler: InputEditorCommitHandler;\n}\n\n/** @internal */\ninterface InputEditorPopupState {\n size: Size;\n}\n\n/** Popup component for Input Editor\n * @alpha\n */\nexport class InputEditorPopup extends React.PureComponent<\n InputEditorPopupProps,\n InputEditorPopupState\n> {\n /** @internal */\n public override readonly state = {\n size: new Size(-1, -1),\n };\n\n private _onSizeKnown = (newSize: SizeProps) => {\n // istanbul ignore else\n if (!this.state.size.equals(newSize))\n this.setState({ size: Size.create(newSize) });\n };\n\n /** @internal */\n public override render() {\n const point = PopupManager.getPopupPosition(\n this.props.el,\n this.props.pt,\n this.props.offset,\n this.state.size\n );\n\n return (\n <PositionPopup\n key={this.props.id}\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <DivWithOutsideClick onOutsideClick={this.props.onCancel}>\n <PositionPopupContent>\n <EditorContainer\n propertyRecord={this.props.record}\n onCommit={this.props.commitHandler.handleCommit}\n onCancel={this.props.onCancel}\n setFocus={true}\n />\n </PositionPopupContent>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"KeyinPalettePanel.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/KeyinPalettePanel.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 Popup\n */\n\n// cSpell:ignore focusvalue uiadmin\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport \"./KeyinPalettePanel.scss\";\nimport {\n FilteredText,\n Listbox,\n ListboxItem,\n UiStateStorageStatus,\n} from \"@itwin/core-react\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n ParseAndRunResult,\n} from \"@itwin/core-frontend\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { ClearKeyinPaletteHistoryTool } from \"../tools/KeyinPaletteTools\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport type { KeyinEntry } from \"../keyins/Keyins\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport { matchesWords } from \"../utils/matchesWords\";\nimport { useTranslation } from \"../hooks/useTranslation\";\n\nconst KEYIN_PALETTE_NAMESPACE = \"KeyinPalettePanel\";\nconst KEYIN_HISTORY_KEY = \"historyArray\";\n\n/** @internal */\nexport function clearKeyinPaletteHistory() {\n const uiSettingsStorage = UiFramework.getUiStateStorage();\n // istanbul ignore else\n if (uiSettingsStorage) {\n void uiSettingsStorage.deleteSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n }\n}\n\ninterface KeyinPalettePanelProps {\n keyins: KeyinEntry[];\n onKeyinExecuted?: OnItemExecutedFunc;\n historyLength?: number;\n}\n\n/**\n * @internal\n */\nexport function KeyinPalettePanel({\n keyins,\n onKeyinExecuted,\n historyLength: allowedHistoryLength = 6,\n}: KeyinPalettePanelProps) {\n const { translate } = useTranslation();\n const [currentKeyin, setCurrentKeyin] = React.useState<string>(\"\");\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n const keyinSeparator = \"--#--\";\n const [historyKeyins, setHistoryKeyins] = React.useState<string[]>([]);\n const uiSettingsStorage = useUiStateStorageHandler();\n\n React.useEffect(() => {\n async function fetchState() {\n const settingsResult = await uiSettingsStorage.getSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n // istanbul ignore else\n if (UiStateStorageStatus.Success === settingsResult.status) {\n const filteredHistory = (settingsResult.setting as string[]).filter(\n (keyin) => {\n const result = IModelApp.tools.parseKeyin(keyin);\n return result.ok;\n }\n );\n setHistoryKeyins(filteredHistory);\n } else {\n setHistoryKeyins([]);\n }\n }\n\n void fetchState();\n }, [uiSettingsStorage]);\n\n // istanbul ignore next\n const storeHistoryKeyins = React.useCallback(\n async (value: string[]) => {\n const result = await uiSettingsStorage.saveSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY,\n value\n );\n if (result.status !== UiStateStorageStatus.Success) {\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n translate(\"keyinbrowser.couldNotSaveHistory\")\n );\n IModelApp.notifications.outputMessage(errorDetails);\n }\n },\n [translate, uiSettingsStorage]\n );\n\n const allKeyins = React.useMemo(() => {\n const availableKeyins = [];\n historyKeyins.forEach((value: string) => {\n availableKeyins.push({ value, isHistory: true });\n });\n availableKeyins.push(\n ...keyins.sort((a, b) =>\n a.value.toLowerCase().localeCompare(b.value.toLowerCase())\n )\n );\n return availableKeyins;\n }, [historyKeyins, keyins]);\n\n const submitKeyin = React.useCallback(\n async (value: string) => {\n let detailedMessage: string | undefined;\n let message: string | undefined;\n try {\n switch (await IModelApp.tools.parseAndRun(value)) {\n case ParseAndRunResult.ToolNotFound:\n message = `translate(\"keyinbrowser.couldNotFindTool\")} ${value}`;\n break;\n // istanbul ignore next\n case ParseAndRunResult.BadArgumentCount:\n message = translate(\"keyinbrowser.incorrectArgs\");\n break;\n // istanbul ignore next\n case ParseAndRunResult.FailedToRun:\n message = translate(\"keyinbrowser.failedToRun\");\n break;\n }\n } catch (ex) {\n // istanbul ignore next\n {\n message = translate(\"keyinbrowser.exceptionOccurred\");\n detailedMessage = `${translate(\n \"keyinbrowser.exceptionOccurred\"\n )}: ${ex}`;\n }\n }\n\n // istanbul ignore else\n if (undefined !== message) {\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n message,\n detailedMessage,\n OutputMessageType.Sticky\n );\n IModelApp.notifications.outputMessage(errorDetails);\n } else {\n // istanbul ignore next\n if (\n value.length < 400 &&\n value !== ClearKeyinPaletteHistoryTool.keyin &&\n value !== ClearKeyinPaletteHistoryTool.englishKeyin\n ) {\n const newHistoryEntries: string[] = [value];\n for (const entry of historyKeyins) {\n if (entry !== value) {\n newHistoryEntries.push(entry);\n if (newHistoryEntries.length >= allowedHistoryLength) break;\n }\n }\n await storeHistoryKeyins(newHistoryEntries);\n }\n\n // close the popup by processing the supplied onKeyinExecuted function\n if (onKeyinExecuted) onKeyinExecuted(value);\n }\n },\n [\n translate,\n onKeyinExecuted,\n storeHistoryKeyins,\n historyKeyins,\n allowedHistoryLength,\n ]\n );\n\n const selectKeyin = React.useCallback(() => {\n // istanbul ignore else\n if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.setSelectionRange(\n inputRef.current.value.length,\n inputRef.current.value.length\n );\n }\n }, [inputRef]);\n\n const updateKeyin = React.useCallback(\n (value: string) => {\n setCurrentKeyin(value);\n selectKeyin();\n },\n [selectKeyin]\n );\n\n const getKeyinFromListboxValue = (value: string | undefined) => {\n // istanbul ignore else\n if (value) {\n const indexSeparator = value.search(keyinSeparator);\n // istanbul ignore else\n if (indexSeparator) return value.substring(0, indexSeparator);\n }\n // istanbul ignore next\n return undefined;\n };\n\n const handleKeypressOnKeyinsList = React.useCallback(\n async (event: React.KeyboardEvent<HTMLUListElement>) => {\n const key = event.key;\n // built into listbox a \"Space\" key will trigger the selection of a entry so if an Enter key is pressed\n // assume user wants to execute the entry.\n // istanbul ignore else\n if (key === Key.Enter.valueOf()) {\n event.preventDefault();\n // istanbul ignore next\n const keyinToSend = getKeyinFromListboxValue(\n event.currentTarget?.dataset?.focusvalue\n );\n // istanbul ignore else\n if (keyinToSend) {\n if (event.ctrlKey) updateKeyin(keyinToSend);\n else await submitKeyin(keyinToSend);\n }\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onListboxValueChange = React.useCallback(\n async (value: string, isControlOrCommandPressed?: boolean) => {\n const keyin = getKeyinFromListboxValue(value);\n // istanbul ignore else\n if (keyin) {\n if (isControlOrCommandPressed) updateKeyin(keyin);\n else await submitKeyin(keyin);\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onInputValueChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentKeyin(event.target.value);\n },\n []\n );\n\n const filteredKeyins = React.useMemo(() => {\n const filteredHistory: KeyinEntry[] = [];\n if (undefined === currentKeyin || 0 === currentKeyin.length) {\n return allKeyins;\n } else {\n const newKeyinSet: KeyinEntry[] = [];\n allKeyins.forEach((value) => {\n if (value.value.length >= currentKeyin.length) {\n // Force contiguous searches if key-in is over 60 characters long for performance.\n const matches = matchesWords(\n currentKeyin,\n value.value,\n currentKeyin.length > 60\n );\n if (matches && matches.length) {\n // istanbul ignore else\n if (value.isHistory) {\n filteredHistory.push(value);\n newKeyinSet.push({ ...value, matches });\n } else {\n // only add entry if no match in filtered history\n // istanbul ignore else\n if (\n -1 ===\n filteredHistory.findIndex(\n (historyEntry: KeyinEntry) =>\n historyEntry.value === value.value\n )\n )\n newKeyinSet.push({ ...value, matches });\n }\n }\n }\n });\n return newKeyinSet;\n }\n }, [allKeyins, currentKeyin]);\n\n const onInputValueKeyDown = React.useCallback(\n async (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (Key.Enter.valueOf() === event.key) {\n event.preventDefault();\n event.stopPropagation();\n // istanbul ignore else\n if (1 === filteredKeyins.length) {\n if (event.ctrlKey) updateKeyin(filteredKeyins[0].value);\n else await submitKeyin(filteredKeyins[0].value);\n } else {\n if (currentKeyin) await submitKeyin(currentKeyin);\n }\n } else if (\n Key.Tab.valueOf() === event.key &&\n 1 === filteredKeyins.length\n ) {\n event.preventDefault();\n event.stopPropagation();\n updateKeyin(filteredKeyins[0].value);\n } else {\n if (\n event.key === Key.ArrowDown.valueOf() &&\n filteredKeyins.length > 0\n ) {\n event.preventDefault();\n event.stopPropagation();\n // istanbul ignore else\n if (inputRef.current) {\n const nextElement = inputRef.current\n .nextElementSibling as HTMLElement;\n nextElement && nextElement.focus();\n }\n }\n }\n },\n [filteredKeyins, submitKeyin, currentKeyin, updateKeyin]\n );\n\n const lastHistoryIndex =\n filteredKeyins.findIndex((entry) => true !== entry.isHistory) - 1;\n\n return (\n <div className=\"uifw-command-palette-panel\">\n <Input\n ref={inputRef}\n type=\"text\"\n onKeyDown={onInputValueKeyDown}\n className={\"uifw-command-palette-input\"}\n data-testid=\"command-palette-input\"\n onChange={onInputValueChange}\n placeholder={translate(\"keyinbrowser.placeholder\")}\n value={currentKeyin}\n size=\"small\"\n />\n {filteredKeyins.length > 0 && (\n // eslint-disable-next-line deprecation/deprecation\n <Listbox\n id=\"uifw-command-sources\"\n className=\"map-manager-source-list\"\n onKeyDown={handleKeypressOnKeyinsList}\n onListboxValueChange={onListboxValueChange}\n >\n {filteredKeyins.map((entry, index) => {\n const value = `${entry.value}${keyinSeparator}${\n entry.isHistory ? \"history\" : \"registry\"\n }`;\n const itemClass = `uifw-command-palette-value-entry${\n index === lastHistoryIndex ? \" uifw-history-bottom-border\" : \"\"\n }`;\n return (\n // eslint-disable-next-line deprecation/deprecation\n <ListboxItem\n key={`${entry.value}-${index}`}\n className={itemClass}\n value={value}\n >\n <FilteredText value={entry.value} matches={entry.matches} />\n </ListboxItem>\n );\n })}\n </Listbox>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"KeyinPalettePanel.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/KeyinPalettePanel.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 Popup\n */\n\n// cSpell:ignore focusvalue uiadmin\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport \"./KeyinPalettePanel.scss\";\nimport {\n FilteredText,\n Listbox,\n ListboxItem,\n UiStateStorageStatus,\n} from \"@itwin/core-react\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n ParseAndRunResult,\n} from \"@itwin/core-frontend\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport { ClearKeyinPaletteHistoryTool } from \"../tools/KeyinPaletteTools\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport type { KeyinEntry } from \"../keyins/Keyins\";\nimport { Input } from \"@itwin/itwinui-react\";\nimport { matchesWords } from \"../utils/matchesWords\";\nimport { useTranslation } from \"../hooks/useTranslation\";\n\nconst KEYIN_PALETTE_NAMESPACE = \"KeyinPalettePanel\";\nconst KEYIN_HISTORY_KEY = \"historyArray\";\n\n/** @internal */\nexport function clearKeyinPaletteHistory() {\n const uiSettingsStorage = UiFramework.getUiStateStorage();\n // istanbul ignore else\n if (uiSettingsStorage) {\n void uiSettingsStorage.deleteSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n }\n}\n\ninterface KeyinPalettePanelProps {\n keyins: KeyinEntry[];\n onKeyinExecuted?: OnItemExecutedFunc;\n historyLength?: number;\n}\n\n/**\n * @internal\n */\nexport function KeyinPalettePanel({\n keyins,\n onKeyinExecuted,\n historyLength: allowedHistoryLength = 6,\n}: KeyinPalettePanelProps) {\n const { translate } = useTranslation();\n const [currentKeyin, setCurrentKeyin] = React.useState<string>(\"\");\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n const keyinSeparator = \"--#--\";\n const [historyKeyins, setHistoryKeyins] = React.useState<string[]>([]);\n const uiSettingsStorage = useUiStateStorageHandler();\n\n React.useEffect(() => {\n async function fetchState() {\n const settingsResult = await uiSettingsStorage.getSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY\n );\n // istanbul ignore else\n if (UiStateStorageStatus.Success === settingsResult.status) {\n const filteredHistory = (settingsResult.setting as string[]).filter(\n (keyin) => {\n const result = IModelApp.tools.parseKeyin(keyin);\n return result.ok;\n }\n );\n setHistoryKeyins(filteredHistory);\n } else {\n setHistoryKeyins([]);\n }\n }\n\n void fetchState();\n }, [uiSettingsStorage]);\n\n // istanbul ignore next\n const storeHistoryKeyins = React.useCallback(\n async (value: string[]) => {\n const result = await uiSettingsStorage.saveSetting(\n KEYIN_PALETTE_NAMESPACE,\n KEYIN_HISTORY_KEY,\n value\n );\n if (result.status !== UiStateStorageStatus.Success) {\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n translate(\"keyinbrowser.couldNotSaveHistory\")\n );\n IModelApp.notifications.outputMessage(errorDetails);\n }\n },\n [translate, uiSettingsStorage]\n );\n\n const allKeyins = React.useMemo(() => {\n const availableKeyins = [];\n historyKeyins.forEach((value: string) => {\n availableKeyins.push({ value, isHistory: true });\n });\n availableKeyins.push(\n ...keyins.sort((a, b) =>\n a.value.toLowerCase().localeCompare(b.value.toLowerCase())\n )\n );\n return availableKeyins;\n }, [historyKeyins, keyins]);\n\n const submitKeyin = React.useCallback(\n async (value: string) => {\n let detailedMessage: string | undefined;\n let message: string | undefined;\n try {\n switch (await IModelApp.tools.parseAndRun(value)) {\n case ParseAndRunResult.ToolNotFound:\n message = `translate(\"keyinbrowser.couldNotFindTool\")} ${value}`;\n break;\n // istanbul ignore next\n case ParseAndRunResult.BadArgumentCount:\n message = translate(\"keyinbrowser.incorrectArgs\");\n break;\n // istanbul ignore next\n case ParseAndRunResult.FailedToRun:\n message = translate(\"keyinbrowser.failedToRun\");\n break;\n }\n } catch (ex) {\n // istanbul ignore next\n {\n message = translate(\"keyinbrowser.exceptionOccurred\");\n detailedMessage = `${translate(\n \"keyinbrowser.exceptionOccurred\"\n )}: ${ex}`;\n }\n }\n\n // istanbul ignore else\n if (undefined !== message) {\n const errorDetails = new NotifyMessageDetails(\n OutputMessagePriority.Error,\n message,\n detailedMessage,\n OutputMessageType.Sticky\n );\n IModelApp.notifications.outputMessage(errorDetails);\n } else {\n // istanbul ignore next\n if (\n value.length < 400 &&\n value !== ClearKeyinPaletteHistoryTool.keyin &&\n value !== ClearKeyinPaletteHistoryTool.englishKeyin\n ) {\n const newHistoryEntries: string[] = [value];\n for (const entry of historyKeyins) {\n if (entry !== value) {\n newHistoryEntries.push(entry);\n if (newHistoryEntries.length >= allowedHistoryLength) break;\n }\n }\n await storeHistoryKeyins(newHistoryEntries);\n }\n\n // close the popup by processing the supplied onKeyinExecuted function\n if (onKeyinExecuted) onKeyinExecuted(value);\n }\n },\n [\n translate,\n onKeyinExecuted,\n storeHistoryKeyins,\n historyKeyins,\n allowedHistoryLength,\n ]\n );\n\n const selectKeyin = React.useCallback(() => {\n // istanbul ignore else\n if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.setSelectionRange(\n inputRef.current.value.length,\n inputRef.current.value.length\n );\n }\n }, [inputRef]);\n\n const updateKeyin = React.useCallback(\n (value: string) => {\n setCurrentKeyin(value);\n selectKeyin();\n },\n [selectKeyin]\n );\n\n const getKeyinFromListboxValue = (value: string | undefined) => {\n // istanbul ignore else\n if (value) {\n const indexSeparator = value.search(keyinSeparator);\n // istanbul ignore else\n if (indexSeparator) return value.substring(0, indexSeparator);\n }\n // istanbul ignore next\n return undefined;\n };\n\n const handleKeypressOnKeyinsList = React.useCallback(\n async (event: React.KeyboardEvent<HTMLUListElement>) => {\n const key = event.key;\n // built into listbox a \"Space\" key will trigger the selection of a entry so if an Enter key is pressed\n // assume user wants to execute the entry.\n // istanbul ignore else\n if (key === Key.Enter.valueOf()) {\n event.preventDefault();\n // istanbul ignore next\n const keyinToSend = getKeyinFromListboxValue(\n event.currentTarget?.dataset?.focusvalue\n );\n // istanbul ignore else\n if (keyinToSend) {\n if (event.ctrlKey) updateKeyin(keyinToSend);\n else await submitKeyin(keyinToSend);\n }\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onListboxValueChange = React.useCallback(\n async (value: string, isControlOrCommandPressed?: boolean) => {\n const keyin = getKeyinFromListboxValue(value);\n // istanbul ignore else\n if (keyin) {\n if (isControlOrCommandPressed) updateKeyin(keyin);\n else await submitKeyin(keyin);\n }\n },\n [submitKeyin, updateKeyin]\n );\n\n const onInputValueChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentKeyin(event.target.value);\n },\n []\n );\n\n const filteredKeyins = React.useMemo(() => {\n const filteredHistory: KeyinEntry[] = [];\n if (undefined === currentKeyin || 0 === currentKeyin.length) {\n return allKeyins;\n } else {\n const newKeyinSet: KeyinEntry[] = [];\n allKeyins.forEach((value) => {\n if (value.value.length >= currentKeyin.length) {\n // Force contiguous searches if key-in is over 60 characters long for performance.\n const matches = matchesWords(\n currentKeyin,\n value.value,\n currentKeyin.length > 60\n );\n if (matches && matches.length) {\n // istanbul ignore else\n if (value.isHistory) {\n filteredHistory.push(value);\n newKeyinSet.push({ ...value, matches });\n } else {\n // only add entry if no match in filtered history\n // istanbul ignore else\n if (\n -1 ===\n filteredHistory.findIndex(\n (historyEntry: KeyinEntry) =>\n historyEntry.value === value.value\n )\n )\n newKeyinSet.push({ ...value, matches });\n }\n }\n }\n });\n return newKeyinSet;\n }\n }, [allKeyins, currentKeyin]);\n\n const onInputValueKeyDown = React.useCallback(\n async (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (Key.Enter.valueOf() === event.key) {\n event.preventDefault();\n event.stopPropagation();\n // istanbul ignore else\n if (1 === filteredKeyins.length) {\n if (event.ctrlKey) updateKeyin(filteredKeyins[0].value);\n else await submitKeyin(filteredKeyins[0].value);\n } else {\n if (currentKeyin) await submitKeyin(currentKeyin);\n }\n } else if (\n Key.Tab.valueOf() === event.key &&\n 1 === filteredKeyins.length\n ) {\n event.preventDefault();\n event.stopPropagation();\n updateKeyin(filteredKeyins[0].value);\n } else {\n if (\n event.key === Key.ArrowDown.valueOf() &&\n filteredKeyins.length > 0\n ) {\n event.preventDefault();\n event.stopPropagation();\n // istanbul ignore else\n if (inputRef.current) {\n const nextElement = inputRef.current\n .nextElementSibling as HTMLElement;\n nextElement && nextElement.focus();\n }\n }\n }\n },\n [filteredKeyins, submitKeyin, currentKeyin, updateKeyin]\n );\n\n const lastHistoryIndex =\n filteredKeyins.findIndex((entry) => true !== entry.isHistory) - 1;\n\n return (\n <div className=\"uifw-command-palette-panel\">\n <Input\n ref={inputRef}\n type=\"text\"\n onKeyDown={onInputValueKeyDown}\n className={\"uifw-command-palette-input\"}\n data-testid=\"command-palette-input\"\n onChange={onInputValueChange}\n placeholder={translate(\"keyinbrowser.placeholder\")}\n value={currentKeyin}\n size=\"small\"\n />\n {filteredKeyins.length > 0 && (\n // eslint-disable-next-line deprecation/deprecation\n <Listbox\n id=\"uifw-command-sources\"\n className=\"map-manager-source-list\"\n onKeyDown={handleKeypressOnKeyinsList}\n onListboxValueChange={onListboxValueChange}\n >\n {filteredKeyins.map((entry, index) => {\n const value = `${entry.value}${keyinSeparator}${\n entry.isHistory ? \"history\" : \"registry\"\n }`;\n const itemClass = `uifw-command-palette-value-entry${\n index === lastHistoryIndex ? \" uifw-history-bottom-border\" : \"\"\n }`;\n return (\n // eslint-disable-next-line deprecation/deprecation\n <ListboxItem\n key={`${entry.value}-${index}`}\n className={itemClass}\n value={value}\n >\n <FilteredText value={entry.value} matches={entry.matches} />\n </ListboxItem>\n );\n })}\n </Listbox>\n )}\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"KeyinPalettePopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/KeyinPalettePopup.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,6CAAkC;AAGlC,kDAAgF;AAChF,mDAAgD;AAChD,2DAAwD;AAexD;;GAEG;AACH,SAAgB,iBAAiB,CAAC;AAChC,mDAAmD;AACnD,EAAE,EACF,EAAE,EACF,MAAM,EACN,QAAQ,EACR,cAAc,EACd,QAAQ,GACe;IACvB,mEAAmE;IACnE,+DAA+D;IAC/D,oDAAoD;IAEpD,MAAM,GAAG,GAAG,QAAQ,IAAI,EAAE,CAAC;IAE3B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,CAAC,OAAkB,EAAE,EAAE;QACrB,uBAAuB;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,YAAY,CAAC,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC,EACD,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpC,QAAQ,IAAI,QAAQ,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,CAAC,KAA0C,EAAQ,EAAE;QACnD,QAAQ,KAAK,CAAC,GAAG,EAAE;YACjB,KAAK,iBAAG,CAAC,MAAM,CAAC,OAAO,EAAE;gBACvB,MAAM,EAAE,CAAC;gBACT,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;SACT;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,IAAI,GACR,GAAG,CAAC,qBAAqB,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;IAC3E,IAAI,KAAK,GAAG,IAAI,kBAAK,CAAC,IAAI,EAAE,GAAG,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7D,uBAAuB;IACvB,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC;QAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAErE,OAAO,CACL,oBAAC,6BAAa,IACZ,GAAG,EAAE,EAAE,EACP,SAAS,EAAC,sCAAsC,EAChD,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW;QAGxB,oBAAC,gCAAmB,IAAC,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa;YACrE,oBAAC,sBAAS,IAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI;gBACpD,oBAAC,qCAAiB,IAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,GAAI,CAC5D,CACQ,CACR,CACjB,CAAC;AACJ,CAAC;AA9DD,8CA8DC","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 Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { OnCancelFunc, OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport type { SizeProps } from \"@itwin/core-react\";\nimport { DivWithOutsideClick, FocusTrap, Point, Size } from \"@itwin/core-react\";\nimport { PositionPopup } from \"./PositionPopup\";\nimport { KeyinPalettePanel } from \"./KeyinPalettePanel\";\nimport type { KeyinEntry } from \"../keyins/Keyins\";\n\n/** Props defining KeyinPalettePopup component\n * @public */\nexport interface KeyinPalettePopupProps {\n id: string;\n /** @deprecated in 4.11.x. Please use the optional `anchorEl` property moving forward. */\n el: HTMLElement;\n keyins: KeyinEntry[];\n anchorEl?: HTMLElement;\n onCancel?: OnCancelFunc;\n onItemExecuted?: OnItemExecutedFunc;\n}\n\n/** Keyin Palette Popup Component\n * @public\n */\nexport function KeyinPalettePopup({\n // eslint-disable-next-line deprecation/deprecation\n el,\n id,\n keyins,\n onCancel,\n onItemExecuted,\n anchorEl,\n}: KeyinPalettePopupProps) {\n // due to deprecation policy, the context won't be used as fallback\n // until we replace `el` with the optional `anchorEl` property.\n // const wrapper = React.useContext(WrapperContext);\n\n const _el = anchorEl ?? el;\n\n const [popupSize, setPopupSize] = React.useState(new Size(-1, -1));\n\n const onSizeKnown = React.useCallback(\n (newSize: SizeProps) => {\n // istanbul ignore else\n if (!popupSize.equals(newSize)) setPopupSize(Size.create(newSize));\n },\n [popupSize]\n );\n\n const cancel = React.useCallback(() => {\n onCancel && onCancel();\n }, [onCancel]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>): void => {\n switch (event.key) {\n case Key.Escape.valueOf():\n cancel();\n event.preventDefault();\n break;\n }\n },\n [cancel]\n );\n\n const xMid =\n _el.getBoundingClientRect().left + _el.getBoundingClientRect().width / 2;\n let point = new Point(xMid, _el.getBoundingClientRect().top);\n // istanbul ignore next\n if (popupSize.width > 0) point = point.offsetX(popupSize.width / -2);\n\n return (\n <PositionPopup\n key={id}\n className=\"uifw-command-palette-popup-container\"\n point={point}\n onSizeKnown={onSizeKnown}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <DivWithOutsideClick onOutsideClick={onCancel} onKeyDown={handleKeyDown}>\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n <KeyinPalettePanel keyins={keyins} onKeyinExecuted={onItemExecuted} />\n </FocusTrap>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n}\n"]}
1
+ {"version":3,"file":"KeyinPalettePopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/KeyinPalettePopup.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,6CAAkC;AAGlC,kDAAgF;AAChF,mDAAgD;AAChD,2DAAwD;AAexD;;GAEG;AACH,SAAgB,iBAAiB,CAAC;AAChC,mDAAmD;AACnD,EAAE,EACF,EAAE,EACF,MAAM,EACN,QAAQ,EACR,cAAc,EACd,QAAQ,GACe;IACvB,mEAAmE;IACnE,+DAA+D;IAC/D,oDAAoD;IAEpD,MAAM,GAAG,GAAG,QAAQ,IAAI,EAAE,CAAC;IAE3B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,CAAC,OAAkB,EAAE,EAAE;QACrB,uBAAuB;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,YAAY,CAAC,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC,EACD,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpC,QAAQ,IAAI,QAAQ,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,CAAC,KAA0C,EAAQ,EAAE;QACnD,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,iBAAG,CAAC,MAAM,CAAC,OAAO,EAAE;gBACvB,MAAM,EAAE,CAAC;gBACT,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;QACV,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,IAAI,GACR,GAAG,CAAC,qBAAqB,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;IAC3E,IAAI,KAAK,GAAG,IAAI,kBAAK,CAAC,IAAI,EAAE,GAAG,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7D,uBAAuB;IACvB,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC;QAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAErE,OAAO,CACL,oBAAC,6BAAa,IACZ,GAAG,EAAE,EAAE,EACP,SAAS,EAAC,sCAAsC,EAChD,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW;QAGxB,oBAAC,gCAAmB,IAAC,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa;YACrE,oBAAC,sBAAS,IAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI;gBACpD,oBAAC,qCAAiB,IAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,GAAI,CAC5D,CACQ,CACR,CACjB,CAAC;AACJ,CAAC;AA9DD,8CA8DC","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 Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { OnCancelFunc, OnItemExecutedFunc } from \"@itwin/appui-abstract\";\nimport type { SizeProps } from \"@itwin/core-react\";\nimport { DivWithOutsideClick, FocusTrap, Point, Size } from \"@itwin/core-react\";\nimport { PositionPopup } from \"./PositionPopup\";\nimport { KeyinPalettePanel } from \"./KeyinPalettePanel\";\nimport type { KeyinEntry } from \"../keyins/Keyins\";\n\n/** Props defining KeyinPalettePopup component\n * @public */\nexport interface KeyinPalettePopupProps {\n id: string;\n /** @deprecated in 4.11.x. Please use the optional `anchorEl` property moving forward. */\n el: HTMLElement;\n keyins: KeyinEntry[];\n anchorEl?: HTMLElement;\n onCancel?: OnCancelFunc;\n onItemExecuted?: OnItemExecutedFunc;\n}\n\n/** Keyin Palette Popup Component\n * @public\n */\nexport function KeyinPalettePopup({\n // eslint-disable-next-line deprecation/deprecation\n el,\n id,\n keyins,\n onCancel,\n onItemExecuted,\n anchorEl,\n}: KeyinPalettePopupProps) {\n // due to deprecation policy, the context won't be used as fallback\n // until we replace `el` with the optional `anchorEl` property.\n // const wrapper = React.useContext(WrapperContext);\n\n const _el = anchorEl ?? el;\n\n const [popupSize, setPopupSize] = React.useState(new Size(-1, -1));\n\n const onSizeKnown = React.useCallback(\n (newSize: SizeProps) => {\n // istanbul ignore else\n if (!popupSize.equals(newSize)) setPopupSize(Size.create(newSize));\n },\n [popupSize]\n );\n\n const cancel = React.useCallback(() => {\n onCancel && onCancel();\n }, [onCancel]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>): void => {\n switch (event.key) {\n case Key.Escape.valueOf():\n cancel();\n event.preventDefault();\n break;\n }\n },\n [cancel]\n );\n\n const xMid =\n _el.getBoundingClientRect().left + _el.getBoundingClientRect().width / 2;\n let point = new Point(xMid, _el.getBoundingClientRect().top);\n // istanbul ignore next\n if (popupSize.width > 0) point = point.offsetX(popupSize.width / -2);\n\n return (\n <PositionPopup\n key={id}\n className=\"uifw-command-palette-popup-container\"\n point={point}\n onSizeKnown={onSizeKnown}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <DivWithOutsideClick onOutsideClick={onCancel} onKeyDown={handleKeyDown}>\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n <KeyinPalettePanel keyins={keyins} onKeyinExecuted={onItemExecuted} />\n </FocusTrap>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n}\n"]}
@@ -276,6 +276,7 @@ class PopupManager {
276
276
  return position;
277
277
  }
278
278
  }
279
+ exports.PopupManager = PopupManager;
279
280
  PopupManager._popups = [];
280
281
  PopupManager._editorId = "InputEditor";
281
282
  PopupManager._toolbarId = "Toolbar";
@@ -286,7 +287,6 @@ PopupManager._keyPalettePopupId = "KeyinPalette";
286
287
  PopupManager._defaultOffset = { x: 8, y: 8 };
287
288
  // eslint-disable-next-line deprecation/deprecation
288
289
  PopupManager.onPopupsChangedEvent = new PopupsChangedEvent();
289
- exports.PopupManager = PopupManager;
290
290
  /** Popup Renderer
291
291
  * @public
292
292
  */
@@ -327,7 +327,7 @@ class PopupRenderer extends React.Component {
327
327
  })));
328
328
  }
329
329
  }
330
+ exports.PopupRenderer = PopupRenderer;
330
331
  /** @internal */
331
332
  PopupRenderer.contextType = ConfigurableUiContent_1.WrapperContext;
332
- exports.PopupRenderer = PopupRenderer;
333
333
  //# sourceMappingURL=PopupManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PopupManager.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/PopupManager.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 Popup\n */\n\nimport type {\n AbstractToolbarProps,\n DialogLayoutDataProvider,\n OnValueCommitFunc,\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyRecord,\n PropertyValueFormat,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { Point, SizeProps } from \"@itwin/core-react\";\nimport { Orientation, Rectangle } from \"@itwin/core-react\";\nimport * as React from \"react\";\nimport type { ReactElement } from \"react\";\nimport { offsetAndContainInContainer } from \"../layout/popup/Tooltip\";\nimport type { KeyinEntry } from \"../keyins/Keyins\";\nimport { UiFramework } from \"../UiFramework\";\nimport { CardPopup } from \"./CardPopup\";\nimport { HTMLElementPopup } from \"./HTMLElementPopup\";\nimport { InputEditorCommitHandler, InputEditorPopup } from \"./InputEditorPopup\";\nimport { KeyinPalettePopup } from \"./KeyinPalettePopup\";\nimport { ToolbarPopup } from \"./ToolbarPopup\";\nimport { ToolSettingsPopup } from \"./ToolSettingsPopup\";\nimport { ComponentPopup } from \"./ComponentPopup\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent\";\nimport { mapToPlacement, type Placement } from \"../utils/Placement\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem\";\nimport type { ToolbarProps } from \"../toolbar/Toolbar\";\nimport { InternalConfigurableUiManager } from \"../configurableui/InternalConfigurableUiManager\";\n\n// cSpell:ignore uiadmin\n\n/** Information maintained by PopupManager about a Popup\n * @public\n */\nexport interface PopupInfo {\n id: string;\n pt: XAndY;\n component: React.ReactNode;\n /** @deprecated in 4.x.11. Please use the optional `parent` property moving forward. */\n parentDocument: Document;\n /** will become standard once `parentDocument` is removed. */\n parent?: Document;\n}\n\n/** @internal */\ninterface CommonPopupOptions {\n onCancel: () => void;\n location: XAndY;\n offset: XAndY;\n placement: Placement;\n anchor?: HTMLElement;\n id?: string;\n}\n\ninterface DisplayCardPopupOptions extends CommonPopupOptions {\n title: string | PropertyRecord | undefined;\n toolbarProps?: ToolbarProps;\n onItemExecuted: (item: any) => void;\n}\n\n/**\n * @public\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PopupsChangedEventArgs {\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popups Changed Event class.\n * @public\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class PopupsChangedEvent extends UiEvent<PopupsChangedEventArgs> {}\n\n/** Props for each popup managed by the PopupManager\n * @public\n */\nexport interface PopupPropsBase {\n id: string;\n el: HTMLElement;\n pt: XAndY;\n offset: XAndY;\n}\n\n/** Describes React based content\n * @public\n */\nexport interface ReactContent {\n reactNode: React.ReactNode;\n}\n\n/** Type for Popup Content\n * @public\n */\nexport type PopupContentType = HTMLElement | ReactContent;\n\n/** ReactContent type guard.\n * @internal\n */\nexport const isReactContent = (\n content: PopupContentType\n): content is ReactContent => {\n return (content as ReactContent).reactNode !== undefined;\n};\n\n/** Popup Manager class\n * @public\n */\nexport class PopupManager {\n private static _popups: ReadonlyArray<PopupInfo> = [];\n private static _editorId = \"InputEditor\";\n private static _toolbarId = \"Toolbar\";\n private static _htmlElementId = \"HTMLElement\";\n private static _cardId = \"Card\";\n private static _toolSettingsId = \"ToolSettings\";\n private static _keyPalettePopupId = \"KeyinPalette\";\n\n private static _defaultOffset = { x: 8, y: 8 };\n\n // eslint-disable-next-line deprecation/deprecation\n public static readonly onPopupsChangedEvent = new PopupsChangedEvent();\n\n public static get popupCount() {\n return this._popups.length;\n }\n public static get popups() {\n return this._popups;\n }\n\n public static set popups(popups: ReadonlyArray<PopupInfo>) {\n // istanbul ignore if\n if (this._popups === popups) return;\n this._popups = popups;\n this.onPopupsChangedEvent.emit({ popups });\n }\n\n /** @internal */\n public static clearPopups() {\n this.popups = [];\n }\n\n private static addPopup(popupInfo: PopupInfo): void {\n const popups = [...PopupManager._popups, popupInfo];\n this.popups = popups;\n }\n\n private static updatePopup(popupInfo: PopupInfo, itemIndex: number): void {\n // istanbul ignore if\n if (itemIndex < 0) return;\n\n const popups = [\n ...PopupManager._popups.slice(0, itemIndex),\n popupInfo,\n ...PopupManager._popups.slice(itemIndex + 1),\n ];\n this.popups = popups;\n }\n\n public static addOrUpdatePopup(popupInfo: PopupInfo): void {\n const itemIndex = PopupManager._popups.findIndex(\n (info: PopupInfo) => info.id === popupInfo.id\n );\n if (itemIndex >= 0) PopupManager.updatePopup(popupInfo, itemIndex);\n else PopupManager.addPopup(popupInfo);\n }\n\n public static removePopup(id: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id === info.id\n );\n let result = true;\n\n if (index >= 0) {\n const popups = PopupManager._popups.filter((info: PopupInfo) => {\n return info.id !== id;\n });\n this.popups = popups;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `removePopup: Could not find popup with id of '${id}'`\n );\n result = false;\n }\n\n return result;\n }\n\n public static get defaultOffset(): XAndY {\n return PopupManager._defaultOffset;\n }\n public static set defaultOffset(offset: XAndY) {\n PopupManager._defaultOffset = offset;\n }\n\n public static showInputEditor(\n el: HTMLElement,\n pt: XAndY,\n value: Primitives.Value,\n propertyDescription: PropertyDescription,\n onCommit: OnValueCommitFunc,\n onCancel: () => void\n ): boolean {\n const primitiveValue: PrimitiveValue = {\n value,\n valueFormat: PropertyValueFormat.Primitive,\n };\n const record = new PropertyRecord(primitiveValue, propertyDescription);\n const commitHandler = new InputEditorCommitHandler(onCommit);\n const id = PopupManager._editorId;\n const component = (\n <InputEditorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n record={record}\n onCancel={onCancel}\n commitHandler={commitHandler}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideInputEditor(): boolean {\n return PopupManager.removePopup(PopupManager._editorId);\n }\n\n public static showKeyinPalette(\n keyins: KeyinEntry[],\n el: HTMLElement,\n onItemExecuted?: (item: any) => void,\n onCancel?: () => void\n ): boolean {\n const id = PopupManager._keyPalettePopupId;\n const cancelFn = onCancel ?? (() => PopupManager.hideKeyinPalette());\n const component = (\n <KeyinPalettePopup\n keyins={keyins}\n id={id}\n el={el}\n onItemExecuted={onItemExecuted}\n onCancel={cancelFn}\n />\n );\n\n // since the command palette popup is always at top center of specified HTML element and it does not need to move like\n // cursor popups just set pt to 0,0.\n const pt = { x: 0, y: 0 };\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideKeyinPalette(): boolean {\n return PopupManager.removePopup(PopupManager._keyPalettePopupId);\n }\n\n // @deprecated in 4.11.x. Use {@link PopupManager.displayToolbar} instead.\n public static showToolbar(\n toolbarProps: AbstractToolbarProps,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n PopupManager.displayToolbar(toolbarProps.items, {\n anchor: el,\n location: pt,\n offset,\n onCancel,\n placement: mapToPlacement(relativePosition),\n onItemExecuted,\n });\n return true;\n }\n\n public static displayToolbar(\n items: ToolbarItem[],\n options: CommonPopupOptions & { onItemExecuted: (item: any) => void }\n ): boolean {\n const id = options.id ?? PopupManager._toolbarId;\n const { anchor, location, offset, onCancel, placement, onItemExecuted } =\n options;\n\n const component = (\n <ToolbarPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n items={items}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideToolbar(): boolean {\n return PopupManager.removePopup(PopupManager._toolbarId);\n }\n\n // @deprecated in 4.11.x. Use {@link PopupManager.showComponent} instead.\n public static showHTMLElement(\n displayElement: HTMLElement,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._htmlElementId;\n const component = (\n // eslint-disable-next-line deprecation/deprecation\n <HTMLElementPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n element={displayElement}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n // @deprecated in 4.11.x. Use {@link PopupManager.hideComponent} instead.\n public static hideHTMLElement(): boolean {\n return PopupManager.removePopup(PopupManager._htmlElementId);\n }\n\n /**\n * Displays a React component as a popup.\n * @param displayElement The React component to display.\n * @param options for displaying the component.\n */\n public static showComponent(\n displayElement: ReactElement,\n options: CommonPopupOptions\n ): boolean {\n const { onCancel, location, offset, placement, anchor, id } = options;\n const _id = PopupManager._htmlElementId;\n\n const component = (\n <ComponentPopup\n id={id ?? _id}\n anchor={anchor ?? undefined}\n pt={location}\n offset={offset}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n >\n {displayElement}\n </ComponentPopup>\n );\n\n const popupInfo: PopupInfo = {\n id: id ?? _id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideComponent(id?: string): boolean {\n return PopupManager.removePopup(id ?? PopupManager._htmlElementId);\n }\n\n // @deprecated in 4.11.x. Use {@link PopupManager.displayCard} instead.\n public static showCard(\n content: PopupContentType,\n title: string | PropertyRecord | undefined,\n toolbarProps: AbstractToolbarProps | undefined,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._cardId;\n const placement = mapToPlacement(relativePosition);\n const component = (\n <CardPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n content={content}\n title={title}\n items={\n toolbarProps\n ? toolbarProps.items\n : /* istanbul ignore next */ undefined\n }\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static displayCard(\n content: React.ReactNode,\n options: DisplayCardPopupOptions\n ): boolean {\n const id = options.id ?? PopupManager._cardId;\n const {\n onCancel,\n location,\n placement,\n offset,\n anchor,\n title,\n toolbarProps,\n onItemExecuted,\n } = options;\n const component = (\n <CardPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n content={{ reactNode: content }}\n title={title}\n items={toolbarProps?.items}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCard(id?: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id ?? PopupManager._cardId === info.id\n );\n if (index >= 0) return PopupManager.removePopup(PopupManager._cardId);\n return false;\n }\n\n public static openToolSettings(\n dataProvider: DialogLayoutDataProvider,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolSettingsId;\n const component = (\n <ToolSettingsPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n dataProvider={dataProvider}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static closeToolSettings(): boolean {\n return PopupManager.removePopup(PopupManager._toolSettingsId);\n }\n\n public static getPopupPosition(\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n size: SizeProps\n ): Point {\n const containerBounds = Rectangle.create(el.getBoundingClientRect());\n const relativeBounds = Rectangle.createFromSize(size).offset(pt);\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n return position;\n }\n}\n\n/** @internal */\ninterface PopupRendererState {\n parentDocument: Document | null;\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popup Renderer\n * @public\n */\nexport class PopupRenderer extends React.Component<{}, PopupRendererState> {\n /** @internal */\n public static override contextType = WrapperContext;\n /** @internal */\n public declare context: React.ContextType<typeof WrapperContext>;\n\n public override readonly state: PopupRendererState = {\n parentDocument: null,\n popups: PopupManager.popups,\n };\n\n public override componentDidMount(): void {\n Logger.logInfo(\"PopupManager\", `mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.addListener(\n this._handlePopupsChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n Logger.logInfo(\"PopupManager\", `un-mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.removeListener(\n this._handlePopupsChangedEvent\n );\n }\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (PopupManager.popupCount <= 0) return null;\n return (\n <div\n className=\"appui-react-popup-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.state.popups\n .filter(\n (info) =>\n (info.parent ??\n // eslint-disable-next-line deprecation/deprecation\n info.parentDocument ??\n this.context.ownerDocument) === this.state.parentDocument\n )\n .map((popupInfo: PopupInfo) => {\n return (\n <React.Fragment key={popupInfo.id}>\n {popupInfo.component}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n // eslint-disable-next-line deprecation/deprecation\n private _handlePopupsChangedEvent = (args: PopupsChangedEventArgs) => {\n this.setState({ popups: args.popups });\n };\n}\n"]}
1
+ {"version":3,"file":"PopupManager.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/PopupManager.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 Popup\n */\n\nimport type {\n AbstractToolbarProps,\n DialogLayoutDataProvider,\n OnValueCommitFunc,\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyRecord,\n PropertyValueFormat,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { Point, SizeProps } from \"@itwin/core-react\";\nimport { Orientation, Rectangle } from \"@itwin/core-react\";\nimport * as React from \"react\";\nimport type { ReactElement } from \"react\";\nimport { offsetAndContainInContainer } from \"../layout/popup/Tooltip\";\nimport type { KeyinEntry } from \"../keyins/Keyins\";\nimport { UiFramework } from \"../UiFramework\";\nimport { CardPopup } from \"./CardPopup\";\nimport { HTMLElementPopup } from \"./HTMLElementPopup\";\nimport { InputEditorCommitHandler, InputEditorPopup } from \"./InputEditorPopup\";\nimport { KeyinPalettePopup } from \"./KeyinPalettePopup\";\nimport { ToolbarPopup } from \"./ToolbarPopup\";\nimport { ToolSettingsPopup } from \"./ToolSettingsPopup\";\nimport { ComponentPopup } from \"./ComponentPopup\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent\";\nimport { mapToPlacement, type Placement } from \"../utils/Placement\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem\";\nimport type { ToolbarProps } from \"../toolbar/Toolbar\";\nimport { InternalConfigurableUiManager } from \"../configurableui/InternalConfigurableUiManager\";\n\n// cSpell:ignore uiadmin\n\n/** Information maintained by PopupManager about a Popup\n * @public\n */\nexport interface PopupInfo {\n id: string;\n pt: XAndY;\n component: React.ReactNode;\n /** @deprecated in 4.x.11. Please use the optional `parent` property moving forward. */\n parentDocument: Document;\n /** will become standard once `parentDocument` is removed. */\n parent?: Document;\n}\n\n/** @internal */\ninterface CommonPopupOptions {\n onCancel: () => void;\n location: XAndY;\n offset: XAndY;\n placement: Placement;\n anchor?: HTMLElement;\n id?: string;\n}\n\ninterface DisplayCardPopupOptions extends CommonPopupOptions {\n title: string | PropertyRecord | undefined;\n toolbarProps?: ToolbarProps;\n onItemExecuted: (item: any) => void;\n}\n\n/**\n * @public\n * @deprecated in 4.13.x. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface PopupsChangedEventArgs {\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popups Changed Event class.\n * @public\n * @deprecated in 4.13.x. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class PopupsChangedEvent extends UiEvent<PopupsChangedEventArgs> {}\n\n/** Props for each popup managed by the PopupManager\n * @public\n */\nexport interface PopupPropsBase {\n id: string;\n el: HTMLElement;\n pt: XAndY;\n offset: XAndY;\n}\n\n/** Describes React based content\n * @public\n */\nexport interface ReactContent {\n reactNode: React.ReactNode;\n}\n\n/** Type for Popup Content\n * @public\n */\nexport type PopupContentType = HTMLElement | ReactContent;\n\n/** ReactContent type guard.\n * @internal\n */\nexport const isReactContent = (\n content: PopupContentType\n): content is ReactContent => {\n return (content as ReactContent).reactNode !== undefined;\n};\n\n/** Popup Manager class\n * @public\n */\nexport class PopupManager {\n private static _popups: ReadonlyArray<PopupInfo> = [];\n private static _editorId = \"InputEditor\";\n private static _toolbarId = \"Toolbar\";\n private static _htmlElementId = \"HTMLElement\";\n private static _cardId = \"Card\";\n private static _toolSettingsId = \"ToolSettings\";\n private static _keyPalettePopupId = \"KeyinPalette\";\n\n private static _defaultOffset = { x: 8, y: 8 };\n\n // eslint-disable-next-line deprecation/deprecation\n public static readonly onPopupsChangedEvent = new PopupsChangedEvent();\n\n public static get popupCount() {\n return this._popups.length;\n }\n public static get popups() {\n return this._popups;\n }\n\n public static set popups(popups: ReadonlyArray<PopupInfo>) {\n // istanbul ignore if\n if (this._popups === popups) return;\n this._popups = popups;\n this.onPopupsChangedEvent.emit({ popups });\n }\n\n /** @internal */\n public static clearPopups() {\n this.popups = [];\n }\n\n private static addPopup(popupInfo: PopupInfo): void {\n const popups = [...PopupManager._popups, popupInfo];\n this.popups = popups;\n }\n\n private static updatePopup(popupInfo: PopupInfo, itemIndex: number): void {\n // istanbul ignore if\n if (itemIndex < 0) return;\n\n const popups = [\n ...PopupManager._popups.slice(0, itemIndex),\n popupInfo,\n ...PopupManager._popups.slice(itemIndex + 1),\n ];\n this.popups = popups;\n }\n\n public static addOrUpdatePopup(popupInfo: PopupInfo): void {\n const itemIndex = PopupManager._popups.findIndex(\n (info: PopupInfo) => info.id === popupInfo.id\n );\n if (itemIndex >= 0) PopupManager.updatePopup(popupInfo, itemIndex);\n else PopupManager.addPopup(popupInfo);\n }\n\n public static removePopup(id: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id === info.id\n );\n let result = true;\n\n if (index >= 0) {\n const popups = PopupManager._popups.filter((info: PopupInfo) => {\n return info.id !== id;\n });\n this.popups = popups;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `removePopup: Could not find popup with id of '${id}'`\n );\n result = false;\n }\n\n return result;\n }\n\n public static get defaultOffset(): XAndY {\n return PopupManager._defaultOffset;\n }\n public static set defaultOffset(offset: XAndY) {\n PopupManager._defaultOffset = offset;\n }\n\n public static showInputEditor(\n el: HTMLElement,\n pt: XAndY,\n value: Primitives.Value,\n propertyDescription: PropertyDescription,\n onCommit: OnValueCommitFunc,\n onCancel: () => void\n ): boolean {\n const primitiveValue: PrimitiveValue = {\n value,\n valueFormat: PropertyValueFormat.Primitive,\n };\n const record = new PropertyRecord(primitiveValue, propertyDescription);\n const commitHandler = new InputEditorCommitHandler(onCommit);\n const id = PopupManager._editorId;\n const component = (\n <InputEditorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n record={record}\n onCancel={onCancel}\n commitHandler={commitHandler}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideInputEditor(): boolean {\n return PopupManager.removePopup(PopupManager._editorId);\n }\n\n public static showKeyinPalette(\n keyins: KeyinEntry[],\n el: HTMLElement,\n onItemExecuted?: (item: any) => void,\n onCancel?: () => void\n ): boolean {\n const id = PopupManager._keyPalettePopupId;\n const cancelFn = onCancel ?? (() => PopupManager.hideKeyinPalette());\n const component = (\n <KeyinPalettePopup\n keyins={keyins}\n id={id}\n el={el}\n onItemExecuted={onItemExecuted}\n onCancel={cancelFn}\n />\n );\n\n // since the command palette popup is always at top center of specified HTML element and it does not need to move like\n // cursor popups just set pt to 0,0.\n const pt = { x: 0, y: 0 };\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideKeyinPalette(): boolean {\n return PopupManager.removePopup(PopupManager._keyPalettePopupId);\n }\n\n // @deprecated in 4.11.x. Use {@link PopupManager.displayToolbar} instead.\n public static showToolbar(\n toolbarProps: AbstractToolbarProps,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n PopupManager.displayToolbar(toolbarProps.items, {\n anchor: el,\n location: pt,\n offset,\n onCancel,\n placement: mapToPlacement(relativePosition),\n onItemExecuted,\n });\n return true;\n }\n\n public static displayToolbar(\n items: ToolbarItem[],\n options: CommonPopupOptions & { onItemExecuted: (item: any) => void }\n ): boolean {\n const id = options.id ?? PopupManager._toolbarId;\n const { anchor, location, offset, onCancel, placement, onItemExecuted } =\n options;\n\n const component = (\n <ToolbarPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n items={items}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideToolbar(): boolean {\n return PopupManager.removePopup(PopupManager._toolbarId);\n }\n\n // @deprecated in 4.11.x. Use {@link PopupManager.showComponent} instead.\n public static showHTMLElement(\n displayElement: HTMLElement,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._htmlElementId;\n const component = (\n // eslint-disable-next-line deprecation/deprecation\n <HTMLElementPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n element={displayElement}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n // @deprecated in 4.11.x. Use {@link PopupManager.hideComponent} instead.\n public static hideHTMLElement(): boolean {\n return PopupManager.removePopup(PopupManager._htmlElementId);\n }\n\n /**\n * Displays a React component as a popup.\n * @param displayElement The React component to display.\n * @param options for displaying the component.\n */\n public static showComponent(\n displayElement: ReactElement,\n options: CommonPopupOptions\n ): boolean {\n const { onCancel, location, offset, placement, anchor, id } = options;\n const _id = PopupManager._htmlElementId;\n\n const component = (\n <ComponentPopup\n id={id ?? _id}\n anchor={anchor ?? undefined}\n pt={location}\n offset={offset}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n >\n {displayElement}\n </ComponentPopup>\n );\n\n const popupInfo: PopupInfo = {\n id: id ?? _id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideComponent(id?: string): boolean {\n return PopupManager.removePopup(id ?? PopupManager._htmlElementId);\n }\n\n // @deprecated in 4.11.x. Use {@link PopupManager.displayCard} instead.\n public static showCard(\n content: PopupContentType,\n title: string | PropertyRecord | undefined,\n toolbarProps: AbstractToolbarProps | undefined,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: (item: any) => void,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._cardId;\n const placement = mapToPlacement(relativePosition);\n const component = (\n <CardPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n content={content}\n title={title}\n items={\n toolbarProps\n ? toolbarProps.items\n : /* istanbul ignore next */ undefined\n }\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n parent: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static displayCard(\n content: React.ReactNode,\n options: DisplayCardPopupOptions\n ): boolean {\n const id = options.id ?? PopupManager._cardId;\n const {\n onCancel,\n location,\n placement,\n offset,\n anchor,\n title,\n toolbarProps,\n onItemExecuted,\n } = options;\n const component = (\n <CardPopup\n id={id}\n el={anchor}\n pt={location}\n offset={offset}\n content={{ reactNode: content }}\n title={title}\n items={toolbarProps?.items}\n placement={placement}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt: location,\n component,\n parentDocument:\n anchor?.ownerDocument ??\n InternalConfigurableUiManager.getWrapperDocument(),\n parent: anchor?.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCard(id?: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id ?? PopupManager._cardId === info.id\n );\n if (index >= 0) return PopupManager.removePopup(PopupManager._cardId);\n return false;\n }\n\n public static openToolSettings(\n dataProvider: DialogLayoutDataProvider,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: () => void,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolSettingsId;\n const component = (\n <ToolSettingsPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n dataProvider={dataProvider}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static closeToolSettings(): boolean {\n return PopupManager.removePopup(PopupManager._toolSettingsId);\n }\n\n public static getPopupPosition(\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n size: SizeProps\n ): Point {\n const containerBounds = Rectangle.create(el.getBoundingClientRect());\n const relativeBounds = Rectangle.createFromSize(size).offset(pt);\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n return position;\n }\n}\n\n/** @internal */\ninterface PopupRendererState {\n parentDocument: Document | null;\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popup Renderer\n * @public\n */\nexport class PopupRenderer extends React.Component<{}, PopupRendererState> {\n /** @internal */\n public static override contextType = WrapperContext;\n /** @internal */\n public declare context: React.ContextType<typeof WrapperContext>;\n\n public override readonly state: PopupRendererState = {\n parentDocument: null,\n popups: PopupManager.popups,\n };\n\n public override componentDidMount(): void {\n Logger.logInfo(\"PopupManager\", `mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.addListener(\n this._handlePopupsChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n Logger.logInfo(\"PopupManager\", `un-mounting PopupManager`);\n PopupManager.onPopupsChangedEvent.removeListener(\n this._handlePopupsChangedEvent\n );\n }\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (PopupManager.popupCount <= 0) return null;\n return (\n <div\n className=\"appui-react-popup-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.state.popups\n .filter(\n (info) =>\n (info.parent ??\n // eslint-disable-next-line deprecation/deprecation\n info.parentDocument ??\n this.context.ownerDocument) === this.state.parentDocument\n )\n .map((popupInfo: PopupInfo) => {\n return (\n <React.Fragment key={popupInfo.id}>\n {popupInfo.component}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n // eslint-disable-next-line deprecation/deprecation\n private _handlePopupsChangedEvent = (args: PopupsChangedEventArgs) => {\n this.setState({ popups: args.popups });\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PositionPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/PositionPopup.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,gCAA8B;AAC9B,2CAAoC;AACpC,+BAA+B;AAG/B,kDAA8C;AAa9C;WACW;AACX,MAAa,aAAc,SAAQ,KAAK,CAAC,aAAiC;IACxE,YAAY,KAAyB;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAEtE,MAAM,QAAQ,GAAwB;YACpC,GAAG,KAAK;YACR,GAAG,EAAE,KAAK,CAAC,CAAC;YACZ,IAAI,EAAE,KAAK,CAAC,CAAC;SACd,CAAC;QAEF,OAAO,CACL,gCACM,KAAK,EACT,SAAS,EAAE,IAAA,oBAAU,EAAC,qBAAqB,EAAE,SAAS,CAAC,EACvD,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAE5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAChB,CACP,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,GAA0B;QAC1C,uBAAuB;QACvB,IAAI,GAAG,EAAE;YACP,MAAM,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,iBAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAE/C,uBAAuB;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW;gBAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC1D;IACH,CAAC;CACF;AApCD,sCAoCC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,KAAqB;IACxD,mDAAmD;IACnD,OAAO,oBAAC,gBAAG,OAAK,KAAK,EAAE,aAAa,EAAC,6BAA6B,GAAG,CAAC;AACxE,CAAC;AAHD,oDAGC","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 Popup\n */\n\nimport \"./PositionPopup.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { CommonDivProps, CommonProps, SizeProps } from \"@itwin/core-react\";\nimport { Div, Size } from \"@itwin/core-react\";\n\n/** Props for popup at screen position\n * @beta */\nexport interface PositionPopupProps extends CommonProps {\n /** Center point */\n point: XAndY;\n /** Function called when size is known. */\n onSizeKnown?: (size: SizeProps) => void;\n /** Content */\n children?: React.ReactNode;\n}\n\n/** Popup component at screen position\n * @beta */\nexport class PositionPopup extends React.PureComponent<PositionPopupProps> {\n constructor(props: PositionPopupProps) {\n super(props);\n }\n\n public override render() {\n const { point, className, style, onSizeKnown, ...props } = this.props;\n\n const divStyle: React.CSSProperties = {\n ...style,\n top: point.y,\n left: point.x,\n };\n\n return (\n <div\n {...props}\n className={classnames(\"uifw-position-popup\", className)}\n style={divStyle}\n ref={(e) => this.setDivRef(e)}\n >\n {this.props.children}\n </div>\n );\n }\n\n private setDivRef(div: HTMLDivElement | null) {\n // istanbul ignore else\n if (div) {\n const rect = div.getBoundingClientRect();\n const size = new Size(rect.width, rect.height);\n\n // istanbul ignore else\n if (this.props.onSizeKnown) this.props.onSizeKnown(size);\n }\n }\n}\n\n/** PositionPopup content with padding\n * @beta\n */\nexport function PositionPopupContent(props: CommonDivProps) {\n // eslint-disable-next-line deprecation/deprecation\n return <Div {...props} mainClassName=\"uifw-position-popup-content\" />;\n}\n"]}
1
+ {"version":3,"file":"PositionPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/PositionPopup.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,gCAA8B;AAC9B,2CAAoC;AACpC,+BAA+B;AAG/B,kDAA8C;AAa9C;WACW;AACX,MAAa,aAAc,SAAQ,KAAK,CAAC,aAAiC;IACxE,YAAY,KAAyB;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAEtE,MAAM,QAAQ,GAAwB;YACpC,GAAG,KAAK;YACR,GAAG,EAAE,KAAK,CAAC,CAAC;YACZ,IAAI,EAAE,KAAK,CAAC,CAAC;SACd,CAAC;QAEF,OAAO,CACL,gCACM,KAAK,EACT,SAAS,EAAE,IAAA,oBAAU,EAAC,qBAAqB,EAAE,SAAS,CAAC,EACvD,KAAK,EAAE,QAAQ,EACf,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAE5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAChB,CACP,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,GAA0B;QAC1C,uBAAuB;QACvB,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,iBAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAE/C,uBAAuB;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW;gBAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;CACF;AApCD,sCAoCC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,KAAqB;IACxD,mDAAmD;IACnD,OAAO,oBAAC,gBAAG,OAAK,KAAK,EAAE,aAAa,EAAC,6BAA6B,GAAG,CAAC;AACxE,CAAC;AAHD,oDAGC","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 Popup\n */\n\nimport \"./PositionPopup.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { CommonDivProps, CommonProps, SizeProps } from \"@itwin/core-react\";\nimport { Div, Size } from \"@itwin/core-react\";\n\n/** Props for popup at screen position\n * @beta */\nexport interface PositionPopupProps extends CommonProps {\n /** Center point */\n point: XAndY;\n /** Function called when size is known. */\n onSizeKnown?: (size: SizeProps) => void;\n /** Content */\n children?: React.ReactNode;\n}\n\n/** Popup component at screen position\n * @beta */\nexport class PositionPopup extends React.PureComponent<PositionPopupProps> {\n constructor(props: PositionPopupProps) {\n super(props);\n }\n\n public override render() {\n const { point, className, style, onSizeKnown, ...props } = this.props;\n\n const divStyle: React.CSSProperties = {\n ...style,\n top: point.y,\n left: point.x,\n };\n\n return (\n <div\n {...props}\n className={classnames(\"uifw-position-popup\", className)}\n style={divStyle}\n ref={(e) => this.setDivRef(e)}\n >\n {this.props.children}\n </div>\n );\n }\n\n private setDivRef(div: HTMLDivElement | null) {\n // istanbul ignore else\n if (div) {\n const rect = div.getBoundingClientRect();\n const size = new Size(rect.width, rect.height);\n\n // istanbul ignore else\n if (this.props.onSizeKnown) this.props.onSizeKnown(size);\n }\n }\n}\n\n/** PositionPopup content with padding\n * @beta\n */\nexport function PositionPopupContent(props: CommonDivProps) {\n // eslint-disable-next-line deprecation/deprecation\n return <Div {...props} mainClassName=\"uifw-position-popup-content\" />;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolSettingsPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/ToolSettingsPopup.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,6CAAkC;AAOlC,kDAAgF;AAChF,mEAAgE;AAEhE,iDAA8C;AAC9C,mDAAsE;AACtE,yEAAsE;AACtE,yFAA+E;AAgB/E;;GAEG;AACH,MAAa,iBAAkB,SAAQ,KAAK,CAAC,aAG5C;IAMC,YAAY,KAA6B;QACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QANf,gBAAgB;QACS,UAAK,GAAG;YAC/B,IAAI,EAAE,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,CAAC;QAMM,iBAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;YAC5C,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;QAEM,mBAAc,GAAG,CAAC,CAAsB,EAAE,EAAE;YAClD,QAAQ,CAAC,CAAC,GAAG,EAAE;gBACb,KAAK,iBAAG,CAAC,MAAM,CAAC,OAAO,EAAE;oBACvB,uBAAuB;oBACvB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;wBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC/C,MAAM;aACT;QACH,CAAC,CAAC;IAfF,CAAC;IAiBe,MAAM;QACpB,MAAM,kBAAkB,GAAG,IAAI,uCAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3E,IAAI,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CACvC,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,kBAAK,EAAE,EACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;QACF,MAAM,SAAS,GAAG,yBAAW,CAAC,YAAY,CACxC,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAC5B,CAAC;QACF,KAAK,GAAG,IAAI,kBAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjD,OAAO,CACL,oBAAC,6BAAa,IACZ,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAClB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAG9B,oBAAC,gCAAmB,IAClB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnC,SAAS,EAAE,IAAI,CAAC,cAAc;gBAE9B,oBAAC,oCAAoB;oBACnB,oBAAC,sBAAS,IAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,IACnD,kBAAkB,IAAI,CACrB,oBAAC,gDAAmB,IAAC,kBAAkB,EAAE,kBAAkB,GAAI,CAChE,CACS,CACS,CACH,CACR,CACjB,CAAC;IACJ,CAAC;CACF;AAlED,8CAkEC","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 Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type {\n DialogLayoutDataProvider,\n OnCancelFunc,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport type { Orientation, SizeProps } from \"@itwin/core-react\";\nimport { DivWithOutsideClick, FocusTrap, Point, Size } from \"@itwin/core-react\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup\";\nimport type { PopupPropsBase } from \"./PopupManager\";\nimport { PopupManager } from \"./PopupManager\";\nimport { PositionPopup, PositionPopupContent } from \"./PositionPopup\";\nimport { ComponentGenerator } from \"../uiprovider/ComponentGenerator\";\nimport { DialogGridContainer } from \"../uiprovider/DefaultDialogGridContainer\";\n\n/** Props for defining a popup tool settings component\n * @beta */\nexport interface ToolSettingsPopupProps extends PopupPropsBase {\n dataProvider: DialogLayoutDataProvider;\n relativePosition: RelativePosition;\n orientation: Orientation;\n onCancel: OnCancelFunc;\n}\n\n/** @internal */\ninterface ToolSettingsPopupState {\n size: Size;\n}\n\n/** Popup component for Tool Settings\n * @beta\n */\nexport class ToolSettingsPopup extends React.PureComponent<\n ToolSettingsPopupProps,\n ToolSettingsPopupState\n> {\n /** @internal */\n public override readonly state = {\n size: new Size(-1, -1),\n };\n\n constructor(props: ToolSettingsPopupProps) {\n super(props);\n }\n\n private _onSizeKnown = (newSize: SizeProps) => {\n // istanbul ignore else\n if (!this.state.size.equals(newSize))\n this.setState({ size: Size.create(newSize) });\n };\n\n private _handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case Key.Escape.valueOf():\n // istanbul ignore else\n if (this.props.onCancel) this.props.onCancel();\n break;\n }\n };\n\n public override render() {\n const componentGenerator = new ComponentGenerator(this.props.dataProvider);\n let point = PopupManager.getPopupPosition(\n this.props.el,\n this.props.pt,\n new Point(),\n this.state.size\n );\n const popupRect = CursorPopup.getPopupRect(\n point,\n this.props.offset,\n this.state.size,\n this.props.relativePosition\n );\n point = new Point(popupRect.left, popupRect.top);\n\n return (\n <PositionPopup\n key={this.props.id}\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <DivWithOutsideClick\n onOutsideClick={this.props.onCancel}\n onKeyDown={this._handleKeyDown}\n >\n <PositionPopupContent>\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n {componentGenerator && (\n <DialogGridContainer componentGenerator={componentGenerator} />\n )}\n </FocusTrap>\n </PositionPopupContent>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ToolSettingsPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/ToolSettingsPopup.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,6CAAkC;AAOlC,kDAAgF;AAChF,mEAAgE;AAEhE,iDAA8C;AAC9C,mDAAsE;AACtE,yEAAsE;AACtE,yFAA+E;AAgB/E;;GAEG;AACH,MAAa,iBAAkB,SAAQ,KAAK,CAAC,aAG5C;IAMC,YAAY,KAA6B;QACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QANf,gBAAgB;QACS,UAAK,GAAG;YAC/B,IAAI,EAAE,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,CAAC;QAMM,iBAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;YAC5C,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;QAEM,mBAAc,GAAG,CAAC,CAAsB,EAAE,EAAE;YAClD,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;gBACd,KAAK,iBAAG,CAAC,MAAM,CAAC,OAAO,EAAE;oBACvB,uBAAuB;oBACvB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;wBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC/C,MAAM;YACV,CAAC;QACH,CAAC,CAAC;IAfF,CAAC;IAiBe,MAAM;QACpB,MAAM,kBAAkB,GAAG,IAAI,uCAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC3E,IAAI,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CACvC,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,kBAAK,EAAE,EACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;QACF,MAAM,SAAS,GAAG,yBAAW,CAAC,YAAY,CACxC,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAC5B,CAAC;QACF,KAAK,GAAG,IAAI,kBAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QAEjD,OAAO,CACL,oBAAC,6BAAa,IACZ,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAClB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAG9B,oBAAC,gCAAmB,IAClB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnC,SAAS,EAAE,IAAI,CAAC,cAAc;gBAE9B,oBAAC,oCAAoB;oBACnB,oBAAC,sBAAS,IAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,IACnD,kBAAkB,IAAI,CACrB,oBAAC,gDAAmB,IAAC,kBAAkB,EAAE,kBAAkB,GAAI,CAChE,CACS,CACS,CACH,CACR,CACjB,CAAC;IACJ,CAAC;CACF;AAlED,8CAkEC","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 Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type {\n DialogLayoutDataProvider,\n OnCancelFunc,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport type { Orientation, SizeProps } from \"@itwin/core-react\";\nimport { DivWithOutsideClick, FocusTrap, Point, Size } from \"@itwin/core-react\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup\";\nimport type { PopupPropsBase } from \"./PopupManager\";\nimport { PopupManager } from \"./PopupManager\";\nimport { PositionPopup, PositionPopupContent } from \"./PositionPopup\";\nimport { ComponentGenerator } from \"../uiprovider/ComponentGenerator\";\nimport { DialogGridContainer } from \"../uiprovider/DefaultDialogGridContainer\";\n\n/** Props for defining a popup tool settings component\n * @beta */\nexport interface ToolSettingsPopupProps extends PopupPropsBase {\n dataProvider: DialogLayoutDataProvider;\n relativePosition: RelativePosition;\n orientation: Orientation;\n onCancel: OnCancelFunc;\n}\n\n/** @internal */\ninterface ToolSettingsPopupState {\n size: Size;\n}\n\n/** Popup component for Tool Settings\n * @beta\n */\nexport class ToolSettingsPopup extends React.PureComponent<\n ToolSettingsPopupProps,\n ToolSettingsPopupState\n> {\n /** @internal */\n public override readonly state = {\n size: new Size(-1, -1),\n };\n\n constructor(props: ToolSettingsPopupProps) {\n super(props);\n }\n\n private _onSizeKnown = (newSize: SizeProps) => {\n // istanbul ignore else\n if (!this.state.size.equals(newSize))\n this.setState({ size: Size.create(newSize) });\n };\n\n private _handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case Key.Escape.valueOf():\n // istanbul ignore else\n if (this.props.onCancel) this.props.onCancel();\n break;\n }\n };\n\n public override render() {\n const componentGenerator = new ComponentGenerator(this.props.dataProvider);\n let point = PopupManager.getPopupPosition(\n this.props.el,\n this.props.pt,\n new Point(),\n this.state.size\n );\n const popupRect = CursorPopup.getPopupRect(\n point,\n this.props.offset,\n this.state.size,\n this.props.relativePosition\n );\n point = new Point(popupRect.left, popupRect.top);\n\n return (\n <PositionPopup\n key={this.props.id}\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <DivWithOutsideClick\n onOutsideClick={this.props.onCancel}\n onKeyDown={this._handleKeyDown}\n >\n <PositionPopupContent>\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n {componentGenerator && (\n <DialogGridContainer componentGenerator={componentGenerator} />\n )}\n </FocusTrap>\n </PositionPopupContent>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
@@ -57,7 +57,7 @@ class ToolbarPopup extends React.PureComponent {
57
57
  React.createElement(Toolbar_1.Toolbar, { expandsTo: components_react_1.Direction.Bottom, panelAlignment: components_react_1.ToolbarPanelAlignment.Start, items: this.props.items, useDragInteraction: true, toolbarOpacitySetting: components_react_1.ToolbarOpacitySetting.Defaults, onItemExecuted: this.props.onItemExecuted })))));
58
58
  }
59
59
  }
60
+ exports.ToolbarPopup = ToolbarPopup;
60
61
  /** @internal */
61
62
  ToolbarPopup.contextType = ConfigurableUiContent_1.WrapperContext;
62
- exports.ToolbarPopup = ToolbarPopup;
63
63
  //# sourceMappingURL=ToolbarPopup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/ToolbarPopup.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,6CAAkC;AAIlC,kDAAgF;AAChF,8DAIiC;AACjC,mEAAgE;AAEhE,iDAA8C;AAC9C,mDAAgD;AAEhD,gDAA6C;AAC7C,mFAAyE;AACzE,kDAAoE;AAoBpE;;GAEG;AACH,MAAa,YAAa,SAAQ,KAAK,CAAC,aAGvC;IAHD;;QASE,gBAAgB;QACS,UAAK,GAAG;YAC/B,IAAI,EAAE,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,CAAC;QAEM,iBAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;YAC5C,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;QAEM,mBAAc,GAAG,CACvB,KAA0C,EACpC,EAAE;YACR,QAAQ,KAAK,CAAC,GAAG,EAAE;gBACjB,KAAK,iBAAG,CAAC,MAAM,CAAC,OAAO,EAAE;oBACvB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,MAAM;aACT;QACH,CAAC,CAAC;IAiDJ,CAAC;IA/CS,OAAO;QACb,uBAAuB;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SACvB;IACH,CAAC;IAEe,MAAM;QACpB,IAAI,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CACvC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,EAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,kBAAK,EAAE,EACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;QACF,MAAM,SAAS,GAAG,yBAAW,CAAC,YAAY,CACxC,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAA,0BAAc,EAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CACpE,CAAC;QACF,KAAK,GAAG,IAAI,kBAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,CACL,oBAAC,6BAAa,IACZ,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAClB,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAG9B,oBAAC,gCAAmB,IAClB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnC,SAAS,EAAE,IAAI,CAAC,cAAc;gBAE9B,oBAAC,sBAAS,IAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI;oBACpD,oBAAC,iBAAO,IACN,SAAS,EAAE,4BAAS,CAAC,MAAM,EAC3B,cAAc,EAAE,wCAAqB,CAAC,KAAK,EAC3C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,kBAAkB,EAAE,IAAI,EACxB,qBAAqB,EAAE,wCAAqB,CAAC,QAAQ,EACrD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GACzC,CACQ,CACQ,CACR,CACjB,CAAC;IACJ,CAAC;;AAxED,gBAAgB;AACO,wBAAW,GAAG,sCAAc,AAAjB,CAAkB;AALzC,oCAAY","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 Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { RelativePosition } from \"@itwin/appui-abstract\";\nimport type { RequireAtLeastOne } from \"@itwin/core-bentley\";\nimport type { Orientation, SizeProps } from \"@itwin/core-react\";\nimport { DivWithOutsideClick, FocusTrap, Point, Size } from \"@itwin/core-react\";\nimport {\n Direction,\n ToolbarOpacitySetting,\n ToolbarPanelAlignment,\n} from \"@itwin/components-react\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup\";\nimport type { PopupPropsBase } from \"./PopupManager\";\nimport { PopupManager } from \"./PopupManager\";\nimport { PositionPopup } from \"./PositionPopup\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem\";\nimport { Toolbar } from \"../toolbar/Toolbar\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent\";\nimport { mapToPlacement, type Placement } from \"../utils/Placement\";\n\n/** Props for a popup toolbar\n * @beta */\nexport type ToolbarPopupProps = Omit<PopupPropsBase, \"el\"> & {\n items: ToolbarItem[];\n orientation: Orientation;\n onCancel: () => void;\n onItemExecuted: (item: any) => void;\n el?: HTMLElement;\n} & RequireAtLeastOne<{\n relativePosition: RelativePosition; // @deprecated in 4.11.x. Please use placement instead.\n placement: Placement;\n }>;\n\n/** @internal */\ninterface ToolbarPopupState {\n size: Size;\n}\n\n/** Popup component for Toolbar\n * @beta\n */\nexport class ToolbarPopup extends React.PureComponent<\n ToolbarPopupProps,\n ToolbarPopupState\n> {\n /** @internal */\n public static override contextType = WrapperContext;\n /** @internal */\n public declare context: React.ContextType<typeof WrapperContext>;\n\n /** @internal */\n public override readonly state = {\n size: new Size(-1, -1),\n };\n\n private _onSizeKnown = (newSize: SizeProps) => {\n // istanbul ignore else\n if (!this.state.size.equals(newSize))\n this.setState({ size: Size.create(newSize) });\n };\n\n private _handleKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ): void => {\n switch (event.key) {\n case Key.Escape.valueOf():\n this._cancel();\n break;\n }\n };\n\n private _cancel() {\n // istanbul ignore else\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n }\n\n public override render() {\n let point = PopupManager.getPopupPosition(\n this.props.el ?? this.context,\n this.props.pt,\n new Point(),\n this.state.size\n );\n const popupRect = CursorPopup.getPopupRect(\n point,\n this.props.offset,\n this.state.size,\n this.props.placement ?? mapToPlacement(this.props.relativePosition)\n );\n point = new Point(popupRect.left, popupRect.top);\n return (\n <PositionPopup\n key={this.props.id}\n className=\"uifw-no-border\"\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <DivWithOutsideClick\n onOutsideClick={this.props.onCancel}\n onKeyDown={this._handleKeyDown}\n >\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n <Toolbar\n expandsTo={Direction.Bottom}\n panelAlignment={ToolbarPanelAlignment.Start}\n items={this.props.items}\n useDragInteraction={true}\n toolbarOpacitySetting={ToolbarOpacitySetting.Defaults}\n onItemExecuted={this.props.onItemExecuted}\n />\n </FocusTrap>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ToolbarPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/ToolbarPopup.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,6CAAkC;AAIlC,kDAAgF;AAChF,8DAIiC;AACjC,mEAAgE;AAEhE,iDAA8C;AAC9C,mDAAgD;AAEhD,gDAA6C;AAC7C,mFAAyE;AACzE,kDAAoE;AAoBpE;;GAEG;AACH,MAAa,YAAa,SAAQ,KAAK,CAAC,aAGvC;IAHD;;QASE,gBAAgB;QACS,UAAK,GAAG;YAC/B,IAAI,EAAE,IAAI,iBAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB,CAAC;QAEM,iBAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;YAC5C,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC;QAEM,mBAAc,GAAG,CACvB,KAA0C,EACpC,EAAE;YACR,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;gBAClB,KAAK,iBAAG,CAAC,MAAM,CAAC,OAAO,EAAE;oBACvB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,MAAM;YACV,CAAC;QACH,CAAC,CAAC;IAiDJ,CAAC;IA/CS,OAAO;QACb,uBAAuB;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAEe,MAAM;QACpB,IAAI,KAAK,GAAG,2BAAY,CAAC,gBAAgB,CACvC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,EAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,kBAAK,EAAE,EACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;QACF,MAAM,SAAS,GAAG,yBAAW,CAAC,YAAY,CACxC,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAA,0BAAc,EAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CACpE,CAAC;QACF,KAAK,GAAG,IAAI,kBAAK,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QACjD,OAAO,CACL,oBAAC,6BAAa,IACZ,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAClB,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY;YAG9B,oBAAC,gCAAmB,IAClB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnC,SAAS,EAAE,IAAI,CAAC,cAAc;gBAE9B,oBAAC,sBAAS,IAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI;oBACpD,oBAAC,iBAAO,IACN,SAAS,EAAE,4BAAS,CAAC,MAAM,EAC3B,cAAc,EAAE,wCAAqB,CAAC,KAAK,EAC3C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,kBAAkB,EAAE,IAAI,EACxB,qBAAqB,EAAE,wCAAqB,CAAC,QAAQ,EACrD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GACzC,CACQ,CACQ,CACR,CACjB,CAAC;IACJ,CAAC;;AA5EH,oCA6EC;AAzEC,gBAAgB;AACO,wBAAW,GAAG,sCAAc,AAAjB,CAAkB","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 Popup\n */\n\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { RelativePosition } from \"@itwin/appui-abstract\";\nimport type { RequireAtLeastOne } from \"@itwin/core-bentley\";\nimport type { Orientation, SizeProps } from \"@itwin/core-react\";\nimport { DivWithOutsideClick, FocusTrap, Point, Size } from \"@itwin/core-react\";\nimport {\n Direction,\n ToolbarOpacitySetting,\n ToolbarPanelAlignment,\n} from \"@itwin/components-react\";\nimport { CursorPopup } from \"../cursor/cursorpopup/CursorPopup\";\nimport type { PopupPropsBase } from \"./PopupManager\";\nimport { PopupManager } from \"./PopupManager\";\nimport { PositionPopup } from \"./PositionPopup\";\nimport type { ToolbarItem } from \"../toolbar/ToolbarItem\";\nimport { Toolbar } from \"../toolbar/Toolbar\";\nimport { WrapperContext } from \"../configurableui/ConfigurableUiContent\";\nimport { mapToPlacement, type Placement } from \"../utils/Placement\";\n\n/** Props for a popup toolbar\n * @beta */\nexport type ToolbarPopupProps = Omit<PopupPropsBase, \"el\"> & {\n items: ToolbarItem[];\n orientation: Orientation;\n onCancel: () => void;\n onItemExecuted: (item: any) => void;\n el?: HTMLElement;\n} & RequireAtLeastOne<{\n relativePosition: RelativePosition; // @deprecated in 4.11.x. Please use placement instead.\n placement: Placement;\n }>;\n\n/** @internal */\ninterface ToolbarPopupState {\n size: Size;\n}\n\n/** Popup component for Toolbar\n * @beta\n */\nexport class ToolbarPopup extends React.PureComponent<\n ToolbarPopupProps,\n ToolbarPopupState\n> {\n /** @internal */\n public static override contextType = WrapperContext;\n /** @internal */\n public declare context: React.ContextType<typeof WrapperContext>;\n\n /** @internal */\n public override readonly state = {\n size: new Size(-1, -1),\n };\n\n private _onSizeKnown = (newSize: SizeProps) => {\n // istanbul ignore else\n if (!this.state.size.equals(newSize))\n this.setState({ size: Size.create(newSize) });\n };\n\n private _handleKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>\n ): void => {\n switch (event.key) {\n case Key.Escape.valueOf():\n this._cancel();\n break;\n }\n };\n\n private _cancel() {\n // istanbul ignore else\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n }\n\n public override render() {\n let point = PopupManager.getPopupPosition(\n this.props.el ?? this.context,\n this.props.pt,\n new Point(),\n this.state.size\n );\n const popupRect = CursorPopup.getPopupRect(\n point,\n this.props.offset,\n this.state.size,\n this.props.placement ?? mapToPlacement(this.props.relativePosition)\n );\n point = new Point(popupRect.left, popupRect.top);\n return (\n <PositionPopup\n key={this.props.id}\n className=\"uifw-no-border\"\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <DivWithOutsideClick\n onOutsideClick={this.props.onCancel}\n onKeyDown={this._handleKeyDown}\n >\n <FocusTrap active={true} returnFocusOnDeactivate={true}>\n <Toolbar\n expandsTo={Direction.Bottom}\n panelAlignment={ToolbarPanelAlignment.Start}\n items={this.props.items}\n useDragInteraction={true}\n toolbarOpacitySetting={ToolbarOpacitySetting.Defaults}\n onItemExecuted={this.props.onItemExecuted}\n />\n </FocusTrap>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewFeatures.js","sourceRoot":"","sources":["../../../../src/appui-react/preview/PreviewFeatures.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,qCAAiC;AACjC,sDAA6C;AAC7C,gDAA6C;AA+C7C;;GAEG;AACH,MAAM,mBAAmB,GAAkD;IACzE,kBAAkB,EAAE,SAAS;IAC7B,oBAAoB,EAAE,SAAS;IAC/B,6BAA6B,EAAE,SAAS;IACxC,0BAA0B,EAAE,SAAS;IACrC,wBAAwB,EAAE,SAAS;IACnC,oBAAoB,EAAE,SAAS;IAC/B,WAAW,EAAE,SAAS;IACtB,qBAAqB,EAAE,SAAS;CACjC,CAAC;AAYF;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,eAAgC;IAC/D,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1D,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,GAAG,MAAM,CAAC,OAAO,CACrD,eAAe,CAChB,CAAC,MAAM,CACN,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACjC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAClC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACpB;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACnB;QACD,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC,EACD,CAAC,EAAE,EAAE,EAAE,CAAgC,CACxC,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3C,qBAAM,CAAC,UAAU,CACf,yBAAW,CAAC,cAAc,CAAC,uBAAuB,CAAC,EACnD,2EAA2E,EAC3E;YACE,eAAe;SAChB,CACF,CAAC;KACH;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAOD;;;;;GAKG;AACH,MAAM,uBAAuB,GAAG,IAAA,gBAAM,EAAuB,CAAC,GAAG,EAAE,EAAE;IACnE,OAAO;QACL,eAAe,EAAE,EAAE;QACnB,kBAAkB,EAAE,CAAC,kBAAmC,EAAE,EAAE;YAC1D,MAAM,eAAe,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;YACpE,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,SAAgB,kBAAkB;IAChC,OAAO,uBAAuB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AACnE,CAAC;AAFD,gDAEC;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,QAAQ,GACqB;IAC7B,MAAM,kBAAkB,GAAG,uBAAuB,CAChD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,kBAAkB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEnC,0CAA0C;IAC1C,KAAK,CAAC,SAAS,CACb,GAAG,EAAE,CAAC,GAAG,EAAE;QACT,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,EACD,CAAC,kBAAkB,CAAC,CACrB,CAAC;IACF,OAAO,0CAAG,QAAQ,CAAI,CAAC;AACzB,CAAC;AAnBD,0DAmBC","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 Utilities\n */\n\nimport * as React from \"react\";\nimport { create } from \"zustand\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { useTransientState } from \"../widget-panels/useTransientState\";\nimport type { WidgetDef } from \"../widgets/WidgetDef\";\n\n/** List of known preview features. */\ninterface KnownPreviewFeatures {\n /** If true, the panels and tool settings will always be rendered over the content.\n * The content will never change size.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/672\n */\n contentAlwaysMaxSize: boolean;\n /** If true, the floating widget will have a \"maximize\" button. Use `enableMaximizedPanelWidget` to enable the feature for panel widgets.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/673\n */\n enableMaximizedFloatingWidget: boolean;\n /** If true, the panel widget will have a \"maximize\" button. Use `enableMaximizedFloatingWidget` to enable the feature for floating widgets.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/673\n */\n enableMaximizedPanelWidget: boolean;\n /** If true, the active tab of a dragged widget will become active when dropped in a container.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/679\n */\n activateDroppedTab: boolean;\n /** If true, the horizontal panels will have an additional \"Align\" button.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/706\n */\n horizontalPanelAlignment: boolean;\n /** If enabled, a dropdown menu will be rendered for widgets that exceed the specified threshold of title bar buttons.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/723\n */\n widgetActionDropdown: { threshold: number };\n /** If true, the [[Toolbar]] component will be replaced by a new iTwinUI based toolbar. */\n newToolbars: boolean;\n /** If `true`, popout widgets will not be rendered in a separate element tree, instead widget content will be re-parented to a popout content container.\n * Alternatively, an array of widget ids can be provided to only re-parent specific widgets.\n * @note Use {@link useTransientState} to save and restore DOM transient state when re-parenting widgets.\n * @note There is a known limitation where iTwinUI v2 popover elements will be rendered in the main window. Prefer using iTwinUI v3 when using this feature.\n */\n reparentPopoutWidgets: boolean | WidgetDef[\"id\"][];\n}\n\n/** Object used trim to only known features at runtime.\n * @internal\n */\nconst knownFeaturesObject: Record<keyof KnownPreviewFeatures, undefined> = {\n activateDroppedTab: undefined,\n contentAlwaysMaxSize: undefined,\n enableMaximizedFloatingWidget: undefined,\n enableMaximizedPanelWidget: undefined,\n horizontalPanelAlignment: undefined,\n widgetActionDropdown: undefined,\n newToolbars: undefined,\n reparentPopoutWidgets: undefined,\n};\n\n/** List of preview features that can be enabled/disabled.\n * This list is expected to change over time, the interface is made\n * so that new features can be added or removed without breaking existing code.\n * A console warning will simply appear if unknown features are passed.\n * @beta\n */\nexport interface PreviewFeatures extends Partial<KnownPreviewFeatures> {\n [featureName: string]: any;\n}\n\n/** Trim an object to only contain known feature keys.\n * @param previewFeatures object potentially containing unknown features\n * @returns object containing only known features\n * @internal\n */\nfunction trimToKnownFeaturesOnly(previewFeatures: PreviewFeatures) {\n const knownFeatureKeys = Object.keys(knownFeaturesObject);\n const [knownFeatures, unknownFeatures] = Object.entries(\n previewFeatures\n ).reduce(\n ([known, unknown], [key, value]) => {\n if (knownFeatureKeys.includes(key)) {\n known[key] = value;\n } else {\n unknown.push(key);\n }\n return [known, unknown];\n },\n [{}, []] as [PreviewFeatures, string[]]\n );\n if (Object.keys(unknownFeatures).length > 0) {\n Logger.logWarning(\n UiFramework.loggerCategory(trimToKnownFeaturesOnly),\n `Features used in \"setPreviewFeatures\" are unknown or no longer in preview`,\n {\n unknownFeatures,\n }\n );\n }\n return knownFeatures;\n}\n\ninterface PreviewFeaturesState {\n previewFeatures: PreviewFeatures;\n setPreviewFeatures: (previewFeatures: PreviewFeatures) => void;\n}\n\n/** Preview features store used by `UiFramework.previewFeatures` and `UiFramework.setPreviewFeatures()` APIs to manage the preview features.\n * Use `usePreviewFeatures` hook to access the preview features set from a react component.\n * Use `usePreviewFeaturesStore.getState().previewFeatures` to access the preview features set from a non-react component.\n * Use `usePreviewFeaturesStore.subscribe()` to subscribe to changes to the preview features set from a non-react component.\n * @internal\n */\nconst usePreviewFeaturesStore = create<PreviewFeaturesState>((set) => {\n return {\n previewFeatures: {},\n setPreviewFeatures: (newPreviewFeatures: PreviewFeatures) => {\n const previewFeatures = trimToKnownFeaturesOnly(newPreviewFeatures);\n set({ previewFeatures });\n },\n };\n});\n\n/** Hook to access the preview features set.\n * @internal\n */\nexport function usePreviewFeatures() {\n return usePreviewFeaturesStore((state) => state.previewFeatures);\n}\n\n/** Props for PreviewFeaturesProvider.\n * @beta\n */\nexport interface PreviewFeaturesProviderProps {\n children?: React.ReactNode;\n features?: PreviewFeatures;\n}\n\n/** Set which preview features are enabled. These features are not yet ready for production use nor have\n * a proper API defined yet.\n * The available set of features are defined in the [[PreviewFeatures]] interface.\n *\n * This component should wrap the Provider component.\n *\n * ```tsx\n * <PreviewFeaturesProvider features={{ enableMaximizedFloatingWidget: true }}>\n * <Provider store={UiFramework.store}>\n * [...]\n * <ConfigurableUIContent />\n * [/...]\n * </Provider>\n * </PreviewFeaturesProvider>\n * ```\n * @beta\n */\nexport function PreviewFeaturesProvider({\n children,\n features,\n}: PreviewFeaturesProviderProps) {\n const setPreviewFeatures = usePreviewFeaturesStore(\n (state) => state.setPreviewFeatures\n );\n React.useEffect(() => {\n setPreviewFeatures(features ?? {});\n }, [features, setPreviewFeatures]);\n\n // Clear preview features when unmounting.\n React.useEffect(\n () => () => {\n setPreviewFeatures({});\n },\n [setPreviewFeatures]\n );\n return <>{children}</>;\n}\n"]}
1
+ {"version":3,"file":"PreviewFeatures.js","sourceRoot":"","sources":["../../../../src/appui-react/preview/PreviewFeatures.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,qCAAiC;AACjC,sDAA6C;AAC7C,gDAA6C;AA+C7C;;GAEG;AACH,MAAM,mBAAmB,GAAkD;IACzE,kBAAkB,EAAE,SAAS;IAC7B,oBAAoB,EAAE,SAAS;IAC/B,6BAA6B,EAAE,SAAS;IACxC,0BAA0B,EAAE,SAAS;IACrC,wBAAwB,EAAE,SAAS;IACnC,oBAAoB,EAAE,SAAS;IAC/B,WAAW,EAAE,SAAS;IACtB,qBAAqB,EAAE,SAAS;CACjC,CAAC;AAYF;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,eAAgC;IAC/D,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1D,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,GAAG,MAAM,CAAC,OAAO,CACrD,eAAe,CAChB,CAAC,MAAM,CACN,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACjC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC,EACD,CAAC,EAAE,EAAE,EAAE,CAAgC,CACxC,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,qBAAM,CAAC,UAAU,CACf,yBAAW,CAAC,cAAc,CAAC,uBAAuB,CAAC,EACnD,2EAA2E,EAC3E;YACE,eAAe;SAChB,CACF,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAOD;;;;;GAKG;AACH,MAAM,uBAAuB,GAAG,IAAA,gBAAM,EAAuB,CAAC,GAAG,EAAE,EAAE;IACnE,OAAO;QACL,eAAe,EAAE,EAAE;QACnB,kBAAkB,EAAE,CAAC,kBAAmC,EAAE,EAAE;YAC1D,MAAM,eAAe,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;YACpE,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,SAAgB,kBAAkB;IAChC,OAAO,uBAAuB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AACnE,CAAC;AAFD,gDAEC;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,QAAQ,GACqB;IAC7B,MAAM,kBAAkB,GAAG,uBAAuB,CAChD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,kBAAkB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEnC,0CAA0C;IAC1C,KAAK,CAAC,SAAS,CACb,GAAG,EAAE,CAAC,GAAG,EAAE;QACT,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,EACD,CAAC,kBAAkB,CAAC,CACrB,CAAC;IACF,OAAO,0CAAG,QAAQ,CAAI,CAAC;AACzB,CAAC;AAnBD,0DAmBC","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 Utilities\n */\n\nimport * as React from \"react\";\nimport { create } from \"zustand\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { useTransientState } from \"../widget-panels/useTransientState\";\nimport type { WidgetDef } from \"../widgets/WidgetDef\";\n\n/** List of known preview features. */\ninterface KnownPreviewFeatures {\n /** If true, the panels and tool settings will always be rendered over the content.\n * The content will never change size.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/672\n */\n contentAlwaysMaxSize: boolean;\n /** If true, the floating widget will have a \"maximize\" button. Use `enableMaximizedPanelWidget` to enable the feature for panel widgets.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/673\n */\n enableMaximizedFloatingWidget: boolean;\n /** If true, the panel widget will have a \"maximize\" button. Use `enableMaximizedFloatingWidget` to enable the feature for floating widgets.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/673\n */\n enableMaximizedPanelWidget: boolean;\n /** If true, the active tab of a dragged widget will become active when dropped in a container.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/679\n */\n activateDroppedTab: boolean;\n /** If true, the horizontal panels will have an additional \"Align\" button.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/706\n */\n horizontalPanelAlignment: boolean;\n /** If enabled, a dropdown menu will be rendered for widgets that exceed the specified threshold of title bar buttons.\n *\n * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/723\n */\n widgetActionDropdown: { threshold: number };\n /** If true, the [[Toolbar]] component will be replaced by a new iTwinUI based toolbar. */\n newToolbars: boolean;\n /** If `true`, popout widgets will not be rendered in a separate element tree, instead widget content will be re-parented to a popout content container.\n * Alternatively, an array of widget ids can be provided to only re-parent specific widgets.\n * @note Use {@link useTransientState} to save and restore DOM transient state when re-parenting widgets.\n * @note There is a known limitation where iTwinUI v2 popover elements will be rendered in the main window. Prefer using iTwinUI v3 when using this feature.\n */\n reparentPopoutWidgets: boolean | WidgetDef[\"id\"][];\n}\n\n/** Object used trim to only known features at runtime.\n * @internal\n */\nconst knownFeaturesObject: Record<keyof KnownPreviewFeatures, undefined> = {\n activateDroppedTab: undefined,\n contentAlwaysMaxSize: undefined,\n enableMaximizedFloatingWidget: undefined,\n enableMaximizedPanelWidget: undefined,\n horizontalPanelAlignment: undefined,\n widgetActionDropdown: undefined,\n newToolbars: undefined,\n reparentPopoutWidgets: undefined,\n};\n\n/** List of preview features that can be enabled/disabled.\n * This list is expected to change over time, the interface is made\n * so that new features can be added or removed without breaking existing code.\n * A console warning will simply appear if unknown features are passed.\n * @beta\n */\nexport interface PreviewFeatures extends Partial<KnownPreviewFeatures> {\n [featureName: string]: any;\n}\n\n/** Trim an object to only contain known feature keys.\n * @param previewFeatures object potentially containing unknown features\n * @returns object containing only known features\n * @internal\n */\nfunction trimToKnownFeaturesOnly(previewFeatures: PreviewFeatures) {\n const knownFeatureKeys = Object.keys(knownFeaturesObject);\n const [knownFeatures, unknownFeatures] = Object.entries(\n previewFeatures\n ).reduce(\n ([known, unknown], [key, value]) => {\n if (knownFeatureKeys.includes(key)) {\n known[key] = value;\n } else {\n unknown.push(key);\n }\n return [known, unknown];\n },\n [{}, []] as [PreviewFeatures, string[]]\n );\n if (Object.keys(unknownFeatures).length > 0) {\n Logger.logWarning(\n UiFramework.loggerCategory(trimToKnownFeaturesOnly),\n `Features used in \"setPreviewFeatures\" are unknown or no longer in preview`,\n {\n unknownFeatures,\n }\n );\n }\n return knownFeatures;\n}\n\ninterface PreviewFeaturesState {\n previewFeatures: PreviewFeatures;\n setPreviewFeatures: (previewFeatures: PreviewFeatures) => void;\n}\n\n/** Preview features store used by `UiFramework.previewFeatures` and `UiFramework.setPreviewFeatures()` APIs to manage the preview features.\n * Use `usePreviewFeatures` hook to access the preview features set from a react component.\n * Use `usePreviewFeaturesStore.getState().previewFeatures` to access the preview features set from a non-react component.\n * Use `usePreviewFeaturesStore.subscribe()` to subscribe to changes to the preview features set from a non-react component.\n * @internal\n */\nconst usePreviewFeaturesStore = create<PreviewFeaturesState>((set) => {\n return {\n previewFeatures: {},\n setPreviewFeatures: (newPreviewFeatures: PreviewFeatures) => {\n const previewFeatures = trimToKnownFeaturesOnly(newPreviewFeatures);\n set({ previewFeatures });\n },\n };\n});\n\n/** Hook to access the preview features set.\n * @internal\n */\nexport function usePreviewFeatures() {\n return usePreviewFeaturesStore((state) => state.previewFeatures);\n}\n\n/** Props for PreviewFeaturesProvider.\n * @beta\n */\nexport interface PreviewFeaturesProviderProps {\n children?: React.ReactNode;\n features?: PreviewFeatures;\n}\n\n/** Set which preview features are enabled. These features are not yet ready for production use nor have\n * a proper API defined yet.\n * The available set of features are defined in the [[PreviewFeatures]] interface.\n *\n * This component should wrap the Provider component.\n *\n * ```tsx\n * <PreviewFeaturesProvider features={{ enableMaximizedFloatingWidget: true }}>\n * <Provider store={UiFramework.store}>\n * [...]\n * <ConfigurableUIContent />\n * [/...]\n * </Provider>\n * </PreviewFeaturesProvider>\n * ```\n * @beta\n */\nexport function PreviewFeaturesProvider({\n children,\n features,\n}: PreviewFeaturesProviderProps) {\n const setPreviewFeatures = usePreviewFeaturesStore(\n (state) => state.setPreviewFeatures\n );\n React.useEffect(() => {\n setPreviewFeatures(features ?? {});\n }, [features, setPreviewFeatures]);\n\n // Clear preview features when unmounting.\n React.useEffect(\n () => () => {\n setPreviewFeatures({});\n },\n [setPreviewFeatures]\n );\n return <>{children}</>;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"activateDroppedTab.js","sourceRoot":"","sources":["../../../../../src/appui-react/preview/activate-dropped-tab/activateDroppedTab.ts"],"names":[],"mappings":";;;AAAA;;;gGAGgG;AAChG,sDAA6C;AAG7C,gEAAgE;AAChE,uFAGwD;AAExD;;GAEG;AACI,MAAM,kBAAkB,GAC7B,CAAC,OAAoC,EAA+B,EAAE,CACtE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAChB,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE;QACzC,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC;QAE/B,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACrD,KAAK,GAAG,IAAA,yCAAoB,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;KAC9D;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE;QAC5C,MAAM,aAAa,GAAG,IAAA,mCAAc,EAAC,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAErE,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QAClE,KAAK,GAAG,IAAA,yCAAoB,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;KAC3E;SAAM;QACL,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KAChC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAnBS,QAAA,kBAAkB,sBAmB3B;AAEJ,SAAS,gBAAgB,CAAC,KAAoB,EAAE,kBAA0B;IACxE,MAAM,QAAQ,GAAG,IAAA,4BAAc,EAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAC3D,IAAA,qBAAM,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEnB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { assert } from \"@itwin/core-bentley\";\nimport type { NineZoneState } from \"../../layout/state/NineZoneState\";\nimport type { NineZoneStateReducer } from \"../../layout/state/NineZoneStateReducer\";\nimport { getTabLocation } from \"../../layout/state/TabLocation\";\nimport {\n getWidgetState,\n setWidgetActiveTabId,\n} from \"../../layout/state/internal/WidgetStateHelpers\";\n\n/** Reducer factory to activate tab of a dragged widget when dropped in a container.\n * @internal\n */\nexport const activateDroppedTab =\n (reducer: typeof NineZoneStateReducer): typeof NineZoneStateReducer =>\n (state, action) => {\n if (action.type === \"WIDGET_TAB_DRAG_END\") {\n const draggedTabId = action.id;\n\n state = reducer(state, action);\n const widget = getWidgetByTabId(state, draggedTabId);\n state = setWidgetActiveTabId(state, widget.id, draggedTabId);\n } else if (action.type === \"WIDGET_DRAG_END\") {\n const draggedWidget = getWidgetState(state, action.floatingWidgetId);\n\n state = reducer(state, action);\n const widget = getWidgetByTabId(state, draggedWidget.activeTabId);\n state = setWidgetActiveTabId(state, widget.id, draggedWidget.activeTabId);\n } else {\n state = reducer(state, action);\n }\n return state;\n };\n\nfunction getWidgetByTabId(state: NineZoneState, draggedWidgetTabId: string) {\n const location = getTabLocation(state, draggedWidgetTabId);\n assert(!!location);\n\n const widget = state.widgets[location.widgetId];\n return widget;\n}\n"]}
1
+ {"version":3,"file":"activateDroppedTab.js","sourceRoot":"","sources":["../../../../../src/appui-react/preview/activate-dropped-tab/activateDroppedTab.ts"],"names":[],"mappings":";;;AAAA;;;gGAGgG;AAChG,sDAA6C;AAG7C,gEAAgE;AAChE,uFAGwD;AAExD;;GAEG;AACI,MAAM,kBAAkB,GAC7B,CAAC,OAAoC,EAA+B,EAAE,CACtE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAChB,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC;QAE/B,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACrD,KAAK,GAAG,IAAA,yCAAoB,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,IAAA,mCAAc,EAAC,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAErE,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QAClE,KAAK,GAAG,IAAA,yCAAoB,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAnBS,QAAA,kBAAkB,sBAmB3B;AAEJ,SAAS,gBAAgB,CAAC,KAAoB,EAAE,kBAA0B;IACxE,MAAM,QAAQ,GAAG,IAAA,4BAAc,EAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAC3D,IAAA,qBAAM,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEnB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { assert } from \"@itwin/core-bentley\";\nimport type { NineZoneState } from \"../../layout/state/NineZoneState\";\nimport type { NineZoneStateReducer } from \"../../layout/state/NineZoneStateReducer\";\nimport { getTabLocation } from \"../../layout/state/TabLocation\";\nimport {\n getWidgetState,\n setWidgetActiveTabId,\n} from \"../../layout/state/internal/WidgetStateHelpers\";\n\n/** Reducer factory to activate tab of a dragged widget when dropped in a container.\n * @internal\n */\nexport const activateDroppedTab =\n (reducer: typeof NineZoneStateReducer): typeof NineZoneStateReducer =>\n (state, action) => {\n if (action.type === \"WIDGET_TAB_DRAG_END\") {\n const draggedTabId = action.id;\n\n state = reducer(state, action);\n const widget = getWidgetByTabId(state, draggedTabId);\n state = setWidgetActiveTabId(state, widget.id, draggedTabId);\n } else if (action.type === \"WIDGET_DRAG_END\") {\n const draggedWidget = getWidgetState(state, action.floatingWidgetId);\n\n state = reducer(state, action);\n const widget = getWidgetByTabId(state, draggedWidget.activeTabId);\n state = setWidgetActiveTabId(state, widget.id, draggedWidget.activeTabId);\n } else {\n state = reducer(state, action);\n }\n return state;\n };\n\nfunction getWidgetByTabId(state: NineZoneState, draggedWidgetTabId: string) {\n const location = getTabLocation(state, draggedWidgetTabId);\n assert(!!location);\n\n const widget = state.widgets[location.widgetId];\n return widget;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewHorizontalPanelAlign.js","sourceRoot":"","sources":["../../../../../src/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,sDAA6C;AAC7C,kDAAwD;AACxD,wDAA8D;AAC9D,4DAG0C;AAK1C,qEAAmF;AACnF,uDAA0D;AAC1D,2EAA4E;AAC5E,sFAAqF;AAErF,wDAAwD;AACxD,MAAM,iBAAiB,GAAG;IACxB,GAAG,EAAE,gCAAmB,CAAC,OAAO;IAChC,MAAM,EAAE,gCAAmB,CAAC,OAAO;CACpC,CAAC;AAEF,gBAAgB;AACH,QAAA,2BAA2B,GAAG,KAAK,CAAC,aAAa,CAS3D;IACD,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,iBAAiB;IAC7B,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;CACvB,CAAC,CAAC;AAEH;;GAEG;AACH,SAAgB,0CAA0C,CAAC,EACzD,OAAO,EACP,QAAQ,GAIT;IACC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAE/C;QACD,GAAG,EAAE,gCAAmB,CAAC,OAAO;QAChC,MAAM,EAAE,gCAAmB,CAAC,OAAO;KACpC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CACpC,CAAC,KAA4B,EAAE,SAA8B,EAAE,EAAE;QAC/D,IAAI,CAAC,KAAK,IAAI,CAAC,IAAA,6BAAqB,EAAC,KAAK,CAAC;YAAE,OAAO;QACpD,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvB,GAAG,IAAI;YACP,CAAC,KAAK,CAAC,EAAE,SAAS;SACnB,CAAC,CAAC,CAAC;IACN,CAAC,EACD,EAAE,CACH,CAAC;IACF,OAAO,CACL,oBAAC,mCAA2B,CAAC,QAAQ,IACnC,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB;YACpD,YAAY;SACb,IAEA,QAAQ,CAC4B,CACxC,CAAC;AACJ,CAAC;AAlCD,gGAkCC;AAED,SAAS,OAAO,CAAC,KAAoC;IACnD,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,2CAA2C,KAC5C,KAAK;QAET,8BAAM,CAAC,EAAC,+CAA+C,GAAG,CACtD,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAoC;IACtD,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,2CAA2C,KAC5C,KAAK;QAET,8BAAM,CAAC,EAAC,0DAA0D,GAAG,CACjE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAoC;IACrD,OAAO,CACL,6BACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,2CAA2C,KAC5C,KAAK;QAET,8BAAM,CAAC,EAAC,6DAA6D,GAAG,CACpE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,IAAyB,EAAE,SAA8B;IACxE,MAAM,MAAM,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3C,IAAI,SAAS,KAAK,gCAAmB,CAAC,OAAO;QAC3C,OAAO,oBAAC,UAAU,IAAC,SAAS,EAAE,YAAY,MAAM,GAAG,GAAI,CAAC;IAC1D,IAAI,SAAS,KAAK,gCAAmB,CAAC,MAAM;QAC1C,OAAO,oBAAC,SAAS,IAAC,SAAS,EAAE,YAAY,MAAM,GAAG,GAAI,CAAC;IACzD,MAAM,MAAM,GAAG,SAAS,KAAK,gCAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,OAAO,oBAAC,OAAO,IAAC,SAAS,EAAE,SAAS,MAAM,KAAK,MAAM,GAAG,GAAI,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,gBAAgB;AAChB,SAAgB,iCAAiC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAgB,CAAC,CAAC;IAChD,IAAA,qBAAM,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACf,IAAA,qBAAM,EAAC,IAAA,6BAAqB,EAAC,IAAI,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,UAAU,CACnD,mCAA2B,CAC5B,CAAC;IACF,MAAM,KAAK,GAAG,aAAa,CAAC;IAE5B,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,EAAE,CAC5C;QACE,gCAAmB,CAAC,OAAO;QAC3B,gCAAmB,CAAC,MAAM;QAC1B,gCAAmB,CAAC,IAAI;QACxB,gCAAmB,CAAC,KAAK;KAC1B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,OAAO,CACL,oBAAC,wBAAQ,IACP,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,GAAG,EAAE;gBACZ,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC1B,OAAO,EAAE,EAAE,CAAC;YACd,CAAC,EACD,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAC1B,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,KAAK,IAErC,UAAU,CAAC,KAAK,CAAC,CACT,CACZ,CAAC;IACJ,CAAC,CAAC,CAAC;IACL,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,wCAA2B,CAAC,CAAC;IACtE,IAAI,eAAe,KAAK,SAAS,EAAE;QACjC,OAAO,CACL,oBAAC,wBAAQ,IACP,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,EACrC,YAAY,EAAE,YAAY,EAAE,IAE3B,KAAK,CACG,CACZ,CAAC;KACH;IACD,OAAO,CACL,oBAAC,4BAAY,IAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;QACrD,oBAAC,qBAAY,IAAC,KAAK,EAAE,KAAK,IACvB,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CACnB,CACF,CAChB,CAAC;AACJ,CAAC;AAhDD,8EAgDC;AAED,gBAAgB;AAChB,SAAgB,6BAA6B;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAgB,CAAC,CAAC;IAChD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,mCAA2B,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAA,uCAAoB,GAAE,CAAC;IACnD,MAAM,iBAAiB,GAAG,IAAA,yCAAoB,GAAE,CAAC;IAEjD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,iBAAiB,GAAG,IAAA,6BAAqB,EAAC,IAAI,CAAC,CAAC;IACtD,OAAO,CACL,OAAO,IAAI,iBAAiB,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,CACxE,CAAC;AACJ,CAAC;AAXD,sEAWC","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 Widget\n */\n\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { HorizontalAlignment } from \"@itwin/core-react\";\nimport { DropdownMenu, MenuItem } from \"@itwin/itwinui-react\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n} from \"../../layout/widget-panels/Panel\";\nimport type {\n HorizontalPanelSide,\n PanelSide,\n} from \"../../layout/widget-panels/PanelTypes\";\nimport { WidgetActionDropdownContext } from \"../widget-action-dropdown/MoreButton\";\nimport { TabBarButton } from \"../../layout/widget/Button\";\nimport { useMainPanelWidgetId } from \"../../layout/widget/usePanelWidgetId\";\nimport { useIsMaximizedWidget } from \"../enable-maximized-widget/useMaximizedWidget\";\n\n/** Default value used when not provided or disabled. */\nconst defaultAlignments = {\n top: HorizontalAlignment.Justify,\n bottom: HorizontalAlignment.Justify,\n};\n\n/** @internal */\nexport const HorizontalPanelAlignContext = React.createContext<{\n enabled: boolean;\n alignments: {\n [side in HorizontalPanelSide]: HorizontalAlignment;\n };\n setAlignment: (\n panel: PanelSide | undefined,\n alignment: HorizontalAlignment\n ) => void;\n}>({\n enabled: false,\n alignments: defaultAlignments,\n setAlignment: () => {},\n});\n\n/** Preview horizontal panel alignment feature provider.\n * @internal\n */\nexport function PreviewHorizontalPanelAlignFeatureProvider({\n enabled,\n children,\n}: {\n enabled?: boolean;\n children?: React.ReactNode;\n}) {\n const [alignments, setAlignments] = React.useState<{\n [x in HorizontalPanelSide]: HorizontalAlignment;\n }>({\n top: HorizontalAlignment.Justify,\n bottom: HorizontalAlignment.Justify,\n });\n const setAlignment = React.useCallback(\n (panel: PanelSide | undefined, alignment: HorizontalAlignment) => {\n if (!panel || !isHorizontalPanelSide(panel)) return;\n setAlignments((prev) => ({\n ...prev,\n [panel]: alignment,\n }));\n },\n []\n );\n return (\n <HorizontalPanelAlignContext.Provider\n value={{\n enabled: !!enabled,\n alignments: enabled ? alignments : defaultAlignments,\n setAlignment,\n }}\n >\n {children}\n </HorizontalPanelAlignContext.Provider>\n );\n}\n\nfunction SvgSide(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm11 7H1V3h10v6Zm4 4h-3V3h3v10Z\" />\n </svg>\n );\n}\n\nfunction SvgJustify(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm4 7H1V3h3v6Zm1 0V3h6v6H5Zm10 0h-3V3h3v6Z\" />\n </svg>\n );\n}\n\nfunction SvgCenter(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm4 11H1V3h3v10Zm1-4V3h6v6H5Zm10 4h-3V3h3v10Z\" />\n </svg>\n );\n}\n\nfunction getIcon(side: HorizontalPanelSide, alignment: HorizontalAlignment) {\n const scaleY = side === \"top\" ? \"-1\" : \"1\";\n if (alignment === HorizontalAlignment.Justify)\n return <SvgJustify transform={`scale(1, ${scaleY})`} />;\n if (alignment === HorizontalAlignment.Center)\n return <SvgCenter transform={`scale(1, ${scaleY})`} />;\n const scaleX = alignment === HorizontalAlignment.Left ? \"1\" : \"-1\";\n return <SvgSide transform={`scale(${scaleX}, ${scaleY})`} />;\n}\n\nfunction capitalize(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n/** @internal */\nexport function PreviewHorizontalPanelAlignButton() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n assert(isHorizontalPanelSide(side));\n const { alignments, setAlignment } = React.useContext(\n HorizontalPanelAlignContext\n );\n const title = \"Align panel\";\n\n const getMenuItems = (onClose?: () => void) =>\n [\n HorizontalAlignment.Justify,\n HorizontalAlignment.Center,\n HorizontalAlignment.Left,\n HorizontalAlignment.Right,\n ].map((align) => {\n return (\n <MenuItem\n key={align}\n onClick={() => {\n setAlignment(side, align);\n onClose?.();\n }}\n icon={getIcon(side, align)}\n isSelected={alignments[side] === align}\n >\n {capitalize(align)}\n </MenuItem>\n );\n });\n const dropdownContext = React.useContext(WidgetActionDropdownContext);\n if (dropdownContext !== undefined) {\n return (\n <MenuItem\n icon={getIcon(side, alignments[side])}\n subMenuItems={getMenuItems()}\n >\n {title}\n </MenuItem>\n );\n }\n return (\n <DropdownMenu menuItems={(close) => getMenuItems(close)}>\n <TabBarButton title={title}>\n {getIcon(side, alignments[side])}\n </TabBarButton>\n </DropdownMenu>\n );\n}\n\n/** @internal */\nexport function useHorizontalPanelAlignButton() {\n const side = React.useContext(PanelSideContext);\n const { enabled } = React.useContext(HorizontalPanelAlignContext);\n const isMainPanelWidget = !!useMainPanelWidgetId();\n const isMaximizedWidget = useIsMaximizedWidget();\n\n if (!side) return false;\n const isHorizontalPanel = isHorizontalPanelSide(side);\n return (\n enabled && isHorizontalPanel && isMainPanelWidget && !isMaximizedWidget\n );\n}\n"]}
1
+ {"version":3,"file":"PreviewHorizontalPanelAlign.js","sourceRoot":"","sources":["../../../../../src/appui-react/preview/horizontal-panel-alignment/PreviewHorizontalPanelAlign.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 Widget\n */\n\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { HorizontalAlignment } from \"@itwin/core-react\";\nimport { DropdownMenu, MenuItem } from \"@itwin/itwinui-react\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n} from \"../../layout/widget-panels/Panel\";\nimport type {\n HorizontalPanelSide,\n PanelSide,\n} from \"../../layout/widget-panels/PanelTypes\";\nimport { WidgetActionDropdownContext } from \"../widget-action-dropdown/MoreButton\";\nimport { TabBarButton } from \"../../layout/widget/Button\";\nimport { useMainPanelWidgetId } from \"../../layout/widget/usePanelWidgetId\";\nimport { useIsMaximizedWidget } from \"../enable-maximized-widget/useMaximizedWidget\";\n\n/** Default value used when not provided or disabled. */\nconst defaultAlignments = {\n top: HorizontalAlignment.Justify,\n bottom: HorizontalAlignment.Justify,\n};\n\n/** @internal */\nexport const HorizontalPanelAlignContext = React.createContext<{\n enabled: boolean;\n alignments: {\n [side in HorizontalPanelSide]: HorizontalAlignment;\n };\n setAlignment: (\n panel: PanelSide | undefined,\n alignment: HorizontalAlignment\n ) => void;\n}>({\n enabled: false,\n alignments: defaultAlignments,\n setAlignment: () => {},\n});\n\n/** Preview horizontal panel alignment feature provider.\n * @internal\n */\nexport function PreviewHorizontalPanelAlignFeatureProvider({\n enabled,\n children,\n}: {\n enabled?: boolean;\n children?: React.ReactNode;\n}) {\n const [alignments, setAlignments] = React.useState<{\n [x in HorizontalPanelSide]: HorizontalAlignment;\n }>({\n top: HorizontalAlignment.Justify,\n bottom: HorizontalAlignment.Justify,\n });\n const setAlignment = React.useCallback(\n (panel: PanelSide | undefined, alignment: HorizontalAlignment) => {\n if (!panel || !isHorizontalPanelSide(panel)) return;\n setAlignments((prev) => ({\n ...prev,\n [panel]: alignment,\n }));\n },\n []\n );\n return (\n <HorizontalPanelAlignContext.Provider\n value={{\n enabled: !!enabled,\n alignments: enabled ? alignments : defaultAlignments,\n setAlignment,\n }}\n >\n {children}\n </HorizontalPanelAlignContext.Provider>\n );\n}\n\nfunction SvgSide(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm11 7H1V3h10v6Zm4 4h-3V3h3v10Z\" />\n </svg>\n );\n}\n\nfunction SvgJustify(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm4 7H1V3h3v6Zm1 0V3h6v6H5Zm10 0h-3V3h3v6Z\" />\n </svg>\n );\n}\n\nfunction SvgCenter(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1rem\"\n height=\"1rem\"\n viewBox=\"0 0 16 16\"\n fill=\"var(--iui-color-icon-muted, currentColor)\"\n {...props}\n >\n <path d=\"M0 2v12h16V2H0Zm4 11H1V3h3v10Zm1-4V3h6v6H5Zm10 4h-3V3h3v10Z\" />\n </svg>\n );\n}\n\nfunction getIcon(side: HorizontalPanelSide, alignment: HorizontalAlignment) {\n const scaleY = side === \"top\" ? \"-1\" : \"1\";\n if (alignment === HorizontalAlignment.Justify)\n return <SvgJustify transform={`scale(1, ${scaleY})`} />;\n if (alignment === HorizontalAlignment.Center)\n return <SvgCenter transform={`scale(1, ${scaleY})`} />;\n const scaleX = alignment === HorizontalAlignment.Left ? \"1\" : \"-1\";\n return <SvgSide transform={`scale(${scaleX}, ${scaleY})`} />;\n}\n\nfunction capitalize(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n/** @internal */\nexport function PreviewHorizontalPanelAlignButton() {\n const side = React.useContext(PanelSideContext);\n assert(!!side);\n assert(isHorizontalPanelSide(side));\n const { alignments, setAlignment } = React.useContext(\n HorizontalPanelAlignContext\n );\n const title = \"Align panel\";\n\n const getMenuItems = (onClose?: () => void) =>\n [\n HorizontalAlignment.Justify,\n HorizontalAlignment.Center,\n HorizontalAlignment.Left,\n HorizontalAlignment.Right,\n ].map((align) => {\n return (\n <MenuItem\n key={align}\n onClick={() => {\n setAlignment(side, align);\n onClose?.();\n }}\n icon={getIcon(side, align)}\n isSelected={alignments[side] === align}\n >\n {capitalize(align)}\n </MenuItem>\n );\n });\n const dropdownContext = React.useContext(WidgetActionDropdownContext);\n if (dropdownContext !== undefined) {\n return (\n <MenuItem\n icon={getIcon(side, alignments[side])}\n subMenuItems={getMenuItems()}\n >\n {title}\n </MenuItem>\n );\n }\n return (\n <DropdownMenu menuItems={(close) => getMenuItems(close)}>\n <TabBarButton title={title}>\n {getIcon(side, alignments[side])}\n </TabBarButton>\n </DropdownMenu>\n );\n}\n\n/** @internal */\nexport function useHorizontalPanelAlignButton() {\n const side = React.useContext(PanelSideContext);\n const { enabled } = React.useContext(HorizontalPanelAlignContext);\n const isMainPanelWidget = !!useMainPanelWidgetId();\n const isMaximizedWidget = useIsMaximizedWidget();\n\n if (!side) return false;\n const isHorizontalPanel = isHorizontalPanelSide(side);\n return (\n enabled && isHorizontalPanel && isMainPanelWidget && !isMaximizedWidget\n );\n}\n"]}