@itwin/appui-react 3.5.0-dev.5 → 3.5.0-dev.51
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 +53 -1
- package/lib/cjs/appui-react/frontstage/FrontstageManager.d.ts +2 -0
- package/lib/cjs/appui-react/frontstage/FrontstageManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageManager.js +4 -0
- package/lib/cjs/appui-react/frontstage/FrontstageManager.js.map +1 -1
- package/lib/cjs/appui-react/pickers/ListPicker.scss +2 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +13 -11
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -1
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +14 -0
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
- package/lib/cjs/appui-react/tools/RestoreLayoutTool.d.ts +9 -0
- package/lib/cjs/appui-react/tools/RestoreLayoutTool.d.ts.map +1 -1
- package/lib/cjs/appui-react/tools/RestoreLayoutTool.js +17 -1
- package/lib/cjs/appui-react/tools/RestoreLayoutTool.js.map +1 -1
- package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/utils/UiShowHideManager.js +8 -0
- package/lib/cjs/appui-react/utils/UiShowHideManager.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/FloatingWidget.d.ts +7 -0
- package/lib/cjs/appui-react/widget-panels/FloatingWidget.d.ts.map +1 -0
- package/lib/cjs/appui-react/widget-panels/FloatingWidget.js +19 -0
- package/lib/cjs/appui-react/widget-panels/FloatingWidget.js.map +1 -0
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +31 -20
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +3 -0
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js +7 -0
- package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageManager.d.ts +2 -0
- package/lib/esm/appui-react/frontstage/FrontstageManager.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageManager.js +4 -0
- package/lib/esm/appui-react/frontstage/FrontstageManager.js.map +1 -1
- package/lib/esm/appui-react/pickers/ListPicker.scss +2 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +15 -13
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -1
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +14 -0
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
- package/lib/esm/appui-react/tools/RestoreLayoutTool.d.ts +9 -0
- package/lib/esm/appui-react/tools/RestoreLayoutTool.d.ts.map +1 -1
- package/lib/esm/appui-react/tools/RestoreLayoutTool.js +15 -0
- package/lib/esm/appui-react/tools/RestoreLayoutTool.js.map +1 -1
- package/lib/esm/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
- package/lib/esm/appui-react/utils/UiShowHideManager.js +8 -0
- package/lib/esm/appui-react/utils/UiShowHideManager.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/FloatingWidget.d.ts +7 -0
- package/lib/esm/appui-react/widget-panels/FloatingWidget.d.ts.map +1 -0
- package/lib/esm/appui-react/widget-panels/FloatingWidget.js +15 -0
- package/lib/esm/appui-react/widget-panels/FloatingWidget.js.map +1 -0
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +31 -20
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts +3 -0
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js +7 -0
- package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/public/locales/en/UiFramework.json +8 -3
- package/package.json +34 -34
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FloatingWidget.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/FloatingWidget.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAMH,gBAAgB;AAChB,wBAAgB,cAAc,gBAM7B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module Widget
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.FloatingWidget = void 0;
|
|
11
|
+
const React = require("react");
|
|
12
|
+
const appui_layout_react_1 = require("@itwin/appui-layout-react");
|
|
13
|
+
const UiShowHideManager_1 = require("../utils/UiShowHideManager");
|
|
14
|
+
/** @internal */
|
|
15
|
+
function FloatingWidget() {
|
|
16
|
+
return (React.createElement(appui_layout_react_1.FloatingWidget, { onMouseEnter: UiShowHideManager_1.UiShowHideManager.handleWidgetMouseEnter }));
|
|
17
|
+
}
|
|
18
|
+
exports.FloatingWidget = FloatingWidget;
|
|
19
|
+
//# sourceMappingURL=FloatingWidget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FloatingWidget.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/FloatingWidget.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAC/B,kEAAsF;AACtF,kEAA+D;AAE/D,gBAAgB;AAChB,SAAgB,cAAc;IAC5B,OAAO,CACL,oBAAC,mCAAuB,IACtB,YAAY,EAAE,qCAAiB,CAAC,sBAAsB,GACtD,CACH,CAAC;AACJ,CAAC;AAND,wCAMC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Widget\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { FloatingWidget as FloatingWidgetComponent } from \"@itwin/appui-layout-react\";\r\nimport { UiShowHideManager } from \"../utils/UiShowHideManager\";\r\n\r\n/** @internal */\r\nexport function FloatingWidget() {\r\n return (\r\n <FloatingWidgetComponent\r\n onMouseEnter={UiShowHideManager.handleWidgetMouseEnter}\r\n />\r\n );\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"AAMA;;GAEG;AAIH,OAAO,mBAAmB,CAAC;AAE3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAsC,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAa,cAAc,EAAmB,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE3H,OAAO,EAIqF,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAwB,SAAS,EAC9H,QAAQ,EACrD,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAgE,MAAM,6BAA6B,CAAC;AAG1H,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAGtF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAgD,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"AAMA;;GAEG;AAIH,OAAO,mBAAmB,CAAC;AAE3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAsC,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAa,cAAc,EAAmB,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE3H,OAAO,EAIqF,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAwB,SAAS,EAC9H,QAAQ,EACrD,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAgE,MAAM,6BAA6B,CAAC;AAG1H,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAGtF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAgD,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAqD7C,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,aAAa,6BAgB5D;AAcD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,aAAa,QAejE;AAsBD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,oBA8B/D;AAED,gBAAgB;AAChB,eAAO,MAAM,sBAAsB,oCAqBjC,CAAC;AAMH,gBAAgB;AAChB,wBAAgB,2BAA2B,CAAC,EAAE,aAAa,EAAE,EAAE;IAAE,aAAa,EAAE,aAAa,CAAA;CAAE,eAoD9F;AAED,gBAAgB;AAChB,wBAAgB,SAAS,mBAYxB;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,aAAa,CAgC3I;AAED,gBAAgB;AAEhB,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,GAAG,aAAa,CAoEtJ;AAoBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa,CA0B1G;AAkBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa,CAW7G;AAMD,aAAK,aAAa,GAChB,WAAW,GACX,SAAS,GACT,YAAY,GACZ,UAAU,GACV,UAAU,GACV,QAAQ,GACR,aAAa,GACb,WAAW,CAAC;AAed,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,qBAAqB,GAAG,aAAa,CA0BtF;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,GAAG,SAAS,EAAE,CAqFvG;AAED,gBAAgB;AAChB,wBAAgB,eAAe,CAC7B,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,SAAS,GACd,aAAa,CASf;AAED,gBAAgB;AAChB,wBAAgB,8BAA8B,CAAC,cAAc,EAAE,oBAAoB,GAAG,cAAc,IAAI;IACtG,MAAM,EAAE,oBAAoB,CAAC,OAAO,CAAC;IACrC,OAAO,EAAE,2BAA2B,CAAC;CACtC,CAIA;AAED,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,iBAiBvG;AAYD,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,aAAa,GAAG,aAAa,CAsDnF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAsE3G;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAmB1E;AA2DD,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,eAAe,GAAG,SAAS,CAAC,WAIzI;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACxB,mHAAmH;IACnH,OAAO,EAAE,MAAM,CAAC;IAChB,+FAA+F;IAC/F,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;CACxC;AAED,gBAAgB;AAChB,oBAAY,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;AAGtD,aAAK,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,WAAW,GAAG,gCAAgC,GAAG,UAAU,CAAC,CAAC;AAE3G,UAAU,cAAc;IACtB,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC;CACtC;AASD,UAAU,kBAAmB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IAC9D,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;CAE/B;AAsCD,gBAAgB;AAChB,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,iBAoEzB;AAiCD,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,iBAiBlE;AAED,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,iBAgBpE;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,iBAQrF;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,aAAa,QA2CnE;AAED,gBAAgB;AAChB,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,aAAa,QA4BrE;AAED,gBAAgB;AAChB,eAAO,MAAM,6BAA6B,4BAA4B,CAAC;AAEvE,gBAAgB;AAChB,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,2BAA2B,CAAC,IAAI,CAAC,UAE5F;AA2BD,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,aAAa,EAAE,0BAA0B,CAAC,EAAE,OAAO,QA0FtG;AAED,gBAAgB;AAEhB,wBAAgB,eAAe,CAAC,aAAa,EAAE,aAAa,QAuB3D"}
|
|
@@ -35,6 +35,7 @@ const useEscapeSetFocusToHome_1 = require("../hooks/useEscapeSetFocusToHome");
|
|
|
35
35
|
const react_redux_1 = require("react-redux");
|
|
36
36
|
const useUiVisibility_1 = require("../hooks/useUiVisibility");
|
|
37
37
|
const core_frontend_1 = require("@itwin/core-frontend");
|
|
38
|
+
const FloatingWidget_1 = require("./FloatingWidget");
|
|
38
39
|
const panelZoneKeys = ["start", "end"];
|
|
39
40
|
const WidgetInternals = React.memo(function WidgetInternals() {
|
|
40
41
|
const activeModalFrontstageInfo = (0, ModalFrontstageComposer_1.useActiveModalFrontstageInfo)();
|
|
@@ -177,6 +178,7 @@ exports.WidgetPanelsFrontstage = React.memo(function WidgetPanelsFrontstage() {
|
|
|
177
178
|
});
|
|
178
179
|
const defaultNineZone = (0, appui_layout_react_1.createNineZoneState)();
|
|
179
180
|
const tabElement = React.createElement(Tab_1.WidgetPanelsTab, null);
|
|
181
|
+
const floatingWidgetElement = React.createElement(FloatingWidget_1.FloatingWidget, null);
|
|
180
182
|
/** @internal */
|
|
181
183
|
function ActiveFrontstageDefProvider({ frontstageDef }) {
|
|
182
184
|
let nineZone = useNineZoneState(frontstageDef);
|
|
@@ -207,7 +209,7 @@ function ActiveFrontstageDefProvider({ frontstageDef }) {
|
|
|
207
209
|
useFrontstageManager(frontstageDef, useToolAsToolSettingsLabel);
|
|
208
210
|
const handleKeyDown = (0, useEscapeSetFocusToHome_1.useEscapeSetFocusToHome)();
|
|
209
211
|
return (React.createElement("div", { className: "uifw-widgetPanels-frontstage", onKeyDown: handleKeyDown, role: "presentation" },
|
|
210
|
-
React.createElement(appui_layout_react_1.NineZone, { dispatch: dispatch, labels: labels, state: nineZone, tab: tabElement, showWidgetIcon: showWidgetIcon, autoCollapseUnpinnedPanels: autoCollapseUnpinnedPanels, toolSettingsContent: toolSettingsContent, widgetContent: widgetContent, animateDockedToolSettings: animateToolSettings, uiIsVisible: uiIsVisible }, widgetPanelsFrontstage)));
|
|
212
|
+
React.createElement(appui_layout_react_1.NineZone, { dispatch: dispatch, labels: labels, state: nineZone, tab: tabElement, floatingWidget: floatingWidgetElement, showWidgetIcon: showWidgetIcon, autoCollapseUnpinnedPanels: autoCollapseUnpinnedPanels, toolSettingsContent: toolSettingsContent, widgetContent: widgetContent, animateDockedToolSettings: animateToolSettings, uiIsVisible: uiIsVisible }, widgetPanelsFrontstage)));
|
|
211
213
|
}
|
|
212
214
|
exports.ActiveFrontstageDefProvider = ActiveFrontstageDefProvider;
|
|
213
215
|
/** @internal */
|
|
@@ -241,6 +243,7 @@ function addWidgets(state, widgets, side, widgetId) {
|
|
|
241
243
|
canPopout: widget.canPopout,
|
|
242
244
|
isFloatingStateWindowResizable: widget.isFloatingStateWindowResizable,
|
|
243
245
|
hideWithUiWhenFloating: !!widget.hideWithUiWhenFloating,
|
|
246
|
+
allowedPanelTargets: widget.allowedPanelTargets,
|
|
244
247
|
});
|
|
245
248
|
tabs.push(widget.id);
|
|
246
249
|
}
|
|
@@ -280,6 +283,7 @@ function appendWidgets(state, widgetDefs, side, preferredWidgetIndex) {
|
|
|
280
283
|
userSized,
|
|
281
284
|
isFloatingStateWindowResizable: widgetDef.isFloatingStateWindowResizable,
|
|
282
285
|
hideWithUiWhenFloating: !!widgetDef.hideWithUiWhenFloating,
|
|
286
|
+
allowedPanelTargets: widgetDef.allowedPanelTargets,
|
|
283
287
|
});
|
|
284
288
|
if (widgetDef.isFloatingStateSupported && widgetDef.defaultState === appui_abstract_1.WidgetState.Floating) {
|
|
285
289
|
const floatingContainerId = (_a = widgetDef.floatingContainerId) !== null && _a !== void 0 ? _a : (0, appui_layout_react_1.getUniqueId)();
|
|
@@ -661,6 +665,7 @@ function restoreNineZoneState(frontstageDef, saved) {
|
|
|
661
665
|
iconSpec: widgetDef.iconSpec,
|
|
662
666
|
canPopout: widgetDef.canPopout,
|
|
663
667
|
isFloatingStateWindowResizable: widgetDef.isFloatingStateWindowResizable,
|
|
668
|
+
allowedPanelTargets: widgetDef.allowedPanelTargets,
|
|
664
669
|
};
|
|
665
670
|
});
|
|
666
671
|
}
|
|
@@ -729,9 +734,9 @@ function packNineZoneState(state) {
|
|
|
729
734
|
return packed;
|
|
730
735
|
}
|
|
731
736
|
exports.packNineZoneState = packNineZoneState;
|
|
732
|
-
// TODO: clean-up of saved widgets.
|
|
733
737
|
// istanbul ignore next
|
|
734
|
-
function packSavedWidgets(
|
|
738
|
+
function packSavedWidgets(frontstageDef) {
|
|
739
|
+
let savedWidgets = [];
|
|
735
740
|
for (const widgetDef of frontstageDef.widgetDefs) {
|
|
736
741
|
const id = widgetDef.id;
|
|
737
742
|
const initialWidget = {
|
|
@@ -747,17 +752,25 @@ function packSavedWidgets(savedWidgets, frontstageDef) {
|
|
|
747
752
|
});
|
|
748
753
|
if (widget === initialWidget)
|
|
749
754
|
continue;
|
|
750
|
-
savedWidgets
|
|
751
|
-
|
|
752
|
-
|
|
755
|
+
savedWidgets.push(widget);
|
|
756
|
+
}
|
|
757
|
+
// Add previously saved widgets.
|
|
758
|
+
const prevSavedWidgets = frontstageDef.savedWidgetDefs || [];
|
|
759
|
+
for (const prevWidget of prevSavedWidgets) {
|
|
760
|
+
if (savedWidgets.find((w) => w.id === prevWidget.id))
|
|
761
|
+
continue;
|
|
762
|
+
savedWidgets.push(prevWidget);
|
|
753
763
|
}
|
|
764
|
+
// Limit number of saved widgets.
|
|
765
|
+
const maxWidgets = 100;
|
|
766
|
+
if (savedWidgets.length > maxWidgets)
|
|
767
|
+
savedWidgets = savedWidgets.slice(0, maxWidgets);
|
|
754
768
|
return savedWidgets;
|
|
755
769
|
}
|
|
756
770
|
// istanbul ignore next
|
|
757
|
-
function restoreSavedWidgets(
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
const savedWidget = savedWidgets[i];
|
|
771
|
+
function restoreSavedWidgets(frontstage) {
|
|
772
|
+
const savedWidgets = frontstage.savedWidgetDefs || [];
|
|
773
|
+
for (const savedWidget of savedWidgets) {
|
|
761
774
|
const widgetId = savedWidget.id;
|
|
762
775
|
const widgetDef = frontstage.findWidgetDef(widgetId);
|
|
763
776
|
if (!widgetDef)
|
|
@@ -768,11 +781,7 @@ function restoreSavedWidgets(savedWidgets, frontstage) {
|
|
|
768
781
|
if (savedWidget.popoutBounds) {
|
|
769
782
|
widgetDef.popoutBounds = core_react_1.Rectangle.create(savedWidget.popoutBounds);
|
|
770
783
|
}
|
|
771
|
-
savedWidgets = (0, immer_1.default)(savedWidgets, (draft) => {
|
|
772
|
-
draft.splice(i, 1);
|
|
773
|
-
});
|
|
774
784
|
}
|
|
775
|
-
return savedWidgets;
|
|
776
785
|
}
|
|
777
786
|
/** @internal */
|
|
778
787
|
function isPanelCollapsed(zoneStates, panelStates) {
|
|
@@ -988,12 +997,12 @@ function useSavedFrontstageState(frontstageDef) {
|
|
|
988
997
|
const setting = settingResult.setting;
|
|
989
998
|
if (setting.version >= version && setting.stateVersion >= stateVersion) {
|
|
990
999
|
const restored = restoreNineZoneState(frontstageDef, setting.nineZone);
|
|
991
|
-
|
|
1000
|
+
frontstageDef.savedWidgetDefs = setting.widgets;
|
|
1001
|
+
restoreSavedWidgets(frontstageDef);
|
|
992
1002
|
let state = addMissingWidgets(frontstageDef, restored);
|
|
993
1003
|
state = hideWidgets(state, frontstageDef);
|
|
994
1004
|
state = processPopoutWidgets(state, frontstageDef);
|
|
995
1005
|
frontstageDef.nineZoneState = state;
|
|
996
|
-
frontstageDef.savedWidgetDefs = savedWidgets;
|
|
997
1006
|
return;
|
|
998
1007
|
}
|
|
999
1008
|
}
|
|
@@ -1008,14 +1017,16 @@ function useSaveFrontstageSettings(frontstageDef) {
|
|
|
1008
1017
|
const nineZone = useNineZoneState(frontstageDef);
|
|
1009
1018
|
const uiSettingsStorage = (0, useUiStateStorage_1.useUiStateStorageHandler)();
|
|
1010
1019
|
const saveSetting = React.useMemo(() => {
|
|
1011
|
-
return debounce(async (frontstage, state
|
|
1020
|
+
return debounce(async (frontstage, state) => {
|
|
1012
1021
|
const id = frontstage.id;
|
|
1022
|
+
const widgets = packSavedWidgets(frontstage);
|
|
1023
|
+
frontstage.savedWidgetDefs = widgets;
|
|
1013
1024
|
const setting = {
|
|
1014
1025
|
id,
|
|
1015
1026
|
version: frontstage.version,
|
|
1016
1027
|
stateVersion,
|
|
1017
1028
|
nineZone: packNineZoneState(state),
|
|
1018
|
-
widgets
|
|
1029
|
+
widgets,
|
|
1019
1030
|
};
|
|
1020
1031
|
await uiSettingsStorage.saveSetting(exports.FRONTSTAGE_SETTINGS_NAMESPACE, getFrontstageStateSettingName(id), setting);
|
|
1021
1032
|
}, 1000);
|
|
@@ -1028,8 +1039,7 @@ function useSaveFrontstageSettings(frontstageDef) {
|
|
|
1028
1039
|
React.useEffect(() => {
|
|
1029
1040
|
if (!nineZone || nineZone.draggedTab)
|
|
1030
1041
|
return;
|
|
1031
|
-
|
|
1032
|
-
saveSetting(frontstageDef, nineZone, savedWidgets);
|
|
1042
|
+
saveSetting(frontstageDef, nineZone);
|
|
1033
1043
|
}, [frontstageDef, nineZone, saveSetting]);
|
|
1034
1044
|
}
|
|
1035
1045
|
exports.useSaveFrontstageSettings = useSaveFrontstageSettings;
|
|
@@ -1161,6 +1171,7 @@ function useItemsManager(frontstageDef) {
|
|
|
1161
1171
|
const refreshNineZoneState = (def) => {
|
|
1162
1172
|
// Fired for both registered/unregistered. Update definitions and remove/add missing widgets.
|
|
1163
1173
|
def.updateWidgetDefs();
|
|
1174
|
+
restoreSavedWidgets(def);
|
|
1164
1175
|
let state = def.nineZoneState;
|
|
1165
1176
|
if (!state)
|
|
1166
1177
|
return;
|