@itwin/appui-react 4.2.0 → 4.3.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/appui-react/UiFramework.d.ts +0 -7
- package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
- package/lib/cjs/appui-react/UiFramework.js +0 -21
- package/lib/cjs/appui-react/UiFramework.js.map +1 -1
- package/lib/cjs/appui-react/_variables.scss +3 -3
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.scss +3 -3
- package/lib/cjs/appui-react/accudraw/AccuDrawInputField.scss +3 -3
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +1 -2
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.scss +3 -3
- package/lib/cjs/appui-react/configurableui/configurableui.scss +3 -3
- package/lib/cjs/appui-react/content/DefaultViewOverlay.scss +3 -3
- package/lib/cjs/appui-react/feedback/ValidationTextbox.scss +3 -3
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js +24 -5
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.scss +3 -3
- package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.scss +3 -3
- package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
- package/lib/cjs/appui-react/pickers/ViewSelector.js +3 -1
- package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/cjs/appui-react/popup/CardPopup.scss +3 -3
- package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js +0 -53
- package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.scss +3 -3
- package/lib/cjs/appui-react/settings/ui/UiSettingsPage.scss +3 -3
- package/lib/cjs/appui-react/statusbar/Separator.scss +3 -3
- package/lib/cjs/appui-react/statusfields/SectionsField.scss +3 -3
- package/lib/cjs/appui-react/statusfields/SelectionCount.scss +3 -3
- package/lib/cjs/appui-react/statusfields/SelectionScope.scss +3 -3
- package/lib/cjs/appui-react/statusfields/ViewAttributes.scss +3 -3
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +3 -3
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +3 -3
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +3 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +85 -70
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.scss +3 -3
- package/lib/cjs/appui-react/widget-panels/Tab.scss +3 -3
- package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js +22 -29
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.scss +3 -3
- package/lib/cjs/appui-react/widget-panels/Toolbars.scss +3 -3
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js +12 -11
- package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/esm/appui-react/UiFramework.d.ts +0 -7
- package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
- package/lib/esm/appui-react/UiFramework.js +0 -21
- package/lib/esm/appui-react/UiFramework.js.map +1 -1
- package/lib/esm/appui-react/_variables.scss +3 -3
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.scss +3 -3
- package/lib/esm/appui-react/accudraw/AccuDrawInputField.scss +3 -3
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +1 -2
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.scss +3 -3
- package/lib/esm/appui-react/configurableui/configurableui.scss +3 -3
- package/lib/esm/appui-react/content/DefaultViewOverlay.scss +3 -3
- package/lib/esm/appui-react/feedback/ValidationTextbox.scss +3 -3
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.js +24 -5
- package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/esm/appui-react/navigationaids/SheetNavigationAid.scss +3 -3
- package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.scss +3 -3
- package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
- package/lib/esm/appui-react/pickers/ViewSelector.js +3 -1
- package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/esm/appui-react/popup/CardPopup.scss +3 -3
- package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.d.ts.map +1 -1
- package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js +0 -53
- package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.scss +3 -3
- package/lib/esm/appui-react/settings/ui/UiSettingsPage.scss +3 -3
- package/lib/esm/appui-react/statusbar/Separator.scss +3 -3
- package/lib/esm/appui-react/statusfields/SectionsField.scss +3 -3
- package/lib/esm/appui-react/statusfields/SelectionCount.scss +3 -3
- package/lib/esm/appui-react/statusfields/SelectionScope.scss +3 -3
- package/lib/esm/appui-react/statusfields/ViewAttributes.scss +3 -3
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +3 -3
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +3 -3
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +3 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +82 -67
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.scss +3 -3
- package/lib/esm/appui-react/widget-panels/Tab.scss +3 -3
- package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.js +22 -29
- package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.scss +3 -3
- package/lib/esm/appui-react/widget-panels/Toolbars.scss +3 -3
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js +12 -11
- package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/public/locales/en/UiFramework.json +3 -1
- package/package.json +12 -12
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @module Frontstage
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.useItemsManager = exports.useFrontstageManager = exports.getFrontstageStateSettingName = exports.FRONTSTAGE_SETTINGS_NAMESPACE = exports.useSaveFrontstageSettings = exports.useSavedFrontstageState = exports.setWidgetLabel = exports.expandWidget = exports.showWidget = exports.setWidgetState = exports.isPanelCollapsed = exports.packNineZoneState = exports.restoreNineZoneState = exports.initializeNineZoneState = exports.initializePanel = exports.isFrontstageStateSettingResult = exports.addPanelWidgets = exports.getPanelSectionWidgets = exports.getWidgetId = exports.removeMissingWidgets = exports.addMissingWidgets = exports.appendWidgets = exports.addWidgets = exports.useLabels = exports.ActiveFrontstageDefProvider = exports.WidgetPanelsFrontstage = exports.useNineZoneDispatch = exports.FrameworkStateReducer = exports.useUpdateNineZoneSize = exports.useLayoutStore = void 0;
|
|
10
|
+
exports.useItemsManager = exports.useFrontstageManager = exports.getFrontstageStateSettingName = exports.FRONTSTAGE_SETTINGS_NAMESPACE = exports.useSaveFrontstageSettings = exports.useSavedFrontstageState = exports.setWidgetLabel = exports.expandWidget = exports.showWidget = exports.setWidgetState = exports.isPanelCollapsed = exports.packNineZoneState = exports.restoreNineZoneState = exports.initializeNineZoneState = exports.stateVersion = exports.initializePanel = exports.isFrontstageStateSettingResult = exports.addPanelWidgets = exports.getPanelSectionWidgets = exports.getWidgetId = exports.removeMissingWidgets = exports.addMissingWidgets = exports.appendWidgets = exports.addWidgets = exports.useLabels = exports.ActiveFrontstageDefProvider = exports.WidgetPanelsFrontstage = exports.useNineZoneDispatch = exports.FrameworkStateReducer = exports.useUpdateNineZoneSize = exports.useLayoutStore = void 0;
|
|
11
11
|
// cSpell:ignore popout
|
|
12
12
|
require("./Frontstage.scss");
|
|
13
13
|
const immer_1 = require("immer");
|
|
@@ -126,14 +126,6 @@ function useNineZoneDispatch(frontstageDef) {
|
|
|
126
126
|
if (action.type === "RESIZE") {
|
|
127
127
|
InternalFrontstageManager_1.InternalFrontstageManager.nineZoneSize = core_react_1.Size.create(action.size);
|
|
128
128
|
}
|
|
129
|
-
// istanbul ignore if
|
|
130
|
-
if (action.type === "TOOL_SETTINGS_DRAG_START") {
|
|
131
|
-
void UiFramework_1.UiFramework.postTelemetry("Tool Settings Undocking", "28B04E07-AE73-4533-A0BA-8E2A8DC99ADF");
|
|
132
|
-
}
|
|
133
|
-
// istanbul ignore if
|
|
134
|
-
if (action.type === "TOOL_SETTINGS_DOCK") {
|
|
135
|
-
void UiFramework_1.UiFramework.postTelemetry("Tool Settings Docking to Settings Bar", "BEDE684B-B3DB-4637-B3AF-DC3CBA223F94");
|
|
136
|
-
}
|
|
137
129
|
if (action.type === "WIDGET_TAB_POPOUT") {
|
|
138
130
|
const tabId = action.id;
|
|
139
131
|
frontstageDef.popoutWidget(tabId);
|
|
@@ -214,6 +206,19 @@ function useLabels() {
|
|
|
214
206
|
}), []);
|
|
215
207
|
}
|
|
216
208
|
exports.useLabels = useLabels;
|
|
209
|
+
function toTabArgs(widget) {
|
|
210
|
+
const label = getWidgetLabel(widget.label);
|
|
211
|
+
return {
|
|
212
|
+
allowedPanelTargets: widget.allowedPanelTargets?.map((location) => (0, StagePanelDef_1.toPanelSide)(location)),
|
|
213
|
+
hideWithUiWhenFloating: !!widget.hideWithUiWhenFloating,
|
|
214
|
+
canPopout: widget.canPopout,
|
|
215
|
+
iconSpec: widget.iconSpec,
|
|
216
|
+
isFloatingStateWindowResizable: widget.isFloatingStateWindowResizable,
|
|
217
|
+
label,
|
|
218
|
+
preferredFloatingWidgetSize: widget.defaultFloatingSize,
|
|
219
|
+
preferredPanelWidgetSize: widget.preferredPanelSize,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
217
222
|
/** @internal */
|
|
218
223
|
function addWidgets(state, widgets, side, widgetId) {
|
|
219
224
|
const visibleWidgets = widgets.filter((w) => w.isVisible && w.defaultState !== WidgetState_1.WidgetState.Floating);
|
|
@@ -221,17 +226,7 @@ function addWidgets(state, widgets, side, widgetId) {
|
|
|
221
226
|
return state;
|
|
222
227
|
const tabs = new Array();
|
|
223
228
|
for (const widget of visibleWidgets) {
|
|
224
|
-
|
|
225
|
-
state = (0, appui_layout_react_1.addTab)(state, widget.id, {
|
|
226
|
-
label,
|
|
227
|
-
iconSpec: widget.iconSpec,
|
|
228
|
-
preferredPanelWidgetSize: widget.preferredPanelSize,
|
|
229
|
-
preferredFloatingWidgetSize: widget.defaultFloatingSize,
|
|
230
|
-
canPopout: widget.canPopout,
|
|
231
|
-
isFloatingStateWindowResizable: widget.isFloatingStateWindowResizable,
|
|
232
|
-
hideWithUiWhenFloating: !!widget.hideWithUiWhenFloating,
|
|
233
|
-
allowedPanelTargets: widget.allowedPanelTargets?.map((location) => (0, StagePanelDef_1.toPanelSide)(location)),
|
|
234
|
-
});
|
|
229
|
+
state = (0, appui_layout_react_1.addTab)(state, widget.id, toTabArgs(widget));
|
|
235
230
|
tabs.push(widget.id);
|
|
236
231
|
}
|
|
237
232
|
const activeWidget = visibleWidgets.find((widget) => widget.isActive);
|
|
@@ -249,12 +244,9 @@ exports.addWidgets = addWidgets;
|
|
|
249
244
|
/** @internal */
|
|
250
245
|
// istanbul ignore next
|
|
251
246
|
function appendWidgets(state, widgetDefs, location, section) {
|
|
252
|
-
if (widgetDefs.length === 0)
|
|
253
|
-
return state;
|
|
254
247
|
const side = (0, StagePanelDef_1.toPanelSide)(location);
|
|
255
248
|
// Add missing widget tabs.
|
|
256
249
|
for (const widgetDef of widgetDefs) {
|
|
257
|
-
const label = getWidgetLabel(widgetDef.label);
|
|
258
250
|
const saveTab = state.tabs[widgetDef.id];
|
|
259
251
|
const preferredPanelWidgetSize = saveTab
|
|
260
252
|
? saveTab.preferredPanelWidgetSize
|
|
@@ -269,15 +261,10 @@ function appendWidgets(state, widgetDefs, location, section) {
|
|
|
269
261
|
!!saveTab.preferredFloatingWidgetSize)
|
|
270
262
|
: !!widgetDef.defaultFloatingSize;
|
|
271
263
|
state = (0, appui_layout_react_1.addTab)(state, widgetDef.id, {
|
|
272
|
-
|
|
273
|
-
iconSpec: widgetDef.iconSpec,
|
|
274
|
-
canPopout: widgetDef.canPopout,
|
|
275
|
-
preferredPanelWidgetSize,
|
|
264
|
+
...toTabArgs(widgetDef),
|
|
276
265
|
preferredFloatingWidgetSize,
|
|
266
|
+
preferredPanelWidgetSize,
|
|
277
267
|
userSized,
|
|
278
|
-
isFloatingStateWindowResizable: widgetDef.isFloatingStateWindowResizable,
|
|
279
|
-
hideWithUiWhenFloating: !!widgetDef.hideWithUiWhenFloating,
|
|
280
|
-
allowedPanelTargets: widgetDef.allowedPanelTargets?.map((l) => (0, StagePanelDef_1.toPanelSide)(l)),
|
|
281
268
|
});
|
|
282
269
|
if (widgetDef.isFloatingStateSupported &&
|
|
283
270
|
widgetDef.defaultState === WidgetState_1.WidgetState.Floating) {
|
|
@@ -376,6 +363,12 @@ function addMissingWidgets(frontstageDef, initialState) {
|
|
|
376
363
|
.widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Bottom, StagePanelSection_1.StagePanelSection.Start);
|
|
377
364
|
state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomPanel?.getPanelSectionDef(StagePanelSection_1.StagePanelSection.End)
|
|
378
365
|
.widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Bottom, StagePanelSection_1.StagePanelSection.End);
|
|
366
|
+
if (frontstageDef.toolSettings) {
|
|
367
|
+
const newToolSettingsWidgets = determineNewWidgets([frontstageDef.toolSettings], state);
|
|
368
|
+
for (const newToolSettingsWidget of newToolSettingsWidgets) {
|
|
369
|
+
state = (0, appui_layout_react_1.addTab)(state, newToolSettingsWidget.id, toTabArgs(newToolSettingsWidget));
|
|
370
|
+
}
|
|
371
|
+
}
|
|
379
372
|
return state;
|
|
380
373
|
}
|
|
381
374
|
exports.addMissingWidgets = addMissingWidgets;
|
|
@@ -395,10 +388,10 @@ function hideWidgets(state, frontstageDef) {
|
|
|
395
388
|
/** Removes NineZoneState widgets that are missing in frontstageDef.
|
|
396
389
|
* @internal
|
|
397
390
|
*/
|
|
398
|
-
function removeMissingWidgets(frontstageDef,
|
|
399
|
-
|
|
391
|
+
function removeMissingWidgets(frontstageDef, state) {
|
|
392
|
+
const toolSettingsTabId = state.toolSettings?.tabId;
|
|
400
393
|
for (const [, tab] of Object.entries(state.tabs)) {
|
|
401
|
-
if (tab.id ===
|
|
394
|
+
if (tab.id === toolSettingsTabId)
|
|
402
395
|
continue;
|
|
403
396
|
const widgetDef = frontstageDef.findWidgetDef(tab.id);
|
|
404
397
|
if (widgetDef)
|
|
@@ -506,7 +499,8 @@ function getPanelMaxSize(maxSizeSpec, panel, nineZoneSize) {
|
|
|
506
499
|
: nineZoneSize.width;
|
|
507
500
|
return (maxSizeSpec.percentage / 100) * size;
|
|
508
501
|
}
|
|
509
|
-
|
|
502
|
+
/** @internal */
|
|
503
|
+
exports.stateVersion = 14; // this needs to be bumped when NineZoneState is changed (to recreate the layout).
|
|
510
504
|
/** @internal */
|
|
511
505
|
function initializeNineZoneState(frontstageDef) {
|
|
512
506
|
let nineZone = defaultNineZone;
|
|
@@ -523,29 +517,26 @@ function initializeNineZoneState(frontstageDef) {
|
|
|
523
517
|
nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation_1.StagePanelLocation.Right);
|
|
524
518
|
nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation_1.StagePanelLocation.Top);
|
|
525
519
|
nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation_1.StagePanelLocation.Bottom);
|
|
526
|
-
nineZone = (0, immer_1.default)(nineZone, (
|
|
527
|
-
for (const [, panel] of Object.entries(
|
|
528
|
-
const expanded = panel.widgets.find((widgetId) =>
|
|
529
|
-
const firstWidget = panel.widgets.length > 0
|
|
530
|
-
? stateDraft.widgets[panel.widgets[0]]
|
|
531
|
-
: undefined;
|
|
520
|
+
nineZone = (0, immer_1.default)(nineZone, (draft) => {
|
|
521
|
+
for (const [, panel] of Object.entries(draft.panels)) {
|
|
522
|
+
const expanded = panel.widgets.find((widgetId) => draft.widgets[widgetId].minimized === false);
|
|
523
|
+
const firstWidget = panel.widgets.length > 0 ? draft.widgets[panel.widgets[0]] : undefined;
|
|
532
524
|
// istanbul ignore next
|
|
533
525
|
if (!expanded && firstWidget) {
|
|
534
526
|
firstWidget.minimized = false;
|
|
535
527
|
}
|
|
536
528
|
}
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
const toolSettingsWidgetDef = frontstageDef.toolSettings;
|
|
542
|
-
if (toolSettingsWidgetDef) {
|
|
543
|
-
const toolSettingsTab = stateDraft.tabs[appui_layout_react_1.toolSettingsTabId];
|
|
544
|
-
toolSettingsTab.preferredPanelWidgetSize =
|
|
545
|
-
toolSettingsWidgetDef.preferredPanelSize;
|
|
546
|
-
}
|
|
529
|
+
draft.panels.left.collapsed = isPanelCollapsed(frontstageDef.leftPanel?.panelState);
|
|
530
|
+
draft.panels.right.collapsed = isPanelCollapsed(frontstageDef.rightPanel?.panelState);
|
|
531
|
+
draft.panels.top.collapsed = isPanelCollapsed(frontstageDef.topPanel?.panelState);
|
|
532
|
+
draft.panels.bottom.collapsed = isPanelCollapsed(frontstageDef.bottomPanel?.panelState);
|
|
547
533
|
});
|
|
548
534
|
nineZone = addMissingWidgets(frontstageDef, nineZone);
|
|
535
|
+
const toolSettingsWidgetDef = frontstageDef.toolSettings;
|
|
536
|
+
if (toolSettingsWidgetDef) {
|
|
537
|
+
const toolSettingsTabId = toolSettingsWidgetDef.id;
|
|
538
|
+
nineZone = (0, appui_layout_react_1.addDockedToolSettings)(nineZone, toolSettingsTabId);
|
|
539
|
+
}
|
|
549
540
|
nineZone = hideWidgets(nineZone, frontstageDef);
|
|
550
541
|
nineZone = processPopoutWidgets(nineZone, frontstageDef);
|
|
551
542
|
return nineZone;
|
|
@@ -559,7 +550,7 @@ exports.initializeNineZoneState = initializeNineZoneState;
|
|
|
559
550
|
function restoreNineZoneState(frontstageDef, saved) {
|
|
560
551
|
let restored = {
|
|
561
552
|
...saved,
|
|
562
|
-
tabs:
|
|
553
|
+
tabs: {},
|
|
563
554
|
};
|
|
564
555
|
for (const [, tab] of Object.entries(saved.tabs)) {
|
|
565
556
|
// Re-add the placeholder tab in order to correctly remove it from the state if WidgetDef is not found.
|
|
@@ -576,12 +567,9 @@ function restoreNineZoneState(frontstageDef, saved) {
|
|
|
576
567
|
restored = (0, immer_1.default)(restored, (draft) => {
|
|
577
568
|
draft.tabs[tab.id] = {
|
|
578
569
|
...tab,
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
canPopout: widgetDef.canPopout,
|
|
583
|
-
isFloatingStateWindowResizable: widgetDef.isFloatingStateWindowResizable,
|
|
584
|
-
allowedPanelTargets: widgetDef.allowedPanelTargets?.map((location) => (0, StagePanelDef_1.toPanelSide)(location)),
|
|
570
|
+
...toTabArgs(widgetDef),
|
|
571
|
+
preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,
|
|
572
|
+
preferredPanelWidgetSize: tab.preferredPanelWidgetSize,
|
|
585
573
|
};
|
|
586
574
|
});
|
|
587
575
|
}
|
|
@@ -639,12 +627,9 @@ function packNineZoneState(state) {
|
|
|
639
627
|
};
|
|
640
628
|
packed = (0, immer_1.default)(packed, (draft) => {
|
|
641
629
|
for (const [, tab] of Object.entries(state.tabs)) {
|
|
642
|
-
if (tab.id === appui_layout_react_1.toolSettingsTabId)
|
|
643
|
-
continue;
|
|
644
630
|
draft.tabs[tab.id] = {
|
|
645
631
|
id: tab.id,
|
|
646
632
|
preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,
|
|
647
|
-
allowedPanelTargets: tab.allowedPanelTargets,
|
|
648
633
|
userSized: tab.userSized,
|
|
649
634
|
};
|
|
650
635
|
}
|
|
@@ -744,10 +729,20 @@ function setWidgetState(state, widgetDef, widgetState) {
|
|
|
744
729
|
}
|
|
745
730
|
else if (widgetState === WidgetState_1.WidgetState.Open) {
|
|
746
731
|
const id = widgetDef.id;
|
|
732
|
+
if (widgetDef.isToolSettings) {
|
|
733
|
+
if (!state.toolSettings && !widgetDef.tabLocation) {
|
|
734
|
+
state = (0, appui_layout_react_1.addDockedToolSettings)(state, id);
|
|
735
|
+
}
|
|
736
|
+
if (state.toolSettings?.type === "docked")
|
|
737
|
+
return state;
|
|
738
|
+
}
|
|
747
739
|
let location = (0, appui_layout_react_1.getTabLocation)(state, id);
|
|
748
740
|
if (!location) {
|
|
749
741
|
state = addHiddenWidget(state, widgetDef);
|
|
750
742
|
location = (0, appui_layout_react_1.getTabLocation)(state, id);
|
|
743
|
+
if (widgetDef.isToolSettings) {
|
|
744
|
+
state = (0, appui_layout_react_1.addWidgetToolSettings)(state, id);
|
|
745
|
+
}
|
|
751
746
|
}
|
|
752
747
|
return (0, immer_1.default)(state, (draft) => {
|
|
753
748
|
(0, core_bentley_1.assert)(!!location);
|
|
@@ -771,6 +766,9 @@ function setWidgetState(state, widgetDef, widgetState) {
|
|
|
771
766
|
}
|
|
772
767
|
else if (widgetState === WidgetState_1.WidgetState.Closed) {
|
|
773
768
|
const id = widgetDef.id;
|
|
769
|
+
if (widgetDef.isToolSettings && state.toolSettings?.type !== "widget") {
|
|
770
|
+
return state;
|
|
771
|
+
}
|
|
774
772
|
let location = (0, appui_layout_react_1.getTabLocation)(state, id);
|
|
775
773
|
if (!location) {
|
|
776
774
|
state = addHiddenWidget(state, widgetDef);
|
|
@@ -801,12 +799,29 @@ function setWidgetState(state, widgetDef, widgetState) {
|
|
|
801
799
|
state = (0, appui_layout_react_1.removeTabFromWidget)(state, id);
|
|
802
800
|
const bounds = widgetDef.tabLocation?.floatingWidget?.bounds;
|
|
803
801
|
state = (0, appui_layout_react_1.addFloatingWidget)(state, (0, appui_layout_react_1.getUniqueId)(), [id], { bounds });
|
|
802
|
+
if (widgetDef.isToolSettings) {
|
|
803
|
+
if (state.toolSettings?.type === "docked") {
|
|
804
|
+
state = (0, appui_layout_react_1.removeToolSettings)(state);
|
|
805
|
+
}
|
|
806
|
+
if (!state.toolSettings) {
|
|
807
|
+
state = (0, appui_layout_react_1.addWidgetToolSettings)(state, id);
|
|
808
|
+
}
|
|
809
|
+
}
|
|
804
810
|
}
|
|
805
811
|
return state;
|
|
806
812
|
}
|
|
807
813
|
exports.setWidgetState = setWidgetState;
|
|
808
814
|
/** Stores widget location and hides it in the UI. */
|
|
809
815
|
function hideWidget(state, widgetDef) {
|
|
816
|
+
const toolSettingsTabId = state.toolSettings?.tabId;
|
|
817
|
+
if (widgetDef.id === toolSettingsTabId) {
|
|
818
|
+
widgetDef.tabLocation = undefined;
|
|
819
|
+
state = (0, immer_1.default)(state, (draft) => {
|
|
820
|
+
draft.toolSettings = undefined;
|
|
821
|
+
});
|
|
822
|
+
if (state.toolSettings?.type === "docked")
|
|
823
|
+
return state;
|
|
824
|
+
}
|
|
810
825
|
const location = (0, appui_layout_react_1.getTabLocation)(state, widgetDef.id);
|
|
811
826
|
if (!location)
|
|
812
827
|
return state;
|
|
@@ -913,8 +928,8 @@ function useSavedFrontstageState(frontstageDef) {
|
|
|
913
928
|
return;
|
|
914
929
|
if (isFrontstageStateSettingResult(settingResult)) {
|
|
915
930
|
const setting = settingResult.setting;
|
|
916
|
-
if (setting.version
|
|
917
|
-
setting.stateVersion
|
|
931
|
+
if (setting.version === version &&
|
|
932
|
+
setting.stateVersion === exports.stateVersion) {
|
|
918
933
|
const restored = restoreNineZoneState(frontstageDef, setting.nineZone);
|
|
919
934
|
frontstageDef.savedWidgetDefs = setting.widgets;
|
|
920
935
|
restoreSavedWidgets(frontstageDef);
|
|
@@ -942,7 +957,7 @@ function useSaveFrontstageSettings(frontstageDef, store) {
|
|
|
942
957
|
const setting = {
|
|
943
958
|
id,
|
|
944
959
|
version: frontstage.version,
|
|
945
|
-
stateVersion,
|
|
960
|
+
stateVersion: exports.stateVersion,
|
|
946
961
|
nineZone: packNineZoneState(state),
|
|
947
962
|
widgets,
|
|
948
963
|
};
|
|
@@ -1004,14 +1019,11 @@ const createListener = (frontstageDef, listener) => {
|
|
|
1004
1019
|
/** @internal */
|
|
1005
1020
|
function useFrontstageManager(frontstageDef, useToolAsToolSettingsLabel) {
|
|
1006
1021
|
React.useEffect(() => {
|
|
1007
|
-
|
|
1008
|
-
|
|
1022
|
+
return UiFramework_1.UiFramework.frontstages.onWidgetStateChangedEvent.addListener(({ widgetDef, widgetState }) => {
|
|
1023
|
+
if (!frontstageDef.nineZoneState)
|
|
1024
|
+
return;
|
|
1009
1025
|
frontstageDef.nineZoneState = setWidgetState(frontstageDef.nineZoneState, widgetDef, widgetState);
|
|
1010
1026
|
});
|
|
1011
|
-
UiFramework_1.UiFramework.frontstages.onWidgetStateChangedEvent.addListener(listener);
|
|
1012
|
-
return () => {
|
|
1013
|
-
UiFramework_1.UiFramework.frontstages.onWidgetStateChangedEvent.removeListener(listener);
|
|
1014
|
-
};
|
|
1015
1027
|
}, [frontstageDef]);
|
|
1016
1028
|
React.useEffect(() => {
|
|
1017
1029
|
const listener = createListener(frontstageDef, ({ widgetDef }) => {
|
|
@@ -1074,7 +1086,10 @@ function useFrontstageManager(frontstageDef, useToolAsToolSettingsLabel) {
|
|
|
1074
1086
|
const label = useToolAsToolSettingsLabel
|
|
1075
1087
|
? core_frontend_1.IModelApp.tools.find(toolId)?.flyover || defaultLabel
|
|
1076
1088
|
: defaultLabel;
|
|
1077
|
-
|
|
1089
|
+
const toolSettingsTabId = frontstageDef.nineZoneState.toolSettings?.tabId;
|
|
1090
|
+
if (!toolSettingsTabId)
|
|
1091
|
+
return;
|
|
1092
|
+
frontstageDef.nineZoneState = setWidgetLabel(frontstageDef.nineZoneState, toolSettingsTabId, label);
|
|
1078
1093
|
});
|
|
1079
1094
|
// Whenever the frontstageDef or the useTool... changes, keep the label up to date.
|
|
1080
1095
|
updateLabel();
|