@itwin/appui-react 5.19.0 → 5.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/lib/appui-react/UiFramework.js +20 -13
- package/lib/appui-react/UiFramework.js.map +1 -1
- package/lib/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
- package/lib/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
- package/lib/appui-react/accudraw/AccuDrawWidget.js +1 -1
- package/lib/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
- package/lib/appui-react/accudraw/Calculator.js +92 -98
- package/lib/appui-react/accudraw/Calculator.js.map +1 -1
- package/lib/appui-react/accudraw/CalculatorEngine.js +130 -129
- package/lib/appui-react/accudraw/CalculatorEngine.js.map +1 -1
- package/lib/appui-react/accudraw/CalculatorPopup.js +9 -12
- package/lib/appui-react/accudraw/CalculatorPopup.js.map +1 -1
- package/lib/appui-react/accudraw/FrameworkAccuDraw.js +39 -38
- package/lib/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
- package/lib/appui-react/accudraw/MenuButton.js +20 -20
- package/lib/appui-react/accudraw/MenuButton.js.map +1 -1
- package/lib/appui-react/accudraw/MenuButtonPopup.js +9 -12
- package/lib/appui-react/accudraw/MenuButtonPopup.js.map +1 -1
- package/lib/appui-react/backstage/BackstageItemsManager.js +5 -5
- package/lib/appui-react/backstage/BackstageItemsManager.js.map +1 -1
- package/lib/appui-react/backstage/BackstageManager.js +1 -3
- package/lib/appui-react/backstage/BackstageManager.js.map +1 -1
- package/lib/appui-react/backstage/InternalBackstageManager.js +3 -5
- package/lib/appui-react/backstage/InternalBackstageManager.js.map +1 -1
- package/lib/appui-react/childwindow/InternalChildWindowManager.js +30 -32
- package/lib/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/appui-react/configurableui/ActivityTracker.js +33 -33
- package/lib/appui-react/configurableui/ActivityTracker.js.map +1 -1
- package/lib/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
- package/lib/appui-react/configurableui/ConfigurableUiControl.js +8 -0
- package/lib/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
- package/lib/appui-react/configurableui/InternalConfigurableUiManager.js +8 -8
- package/lib/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/appui-react/configurableui/TimeTracker.js +25 -27
- package/lib/appui-react/configurableui/TimeTracker.js.map +1 -1
- package/lib/appui-react/content/ContentControl.js +2 -1
- package/lib/appui-react/content/ContentControl.js.map +1 -1
- package/lib/appui-react/content/ContentGroup.js +8 -4
- package/lib/appui-react/content/ContentGroup.js.map +1 -1
- package/lib/appui-react/content/ContentLayout.js +47 -38
- package/lib/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/appui-react/content/IModelViewport.js +28 -23
- package/lib/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/appui-react/content/InternalContentLayoutManager.js +1 -1
- package/lib/appui-react/content/InternalContentLayoutManager.js.map +1 -1
- package/lib/appui-react/content/InternalContentViewManager.js +9 -8
- package/lib/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/appui-react/content/StandardContentLayouts.js +141 -141
- package/lib/appui-react/content/StandardContentLayouts.js.map +1 -1
- package/lib/appui-react/content/ViewportContentControl.js +25 -22
- package/lib/appui-react/content/ViewportContentControl.js.map +1 -1
- package/lib/appui-react/cursor/CursorInformation.js +7 -6
- package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
- package/lib/appui-react/cursor/cursorpopup/CursorPopup.js +9 -9
- package/lib/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
- package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +7 -7
- package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
- package/lib/appui-react/dialog/DialogManagerBase.js +18 -19
- package/lib/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/appui-react/dialog/InternalContentDialogManager.js +7 -7
- package/lib/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
- package/lib/appui-react/dialog/InternalModalDialogManager.js +4 -4
- package/lib/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
- package/lib/appui-react/dialog/InternalModelessDialogManager.js +6 -6
- package/lib/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
- package/lib/appui-react/dialog/ModelessDialog.js +3 -3
- package/lib/appui-react/dialog/ModelessDialog.js.map +1 -1
- package/lib/appui-react/feedback/ElementTooltip.js +3 -1
- package/lib/appui-react/feedback/ElementTooltip.js.map +1 -1
- package/lib/appui-react/feedback/ValidationTextbox.js +25 -25
- package/lib/appui-react/feedback/ValidationTextbox.js.map +1 -1
- package/lib/appui-react/framework/FrameworkFrontstages.d.ts +3 -2
- package/lib/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
- package/lib/appui-react/framework/FrameworkFrontstages.js.map +1 -1
- package/lib/appui-react/frontstage/FrontstageDef.js +28 -10
- package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/appui-react/frontstage/InternalFrontstageManager.js +96 -96
- package/lib/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
- package/lib/appui-react/frontstage/ModalFrontstage.js +5 -5
- package/lib/appui-react/frontstage/ModalFrontstage.js.map +1 -1
- package/lib/appui-react/frontstage/ModalSettingsStage.js +5 -4
- package/lib/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/appui-react/frontstage/StandardFrontstageProvider.js +1 -0
- package/lib/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +22 -22
- package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
- package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js +11 -9
- package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
- package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +17 -20
- package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
- package/lib/appui-react/layout/backstage/Backstage.js +11 -14
- package/lib/appui-react/layout/backstage/Backstage.js.map +1 -1
- package/lib/appui-react/layout/base/DragManager.js +6 -7
- package/lib/appui-react/layout/base/DragManager.js.map +1 -1
- package/lib/appui-react/layout/base/SafeAreaInsets.js +8 -8
- package/lib/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
- package/lib/appui-react/layout/popup/Tooltip.js +8 -11
- package/lib/appui-react/layout/popup/Tooltip.js.map +1 -1
- package/lib/appui-react/layout/widget/MenuTab.d.ts +3 -4
- package/lib/appui-react/layout/widget/MenuTab.d.ts.map +1 -1
- package/lib/appui-react/layout/widget/MenuTab.js +5 -7
- package/lib/appui-react/layout/widget/MenuTab.js.map +1 -1
- package/lib/appui-react/layout/widget/MenuTab.scss +4 -51
- package/lib/appui-react/layout/widget/Overflow.d.ts +2 -3
- package/lib/appui-react/layout/widget/Overflow.d.ts.map +1 -1
- package/lib/appui-react/layout/widget/Overflow.js +2 -2
- package/lib/appui-react/layout/widget/Overflow.js.map +1 -1
- package/lib/appui-react/layout/widget/Overflow.scss +0 -4
- package/lib/appui-react/layout/widget/Tab.d.ts +3 -6
- package/lib/appui-react/layout/widget/Tab.d.ts.map +1 -1
- package/lib/appui-react/layout/widget/Tab.js +8 -6
- package/lib/appui-react/layout/widget/Tab.js.map +1 -1
- package/lib/appui-react/layout/widget/Tabs.js +4 -3
- package/lib/appui-react/layout/widget/Tabs.js.map +1 -1
- package/lib/appui-react/messages/InputField.js +21 -24
- package/lib/appui-react/messages/InputField.js.map +1 -1
- package/lib/appui-react/messages/MessageManager.js +39 -38
- package/lib/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/appui-react/messages/Pointer.js +38 -38
- package/lib/appui-react/messages/Pointer.js.map +1 -1
- package/lib/appui-react/messages/ReactNotifyMessageDetails.js +6 -0
- package/lib/appui-react/messages/ReactNotifyMessageDetails.js.map +1 -1
- package/lib/appui-react/messages/StatusMessageManager.js +2 -4
- package/lib/appui-react/messages/StatusMessageManager.js.map +1 -1
- package/lib/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
- package/lib/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
- package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
- package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
- package/lib/appui-react/navigationaids/NavigationAidControl.js +1 -0
- package/lib/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
- package/lib/appui-react/navigationaids/SheetNavigationAid.js +55 -54
- package/lib/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
- package/lib/appui-react/navigationaids/SheetsModalFrontstage.js +22 -20
- package/lib/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
- package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +15 -14
- package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
- package/lib/appui-react/pickers/ListPicker.js +28 -28
- package/lib/appui-react/pickers/ListPicker.js.map +1 -1
- package/lib/appui-react/pickers/ViewSelector.js +87 -86
- package/lib/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/appui-react/popup/CardPopup.js +18 -21
- package/lib/appui-react/popup/CardPopup.js.map +1 -1
- package/lib/appui-react/popup/HTMLElementPopup.js +9 -12
- package/lib/appui-react/popup/HTMLElementPopup.js.map +1 -1
- package/lib/appui-react/popup/InputEditorPopup.js +18 -20
- package/lib/appui-react/popup/InputEditorPopup.js.map +1 -1
- package/lib/appui-react/popup/PopupManager.js +22 -25
- package/lib/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/appui-react/popup/ToolSettingsPopup.js +17 -17
- package/lib/appui-react/popup/ToolSettingsPopup.js.map +1 -1
- package/lib/appui-react/popup/ToolbarPopup.js +18 -21
- package/lib/appui-react/popup/ToolbarPopup.js.map +1 -1
- package/lib/appui-react/redux/ReducerRegistry.js +2 -0
- package/lib/appui-react/redux/ReducerRegistry.js.map +1 -1
- package/lib/appui-react/redux/StateManager.js +4 -1
- package/lib/appui-react/redux/StateManager.js.map +1 -1
- package/lib/appui-react/selection/HideIsolateEmphasizeManager.js +7 -3
- package/lib/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
- package/lib/appui-react/shared/ActionButtonItemDef.js +13 -6
- package/lib/appui-react/shared/ActionButtonItemDef.js.map +1 -1
- package/lib/appui-react/shared/CommandItemDef.js +3 -3
- package/lib/appui-react/shared/CommandItemDef.js.map +1 -1
- package/lib/appui-react/shared/CustomItemDef.js +4 -2
- package/lib/appui-react/shared/CustomItemDef.js.map +1 -1
- package/lib/appui-react/shared/ItemDefBase.js +13 -5
- package/lib/appui-react/shared/ItemDefBase.js.map +1 -1
- package/lib/appui-react/shared/MenuItem.js +6 -1
- package/lib/appui-react/shared/MenuItem.js.map +1 -1
- package/lib/appui-react/shared/ToolItemDef.js +1 -1
- package/lib/appui-react/shared/ToolItemDef.js.map +1 -1
- package/lib/appui-react/stagepanels/StagePanelDef.js +4 -3
- package/lib/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/appui-react/statusbar/StatusBarItemsManager.js +5 -5
- package/lib/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
- package/lib/appui-react/statusfields/ViewAttributes.js +16 -16
- package/lib/appui-react/statusfields/ViewAttributes.js.map +1 -1
- package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js +35 -33
- package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
- package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js +7 -0
- package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
- package/lib/appui-react/syncui/SyncUiEventDispatcher.js +4 -3
- package/lib/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
- package/lib/appui-react/timeline/AnalysisAnimationProvider.js +9 -8
- package/lib/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
- package/lib/appui-react/timeline/ScheduleAnimationProvider.js +13 -12
- package/lib/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
- package/lib/appui-react/timeline/SolarTimelineDataProvider.js +6 -5
- package/lib/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
- package/lib/appui-react/toolbar/GroupItem.js +11 -5
- package/lib/appui-react/toolbar/GroupItem.js.map +1 -1
- package/lib/appui-react/toolbar/ToolbarItemsManager.js +7 -7
- package/lib/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
- package/lib/appui-react/tools/FrameworkToolAdmin.js +5 -1
- package/lib/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
- package/lib/appui-react/tools/KeyinPaletteTools.js +2 -2
- package/lib/appui-react/tools/KeyinPaletteTools.js.map +1 -1
- package/lib/appui-react/tools/OpenSettingsTool.js +2 -2
- package/lib/appui-react/tools/OpenSettingsTool.js.map +1 -1
- package/lib/appui-react/tools/RestoreLayoutTool.js +4 -4
- package/lib/appui-react/tools/RestoreLayoutTool.js.map +1 -1
- package/lib/appui-react/tools/ToolSettingsTools.js +2 -2
- package/lib/appui-react/tools/ToolSettingsTools.js.map +1 -1
- package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js +15 -18
- package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
- package/lib/appui-react/toolsettings/InternalToolSettingsManager.js +8 -8
- package/lib/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
- package/lib/appui-react/toolsettings/ToolInformation.js +2 -0
- package/lib/appui-react/toolsettings/ToolInformation.js.map +1 -1
- package/lib/appui-react/toolsettings/ToolUiProvider.js +3 -0
- package/lib/appui-react/toolsettings/ToolUiProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js +1 -0
- package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js +2 -0
- package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/UiItemsManager.js +3 -3
- package/lib/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
- package/lib/appui-react/uiadmin/FrameworkUiAdmin.js +1 -4
- package/lib/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
- package/lib/appui-react/uiprovider/ComponentGenerator.js +2 -0
- package/lib/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
- package/lib/appui-react/uistate/AppUiSettings.js +41 -33
- package/lib/appui-react/uistate/AppUiSettings.js.map +1 -1
- package/lib/appui-react/utils/InternalUiShowHideManager.js +13 -14
- package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/appui-react/widget-panels/Tab.d.ts.map +1 -1
- package/lib/appui-react/widget-panels/Tab.js +2 -1
- package/lib/appui-react/widget-panels/Tab.js.map +1 -1
- package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js +2 -5
- package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
- package/lib/appui-react/widgets/WidgetControl.js +2 -0
- package/lib/appui-react/widgets/WidgetControl.js.map +1 -1
- package/lib/appui-react/widgets/WidgetDef.js +28 -7
- package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/appui-react/widgets/WidgetHost.js +4 -4
- package/lib/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/appui-react/widgets/WidgetManager.js +5 -7
- package/lib/appui-react/widgets/WidgetManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
- package/lib/cjs/appui-react/layout/widget/MenuTab.scss +4 -51
- package/lib/cjs/appui-react/layout/widget/Overflow.scss +0 -4
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
- package/lib/esm/appui-react/layout/widget/MenuTab.scss +4 -51
- package/lib/esm/appui-react/layout/widget/Overflow.scss +0 -4
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalculatorEngine.js","sourceRoot":"","sources":["../../../src/appui-react/accudraw/CalculatorEngine.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module AccuDraw\n */\n\n/** @internal */\nexport enum CalculatorOperator {\n None,\n Clear,\n ClearAll,\n Backspace,\n Add,\n Subtract,\n Multiply,\n Divide,\n NegPos,\n Decimal,\n Equals,\n}\n\n/** @internal */\nexport enum CalculatorKeyType {\n None,\n Operator,\n Equals,\n}\n\n/** @internal */\nexport class CalculatorEngine {\n private _displayValue: string = \"0\";\n private _operator?: CalculatorOperator;\n private _previousKeyType: CalculatorKeyType = CalculatorKeyType.None;\n private _firstValue: string = \"\";\n private _modValue: string = \"\";\n\n constructor() {\n this.clearAll();\n }\n\n public clearAll(): void {\n this._displayValue = \"0\";\n this._previousKeyType = CalculatorKeyType.None;\n this._firstValue = \"\";\n this._modValue = \"\";\n this._operator = undefined;\n }\n\n public get result(): number {\n return parseFloat(this._displayValue);\n }\n\n public get displayValue(): string {\n return this._displayValue;\n }\n\n public processValue(value: string): string {\n let resultString: string;\n\n if (\n this._displayValue === \"0\" ||\n this._previousKeyType === CalculatorKeyType.Operator ||\n this._previousKeyType === CalculatorKeyType.Equals\n ) {\n resultString = value;\n } else {\n resultString = this._displayValue + value;\n }\n\n this._displayValue = resultString;\n this._previousKeyType = CalculatorKeyType.None;\n\n return resultString;\n }\n\n public processOperator(operator: CalculatorOperator): string {\n const displayedNum = this._displayValue;\n const resultString = this._createResultString(operator, displayedNum);\n\n this._displayValue = resultString;\n\n this._updateCalculatorState(operator, resultString, displayedNum);\n\n return resultString;\n }\n\n private _createResultString = (\n operator: CalculatorOperator,\n displayedNum: string\n ) => {\n let resultString = displayedNum;\n\n if (this._isMathOperator(operator)) {\n const firstValue = this._firstValue;\n const savedOperator = this._operator;\n\n resultString =\n firstValue &&\n savedOperator &&\n this._previousKeyType !== CalculatorKeyType.Operator &&\n this._previousKeyType !== CalculatorKeyType.Equals\n ? this._calculate(firstValue, savedOperator, displayedNum)\n : displayedNum;\n } else {\n switch (operator) {\n case CalculatorOperator.Clear:\n resultString = \"0\";\n break;\n\n case CalculatorOperator.ClearAll:\n resultString = \"0\";\n break;\n\n case CalculatorOperator.Backspace:\n resultString = resultString.slice(0, -1);\n if (resultString.length === 0) resultString = \"0\";\n break;\n\n case CalculatorOperator.Decimal:\n if (!resultString.includes(\".\")) resultString = `${displayedNum}.`;\n else if (\n this._previousKeyType === CalculatorKeyType.Operator ||\n this._previousKeyType === CalculatorKeyType.Equals\n )\n resultString = \"0.\";\n break;\n\n case CalculatorOperator.NegPos:\n if (displayedNum.length > 0 && displayedNum[0] === \"-\")\n resultString = displayedNum.substring(1);\n else resultString = `-${displayedNum}`;\n break;\n\n case CalculatorOperator.Equals: {\n const firstValue = this._firstValue;\n const savedOperator = this._operator;\n const modValue = this._modValue;\n\n if (firstValue && savedOperator) {\n resultString =\n this._previousKeyType === CalculatorKeyType.Equals\n ? this._calculate(displayedNum, savedOperator, modValue)\n : this._calculate(firstValue, savedOperator, displayedNum);\n } else {\n resultString = displayedNum;\n }\n break;\n }\n }\n }\n\n return resultString;\n };\n\n private _isMathOperator = (operator: CalculatorOperator): boolean => {\n switch (operator) {\n case CalculatorOperator.Add:\n case CalculatorOperator.Subtract:\n case CalculatorOperator.Multiply:\n case CalculatorOperator.Divide:\n return true;\n }\n return false;\n };\n\n private _calculate = (\n n1Str: string,\n operator: CalculatorOperator,\n n2Str: string\n ): string => {\n let result = 0;\n const n1 = parseFloat(n1Str);\n const n2 = parseFloat(n2Str);\n\n switch (operator) {\n case CalculatorOperator.Add:\n result = n1 + n2;\n break;\n case CalculatorOperator.Subtract:\n result = n1 - n2;\n break;\n case CalculatorOperator.Multiply:\n result = n1 * n2;\n break;\n case CalculatorOperator.Divide:\n const displayValue = n2;\n if (displayValue !== 0) result = n1 / displayValue;\n else result = 0;\n break;\n }\n\n return result.toString();\n };\n\n private _updateCalculatorState = (\n operator: CalculatorOperator,\n resultString: string,\n displayedNum: string\n ): void => {\n let keyType = CalculatorKeyType.None;\n\n if (this._isMathOperator(operator)) {\n if (\n this._firstValue &&\n this._operator &&\n this._previousKeyType === CalculatorKeyType.None\n ) {\n this._firstValue = resultString;\n } else {\n this._firstValue = displayedNum;\n }\n\n this._operator = operator;\n keyType = CalculatorKeyType.Operator;\n } else {\n switch (operator) {\n case CalculatorOperator.ClearAll:\n this.clearAll();\n break;\n\n case CalculatorOperator.Equals: {\n let secondValue = displayedNum;\n\n if (this._firstValue) {\n if (this._previousKeyType === CalculatorKeyType.Equals) {\n secondValue = this._modValue;\n }\n }\n\n this._modValue = secondValue;\n\n keyType = CalculatorKeyType.Equals;\n }\n }\n }\n\n this._previousKeyType = keyType;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CalculatorEngine.js","sourceRoot":"","sources":["../../../src/appui-react/accudraw/CalculatorEngine.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module AccuDraw\n */\n\n/** @internal */\nexport enum CalculatorOperator {\n None,\n Clear,\n ClearAll,\n Backspace,\n Add,\n Subtract,\n Multiply,\n Divide,\n NegPos,\n Decimal,\n Equals,\n}\n\n/** @internal */\nexport enum CalculatorKeyType {\n None,\n Operator,\n Equals,\n}\n\n/** @internal */\nexport class CalculatorEngine {\n private _displayValue: string = \"0\";\n private _operator?: CalculatorOperator;\n private _previousKeyType: CalculatorKeyType = CalculatorKeyType.None;\n private _firstValue: string = \"\";\n private _modValue: string = \"\";\n\n constructor() {\n this.clearAll();\n }\n\n public clearAll(): void {\n this._displayValue = \"0\";\n this._previousKeyType = CalculatorKeyType.None;\n this._firstValue = \"\";\n this._modValue = \"\";\n this._operator = undefined;\n }\n\n public get result(): number {\n return parseFloat(this._displayValue);\n }\n\n public get displayValue(): string {\n return this._displayValue;\n }\n\n public processValue(value: string): string {\n let resultString: string;\n\n if (\n this._displayValue === \"0\" ||\n this._previousKeyType === CalculatorKeyType.Operator ||\n this._previousKeyType === CalculatorKeyType.Equals\n ) {\n resultString = value;\n } else {\n resultString = this._displayValue + value;\n }\n\n this._displayValue = resultString;\n this._previousKeyType = CalculatorKeyType.None;\n\n return resultString;\n }\n\n public processOperator(operator: CalculatorOperator): string {\n const displayedNum = this._displayValue;\n const resultString = this._createResultString(operator, displayedNum);\n\n this._displayValue = resultString;\n\n this._updateCalculatorState(operator, resultString, displayedNum);\n\n return resultString;\n }\n\n private _createResultString = (\n operator: CalculatorOperator,\n displayedNum: string\n ) => {\n let resultString = displayedNum;\n\n if (this._isMathOperator(operator)) {\n const firstValue = this._firstValue;\n const savedOperator = this._operator;\n\n resultString =\n firstValue &&\n savedOperator &&\n this._previousKeyType !== CalculatorKeyType.Operator &&\n this._previousKeyType !== CalculatorKeyType.Equals\n ? this._calculate(firstValue, savedOperator, displayedNum)\n : displayedNum;\n } else {\n switch (operator) {\n case CalculatorOperator.Clear:\n resultString = \"0\";\n break;\n\n case CalculatorOperator.ClearAll:\n resultString = \"0\";\n break;\n\n case CalculatorOperator.Backspace:\n resultString = resultString.slice(0, -1);\n if (resultString.length === 0) resultString = \"0\";\n break;\n\n case CalculatorOperator.Decimal:\n if (!resultString.includes(\".\")) resultString = `${displayedNum}.`;\n else if (\n this._previousKeyType === CalculatorKeyType.Operator ||\n this._previousKeyType === CalculatorKeyType.Equals\n )\n resultString = \"0.\";\n break;\n\n case CalculatorOperator.NegPos:\n if (displayedNum.length > 0 && displayedNum[0] === \"-\")\n resultString = displayedNum.substring(1);\n else resultString = `-${displayedNum}`;\n break;\n\n case CalculatorOperator.Equals: {\n const firstValue = this._firstValue;\n const savedOperator = this._operator;\n const modValue = this._modValue;\n\n if (firstValue && savedOperator) {\n resultString =\n this._previousKeyType === CalculatorKeyType.Equals\n ? this._calculate(displayedNum, savedOperator, modValue)\n : this._calculate(firstValue, savedOperator, displayedNum);\n } else {\n resultString = displayedNum;\n }\n break;\n }\n }\n }\n\n return resultString;\n };\n\n private _isMathOperator = (operator: CalculatorOperator): boolean => {\n switch (operator) {\n case CalculatorOperator.Add:\n case CalculatorOperator.Subtract:\n case CalculatorOperator.Multiply:\n case CalculatorOperator.Divide:\n return true;\n }\n return false;\n };\n\n private _calculate = (\n n1Str: string,\n operator: CalculatorOperator,\n n2Str: string\n ): string => {\n let result = 0;\n const n1 = parseFloat(n1Str);\n const n2 = parseFloat(n2Str);\n\n switch (operator) {\n case CalculatorOperator.Add:\n result = n1 + n2;\n break;\n case CalculatorOperator.Subtract:\n result = n1 - n2;\n break;\n case CalculatorOperator.Multiply:\n result = n1 * n2;\n break;\n case CalculatorOperator.Divide:\n const displayValue = n2;\n if (displayValue !== 0) result = n1 / displayValue;\n else result = 0;\n break;\n }\n\n return result.toString();\n };\n\n private _updateCalculatorState = (\n operator: CalculatorOperator,\n resultString: string,\n displayedNum: string\n ): void => {\n let keyType = CalculatorKeyType.None;\n\n if (this._isMathOperator(operator)) {\n if (\n this._firstValue &&\n this._operator &&\n this._previousKeyType === CalculatorKeyType.None\n ) {\n this._firstValue = resultString;\n } else {\n this._firstValue = displayedNum;\n }\n\n this._operator = operator;\n keyType = CalculatorKeyType.Operator;\n } else {\n switch (operator) {\n case CalculatorOperator.ClearAll:\n this.clearAll();\n break;\n\n case CalculatorOperator.Equals: {\n let secondValue = displayedNum;\n\n if (this._firstValue) {\n if (this._previousKeyType === CalculatorKeyType.Equals) {\n secondValue = this._modValue;\n }\n }\n\n this._modValue = secondValue;\n\n keyType = CalculatorKeyType.Equals;\n }\n }\n }\n\n this._previousKeyType = keyType;\n };\n}\n"]}
|
|
@@ -15,18 +15,15 @@ import { Calculator } from "./Calculator.js";
|
|
|
15
15
|
* @deprecated in 4.16.0. Use {@link Calculator} component with {@link https://itwinui.bentley.com/docs/popover iTwinUI Popover} or {@link AccuDrawPopupManager.showCalculator} method instead.
|
|
16
16
|
*/
|
|
17
17
|
export class CalculatorPopup extends React.PureComponent {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.setState({ size: newSize });
|
|
28
|
-
};
|
|
29
|
-
}
|
|
18
|
+
state = {
|
|
19
|
+
size: { width: -1, height: -1 },
|
|
20
|
+
};
|
|
21
|
+
_onSizeKnown = (newSize) => {
|
|
22
|
+
if (newSize.height === this.state.size.height &&
|
|
23
|
+
newSize.width === this.state.size.width)
|
|
24
|
+
return;
|
|
25
|
+
this.setState({ size: newSize });
|
|
26
|
+
};
|
|
30
27
|
render() {
|
|
31
28
|
const point = PopupManager.getPopupPosition(this.props.el, this.props.pt, this.props.offset, this.state.size);
|
|
32
29
|
return (React.createElement(PositionPopup, { key: this.props.id, point: point, className: "uifw-calculator-host", onSizeKnown: this._onSizeKnown },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalculatorPopup.js","sourceRoot":"","sources":["../../../src/appui-react/accudraw/CalculatorPopup.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAmB7C;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK,CAAC,aAI1C;
|
|
1
|
+
{"version":3,"file":"CalculatorPopup.js","sourceRoot":"","sources":["../../../src/appui-react/accudraw/CalculatorPopup.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAmB7C;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK,CAAC,aAI1C;IAC0B,KAAK,GAAG;QAC/B,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;KAChC,CAAC;IAEM,YAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;QAC5C,IACE,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;YACzC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;YAEvC,OAAO;QACT,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC;IAEc,MAAM;QACpB,MAAM,KAAK,GAAG,YAAY,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;QACF,OAAO,CACL,oBAAC,aAAa,IACZ,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAClB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAC,sBAAsB,EAChC,WAAW,EAAE,IAAI,CAAC,YAAY;YAG9B,oBAAC,mBAAmB,IAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACtD,oBAAC,oBAAoB;oBACnB,oBAAC,UAAU,IACT,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACrC,UAAU;wBACR,4DAA4D;wBAC5D,oBAAC,IAAI,IAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAI,EAE3C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAC7B,CACmB,CACH,CACR,CACjB,CAAC;IACJ,CAAC;CACF","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 AccuDraw\n */\n\nimport * as React from \"react\";\nimport type { OnCancelFunc, OnNumberCommitFunc } from \"@itwin/appui-abstract\";\nimport { DivWithOutsideClick, Icon } from \"@itwin/core-react\";\nimport type { PopupPropsBase } from \"../popup/PopupManager.js\";\nimport { PopupManager } from \"../popup/PopupManager.js\";\nimport { PositionPopup, PositionPopupContent } from \"../popup/PositionPopup.js\";\nimport { Calculator } from \"./Calculator.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\nimport { AccuDrawPopupManager } from \"./AccuDrawPopupManager.js\";\n\n/**\n * @public\n * @deprecated in 4.16.0. Props of deprecated component {@link CalculatorPopup}.\n */\nexport interface CalculatorPopupProps extends PopupPropsBase {\n initialValue: number;\n resultIcon: string;\n onOk: OnNumberCommitFunc;\n onCancel: OnCancelFunc;\n}\n\ninterface CalculatorPopupState {\n size: SizeProps;\n}\n\n/** Popup component for Calculator\n * @public\n * @deprecated in 4.16.0. Use {@link Calculator} component with {@link https://itwinui.bentley.com/docs/popover iTwinUI Popover} or {@link AccuDrawPopupManager.showCalculator} method instead.\n */\nexport class CalculatorPopup extends React.PureComponent<\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n CalculatorPopupProps,\n CalculatorPopupState\n> {\n public override readonly state = {\n size: { width: -1, height: -1 },\n };\n\n private _onSizeKnown = (newSize: SizeProps) => {\n if (\n newSize.height === this.state.size.height &&\n newSize.width === this.state.size.width\n )\n return;\n this.setState({ size: newSize });\n };\n\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 return (\n <PositionPopup\n key={this.props.id}\n point={point}\n className=\"uifw-calculator-host\"\n onSizeKnown={this._onSizeKnown}\n >\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <DivWithOutsideClick onOutsideClick={this.props.onCancel}>\n <PositionPopupContent>\n <Calculator\n initialValue={this.props.initialValue}\n resultIcon={\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <Icon iconSpec={this.props.resultIcon} />\n }\n onOk={this.props.onOk}\n onCancel={this.props.onCancel}\n />\n </PositionPopupContent>\n </DivWithOutsideClick>\n </PositionPopup>\n );\n }\n}\n"]}
|
|
@@ -84,6 +84,41 @@ export class AccuDrawUiSettingsChangedEvent extends BeUiEvent {
|
|
|
84
84
|
* @public
|
|
85
85
|
*/
|
|
86
86
|
export class FrameworkAccuDraw extends AccuDraw {
|
|
87
|
+
static _displayNotifications = false;
|
|
88
|
+
static _uiSettings;
|
|
89
|
+
static _settingsNamespace = "AppUiSettings";
|
|
90
|
+
static _notificationsKey = "AccuDrawNotifications";
|
|
91
|
+
providerId = "FrameworkAccuDraw";
|
|
92
|
+
/** AccuDraw Set Field Focus event. */
|
|
93
|
+
static onAccuDrawSetFieldFocusEvent = new AccuDrawSetFieldFocusEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
94
|
+
/** AccuDraw Set Field Value to Ui event. */
|
|
95
|
+
static onAccuDrawSetFieldValueToUiEvent = new AccuDrawSetFieldValueToUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
96
|
+
/** AccuDraw Set Field Value from Ui event. */
|
|
97
|
+
static onAccuDrawSetFieldValueFromUiEvent = new AccuDrawSetFieldValueFromUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
98
|
+
/** AccuDraw Set Field Lock event. */
|
|
99
|
+
static onAccuDrawSetFieldLockEvent = new AccuDrawSetFieldLockEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
100
|
+
/** AccuDraw Set Mode event. */
|
|
101
|
+
static onAccuDrawSetCompassModeEvent = new AccuDrawSetCompassModeEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
102
|
+
/** AccuDraw Grab Input Focus event. */
|
|
103
|
+
static onAccuDrawGrabInputFocusEvent = new AccuDrawGrabInputFocusEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
104
|
+
/** Determines if AccuDraw.rotationMode === RotationMode.Top */
|
|
105
|
+
static isTopRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Top, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
106
|
+
/** Determines if AccuDraw.rotationMode === RotationMode.Front */
|
|
107
|
+
static isFrontRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Front, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
108
|
+
/** Determines if AccuDraw.rotationMode === RotationMode.Side */
|
|
109
|
+
static isSideRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Side, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
110
|
+
/** Determines if AccuDraw.rotationMode === RotationMode.View */
|
|
111
|
+
static isViewRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.View, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
112
|
+
/** Determines if AccuDraw.rotationMode === RotationMode.ACS */
|
|
113
|
+
static isACSRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.ACS, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
114
|
+
/** Determines if AccuDraw.rotationMode === RotationMode.Context */
|
|
115
|
+
static isContextRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Context, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
116
|
+
/** Determines if AccuDraw.compassMode === CompassMode.Polar */
|
|
117
|
+
static isPolarModeConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.compassMode === CompassMode.Polar, [SyncUiEventId.AccuDrawCompassModeChanged]);
|
|
118
|
+
/** Determines if AccuDraw.compassMode === CompassMode.Rectangular */
|
|
119
|
+
static isRectangularModeConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.compassMode === CompassMode.Rectangular, [SyncUiEventId.AccuDrawCompassModeChanged]);
|
|
120
|
+
/** AccuDraw Grab Input Focus event. */
|
|
121
|
+
static onAccuDrawUiSettingsChangedEvent = new AccuDrawUiSettingsChangedEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
87
122
|
/** Determines if notifications should be displayed for AccuDraw changes */
|
|
88
123
|
static get displayNotifications() {
|
|
89
124
|
return FrameworkAccuDraw._displayNotifications;
|
|
@@ -108,14 +143,13 @@ export class FrameworkAccuDraw extends AccuDraw {
|
|
|
108
143
|
}
|
|
109
144
|
constructor() {
|
|
110
145
|
super();
|
|
111
|
-
this.providerId = "FrameworkAccuDraw";
|
|
112
|
-
this.handleSetFieldValueFromUiEvent = async (args // eslint-disable-line @typescript-eslint/no-deprecated
|
|
113
|
-
) => {
|
|
114
|
-
return this.processFieldInput(args.field, args.stringValue, false);
|
|
115
|
-
};
|
|
116
146
|
FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.addListener(this.handleSetFieldValueFromUiEvent);
|
|
117
147
|
UiFramework.registerUserSettingsProvider(this);
|
|
118
148
|
}
|
|
149
|
+
handleSetFieldValueFromUiEvent = async (args // eslint-disable-line @typescript-eslint/no-deprecated
|
|
150
|
+
) => {
|
|
151
|
+
return this.processFieldInput(args.field, args.stringValue, false);
|
|
152
|
+
};
|
|
119
153
|
onCompassModeChange() {
|
|
120
154
|
FrameworkAccuDraw.onAccuDrawSetCompassModeEvent.emit({
|
|
121
155
|
mode: this.compassMode,
|
|
@@ -224,37 +258,4 @@ export class FrameworkAccuDraw extends AccuDraw {
|
|
|
224
258
|
}
|
|
225
259
|
}
|
|
226
260
|
}
|
|
227
|
-
FrameworkAccuDraw._displayNotifications = false;
|
|
228
|
-
FrameworkAccuDraw._settingsNamespace = "AppUiSettings";
|
|
229
|
-
FrameworkAccuDraw._notificationsKey = "AccuDrawNotifications";
|
|
230
|
-
/** AccuDraw Set Field Focus event. */
|
|
231
|
-
FrameworkAccuDraw.onAccuDrawSetFieldFocusEvent = new AccuDrawSetFieldFocusEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
232
|
-
/** AccuDraw Set Field Value to Ui event. */
|
|
233
|
-
FrameworkAccuDraw.onAccuDrawSetFieldValueToUiEvent = new AccuDrawSetFieldValueToUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
234
|
-
/** AccuDraw Set Field Value from Ui event. */
|
|
235
|
-
FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent = new AccuDrawSetFieldValueFromUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
236
|
-
/** AccuDraw Set Field Lock event. */
|
|
237
|
-
FrameworkAccuDraw.onAccuDrawSetFieldLockEvent = new AccuDrawSetFieldLockEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
238
|
-
/** AccuDraw Set Mode event. */
|
|
239
|
-
FrameworkAccuDraw.onAccuDrawSetCompassModeEvent = new AccuDrawSetCompassModeEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
240
|
-
/** AccuDraw Grab Input Focus event. */
|
|
241
|
-
FrameworkAccuDraw.onAccuDrawGrabInputFocusEvent = new AccuDrawGrabInputFocusEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
242
|
-
/** Determines if AccuDraw.rotationMode === RotationMode.Top */
|
|
243
|
-
FrameworkAccuDraw.isTopRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Top, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
244
|
-
/** Determines if AccuDraw.rotationMode === RotationMode.Front */
|
|
245
|
-
FrameworkAccuDraw.isFrontRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Front, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
246
|
-
/** Determines if AccuDraw.rotationMode === RotationMode.Side */
|
|
247
|
-
FrameworkAccuDraw.isSideRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Side, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
248
|
-
/** Determines if AccuDraw.rotationMode === RotationMode.View */
|
|
249
|
-
FrameworkAccuDraw.isViewRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.View, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
250
|
-
/** Determines if AccuDraw.rotationMode === RotationMode.ACS */
|
|
251
|
-
FrameworkAccuDraw.isACSRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.ACS, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
252
|
-
/** Determines if AccuDraw.rotationMode === RotationMode.Context */
|
|
253
|
-
FrameworkAccuDraw.isContextRotationConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.rotationMode === RotationMode.Context, [SyncUiEventId.AccuDrawRotationChanged]);
|
|
254
|
-
/** Determines if AccuDraw.compassMode === CompassMode.Polar */
|
|
255
|
-
FrameworkAccuDraw.isPolarModeConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.compassMode === CompassMode.Polar, [SyncUiEventId.AccuDrawCompassModeChanged]);
|
|
256
|
-
/** Determines if AccuDraw.compassMode === CompassMode.Rectangular */
|
|
257
|
-
FrameworkAccuDraw.isRectangularModeConditional = new ConditionalBooleanValue(() => IModelApp.accuDraw.compassMode === CompassMode.Rectangular, [SyncUiEventId.AccuDrawCompassModeChanged]);
|
|
258
|
-
/** AccuDraw Grab Input Focus event. */
|
|
259
|
-
FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent = new AccuDrawUiSettingsChangedEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
260
261
|
//# sourceMappingURL=FrameworkAccuDraw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameworkAccuDraw.js","sourceRoot":"","sources":["../../../src/appui-react/accudraw/FrameworkAccuDraw.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module AccuDraw\n */\n\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { BeButtonEvent } from \"@itwin/core-frontend\";\nimport {\n AccuDraw,\n CompassMode,\n IModelApp,\n ItemField,\n NotifyMessageDetails,\n OutputMessagePriority,\n QuantityType,\n RotationMode,\n} from \"@itwin/core-frontend\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { UserSettingsProvider } from \"../UiFramework.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher.js\";\nimport type { AccuDrawUiSettings } from \"./AccuDrawUiSettings.js\";\nimport type { UiStateStorage } from \"../uistate/UiStateStorage.js\";\nimport { UiStateStorageStatus } from \"../uistate/UiStateStorage.js\";\nimport { SyncUiEventId } from \"../syncui/UiSyncEvent.js\";\nimport { useAccuDrawStore } from \"./AccuDrawStore.js\";\n\nconst compassModeToKeyMap = new Map<CompassMode, string>([\n [CompassMode.Polar, \"polar\"],\n [CompassMode.Rectangular, \"rectangular\"],\n]);\n\nconst rotationModeToKeyMap = new Map<RotationMode, string>([\n [RotationMode.Top, \"top\"],\n [RotationMode.Front, \"front\"],\n [RotationMode.Side, \"side\"],\n [RotationMode.View, \"view\"],\n [RotationMode.ACS, \"ACS\"],\n [RotationMode.Context, \"context\"],\n]);\n\n/** Arguments for [[AccuDrawSetFieldFocusEvent]]\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldFocusEventArgs {\n field: ItemField;\n}\n\n/** AccuDraw Set Field Focus event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class AccuDrawSetFieldFocusEvent extends BeUiEvent<AccuDrawSetFieldFocusEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueToUiEvent]]\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldValueToUiEventArgs {\n field: ItemField;\n value: number;\n formattedValue: string;\n}\n\n/** AccuDraw Set Field Value to Ui event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class AccuDrawSetFieldValueToUiEvent extends BeUiEvent<AccuDrawSetFieldValueToUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueFromUiEvent]]\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldValueFromUiEventArgs {\n field: ItemField;\n stringValue: string;\n}\n\n/** AccuDraw Set Field Value from Ui event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class AccuDrawSetFieldValueFromUiEvent extends BeUiEvent<AccuDrawSetFieldValueFromUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldLockEvent]]\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldLockEventArgs {\n field: ItemField;\n lock: boolean;\n}\n\n/** AccuDraw Set Field Lock event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class AccuDrawSetFieldLockEvent extends BeUiEvent<AccuDrawSetFieldLockEventArgs> {}\n\n/** Arguments for [[AccuDrawSetCompassModeEvent]]\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetCompassModeEventArgs {\n mode: CompassMode;\n}\n\n/** AccuDraw Set Compass Mode event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class AccuDrawSetCompassModeEvent extends BeUiEvent<AccuDrawSetCompassModeEventArgs> {}\n\n/** AccuDraw Grab Input Focus event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\nexport class AccuDrawGrabInputFocusEvent extends BeUiEvent<object> {}\n\n/** AccuDraw Ui Settings Changed event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\nexport class AccuDrawUiSettingsChangedEvent extends BeUiEvent<object> {}\n\n/** Subclass of `AccuDraw` in `@itwin/core-frontend` to be used to initialize `IModelApp`.\n *\n * This implementation will generate the required events for the AppUI provided UI to update correctly.\n *\n * ```ts\n * await IModelApp.startup({\n * accuDraw: new FrameworkAccuDraw()\n * });\n * ```\n * @public\n */\nexport class FrameworkAccuDraw\n extends AccuDraw\n implements UserSettingsProvider\n{\n private static _displayNotifications = false;\n private static _uiSettings: AccuDrawUiSettings | undefined;\n private static _settingsNamespace = \"AppUiSettings\";\n private static _notificationsKey = \"AccuDrawNotifications\";\n public readonly providerId = \"FrameworkAccuDraw\";\n\n /** AccuDraw Set Field Focus event. */\n public static readonly onAccuDrawSetFieldFocusEvent =\n new AccuDrawSetFieldFocusEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n /** AccuDraw Set Field Value to Ui event. */\n public static readonly onAccuDrawSetFieldValueToUiEvent =\n new AccuDrawSetFieldValueToUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n /** AccuDraw Set Field Value from Ui event. */\n public static readonly onAccuDrawSetFieldValueFromUiEvent =\n new AccuDrawSetFieldValueFromUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n /** AccuDraw Set Field Lock event. */\n public static readonly onAccuDrawSetFieldLockEvent =\n new AccuDrawSetFieldLockEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n /** AccuDraw Set Mode event. */\n public static readonly onAccuDrawSetCompassModeEvent =\n new AccuDrawSetCompassModeEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawGrabInputFocusEvent =\n new AccuDrawGrabInputFocusEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n\n /** Determines if AccuDraw.rotationMode === RotationMode.Top */\n public static readonly isTopRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Top,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Front */\n public static readonly isFrontRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Front,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Side */\n public static readonly isSideRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Side,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.View */\n public static readonly isViewRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.View,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.ACS */\n public static readonly isACSRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.ACS,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Context */\n public static readonly isContextRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Context,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Polar */\n public static readonly isPolarModeConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Polar,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Rectangular */\n public static readonly isRectangularModeConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Rectangular,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawUiSettingsChangedEvent =\n new AccuDrawUiSettingsChangedEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n\n /** Determines if notifications should be displayed for AccuDraw changes */\n public static get displayNotifications(): boolean {\n return FrameworkAccuDraw._displayNotifications;\n }\n public static set displayNotifications(v: boolean) {\n FrameworkAccuDraw._displayNotifications = v;\n void UiFramework.getUiStateStorage().saveSetting(\n this._settingsNamespace,\n this._notificationsKey,\n v\n );\n }\n\n /* @internal */\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\n const result = await storage.getSetting(\n FrameworkAccuDraw._settingsNamespace,\n FrameworkAccuDraw._notificationsKey\n );\n if (result.status === UiStateStorageStatus.Success)\n FrameworkAccuDraw._displayNotifications = result.setting;\n }\n\n /** AccuDraw User Interface settings */\n public static get uiStateStorage(): AccuDrawUiSettings | undefined {\n return FrameworkAccuDraw._uiSettings;\n }\n public static set uiStateStorage(v: AccuDrawUiSettings | undefined) {\n FrameworkAccuDraw._uiSettings = v;\n FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent.emit({});\n }\n\n constructor() {\n super();\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.addListener(\n this.handleSetFieldValueFromUiEvent\n );\n UiFramework.registerUserSettingsProvider(this);\n }\n\n private handleSetFieldValueFromUiEvent = async (\n args: AccuDrawSetFieldValueFromUiEventArgs // eslint-disable-line @typescript-eslint/no-deprecated\n ) => {\n return this.processFieldInput(args.field, args.stringValue, false);\n };\n\n public override onCompassModeChange(): void {\n FrameworkAccuDraw.onAccuDrawSetCompassModeEvent.emit({\n mode: this.compassMode,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawCompassModeChanged\n );\n\n this.outputCompassModeMessage();\n }\n\n public override onRotationModeChange(): void {\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawRotationChanged\n );\n\n this.outputRotationMessage();\n }\n\n public override onFieldLockChange(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldLockEvent.emit({\n field: index,\n lock: this.getFieldLock(index),\n });\n }\n\n public override onFieldValueChange(index: ItemField): void {\n const value = this.getValueByIndex(index);\n const formattedValue = FrameworkAccuDraw.getFieldDisplayValue(index);\n FrameworkAccuDraw.onAccuDrawSetFieldValueToUiEvent.emit({\n field: index,\n value,\n formattedValue,\n });\n }\n\n private fieldValuesChanged(): void {\n // Only change the value when in Dynamic mode. Other mode are \"DontUpdate\" when the input is locked and \"Partial\" when the user is typing.\n this.onFieldValueChange(ItemField.X_Item);\n this.onFieldValueChange(ItemField.Y_Item);\n this.onFieldValueChange(ItemField.Z_Item);\n this.onFieldValueChange(ItemField.ANGLE_Item);\n this.onFieldValueChange(ItemField.DIST_Item);\n }\n\n public override setFocusItem(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldFocusEvent.emit({ field: index });\n }\n\n /** Implemented by sub-classes to update ui fields to show current deltas or coordinates when inactive.\n * Should also choose active x or y input field in rectangular mode based on cursor position when\n * axis isn't locked to support \"smart lock\".\n */\n public override onMotion(ev: BeButtonEvent): void {\n if (!this.isEnabled || this.isDeactivated || UiFramework.isContextMenuOpen)\n return;\n\n const is3d = ev.viewport?.view.is3d() ?? false;\n useAccuDrawStore.setState({ is3d });\n\n this.fieldValuesChanged();\n\n if (!this.dontMoveFocus && this.compassMode === CompassMode.Rectangular) {\n // Changes the focus between X and Y axis depending on the cursor location, in rectangular mode.\n // Example : this.newFocus is Y when the cursor is closer to the Y axis.\n this.setFocusItem(this.newFocus);\n }\n }\n\n /** Determine if the AccuDraw UI has focus. */\n public override get hasInputFocus(): boolean {\n let hasFocus = false;\n const el = document.querySelector(\"div.uifw-accudraw-field-container\");\n if (el) hasFocus = el.contains(document.activeElement);\n return hasFocus;\n }\n\n /** Implement this method to set focus to the AccuDraw UI. */\n public override grabInputFocus(): void {\n FrameworkAccuDraw.onAccuDrawGrabInputFocusEvent.emit({});\n }\n\n /** Gets the display value for an AccuDraw field */\n public static getFieldDisplayValue(index: ItemField): string {\n const value = IModelApp.accuDraw.getValueByIndex(index);\n let formattedValue = value.toString();\n\n const formatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n ItemField.ANGLE_Item === index\n ? QuantityType.Angle\n : QuantityType.Length\n );\n if (formatterSpec)\n formattedValue = IModelApp.quantityFormatter.formatQuantity(\n value,\n formatterSpec\n );\n\n return formattedValue;\n }\n\n /** AccuDraw Set Field Value from Ui. */\n public static setFieldValueFromUi(\n field: ItemField,\n stringValue: string\n ): void {\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.emit({\n field,\n stringValue,\n });\n }\n\n private outputInfoMessage(message: string): void {\n if (FrameworkAccuDraw.displayNotifications)\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(OutputMessagePriority.Info, message)\n );\n }\n\n private outputCompassModeMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n const modeKey = compassModeToKeyMap.get(this.compassMode) ?? \"polar\";\n const modeString = UiFramework.translate(\n `accuDraw.compassMode.${modeKey}`\n );\n const modeMessage = UiFramework.translate(\"accuDraw.compassModeSet\", {\n modeString,\n });\n this.outputInfoMessage(modeMessage);\n }\n }\n\n private outputRotationMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n const rotationKey = rotationModeToKeyMap.get(this.rotationMode) ?? \"top\";\n const rotationString = UiFramework.translate(\n `accuDraw.rotation.${rotationKey}`\n );\n const rotationMessage = UiFramework.translate(\"accuDraw.rotationSet\", {\n rotationString,\n });\n this.outputInfoMessage(rotationMessage);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FrameworkAccuDraw.js","sourceRoot":"","sources":["../../../src/appui-react/accudraw/FrameworkAccuDraw.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module AccuDraw\n */\n\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type { BeButtonEvent } from \"@itwin/core-frontend\";\nimport {\n AccuDraw,\n CompassMode,\n IModelApp,\n ItemField,\n NotifyMessageDetails,\n OutputMessagePriority,\n QuantityType,\n RotationMode,\n} from \"@itwin/core-frontend\";\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\nimport type { UserSettingsProvider } from \"../UiFramework.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher.js\";\nimport type { AccuDrawUiSettings } from \"./AccuDrawUiSettings.js\";\nimport type { UiStateStorage } from \"../uistate/UiStateStorage.js\";\nimport { UiStateStorageStatus } from \"../uistate/UiStateStorage.js\";\nimport { SyncUiEventId } from \"../syncui/UiSyncEvent.js\";\nimport { useAccuDrawStore } from \"./AccuDrawStore.js\";\n\nconst compassModeToKeyMap = new Map<CompassMode, string>([\n [CompassMode.Polar, \"polar\"],\n [CompassMode.Rectangular, \"rectangular\"],\n]);\n\nconst rotationModeToKeyMap = new Map<RotationMode, string>([\n [RotationMode.Top, \"top\"],\n [RotationMode.Front, \"front\"],\n [RotationMode.Side, \"side\"],\n [RotationMode.View, \"view\"],\n [RotationMode.ACS, \"ACS\"],\n [RotationMode.Context, \"context\"],\n]);\n\n/** Arguments for [[AccuDrawSetFieldFocusEvent]]\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldFocusEventArgs {\n field: ItemField;\n}\n\n/** AccuDraw Set Field Focus event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class AccuDrawSetFieldFocusEvent extends BeUiEvent<AccuDrawSetFieldFocusEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueToUiEvent]]\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldValueToUiEventArgs {\n field: ItemField;\n value: number;\n formattedValue: string;\n}\n\n/** AccuDraw Set Field Value to Ui event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class AccuDrawSetFieldValueToUiEvent extends BeUiEvent<AccuDrawSetFieldValueToUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldValueFromUiEvent]]\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldValueFromUiEventArgs {\n field: ItemField;\n stringValue: string;\n}\n\n/** AccuDraw Set Field Value from Ui event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class AccuDrawSetFieldValueFromUiEvent extends BeUiEvent<AccuDrawSetFieldValueFromUiEventArgs> {}\n\n/** Arguments for [[AccuDrawSetFieldLockEvent]]\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetFieldLockEventArgs {\n field: ItemField;\n lock: boolean;\n}\n\n/** AccuDraw Set Field Lock event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class AccuDrawSetFieldLockEvent extends BeUiEvent<AccuDrawSetFieldLockEventArgs> {}\n\n/** Arguments for [[AccuDrawSetCompassModeEvent]]\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface AccuDrawSetCompassModeEventArgs {\n mode: CompassMode;\n}\n\n/** AccuDraw Set Compass Mode event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class AccuDrawSetCompassModeEvent extends BeUiEvent<AccuDrawSetCompassModeEventArgs> {}\n\n/** AccuDraw Grab Input Focus event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\nexport class AccuDrawGrabInputFocusEvent extends BeUiEvent<object> {}\n\n/** AccuDraw Ui Settings Changed event\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\nexport class AccuDrawUiSettingsChangedEvent extends BeUiEvent<object> {}\n\n/** Subclass of `AccuDraw` in `@itwin/core-frontend` to be used to initialize `IModelApp`.\n *\n * This implementation will generate the required events for the AppUI provided UI to update correctly.\n *\n * ```ts\n * await IModelApp.startup({\n * accuDraw: new FrameworkAccuDraw()\n * });\n * ```\n * @public\n */\nexport class FrameworkAccuDraw\n extends AccuDraw\n implements UserSettingsProvider\n{\n private static _displayNotifications = false;\n private static _uiSettings: AccuDrawUiSettings | undefined;\n private static _settingsNamespace = \"AppUiSettings\";\n private static _notificationsKey = \"AccuDrawNotifications\";\n public readonly providerId = \"FrameworkAccuDraw\";\n\n /** AccuDraw Set Field Focus event. */\n public static readonly onAccuDrawSetFieldFocusEvent =\n new AccuDrawSetFieldFocusEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n /** AccuDraw Set Field Value to Ui event. */\n public static readonly onAccuDrawSetFieldValueToUiEvent =\n new AccuDrawSetFieldValueToUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n /** AccuDraw Set Field Value from Ui event. */\n public static readonly onAccuDrawSetFieldValueFromUiEvent =\n new AccuDrawSetFieldValueFromUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n /** AccuDraw Set Field Lock event. */\n public static readonly onAccuDrawSetFieldLockEvent =\n new AccuDrawSetFieldLockEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n /** AccuDraw Set Mode event. */\n public static readonly onAccuDrawSetCompassModeEvent =\n new AccuDrawSetCompassModeEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawGrabInputFocusEvent =\n new AccuDrawGrabInputFocusEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n\n /** Determines if AccuDraw.rotationMode === RotationMode.Top */\n public static readonly isTopRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Top,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Front */\n public static readonly isFrontRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Front,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Side */\n public static readonly isSideRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Side,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.View */\n public static readonly isViewRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.View,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.ACS */\n public static readonly isACSRotationConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.ACS,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.rotationMode === RotationMode.Context */\n public static readonly isContextRotationConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.rotationMode === RotationMode.Context,\n [SyncUiEventId.AccuDrawRotationChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Polar */\n public static readonly isPolarModeConditional = new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Polar,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n /** Determines if AccuDraw.compassMode === CompassMode.Rectangular */\n public static readonly isRectangularModeConditional =\n new ConditionalBooleanValue(\n () => IModelApp.accuDraw.compassMode === CompassMode.Rectangular,\n [SyncUiEventId.AccuDrawCompassModeChanged]\n );\n\n /** AccuDraw Grab Input Focus event. */\n public static readonly onAccuDrawUiSettingsChangedEvent =\n new AccuDrawUiSettingsChangedEvent(); // eslint-disable-line @typescript-eslint/no-deprecated\n\n /** Determines if notifications should be displayed for AccuDraw changes */\n public static get displayNotifications(): boolean {\n return FrameworkAccuDraw._displayNotifications;\n }\n public static set displayNotifications(v: boolean) {\n FrameworkAccuDraw._displayNotifications = v;\n void UiFramework.getUiStateStorage().saveSetting(\n this._settingsNamespace,\n this._notificationsKey,\n v\n );\n }\n\n /* @internal */\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\n const result = await storage.getSetting(\n FrameworkAccuDraw._settingsNamespace,\n FrameworkAccuDraw._notificationsKey\n );\n if (result.status === UiStateStorageStatus.Success)\n FrameworkAccuDraw._displayNotifications = result.setting;\n }\n\n /** AccuDraw User Interface settings */\n public static get uiStateStorage(): AccuDrawUiSettings | undefined {\n return FrameworkAccuDraw._uiSettings;\n }\n public static set uiStateStorage(v: AccuDrawUiSettings | undefined) {\n FrameworkAccuDraw._uiSettings = v;\n FrameworkAccuDraw.onAccuDrawUiSettingsChangedEvent.emit({});\n }\n\n constructor() {\n super();\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.addListener(\n this.handleSetFieldValueFromUiEvent\n );\n UiFramework.registerUserSettingsProvider(this);\n }\n\n private handleSetFieldValueFromUiEvent = async (\n args: AccuDrawSetFieldValueFromUiEventArgs // eslint-disable-line @typescript-eslint/no-deprecated\n ) => {\n return this.processFieldInput(args.field, args.stringValue, false);\n };\n\n public override onCompassModeChange(): void {\n FrameworkAccuDraw.onAccuDrawSetCompassModeEvent.emit({\n mode: this.compassMode,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawCompassModeChanged\n );\n\n this.outputCompassModeMessage();\n }\n\n public override onRotationModeChange(): void {\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.AccuDrawRotationChanged\n );\n\n this.outputRotationMessage();\n }\n\n public override onFieldLockChange(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldLockEvent.emit({\n field: index,\n lock: this.getFieldLock(index),\n });\n }\n\n public override onFieldValueChange(index: ItemField): void {\n const value = this.getValueByIndex(index);\n const formattedValue = FrameworkAccuDraw.getFieldDisplayValue(index);\n FrameworkAccuDraw.onAccuDrawSetFieldValueToUiEvent.emit({\n field: index,\n value,\n formattedValue,\n });\n }\n\n private fieldValuesChanged(): void {\n // Only change the value when in Dynamic mode. Other mode are \"DontUpdate\" when the input is locked and \"Partial\" when the user is typing.\n this.onFieldValueChange(ItemField.X_Item);\n this.onFieldValueChange(ItemField.Y_Item);\n this.onFieldValueChange(ItemField.Z_Item);\n this.onFieldValueChange(ItemField.ANGLE_Item);\n this.onFieldValueChange(ItemField.DIST_Item);\n }\n\n public override setFocusItem(index: ItemField): void {\n FrameworkAccuDraw.onAccuDrawSetFieldFocusEvent.emit({ field: index });\n }\n\n /** Implemented by sub-classes to update ui fields to show current deltas or coordinates when inactive.\n * Should also choose active x or y input field in rectangular mode based on cursor position when\n * axis isn't locked to support \"smart lock\".\n */\n public override onMotion(ev: BeButtonEvent): void {\n if (!this.isEnabled || this.isDeactivated || UiFramework.isContextMenuOpen)\n return;\n\n const is3d = ev.viewport?.view.is3d() ?? false;\n useAccuDrawStore.setState({ is3d });\n\n this.fieldValuesChanged();\n\n if (!this.dontMoveFocus && this.compassMode === CompassMode.Rectangular) {\n // Changes the focus between X and Y axis depending on the cursor location, in rectangular mode.\n // Example : this.newFocus is Y when the cursor is closer to the Y axis.\n this.setFocusItem(this.newFocus);\n }\n }\n\n /** Determine if the AccuDraw UI has focus. */\n public override get hasInputFocus(): boolean {\n let hasFocus = false;\n const el = document.querySelector(\"div.uifw-accudraw-field-container\");\n if (el) hasFocus = el.contains(document.activeElement);\n return hasFocus;\n }\n\n /** Implement this method to set focus to the AccuDraw UI. */\n public override grabInputFocus(): void {\n FrameworkAccuDraw.onAccuDrawGrabInputFocusEvent.emit({});\n }\n\n /** Gets the display value for an AccuDraw field */\n public static getFieldDisplayValue(index: ItemField): string {\n const value = IModelApp.accuDraw.getValueByIndex(index);\n let formattedValue = value.toString();\n\n const formatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n ItemField.ANGLE_Item === index\n ? QuantityType.Angle\n : QuantityType.Length\n );\n if (formatterSpec)\n formattedValue = IModelApp.quantityFormatter.formatQuantity(\n value,\n formatterSpec\n );\n\n return formattedValue;\n }\n\n /** AccuDraw Set Field Value from Ui. */\n public static setFieldValueFromUi(\n field: ItemField,\n stringValue: string\n ): void {\n FrameworkAccuDraw.onAccuDrawSetFieldValueFromUiEvent.emit({\n field,\n stringValue,\n });\n }\n\n private outputInfoMessage(message: string): void {\n if (FrameworkAccuDraw.displayNotifications)\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(OutputMessagePriority.Info, message)\n );\n }\n\n private outputCompassModeMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n const modeKey = compassModeToKeyMap.get(this.compassMode) ?? \"polar\";\n const modeString = UiFramework.translate(\n `accuDraw.compassMode.${modeKey}`\n );\n const modeMessage = UiFramework.translate(\"accuDraw.compassModeSet\", {\n modeString,\n });\n this.outputInfoMessage(modeMessage);\n }\n }\n\n private outputRotationMessage(): void {\n if (FrameworkAccuDraw.displayNotifications) {\n const rotationKey = rotationModeToKeyMap.get(this.rotationMode) ?? \"top\";\n const rotationString = UiFramework.translate(\n `accuDraw.rotation.${rotationKey}`\n );\n const rotationMessage = UiFramework.translate(\"accuDraw.rotationSet\", {\n rotationString,\n });\n this.outputInfoMessage(rotationMessage);\n }\n }\n}\n"]}
|
|
@@ -12,28 +12,10 @@ import { SquareButton } from "./SquareButton.js";
|
|
|
12
12
|
import { SvgMore } from "@itwin/itwinui-icons-react";
|
|
13
13
|
/** @public */
|
|
14
14
|
export class MenuButton extends React.PureComponent {
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
16
|
+
_menu = null;
|
|
15
17
|
constructor(props) {
|
|
16
18
|
super(props);
|
|
17
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
18
|
-
this._menu = null;
|
|
19
|
-
this._open = () => {
|
|
20
|
-
this.setState({ expanded: true }, () => {
|
|
21
|
-
if (this._menu)
|
|
22
|
-
this._menu.focus();
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
this._handleClick = (event) => {
|
|
26
|
-
if (this.state.expanded) {
|
|
27
|
-
event.stopPropagation();
|
|
28
|
-
this.setState({ expanded: false });
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
this._open();
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
this._handleClose = () => {
|
|
35
|
-
this.setState({ expanded: false });
|
|
36
|
-
};
|
|
37
19
|
this.state = {
|
|
38
20
|
expanded: false,
|
|
39
21
|
};
|
|
@@ -57,5 +39,23 @@ export class MenuButton extends React.PureComponent {
|
|
|
57
39
|
const rect = div.getBoundingClientRect();
|
|
58
40
|
this.props.onSizeKnown?.({ width: rect.width, height: rect.height });
|
|
59
41
|
}
|
|
42
|
+
_open = () => {
|
|
43
|
+
this.setState({ expanded: true }, () => {
|
|
44
|
+
if (this._menu)
|
|
45
|
+
this._menu.focus();
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
_handleClick = (event) => {
|
|
49
|
+
if (this.state.expanded) {
|
|
50
|
+
event.stopPropagation();
|
|
51
|
+
this.setState({ expanded: false });
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this._open();
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
_handleClose = () => {
|
|
58
|
+
this.setState({ expanded: false });
|
|
59
|
+
};
|
|
60
60
|
}
|
|
61
61
|
//# sourceMappingURL=MenuButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuButton.js","sourceRoot":"","sources":["../../../src/appui-react/accudraw/MenuButton.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAmBrD,cAAc;AACd,MAAM,OAAO,UAAW,SAAQ,KAAK,CAAC,aAGrC;
|
|
1
|
+
{"version":3,"file":"MenuButton.js","sourceRoot":"","sources":["../../../src/appui-react/accudraw/MenuButton.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 AccuDraw\n */\n\nimport \"./MenuButton.scss\";\nimport * as React from \"react\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { ContextMenu, Icon } from \"@itwin/core-react\";\nimport { SquareButton } from \"./SquareButton.js\";\nimport { SvgMore } from \"@itwin/itwinui-icons-react\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\nimport type { Button } from \"@itwin/itwinui-react\";\n\ntype ButtonProps = React.ComponentPropsWithoutRef<typeof Button>;\n\n/** @public */\nexport interface MenuButtonProps\n extends Omit<ButtonProps, \"size\" | \"styleType\"> {\n /** Center point */\n point: XAndY;\n /** Function called when size is known. */\n onSizeKnown?: (size: SizeProps) => void;\n}\n\ninterface MenuButtonState {\n expanded: boolean;\n}\n\n/** @public */\nexport class MenuButton extends React.PureComponent<\n MenuButtonProps,\n MenuButtonState\n> {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _menu: ContextMenu | null = null;\n\n constructor(props: MenuButtonProps) {\n super(props);\n\n this.state = {\n expanded: false,\n };\n }\n\n public override render() {\n const { point, className, style, onSizeKnown, ...buttonProps } = this.props;\n\n const divStyle: React.CSSProperties = {\n top: point.y,\n left: point.x,\n };\n\n return (\n <div\n className=\"uifw-menu-button\"\n style={divStyle}\n ref={(e) => this.setDivRef(e)}\n >\n <SquareButton\n {...buttonProps}\n className={className}\n style={style}\n onClick={this._handleClick}\n >\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <Icon iconSpec={<SvgMore />} />\n </SquareButton>\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <ContextMenu\n ref={(el) => {\n this._menu = el;\n }}\n selectedIndex={0}\n onSelect={this._handleClose}\n onOutsideClick={this._handleClose}\n onEsc={this._handleClose}\n opened={this.state.expanded}\n autoflip={false}\n >\n {this.props.children}\n </ContextMenu>\n </div>\n );\n }\n\n private setDivRef(div: HTMLDivElement | null) {\n if (!div) return;\n\n const rect = div.getBoundingClientRect();\n this.props.onSizeKnown?.({ width: rect.width, height: rect.height });\n }\n\n private _open = () => {\n this.setState({ expanded: true }, () => {\n if (this._menu) this._menu.focus();\n });\n };\n\n private _handleClick = (event: any) => {\n if (this.state.expanded) {\n event.stopPropagation();\n this.setState({ expanded: false });\n } else {\n this._open();\n }\n };\n\n private _handleClose = () => {\n this.setState({ expanded: false });\n };\n}\n"]}
|
|
@@ -12,18 +12,15 @@ import { MenuButton } from "./MenuButton.js";
|
|
|
12
12
|
* @public
|
|
13
13
|
*/
|
|
14
14
|
export class MenuButtonPopup extends React.PureComponent {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.setState({ size: newSize });
|
|
25
|
-
};
|
|
26
|
-
}
|
|
15
|
+
state = {
|
|
16
|
+
size: { width: -1, height: -1 },
|
|
17
|
+
};
|
|
18
|
+
_onSizeKnown = (newSize) => {
|
|
19
|
+
if (newSize.height === this.state.size.height &&
|
|
20
|
+
newSize.width === this.state.size.width)
|
|
21
|
+
return;
|
|
22
|
+
this.setState({ size: newSize });
|
|
23
|
+
};
|
|
27
24
|
render() {
|
|
28
25
|
const point = PopupManager.getPopupPosition(this.props.el, this.props.pt, this.props.offset, this.state.size);
|
|
29
26
|
return (React.createElement(MenuButton, { key: this.props.id, point: point, onSizeKnown: this._onSizeKnown }, this.props.content));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuButtonPopup.js","sourceRoot":"","sources":["../../../src/appui-react/accudraw/MenuButtonPopup.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAY7C;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK,CAAC,aAG1C;
|
|
1
|
+
{"version":3,"file":"MenuButtonPopup.js","sourceRoot":"","sources":["../../../src/appui-react/accudraw/MenuButtonPopup.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAY7C;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK,CAAC,aAG1C;IAC0B,KAAK,GAAG;QAC/B,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;KAChC,CAAC;IAEM,YAAY,GAAG,CAAC,OAAkB,EAAE,EAAE;QAC5C,IACE,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;YACzC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;YAEvC,OAAO;QACT,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC;IAEc,MAAM;QACpB,MAAM,KAAK,GAAG,YAAY,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,UAAU,IACT,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAClB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,IAAI,CAAC,YAAY,IAE7B,IAAI,CAAC,KAAK,CAAC,OAAO,CACR,CACd,CAAC;IACJ,CAAC;CACF","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 AccuDraw\n */\n\nimport * as React from \"react\";\nimport type { PopupPropsBase } from \"../popup/PopupManager.js\";\nimport { PopupManager } from \"../popup/PopupManager.js\";\nimport { MenuButton } from \"./MenuButton.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\n\n/** @public */\nexport interface MenuButtonPopupProps extends PopupPropsBase {\n content: React.ReactNode;\n}\n\ninterface MenuButtonPopupState {\n size: SizeProps;\n}\n\n/** Popup component for Menu Buttons\n * @public\n */\nexport class MenuButtonPopup extends React.PureComponent<\n MenuButtonPopupProps,\n MenuButtonPopupState\n> {\n public override readonly state = {\n size: { width: -1, height: -1 },\n };\n\n private _onSizeKnown = (newSize: SizeProps) => {\n if (\n newSize.height === this.state.size.height &&\n newSize.width === this.state.size.width\n )\n return;\n this.setState({ size: newSize });\n };\n\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 <MenuButton\n key={this.props.id}\n point={point}\n onSizeKnown={this._onSizeKnown}\n >\n {this.props.content}\n </MenuButton>\n );\n }\n}\n"]}
|
|
@@ -12,12 +12,8 @@ import { BeEvent } from "@itwin/core-bentley";
|
|
|
12
12
|
* @internal
|
|
13
13
|
*/
|
|
14
14
|
export class BackstageItemsManager {
|
|
15
|
+
_items = [];
|
|
15
16
|
constructor(items) {
|
|
16
|
-
this._items = [];
|
|
17
|
-
/** Event raised when backstage items are changed.
|
|
18
|
-
* @internal
|
|
19
|
-
*/
|
|
20
|
-
this.onItemsChanged = new BeEvent();
|
|
21
17
|
if (items)
|
|
22
18
|
this.loadItemsInternal(items, true, false);
|
|
23
19
|
}
|
|
@@ -40,6 +36,10 @@ export class BackstageItemsManager {
|
|
|
40
36
|
loadItems(items) {
|
|
41
37
|
this.loadItemsInternal(items, true, false);
|
|
42
38
|
}
|
|
39
|
+
/** Event raised when backstage items are changed.
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
onItemsChanged = new BeEvent();
|
|
43
43
|
get items() {
|
|
44
44
|
return this._items;
|
|
45
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackstageItemsManager.js","sourceRoot":"","sources":["../../../src/appui-react/backstage/BackstageItemsManager.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAU9C;;;GAGG;AACH,MAAM,OAAO,qBAAqB;
|
|
1
|
+
{"version":3,"file":"BackstageItemsManager.js","sourceRoot":"","sources":["../../../src/appui-react/backstage/BackstageItemsManager.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAU9C;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACxB,MAAM,GAAiC,EAAE,CAAC;IAElD,YAAY,KAAoC;QAC9C,IAAI,KAAK;YAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAEO,iBAAiB,CACvB,KAAmC,EACnC,iBAA0B,EAC1B,eAAwB;QAExB,IAAI,iBAAiB,IAAI,KAAK,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACnE,IAAI,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAClC,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAE9D,IAAI,YAAY;oBAAE,KAAK,GAAG,YAAY,CAAC;YACzC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,eAAe;YAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,KAAmC;QAClD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACa,cAAc,GAAG,IAAI,OAAO,EAEzC,CAAC;IAEJ,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,KAAK,CAAC,KAAmC;QAClD,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,gBAAgB;IACT,GAAG,CAAC,WAAyD;QAClE,IAAI,UAAU,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YAAE,UAAU,GAAG,CAAC,WAAW,CAAC,CAAC;aACvD,CAAC;YACJ,UAAU,GAAG,WAAW,CAAC,MAAM,CAC7B,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CACnB,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,KAAK,KAAK,CACtE,CAAC;QACJ,CAAC;QACD,UAAU,GAAG,UAAU,CAAC,MAAM,CAC5B,CAAC,SAAS,EAAE,EAAE,CACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,KAAK,SAAS,CACrE,CAAC;QACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACpC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,gBAAgB;IACT,MAAM,CACX,eAAyE;QAEzE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACxC,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;gBACnC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;gBACvD,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,eAAe,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,oBAAoB,CAChC,KAA+B;QAE/B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;oBAC7C,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAe,EAAE,EAAE,CAC7C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACpC,CAAC;gBACJ,CAAC;qBAAM,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;oBACnD,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAe,EAAE,EAAE,CAC7C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACpC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,CAAC;IAEO,4BAA4B,CAClC,KAA+B,EAC/B,QAAqB;QAErB,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI;YAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAE1E,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAEhC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpD,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;oBAC7C,IAAI,uBAAuB,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;wBACvD,cAAc,GAAG,IAAI,CAAC;gBAC1B,CAAC;qBAAM,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;oBACnD,IAAI,sBAAsB,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;wBACtD,cAAc,GAAG,IAAI,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;IAClE,CAAC;IAEM,oBAAoB,CAAC,QAAqB;QAC/C,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI;YAAE,OAAO;QAEhC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,4BAA4B,CACtE,IAAI,CAAC,KAAK,EACV,QAAQ,CACT,CAAC;QAEF,IAAI,YAAY;YAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;CACF","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 Backstage\n */\n\nimport {\n ConditionalBooleanValue,\n ConditionalStringValue,\n} from \"@itwin/appui-abstract\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type { BackstageItem } from \"./BackstageItem.js\";\n\n/** Arguments of [[BackstageItemsManager.onChanged]] event.\n * @internal\n */\nexport interface BackstageItemsChangedArgs {\n readonly items: ReadonlyArray<BackstageItem>;\n}\n\n/**\n * Controls backstage items.\n * @internal\n */\nexport class BackstageItemsManager {\n private _items: ReadonlyArray<BackstageItem> = [];\n\n constructor(items?: ReadonlyArray<BackstageItem>) {\n if (items) this.loadItemsInternal(items, true, false);\n }\n\n private loadItemsInternal(\n items: ReadonlyArray<BackstageItem>,\n processConditions: boolean,\n sendItemChanged: boolean\n ) {\n if (processConditions && items) {\n const eventIds = BackstageItemsManager.getSyncIdsOfInterest(items);\n if (0 !== eventIds.length) {\n const { itemsUpdated, updatedItems } =\n this.internalRefreshAffectedItems(items, new Set(eventIds));\n\n if (itemsUpdated) items = updatedItems;\n }\n }\n\n this._items = items;\n if (sendItemChanged) this.onItemsChanged.raiseEvent({ items });\n }\n\n /** load items but do not fire onItemsChanged\n * @internal\n */\n public loadItems(items: ReadonlyArray<BackstageItem>) {\n this.loadItemsInternal(items, true, false);\n }\n\n /** Event raised when backstage items are changed.\n * @internal\n */\n public readonly onItemsChanged = new BeEvent<\n (args: BackstageItemsChangedArgs) => void\n >();\n\n public get items(): ReadonlyArray<BackstageItem> {\n return this._items;\n }\n\n public set items(items: ReadonlyArray<BackstageItem>) {\n if (items !== this._items) this.loadItemsInternal(items, true, true);\n }\n\n /** @internal */\n public add(itemOrItems: BackstageItem | ReadonlyArray<BackstageItem>) {\n let itemsToAdd;\n if (!Array.isArray(itemOrItems)) itemsToAdd = [itemOrItems];\n else {\n itemsToAdd = itemOrItems.filter(\n (itemToAdd, index) =>\n itemOrItems.findIndex((item) => item.id === itemToAdd.id) === index\n );\n }\n itemsToAdd = itemsToAdd.filter(\n (itemToAdd) =>\n this._items.find((item) => item.id === itemToAdd.id) === undefined\n );\n if (itemsToAdd.length === 0) return;\n const items = [...this._items, ...itemsToAdd];\n this.items = items;\n }\n\n /** @internal */\n public remove(\n itemIdOrItemIds: BackstageItem[\"id\"] | ReadonlyArray<BackstageItem[\"id\"]>\n ) {\n const items = this._items.filter((item) => {\n return Array.isArray(itemIdOrItemIds)\n ? !itemIdOrItemIds.find((itemId) => itemId === item.id)\n : item.id !== itemIdOrItemIds;\n });\n this.items = items;\n }\n\n /** @internal */\n public static getSyncIdsOfInterest(\n items: readonly BackstageItem[]\n ): string[] {\n const eventIds = new Set<string>();\n items.forEach((item) => {\n for (const [, entry] of Object.entries(item)) {\n if (entry instanceof ConditionalBooleanValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n } else if (entry instanceof ConditionalStringValue) {\n entry.syncEventIds.forEach((eventId: string) =>\n eventIds.add(eventId.toLowerCase())\n );\n }\n }\n });\n return [...eventIds.values()];\n }\n\n private internalRefreshAffectedItems(\n items: readonly BackstageItem[],\n eventIds: Set<string>\n ): { itemsUpdated: boolean; updatedItems: BackstageItem[] } {\n if (0 === eventIds.size) return { itemsUpdated: false, updatedItems: [] };\n\n let updateRequired = false;\n\n const newItems: BackstageItem[] = [];\n for (const item of items) {\n const updatedItem = { ...item };\n\n for (const [, entry] of Object.entries(updatedItem)) {\n if (entry instanceof ConditionalBooleanValue) {\n if (ConditionalBooleanValue.refreshValue(entry, eventIds))\n updateRequired = true;\n } else if (entry instanceof ConditionalStringValue) {\n if (ConditionalStringValue.refreshValue(entry, eventIds))\n updateRequired = true;\n }\n }\n\n newItems.push(updatedItem);\n }\n\n return { itemsUpdated: updateRequired, updatedItems: newItems };\n }\n\n public refreshAffectedItems(eventIds: Set<string>) {\n if (0 === eventIds.size) return;\n\n const { itemsUpdated, updatedItems } = this.internalRefreshAffectedItems(\n this.items,\n eventIds\n );\n\n if (itemsUpdated) this.loadItemsInternal(updatedItems, false, true);\n }\n}\n"]}
|
|
@@ -13,9 +13,7 @@ import { InternalBackstageManager } from "./InternalBackstageManager.js";
|
|
|
13
13
|
* @deprecated in 4.15.0. Use {@link UiFramework.backstage} instead.
|
|
14
14
|
*/
|
|
15
15
|
export class BackstageManager {
|
|
16
|
-
|
|
17
|
-
this.internal = new InternalBackstageManager();
|
|
18
|
-
}
|
|
16
|
+
internal = new InternalBackstageManager();
|
|
19
17
|
/**
|
|
20
18
|
* Override internal implementation for a mock
|
|
21
19
|
* @internal For tests only.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackstageManager.js","sourceRoot":"","sources":["../../../src/appui-react/backstage/BackstageManager.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE;;;GAGG;AACH,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"BackstageManager.js","sourceRoot":"","sources":["../../../src/appui-react/backstage/BackstageManager.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,QAAQ,GAAG,IAAI,wBAAwB,EAAE,CAAC;IAElD;;;OAGG;IACI,YAAY,CAAC,QAAkC;QACpD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,uDAAuD;IACvD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,4DAA4D;IACrD,yBAAyB,CAAC,gBAA2B;QAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IACnE,CAAC;IAED,oGAAoG;IACpG,4DAA4D;IACrD,MAAM,CAAC,yBAAyB,CAAC,gBAA2B;QACjE,4DAA4D;QAC5D,OAAO,WAAW,CAAC,SAAS,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IAC3E,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAA2B,EAAE,EAAE;IAChE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,OAAO,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5C,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Backstage\n */\n\nimport * as React from \"react\";\nimport type { IconSpec } from \"@itwin/core-react\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { FrameworkBackstage } from \"../framework/FrameworkBackstage.js\";\nimport { InternalBackstageManager } from \"./InternalBackstageManager.js\";\n\n/** Controls backstage.\n * @public\n * @deprecated in 4.15.0. Use {@link UiFramework.backstage} instead.\n */\nexport class BackstageManager {\n private internal = new InternalBackstageManager();\n\n /**\n * Override internal implementation for a mock\n * @internal For tests only.\n */\n public mockInternal(internal: InternalBackstageManager) {\n this.internal = internal;\n }\n\n /** Event raised when backstage is opened or closed. */\n public get onToggled() {\n return this.internal.onToggled;\n }\n\n public get isOpen() {\n return this.internal.isOpen;\n }\n\n public open() {\n return this.internal.open();\n }\n\n public close() {\n return this.internal.close();\n }\n\n public toggle() {\n return this.internal.toggle();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public getBackstageToggleCommand(overrideIconSpec?: IconSpec) {\n return this.internal.getBackstageToggleCommand(overrideIconSpec);\n }\n\n /** Get CommandItemDef that will toggle display of Backstage and allow iconSpec to be overridden. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static getBackstageToggleCommand(overrideIconSpec?: IconSpec) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return UiFramework.backstage.getBackstageToggleCommand(overrideIconSpec);\n }\n}\n\n/** Hook that returns isOpen flag of the backstage.\n * @public\n */\nexport const useIsBackstageOpen = (manager: FrameworkBackstage) => {\n const [isOpen, setIsOpen] = React.useState(manager.isOpen);\n React.useEffect(() => {\n setIsOpen(manager.isOpen);\n return manager.onToggled.addListener((args) => {\n setIsOpen(args.isOpen);\n });\n }, [manager]);\n return isOpen;\n};\n\n/** Hook that returns backstage manager.\n * @public\n */\nexport const useBackstageManager = () => {\n const [manager] = React.useState(UiFramework.backstage);\n return manager;\n};\n"]}
|
|
@@ -12,11 +12,9 @@ import { UiFramework } from "../UiFramework.js";
|
|
|
12
12
|
* @internal
|
|
13
13
|
*/
|
|
14
14
|
export class InternalBackstageManager {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
this.onToggled = new BeEvent();
|
|
19
|
-
}
|
|
15
|
+
_isOpen = false;
|
|
16
|
+
/** Event raised when backstage is opened or closed. */
|
|
17
|
+
onToggled = new BeEvent();
|
|
20
18
|
get isOpen() {
|
|
21
19
|
return this._isOpen;
|
|
22
20
|
}
|