@vcmap/ui 6.3.0-rc.3 → 6.3.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/config/i3s.config.json +1 -1
  2. package/dist/assets/cesium.js +1 -1
  3. package/dist/assets/{core-a9703a41.js → core-c619c3cb.js} +15 -12
  4. package/dist/assets/core-workers/panoramaImageWorker.js +1 -1
  5. package/dist/assets/core.js +1 -1
  6. package/dist/assets/ol.js +1 -1
  7. package/dist/assets/{ui-e0eb19f4.css → ui-1477acda.css} +1 -1
  8. package/dist/assets/{ui-e0eb19f4.js → ui-1477acda.js} +5775 -5516
  9. package/dist/assets/ui.js +1 -1
  10. package/dist/assets/vue.js +1 -1
  11. package/dist/assets/{vuetify-8a5a634a.js → vuetify-fdf20bf9.js} +1 -1
  12. package/dist/assets/vuetify.js +1 -1
  13. package/index.d.ts +14 -2
  14. package/index.js +9 -0
  15. package/package.json +2 -2
  16. package/src/application/VcsNavbar.vue +8 -1
  17. package/src/application/VcsNavbar.vue.d.ts +8 -0
  18. package/src/application/VcsNavbarMobile.vue +2 -0
  19. package/src/callback/activateClippingPolygonCallback.d.ts +1 -0
  20. package/src/callback/activateLayersCallback.d.ts +1 -0
  21. package/src/callback/activateMapCallback.d.ts +4 -0
  22. package/src/callback/activateOverviewMapCallback.d.ts +1 -0
  23. package/src/callback/addModuleCallback.d.ts +1 -0
  24. package/src/callback/applyLayerStyleCallback.d.ts +1 -0
  25. package/src/callback/closeSplashScreenCallback.d.ts +1 -0
  26. package/src/callback/deactivateClippingPolygonCallback.d.ts +1 -0
  27. package/src/callback/deactivateLayersCallback.d.ts +1 -0
  28. package/src/callback/deactivateOverviewMapCallback.d.ts +1 -0
  29. package/src/callback/goToViewpointCallback.d.ts +1 -0
  30. package/src/callback/goToViewpointCallback.js +2 -2
  31. package/src/callback/hideObjectsCallback.d.ts +28 -0
  32. package/src/callback/hideObjectsCallback.js +62 -0
  33. package/src/callback/highlightObjectsCallback.d.ts +32 -0
  34. package/src/callback/highlightObjectsCallback.js +68 -0
  35. package/src/callback/openSplashScreenCallback.d.ts +1 -0
  36. package/src/callback/removeModuleCallback.d.ts +1 -0
  37. package/src/callback/showObjectsCallback.d.ts +28 -0
  38. package/src/callback/showObjectsCallback.js +62 -0
  39. package/src/callback/startFlightCallback.d.ts +29 -0
  40. package/src/callback/startFlightCallback.js +78 -0
  41. package/src/callback/stopFlightCallback.d.ts +24 -0
  42. package/src/callback/stopFlightCallback.js +50 -0
  43. package/src/callback/stopRotationCallback.d.ts +1 -0
  44. package/src/callback/toggleNavbarButtonCallback.d.ts +1 -0
  45. package/src/callback/toggleToolbarButtonCallback.d.ts +1 -0
  46. package/src/callback/unHighlightObjectsCallback.d.ts +28 -0
  47. package/src/callback/unHighlightObjectsCallback.js +59 -0
  48. package/src/callback/vcsCallback.d.ts +16 -2
  49. package/src/callback/vcsCallback.js +27 -1
  50. package/src/components/projection/VcsProjection.vue +1 -1
  51. package/src/manager/navbarManager.d.ts +27 -15
  52. package/src/manager/navbarManager.js +24 -8
  53. package/src/manager/toolbox/toolboxManager.d.ts +1 -1
  54. /package/dist/assets/{cesium-2e65c850.js → cesium-2c8fbb1c.js} +0 -0
  55. /package/dist/assets/core-workers/{panoramaImageWorker.js-8122ca44.js → panoramaImageWorker.js-d20b3c02.js} +0 -0
  56. /package/dist/assets/{ol-b4f2ad56.js → ol-ec143a2b.js} +0 -0
  57. /package/dist/assets/{vue-2cae5c1e.js → vue-1a3ae885.js} +0 -0
  58. /package/dist/assets/{vuetify-8a5a634a.css → vuetify-fdf20bf9.css} +0 -0
@@ -0,0 +1,78 @@
1
+ import { FlightInstance } from '@vcmap/core';
2
+ import VcsCallback, { callbackClassRegistry } from './vcsCallback.js';
3
+
4
+ /**
5
+ * @typedef {import('@vcmap/core').FlightInstanceOptions} FlightInstanceOptions
6
+ */
7
+
8
+ /**
9
+ * @typedef {import('@vcmap/ui').VcsCallbackOptions & {
10
+ * flight: string | FlightInstanceOptions;
11
+ * }} StartFlightCallbackOptions
12
+ */
13
+
14
+ /**
15
+ * A callback to start a flight.
16
+ */
17
+ export default class StartFlightCallback extends VcsCallback {
18
+ static get className() {
19
+ return 'StartFlightCallback';
20
+ }
21
+
22
+ /** @type {string | FlightInstanceOptions} */
23
+ _flight;
24
+
25
+ /**
26
+ * @param {StartFlightCallbackOptions} options
27
+ * @param {import('@vcmap/ui').VcsUiApp} app
28
+ */
29
+ constructor(options, app) {
30
+ super(options, app);
31
+
32
+ this._flight = options.flight;
33
+ }
34
+
35
+ /** @returns {Promise<void>} */
36
+ async callback() {
37
+ /** @type {import('@vcmap/ui').VcsUiApp} */
38
+ const app = this._app;
39
+ /** @type {FlightInstance | undefined} */
40
+ let flight;
41
+ if (typeof this._flight === 'string') {
42
+ flight = app.flights.getByKey(this._flight);
43
+ } else {
44
+ flight = new FlightInstance(this._flight);
45
+ }
46
+ if (flight) {
47
+ const player = await app.flights.setPlayerForFlight(flight);
48
+ player?.play();
49
+ return new Promise((resolve, reject) => {
50
+ if (player) {
51
+ const listener = player.stateChanged.addEventListener((state) => {
52
+ if (state === 'stopped') {
53
+ listener();
54
+ resolve();
55
+ }
56
+ });
57
+ } else {
58
+ reject(new Error('No flight player available'));
59
+ }
60
+ });
61
+ } else {
62
+ return Promise.reject(new Error('Flight not found'));
63
+ }
64
+ }
65
+
66
+ /** @returns {StartFlightCallbackOptions} */
67
+ toJSON() {
68
+ return {
69
+ ...super.toJSON(),
70
+ flight: structuredClone(this._flight),
71
+ };
72
+ }
73
+ }
74
+
75
+ callbackClassRegistry.registerClass(
76
+ StartFlightCallback.className,
77
+ StartFlightCallback,
78
+ );
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @typedef {import('@vcmap/ui').VcsCallbackOptions & {
3
+ * flightName: string;
4
+ * }} StopFlightCallbackOptions
5
+ */
6
+ /**
7
+ * A callback to stop a flight.
8
+ */
9
+ export default class StopFlightCallback extends VcsCallback {
10
+ /**
11
+ * @param {StopFlightCallbackOptions} options
12
+ * @param {import('@vcmap/ui').VcsUiApp} app
13
+ */
14
+ constructor(options: StopFlightCallbackOptions, app: import('@vcmap/ui').VcsUiApp);
15
+ /** @type {string} */
16
+ _flightName: string;
17
+ callback(): void;
18
+ /** @returns {StopFlightCallbackOptions} */
19
+ toJSON(): StopFlightCallbackOptions;
20
+ }
21
+ export type StopFlightCallbackOptions = import('@vcmap/ui').VcsCallbackOptions & {
22
+ flightName: string;
23
+ };
24
+ import VcsCallback from './vcsCallback.js';
@@ -0,0 +1,50 @@
1
+ import VcsCallback, { callbackClassRegistry } from './vcsCallback.js';
2
+
3
+ /**
4
+ * @typedef {import('@vcmap/ui').VcsCallbackOptions & {
5
+ * flightName: string;
6
+ * }} StopFlightCallbackOptions
7
+ */
8
+
9
+ /**
10
+ * A callback to stop a flight.
11
+ */
12
+ export default class StopFlightCallback extends VcsCallback {
13
+ static get className() {
14
+ return 'StopFlightCallback';
15
+ }
16
+
17
+ /** @type {string} */
18
+ _flightName;
19
+
20
+ /**
21
+ * @param {StopFlightCallbackOptions} options
22
+ * @param {import('@vcmap/ui').VcsUiApp} app
23
+ */
24
+ constructor(options, app) {
25
+ super(options, app);
26
+
27
+ this._flightName = options.flightName;
28
+ }
29
+
30
+ callback() {
31
+ /** @type {import('@vcmap/ui').VcsUiApp} */
32
+ const app = this._app;
33
+ if (app.flights.player?.flightInstanceName === this._flightName) {
34
+ app.flights.player.stop();
35
+ }
36
+ }
37
+
38
+ /** @returns {StopFlightCallbackOptions} */
39
+ toJSON() {
40
+ return {
41
+ ...super.toJSON(),
42
+ flightName: this._flightName,
43
+ };
44
+ }
45
+ }
46
+
47
+ callbackClassRegistry.registerClass(
48
+ StopFlightCallback.className,
49
+ StopFlightCallback,
50
+ );
@@ -4,5 +4,6 @@ export default StopRotationCallback;
4
4
  * @extends {VcsCallback}
5
5
  */
6
6
  declare class StopRotationCallback extends VcsCallback {
7
+ callback(): void;
7
8
  }
8
9
  import VcsCallback from './vcsCallback.js';
@@ -28,6 +28,7 @@ declare class ToggleNavbarButtonCallback extends VcsCallback {
28
28
  * @private
29
29
  */
30
30
  private _activeState;
31
+ callback(): void;
31
32
  /**
32
33
  * @returns {ToggleNavbarButtonOptions}
33
34
  */
@@ -40,6 +40,7 @@ declare class ToggleToolbarButtonCallback extends VcsCallback {
40
40
  * @private
41
41
  */
42
42
  private _activeState;
43
+ callback(): void;
43
44
  /**
44
45
  * @returns {ToggleToolbarButtonOptions}
45
46
  */
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @typedef {import('@vcmap/ui').VcsCallbackOptions & {
3
+ * layerName: string;
4
+ * toUnHighlight: (string | number)[];
5
+ * }} UnHighlightObjectsCallbackOptions
6
+ */
7
+ /**
8
+ * A callback to unhighlight previously highlighted objects of a FeatureLayer.
9
+ */
10
+ export default class UnHighlightObjectsCallback extends VcsCallback {
11
+ /**
12
+ * @param {UnHighlightObjectsCallbackOptions} options
13
+ * @param {import('@vcmap/ui').VcsUiApp} app
14
+ */
15
+ constructor(options: UnHighlightObjectsCallbackOptions, app: import('@vcmap/ui').VcsUiApp);
16
+ /** @type {string} */
17
+ _layerName: string;
18
+ /** @type {(string | number)[]} */
19
+ _toUnHighlight: (string | number)[];
20
+ callback(): void;
21
+ /** @returns {UnHighlightObjectsCallbackOptions} */
22
+ toJSON(): UnHighlightObjectsCallbackOptions;
23
+ }
24
+ export type UnHighlightObjectsCallbackOptions = import('@vcmap/ui').VcsCallbackOptions & {
25
+ layerName: string;
26
+ toUnHighlight: (string | number)[];
27
+ };
28
+ import VcsCallback from './vcsCallback.js';
@@ -0,0 +1,59 @@
1
+ import { FeatureLayer } from '@vcmap/core';
2
+ import VcsCallback, { callbackClassRegistry } from './vcsCallback.js';
3
+
4
+ /**
5
+ * @typedef {import('@vcmap/ui').VcsCallbackOptions & {
6
+ * layerName: string;
7
+ * toUnHighlight: (string | number)[];
8
+ * }} UnHighlightObjectsCallbackOptions
9
+ */
10
+
11
+ /**
12
+ * A callback to unhighlight previously highlighted objects of a FeatureLayer.
13
+ */
14
+ export default class UnHighlightObjectsCallback extends VcsCallback {
15
+ static get className() {
16
+ return 'UnHighlightObjectsCallback';
17
+ }
18
+
19
+ /** @type {string} */
20
+ _layerName;
21
+
22
+ /** @type {(string | number)[]} */
23
+ _toUnHighlight;
24
+
25
+ /**
26
+ * @param {UnHighlightObjectsCallbackOptions} options
27
+ * @param {import('@vcmap/ui').VcsUiApp} app
28
+ */
29
+ constructor(options, app) {
30
+ super(options, app);
31
+
32
+ this._layerName = options.layerName;
33
+ this._toUnHighlight = options.toUnHighlight;
34
+ }
35
+
36
+ callback() {
37
+ /** @type {import('@vcmap/ui').VcsUiApp} */
38
+ const app = this._app;
39
+ const layer = app.layers.getByKey(this._layerName);
40
+
41
+ if (layer instanceof FeatureLayer) {
42
+ layer.featureVisibility.unHighlight(this._toUnHighlight);
43
+ }
44
+ }
45
+
46
+ /** @returns {UnHighlightObjectsCallbackOptions} */
47
+ toJSON() {
48
+ return {
49
+ ...super.toJSON(),
50
+ layerName: this._layerName,
51
+ toUnHighlight: [...this._toUnHighlight],
52
+ };
53
+ }
54
+ }
55
+
56
+ callbackClassRegistry.registerClass(
57
+ UnHighlightObjectsCallback.className,
58
+ UnHighlightObjectsCallback,
59
+ );
@@ -1,9 +1,20 @@
1
1
  /**
2
- * creates instances of VcsCallback classes and executes its callback function
2
+ * Creates instances of VcsCallback classes and executes their `callback()`.
3
+ *
4
+ * Note: this function does not await promise-returning callbacks.
3
5
  * @param {import("@src/vcsUiApp.js").default} app
4
6
  * @param {Array<VcsCallbackOptions>} vcsCallbackOptions
7
+ * @returns {void}
5
8
  */
6
9
  export function executeCallbacks(app: import("@src/vcsUiApp.js").default, vcsCallbackOptions: Array<VcsCallbackOptions>): void;
10
+ /**
11
+ * Creates instances of VcsCallback classes and executes their `callback()` sequentially.
12
+ * Awaits promise-returning callbacks before continuing with the next one.
13
+ * @param {import("@src/vcsUiApp.js").default} app
14
+ * @param {Array<VcsCallbackOptions>} vcsCallbackOptions
15
+ * @returns {Promise<void>}
16
+ */
17
+ export function executeAsyncCallbacks(app: import("@src/vcsUiApp.js").default, vcsCallbackOptions: Array<VcsCallbackOptions>): Promise<void>;
7
18
  /**
8
19
  * @type {ClassRegistry<typeof VcsCallback>}
9
20
  */
@@ -36,7 +47,10 @@ declare class VcsCallback {
36
47
  * @type {import("@src/vcsUiApp.js").default}
37
48
  */
38
49
  protected _app: import("@src/vcsUiApp.js").default;
39
- callback(): void;
50
+ /**
51
+ * @returns {void | Promise<void>}
52
+ */
53
+ callback(): void | Promise<void>;
40
54
  /**
41
55
  * @returns {VcsCallbackOptions}
42
56
  */
@@ -6,9 +6,12 @@ import { ClassRegistry } from '@vcmap/core';
6
6
  export const callbackClassRegistry = new ClassRegistry();
7
7
 
8
8
  /**
9
- * creates instances of VcsCallback classes and executes its callback function
9
+ * Creates instances of VcsCallback classes and executes their `callback()`.
10
+ *
11
+ * Note: this function does not await promise-returning callbacks.
10
12
  * @param {import("@src/vcsUiApp.js").default} app
11
13
  * @param {Array<VcsCallbackOptions>} vcsCallbackOptions
14
+ * @returns {void}
12
15
  */
13
16
  export function executeCallbacks(app, vcsCallbackOptions) {
14
17
  vcsCallbackOptions.forEach((options) =>
@@ -16,6 +19,26 @@ export function executeCallbacks(app, vcsCallbackOptions) {
16
19
  );
17
20
  }
18
21
 
22
+ /**
23
+ * Creates instances of VcsCallback classes and executes their `callback()` sequentially.
24
+ * Awaits promise-returning callbacks before continuing with the next one.
25
+ * @param {import("@src/vcsUiApp.js").default} app
26
+ * @param {Array<VcsCallbackOptions>} vcsCallbackOptions
27
+ * @returns {Promise<void>}
28
+ */
29
+ export async function executeAsyncCallbacks(app, vcsCallbackOptions) {
30
+ for (const options of vcsCallbackOptions) {
31
+ const callbackInstance = app.callbackClassRegistry.createFromTypeOptions(
32
+ options,
33
+ app,
34
+ );
35
+ if (callbackInstance) {
36
+ // eslint-disable-next-line no-await-in-loop
37
+ await callbackInstance.callback();
38
+ }
39
+ }
40
+ }
41
+
19
42
  /**
20
43
  * @typedef {Object} VcsCallbackOptions
21
44
  * @property {string} type
@@ -45,6 +68,9 @@ class VcsCallback {
45
68
  this._app = app;
46
69
  }
47
70
 
71
+ /**
72
+ * @returns {void | Promise<void>}
73
+ */
48
74
  // eslint-disable-next-line class-methods-use-this
49
75
  callback() {}
50
76
 
@@ -19,7 +19,7 @@
19
19
  return {};
20
20
  }
21
21
 
22
- const match = epsg.match(epsgRegex);
22
+ const match = String(epsg).match(epsgRegex);
23
23
  if (!match) {
24
24
  return {};
25
25
  }
@@ -8,13 +8,13 @@
8
8
  export function sortByOwner(ownerA: string | symbol, ownerB: string | symbol, order?: string[] | undefined): number;
9
9
  /**
10
10
  * filters actions by button location and returns actions (optionally sorted)
11
- * @param {Array<import("./buttonManager.js").ButtonComponent>} buttonComponents
11
+ * @param {Array<NavbarButtonComponent>} buttonComponents
12
12
  * @param {ButtonLocation} location Button render position
13
13
  * @param {string[]} [order] optional order to sort by (plugin names)
14
- * @param {function(import("./buttonManager.js").ButtonComponent, import("./buttonManager.js").ButtonComponent):number} [compareFn=sortByOwner] Per default components are sorted by weight (highest first) and owner (app first, then plugins)
14
+ * @param {function(NavbarButtonComponent, NavbarButtonComponent):number} [compareFn=sortByOwner] Per default components are sorted by weight (highest first) and owner (app first, then plugins)
15
15
  * @returns {Array<import("../actions/actionHelper.js").VcsAction>}
16
16
  */
17
- export function getActionsByLocation(buttonComponents: Array<import("./buttonManager.js").ButtonComponent>, location: ButtonLocation, order?: string[] | undefined, compareFn?: ((arg0: import("./buttonManager.js").ButtonComponent, arg1: import("./buttonManager.js").ButtonComponent) => number) | undefined): Array<import("../actions/actionHelper.js").VcsAction>;
17
+ export function getActionsByLocation(buttonComponents: Array<NavbarButtonComponent>, location: ButtonLocation, order?: string[] | undefined, compareFn?: ((arg0: NavbarButtonComponent, arg1: NavbarButtonComponent) => number) | undefined): Array<import("../actions/actionHelper.js").VcsAction>;
18
18
  export const locationSymbol: unique symbol;
19
19
  export const deviceSymbol: unique symbol;
20
20
  /**
@@ -30,20 +30,27 @@ export namespace ButtonLocation {
30
30
  let MENU: number;
31
31
  }
32
32
  export default NavbarManager;
33
- export type INavbarManager = import("../vcsUiApp.js").VcsComponentManager<import("./buttonManager.js").ButtonComponent, import("./buttonManager.js").ButtonComponentOptions>;
34
- export type DeviceOptions = {
35
- desktop: boolean | null;
36
- tablet: boolean | null;
37
- mobile: boolean | null;
33
+ export type INavbarManager = import("../vcsUiApp.js").VcsComponentManager<NavbarButtonComponent, import("./buttonManager.js").ButtonComponentOptions>;
34
+ export type Device = 'desktop' | 'tablet' | 'mobile';
35
+ export type DeviceOptions = Partial<Record<Device, boolean>>;
36
+ export type NavbarButtonComponent = import("./buttonManager.js").ButtonComponent & {
37
+ [locationSymbol]: ButtonLocation;
38
+ [deviceSymbol]: DeviceOptions;
38
39
  };
39
40
  /**
40
- * @typedef {import("../vcsUiApp.js").VcsComponentManager<import("./buttonManager.js").ButtonComponent,import("./buttonManager.js").ButtonComponentOptions>} INavbarManager
41
+ * @typedef {import("../vcsUiApp.js").VcsComponentManager<NavbarButtonComponent,import("./buttonManager.js").ButtonComponentOptions>} INavbarManager
41
42
  */
42
43
  /**
43
- * @typedef {Object} DeviceOptions
44
- * @property {boolean?} desktop
45
- * @property {boolean?} tablet
46
- * @property {boolean?} mobile
44
+ * @typedef {'desktop' | 'tablet' | 'mobile'} Device
45
+ */
46
+ /**
47
+ * @typedef {Partial<Record<Device, boolean>>} DeviceOptions
48
+ */
49
+ /**
50
+ * @typedef {import("./buttonManager.js").ButtonComponent & {
51
+ * [locationSymbol]: ButtonLocation,
52
+ * [deviceSymbol]: DeviceOptions,
53
+ * }} NavbarButtonComponent
47
54
  */
48
55
  /**
49
56
  * @class NavbarManager
@@ -58,10 +65,15 @@ declare class NavbarManager extends ButtonManager implements INavbarManager {
58
65
  * @param {ButtonLocation} location Button render position
59
66
  * @param {DeviceOptions} [device={destop: true, tablet: true}] Device - optional device configuration
60
67
  * @throws {Error} if a buttonComponent with the same ID has already been added
61
- * @returns {import("./buttonManager.js").ButtonComponent}
68
+ * @returns {NavbarButtonComponent}
62
69
  */
63
70
  // @ts-ignore
64
- add(buttonComponentOptions: import("./buttonManager.js").ButtonComponentOptions, owner: string | symbol, location: ButtonLocation, device?: DeviceOptions | undefined): import("./buttonManager.js").ButtonComponent;
71
+ add(buttonComponentOptions: import("./buttonManager.js").ButtonComponentOptions, owner: string | symbol, location: ButtonLocation, device?: Partial<Record<Device, boolean>> | undefined): NavbarButtonComponent;
72
+ /**
73
+ * @param {string} id
74
+ * @returns {NavbarButtonComponent}
75
+ */
76
+ get(id: string): NavbarButtonComponent;
65
77
  /**
66
78
  * Toggles a button of provided id by executing its callback.
67
79
  * Use active flag to force a state to be applied.
@@ -33,10 +33,10 @@ export function sortByOwner(ownerA, ownerB, order = []) {
33
33
 
34
34
  /**
35
35
  * filters actions by button location and returns actions (optionally sorted)
36
- * @param {Array<import("./buttonManager.js").ButtonComponent>} buttonComponents
36
+ * @param {Array<NavbarButtonComponent>} buttonComponents
37
37
  * @param {ButtonLocation} location Button render position
38
38
  * @param {string[]} [order] optional order to sort by (plugin names)
39
- * @param {function(import("./buttonManager.js").ButtonComponent, import("./buttonManager.js").ButtonComponent):number} [compareFn=sortByOwner] Per default components are sorted by weight (highest first) and owner (app first, then plugins)
39
+ * @param {function(NavbarButtonComponent, NavbarButtonComponent):number} [compareFn=sortByOwner] Per default components are sorted by weight (highest first) and owner (app first, then plugins)
40
40
  * @returns {Array<import("../actions/actionHelper.js").VcsAction>}
41
41
  */
42
42
  export function getActionsByLocation(
@@ -72,14 +72,22 @@ export const ButtonLocation = {
72
72
  };
73
73
 
74
74
  /**
75
- * @typedef {import("../vcsUiApp.js").VcsComponentManager<import("./buttonManager.js").ButtonComponent,import("./buttonManager.js").ButtonComponentOptions>} INavbarManager
75
+ * @typedef {import("../vcsUiApp.js").VcsComponentManager<NavbarButtonComponent,import("./buttonManager.js").ButtonComponentOptions>} INavbarManager
76
76
  */
77
77
 
78
78
  /**
79
- * @typedef {Object} DeviceOptions
80
- * @property {boolean?} desktop
81
- * @property {boolean?} tablet
82
- * @property {boolean?} mobile
79
+ * @typedef {'desktop' | 'tablet' | 'mobile'} Device
80
+ */
81
+
82
+ /**
83
+ * @typedef {Partial<Record<Device, boolean>>} DeviceOptions
84
+ */
85
+
86
+ /**
87
+ * @typedef {import("./buttonManager.js").ButtonComponent & {
88
+ * [locationSymbol]: ButtonLocation,
89
+ * [deviceSymbol]: DeviceOptions,
90
+ * }} NavbarButtonComponent
83
91
  */
84
92
 
85
93
  /**
@@ -95,7 +103,7 @@ class NavbarManager extends ButtonManager {
95
103
  * @param {ButtonLocation} location Button render position
96
104
  * @param {DeviceOptions} [device={destop: true, tablet: true}] Device - optional device configuration
97
105
  * @throws {Error} if a buttonComponent with the same ID has already been added
98
- * @returns {import("./buttonManager.js").ButtonComponent}
106
+ * @returns {NavbarButtonComponent}
99
107
  */
100
108
  add(
101
109
  buttonComponentOptions,
@@ -115,6 +123,14 @@ class NavbarManager extends ButtonManager {
115
123
  return buttonComponent;
116
124
  }
117
125
 
126
+ /**
127
+ * @param {string} id
128
+ * @returns {NavbarButtonComponent}
129
+ */
130
+ get(id) {
131
+ return this._buttonComponents.get(id);
132
+ }
133
+
118
134
  /**
119
135
  * Toggles a button of provided id by executing its callback.
120
136
  * Use active flag to force a state to be applied.
@@ -164,7 +164,7 @@ declare class ToolboxManager implements IToolboxManager {
164
164
  * @returns {SingleToolboxComponent|SelectToolboxComponent|import("vue").ShallowReactive<GroupToolboxComponent>}
165
165
  */
166
166
  // @ts-ignore
167
- add(toolboxComponentOptions: SingleToolboxComponentOptions | SelectToolboxComponentOptions | GroupToolboxComponentOptions, owner: string | symbol, device?: import("../navbarManager.js").DeviceOptions | undefined): SingleToolboxComponent | SelectToolboxComponent | import("vue").ShallowReactive<GroupToolboxComponent>;
167
+ add(toolboxComponentOptions: SingleToolboxComponentOptions | SelectToolboxComponentOptions | GroupToolboxComponentOptions, owner: string | symbol, device?: Partial<Record<import("../navbarManager.js").Device, boolean>> | undefined): SingleToolboxComponent | SelectToolboxComponent | import("vue").ShallowReactive<GroupToolboxComponent>;
168
168
  /**
169
169
  * removes all {@link ToolboxComponent}s of a specific owner and fires removed Events
170
170
  * @param {string|vcsAppSymbol} owner
File without changes