@vcmap/core 6.0.0-rc.3 → 6.0.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 (36) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js.map +1 -1
  3. package/dist/src/category/category.d.ts +3 -3
  4. package/dist/src/category/category.js.map +1 -1
  5. package/dist/src/classRegistry.d.ts +3 -2
  6. package/dist/src/classRegistry.js +2 -0
  7. package/dist/src/classRegistry.js.map +1 -1
  8. package/dist/src/map/obliqueMap.d.ts +3 -0
  9. package/dist/src/map/obliqueMap.js +27 -6
  10. package/dist/src/map/obliqueMap.js.map +1 -1
  11. package/dist/src/map/vcsMap.d.ts +8 -0
  12. package/dist/src/map/vcsMap.js +11 -0
  13. package/dist/src/map/vcsMap.js.map +1 -1
  14. package/dist/src/overrideClassRegistry.d.ts +2 -2
  15. package/dist/src/overrideClassRegistry.js +5 -3
  16. package/dist/src/overrideClassRegistry.js.map +1 -1
  17. package/dist/src/util/hiddenObjects.js.map +1 -1
  18. package/dist/src/util/mapCollection.js +8 -0
  19. package/dist/src/util/mapCollection.js.map +1 -1
  20. package/dist/src/util/overrideCollection.d.ts +7 -7
  21. package/dist/src/util/overrideCollection.js +4 -6
  22. package/dist/src/util/overrideCollection.js.map +1 -1
  23. package/dist/src/vcsModuleHelpers.d.ts +1 -0
  24. package/dist/src/vcsModuleHelpers.js +16 -2
  25. package/dist/src/vcsModuleHelpers.js.map +1 -1
  26. package/index.ts +1 -0
  27. package/package.json +1 -1
  28. package/src/category/category.ts +8 -7
  29. package/src/classRegistry.ts +6 -3
  30. package/src/map/obliqueMap.ts +46 -6
  31. package/src/map/vcsMap.ts +20 -2
  32. package/src/overrideClassRegistry.ts +13 -7
  33. package/src/util/hiddenObjects.ts +4 -4
  34. package/src/util/mapCollection.ts +8 -0
  35. package/src/util/overrideCollection.ts +27 -20
  36. package/src/vcsModuleHelpers.ts +25 -2
@@ -22,7 +22,7 @@ export type OverrideCollectionItem = {
22
22
  * removed current item. 2) replaced is called for items which where replaced. 3) added can be called more the once for the same unique id.
23
23
  * Replaced is called before added has been called for the item.
24
24
  */
25
- export type OverrideCollectionInterface<T> = {
25
+ export type OverrideCollectionInterface<T, S> = {
26
26
  /**
27
27
  * replaced is called before added
28
28
  */
@@ -32,23 +32,23 @@ export type OverrideCollectionInterface<T> = {
32
32
  * Returns the replaced item or null if the item could not be inserted
33
33
  */
34
34
  replace: (item: T) => T | null;
35
- shadowMap: Map<string, (object & {
35
+ shadowMap: Map<string, (S & {
36
36
  [moduleIdSymbol]?: string;
37
37
  })[]>;
38
38
  /**
39
39
  * returns the overriden item or null if the item could not be inserted (this would be the result of a race condition)
40
40
  */
41
41
  override: (item: T) => T | null;
42
- parseItems: (items: (object & {
42
+ parseItems: (items: (S & {
43
43
  type?: string;
44
44
  })[] | undefined, moduleId: string) => Promise<void>;
45
- getSerializedByKey: (key: string) => object | undefined;
45
+ getSerializedByKey: (key: string) => S | undefined;
46
46
  removeModule: (moduleId: string) => void;
47
47
  serializeModule: (moduleId: string) => object[];
48
48
  [isOverrideCollection]: boolean;
49
49
  uniqueKey: keyof T;
50
50
  };
51
- export type OverrideCollection<T extends OverrideCollectionItem, C extends Collection<T> = Collection<T>> = C & OverrideCollectionInterface<T>;
51
+ export type OverrideCollection<T extends OverrideCollectionItem, C extends Collection<T> = Collection<T>, S extends object = T['toJSON'] extends () => object ? ReturnType<T['toJSON']> : T> = C & OverrideCollectionInterface<T, S>;
52
52
  /**
53
53
  * @param collection
54
54
  * @param getDynamicModuleId - function to get the current dynamic module id
@@ -57,7 +57,7 @@ export type OverrideCollection<T extends OverrideCollectionItem, C extends Colle
57
57
  * @param ctor - optional constructor to validate deserialized items against. if passed, deserializeItem must be an instance of ctor.
58
58
  * @param determineShadowIndex - return the index where a shadow should be inserted. only has relevance, if the collection is indexed. previous and current index may be null.
59
59
  */
60
- declare function makeOverrideCollection<T extends OverrideCollectionItem, C extends Collection<T>>(collection: C, getDynamicModuleId: () => string, serializeItem?: (item: T) => object & {
60
+ declare function makeOverrideCollection<T extends OverrideCollectionItem, C extends Collection<T> = Collection<T>, S extends object = T['toJSON'] extends () => object ? ReturnType<T['toJSON']> : T>(collection: C, getDynamicModuleId: () => string, serializeItem?: (item: T) => S & {
61
61
  [moduleIdSymbol]?: string;
62
- }, deserializeItem?: (item: object) => T | Promise<T> | null, ctor?: new (...args: any[]) => T, determineShadowIndex?: (item: T, shadow?: T, index?: number) => number | null | undefined): OverrideCollection<T, C>;
62
+ }, deserializeItem?: (item: S) => T | Promise<T> | null, ctor?: new (...args: any[]) => T, determineShadowIndex?: (item: T, shadow?: T, index?: number) => number | null | undefined): OverrideCollection<T, C, S>;
63
63
  export default makeOverrideCollection;
@@ -10,6 +10,9 @@ function getLogger() {
10
10
  * A symbol added to override collections.
11
11
  */
12
12
  export const isOverrideCollection = Symbol('OverrideCollection');
13
+ function defaulSerialization(i) {
14
+ return i.toJSON ? i.toJSON() : structuredClone(i);
15
+ }
13
16
  /**
14
17
  * @param collection
15
18
  * @param getDynamicModuleId - function to get the current dynamic module id
@@ -26,8 +29,7 @@ function makeOverrideCollection(collection, getDynamicModuleId, serializeItem, d
26
29
  }
27
30
  overrideCollection[isOverrideCollection] = true;
28
31
  const deserialize = deserializeItem || ((i) => i);
29
- const serialize = serializeItem ||
30
- ((i) => i.toJSON ? i.toJSON() : structuredClone(i));
32
+ const serialize = (serializeItem || defaulSerialization);
31
33
  const getShadowIndex = determineShadowIndex ||
32
34
  ((_item, _shadow, currentIndex) => currentIndex);
33
35
  overrideCollection.shadowMap = new Map();
@@ -162,10 +164,6 @@ function makeOverrideCollection(collection, getDynamicModuleId, serializeItem, d
162
164
  });
163
165
  };
164
166
  overrideCollection.replaced = new VcsEvent();
165
- /**
166
- * @param {string} moduleId
167
- * @returns {Object[]}
168
- */
169
167
  overrideCollection.serializeModule = function serializeModule(moduleId) {
170
168
  return [...overrideCollection]
171
169
  .map((item) => {
@@ -1 +1 @@
1
- {"version":3,"file":"overrideCollection.js","sourceRoot":"","sources":["../../../src/util/overrideCollection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overrideCollection.js","sourceRoot":"","sources":["../../../src/util/overrideCollection.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import type { AbstractFeatureProviderOptions } from './featureProvider/abstractF
7
7
  import type VcsApp from './vcsApp.js';
8
8
  export type ModuleLayerOptions = LayerOptions & {
9
9
  style?: string | StyleItemOptions;
10
+ highlightStyle?: string | StyleItemOptions;
10
11
  tileProvider?: TileProviderOptions;
11
12
  featureProvider?: AbstractFeatureProviderOptions;
12
13
  };
@@ -28,7 +28,16 @@ export function deserializeLayer(vcsApp, layerConfig) {
28
28
  else {
29
29
  style = getObjectFromClassRegistry(vcsApp.styleClassRegistry, layerConfig.style);
30
30
  }
31
- } // TODO highlightStyle
31
+ }
32
+ let highlightStyle;
33
+ if (layerConfig.highlightStyle) {
34
+ if (typeof layerConfig.highlightStyle === 'string') {
35
+ highlightStyle = vcsApp.styles.getByKey(layerConfig.highlightStyle);
36
+ }
37
+ else {
38
+ highlightStyle = getObjectFromClassRegistry(vcsApp.styleClassRegistry, layerConfig.highlightStyle);
39
+ }
40
+ }
32
41
  let tileProvider;
33
42
  if (layerConfig.tileProvider) {
34
43
  tileProvider = getObjectFromClassRegistry(vcsApp.tileProviderClassRegistry, layerConfig.tileProvider);
@@ -40,6 +49,7 @@ export function deserializeLayer(vcsApp, layerConfig) {
40
49
  return getObjectFromClassRegistry(vcsApp.layerClassRegistry, {
41
50
  ...layerConfig,
42
51
  style,
52
+ highlightStyle,
43
53
  tileProvider,
44
54
  featureProvider,
45
55
  });
@@ -52,7 +62,11 @@ export function serializeLayer(vcsApp, layer) {
52
62
  if (serializedLayer?.style?.name &&
53
63
  vcsApp.styles.hasKey(serializedLayer.style.name)) {
54
64
  serializedLayer.style = serializedLayer.style.name;
55
- } // TODO highlightStyle
65
+ }
66
+ if (serializedLayer?.highlightStyle?.name &&
67
+ vcsApp.styles.hasKey(serializedLayer.highlightStyle.name)) {
68
+ serializedLayer.highlightStyle = serializedLayer.highlightStyle.name;
69
+ }
56
70
  return serializedLayer;
57
71
  }
58
72
  export function getLayerIndex(current, previous, currentIndex) {
@@ -1 +1 @@
1
- {"version":3,"file":"vcsModuleHelpers.js","sourceRoot":"","sources":["../../src/vcsModuleHelpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vcsModuleHelpers.js","sourceRoot":"","sources":["../../src/vcsModuleHelpers.ts"],"names":[],"mappings":"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"}
package/index.ts CHANGED
@@ -489,6 +489,7 @@ export {
489
489
  default as DisplayQuality,
490
490
  DisplayQualityLevel,
491
491
  DisplayQualityOptions,
492
+ DisplayQualityViewModelOptions,
492
493
  } from './src/util/displayQuality/displayQuality.js';
493
494
  export { default as Collection } from './src/util/collection.js';
494
495
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vcmap/core",
3
- "version": "6.0.0-rc.3",
3
+ "version": "6.0.0-rc.5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -77,6 +77,7 @@ function checkMergeOptionOverride<
77
77
  */
78
78
  class Category<
79
79
  T extends VcsObject | object = VcsObject | object,
80
+ S extends object = object,
80
81
  > extends VcsObject {
81
82
  static get className(): string {
82
83
  return 'Category';
@@ -113,7 +114,7 @@ class Category<
113
114
 
114
115
  private _collectionListeners: (() => void)[] = [];
115
116
 
116
- private _collection: OverrideCollection<T> = makeOverrideCollection(
117
+ private _collection = makeOverrideCollection<T, Collection<T>, S>(
117
118
  new IndexedCollection(),
118
119
  this._getDynamicModuleId.bind(this),
119
120
  this._serializeItem.bind(this),
@@ -151,7 +152,7 @@ class Category<
151
152
  return this._classRegistryName;
152
153
  }
153
154
 
154
- get collection(): OverrideCollection<T> {
155
+ get collection(): OverrideCollection<T, Collection<T>, S> {
155
156
  return this._collection;
156
157
  }
157
158
 
@@ -275,11 +276,11 @@ class Category<
275
276
  this._layer.removeAllFeatures(); // XXX should we call `itemRemoved` instead?
276
277
  }
277
278
 
278
- this._collection = (collection as OverrideCollection<T>)[
279
+ this._collection = (collection as OverrideCollection<T, Collection<T>, S>)[
279
280
  isOverrideCollection
280
281
  ]
281
- ? (collection as OverrideCollection<T>)
282
- : makeOverrideCollection(
282
+ ? (collection as OverrideCollection<T, Collection<T>, S>)
283
+ : makeOverrideCollection<T, Collection<T>, S>(
283
284
  collection,
284
285
  this._getDynamicModuleId.bind(this),
285
286
  this._serializeItem.bind(this),
@@ -343,7 +344,7 @@ class Category<
343
344
  return Promise.resolve((item ?? config) as T);
344
345
  }
345
346
 
346
- protected _serializeItem(item: T): object {
347
+ protected _serializeItem(item: T): S {
347
348
  const config = JSON.parse(JSON.stringify(item)) as Record<keyof T, unknown>;
348
349
  if (this._featureProperty && this._layer) {
349
350
  const feature = this._layer.getFeatureById(
@@ -353,7 +354,7 @@ class Category<
353
354
  config[this._featureProperty] = writeGeoJSONFeature(feature);
354
355
  }
355
356
  }
356
- return config;
357
+ return config as S;
357
358
  }
358
359
 
359
360
  serializeModule(moduleId: string): { name: string; items: object[] } | null {
@@ -12,7 +12,9 @@ function logger(): Logger {
12
12
  return getLogger('ClassRegistry');
13
13
  }
14
14
 
15
- export type Ctor<T extends new (...args: any) => any> = new (
15
+ export type AbstractCtor = new (...args: any) => any;
16
+
17
+ export type Ctor<T extends AbstractCtor> = new (
16
18
  ...params: any
17
19
  ) => InstanceType<T>;
18
20
 
@@ -21,7 +23,7 @@ export type TypedConstructorOptions = { type?: string } & Record<
21
23
  unknown
22
24
  >;
23
25
 
24
- class ClassRegistry<T extends Ctor<T>> {
26
+ class ClassRegistry<T extends AbstractCtor> {
25
27
  private _classMap: Map<string, Ctor<T>>;
26
28
 
27
29
  constructor() {
@@ -76,6 +78,7 @@ class ClassRegistry<T extends Ctor<T>> {
76
78
  logger().error(`could not find constructor ${className}`);
77
79
  return undefined;
78
80
  }
81
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
79
82
  return new Ctor(...args);
80
83
  }
81
84
 
@@ -84,7 +87,7 @@ class ClassRegistry<T extends Ctor<T>> {
84
87
  ...args: unknown[]
85
88
  ): InstanceType<T> | undefined {
86
89
  check(options, { type: String });
87
-
90
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
88
91
  return this.create(options.type as string, options, ...args);
89
92
  }
90
93
  }
@@ -32,6 +32,7 @@ export type ObliqueOptions = VcsMapOptions & {
32
32
  changeOnMoveEnd?: boolean;
33
33
  switchThreshold?: number;
34
34
  switchOnEdge?: boolean;
35
+ maintainViewpointOnCollectionChange?: boolean;
35
36
  };
36
37
 
37
38
  const defaultHeadings: Record<ViewDirection, number> = {
@@ -90,6 +91,10 @@ class ObliqueMap extends BaseOLMap {
90
91
  */
91
92
  collectionChanged: VcsEvent<ObliqueCollection>;
92
93
 
94
+ failedToSetCollection = new VcsEvent<ObliqueCollection>();
95
+
96
+ maintainViewpointOnCollectionChange: boolean;
97
+
93
98
  private _activeCollectionDestroyedListener: () => void;
94
99
 
95
100
  private _obliqueProvider: ObliqueProvider | null = null;
@@ -102,6 +107,7 @@ class ObliqueMap extends BaseOLMap {
102
107
  changeOnMoveEnd: false,
103
108
  switchThreshold: 0,
104
109
  switchOnEdge: true,
110
+ maintainViewpointOnCollectionChange: false,
105
111
  };
106
112
  }
107
113
 
@@ -129,6 +135,11 @@ class ObliqueMap extends BaseOLMap {
129
135
 
130
136
  this.collectionChanged = new VcsEvent();
131
137
 
138
+ this.maintainViewpointOnCollectionChange = parseBoolean(
139
+ options.maintainViewpointOnCollectionChange,
140
+ defaultOptions.maintainViewpointOnCollectionChange,
141
+ );
142
+
132
143
  this._activeCollectionDestroyedListener = (): void => {};
133
144
  }
134
145
 
@@ -293,6 +304,7 @@ class ObliqueMap extends BaseOLMap {
293
304
  if (this._loadingCollection !== obliqueCollection) {
294
305
  return;
295
306
  }
307
+
296
308
  await this._setCollection(obliqueCollection, viewpoint);
297
309
  }
298
310
 
@@ -304,18 +316,37 @@ class ObliqueMap extends BaseOLMap {
304
316
  viewpoint?: Viewpoint,
305
317
  ): Promise<void> {
306
318
  this._loadingCollection = obliqueCollection;
307
- this._activeCollectionDestroyedListener();
308
- this._activeCollectionDestroyedListener =
309
- obliqueCollection.destroyed.addEventListener(() => {
310
- // eslint-disable-next-line no-void
311
- void this._setCollection(defaultCollection);
312
- });
313
319
  await obliqueCollection.load();
314
320
  const vp = viewpoint || (await this.getViewpoint());
315
321
  if (this._loadingCollection !== obliqueCollection) {
316
322
  return;
317
323
  }
324
+
325
+ if (
326
+ viewpoint &&
327
+ this.maintainViewpointOnCollectionChange &&
328
+ this.collection
329
+ ) {
330
+ const viewDirection = getViewDirectionFromViewpoint(viewpoint);
331
+ const mercatorCoordinates = getMercatorViewpointCenter(viewpoint);
332
+ const canShow = await obliqueCollection.hasImageAtCoordinate(
333
+ mercatorCoordinates,
334
+ viewDirection,
335
+ );
336
+ if (!canShow) {
337
+ this.failedToSetCollection.raiseEvent(obliqueCollection);
338
+ return;
339
+ }
340
+ }
341
+
318
342
  this._obliqueProvider?.setCollection(obliqueCollection);
343
+ this._activeCollectionDestroyedListener();
344
+ this._activeCollectionDestroyedListener =
345
+ obliqueCollection.destroyed.addEventListener(() => {
346
+ // eslint-disable-next-line no-void
347
+ void this._setCollection(defaultCollection);
348
+ });
349
+
319
350
  this.collectionChanged.raiseEvent(obliqueCollection);
320
351
  if (vp) {
321
352
  await this.gotoViewpoint(vp);
@@ -470,6 +501,14 @@ class ObliqueMap extends BaseOLMap {
470
501
  config.switchOnEdge = this.switchEnabled;
471
502
  }
472
503
 
504
+ if (
505
+ this.maintainViewpointOnCollectionChange !==
506
+ defaultOptions.maintainViewpointOnCollectionChange
507
+ ) {
508
+ config.maintainViewpointOnCollectionChange =
509
+ this.maintainViewpointOnCollectionChange;
510
+ }
511
+
473
512
  return config;
474
513
  }
475
514
 
@@ -478,6 +517,7 @@ class ObliqueMap extends BaseOLMap {
478
517
  this._obliqueProvider.destroy();
479
518
  }
480
519
  this.collectionChanged.destroy();
520
+ this.failedToSetCollection.destroy();
481
521
  this._activeCollectionDestroyedListener();
482
522
  super.destroy();
483
523
  }
package/src/map/vcsMap.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { getLogger as getLoggerByName, Logger } from '@vcsuite/logger';
2
+ import { parseBoolean } from '@vcsuite/parsers';
2
3
  import { v4 as uuidv4 } from 'uuid';
3
4
  import type { MapEvent as OLMapEvent } from 'ol';
4
5
  import type { Layer as OLLayer } from 'ol/layer.js';
@@ -23,6 +24,10 @@ function getLogger(): Logger {
23
24
  }
24
25
 
25
26
  export type VcsMapOptions = VcsObjectOptions & {
27
+ /**
28
+ * instead of using a fallback map, this map will fail to activate if another map is active and the current viewpoint cannot be shown
29
+ */
30
+ fallbackToCurrentMap?: boolean;
26
31
  /**
27
32
  * the name of the fallback map to use, e.g. in case there is no oblique image at the activation viewpoint
28
33
  */
@@ -58,6 +63,7 @@ class VcsMap<
58
63
  static getDefaultOptions(): VcsMapOptions {
59
64
  return {
60
65
  fallbackMap: undefined,
66
+ fallbackToCurrentMap: false,
61
67
  };
62
68
  }
63
69
 
@@ -93,9 +99,13 @@ class VcsMap<
93
99
  /**
94
100
  * The name of a map to fall back on, if this map cant show a viewpoint
95
101
  */
96
-
97
102
  fallbackMap: string | null;
98
103
 
104
+ /**
105
+ * instead of using a fallback map, this map will fail to activate if another map is active and the current viewpoint cannot be shown
106
+ */
107
+ fallbackToCurrentMap: boolean;
108
+
99
109
  private _visualizations: Map<string, Set<V>>;
100
110
 
101
111
  private _state: MapState;
@@ -122,7 +132,7 @@ class VcsMap<
122
132
  */
123
133
  constructor(options: VcsMapOptions) {
124
134
  super(options);
125
-
135
+ const defaultOptions = VcsMap.getDefaultOptions();
126
136
  this.mapElement = document.createElement('div');
127
137
  this.mapElement.setAttribute('id', uuidv4());
128
138
  this.mapElement.classList.add('mapElement');
@@ -147,6 +157,11 @@ class VcsMap<
147
157
 
148
158
  this.fallbackMap = options.fallbackMap || null;
149
159
 
160
+ this.fallbackToCurrentMap = parseBoolean(
161
+ options.fallbackToCurrentMap,
162
+ defaultOptions.fallbackToCurrentMap,
163
+ );
164
+
150
165
  this._visualizations = new Map();
151
166
 
152
167
  this._state = MapState.INACTIVE;
@@ -516,6 +531,9 @@ class VcsMap<
516
531
  if (this.fallbackMap) {
517
532
  config.fallbackMap = this.fallbackMap;
518
533
  }
534
+ if (this.fallbackToCurrentMap) {
535
+ config.fallbackToCurrentMap = this.fallbackToCurrentMap;
536
+ }
519
537
  return config;
520
538
  }
521
539
 
@@ -1,16 +1,20 @@
1
1
  import { check } from '@vcsuite/check';
2
2
  import { getLogger, type Logger } from '@vcsuite/logger';
3
3
  import VcsEvent from './vcsEvent.js';
4
- // eslint-disable-next-line import/no-named-default
5
- import type { default as ClassRegistry, Ctor } from './classRegistry.js';
4
+ import {
5
+ // eslint-disable-next-line import/no-named-default
6
+ default as ClassRegistry,
7
+ Ctor,
8
+ AbstractCtor,
9
+ } from './classRegistry.js';
6
10
 
7
11
  function logger(): Logger {
8
12
  return getLogger('OverrideClassRegistry');
9
13
  }
10
14
 
11
- type ModuleEntry<T extends Ctor<T>> = { moduleId: string; ctor: Ctor<T> };
15
+ type ModuleEntry<T extends AbstractCtor> = { moduleId: string; ctor: Ctor<T> };
12
16
 
13
- class OverrideClassRegistry<T extends Ctor<T>> {
17
+ class OverrideClassRegistry<T extends AbstractCtor> {
14
18
  private _coreClassRegistry: ClassRegistry<T>;
15
19
 
16
20
  private _classMap: Map<string, ModuleEntry<T>> = new Map();
@@ -142,12 +146,13 @@ class OverrideClassRegistry<T extends Ctor<T>> {
142
146
  create(className: string, ...args: unknown[]): InstanceType<T> | undefined {
143
147
  check(className, String);
144
148
 
145
- const Ctor = this.getClass(className);
146
- if (!Ctor) {
149
+ const Constructor = this.getClass(className);
150
+ if (!Constructor) {
147
151
  logger().error(`could not find constructor ${className}`);
148
152
  return undefined;
149
153
  }
150
- return new Ctor(...args);
154
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
155
+ return new Constructor(...args);
151
156
  }
152
157
 
153
158
  /**
@@ -161,6 +166,7 @@ class OverrideClassRegistry<T extends Ctor<T>> {
161
166
  ): InstanceType<T> | undefined {
162
167
  check(options, { type: String });
163
168
 
169
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
164
170
  return this.create(options.type as string, options, ...args);
165
171
  }
166
172
 
@@ -14,10 +14,10 @@ export function createHiddenObjectsCollection(
14
14
  getDynamicModuleId: () => string,
15
15
  globalHider: GlobalHider,
16
16
  ): OverrideCollection<HiddenObject> {
17
- const collection = makeOverrideCollection<
18
- HiddenObject,
19
- Collection<HiddenObject>
20
- >(new Collection<HiddenObject>('id'), getDynamicModuleId);
17
+ const collection = makeOverrideCollection<HiddenObject>(
18
+ new Collection<HiddenObject>('id'),
19
+ getDynamicModuleId,
20
+ );
21
21
 
22
22
  collection.added.addEventListener(({ id }) => {
23
23
  globalHider.hideObjects([id]);
@@ -317,6 +317,10 @@ class MapCollection extends Collection<VcsMap> {
317
317
  map,
318
318
  error: error as Error,
319
319
  });
320
+ if (!map.fallbackMap && map.fallbackToCurrentMap && this._activeMap) {
321
+ this.fallbackMapActivated.raiseEvent(map);
322
+ return Promise.resolve();
323
+ }
320
324
  if (fallbackMap) {
321
325
  this.fallbackMapActivated.raiseEvent(map);
322
326
  return this.setActiveMap(fallbackMap.name);
@@ -341,6 +345,10 @@ class MapCollection extends Collection<VcsMap> {
341
345
  this.fallbackMapActivated.raiseEvent(map);
342
346
  return this.setActiveMap(fallbackMap.name);
343
347
  }
348
+ if (map.fallbackToCurrentMap && this._activeMap) {
349
+ this.fallbackMapActivated.raiseEvent(map);
350
+ return Promise.resolve();
351
+ }
344
352
  }
345
353
  this._cachedViewpoint = null;
346
354
  if (this._activeMap) {