@vault-tec/pip-boy 1.1.4 → 1.3.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vault-tec/pip-boy",
3
- "version": "1.1.4",
3
+ "version": "1.3.0",
4
4
  "description": "Pip-Boy Angular library.",
5
5
  "author": "Vault-Tec-Industries",
6
6
  "license": "PolyForm-Noncommercial-1.0.0",
@@ -1,24 +1,14 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { ElementRef } from '@angular/core';
2
+ import { OnInit, OnDestroy, ElementRef } from '@angular/core';
3
3
 
4
4
  declare class PipBoy2000MkVI {
5
5
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PipBoy2000MkVI, never>;
6
6
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<PipBoy2000MkVI, "pip-boy-2000-mk-vi", never, {}, {}, never, never, true, never>;
7
7
  }
8
8
 
9
- declare class PipBoy3000a {
10
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PipBoy3000a, never>;
11
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PipBoy3000a, "pip-boy-3000a", never, {}, {}, never, never, true, never>;
12
- }
13
-
14
- declare class PipBoy3000MkIV {
15
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PipBoy3000MkIV, never>;
16
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PipBoy3000MkIV, "pip-boy-3000-mk-iv", never, {}, {}, never, never, true, never>;
17
- }
18
-
19
9
  type PipBoy3000PrimaryTab = 'STATS' | 'ITEMS' | 'DATA';
20
10
  type PipBoy3000StatsTab = 'STATUS' | 'S.P.E.C.I.A.L.' | 'SKILLS' | 'PERKS' | 'GENERAL';
21
- type PipBoy3000StatusTab = 'CND' | 'RAD' | 'EFF';
11
+ type PipBoy3000StatusTab = 'CND' | 'RAD' | 'EFF' | 'H20' | 'FOD' | 'SLP';
22
12
  type PipBoy3000ItemsTab = 'WEAPONS' | 'APPAREL' | 'AID' | 'MISC' | 'AMMO';
23
13
  type PipBoy3000DataTab = 'LOCAL MAP' | 'WORLD MAP' | 'QUESTS' | 'NOTES' | 'RADIO';
24
14
  type PipBoy3000SecondaryTab = PipBoy3000StatsTab | PipBoy3000ItemsTab | PipBoy3000DataTab;
@@ -37,17 +27,32 @@ declare class PipBoy3000State {
37
27
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PipBoy3000State>;
38
28
  }
39
29
 
40
- interface PipBoy3000WeaponItem {
30
+ interface PipBoy3000InventoryItem {
41
31
  id: number;
42
- damage?: number;
43
- imageId?: string;
44
32
  name: string;
33
+ imageId?: string;
45
34
  quantity?: number;
46
35
  value?: number;
47
36
  weight?: number;
37
+ damage?: number;
48
38
  effects?: string;
49
39
  }
50
40
 
41
+ interface PipBoy3000WeaponItem extends PipBoy3000InventoryItem {
42
+ }
43
+
44
+ interface PipBoy3000ApparelItem extends PipBoy3000InventoryItem {
45
+ }
46
+
47
+ interface PipBoy3000AidItem extends PipBoy3000InventoryItem {
48
+ }
49
+
50
+ interface PipBoy3000MiscItem extends PipBoy3000InventoryItem {
51
+ }
52
+
53
+ interface PipBoy3000AmmoItem extends PipBoy3000InventoryItem {
54
+ }
55
+
51
56
  interface PipBoy3000StatItem {
52
57
  id: number;
53
58
  name: string;
@@ -99,10 +104,10 @@ interface PipBoy3000SettingsSnapshot {
99
104
  radAwayLabel: string;
100
105
  radXLabel: string;
101
106
  weaponItems: PipBoy3000WeaponItem[];
102
- apparelItems: PipBoy3000WeaponItem[];
103
- aidItems: PipBoy3000WeaponItem[];
104
- miscItems: PipBoy3000WeaponItem[];
105
- ammoItems: PipBoy3000WeaponItem[];
107
+ apparelItems: PipBoy3000ApparelItem[];
108
+ aidItems: PipBoy3000AidItem[];
109
+ miscItems: PipBoy3000MiscItem[];
110
+ ammoItems: PipBoy3000AmmoItem[];
106
111
  specialItems: PipBoy3000StatItem[];
107
112
  skillItems: PipBoy3000StatItem[];
108
113
  perkItems: PipBoy3000StatItem[];
@@ -114,6 +119,9 @@ interface PipBoy3000SettingsSnapshot {
114
119
  selectedRadioItemId: number | null;
115
120
  effectItems: PipBoy3000EffectItem[];
116
121
  radMeterLevel: number;
122
+ h20MeterLevel: number;
123
+ fodMeterLevel: number;
124
+ slpMeterLevel: number;
117
125
  localMapImage: string | null;
118
126
  worldMapImage: string | null;
119
127
  radioVolume: number;
@@ -129,10 +137,13 @@ interface PipBoy3000SettingsSnapshot {
129
137
  secondaryTabSoundId: string | null;
130
138
  mainTabSoundId: string | null;
131
139
  clickSoundId: string | null;
140
+ bootVideoId: string | null;
132
141
  }
133
142
 
134
143
  declare class PipBoy3000Settings {
135
144
  constructor();
145
+ private readonly settingsConfig;
146
+ private readonly storageKey;
136
147
  private readonly imageStore;
137
148
  readonly userLevel: _angular_core.WritableSignal<number>;
138
149
  readonly userHealth: _angular_core.WritableSignal<number>;
@@ -152,10 +163,10 @@ declare class PipBoy3000Settings {
152
163
  readonly equippedMiscId: _angular_core.WritableSignal<number | null>;
153
164
  readonly equippedAmmoId: _angular_core.WritableSignal<number | null>;
154
165
  readonly weaponItems: _angular_core.WritableSignal<PipBoy3000WeaponItem[]>;
155
- readonly apparelItems: _angular_core.WritableSignal<PipBoy3000WeaponItem[]>;
156
- readonly aidItems: _angular_core.WritableSignal<PipBoy3000WeaponItem[]>;
157
- readonly miscItems: _angular_core.WritableSignal<PipBoy3000WeaponItem[]>;
158
- readonly ammoItems: _angular_core.WritableSignal<PipBoy3000WeaponItem[]>;
166
+ readonly apparelItems: _angular_core.WritableSignal<PipBoy3000ApparelItem[]>;
167
+ readonly aidItems: _angular_core.WritableSignal<PipBoy3000AidItem[]>;
168
+ readonly miscItems: _angular_core.WritableSignal<PipBoy3000MiscItem[]>;
169
+ readonly ammoItems: _angular_core.WritableSignal<PipBoy3000AmmoItem[]>;
159
170
  readonly specialItems: _angular_core.WritableSignal<PipBoy3000StatItem[]>;
160
171
  readonly skillItems: _angular_core.WritableSignal<PipBoy3000StatItem[]>;
161
172
  readonly perkItems: _angular_core.WritableSignal<PipBoy3000StatItem[]>;
@@ -167,6 +178,9 @@ declare class PipBoy3000Settings {
167
178
  readonly selectedRadioItemId: _angular_core.WritableSignal<number | null>;
168
179
  readonly effectItems: _angular_core.WritableSignal<PipBoy3000EffectItem[]>;
169
180
  readonly radMeterLevel: _angular_core.WritableSignal<number>;
181
+ readonly h20MeterLevel: _angular_core.WritableSignal<number>;
182
+ readonly fodMeterLevel: _angular_core.WritableSignal<number>;
183
+ readonly slpMeterLevel: _angular_core.WritableSignal<number>;
170
184
  readonly localMapImage: _angular_core.WritableSignal<string | null>;
171
185
  readonly worldMapImage: _angular_core.WritableSignal<string | null>;
172
186
  readonly radioVolume: _angular_core.WritableSignal<number>;
@@ -181,6 +195,7 @@ declare class PipBoy3000Settings {
181
195
  readonly secondaryTabSoundId: _angular_core.WritableSignal<string | null>;
182
196
  readonly mainTabSoundId: _angular_core.WritableSignal<string | null>;
183
197
  readonly clickSoundId: _angular_core.WritableSignal<string | null>;
198
+ readonly bootVideoId: _angular_core.WritableSignal<string | null>;
184
199
  readonly rememberTabOnRefresh: _angular_core.WritableSignal<boolean>;
185
200
  readonly playbackResetToken: _angular_core.WritableSignal<number>;
186
201
  exportSettingsSnapshot(): PipBoy3000SettingsSnapshot;
@@ -190,6 +205,13 @@ declare class PipBoy3000Settings {
190
205
  saveToLocalStorage(key?: string): void;
191
206
  loadFromLocalStorage(key?: string): void;
192
207
  resetToDefaults(): void;
208
+ private getSkillDefaults;
209
+ private getPerkDefaults;
210
+ private getWeaponDefaults;
211
+ private getApparelDefaults;
212
+ private getAidDefaults;
213
+ private getMiscDefaults;
214
+ private getAmmoDefaults;
193
215
  private setNumberSignal;
194
216
  private setZoomSignal;
195
217
  private setVolumeSignal;
@@ -213,9 +235,11 @@ interface SettingsModalPayload {
213
235
  secondaryTabSoundFile: File | null;
214
236
  mainTabSoundFile: File | null;
215
237
  clickSoundFile: File | null;
238
+ bootVideoFile: File | null;
216
239
  removeSecondaryTabSound: boolean;
217
240
  removeMainTabSound: boolean;
218
241
  removeClickSound: boolean;
242
+ removeBootVideo: boolean;
219
243
  }
220
244
 
221
245
  interface MapImagePayload {
@@ -284,6 +308,37 @@ declare class SoundStore {
284
308
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<SoundStore>;
285
309
  }
286
310
 
311
+ interface VideoMeta {
312
+ id: string;
313
+ fileName: string;
314
+ mime: string;
315
+ }
316
+ interface VideoRecord extends VideoMeta {
317
+ blob: Blob;
318
+ }
319
+ declare class VideoStore {
320
+ private readonly dbPromise;
321
+ private readonly videoUrls;
322
+ private readonly videoLabels;
323
+ private readonly urlLoading;
324
+ private readonly metaLoading;
325
+ getVideoLabel(id: string | null | undefined): string | null;
326
+ getVideoUrl(id: string | null | undefined): string | null;
327
+ saveFile(file: File): Promise<VideoMeta>;
328
+ saveBlobWithId(id: string, blob: Blob, fileName: string, mime: string): Promise<void>;
329
+ getRecord(id: string): Promise<VideoRecord | null>;
330
+ extensionFromMime(mime: string): string;
331
+ private cacheUrl;
332
+ private cacheLabel;
333
+ private loadVideoUrl;
334
+ private loadVideoMeta;
335
+ private putRecord;
336
+ private openDb;
337
+ private createId;
338
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VideoStore, never>;
339
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<VideoStore>;
340
+ }
341
+
287
342
  type AudioChannel = 'NOTES' | 'RADIO';
288
343
  declare class AudioPlayer {
289
344
  private readonly soundStore;
@@ -317,14 +372,129 @@ declare class AudioPlayer {
317
372
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AudioPlayer>;
318
373
  }
319
374
 
320
- declare class PipBoy3000 {
375
+ declare class PipBoy3000a implements OnInit, OnDestroy {
376
+ readonly returnToUrl: _angular_core.InputSignal<string>;
377
+ protected readonly state: PipBoy3000State;
378
+ protected readonly settings: PipBoy3000Settings;
379
+ protected readonly imageStore: ImageStore;
380
+ protected readonly soundStore: SoundStore;
381
+ protected readonly videoStore: VideoStore;
382
+ protected readonly audioPlayer: AudioPlayer;
383
+ private readonly hostRef;
384
+ protected readonly appVersion = "1.3.0";
385
+ protected readonly tabsOpen: _angular_core.WritableSignal<boolean>;
386
+ protected readonly showResetModal: _angular_core.WritableSignal<boolean>;
387
+ protected readonly showExitModal: _angular_core.WritableSignal<boolean>;
388
+ protected readonly showBugModal: _angular_core.WritableSignal<boolean>;
389
+ protected readonly showSettingsModal: _angular_core.WritableSignal<boolean>;
390
+ private readonly settingsListFontScaleSnapshot;
391
+ protected readonly showWelcomeModal: _angular_core.WritableSignal<boolean>;
392
+ protected readonly showBootSequence: _angular_core.WritableSignal<boolean>;
393
+ protected readonly bootSequenceStarted: _angular_core.WritableSignal<boolean>;
394
+ protected readonly bootSequenceShowWelcome: _angular_core.WritableSignal<boolean>;
395
+ protected readonly bootAutoplayAttempted: _angular_core.WritableSignal<boolean>;
396
+ protected readonly bootNeedsClick: _angular_core.WritableSignal<boolean>;
397
+ protected readonly bootIsPlaying: _angular_core.WritableSignal<boolean>;
398
+ protected readonly mapImageModal: _angular_core.WritableSignal<"LOCAL" | "WORLD" | null>;
399
+ protected readonly localMapImage: _angular_core.Signal<ElementRef<HTMLImageElement> | undefined>;
400
+ protected readonly worldMapImage: _angular_core.Signal<ElementRef<HTMLImageElement> | undefined>;
401
+ protected readonly localMapView: _angular_core.Signal<ElementRef<HTMLButtonElement> | undefined>;
402
+ protected readonly worldMapView: _angular_core.Signal<ElementRef<HTMLButtonElement> | undefined>;
403
+ protected readonly extraOptionModal: _angular_core.WritableSignal<"STIMPAK" | "LIMBS" | "RADAWAY" | "RADX" | null>;
404
+ protected readonly tabsActionsLeftOpen: _angular_core.WritableSignal<boolean>;
405
+ protected readonly tabsActionsRightOpen: _angular_core.WritableSignal<boolean>;
406
+ protected readonly isMapDragging: _angular_core.WritableSignal<boolean>;
407
+ protected readonly viewportWidth: _angular_core.WritableSignal<number>;
408
+ protected readonly mapImageModalTitle: _angular_core.Signal<"World Map" | "Local Map">;
409
+ protected readonly mapImageModalImage: _angular_core.Signal<string | null>;
410
+ protected readonly secondaryTabSoundLabel: _angular_core.Signal<string | null>;
411
+ protected readonly mainTabSoundLabel: _angular_core.Signal<string | null>;
412
+ protected readonly clickSoundLabel: _angular_core.Signal<string | null>;
413
+ protected readonly bootVideoLabel: _angular_core.Signal<string | null>;
414
+ protected readonly bootVideoUrl: _angular_core.Signal<string | null>;
415
+ protected readonly bootVideoPreviewUrl: _angular_core.WritableSignal<string | null>;
416
+ protected readonly bootVideoPlaybackUrl: _angular_core.Signal<string | null>;
417
+ private mapDragState;
418
+ private suppressMapClick;
419
+ protected readonly isScreenTooSmall: _angular_core.Signal<boolean>;
420
+ private readonly bootSequenceWatcher;
421
+ protected readonly extraOptionTitle: _angular_core.Signal<"" | "Edit Text">;
422
+ protected readonly extraOptionValue: _angular_core.Signal<string>;
423
+ private readonly documentClickHandler;
424
+ protected toggleTabs(): void;
425
+ protected toggleTabsActions(side: 'left' | 'right'): void;
426
+ protected onResize(): void;
427
+ ngOnInit(): void;
428
+ ngOnDestroy(): void;
429
+ protected saveSettingsToFile(): Promise<void>;
430
+ protected openResetModal(): void;
431
+ protected closeResetModal(): void;
432
+ protected confirmReset(): void;
433
+ protected openExitModal(): void;
434
+ protected closeExitModal(): void;
435
+ protected confirmExit(): void;
436
+ protected openBugModal(): void;
437
+ protected closeBugModal(): void;
438
+ protected confirmBugReport(): void;
439
+ protected openSettingsModal(): void;
440
+ protected closeSettingsModal(): void;
441
+ protected cancelSettingsModal(): void;
442
+ protected closeWelcomeModal(): void;
443
+ protected finishBootSequence(): void;
444
+ protected saveSettingsModal(payload: SettingsModalPayload): void;
445
+ protected previewListFontScale(value: number): void;
446
+ protected previewSecondaryTabSound(): void;
447
+ protected previewMainTabSound(): void;
448
+ protected previewClickSound(): void;
449
+ protected previewBootVideo(file: File | null): void;
450
+ protected maybeStartBootSequence(): void;
451
+ protected handleBootCanPlay(video: HTMLVideoElement): void;
452
+ protected playBootVideo(video: HTMLVideoElement, event?: Event): void;
453
+ private setBootVideoPreviewUrl;
454
+ private clearBootVideoPreview;
455
+ protected openGithubProfile(): void;
456
+ protected selectPrimary(tab: PipBoy3000PrimaryTab): void;
457
+ protected selectSecondary(tab: PipBoy3000SecondaryTab): void;
458
+ protected openExtraOptionModal(option: 'STIMPAK' | 'LIMBS' | 'RADAWAY' | 'RADX'): void;
459
+ protected closeExtraOptionModal(): void;
460
+ protected saveExtraOptionModal(value: string): void;
461
+ protected loadSettingsFromFile(event: Event): Promise<void>;
462
+ private stopAllSounds;
463
+ private collectImageIds;
464
+ private collectSoundIds;
465
+ private collectVideoIds;
466
+ private getExtension;
467
+ private getSoundExtension;
468
+ private getVideoExtension;
469
+ protected openMapImageModal(type: 'LOCAL' | 'WORLD'): void;
470
+ protected closeMapImageModal(): void;
471
+ protected zoomMap(type: 'LOCAL' | 'WORLD', delta: number): void;
472
+ protected resetMapZoom(type: 'LOCAL' | 'WORLD'): void;
473
+ protected startMapDrag(event: MouseEvent): void;
474
+ protected onMapDrag(event: MouseEvent): void;
475
+ protected endMapDrag(): void;
476
+ protected fitMapZoom(type: 'LOCAL' | 'WORLD'): void;
477
+ protected isMapFit(type: 'LOCAL' | 'WORLD'): boolean;
478
+ protected saveMapImageModal(payload: MapImagePayload): Promise<void>;
479
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PipBoy3000a, never>;
480
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PipBoy3000a, "pip-boy-3000a", never, { "returnToUrl": { "alias": "returnToUrl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
481
+ }
482
+
483
+ declare class PipBoy3000MkIV {
484
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PipBoy3000MkIV, never>;
485
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PipBoy3000MkIV, "pip-boy-3000-mk-iv", never, {}, {}, never, never, true, never>;
486
+ }
487
+
488
+ declare class PipBoy3000 implements OnInit, OnDestroy {
321
489
  readonly returnToUrl: _angular_core.InputSignal<string>;
322
490
  protected readonly state: PipBoy3000State;
323
491
  protected readonly settings: PipBoy3000Settings;
324
492
  protected readonly imageStore: ImageStore;
325
493
  protected readonly soundStore: SoundStore;
494
+ protected readonly videoStore: VideoStore;
326
495
  protected readonly audioPlayer: AudioPlayer;
327
- protected readonly appVersion = "1.1.4";
496
+ private readonly hostRef;
497
+ protected readonly appVersion = "1.3.0";
328
498
  protected readonly tabsOpen: _angular_core.WritableSignal<boolean>;
329
499
  protected readonly showResetModal: _angular_core.WritableSignal<boolean>;
330
500
  protected readonly showExitModal: _angular_core.WritableSignal<boolean>;
@@ -332,6 +502,12 @@ declare class PipBoy3000 {
332
502
  protected readonly showSettingsModal: _angular_core.WritableSignal<boolean>;
333
503
  private readonly settingsListFontScaleSnapshot;
334
504
  protected readonly showWelcomeModal: _angular_core.WritableSignal<boolean>;
505
+ protected readonly showBootSequence: _angular_core.WritableSignal<boolean>;
506
+ protected readonly bootSequenceStarted: _angular_core.WritableSignal<boolean>;
507
+ protected readonly bootSequenceShowWelcome: _angular_core.WritableSignal<boolean>;
508
+ protected readonly bootAutoplayAttempted: _angular_core.WritableSignal<boolean>;
509
+ protected readonly bootNeedsClick: _angular_core.WritableSignal<boolean>;
510
+ protected readonly bootIsPlaying: _angular_core.WritableSignal<boolean>;
335
511
  protected readonly mapImageModal: _angular_core.WritableSignal<"LOCAL" | "WORLD" | null>;
336
512
  protected readonly localMapImage: _angular_core.Signal<ElementRef<HTMLImageElement> | undefined>;
337
513
  protected readonly worldMapImage: _angular_core.Signal<ElementRef<HTMLImageElement> | undefined>;
@@ -347,14 +523,22 @@ declare class PipBoy3000 {
347
523
  protected readonly secondaryTabSoundLabel: _angular_core.Signal<string | null>;
348
524
  protected readonly mainTabSoundLabel: _angular_core.Signal<string | null>;
349
525
  protected readonly clickSoundLabel: _angular_core.Signal<string | null>;
526
+ protected readonly bootVideoLabel: _angular_core.Signal<string | null>;
527
+ protected readonly bootVideoUrl: _angular_core.Signal<string | null>;
528
+ protected readonly bootVideoPreviewUrl: _angular_core.WritableSignal<string | null>;
529
+ protected readonly bootVideoPlaybackUrl: _angular_core.Signal<string | null>;
350
530
  private mapDragState;
351
531
  private suppressMapClick;
352
532
  protected readonly isScreenTooSmall: _angular_core.Signal<boolean>;
533
+ private readonly bootSequenceWatcher;
353
534
  protected readonly extraOptionTitle: _angular_core.Signal<"" | "Edit Text">;
354
535
  protected readonly extraOptionValue: _angular_core.Signal<string>;
536
+ private readonly documentClickHandler;
355
537
  protected toggleTabs(): void;
356
538
  protected toggleTabsActions(side: 'left' | 'right'): void;
357
539
  protected onResize(): void;
540
+ ngOnInit(): void;
541
+ ngOnDestroy(): void;
358
542
  protected saveSettingsToFile(): Promise<void>;
359
543
  protected openResetModal(): void;
360
544
  protected closeResetModal(): void;
@@ -369,8 +553,18 @@ declare class PipBoy3000 {
369
553
  protected closeSettingsModal(): void;
370
554
  protected cancelSettingsModal(): void;
371
555
  protected closeWelcomeModal(): void;
556
+ protected finishBootSequence(): void;
372
557
  protected saveSettingsModal(payload: SettingsModalPayload): void;
373
558
  protected previewListFontScale(value: number): void;
559
+ protected previewSecondaryTabSound(): void;
560
+ protected previewMainTabSound(): void;
561
+ protected previewClickSound(): void;
562
+ protected previewBootVideo(file: File | null): void;
563
+ protected maybeStartBootSequence(): void;
564
+ protected handleBootCanPlay(video: HTMLVideoElement): void;
565
+ protected playBootVideo(video: HTMLVideoElement, event?: Event): void;
566
+ private setBootVideoPreviewUrl;
567
+ private clearBootVideoPreview;
374
568
  protected openGithubProfile(): void;
375
569
  protected selectPrimary(tab: PipBoy3000PrimaryTab): void;
376
570
  protected selectSecondary(tab: PipBoy3000SecondaryTab): void;
@@ -381,8 +575,10 @@ declare class PipBoy3000 {
381
575
  private stopAllSounds;
382
576
  private collectImageIds;
383
577
  private collectSoundIds;
578
+ private collectVideoIds;
384
579
  private getExtension;
385
580
  private getSoundExtension;
581
+ private getVideoExtension;
386
582
  protected openMapImageModal(type: 'LOCAL' | 'WORLD'): void;
387
583
  protected closeMapImageModal(): void;
388
584
  protected zoomMap(type: 'LOCAL' | 'WORLD', delta: number): void;
Binary file
Binary file