@itwin/appui-abstract 3.2.0-dev.8 → 3.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/CHANGELOG.md +34 -1
- package/lib/cjs/appui-abstract/BaseUiItemsProvider.d.ts +31 -0
- package/lib/cjs/appui-abstract/BaseUiItemsProvider.d.ts.map +1 -0
- package/lib/cjs/appui-abstract/BaseUiItemsProvider.js +80 -0
- package/lib/cjs/appui-abstract/BaseUiItemsProvider.js.map +1 -0
- package/lib/cjs/appui-abstract/UiItemsManager.d.ts +31 -43
- package/lib/cjs/appui-abstract/UiItemsManager.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/UiItemsManager.js +61 -88
- package/lib/cjs/appui-abstract/UiItemsManager.js.map +1 -1
- package/lib/cjs/appui-abstract/UiItemsProvider.d.ts +28 -0
- package/lib/cjs/appui-abstract/UiItemsProvider.d.ts.map +1 -0
- package/lib/cjs/appui-abstract/UiItemsProvider.js +11 -0
- package/lib/cjs/appui-abstract/UiItemsProvider.js.map +1 -0
- package/lib/cjs/appui-abstract/backstage/BackstageItem.d.ts +1 -1
- package/lib/cjs/appui-abstract/backstage/BackstageItem.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/backstage/BackstageItem.js +2 -0
- package/lib/cjs/appui-abstract/backstage/BackstageItem.js.map +1 -1
- package/lib/cjs/appui-abstract/items/AbstractItemProps.d.ts +1 -1
- package/lib/cjs/appui-abstract/items/AbstractItemProps.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/items/AbstractItemProps.js.map +1 -1
- package/lib/cjs/appui-abstract/items/AbstractMenuItemProps.d.ts +1 -1
- package/lib/cjs/appui-abstract/items/AbstractMenuItemProps.js.map +1 -1
- package/lib/cjs/appui-abstract/properties/EditorParams.d.ts +1 -1
- package/lib/cjs/appui-abstract/properties/EditorParams.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/properties/EditorParams.js.map +1 -1
- package/lib/cjs/appui-abstract/statusbar/StatusBarItem.d.ts +2 -2
- package/lib/cjs/appui-abstract/statusbar/StatusBarItem.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/statusbar/StatusBarItem.js.map +1 -1
- package/lib/cjs/appui-abstract/toolbars/ToolbarItem.d.ts +3 -3
- package/lib/cjs/appui-abstract/toolbars/ToolbarItem.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/toolbars/ToolbarItem.js.map +1 -1
- package/lib/cjs/appui-abstract/utils/IconSpecUtilities.d.ts +18 -3
- package/lib/cjs/appui-abstract/utils/IconSpecUtilities.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/utils/IconSpecUtilities.js +25 -3
- package/lib/cjs/appui-abstract/utils/IconSpecUtilities.js.map +1 -1
- package/lib/cjs/appui-abstract/widget/AbstractWidgetProps.d.ts +13 -6
- package/lib/cjs/appui-abstract/widget/AbstractWidgetProps.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/widget/AbstractWidgetProps.js.map +1 -1
- package/lib/cjs/appui-abstract/widget/StagePanel.d.ts +1 -0
- package/lib/cjs/appui-abstract/widget/StagePanel.d.ts.map +1 -1
- package/lib/cjs/appui-abstract/widget/StagePanel.js +1 -0
- package/lib/cjs/appui-abstract/widget/StagePanel.js.map +1 -1
- package/lib/cjs/appui-abstract.d.ts +2 -0
- package/lib/cjs/appui-abstract.d.ts.map +1 -1
- package/lib/cjs/appui-abstract.js +2 -0
- package/lib/cjs/appui-abstract.js.map +1 -1
- package/lib/esm/appui-abstract/BaseUiItemsProvider.d.ts +31 -0
- package/lib/esm/appui-abstract/BaseUiItemsProvider.d.ts.map +1 -0
- package/lib/esm/appui-abstract/BaseUiItemsProvider.js +76 -0
- package/lib/esm/appui-abstract/BaseUiItemsProvider.js.map +1 -0
- package/lib/esm/appui-abstract/UiItemsManager.d.ts +31 -43
- package/lib/esm/appui-abstract/UiItemsManager.d.ts.map +1 -1
- package/lib/esm/appui-abstract/UiItemsManager.js +60 -86
- package/lib/esm/appui-abstract/UiItemsManager.js.map +1 -1
- package/lib/esm/appui-abstract/UiItemsProvider.d.ts +28 -0
- package/lib/esm/appui-abstract/UiItemsProvider.d.ts.map +1 -0
- package/lib/esm/appui-abstract/UiItemsProvider.js +10 -0
- package/lib/esm/appui-abstract/UiItemsProvider.js.map +1 -0
- package/lib/esm/appui-abstract/backstage/BackstageItem.d.ts +1 -1
- package/lib/esm/appui-abstract/backstage/BackstageItem.d.ts.map +1 -1
- package/lib/esm/appui-abstract/backstage/BackstageItem.js +2 -0
- package/lib/esm/appui-abstract/backstage/BackstageItem.js.map +1 -1
- package/lib/esm/appui-abstract/items/AbstractItemProps.d.ts +1 -1
- package/lib/esm/appui-abstract/items/AbstractItemProps.d.ts.map +1 -1
- package/lib/esm/appui-abstract/items/AbstractItemProps.js.map +1 -1
- package/lib/esm/appui-abstract/items/AbstractMenuItemProps.d.ts +1 -1
- package/lib/esm/appui-abstract/items/AbstractMenuItemProps.js.map +1 -1
- package/lib/esm/appui-abstract/properties/EditorParams.d.ts +1 -1
- package/lib/esm/appui-abstract/properties/EditorParams.d.ts.map +1 -1
- package/lib/esm/appui-abstract/properties/EditorParams.js.map +1 -1
- package/lib/esm/appui-abstract/statusbar/StatusBarItem.d.ts +2 -2
- package/lib/esm/appui-abstract/statusbar/StatusBarItem.d.ts.map +1 -1
- package/lib/esm/appui-abstract/statusbar/StatusBarItem.js.map +1 -1
- package/lib/esm/appui-abstract/toolbars/ToolbarItem.d.ts +3 -3
- package/lib/esm/appui-abstract/toolbars/ToolbarItem.d.ts.map +1 -1
- package/lib/esm/appui-abstract/toolbars/ToolbarItem.js.map +1 -1
- package/lib/esm/appui-abstract/utils/IconSpecUtilities.d.ts +18 -3
- package/lib/esm/appui-abstract/utils/IconSpecUtilities.d.ts.map +1 -1
- package/lib/esm/appui-abstract/utils/IconSpecUtilities.js +25 -3
- package/lib/esm/appui-abstract/utils/IconSpecUtilities.js.map +1 -1
- package/lib/esm/appui-abstract/widget/AbstractWidgetProps.d.ts +13 -6
- package/lib/esm/appui-abstract/widget/AbstractWidgetProps.d.ts.map +1 -1
- package/lib/esm/appui-abstract/widget/AbstractWidgetProps.js.map +1 -1
- package/lib/esm/appui-abstract/widget/StagePanel.d.ts +1 -0
- package/lib/esm/appui-abstract/widget/StagePanel.d.ts.map +1 -1
- package/lib/esm/appui-abstract/widget/StagePanel.js +1 -0
- package/lib/esm/appui-abstract/widget/StagePanel.js.map +1 -1
- package/lib/esm/appui-abstract.d.ts +2 -0
- package/lib/esm/appui-abstract.d.ts.map +1 -1
- package/lib/esm/appui-abstract.js +2 -0
- package/lib/esm/appui-abstract.js.map +1 -1
- package/package.json +8 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,39 @@
|
|
|
1
1
|
# Change Log - @itwin/appui-abstract
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Fri, 15 Apr 2022 13:49:25 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 3.1.3
|
|
6
|
+
Fri, 15 Apr 2022 13:49:25 GMT
|
|
7
|
+
|
|
8
|
+
_Version update only_
|
|
9
|
+
|
|
10
|
+
## 3.1.2
|
|
11
|
+
Wed, 06 Apr 2022 22:27:56 GMT
|
|
12
|
+
|
|
13
|
+
_Version update only_
|
|
14
|
+
|
|
15
|
+
## 3.1.1
|
|
16
|
+
Thu, 31 Mar 2022 15:55:48 GMT
|
|
17
|
+
|
|
18
|
+
_Version update only_
|
|
19
|
+
|
|
20
|
+
## 3.1.0
|
|
21
|
+
Tue, 29 Mar 2022 20:53:46 GMT
|
|
22
|
+
|
|
23
|
+
### Updates
|
|
24
|
+
|
|
25
|
+
- Fix missing parameter in UiManager.getWidgets call and pass provider to isSupportedStage function.
|
|
26
|
+
- Provide internal method to clear out all registered item providers for use in unit testing.
|
|
27
|
+
|
|
28
|
+
## 3.0.3
|
|
29
|
+
Fri, 25 Mar 2022 15:10:01 GMT
|
|
30
|
+
|
|
31
|
+
_Version update only_
|
|
32
|
+
|
|
33
|
+
## 3.0.2
|
|
34
|
+
Thu, 10 Mar 2022 21:18:13 GMT
|
|
35
|
+
|
|
36
|
+
_Version update only_
|
|
4
37
|
|
|
5
38
|
## 3.0.1
|
|
6
39
|
Thu, 24 Feb 2022 15:26:55 GMT
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module UiItemsProvider
|
|
3
|
+
*/
|
|
4
|
+
import { BackstageItem } from "./backstage/BackstageItem";
|
|
5
|
+
import { CommonStatusBarItem } from "./statusbar/StatusBarItem";
|
|
6
|
+
import { CommonToolbarItem, ToolbarOrientation, ToolbarUsage } from "./toolbars/ToolbarItem";
|
|
7
|
+
import { AbstractWidgetProps } from "./widget/AbstractWidgetProps";
|
|
8
|
+
import { AbstractZoneLocation, StagePanelLocation, StagePanelSection } from "./widget/StagePanel";
|
|
9
|
+
import { UiItemsProvider } from "./UiItemsProvider";
|
|
10
|
+
/**
|
|
11
|
+
* Base implementation of a UiItemsProvider. The base class allows the user to pass in a function that is used to determine if the
|
|
12
|
+
* active stage should be provided items. Derived provider classes should override the `xxxInternal` methods to provide items.
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export declare class BaseUiItemsProvider implements UiItemsProvider {
|
|
16
|
+
protected _providerId: string;
|
|
17
|
+
isSupportedStage?: ((stageId: string, stageUsage: string, stageAppData?: any, provider?: UiItemsProvider | undefined) => boolean) | undefined;
|
|
18
|
+
constructor(_providerId: string, isSupportedStage?: ((stageId: string, stageUsage: string, stageAppData?: any, provider?: UiItemsProvider | undefined) => boolean) | undefined);
|
|
19
|
+
get id(): string;
|
|
20
|
+
onUnregister(): void;
|
|
21
|
+
unregister(): void;
|
|
22
|
+
/** Backstage items are not stage specific so no callback is used */
|
|
23
|
+
provideBackstageItems(): BackstageItem[];
|
|
24
|
+
provideToolbarButtonItemsInternal(_stageId: string, _stageUsage: string, _toolbarUsage: ToolbarUsage, _toolbarOrientation: ToolbarOrientation, _stageAppData?: any): CommonToolbarItem[];
|
|
25
|
+
provideToolbarButtonItems(stageId: string, stageUsage: string, toolbarUsage: ToolbarUsage, toolbarOrientation: ToolbarOrientation, stageAppData?: any): CommonToolbarItem[];
|
|
26
|
+
provideStatusBarItemsInternal(_stageId: string, _stageUsage: string, _stageAppData?: any): CommonStatusBarItem[];
|
|
27
|
+
provideStatusBarItems(stageId: string, stageUsage: string, stageAppData?: any): CommonStatusBarItem[];
|
|
28
|
+
provideWidgetsInternal(_stageId: string, _stageUsage: string, _location: StagePanelLocation, _section?: StagePanelSection, _zoneLocation?: AbstractZoneLocation, _stageAppData?: any): AbstractWidgetProps[];
|
|
29
|
+
provideWidgets(stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection, _zoneLocation?: AbstractZoneLocation, stageAppData?: any): ReadonlyArray<AbstractWidgetProps>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=BaseUiItemsProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseUiItemsProvider.d.ts","sourceRoot":"","sources":["../../../src/appui-abstract/BaseUiItemsProvider.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAElG,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IAO7C,SAAS,CAAC,WAAW,EAAE,MAAM;IAAS,gBAAgB,CAAC,aAAY,MAAM,cAAc,MAAM,iBAAiB,GAAG,6CAAiC,OAAO;gBAA/I,WAAW,EAAE,MAAM,EAAS,gBAAgB,CAAC,aAAY,MAAM,cAAc,MAAM,iBAAiB,GAAG,6CAAiC,OAAO,aAAA;IAErK,IAAW,EAAE,IAAI,MAAM,CAA6B;IAC7C,YAAY,IAAI,IAAI;IAEpB,UAAU;IAIjB,oEAAoE;IAC7D,qBAAqB,IAAI,aAAa,EAAE;IAIxC,iCAAiC,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,iBAAiB,EAAE;IAGxL,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,YAAY,CAAC,EAAE,GAAG,GAAG,iBAAiB,EAAE;IAY3K,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,mBAAmB,EAAE;IAGhH,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,GAAG,GAAG,mBAAmB,EAAE;IAYrG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,oBAAoB,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,mBAAmB,EAAE;IAI5M,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAClH,aAAa,CAAC,EAAE,oBAAoB,EAAE,YAAY,CAAC,EAAE,GAAG,GAAG,aAAa,CAAC,mBAAmB,CAAC;CAWhG"}
|
|
@@ -0,0 +1,80 @@
|
|
|
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
|
+
/* eslint-disable deprecation/deprecation */
|
|
7
|
+
/** @packageDocumentation
|
|
8
|
+
* @module UiItemsProvider
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.BaseUiItemsProvider = void 0;
|
|
12
|
+
const StageUsage_1 = require("./items/StageUsage");
|
|
13
|
+
const UiItemsManager_1 = require("./UiItemsManager");
|
|
14
|
+
/**
|
|
15
|
+
* Base implementation of a UiItemsProvider. The base class allows the user to pass in a function that is used to determine if the
|
|
16
|
+
* active stage should be provided items. Derived provider classes should override the `xxxInternal` methods to provide items.
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
class BaseUiItemsProvider {
|
|
20
|
+
/*
|
|
21
|
+
* @param providerId - unique identifier for this instance of the provider. This is required in case separate packages want
|
|
22
|
+
* to set up custom stage with their own subset of standard tools.
|
|
23
|
+
* @param isSupportedStage - optional function that will be called to determine if tools should be added to current stage. If not set and
|
|
24
|
+
* the current stage's `usage` is set to `StageUsage.General` then the provider will add items to frontstage.
|
|
25
|
+
*/
|
|
26
|
+
constructor(_providerId, isSupportedStage) {
|
|
27
|
+
this._providerId = _providerId;
|
|
28
|
+
this.isSupportedStage = isSupportedStage;
|
|
29
|
+
}
|
|
30
|
+
get id() { return this._providerId; }
|
|
31
|
+
onUnregister() { }
|
|
32
|
+
unregister() {
|
|
33
|
+
UiItemsManager_1.UiItemsManager.unregister(this._providerId);
|
|
34
|
+
}
|
|
35
|
+
/** Backstage items are not stage specific so no callback is used */
|
|
36
|
+
provideBackstageItems() {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
provideToolbarButtonItemsInternal(_stageId, _stageUsage, _toolbarUsage, _toolbarOrientation, _stageAppData) {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
provideToolbarButtonItems(stageId, stageUsage, toolbarUsage, toolbarOrientation, stageAppData) {
|
|
43
|
+
let provideToStage = false;
|
|
44
|
+
if (this.isSupportedStage) {
|
|
45
|
+
provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData, this);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
provideToStage = (stageUsage === StageUsage_1.StageUsage.General);
|
|
49
|
+
}
|
|
50
|
+
return provideToStage ? this.provideToolbarButtonItemsInternal(stageId, stageUsage, toolbarUsage, toolbarOrientation, stageAppData) : [];
|
|
51
|
+
}
|
|
52
|
+
provideStatusBarItemsInternal(_stageId, _stageUsage, _stageAppData) {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
provideStatusBarItems(stageId, stageUsage, stageAppData) {
|
|
56
|
+
let provideToStage = false;
|
|
57
|
+
if (this.isSupportedStage) {
|
|
58
|
+
provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData, this);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
provideToStage = (stageUsage === StageUsage_1.StageUsage.General);
|
|
62
|
+
}
|
|
63
|
+
return provideToStage ? this.provideStatusBarItemsInternal(stageId, stageUsage, stageAppData) : [];
|
|
64
|
+
}
|
|
65
|
+
provideWidgetsInternal(_stageId, _stageUsage, _location, _section, _zoneLocation, _stageAppData) {
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
provideWidgets(stageId, stageUsage, location, section, _zoneLocation, stageAppData) {
|
|
69
|
+
let provideToStage = false;
|
|
70
|
+
if (this.isSupportedStage) {
|
|
71
|
+
provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData, this);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
provideToStage = (stageUsage === StageUsage_1.StageUsage.General);
|
|
75
|
+
}
|
|
76
|
+
return provideToStage ? this.provideWidgetsInternal(stageId, stageUsage, location, section, _zoneLocation, stageAppData) : [];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.BaseUiItemsProvider = BaseUiItemsProvider;
|
|
80
|
+
//# sourceMappingURL=BaseUiItemsProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseUiItemsProvider.js","sourceRoot":"","sources":["../../../src/appui-abstract/BaseUiItemsProvider.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F,4CAA4C;AAC5C;;GAEG;;;AAOH,mDAAgD;AAEhD,qDAAkD;AAElD;;;;GAIG;AACH,MAAa,mBAAmB;IAC9B;;;;;OAKG;IACH,YAAsB,WAAmB,EAAS,gBAAmH;QAA/I,gBAAW,GAAX,WAAW,CAAQ;QAAS,qBAAgB,GAAhB,gBAAgB,CAAmG;IAAI,CAAC;IAE1K,IAAW,EAAE,KAAa,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7C,YAAY,KAAW,CAAC;IAExB,UAAU;QACf,+BAAc,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,oEAAoE;IAC7D,qBAAqB;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,iCAAiC,CAAC,QAAgB,EAAE,WAAmB,EAAE,aAA2B,EAAE,mBAAuC,EAAE,aAAmB;QACvK,OAAO,EAAE,CAAC;IACZ,CAAC;IACM,yBAAyB,CAAC,OAAe,EAAE,UAAkB,EAAE,YAA0B,EAAE,kBAAsC,EAAE,YAAkB;QAC1J,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;SACjF;aAAM;YACL,cAAc,GAAG,CAAC,UAAU,KAAK,uBAAU,CAAC,OAAO,CAAC,CAAC;SACtD;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3I,CAAC;IAEM,6BAA6B,CAAC,QAAgB,EAAE,WAAmB,EAAE,aAAmB;QAC7F,OAAO,EAAE,CAAC;IACZ,CAAC;IACM,qBAAqB,CAAC,OAAe,EAAE,UAAkB,EAAE,YAAkB;QAClF,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;SACjF;aAAM;YACL,cAAc,GAAG,CAAC,UAAU,KAAK,uBAAU,CAAC,OAAO,CAAC,CAAC;SACtD;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrG,CAAC;IAEM,sBAAsB,CAAC,QAAgB,EAAE,WAAmB,EAAE,SAA6B,EAAE,QAA4B,EAAE,aAAoC,EAAE,aAAmB;QACzL,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,cAAc,CAAC,OAAe,EAAE,UAAkB,EAAE,QAA4B,EAAE,OAA2B,EAClH,aAAoC,EAAE,YAAkB;QACxD,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;SACjF;aAAM;YACL,cAAc,GAAG,CAAC,UAAU,KAAK,uBAAU,CAAC,OAAO,CAAC,CAAC;SACtD;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChI,CAAC;CACF;AAnED,kDAmEC","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/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module UiItemsProvider\r\n */\r\n\r\nimport { BackstageItem } from \"./backstage/BackstageItem\";\r\nimport { CommonStatusBarItem } from \"./statusbar/StatusBarItem\";\r\nimport { CommonToolbarItem, ToolbarOrientation, ToolbarUsage } from \"./toolbars/ToolbarItem\";\r\nimport { AbstractWidgetProps } from \"./widget/AbstractWidgetProps\";\r\nimport { AbstractZoneLocation, StagePanelLocation, StagePanelSection } from \"./widget/StagePanel\";\r\nimport { StageUsage } from \"./items/StageUsage\";\r\nimport { UiItemsProvider } from \"./UiItemsProvider\";\r\nimport { UiItemsManager } from \"./UiItemsManager\";\r\n\r\n/**\r\n * Base implementation of a UiItemsProvider. The base class allows the user to pass in a function that is used to determine if the\r\n * active stage should be provided items. Derived provider classes should override the `xxxInternal` methods to provide items.\r\n * @public\r\n */\r\nexport class BaseUiItemsProvider implements UiItemsProvider {\r\n /*\r\n * @param providerId - unique identifier for this instance of the provider. This is required in case separate packages want\r\n * to set up custom stage with their own subset of standard tools.\r\n * @param isSupportedStage - optional function that will be called to determine if tools should be added to current stage. If not set and\r\n * the current stage's `usage` is set to `StageUsage.General` then the provider will add items to frontstage.\r\n */\r\n constructor(protected _providerId: string, public isSupportedStage?: (stageId: string, stageUsage: string, stageAppData?: any, provider?: UiItemsProvider) => boolean) { }\r\n\r\n public get id(): string { return this._providerId; }\r\n public onUnregister(): void { }\r\n\r\n public unregister() {\r\n UiItemsManager.unregister(this._providerId);\r\n }\r\n\r\n /** Backstage items are not stage specific so no callback is used */\r\n public provideBackstageItems(): BackstageItem[] {\r\n return [];\r\n }\r\n\r\n public provideToolbarButtonItemsInternal(_stageId: string, _stageUsage: string, _toolbarUsage: ToolbarUsage, _toolbarOrientation: ToolbarOrientation, _stageAppData?: any): CommonToolbarItem[] {\r\n return [];\r\n }\r\n public provideToolbarButtonItems(stageId: string, stageUsage: string, toolbarUsage: ToolbarUsage, toolbarOrientation: ToolbarOrientation, stageAppData?: any): CommonToolbarItem[] {\r\n let provideToStage = false;\r\n\r\n if (this.isSupportedStage) {\r\n provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData, this);\r\n } else {\r\n provideToStage = (stageUsage === StageUsage.General);\r\n }\r\n\r\n return provideToStage ? this.provideToolbarButtonItemsInternal(stageId, stageUsage, toolbarUsage, toolbarOrientation, stageAppData) : [];\r\n }\r\n\r\n public provideStatusBarItemsInternal(_stageId: string, _stageUsage: string, _stageAppData?: any): CommonStatusBarItem[] {\r\n return [];\r\n }\r\n public provideStatusBarItems(stageId: string, stageUsage: string, stageAppData?: any): CommonStatusBarItem[] {\r\n let provideToStage = false;\r\n\r\n if (this.isSupportedStage) {\r\n provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData, this);\r\n } else {\r\n provideToStage = (stageUsage === StageUsage.General);\r\n }\r\n\r\n return provideToStage ? this.provideStatusBarItemsInternal(stageId, stageUsage, stageAppData) : [];\r\n }\r\n\r\n public provideWidgetsInternal(_stageId: string, _stageUsage: string, _location: StagePanelLocation, _section?: StagePanelSection, _zoneLocation?: AbstractZoneLocation, _stageAppData?: any): AbstractWidgetProps[] {\r\n return [];\r\n }\r\n\r\n public provideWidgets(stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection,\r\n _zoneLocation?: AbstractZoneLocation, stageAppData?: any): ReadonlyArray<AbstractWidgetProps> {\r\n let provideToStage = false;\r\n\r\n if (this.isSupportedStage) {\r\n provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData, this);\r\n } else {\r\n provideToStage = (stageUsage === StageUsage.General);\r\n }\r\n\r\n return provideToStage ? this.provideWidgetsInternal(stageId, stageUsage, location, section, _zoneLocation, stageAppData) : [];\r\n }\r\n}\r\n"]}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module UiItemsProvider
|
|
3
3
|
*/
|
|
4
|
-
import { BeEvent } from "@itwin/core-bentley";
|
|
4
|
+
import { BeEvent, MarkRequired } from "@itwin/core-bentley";
|
|
5
5
|
import { BackstageItem } from "./backstage/BackstageItem";
|
|
6
6
|
import { CommonStatusBarItem } from "./statusbar/StatusBarItem";
|
|
7
7
|
import { CommonToolbarItem, ToolbarOrientation, ToolbarUsage } from "./toolbars/ToolbarItem";
|
|
8
8
|
import { AbstractWidgetProps } from "./widget/AbstractWidgetProps";
|
|
9
9
|
import { AbstractZoneLocation, StagePanelLocation, StagePanelSection } from "./widget/StagePanel";
|
|
10
|
+
import { UiItemsProvider } from "./UiItemsProvider";
|
|
10
11
|
/** Action taken by the application on item provided by a UiItemsProvider
|
|
11
|
-
* @public
|
|
12
|
+
* @public @deprecated this was only used by the previously removed UiItemsArbiter.
|
|
12
13
|
*/
|
|
13
14
|
export declare enum UiItemsApplicationAction {
|
|
14
15
|
/** Allow the change to the item */
|
|
@@ -18,52 +19,38 @@ export declare enum UiItemsApplicationAction {
|
|
|
18
19
|
/** Update the item during the change */
|
|
19
20
|
Update = 2
|
|
20
21
|
}
|
|
21
|
-
/** Describes interface of objects that want to provide UI component to the running IModelApp.
|
|
22
|
-
* @public
|
|
23
|
-
*/
|
|
24
|
-
export interface UiItemsProvider {
|
|
25
|
-
/** id of provider */
|
|
26
|
-
readonly id: string;
|
|
27
|
-
/** UiItemsManager calls following method to get items to populate specific toolbars */
|
|
28
|
-
provideToolbarButtonItems?: (stageId: string, stageUsage: string, toolbarUsage: ToolbarUsage, toolbarOrientation: ToolbarOrientation, stageAppData?: any) => CommonToolbarItem[];
|
|
29
|
-
/** UiItemsManager calls following method to augment base statusbar for stages that allow it. */
|
|
30
|
-
provideStatusBarItems?: (stageId: string, stageUsage: string, stageAppData?: any) => CommonStatusBarItem[];
|
|
31
|
-
/** UiItemsManager calls following method to augment backstage items. */
|
|
32
|
-
provideBackstageItems?: () => BackstageItem[];
|
|
33
|
-
/** UiItemsManager calls following method to augment Widget lists.
|
|
34
|
-
* @note Returned widgets must provide unique `AbstractWidgetProps["id"]` to correctly save/restore App layout.
|
|
35
|
-
*/
|
|
36
|
-
provideWidgets?: (stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection, zoneLocation?: AbstractZoneLocation, stageAppData?: any) => ReadonlyArray<AbstractWidgetProps>;
|
|
37
|
-
/** Function called when the provider is unregistered via `ItemsManager.unregister` to allow provider to do cleanup. */
|
|
38
|
-
onUnregister?: () => void;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Base implementation of a UiItemsProvider. The base class allows the user to pass in a function that is used to determine if the
|
|
42
|
-
* active stage should be provided items. Derived provider classes should override the `xxxInternal` methods to provide items.
|
|
43
|
-
* @public
|
|
44
|
-
*/
|
|
45
|
-
export declare class BaseUiItemsProvider implements UiItemsProvider {
|
|
46
|
-
protected _providerId: string;
|
|
47
|
-
isSupportedStage?: ((stageId: string, stageUsage: string, stageAppData?: any) => boolean) | undefined;
|
|
48
|
-
constructor(_providerId: string, isSupportedStage?: ((stageId: string, stageUsage: string, stageAppData?: any) => boolean) | undefined);
|
|
49
|
-
get id(): string;
|
|
50
|
-
onUnregister(): void;
|
|
51
|
-
unregister(): void;
|
|
52
|
-
/** Backstage items are not stage specific so no callback is used */
|
|
53
|
-
provideBackstageItems(): BackstageItem[];
|
|
54
|
-
provideToolbarButtonItemsInternal(_stageId: string, _stageUsage: string, _toolbarUsage: ToolbarUsage, _toolbarOrientation: ToolbarOrientation, _stageAppData?: any): CommonToolbarItem[];
|
|
55
|
-
provideToolbarButtonItems(stageId: string, stageUsage: string, toolbarUsage: ToolbarUsage, toolbarOrientation: ToolbarOrientation, stageAppData?: any): CommonToolbarItem[];
|
|
56
|
-
provideStatusBarItemsInternal(_stageId: string, _stageUsage: string, _stageAppData?: any): CommonStatusBarItem[];
|
|
57
|
-
provideStatusBarItems(stageId: string, stageUsage: string, stageAppData?: any): CommonStatusBarItem[];
|
|
58
|
-
provideWidgetsInternal(_stageId: string, _stageUsage: string, _location: StagePanelLocation, _section?: StagePanelSection, _stageAppData?: any): AbstractWidgetProps[];
|
|
59
|
-
provideWidgets(stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection, _zoneLocation?: AbstractZoneLocation, stageAppData?: any): ReadonlyArray<AbstractWidgetProps>;
|
|
60
|
-
}
|
|
61
22
|
/** UIProvider Registered Event Args interface.
|
|
62
23
|
* @public
|
|
63
24
|
*/
|
|
64
25
|
export interface UiItemProviderRegisteredEventArgs {
|
|
65
26
|
providerId: string;
|
|
66
27
|
}
|
|
28
|
+
/** UiItemProviderOverrides allows the application that registers a provider to limit when it is allowed to provide items
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
export interface AllowedUiItemProviderOverrides {
|
|
32
|
+
/** allows providerId to be overridden in the items manager for cases where the same provider needs to provide different content to different stages
|
|
33
|
+
* @beta
|
|
34
|
+
*/
|
|
35
|
+
providerId?: string;
|
|
36
|
+
/** if specified then the current stage's Usage will be compared before allowing any items to be provided
|
|
37
|
+
* @beta
|
|
38
|
+
*/
|
|
39
|
+
stageUsages?: string[];
|
|
40
|
+
/** if specified then the current stage's Id will be compared before allowing any items to be provided
|
|
41
|
+
* @beta
|
|
42
|
+
*/
|
|
43
|
+
stageIds?: string[];
|
|
44
|
+
}
|
|
45
|
+
/** Allowed overrides applied to a UiItemsProvider the application that registers a provider to limit when it is allowed to provide items.
|
|
46
|
+
* Note that if an override `providerId` is specified then either `stageIds` or `stageUsages` must be defined to limit when the provider's
|
|
47
|
+
* items are allowed.
|
|
48
|
+
* @public
|
|
49
|
+
*/
|
|
50
|
+
export declare type UiItemProviderOverrides = MarkRequired<AllowedUiItemProviderOverrides, "providerId" | "stageUsages"> | MarkRequired<AllowedUiItemProviderOverrides, "providerId" | "stageIds"> | // eslint-disable-line @typescript-eslint/indent
|
|
51
|
+
MarkRequired<AllowedUiItemProviderOverrides, "stageIds"> | // eslint-disable-line @typescript-eslint/indent
|
|
52
|
+
MarkRequired<AllowedUiItemProviderOverrides, "stageUsages"> | // eslint-disable-line @typescript-eslint/indent
|
|
53
|
+
MarkRequired<AllowedUiItemProviderOverrides, "providerId" | "stageUsages" | "stageIds">;
|
|
67
54
|
/**
|
|
68
55
|
* Controls registering of UiItemsProviders and calls the provider's methods when populating different parts of the User Interface.
|
|
69
56
|
* @public
|
|
@@ -89,9 +76,10 @@ export declare class UiItemsManager {
|
|
|
89
76
|
* Registers a UiItemsProvider with the UiItemsManager.
|
|
90
77
|
* @param uiProvider the UI items provider to register.
|
|
91
78
|
*/
|
|
92
|
-
static register(uiProvider: UiItemsProvider): void;
|
|
79
|
+
static register(uiProvider: UiItemsProvider, overrides?: UiItemProviderOverrides): void;
|
|
93
80
|
/** Remove a specific UiItemsProvider from the list of available providers. */
|
|
94
81
|
static unregister(uiProviderId: string): void;
|
|
82
|
+
private static allowItemsFromProvider;
|
|
95
83
|
/** Called when the application is populating a toolbar so that any registered UiItemsProvider can add tool buttons that either either execute
|
|
96
84
|
* an action or specify a registered ToolId into toolbar.
|
|
97
85
|
* @param stageId a string identifier the active stage.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiItemsManager.d.ts","sourceRoot":"","sources":["../../../src/appui-abstract/UiItemsManager.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"UiItemsManager.d.ts","sourceRoot":"","sources":["../../../src/appui-abstract/UiItemsManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,11 @@
|
|
|
8
8
|
* @module UiItemsProvider
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.UiItemsManager = exports.
|
|
11
|
+
exports.UiItemsManager = exports.UiItemsApplicationAction = void 0;
|
|
12
12
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
13
13
|
const misc_1 = require("./utils/misc");
|
|
14
|
-
const StageUsage_1 = require("./items/StageUsage");
|
|
15
14
|
/** Action taken by the application on item provided by a UiItemsProvider
|
|
16
|
-
* @public
|
|
15
|
+
* @public @deprecated this was only used by the previously removed UiItemsArbiter.
|
|
17
16
|
*/
|
|
18
17
|
var UiItemsApplicationAction;
|
|
19
18
|
(function (UiItemsApplicationAction) {
|
|
@@ -24,72 +23,6 @@ var UiItemsApplicationAction;
|
|
|
24
23
|
/** Update the item during the change */
|
|
25
24
|
UiItemsApplicationAction[UiItemsApplicationAction["Update"] = 2] = "Update";
|
|
26
25
|
})(UiItemsApplicationAction = exports.UiItemsApplicationAction || (exports.UiItemsApplicationAction = {}));
|
|
27
|
-
/**
|
|
28
|
-
* Base implementation of a UiItemsProvider. The base class allows the user to pass in a function that is used to determine if the
|
|
29
|
-
* active stage should be provided items. Derived provider classes should override the `xxxInternal` methods to provide items.
|
|
30
|
-
* @public
|
|
31
|
-
*/
|
|
32
|
-
class BaseUiItemsProvider {
|
|
33
|
-
/*
|
|
34
|
-
* @param providerId - unique identifier for this instance of the provider. This is required in case separate packages want
|
|
35
|
-
* to set up custom stage with their own subset of standard tools.
|
|
36
|
-
* @param isSupportedStage - optional function that will be called to determine if tools should be added to current stage. If not set and
|
|
37
|
-
* the current stage's `usage` is set to `StageUsage.General` then the provider will add items to frontstage.
|
|
38
|
-
*/
|
|
39
|
-
constructor(_providerId, isSupportedStage) {
|
|
40
|
-
this._providerId = _providerId;
|
|
41
|
-
this.isSupportedStage = isSupportedStage;
|
|
42
|
-
}
|
|
43
|
-
get id() { return this._providerId; }
|
|
44
|
-
onUnregister() { }
|
|
45
|
-
unregister() {
|
|
46
|
-
UiItemsManager.unregister(this._providerId);
|
|
47
|
-
}
|
|
48
|
-
/** Backstage items are not stage specific so no callback is used */
|
|
49
|
-
provideBackstageItems() {
|
|
50
|
-
return [];
|
|
51
|
-
}
|
|
52
|
-
provideToolbarButtonItemsInternal(_stageId, _stageUsage, _toolbarUsage, _toolbarOrientation, _stageAppData) {
|
|
53
|
-
return [];
|
|
54
|
-
}
|
|
55
|
-
provideToolbarButtonItems(stageId, stageUsage, toolbarUsage, toolbarOrientation, stageAppData) {
|
|
56
|
-
let provideToStage = false;
|
|
57
|
-
if (this.isSupportedStage) {
|
|
58
|
-
provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
provideToStage = (stageUsage === StageUsage_1.StageUsage.General);
|
|
62
|
-
}
|
|
63
|
-
return provideToStage ? this.provideToolbarButtonItemsInternal(stageId, stageUsage, toolbarUsage, toolbarOrientation, stageAppData) : [];
|
|
64
|
-
}
|
|
65
|
-
provideStatusBarItemsInternal(_stageId, _stageUsage, _stageAppData) {
|
|
66
|
-
return [];
|
|
67
|
-
}
|
|
68
|
-
provideStatusBarItems(stageId, stageUsage, stageAppData) {
|
|
69
|
-
let provideToStage = false;
|
|
70
|
-
if (this.isSupportedStage) {
|
|
71
|
-
provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
provideToStage = (stageUsage === StageUsage_1.StageUsage.General);
|
|
75
|
-
}
|
|
76
|
-
return provideToStage ? this.provideStatusBarItemsInternal(stageId, stageUsage, stageAppData) : [];
|
|
77
|
-
}
|
|
78
|
-
provideWidgetsInternal(_stageId, _stageUsage, _location, _section, _stageAppData) {
|
|
79
|
-
return [];
|
|
80
|
-
}
|
|
81
|
-
provideWidgets(stageId, stageUsage, location, section, _zoneLocation, stageAppData) {
|
|
82
|
-
let provideToStage = false;
|
|
83
|
-
if (this.isSupportedStage) {
|
|
84
|
-
provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
provideToStage = (stageUsage === StageUsage_1.StageUsage.General);
|
|
88
|
-
}
|
|
89
|
-
return provideToStage ? this.provideWidgetsInternal(stageId, stageUsage, location, section, stageAppData) : [];
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
exports.BaseUiItemsProvider = BaseUiItemsProvider;
|
|
93
26
|
/**
|
|
94
27
|
* Controls registering of UiItemsProviders and calls the provider's methods when populating different parts of the User Interface.
|
|
95
28
|
* @public
|
|
@@ -114,7 +47,8 @@ class UiItemsManager {
|
|
|
114
47
|
* @param providerId id of the UiItemsProvider to get
|
|
115
48
|
*/
|
|
116
49
|
static getUiItemsProvider(providerId) {
|
|
117
|
-
|
|
50
|
+
var _a;
|
|
51
|
+
return (_a = UiItemsManager._registeredUiItemsProviders.get(providerId)) === null || _a === void 0 ? void 0 : _a.provider;
|
|
118
52
|
}
|
|
119
53
|
static sendRegisteredEvent(ev) {
|
|
120
54
|
UiItemsManager.onUiProviderRegisteredEvent.raiseEvent(ev);
|
|
@@ -123,14 +57,16 @@ class UiItemsManager {
|
|
|
123
57
|
* Registers a UiItemsProvider with the UiItemsManager.
|
|
124
58
|
* @param uiProvider the UI items provider to register.
|
|
125
59
|
*/
|
|
126
|
-
static register(uiProvider) {
|
|
127
|
-
|
|
128
|
-
|
|
60
|
+
static register(uiProvider, overrides) {
|
|
61
|
+
var _a;
|
|
62
|
+
const providerId = (_a = overrides === null || overrides === void 0 ? void 0 : overrides.providerId) !== null && _a !== void 0 ? _a : uiProvider.id;
|
|
63
|
+
if (UiItemsManager.getUiItemsProvider(providerId)) {
|
|
64
|
+
core_bentley_1.Logger.logInfo((0, misc_1.loggerCategory)(this), `UiItemsProvider (${providerId}) is already loaded`);
|
|
129
65
|
}
|
|
130
66
|
else {
|
|
131
|
-
UiItemsManager._registeredUiItemsProviders.set(uiProvider
|
|
132
|
-
core_bentley_1.Logger.logInfo((0, misc_1.loggerCategory)(this), `UiItemsProvider
|
|
133
|
-
UiItemsManager.sendRegisteredEvent({ providerId
|
|
67
|
+
UiItemsManager._registeredUiItemsProviders.set(providerId, { provider: uiProvider, overrides });
|
|
68
|
+
core_bentley_1.Logger.logInfo((0, misc_1.loggerCategory)(this), `UiItemsProvider ${uiProvider.id} registered as ${providerId} `);
|
|
69
|
+
UiItemsManager.sendRegisteredEvent({ providerId });
|
|
134
70
|
}
|
|
135
71
|
}
|
|
136
72
|
/** Remove a specific UiItemsProvider from the list of available providers. */
|
|
@@ -144,6 +80,15 @@ class UiItemsManager {
|
|
|
144
80
|
// trigger a refresh of the ui
|
|
145
81
|
UiItemsManager.sendRegisteredEvent({ providerId: uiProviderId });
|
|
146
82
|
}
|
|
83
|
+
static allowItemsFromProvider(entry, stageId, stageUsage) {
|
|
84
|
+
// istanbul ignore else
|
|
85
|
+
const overrides = entry.overrides;
|
|
86
|
+
if (undefined !== stageId && (overrides === null || overrides === void 0 ? void 0 : overrides.stageIds) && !(overrides.stageIds.some((value) => value === stageId)))
|
|
87
|
+
return false;
|
|
88
|
+
if (undefined !== stageUsage && (overrides === null || overrides === void 0 ? void 0 : overrides.stageUsages) && !(overrides.stageUsages.some((value) => value === stageUsage)))
|
|
89
|
+
return false;
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
147
92
|
/** Called when the application is populating a toolbar so that any registered UiItemsProvider can add tool buttons that either either execute
|
|
148
93
|
* an action or specify a registered ToolId into toolbar.
|
|
149
94
|
* @param stageId a string identifier the active stage.
|
|
@@ -156,11 +101,18 @@ class UiItemsManager {
|
|
|
156
101
|
const buttonItems = [];
|
|
157
102
|
if (0 === UiItemsManager._registeredUiItemsProviders.size)
|
|
158
103
|
return buttonItems;
|
|
159
|
-
UiItemsManager._registeredUiItemsProviders.forEach((
|
|
104
|
+
UiItemsManager._registeredUiItemsProviders.forEach((entry) => {
|
|
105
|
+
var _a, _b;
|
|
106
|
+
const uiProvider = entry.provider;
|
|
107
|
+
const providerId = (_b = (_a = entry.overrides) === null || _a === void 0 ? void 0 : _a.providerId) !== null && _b !== void 0 ? _b : uiProvider.id;
|
|
160
108
|
// istanbul ignore else
|
|
161
|
-
if (uiProvider.provideToolbarButtonItems) {
|
|
109
|
+
if (uiProvider.provideToolbarButtonItems && this.allowItemsFromProvider(entry, stageId, stageUsage)) {
|
|
162
110
|
uiProvider.provideToolbarButtonItems(stageId, stageUsage, toolbarUsage, toolbarOrientation, stageAppData)
|
|
163
|
-
.forEach((spec) =>
|
|
111
|
+
.forEach((spec) => {
|
|
112
|
+
// ignore duplicate ids
|
|
113
|
+
if (-1 === buttonItems.findIndex((existingItem) => spec.id === existingItem.id))
|
|
114
|
+
buttonItems.push({ ...spec, providerId });
|
|
115
|
+
});
|
|
164
116
|
}
|
|
165
117
|
});
|
|
166
118
|
return buttonItems;
|
|
@@ -174,11 +126,18 @@ class UiItemsManager {
|
|
|
174
126
|
const statusBarItems = [];
|
|
175
127
|
if (0 === UiItemsManager._registeredUiItemsProviders.size)
|
|
176
128
|
return statusBarItems;
|
|
177
|
-
UiItemsManager._registeredUiItemsProviders.forEach((
|
|
129
|
+
UiItemsManager._registeredUiItemsProviders.forEach((entry) => {
|
|
130
|
+
var _a, _b;
|
|
131
|
+
const uiProvider = entry.provider;
|
|
132
|
+
const providerId = (_b = (_a = entry.overrides) === null || _a === void 0 ? void 0 : _a.providerId) !== null && _b !== void 0 ? _b : uiProvider.id;
|
|
178
133
|
// istanbul ignore else
|
|
179
|
-
if (uiProvider.provideStatusBarItems) {
|
|
134
|
+
if (uiProvider.provideStatusBarItems && this.allowItemsFromProvider(entry, stageId, stageUsage)) {
|
|
180
135
|
uiProvider.provideStatusBarItems(stageId, stageUsage, stageAppData)
|
|
181
|
-
.forEach((item) =>
|
|
136
|
+
.forEach((item) => {
|
|
137
|
+
// ignore duplicate ids
|
|
138
|
+
if (-1 === statusBarItems.findIndex((existingItem) => item.id === existingItem.id))
|
|
139
|
+
statusBarItems.push({ ...item, providerId });
|
|
140
|
+
});
|
|
182
141
|
}
|
|
183
142
|
});
|
|
184
143
|
return statusBarItems;
|
|
@@ -190,11 +149,18 @@ class UiItemsManager {
|
|
|
190
149
|
const backstageItems = [];
|
|
191
150
|
if (0 === UiItemsManager._registeredUiItemsProviders.size)
|
|
192
151
|
return backstageItems;
|
|
193
|
-
UiItemsManager._registeredUiItemsProviders.forEach((
|
|
152
|
+
UiItemsManager._registeredUiItemsProviders.forEach((entry) => {
|
|
153
|
+
var _a, _b;
|
|
154
|
+
const uiProvider = entry.provider;
|
|
155
|
+
const providerId = (_b = (_a = entry.overrides) === null || _a === void 0 ? void 0 : _a.providerId) !== null && _b !== void 0 ? _b : uiProvider.id;
|
|
194
156
|
// istanbul ignore else
|
|
195
|
-
if (uiProvider.provideBackstageItems) {
|
|
157
|
+
if (uiProvider.provideBackstageItems && this.allowItemsFromProvider(entry)) {
|
|
196
158
|
uiProvider.provideBackstageItems()
|
|
197
|
-
.forEach((item) =>
|
|
159
|
+
.forEach((item) => {
|
|
160
|
+
// ignore duplicate ids
|
|
161
|
+
if (-1 === backstageItems.findIndex((existingItem) => item.id === existingItem.id))
|
|
162
|
+
backstageItems.push({ ...item, providerId });
|
|
163
|
+
});
|
|
198
164
|
}
|
|
199
165
|
});
|
|
200
166
|
return backstageItems;
|
|
@@ -210,11 +176,18 @@ class UiItemsManager {
|
|
|
210
176
|
const widgets = [];
|
|
211
177
|
if (0 === UiItemsManager._registeredUiItemsProviders.size)
|
|
212
178
|
return widgets;
|
|
213
|
-
UiItemsManager._registeredUiItemsProviders.forEach((
|
|
179
|
+
UiItemsManager._registeredUiItemsProviders.forEach((entry) => {
|
|
180
|
+
var _a, _b;
|
|
181
|
+
const uiProvider = entry.provider;
|
|
182
|
+
const providerId = (_b = (_a = entry.overrides) === null || _a === void 0 ? void 0 : _a.providerId) !== null && _b !== void 0 ? _b : uiProvider.id;
|
|
214
183
|
// istanbul ignore else
|
|
215
|
-
if (uiProvider.provideWidgets) {
|
|
184
|
+
if (uiProvider.provideWidgets && this.allowItemsFromProvider(entry, stageId, stageUsage)) {
|
|
216
185
|
uiProvider.provideWidgets(stageId, stageUsage, location, section, zoneLocation, stageAppData)
|
|
217
|
-
.forEach((widget) =>
|
|
186
|
+
.forEach((widget) => {
|
|
187
|
+
// ignore duplicate ids
|
|
188
|
+
if (-1 === widgets.findIndex((existingItem) => widget.id === existingItem.id))
|
|
189
|
+
widgets.push({ ...widget, providerId });
|
|
190
|
+
});
|
|
218
191
|
}
|
|
219
192
|
});
|
|
220
193
|
return widgets;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiItemsManager.js","sourceRoot":"","sources":["../../../src/appui-abstract/UiItemsManager.ts"],"names":[],"mappings":"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","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/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module UiItemsProvider\r\n */\r\n\r\nimport { BeEvent, Logger } from \"@itwin/core-bentley\";\r\nimport { BackstageItem } from \"./backstage/BackstageItem\";\r\nimport { CommonStatusBarItem } from \"./statusbar/StatusBarItem\";\r\nimport { CommonToolbarItem, ToolbarOrientation, ToolbarUsage } from \"./toolbars/ToolbarItem\";\r\nimport { AbstractWidgetProps } from \"./widget/AbstractWidgetProps\";\r\nimport { AbstractZoneLocation, StagePanelLocation, StagePanelSection } from \"./widget/StagePanel\";\r\nimport { loggerCategory } from \"./utils/misc\";\r\nimport { StageUsage } from \"./items/StageUsage\";\r\n\r\n/** Action taken by the application on item provided by a UiItemsProvider\r\n * @public\r\n */\r\nexport enum UiItemsApplicationAction {\r\n /** Allow the change to the item */\r\n Allow,\r\n /** Disallow the change to the item */\r\n Disallow,\r\n /** Update the item during the change */\r\n Update,\r\n}\r\n\r\n/** Describes interface of objects that want to provide UI component to the running IModelApp.\r\n * @public\r\n */\r\nexport interface UiItemsProvider {\r\n /** id of provider */\r\n readonly id: string;\r\n\r\n /** UiItemsManager calls following method to get items to populate specific toolbars */\r\n provideToolbarButtonItems?: (stageId: string, stageUsage: string, toolbarUsage: ToolbarUsage, toolbarOrientation: ToolbarOrientation, stageAppData?: any) => CommonToolbarItem[];\r\n /** UiItemsManager calls following method to augment base statusbar for stages that allow it. */\r\n provideStatusBarItems?: (stageId: string, stageUsage: string, stageAppData?: any) => CommonStatusBarItem[];\r\n /** UiItemsManager calls following method to augment backstage items. */\r\n provideBackstageItems?: () => BackstageItem[];\r\n /** UiItemsManager calls following method to augment Widget lists.\r\n * @note Returned widgets must provide unique `AbstractWidgetProps[\"id\"]` to correctly save/restore App layout.\r\n */\r\n provideWidgets?: (stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection,\r\n zoneLocation?: AbstractZoneLocation, stageAppData?: any) => ReadonlyArray<AbstractWidgetProps>;\r\n /** Function called when the provider is unregistered via `ItemsManager.unregister` to allow provider to do cleanup. */\r\n onUnregister?: () => void;\r\n}\r\n\r\n/**\r\n * Base implementation of a UiItemsProvider. The base class allows the user to pass in a function that is used to determine if the\r\n * active stage should be provided items. Derived provider classes should override the `xxxInternal` methods to provide items.\r\n * @public\r\n */\r\nexport class BaseUiItemsProvider implements UiItemsProvider {\r\n /*\r\n * @param providerId - unique identifier for this instance of the provider. This is required in case separate packages want\r\n * to set up custom stage with their own subset of standard tools.\r\n * @param isSupportedStage - optional function that will be called to determine if tools should be added to current stage. If not set and\r\n * the current stage's `usage` is set to `StageUsage.General` then the provider will add items to frontstage.\r\n */\r\n constructor(protected _providerId: string, public isSupportedStage?: (stageId: string, stageUsage: string, stageAppData?: any) => boolean) { }\r\n\r\n public get id(): string { return this._providerId; }\r\n public onUnregister(): void { }\r\n\r\n public unregister() {\r\n UiItemsManager.unregister(this._providerId);\r\n }\r\n\r\n /** Backstage items are not stage specific so no callback is used */\r\n public provideBackstageItems(): BackstageItem[] {\r\n return [];\r\n }\r\n\r\n public provideToolbarButtonItemsInternal(_stageId: string, _stageUsage: string, _toolbarUsage: ToolbarUsage, _toolbarOrientation: ToolbarOrientation, _stageAppData?: any): CommonToolbarItem[] {\r\n return [];\r\n }\r\n public provideToolbarButtonItems(stageId: string, stageUsage: string, toolbarUsage: ToolbarUsage, toolbarOrientation: ToolbarOrientation, stageAppData?: any): CommonToolbarItem[] {\r\n let provideToStage = false;\r\n\r\n if (this.isSupportedStage) {\r\n provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData);\r\n } else {\r\n provideToStage = (stageUsage === StageUsage.General);\r\n }\r\n\r\n return provideToStage ? this.provideToolbarButtonItemsInternal(stageId, stageUsage, toolbarUsage, toolbarOrientation, stageAppData) : [];\r\n }\r\n\r\n public provideStatusBarItemsInternal(_stageId: string, _stageUsage: string, _stageAppData?: any): CommonStatusBarItem[] {\r\n return [];\r\n }\r\n public provideStatusBarItems(stageId: string, stageUsage: string, stageAppData?: any): CommonStatusBarItem[] {\r\n let provideToStage = false;\r\n\r\n if (this.isSupportedStage) {\r\n provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData);\r\n } else {\r\n provideToStage = (stageUsage === StageUsage.General);\r\n }\r\n\r\n return provideToStage ? this.provideStatusBarItemsInternal(stageId, stageUsage, stageAppData) : [];\r\n }\r\n\r\n public provideWidgetsInternal(_stageId: string, _stageUsage: string, _location: StagePanelLocation, _section?: StagePanelSection, _stageAppData?: any): AbstractWidgetProps[] {\r\n return [];\r\n }\r\n\r\n public provideWidgets(stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection,\r\n _zoneLocation?: AbstractZoneLocation, stageAppData?: any): ReadonlyArray<AbstractWidgetProps> {\r\n let provideToStage = false;\r\n\r\n if (this.isSupportedStage) {\r\n provideToStage = this.isSupportedStage(stageId, stageUsage, stageAppData);\r\n } else {\r\n provideToStage = (stageUsage === StageUsage.General);\r\n }\r\n\r\n return provideToStage ? this.provideWidgetsInternal(stageId, stageUsage, location, section, stageAppData) : [];\r\n }\r\n}\r\n\r\n/** UIProvider Registered Event Args interface.\r\n * @public\r\n */\r\nexport interface UiItemProviderRegisteredEventArgs {\r\n providerId: string;\r\n}\r\n\r\n/**\r\n * Controls registering of UiItemsProviders and calls the provider's methods when populating different parts of the User Interface.\r\n * @public\r\n */\r\nexport class UiItemsManager {\r\n private static _registeredUiItemsProviders: Map<string, UiItemsProvider> = new Map<string, UiItemsProvider>();\r\n\r\n /** For use in unit testing\r\n * @internal */\r\n public static clearAllProviders() {\r\n UiItemsManager._registeredUiItemsProviders.clear();\r\n }\r\n\r\n /** Event raised any time a UiProvider is registered or unregistered. */\r\n public static readonly onUiProviderRegisteredEvent = new BeEvent<(ev: UiItemProviderRegisteredEventArgs) => void>();\r\n\r\n /** Return number of registered UiProvider. */\r\n public static get registeredProviderIds() {\r\n const ids = [...UiItemsManager._registeredUiItemsProviders.keys()];\r\n return ids;\r\n }\r\n\r\n /** Return true if there is any registered UiProvider. */\r\n public static get hasRegisteredProviders(): boolean {\r\n return this._registeredUiItemsProviders.size > 0;\r\n }\r\n\r\n /**\r\n * Retrieves a previously loaded UiItemsProvider.\r\n * @param providerId id of the UiItemsProvider to get\r\n */\r\n public static getUiItemsProvider(providerId: string): UiItemsProvider | undefined {\r\n return UiItemsManager._registeredUiItemsProviders.get(providerId);\r\n }\r\n\r\n private static sendRegisteredEvent(ev: UiItemProviderRegisteredEventArgs) {\r\n UiItemsManager.onUiProviderRegisteredEvent.raiseEvent(ev);\r\n }\r\n\r\n /**\r\n * Registers a UiItemsProvider with the UiItemsManager.\r\n * @param uiProvider the UI items provider to register.\r\n */\r\n public static register(uiProvider: UiItemsProvider): void {\r\n if (UiItemsManager.getUiItemsProvider(uiProvider.id)) {\r\n Logger.logInfo(loggerCategory(this), `UiItemsProvider (${uiProvider.id}) is already loaded`);\r\n } else {\r\n UiItemsManager._registeredUiItemsProviders.set(uiProvider.id, uiProvider);\r\n Logger.logInfo(loggerCategory(this), `UiItemsProvider (${uiProvider.id}) loaded`);\r\n\r\n UiItemsManager.sendRegisteredEvent({ providerId: uiProvider.id } as UiItemProviderRegisteredEventArgs);\r\n }\r\n }\r\n\r\n /** Remove a specific UiItemsProvider from the list of available providers. */\r\n public static unregister(uiProviderId: string): void {\r\n const provider = UiItemsManager.getUiItemsProvider(uiProviderId);\r\n if (!provider)\r\n return;\r\n\r\n provider.onUnregister && provider.onUnregister();\r\n\r\n UiItemsManager._registeredUiItemsProviders.delete(uiProviderId);\r\n Logger.logInfo(loggerCategory(this), `UiItemsProvider (${uiProviderId}) unloaded`);\r\n\r\n // trigger a refresh of the ui\r\n UiItemsManager.sendRegisteredEvent({ providerId: uiProviderId } as UiItemProviderRegisteredEventArgs);\r\n }\r\n\r\n /** Called when the application is populating a toolbar so that any registered UiItemsProvider can add tool buttons that either either execute\r\n * an action or specify a registered ToolId into toolbar.\r\n * @param stageId a string identifier the active stage.\r\n * @param stageUsage the StageUsage of the active stage.\r\n * @param toolbarUsage usage of the toolbar\r\n * @param toolbarOrientation orientation of the toolbar\r\n * @returns an array of error messages. The array will be empty if the load is successful, otherwise it is a list of one or more problems.\r\n */\r\n public static getToolbarButtonItems(stageId: string, stageUsage: string, toolbarUsage: ToolbarUsage,\r\n toolbarOrientation: ToolbarOrientation, stageAppData?: any): CommonToolbarItem[] {\r\n const buttonItems: CommonToolbarItem[] = [];\r\n if (0 === UiItemsManager._registeredUiItemsProviders.size)\r\n return buttonItems;\r\n\r\n UiItemsManager._registeredUiItemsProviders.forEach((uiProvider: UiItemsProvider) => {\r\n // istanbul ignore else\r\n if (uiProvider.provideToolbarButtonItems) {\r\n uiProvider.provideToolbarButtonItems(stageId, stageUsage, toolbarUsage, toolbarOrientation, stageAppData)\r\n .forEach((spec: CommonToolbarItem) => buttonItems.push({ ...spec, providerId: uiProvider.id }));\r\n }\r\n });\r\n\r\n return buttonItems;\r\n }\r\n\r\n /** Called when the application is populating the statusbar so that any registered UiItemsProvider can add status fields\r\n * @param stageId a string identifier the active stage.\r\n * @param stageUsage the StageUsage of the active stage.\r\n * @returns An array of CommonStatusBarItem that will be used to create controls for the status bar.\r\n */\r\n public static getStatusBarItems(stageId: string, stageUsage: string, stageAppData?: any): CommonStatusBarItem[] {\r\n const statusBarItems: CommonStatusBarItem[] = [];\r\n\r\n if (0 === UiItemsManager._registeredUiItemsProviders.size)\r\n return statusBarItems;\r\n\r\n UiItemsManager._registeredUiItemsProviders.forEach((uiProvider: UiItemsProvider) => {\r\n // istanbul ignore else\r\n if (uiProvider.provideStatusBarItems) {\r\n uiProvider.provideStatusBarItems(stageId, stageUsage, stageAppData)\r\n .forEach((item: CommonStatusBarItem) => statusBarItems.push({ ...item, providerId: uiProvider.id }));\r\n }\r\n });\r\n return statusBarItems;\r\n }\r\n\r\n /** Called when the application is populating the statusbar so that any registered UiItemsProvider can add status fields\r\n * @returns An array of BackstageItem that will be used to create controls for the backstage menu.\r\n */\r\n public static getBackstageItems(): BackstageItem[] {\r\n const backstageItems: BackstageItem[] = [];\r\n\r\n if (0 === UiItemsManager._registeredUiItemsProviders.size)\r\n return backstageItems;\r\n\r\n UiItemsManager._registeredUiItemsProviders.forEach((uiProvider: UiItemsProvider) => {\r\n // istanbul ignore else\r\n if (uiProvider.provideBackstageItems) {\r\n uiProvider.provideBackstageItems()\r\n .forEach((item: BackstageItem) => backstageItems.push({ ...item, providerId: uiProvider.id }));\r\n }\r\n });\r\n return backstageItems;\r\n }\r\n\r\n /** Called when the application is populating the Stage Panels so that any registered UiItemsProvider can add widgets\r\n * @param stageId a string identifier the active stage.\r\n * @param stageUsage the StageUsage of the active stage.\r\n * @param location the location within the stage.\r\n * @param section the section within location.\r\n * @returns An array of AbstractWidgetProps that will be used to create widgets.\r\n */\r\n public static getWidgets(stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection, zoneLocation?: AbstractZoneLocation, stageAppData?: any): ReadonlyArray<AbstractWidgetProps> {\r\n const widgets: AbstractWidgetProps[] = [];\r\n\r\n if (0 === UiItemsManager._registeredUiItemsProviders.size)\r\n return widgets;\r\n\r\n UiItemsManager._registeredUiItemsProviders.forEach((uiProvider: UiItemsProvider) => {\r\n // istanbul ignore else\r\n if (uiProvider.provideWidgets) {\r\n uiProvider.provideWidgets(stageId, stageUsage, location, section, zoneLocation, stageAppData)\r\n .forEach((widget: AbstractWidgetProps) => widgets.push({ ...widget, providerId: uiProvider.id }));\r\n }\r\n });\r\n return widgets;\r\n }\r\n\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"UiItemsManager.js","sourceRoot":"","sources":["../../../src/appui-abstract/UiItemsManager.ts"],"names":[],"mappings":"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","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/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module UiItemsProvider\r\n */\r\n\r\nimport { BeEvent, Logger, MarkRequired } from \"@itwin/core-bentley\";\r\nimport { BackstageItem } from \"./backstage/BackstageItem\";\r\nimport { CommonStatusBarItem } from \"./statusbar/StatusBarItem\";\r\nimport { CommonToolbarItem, ToolbarOrientation, ToolbarUsage } from \"./toolbars/ToolbarItem\";\r\nimport { AbstractWidgetProps } from \"./widget/AbstractWidgetProps\";\r\nimport { AbstractZoneLocation, StagePanelLocation, StagePanelSection } from \"./widget/StagePanel\";\r\nimport { loggerCategory } from \"./utils/misc\";\r\nimport { UiItemsProvider } from \"./UiItemsProvider\";\r\n\r\n/** Action taken by the application on item provided by a UiItemsProvider\r\n * @public @deprecated this was only used by the previously removed UiItemsArbiter.\r\n */\r\nexport enum UiItemsApplicationAction {\r\n /** Allow the change to the item */\r\n Allow,\r\n /** Disallow the change to the item */\r\n Disallow,\r\n /** Update the item during the change */\r\n Update,\r\n}\r\n\r\n/** UIProvider Registered Event Args interface.\r\n * @public\r\n */\r\nexport interface UiItemProviderRegisteredEventArgs {\r\n providerId: string;\r\n}\r\n\r\n/** UiItemProviderOverrides allows the application that registers a provider to limit when it is allowed to provide items\r\n * @public\r\n */\r\nexport interface AllowedUiItemProviderOverrides {\r\n /** allows providerId to be overridden in the items manager for cases where the same provider needs to provide different content to different stages\r\n * @beta\r\n */\r\n providerId?: string;\r\n /** if specified then the current stage's Usage will be compared before allowing any items to be provided\r\n * @beta\r\n */\r\n stageUsages?: string[];\r\n /** if specified then the current stage's Id will be compared before allowing any items to be provided\r\n * @beta\r\n */\r\n stageIds?: string[];\r\n}\r\n\r\n/** Allowed overrides applied to a UiItemsProvider the application that registers a provider to limit when it is allowed to provide items.\r\n * Note that if an override `providerId` is specified then either `stageIds` or `stageUsages` must be defined to limit when the provider's\r\n * items are allowed.\r\n * @public\r\n */\r\nexport type UiItemProviderOverrides = MarkRequired<AllowedUiItemProviderOverrides, \"providerId\" | \"stageUsages\"> |\r\n MarkRequired<AllowedUiItemProviderOverrides, \"providerId\" | \"stageIds\"> | // eslint-disable-line @typescript-eslint/indent\r\n MarkRequired<AllowedUiItemProviderOverrides, \"stageIds\"> | // eslint-disable-line @typescript-eslint/indent\r\n MarkRequired<AllowedUiItemProviderOverrides, \"stageUsages\"> | // eslint-disable-line @typescript-eslint/indent\r\n MarkRequired<AllowedUiItemProviderOverrides, \"providerId\" | \"stageUsages\" | \"stageIds\">; // eslint-disable-line @typescript-eslint/indent\r\n\r\n/** Interface that defines an instance of a UiItemsProvider and its application specified overrides.\r\n * @beta\r\n */\r\ninterface UiItemProviderEntry {\r\n provider: UiItemsProvider;\r\n overrides?: UiItemProviderOverrides;\r\n}\r\n\r\n/**\r\n * Controls registering of UiItemsProviders and calls the provider's methods when populating different parts of the User Interface.\r\n * @public\r\n */\r\nexport class UiItemsManager {\r\n private static _registeredUiItemsProviders: Map<string, UiItemProviderEntry> = new Map<string, UiItemProviderEntry>();\r\n\r\n /** For use in unit testing\r\n * @internal */\r\n public static clearAllProviders() {\r\n UiItemsManager._registeredUiItemsProviders.clear();\r\n }\r\n\r\n /** Event raised any time a UiProvider is registered or unregistered. */\r\n public static readonly onUiProviderRegisteredEvent = new BeEvent<(ev: UiItemProviderRegisteredEventArgs) => void>();\r\n\r\n /** Return number of registered UiProvider. */\r\n public static get registeredProviderIds() {\r\n const ids = [...UiItemsManager._registeredUiItemsProviders.keys()];\r\n return ids;\r\n }\r\n\r\n /** Return true if there is any registered UiProvider. */\r\n public static get hasRegisteredProviders(): boolean {\r\n return this._registeredUiItemsProviders.size > 0;\r\n }\r\n\r\n /**\r\n * Retrieves a previously loaded UiItemsProvider.\r\n * @param providerId id of the UiItemsProvider to get\r\n */\r\n public static getUiItemsProvider(providerId: string): UiItemsProvider | undefined {\r\n return UiItemsManager._registeredUiItemsProviders.get(providerId)?.provider;\r\n }\r\n\r\n private static sendRegisteredEvent(ev: UiItemProviderRegisteredEventArgs) {\r\n UiItemsManager.onUiProviderRegisteredEvent.raiseEvent(ev);\r\n }\r\n\r\n /**\r\n * Registers a UiItemsProvider with the UiItemsManager.\r\n * @param uiProvider the UI items provider to register.\r\n */\r\n public static register(uiProvider: UiItemsProvider, overrides?: UiItemProviderOverrides): void {\r\n const providerId = overrides?.providerId ?? uiProvider.id;\r\n\r\n if (UiItemsManager.getUiItemsProvider(providerId)) {\r\n Logger.logInfo(loggerCategory(this), `UiItemsProvider (${providerId}) is already loaded`);\r\n } else {\r\n UiItemsManager._registeredUiItemsProviders.set(providerId, { provider: uiProvider, overrides });\r\n Logger.logInfo(loggerCategory(this), `UiItemsProvider ${uiProvider.id} registered as ${providerId} `);\r\n\r\n UiItemsManager.sendRegisteredEvent({ providerId } as UiItemProviderRegisteredEventArgs);\r\n }\r\n }\r\n\r\n /** Remove a specific UiItemsProvider from the list of available providers. */\r\n public static unregister(uiProviderId: string): void {\r\n const provider = UiItemsManager.getUiItemsProvider(uiProviderId);\r\n if (!provider)\r\n return;\r\n\r\n provider.onUnregister && provider.onUnregister();\r\n\r\n UiItemsManager._registeredUiItemsProviders.delete(uiProviderId);\r\n Logger.logInfo(loggerCategory(this), `UiItemsProvider (${uiProviderId}) unloaded`);\r\n\r\n // trigger a refresh of the ui\r\n UiItemsManager.sendRegisteredEvent({ providerId: uiProviderId } as UiItemProviderRegisteredEventArgs);\r\n }\r\n\r\n private static allowItemsFromProvider(entry: UiItemProviderEntry, stageId?: string, stageUsage?: string) {\r\n // istanbul ignore else\r\n const overrides = entry.overrides;\r\n if (undefined !== stageId && overrides?.stageIds && !(overrides.stageIds.some((value: string) => value === stageId)))\r\n return false;\r\n if (undefined !== stageUsage && overrides?.stageUsages && !(overrides.stageUsages.some((value: string) => value === stageUsage)))\r\n return false;\r\n return true;\r\n }\r\n\r\n /** Called when the application is populating a toolbar so that any registered UiItemsProvider can add tool buttons that either either execute\r\n * an action or specify a registered ToolId into toolbar.\r\n * @param stageId a string identifier the active stage.\r\n * @param stageUsage the StageUsage of the active stage.\r\n * @param toolbarUsage usage of the toolbar\r\n * @param toolbarOrientation orientation of the toolbar\r\n * @returns an array of error messages. The array will be empty if the load is successful, otherwise it is a list of one or more problems.\r\n */\r\n public static getToolbarButtonItems(stageId: string, stageUsage: string, toolbarUsage: ToolbarUsage,\r\n toolbarOrientation: ToolbarOrientation, stageAppData?: any): CommonToolbarItem[] {\r\n const buttonItems: CommonToolbarItem[] = [];\r\n if (0 === UiItemsManager._registeredUiItemsProviders.size)\r\n return buttonItems;\r\n\r\n UiItemsManager._registeredUiItemsProviders.forEach((entry: UiItemProviderEntry) => {\r\n const uiProvider = entry.provider;\r\n const providerId = entry.overrides?.providerId ?? uiProvider.id;\r\n // istanbul ignore else\r\n if (uiProvider.provideToolbarButtonItems && this.allowItemsFromProvider(entry, stageId, stageUsage)) {\r\n uiProvider.provideToolbarButtonItems(stageId, stageUsage, toolbarUsage, toolbarOrientation, stageAppData)\r\n .forEach((spec: CommonToolbarItem) => {\r\n // ignore duplicate ids\r\n if (-1 === buttonItems.findIndex((existingItem)=> spec.id === existingItem.id ))\r\n buttonItems.push({ ...spec, providerId });\r\n });\r\n }\r\n });\r\n\r\n return buttonItems;\r\n }\r\n\r\n /** Called when the application is populating the statusbar so that any registered UiItemsProvider can add status fields\r\n * @param stageId a string identifier the active stage.\r\n * @param stageUsage the StageUsage of the active stage.\r\n * @returns An array of CommonStatusBarItem that will be used to create controls for the status bar.\r\n */\r\n public static getStatusBarItems(stageId: string, stageUsage: string, stageAppData?: any): CommonStatusBarItem[] {\r\n const statusBarItems: CommonStatusBarItem[] = [];\r\n\r\n if (0 === UiItemsManager._registeredUiItemsProviders.size)\r\n return statusBarItems;\r\n\r\n UiItemsManager._registeredUiItemsProviders.forEach((entry: UiItemProviderEntry) => {\r\n const uiProvider = entry.provider;\r\n const providerId = entry.overrides?.providerId ?? uiProvider.id;\r\n\r\n // istanbul ignore else\r\n if (uiProvider.provideStatusBarItems && this.allowItemsFromProvider(entry, stageId, stageUsage)) {\r\n uiProvider.provideStatusBarItems(stageId, stageUsage, stageAppData)\r\n .forEach((item: CommonStatusBarItem) => {\r\n // ignore duplicate ids\r\n if (-1 === statusBarItems.findIndex((existingItem)=> item.id === existingItem.id ))\r\n statusBarItems.push({ ...item, providerId });\r\n });\r\n }\r\n });\r\n\r\n return statusBarItems;\r\n }\r\n\r\n /** Called when the application is populating the statusbar so that any registered UiItemsProvider can add status fields\r\n * @returns An array of BackstageItem that will be used to create controls for the backstage menu.\r\n */\r\n public static getBackstageItems(): BackstageItem[] {\r\n const backstageItems: BackstageItem[] = [];\r\n\r\n if (0 === UiItemsManager._registeredUiItemsProviders.size)\r\n return backstageItems;\r\n\r\n UiItemsManager._registeredUiItemsProviders.forEach((entry: UiItemProviderEntry) => {\r\n const uiProvider = entry.provider;\r\n const providerId = entry.overrides?.providerId ?? uiProvider.id;\r\n\r\n // istanbul ignore else\r\n if (uiProvider.provideBackstageItems && this.allowItemsFromProvider(entry)) {\r\n uiProvider.provideBackstageItems()\r\n .forEach((item: BackstageItem) => {\r\n // ignore duplicate ids\r\n if (-1 === backstageItems.findIndex((existingItem)=> item.id === existingItem.id ))\r\n backstageItems.push({ ...item, providerId });\r\n });\r\n }\r\n });\r\n return backstageItems;\r\n }\r\n\r\n /** Called when the application is populating the Stage Panels so that any registered UiItemsProvider can add widgets\r\n * @param stageId a string identifier the active stage.\r\n * @param stageUsage the StageUsage of the active stage.\r\n * @param location the location within the stage.\r\n * @param section the section within location.\r\n * @returns An array of AbstractWidgetProps that will be used to create widgets.\r\n */\r\n public static getWidgets(stageId: string, stageUsage: string, location: StagePanelLocation, section?: StagePanelSection, zoneLocation?: AbstractZoneLocation, stageAppData?: any): ReadonlyArray<AbstractWidgetProps> {\r\n const widgets: AbstractWidgetProps[] = [];\r\n\r\n if (0 === UiItemsManager._registeredUiItemsProviders.size)\r\n return widgets;\r\n\r\n UiItemsManager._registeredUiItemsProviders.forEach((entry: UiItemProviderEntry) => {\r\n const uiProvider = entry.provider;\r\n const providerId = entry.overrides?.providerId ?? uiProvider.id;\r\n\r\n // istanbul ignore else\r\n if (uiProvider.provideWidgets && this.allowItemsFromProvider(entry, stageId, stageUsage)) {\r\n uiProvider.provideWidgets(stageId, stageUsage, location, section, zoneLocation, stageAppData)\r\n .forEach((widget: AbstractWidgetProps) => {\r\n // ignore duplicate ids\r\n if (-1 === widgets.findIndex((existingItem)=> widget.id === existingItem.id ))\r\n widgets.push({ ...widget, providerId });\r\n });\r\n }\r\n });\r\n return widgets;\r\n }\r\n\r\n}\r\n"]}
|