@dereekb/dbx-web 9.3.3 → 9.4.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.
Files changed (42) hide show
  1. package/esm2020/lib/extension/calendar/calendar.component.mjs +2 -2
  2. package/esm2020/lib/extension/calendar/calendar.store.mjs +2 -2
  3. package/esm2020/lib/layout/bar/bar.mjs +1 -1
  4. package/esm2020/lib/layout/column/two/two.column.right.component.mjs +5 -3
  5. package/esm2020/lib/layout/style/index.mjs +2 -1
  6. package/esm2020/lib/layout/style/style.mjs +16 -0
  7. package/esm2020/mapbox/lib/index.mjs +3 -1
  8. package/esm2020/mapbox/lib/mapbox.layout.component.mjs +132 -0
  9. package/esm2020/mapbox/lib/mapbox.layout.drawer.component.mjs +24 -0
  10. package/esm2020/mapbox/lib/mapbox.mjs +1 -1
  11. package/esm2020/mapbox/lib/mapbox.module.mjs +49 -6
  12. package/esm2020/mapbox/lib/mapbox.store.mjs +43 -6
  13. package/fesm2015/dereekb-dbx-web-mapbox.mjs +239 -14
  14. package/fesm2015/dereekb-dbx-web-mapbox.mjs.map +1 -1
  15. package/fesm2015/dereekb-dbx-web.mjs +38 -21
  16. package/fesm2015/dereekb-dbx-web.mjs.map +1 -1
  17. package/fesm2020/dereekb-dbx-web-mapbox.mjs +235 -14
  18. package/fesm2020/dereekb-dbx-web-mapbox.mjs.map +1 -1
  19. package/fesm2020/dereekb-dbx-web.mjs +38 -21
  20. package/fesm2020/dereekb-dbx-web.mjs.map +1 -1
  21. package/lib/layout/bar/bar.d.ts +2 -1
  22. package/lib/layout/column/two/two.column.right.component.d.ts +2 -1
  23. package/lib/layout/style/_style.scss +11 -0
  24. package/lib/layout/style/index.d.ts +1 -0
  25. package/lib/layout/style/style.d.ts +3 -0
  26. package/mapbox/esm2020/lib/index.mjs +3 -1
  27. package/mapbox/esm2020/lib/mapbox.layout.component.mjs +132 -0
  28. package/mapbox/esm2020/lib/mapbox.layout.drawer.component.mjs +24 -0
  29. package/mapbox/esm2020/lib/mapbox.mjs +1 -1
  30. package/mapbox/esm2020/lib/mapbox.module.mjs +49 -6
  31. package/mapbox/esm2020/lib/mapbox.store.mjs +43 -6
  32. package/mapbox/fesm2015/dereekb-dbx-web-mapbox.mjs +239 -14
  33. package/mapbox/fesm2015/dereekb-dbx-web-mapbox.mjs.map +1 -1
  34. package/mapbox/fesm2020/dereekb-dbx-web-mapbox.mjs +235 -14
  35. package/mapbox/fesm2020/dereekb-dbx-web-mapbox.mjs.map +1 -1
  36. package/mapbox/lib/index.d.ts +2 -0
  37. package/mapbox/lib/mapbox.layout.component.d.ts +44 -0
  38. package/mapbox/lib/mapbox.layout.drawer.component.d.ts +12 -0
  39. package/mapbox/lib/mapbox.module.d.ts +9 -2
  40. package/mapbox/lib/mapbox.store.d.ts +23 -0
  41. package/mapbox/package.json +5 -5
  42. package/package.json +3 -3
@@ -1,12 +1,24 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Optional, Inject, Directive, Host, NgModule } from '@angular/core';
2
+ import { Injectable, Optional, Inject, Directive, Host, Component, ElementRef, ViewChild, Input, NgModule } from '@angular/core';
3
+ import * as i2$1 from '@angular/common';
3
4
  import { CommonModule } from '@angular/common';
4
- import { cleanup, filterMaybe, onTrueToFalse } from '@dereekb/rxjs';
5
- import { latLngPointFunction, latLngBoundFunction, isSameLatLngPoint, isSameLatLngBound, isWithinLatLngBoundFunction, overlapsLatLngBoundFunction, latLngPoint } from '@dereekb/util';
5
+ import { cleanup, filterMaybe, onTrueToFalse, SubscriptionObject } from '@dereekb/rxjs';
6
+ import { latLngPointFunction, latLngBoundFunction, isSameLatLngPoint, isSameLatLngBound, isWithinLatLngBoundFunction, overlapsLatLngBoundFunction, diffLatLngBoundPoints, latLngBoundCenterPoint, addLatLngPoints, latLngPoint } from '@dereekb/util';
6
7
  import { ComponentStore } from '@ngrx/component-store';
7
- import { switchMap, NEVER, defaultIfEmpty, map, tap, distinctUntilChanged, shareReplay, of, combineLatest, filter, first, startWith, interval } from 'rxjs';
8
+ import { switchMap, NEVER, defaultIfEmpty, map, tap, distinctUntilChanged, shareReplay, of, combineLatest, filter, first, startWith, interval, Subject, BehaviorSubject, throttleTime, skip } from 'rxjs';
8
9
  import * as MapboxGl from 'mapbox-gl';
9
10
  import * as i1 from 'ngx-mapbox-gl';
11
+ import { dbxColorBackground } from '@dereekb/dbx-web';
12
+ import * as i3 from '@angular/material/sidenav';
13
+ import { MatDrawerContainer, MatSidenavModule } from '@angular/material/sidenav';
14
+ import * as i4 from '@angular/material/button';
15
+ import { MatButtonModule } from '@angular/material/button';
16
+ import * as i5 from '@angular/material/icon';
17
+ import { MatIconModule } from '@angular/material/icon';
18
+ import * as i6 from 'angular-resize-event';
19
+ import { AngularResizeEventModule } from 'angular-resize-event';
20
+ import * as i2 from '@dereekb/dbx-core';
21
+ import { DbxInjectionComponentModule } from '@dereekb/dbx-core';
10
22
 
11
23
  class DbxMapboxConfig {
12
24
  }
@@ -51,7 +63,8 @@ class DbxMapboxMapStore extends ComponentStore {
51
63
  lifecycleState: 'init',
52
64
  moveState: 'init',
53
65
  zoomState: 'init',
54
- rotateState: 'init'
66
+ rotateState: 'init',
67
+ retainContent: true
55
68
  });
56
69
  this.dbxMapboxService = dbxMapboxService;
57
70
  this.latLngPoint = latLngPointFunction();
@@ -270,10 +283,12 @@ class DbxMapboxMapStore extends ComponentStore {
270
283
  this.bearing$ = this.whenInitialized$.pipe(switchMap(() => {
271
284
  return this.isRotating$.pipe(onTrueToFalse(), startWith(undefined), switchMap((x) => this.bearingNow$.pipe(first())), distinctUntilChanged(), shareReplay(1));
272
285
  }));
273
- this.clickEvent$ = this.state$.pipe(map((x) => x.clickEvent));
274
- this.doubleClickEvent$ = this.state$.pipe(map((x) => x.doubleClickEvent));
286
+ this.content$ = this.state$.pipe(map((x) => x.content), distinctUntilChanged(), shareReplay(1));
287
+ this.hasContent$ = this.content$.pipe(map(Boolean));
288
+ this.clickEvent$ = this.state$.pipe(map((x) => x.clickEvent), distinctUntilChanged(), shareReplay(1));
289
+ this.doubleClickEvent$ = this.state$.pipe(map((x) => x.doubleClickEvent), distinctUntilChanged(), shareReplay(1));
275
290
  // MARK: State Changes
276
- this._setMapService = this.updater((state, mapService) => ({ mapService, moveState: 'init', lifecycleState: 'init', zoomState: 'init', rotateState: 'init' }));
291
+ this._setMapService = this.updater((state, mapService) => ({ mapService, moveState: 'init', lifecycleState: 'init', zoomState: 'init', rotateState: 'init', retainContent: state.retainContent, content: state.retainContent ? state.content : undefined }));
277
292
  this._setLifecycleState = this.updater((state, lifecycleState) => ({ ...state, lifecycleState }));
278
293
  this._setMoveState = this.updater((state, moveState) => ({ ...state, moveState }));
279
294
  this._setZoomState = this.updater((state, zoomState) => ({ ...state, zoomState }));
@@ -281,6 +296,8 @@ class DbxMapboxMapStore extends ComponentStore {
281
296
  this._setClickEvent = this.updater((state, clickEvent) => ({ ...state, clickEvent }));
282
297
  this._setDoubleClickEvent = this.updater((state, doubleClickEvent) => ({ ...state, doubleClickEvent }));
283
298
  this._setError = this.updater((state, error) => ({ ...state, error }));
299
+ this.clearContent = this.updater((state) => ({ ...state, content: undefined }));
300
+ this.setContent = this.updater((state, content) => ({ ...state, content }));
284
301
  }
285
302
  // MARK: Accessors
286
303
  get timerRefreshPeriod() {
@@ -306,6 +323,38 @@ class DbxMapboxMapStore extends ComponentStore {
306
323
  }
307
324
  }), shareReplay());
308
325
  }
326
+ atNextIdle() {
327
+ return this.moveState$.pipe(map((x) => x === 'idle'), first());
328
+ }
329
+ calculateNextCenterWithOffset(inputOffset) {
330
+ const offset = this.latLngPoint(inputOffset);
331
+ return this.atNextIdle().pipe(switchMap(() => this.center$.pipe(first(), map((center) => {
332
+ const newCenter = {
333
+ lat: offset.lat + center.lat,
334
+ lng: offset.lng + center.lng
335
+ };
336
+ return newCenter;
337
+ }))));
338
+ }
339
+ calculateNextCenterOffsetWithScreenMarginChange(sizing) {
340
+ return this.atNextIdle().pipe(switchMap(() => this.bound$.pipe((first(),
341
+ map((bounds) => {
342
+ const diff = diffLatLngBoundPoints(bounds);
343
+ const center = latLngBoundCenterPoint(bounds);
344
+ const offsetWidth = sizing.leftMargin + sizing.rightMargin; // 300 + 0
345
+ const newWidth = sizing.fullWidth - offsetWidth; // 1000 - 300 - 0
346
+ const newWidthRatio = newWidth / sizing.fullWidth; // 700 / 1000
347
+ const newCenterLongitudeWidth = diff.lng * newWidthRatio; // 70% offset
348
+ const effectiveOffset = {
349
+ lat: 0,
350
+ lng: newCenterLongitudeWidth / 2
351
+ };
352
+ const newCenter = addLatLngPoints(bounds.sw, effectiveOffset);
353
+ newCenter.lat = center.lat; // retain center position
354
+ // console.log({ sizing, bounds, effectiveOffset, newWidth, offsetWidth, diff, center, newCenter });
355
+ return newCenter;
356
+ })))));
357
+ }
309
358
  }
310
359
  DbxMapboxMapStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxMapStore, deps: [{ token: DbxMapboxService }], target: i0.ɵɵFactoryTarget.Injectable });
311
360
  DbxMapboxMapStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxMapStore });
@@ -353,6 +402,148 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImpor
353
402
  type: Optional
354
403
  }] }]; } });
355
404
 
405
+ /**
406
+ * Content drawer that connects with DbxMapboxMapStore to
407
+ */
408
+ class DbxMapboxLayoutDrawerComponent {
409
+ constructor(dbxMapboxMapStore) {
410
+ this.dbxMapboxMapStore = dbxMapboxMapStore;
411
+ this.config$ = this.dbxMapboxMapStore.content$;
412
+ }
413
+ }
414
+ DbxMapboxLayoutDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxLayoutDrawerComponent, deps: [{ token: DbxMapboxMapStore }], target: i0.ɵɵFactoryTarget.Component });
415
+ DbxMapboxLayoutDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: DbxMapboxLayoutDrawerComponent, selector: "dbx-mapbox-layout-drawer", host: { classAttribute: "dbx-mapbox-layout-drawer" }, ngImport: i0, template: "<div>\n <dbx-injection [config]=\"config$ | async\"></dbx-injection>\n</div>\n", dependencies: [{ kind: "component", type: i2.DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }] });
416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxLayoutDrawerComponent, decorators: [{
417
+ type: Component,
418
+ args: [{ selector: 'dbx-mapbox-layout-drawer', host: {
419
+ class: 'dbx-mapbox-layout-drawer'
420
+ }, template: "<div>\n <dbx-injection [config]=\"config$ | async\"></dbx-injection>\n</div>\n" }]
421
+ }], ctorParameters: function () { return [{ type: DbxMapboxMapStore }]; } });
422
+
423
+ /**
424
+ * Responsive component meant to split a left and right column.
425
+ *
426
+ * The left column is smaller than the right column, which contains the primary content.
427
+ *
428
+ * Requires a TwoColumnsContextStore to be provided.
429
+ */
430
+ class DbxMapboxLayoutComponent extends SubscriptionObject {
431
+ constructor(dbxMapboxMapStore) {
432
+ super();
433
+ this.dbxMapboxMapStore = dbxMapboxMapStore;
434
+ this._resized = new Subject();
435
+ this._updateMargins = new Subject();
436
+ this._side = new BehaviorSubject('right');
437
+ this._openToggle = new BehaviorSubject(true);
438
+ this._color = new BehaviorSubject(undefined);
439
+ this._toggleSub = new SubscriptionObject();
440
+ this.side$ = this._side.pipe(distinctUntilChanged(), shareReplay(1));
441
+ this.opened$ = combineLatest([this.dbxMapboxMapStore.hasContent$, this._openToggle]).pipe(map(([hasContent, open]) => hasContent && open), distinctUntilChanged(), shareReplay(1));
442
+ this.position$ = this.side$.pipe(map((x) => (x === 'right' ? 'end' : 'start')), distinctUntilChanged(), shareReplay(1));
443
+ this.drawerClasses$ = combineLatest([this.side$, this.dbxMapboxMapStore.hasContent$, this.opened$]).pipe(
444
+ //
445
+ map(([side, hasContent, open]) => (hasContent ? 'has-drawer-content' : 'no-drawer-content') + ` ${side}-drawer ` + (open ? 'open-drawer' : '')), distinctUntilChanged(), shareReplay(1));
446
+ this.drawerButtonClasses$ = combineLatest([this.dbxMapboxMapStore.hasContent$, this._color]).pipe(
447
+ //
448
+ map(([hasContent, color]) => dbxColorBackground(color)), distinctUntilChanged(), shareReplay(1));
449
+ this.buttonIcon$ = combineLatest([this.side$, this.opened$]).pipe(map(([side, opened]) => {
450
+ let icons = ['chevron_right', 'chevron_left'];
451
+ if (side === 'left') {
452
+ icons = icons.reverse();
453
+ }
454
+ return opened ? icons[0] : icons[1];
455
+ }));
456
+ }
457
+ ngOnInit() {
458
+ this.subscription = this.side$.pipe(switchMap(() => this._resized.pipe(throttleTime(100, undefined, { leading: true, trailing: true }), map(() => 'r'), startWith('s')))).subscribe((reason) => {
459
+ this.dbxMapboxMapStore.mapInstance$.subscribe((x) => {
460
+ x.resize();
461
+ // side changed
462
+ if (reason === 's') {
463
+ setTimeout(() => {
464
+ this._updateMargins.next();
465
+ });
466
+ }
467
+ });
468
+ });
469
+ this._toggleSub.subscription = combineLatest([this.opened$.pipe(distinctUntilChanged(), skip(1)), this._updateMargins]).subscribe(([opened]) => {
470
+ let { right } = this.container._contentMargins;
471
+ this.container.updateContentMargins();
472
+ setTimeout(() => {
473
+ const flip = opened ? 1 : -1;
474
+ if (opened) {
475
+ right = this.container._contentMargins.right;
476
+ }
477
+ right = (right || 0) * flip;
478
+ const element = this.content.nativeElement;
479
+ const width = element.clientWidth;
480
+ const easeTo = this.dbxMapboxMapStore
481
+ .calculateNextCenterOffsetWithScreenMarginChange({
482
+ leftMargin: 0,
483
+ rightMargin: right,
484
+ fullWidth: width
485
+ })
486
+ .pipe(first(), map((center) => ({ to: { center, duration: 3200, essential: false } })));
487
+ this.dbxMapboxMapStore.easeTo(easeTo);
488
+ });
489
+ });
490
+ }
491
+ ngOnDestroy() {
492
+ this._resized.complete();
493
+ this._updateMargins.complete();
494
+ this._side.complete();
495
+ this._openToggle.complete();
496
+ this._color.complete();
497
+ this._toggleSub.destroy();
498
+ }
499
+ toggleDrawer(open) {
500
+ if (open == null) {
501
+ open = !this._openToggle.value;
502
+ }
503
+ this._openToggle.next(open);
504
+ }
505
+ set side(side) {
506
+ if (side != null) {
507
+ this._side.next(side);
508
+ }
509
+ }
510
+ set opened(opened) {
511
+ if (opened != null) {
512
+ this._openToggle.next(opened);
513
+ }
514
+ }
515
+ set drawerColor(color) {
516
+ this._color.next(color);
517
+ }
518
+ onResized(event) {
519
+ this._resized.next();
520
+ }
521
+ }
522
+ DbxMapboxLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxLayoutComponent, deps: [{ token: DbxMapboxMapStore }], target: i0.ɵɵFactoryTarget.Component });
523
+ DbxMapboxLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: DbxMapboxLayoutComponent, selector: "dbx-mapbox-layout", inputs: { side: "side", opened: "opened", drawerColor: "drawerColor" }, viewQueries: [{ propertyName: "container", first: true, predicate: MatDrawerContainer, descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-drawer-container class=\"dbx-mapbox-layout-container\" [ngClass]=\"(drawerClasses$ | async) || ''\" [hasBackdrop]=\"false\">\n <mat-drawer class=\"dbx-mapbox-layout-drawer\" #drawer [opened]=\"opened$ | async\" mode=\"push\" [position]=\"(position$ | async) || 'end'\">\n <div class=\"dbx-mapbox-layout-drawer-content\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <ng-content select=\"[drawer]\"></ng-content>\n <dbx-mapbox-layout-drawer></dbx-mapbox-layout-drawer>\n </div>\n </mat-drawer>\n <mat-drawer-content #content class=\"dbx-mapbox-layout-content\" (resized)=\"onResized($event)\">\n <button mat-icon-button (click)=\"toggleDrawer()\" class=\"dbx-mapbox-layout-drawer-button\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <mat-icon>{{ buttonIcon$ | async }}</mat-icon>\n </button>\n <ng-content></ng-content>\n </mat-drawer-content>\n</mat-drawer-container>\n", styles: [".dbx-mapbox-layout-container{height:100%;max-width:100%}.dbx-mapbox-layout-container .mat-drawer-container{height:100%}.dbx-mapbox-layout-container .dbx-mapbox-layout-drawer-content{height:100%;width:100%;overflow:hidden}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{position:absolute;z-index:2;top:40%;border:none;display:flex}.left-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{left:0;border-radius:0 20px 20px 0}.right-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{right:0;border-radius:20px 0 0 20px}.has-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.has-drawer-content.open-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.no-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:0px}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button mat-icon{padding-left:8px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i3.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i3.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.ResizedDirective, selector: "[resized]", outputs: ["resized"] }, { kind: "component", type: DbxMapboxLayoutDrawerComponent, selector: "dbx-mapbox-layout-drawer" }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }] });
524
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxLayoutComponent, decorators: [{
525
+ type: Component,
526
+ args: [{ selector: 'dbx-mapbox-layout', template: "<mat-drawer-container class=\"dbx-mapbox-layout-container\" [ngClass]=\"(drawerClasses$ | async) || ''\" [hasBackdrop]=\"false\">\n <mat-drawer class=\"dbx-mapbox-layout-drawer\" #drawer [opened]=\"opened$ | async\" mode=\"push\" [position]=\"(position$ | async) || 'end'\">\n <div class=\"dbx-mapbox-layout-drawer-content\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <ng-content select=\"[drawer]\"></ng-content>\n <dbx-mapbox-layout-drawer></dbx-mapbox-layout-drawer>\n </div>\n </mat-drawer>\n <mat-drawer-content #content class=\"dbx-mapbox-layout-content\" (resized)=\"onResized($event)\">\n <button mat-icon-button (click)=\"toggleDrawer()\" class=\"dbx-mapbox-layout-drawer-button\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <mat-icon>{{ buttonIcon$ | async }}</mat-icon>\n </button>\n <ng-content></ng-content>\n </mat-drawer-content>\n</mat-drawer-container>\n", styles: [".dbx-mapbox-layout-container{height:100%;max-width:100%}.dbx-mapbox-layout-container .mat-drawer-container{height:100%}.dbx-mapbox-layout-container .dbx-mapbox-layout-drawer-content{height:100%;width:100%;overflow:hidden}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{position:absolute;z-index:2;top:40%;border:none;display:flex}.left-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{left:0;border-radius:0 20px 20px 0}.right-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{right:0;border-radius:20px 0 0 20px}.has-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.has-drawer-content.open-drawer .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:35px}.no-drawer-content .dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button{width:0px}.dbx-mapbox-layout-content>.dbx-mapbox-layout-drawer-button mat-icon{padding-left:8px}\n"] }]
527
+ }], ctorParameters: function () { return [{ type: DbxMapboxMapStore }]; }, propDecorators: { container: [{
528
+ type: ViewChild,
529
+ args: [MatDrawerContainer]
530
+ }], content: [{
531
+ type: ViewChild,
532
+ args: ['content', { read: ElementRef, static: true }]
533
+ }], side: [{
534
+ type: Input
535
+ }], opened: [{
536
+ type: Input
537
+ }], drawerColor: [{
538
+ type: Input
539
+ }] } });
540
+
541
+ const declarations = [
542
+ //
543
+ DbxMapboxMapDirective,
544
+ DbxMapboxLayoutComponent,
545
+ DbxMapboxLayoutDrawerComponent
546
+ ];
356
547
  class DbxMapboxModule {
357
548
  static forRoot(config) {
358
549
  return {
@@ -367,14 +558,44 @@ class DbxMapboxModule {
367
558
  }
368
559
  }
369
560
  DbxMapboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
370
- DbxMapboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxModule, declarations: [DbxMapboxMapDirective], imports: [CommonModule], exports: [DbxMapboxMapDirective] });
371
- DbxMapboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxModule, imports: [CommonModule] });
561
+ DbxMapboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxModule, declarations: [
562
+ //
563
+ DbxMapboxMapDirective,
564
+ DbxMapboxLayoutComponent,
565
+ DbxMapboxLayoutDrawerComponent], imports: [
566
+ //
567
+ CommonModule,
568
+ MatSidenavModule,
569
+ DbxInjectionComponentModule,
570
+ MatButtonModule,
571
+ MatIconModule,
572
+ AngularResizeEventModule], exports: [
573
+ //
574
+ DbxMapboxMapDirective,
575
+ DbxMapboxLayoutComponent,
576
+ DbxMapboxLayoutDrawerComponent] });
577
+ DbxMapboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxModule, imports: [
578
+ //
579
+ CommonModule,
580
+ MatSidenavModule,
581
+ DbxInjectionComponentModule,
582
+ MatButtonModule,
583
+ MatIconModule,
584
+ AngularResizeEventModule] });
372
585
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxMapboxModule, decorators: [{
373
586
  type: NgModule,
374
587
  args: [{
375
- imports: [CommonModule],
376
- declarations: [DbxMapboxMapDirective],
377
- exports: [DbxMapboxMapDirective]
588
+ imports: [
589
+ //
590
+ CommonModule,
591
+ MatSidenavModule,
592
+ DbxInjectionComponentModule,
593
+ MatButtonModule,
594
+ MatIconModule,
595
+ AngularResizeEventModule
596
+ ],
597
+ declarations,
598
+ exports: declarations
378
599
  }]
379
600
  }] });
380
601
 
@@ -394,5 +615,5 @@ const KNOWN_MAPBOX_STYLES = [
394
615
  * Generated bundle index. Do not edit.
395
616
  */
396
617
 
397
- export { DEFAULT_MAPBOX_CENTER, DEFAULT_MAPBOX_MAP_STORE_TIMER_REFRESH_PERIOD, DEFAULT_MAPBOX_STYLE, DEFAULT_MAPBOX_ZOOM, DbxMapboxConfig, DbxMapboxMapDirective, DbxMapboxMapStore, DbxMapboxModule, DbxMapboxService, KNOWN_MAPBOX_STYLES };
618
+ export { DEFAULT_MAPBOX_CENTER, DEFAULT_MAPBOX_MAP_STORE_TIMER_REFRESH_PERIOD, DEFAULT_MAPBOX_STYLE, DEFAULT_MAPBOX_ZOOM, DbxMapboxConfig, DbxMapboxLayoutComponent, DbxMapboxLayoutDrawerComponent, DbxMapboxMapDirective, DbxMapboxMapStore, DbxMapboxModule, DbxMapboxService, KNOWN_MAPBOX_STYLES };
398
619
  //# sourceMappingURL=dereekb-dbx-web-mapbox.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dereekb-dbx-web-mapbox.mjs","sources":["../../../../packages/dbx-web/mapbox/src/lib/mapbox.service.ts","../../../../packages/dbx-web/mapbox/src/lib/mapbox.store.ts","../../../../packages/dbx-web/mapbox/src/lib/mapbox.store.map.directive.ts","../../../../packages/dbx-web/mapbox/src/lib/mapbox.module.ts","../../../../packages/dbx-web/mapbox/src/lib/mapbox.ts","../../../../packages/dbx-web/mapbox/src/dereekb-dbx-web-mapbox.ts"],"sourcesContent":["import { Injectable, Optional } from '@angular/core';\nimport { LatLngPointInput, Milliseconds } from '@dereekb/util';\nimport { MapboxOptions } from 'mapbox-gl';\nimport { KnownMapboxStyle, MapboxZoomLevel } from './mapbox';\n\nexport class DbxMapboxConfig {\n readonly defaultStyle?: MapboxOptions['style'];\n readonly defaultZoom?: MapboxZoomLevel;\n readonly defaultCenter?: LatLngPointInput;\n readonly defaultStoreRefreshPeriod?: number;\n}\n\nexport const DEFAULT_MAPBOX_STYLE: KnownMapboxStyle = 'mapbox://styles/mapbox/streets-v11';\nexport const DEFAULT_MAPBOX_CENTER: LatLngPointInput = [30.2690138665, -97.7408297965];\nexport const DEFAULT_MAPBOX_ZOOM: MapboxZoomLevel = 12;\nexport const DEFAULT_MAPBOX_MAP_STORE_TIMER_REFRESH_PERIOD: Milliseconds = 200;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxMapboxService {\n private readonly _config: DbxMapboxConfig;\n\n constructor(@Optional() config: DbxMapboxConfig) {\n this._config = config ?? {};\n }\n\n get defaultStyle() {\n return this._config.defaultStyle ?? DEFAULT_MAPBOX_STYLE;\n }\n\n get defaultZoom(): MapboxZoomLevel {\n return this._config.defaultZoom ?? DEFAULT_MAPBOX_ZOOM;\n }\n\n get defaultCenter(): LatLngPointInput {\n return this._config.defaultCenter ?? DEFAULT_MAPBOX_CENTER;\n }\n\n get mapboxMapStoreTimerRefreshPeriod(): number {\n return this._config.defaultStoreRefreshPeriod ?? DEFAULT_MAPBOX_MAP_STORE_TIMER_REFRESH_PERIOD;\n }\n}\n","import { cleanup, filterMaybe, onTrueToFalse } from '@dereekb/rxjs';\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { isSameLatLngBound, isSameLatLngPoint, IsWithinLatLngBoundFunction, isWithinLatLngBoundFunction, LatLngBound, latLngBoundFunction, LatLngPointInput, LatLngPoint, latLngPointFunction, Maybe, OverlapsLatLngBoundFunction, overlapsLatLngBoundFunction } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { MapService } from 'ngx-mapbox-gl';\nimport { defaultIfEmpty, distinctUntilChanged, filter, map, shareReplay, switchMap, tap, NEVER, Observable, of, Subscription, startWith, interval, first, combineLatest } from 'rxjs';\nimport * as MapboxGl from 'mapbox-gl';\nimport { DbxMapboxClickEvent, KnownMapboxStyle, MapboxBearing, MapboxEaseTo, MapboxFitBounds, MapboxFlyTo, MapboxJumpTo, MapboxResetNorth, MapboxResetNorthPitch, MapboxRotateTo, MapboxSnapToNorth, MapboxStyleConfig, MapboxZoomLevel } from './mapbox';\nimport { DbxMapboxService } from './mapbox.service';\n\nexport type MapboxMapLifecycleState = 'init' | 'load' | 'render' | 'idle';\nexport type MapboxMapMoveState = 'init' | 'idle' | 'moving';\nexport type MapboxMapZoomState = 'init' | 'idle' | 'zooming';\nexport type MapboxMapRotateState = 'init' | 'idle' | 'rotating';\n\nexport interface StringMapboxListenerPair {\n type: string;\n listener: (ev: MapboxGl.EventData) => void;\n}\n\nexport interface TypedMapboxListenerPair<T extends keyof MapboxGl.MapEventType> {\n type: T;\n listener: (ev: MapboxGl.MapEventType[T] & MapboxGl.EventData) => void;\n}\n\nexport interface DbxMapboxStoreState {\n /**\n * Current MapService being utilized.\n */\n mapService?: Maybe<MapService>;\n lifecycleState: MapboxMapLifecycleState;\n moveState: MapboxMapMoveState;\n zoomState: MapboxMapZoomState;\n rotateState: MapboxMapRotateState;\n /**\n * Latest click event\n */\n clickEvent?: Maybe<DbxMapboxClickEvent>;\n /**\n * Latest double-click event\n */\n doubleClickEvent?: Maybe<DbxMapboxClickEvent>;\n /**\n * Latest error\n */\n error?: Maybe<Error>;\n}\n\n/**\n * Store used for retrieving information.\n */\n@Injectable()\nexport class DbxMapboxMapStore extends ComponentStore<DbxMapboxStoreState> implements OnDestroy {\n private latLngPoint = latLngPointFunction();\n private latLngBound = latLngBoundFunction();\n\n constructor(@Inject(DbxMapboxService) private readonly dbxMapboxService: DbxMapboxService) {\n super({\n lifecycleState: 'init',\n moveState: 'init',\n zoomState: 'init',\n rotateState: 'init'\n });\n }\n\n // MARK: Effects\n readonly setMapService = this.effect((input: Observable<Maybe<MapService>>) => {\n return input.pipe(\n switchMap((service: Maybe<MapService>) => {\n this._setMapService(service);\n\n if (!service) {\n return NEVER;\n } else {\n return service.mapLoaded$.pipe(\n defaultIfEmpty(undefined),\n map(() => {\n this._setLifecycleState('idle');\n this._setMoveState('idle');\n this._setZoomState('idle');\n this._setRotateState('idle');\n\n const map = service.mapInstance;\n\n const listenerPairs: StringMapboxListenerPair[] = [];\n\n function addListener<T extends keyof MapboxGl.MapEventType>(type: T, listener: (ev: MapboxGl.MapEventType[T] & MapboxGl.EventData) => void) {\n map.on(type, listener);\n listenerPairs.push({ type, listener } as StringMapboxListenerPair);\n }\n\n addListener('idle', () => this._setLifecycleState('idle'));\n addListener('render', () => this._setLifecycleState('render'));\n addListener('error', (x) => {\n this._setError(x.error);\n });\n\n addListener('movestart', () => this._setMoveState('moving'));\n addListener('moveend', () => this._setMoveState('idle'));\n\n addListener('zoomstart', () => this._setZoomState('zooming'));\n addListener('zoomend', () => this._setZoomState('idle'));\n\n addListener('rotatestart', () => this._setRotateState('rotating'));\n addListener('rotateend', () => this._setRotateState('idle'));\n\n addListener('click', (x) => this._setClickEvent(x));\n addListener('dblclick', (x) => this._setDoubleClickEvent(x));\n\n const subs: Subscription[] = [];\n\n return {\n service,\n listenerPairs,\n subs\n };\n })\n );\n }\n }),\n cleanup(({ service, listenerPairs, subs }) => {\n const map = service.mapInstance;\n\n if (map) {\n listenerPairs.forEach((x) => {\n map.off(x.type, x.listener);\n });\n }\n\n subs.forEach((sub) => sub.unsubscribe());\n })\n );\n });\n\n readonly setStyle = this.effect((input: Observable<MapboxStyleConfig | KnownMapboxStyle | string>) => {\n return input.pipe(\n switchMap((style) => {\n return this.mapInstance$.pipe(\n tap((map) => {\n if (typeof style === 'string') {\n map.setStyle(style);\n } else {\n map.setStyle(style.style, style.options);\n }\n })\n );\n })\n );\n });\n\n readonly setCenter = this.effect((input: Observable<LatLngPointInput>) => {\n return input.pipe(\n switchMap((center: LatLngPointInput) => {\n const centerPoint = this.latLngPoint(center);\n return this.mapInstance$.pipe(tap((map) => map.setCenter(centerPoint)));\n })\n );\n });\n\n readonly setZoom = this.effect((input: Observable<MapboxZoomLevel>) => {\n return input.pipe(\n switchMap((zoom: MapboxZoomLevel) => {\n return this.mapInstance$.pipe(tap((map) => map.setZoom(zoom)));\n })\n );\n });\n\n readonly setMinZoom = this.effect((input: Observable<MapboxZoomLevel>) => {\n return input.pipe(\n switchMap((zoom: MapboxZoomLevel) => {\n return this.mapInstance$.pipe(tap((map) => map.setMinZoom(zoom)));\n })\n );\n });\n\n readonly setMaxZoom = this.effect((input: Observable<MapboxZoomLevel>) => {\n return input.pipe(\n switchMap((zoom: MapboxZoomLevel) => {\n return this.mapInstance$.pipe(tap((map) => map.setMaxZoom(zoom)));\n })\n );\n });\n\n readonly setPitch = this.effect((input: Observable<number>) => {\n return input.pipe(\n switchMap((pitch) => {\n return this.mapInstance$.pipe(tap((map) => map.setPitch(pitch)));\n })\n );\n });\n\n readonly setMinPitch = this.effect((input: Observable<number>) => {\n return input.pipe(\n switchMap((pitch: number) => {\n return this.mapInstance$.pipe(tap((map) => map.setMinPitch(pitch)));\n })\n );\n });\n\n readonly setMaxPitch = this.effect((input: Observable<number>) => {\n return input.pipe(\n switchMap((pitch: number) => {\n return this.mapInstance$.pipe(tap((map) => map.setMaxPitch(pitch)));\n })\n );\n });\n\n readonly setBearing = this.effect((input: Observable<number>) => {\n return input.pipe(\n switchMap((bearing) => {\n return this.mapInstance$.pipe(tap((map) => map.setBearing(bearing)));\n })\n );\n });\n\n readonly rotateTo = this.effect((input: Observable<MapboxBearing | MapboxRotateTo>) => {\n return input.pipe(\n switchMap((rotateInput: MapboxBearing | MapboxRotateTo) => {\n const rotate: MapboxRotateTo = typeof rotateInput === 'number' ? { bearing: rotateInput } : rotateInput;\n return this.mapInstance$.pipe(tap((map) => map.rotateTo(rotate.bearing, rotate.options, rotate?.eventData)));\n })\n );\n });\n\n readonly resetNorth = this.effect((input: Observable<Maybe<MapboxResetNorth> | void>) => {\n return input.pipe(\n switchMap((reset: Maybe<MapboxResetNorth> | void) => {\n return this.mapInstance$.pipe(tap((map) => map.resetNorth(reset?.options, reset?.eventData)));\n })\n );\n });\n\n readonly resetNorthPitch = this.effect((input: Observable<Maybe<MapboxResetNorthPitch> | void>) => {\n return input.pipe(\n switchMap((reset: Maybe<MapboxResetNorthPitch> | void) => {\n return this.mapInstance$.pipe(tap((map) => map.resetNorthPitch(reset?.options, reset?.eventData)));\n })\n );\n });\n\n readonly snapToNorth = this.effect((input: Observable<Maybe<MapboxSnapToNorth> | void>) => {\n return input.pipe(\n switchMap((snap: Maybe<MapboxSnapToNorth> | void) => {\n return this.mapInstance$.pipe(tap((map) => map.snapToNorth(snap?.options, snap?.eventData)));\n })\n );\n });\n\n readonly fitBounds = this.effect((input: Observable<MapboxFitBounds>) => {\n return input.pipe(\n switchMap((x) => {\n const bound = this.latLngBound(x.bounds);\n return this.mapInstance$.pipe(tap((map) => map.fitBounds(new MapboxGl.LngLatBounds(bound.sw, bound.ne), x.options, x.eventData)));\n })\n );\n });\n\n readonly jumpTo = this.effect((input: Observable<MapboxJumpTo>) => {\n return input.pipe(\n switchMap((x) => {\n const inputCenter = x.center ?? x.to?.center;\n const center = inputCenter ? this.latLngPoint(inputCenter) : undefined;\n return this.mapInstance$.pipe(tap((map) => map.jumpTo({ ...x.to, center }, x.eventData)));\n })\n );\n });\n\n readonly easeTo = this.effect((input: Observable<MapboxEaseTo>) => {\n return input.pipe(\n switchMap((x) => {\n const inputCenter = x.center ?? x.to?.center;\n const center = inputCenter ? this.latLngPoint(inputCenter) : undefined;\n return this.mapInstance$.pipe(tap((map) => map.easeTo({ ...x.to, center }, x.eventData)));\n })\n );\n });\n\n readonly flyTo = this.effect((input: Observable<MapboxFlyTo>) => {\n return input.pipe(\n switchMap((x) => {\n const inputCenter = x.center ?? x.to?.center;\n const center = inputCenter ? this.latLngPoint(inputCenter) : undefined;\n return this.mapInstance$.pipe(tap((map) => map.flyTo({ ...x.to, center }, x.eventData)));\n })\n );\n });\n\n readonly resetPitchAndBearing = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() => {\n return this.mapInstance$.pipe(\n tap((map) => {\n map.setPitch(0);\n map.setBearing(0);\n })\n );\n })\n );\n });\n\n // MARK: Accessors\n get timerRefreshPeriod() {\n return this.dbxMapboxService.mapboxMapStoreTimerRefreshPeriod;\n }\n\n movingTimer(period = this.timerRefreshPeriod) {\n return this.moveState$.pipe(\n switchMap((x) => {\n if (x === 'moving') {\n return interval(period);\n } else {\n return of(0);\n }\n }),\n shareReplay()\n );\n }\n\n lifecycleRenderTimer(period = this.timerRefreshPeriod) {\n return this.lifecycleState$.pipe(\n switchMap((x) => {\n if (x === 'render') {\n return interval(period);\n } else {\n return of(0);\n }\n }),\n shareReplay()\n );\n }\n\n readonly currentMapService$ = this.state$.pipe(\n map((x) => x.mapService),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly mapService$ = this.currentMapService$.pipe(filterMaybe());\n\n readonly currentMapInstance$: Observable<Maybe<MapboxGl.Map>> = this.currentMapService$.pipe(\n switchMap((currentMapService: Maybe<MapService>) => {\n if (currentMapService) {\n return currentMapService.mapLoaded$.pipe(\n defaultIfEmpty(undefined),\n map(() => currentMapService.mapInstance)\n );\n } else {\n return of(undefined);\n }\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly mapInstance$ = this.currentMapInstance$.pipe(filterMaybe());\n\n readonly moveState$ = this.state$.pipe(\n map((x) => x.moveState),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly lifecycleState$ = this.state$.pipe(\n map((x) => x.lifecycleState),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly zoomState$ = this.state$.pipe(\n map((x) => x.zoomState),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly rotateState$ = this.state$.pipe(\n map((x) => x.rotateState),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isInitialized$ = this.currentMapInstance$.pipe(\n switchMap((x) => {\n if (!x) {\n return of(false);\n } else {\n return combineLatest([this.moveState$.pipe(map((x) => x === 'idle')), this.lifecycleState$.pipe(map((x) => x === 'idle'))]).pipe(\n filter(([m, l]) => m && l),\n first(),\n map(() => true)\n );\n }\n }),\n shareReplay(1)\n );\n\n readonly whenInitialized$ = this.isInitialized$.pipe(\n filter((x) => true),\n shareReplay(1)\n );\n\n readonly isRendering$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.lifecycleState$.pipe(\n map((x) => x === 'render'),\n distinctUntilChanged(),\n shareReplay()\n )\n )\n );\n\n readonly isMoving$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.moveState$.pipe(\n map((x) => x === 'moving'),\n distinctUntilChanged(),\n shareReplay()\n )\n )\n );\n\n readonly isZooming$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.zoomState$.pipe(\n map((x) => x === 'zooming'),\n distinctUntilChanged(),\n shareReplay()\n )\n )\n );\n\n readonly isRotating$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.rotateState$.pipe(\n map((x) => x === 'rotating'),\n distinctUntilChanged(),\n shareReplay()\n )\n )\n );\n\n private readonly _movingTimer = this.movingTimer();\n private readonly _renderingTimer = this.lifecycleRenderTimer();\n\n readonly centerNow$: Observable<LatLngPoint> = this.whenInitialized$.pipe(\n switchMap(() =>\n this.mapInstance$.pipe(\n switchMap((x) => this._movingTimer.pipe(map(() => this.latLngPoint(x.getCenter())))),\n shareReplay(1)\n )\n )\n );\n\n readonly center$: Observable<LatLngPoint> = this.whenInitialized$.pipe(\n switchMap(() => {\n return this.isMoving$.pipe(\n onTrueToFalse(),\n startWith(undefined),\n switchMap(() => this.centerNow$.pipe(first())),\n distinctUntilChanged(isSameLatLngPoint),\n shareReplay(1)\n );\n })\n );\n\n readonly boundNow$: Observable<LatLngBound> = this.whenInitialized$.pipe(\n switchMap(() =>\n this.mapInstance$.pipe(\n switchMap((x) =>\n this._renderingTimer.pipe(\n map(() => {\n const bound = x.getBounds();\n return this.latLngBound([bound.getSouthWest(), bound.getNorthEast()]);\n })\n )\n ),\n shareReplay(1)\n )\n )\n );\n\n readonly bound$: Observable<LatLngBound> = this.whenInitialized$.pipe(\n switchMap(() => {\n return this.isRendering$.pipe(\n onTrueToFalse(),\n startWith(undefined),\n switchMap((x) => this.boundNow$.pipe(first())),\n distinctUntilChanged(isSameLatLngBound),\n shareReplay(1)\n );\n })\n );\n\n readonly isWithinBoundFunction$: Observable<IsWithinLatLngBoundFunction> = this.bound$.pipe(\n map((x) => isWithinLatLngBoundFunction(x)),\n shareReplay(1)\n );\n\n readonly overlapsBoundFunction$: Observable<OverlapsLatLngBoundFunction> = this.bound$.pipe(\n map((x) => overlapsLatLngBoundFunction(x)),\n shareReplay(1)\n );\n\n readonly zoomNow$: Observable<MapboxZoomLevel> = this.whenInitialized$.pipe(\n switchMap(() =>\n this.mapInstance$.pipe(\n switchMap((x) => this._renderingTimer.pipe(map(() => x.getZoom() as MapboxZoomLevel))),\n shareReplay(1)\n )\n )\n );\n\n readonly zoom$: Observable<MapboxZoomLevel> = this.whenInitialized$.pipe(\n switchMap(() => {\n return this.isZooming$.pipe(\n onTrueToFalse(),\n startWith(undefined),\n switchMap((x) => this.zoomNow$.pipe(first())),\n distinctUntilChanged(),\n shareReplay(1)\n );\n })\n );\n\n readonly pitchNow$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.mapInstance$.pipe(\n switchMap((x) => this._movingTimer.pipe(map(() => x.getPitch()))),\n shareReplay(1)\n )\n )\n );\n\n readonly pitch$ = this.whenInitialized$.pipe(\n switchMap(() => {\n return this.isRotating$.pipe(\n onTrueToFalse(),\n startWith(undefined),\n switchMap((x) => this.pitchNow$.pipe(first())),\n distinctUntilChanged(),\n shareReplay(1)\n );\n })\n );\n\n readonly bearingNow$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.mapInstance$.pipe(\n switchMap((x) => this._movingTimer.pipe(map(() => x.getBearing()))),\n shareReplay(1)\n )\n )\n );\n\n readonly bearing$ = this.whenInitialized$.pipe(\n switchMap(() => {\n return this.isRotating$.pipe(\n onTrueToFalse(),\n startWith(undefined),\n switchMap((x) => this.bearingNow$.pipe(first())),\n distinctUntilChanged(),\n shareReplay(1)\n );\n })\n );\n\n readonly clickEvent$ = this.state$.pipe(map((x) => x.clickEvent));\n readonly doubleClickEvent$ = this.state$.pipe(map((x) => x.doubleClickEvent));\n\n // MARK: State Changes\n private readonly _setMapService = this.updater((state, mapService: Maybe<MapService>) => ({ mapService, moveState: 'init', lifecycleState: 'init', zoomState: 'init', rotateState: 'init' }));\n private readonly _setLifecycleState = this.updater((state, lifecycleState: MapboxMapLifecycleState) => ({ ...state, lifecycleState }));\n private readonly _setMoveState = this.updater((state, moveState: MapboxMapMoveState) => ({ ...state, moveState }));\n private readonly _setZoomState = this.updater((state, zoomState: MapboxMapZoomState) => ({ ...state, zoomState }));\n private readonly _setRotateState = this.updater((state, rotateState: MapboxMapRotateState) => ({ ...state, rotateState }));\n\n private readonly _setClickEvent = this.updater((state, clickEvent: DbxMapboxClickEvent) => ({ ...state, clickEvent }));\n private readonly _setDoubleClickEvent = this.updater((state, doubleClickEvent: DbxMapboxClickEvent) => ({ ...state, doubleClickEvent }));\n\n private readonly _setError = this.updater((state, error: Error) => ({ ...state, error }));\n}\n","import { DbxMapboxService } from './mapbox.service';\nimport { DbxMapboxMapStore } from './mapbox.store';\nimport { Directive, Host, OnInit, Optional } from '@angular/core';\nimport { MapComponent, MapService } from 'ngx-mapbox-gl';\nimport { latLngPoint } from '@dereekb/util';\n\n/**\n * Directive that configures a MapComponent with content from DbxMapboxService. Connects a host MapService to a parent DbxMapboxMapStore if available.\n */\n@Directive({\n selector: '[dbxMapboxMap]'\n})\nexport class DbxMapboxMapDirective implements OnInit {\n constructor(\n //\n @Host() readonly mapService: MapService,\n @Host() readonly mapboxMap: MapComponent,\n readonly dbxMapboxService: DbxMapboxService,\n @Optional() readonly dbxMapboxMapStore: DbxMapboxMapStore\n ) {}\n\n ngOnInit(): void {\n // style must be provided first before the map will load.\n this.mapboxMap.style = this.dbxMapboxService.defaultStyle;\n this.mapboxMap.zoom = [this.dbxMapboxService.defaultZoom];\n this.mapboxMap.center = latLngPoint(this.dbxMapboxService.defaultCenter);\n\n if (this.dbxMapboxMapStore) {\n this.dbxMapboxMapStore.setMapService(this.mapService);\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DbxMapboxMapDirective } from './mapbox.store.map.directive';\nimport { DbxMapboxConfig } from './mapbox.service';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [DbxMapboxMapDirective],\n exports: [DbxMapboxMapDirective]\n})\nexport class DbxMapboxModule {\n static forRoot(config: DbxMapboxConfig): ModuleWithProviders<DbxMapboxModule> {\n return {\n ngModule: DbxMapboxModule,\n providers: [\n {\n provide: DbxMapboxConfig,\n useValue: config\n }\n ]\n };\n }\n}\n","import { LatLngPoint, LatLngPointInput, LatLngBound, LatLngBoundInput } from '@dereekb/util';\nimport * as MapboxGl from 'mapbox-gl';\n\nexport type KnownMapboxStyle = 'mapbox://styles/mapbox/streets-v11' | 'mapbox://styles/mapbox/outdoors-v11' | 'mapbox://styles/mapbox/light-v10' | 'mapbox://styles/mapbox/dark-v10' | 'mapbox://styles/mapbox/satellite-v9' | 'mapbox://styles/mapbox/satellite-streets-v11' | 'mapbox://styles/mapbox/navigation-day-v1' | 'mapbox://styles/mapbox/navigation-night-v1';\n\nexport const KNOWN_MAPBOX_STYLES: KnownMapboxStyle[] = [\n //\n 'mapbox://styles/mapbox/streets-v11',\n 'mapbox://styles/mapbox/outdoors-v11',\n 'mapbox://styles/mapbox/light-v10',\n 'mapbox://styles/mapbox/dark-v10',\n 'mapbox://styles/mapbox/satellite-v9',\n 'mapbox://styles/mapbox/satellite-streets-v11',\n 'mapbox://styles/mapbox/navigation-day-v1',\n 'mapbox://styles/mapbox/navigation-night-v1'\n];\n\nexport type MapboxZoomLevel = number;\nexport type MapboxPitch = number;\nexport type MapboxBearing = number;\n\nexport type DbxMapboxClickEvent = MapboxGl.MapMouseEvent & MapboxGl.EventData;\n\nexport interface MapboxStyleConfig {\n style: MapboxGl.Style | string;\n options?: {\n diff?: boolean | undefined;\n localIdeographFontFamily?: string | undefined;\n };\n}\n\nexport interface MapboxFitBounds {\n bounds: LatLngBoundInput;\n options?: mapboxgl.FitBoundsOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxJumpToPositionOptions extends Omit<MapboxGl.CameraOptions, 'center'> {\n center: LatLngPointInput;\n}\n\nexport interface MapboxJumpTo {\n center?: LatLngPointInput;\n to?: MapboxJumpToPositionOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxEaseToPositionOptions extends Omit<MapboxGl.EaseToOptions, 'center'>, MapboxJumpToPositionOptions {}\n\nexport interface MapboxEaseTo {\n center?: LatLngPointInput;\n to?: MapboxEaseToPositionOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxFlyToPositionOptions extends Omit<MapboxGl.FlyToOptions, 'center'>, MapboxJumpToPositionOptions {}\n\nexport interface MapboxFlyTo {\n center?: LatLngPointInput;\n to?: MapboxFlyToPositionOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxRotateTo {\n bearing: MapboxBearing;\n options?: mapboxgl.AnimationOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxResetNorth {\n options?: mapboxgl.AnimationOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxResetNorthPitch {\n options?: mapboxgl.AnimationOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxSnapToNorth {\n options?: mapboxgl.AnimationOptions;\n eventData?: mapboxgl.EventData;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.DbxMapboxService","i3.DbxMapboxMapStore"],"mappings":"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"}
1
+ {"version":3,"file":"dereekb-dbx-web-mapbox.mjs","sources":["../../../../packages/dbx-web/mapbox/src/lib/mapbox.service.ts","../../../../packages/dbx-web/mapbox/src/lib/mapbox.store.ts","../../../../packages/dbx-web/mapbox/src/lib/mapbox.store.map.directive.ts","../../../../packages/dbx-web/mapbox/src/lib/mapbox.layout.drawer.component.ts","../../../../packages/dbx-web/mapbox/src/lib/mapbox.layout.drawer.component.html","../../../../packages/dbx-web/mapbox/src/lib/mapbox.layout.component.ts","../../../../packages/dbx-web/mapbox/src/lib/mapbox.layout.component.html","../../../../packages/dbx-web/mapbox/src/lib/mapbox.module.ts","../../../../packages/dbx-web/mapbox/src/lib/mapbox.ts","../../../../packages/dbx-web/mapbox/src/dereekb-dbx-web-mapbox.ts"],"sourcesContent":["import { Injectable, Optional } from '@angular/core';\nimport { LatLngPointInput, Milliseconds } from '@dereekb/util';\nimport { MapboxOptions } from 'mapbox-gl';\nimport { KnownMapboxStyle, MapboxZoomLevel } from './mapbox';\n\nexport class DbxMapboxConfig {\n readonly defaultStyle?: MapboxOptions['style'];\n readonly defaultZoom?: MapboxZoomLevel;\n readonly defaultCenter?: LatLngPointInput;\n readonly defaultStoreRefreshPeriod?: number;\n}\n\nexport const DEFAULT_MAPBOX_STYLE: KnownMapboxStyle = 'mapbox://styles/mapbox/streets-v11';\nexport const DEFAULT_MAPBOX_CENTER: LatLngPointInput = [30.2690138665, -97.7408297965];\nexport const DEFAULT_MAPBOX_ZOOM: MapboxZoomLevel = 12;\nexport const DEFAULT_MAPBOX_MAP_STORE_TIMER_REFRESH_PERIOD: Milliseconds = 200;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxMapboxService {\n private readonly _config: DbxMapboxConfig;\n\n constructor(@Optional() config: DbxMapboxConfig) {\n this._config = config ?? {};\n }\n\n get defaultStyle() {\n return this._config.defaultStyle ?? DEFAULT_MAPBOX_STYLE;\n }\n\n get defaultZoom(): MapboxZoomLevel {\n return this._config.defaultZoom ?? DEFAULT_MAPBOX_ZOOM;\n }\n\n get defaultCenter(): LatLngPointInput {\n return this._config.defaultCenter ?? DEFAULT_MAPBOX_CENTER;\n }\n\n get mapboxMapStoreTimerRefreshPeriod(): number {\n return this._config.defaultStoreRefreshPeriod ?? DEFAULT_MAPBOX_MAP_STORE_TIMER_REFRESH_PERIOD;\n }\n}\n","import { cleanup, filterMaybe, onTrueToFalse } from '@dereekb/rxjs';\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { isSameLatLngBound, isSameLatLngPoint, IsWithinLatLngBoundFunction, isWithinLatLngBoundFunction, LatLngBound, latLngBoundFunction, LatLngPointInput, LatLngPoint, latLngPointFunction, Maybe, OverlapsLatLngBoundFunction, overlapsLatLngBoundFunction, diffLatLngBoundPoints, latLngBoundCenterPoint, addLatLngPoints } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { MapService } from 'ngx-mapbox-gl';\nimport { defaultIfEmpty, distinctUntilChanged, filter, map, shareReplay, switchMap, tap, NEVER, Observable, of, Subscription, startWith, interval, first, combineLatest } from 'rxjs';\nimport * as MapboxGl from 'mapbox-gl';\nimport { DbxMapboxClickEvent, KnownMapboxStyle, MapboxBearing, MapboxEaseTo, MapboxFitBounds, MapboxFlyTo, MapboxJumpTo, MapboxResetNorth, MapboxResetNorthPitch, MapboxRotateTo, MapboxSnapToNorth, MapboxStyleConfig, MapboxZoomLevel } from './mapbox';\nimport { DbxMapboxService } from './mapbox.service';\nimport { DbxInjectionComponentConfig } from '@dereekb/dbx-core';\n\nexport type MapboxMapLifecycleState = 'init' | 'load' | 'render' | 'idle';\nexport type MapboxMapMoveState = 'init' | 'idle' | 'moving';\nexport type MapboxMapZoomState = 'init' | 'idle' | 'zooming';\nexport type MapboxMapRotateState = 'init' | 'idle' | 'rotating';\n\nexport interface StringMapboxListenerPair {\n type: string;\n listener: (ev: MapboxGl.EventData) => void;\n}\n\nexport interface TypedMapboxListenerPair<T extends keyof MapboxGl.MapEventType> {\n type: T;\n listener: (ev: MapboxGl.MapEventType[T] & MapboxGl.EventData) => void;\n}\n\nexport interface DbxMapboxMarginCalculationSizing {\n leftMargin: number;\n rightMargin: number;\n fullWidth: number;\n}\n\nexport interface DbxMapboxStoreState {\n /**\n * Current MapService being utilized.\n */\n mapService?: Maybe<MapService>;\n lifecycleState: MapboxMapLifecycleState;\n moveState: MapboxMapMoveState;\n zoomState: MapboxMapZoomState;\n rotateState: MapboxMapRotateState;\n /**\n * Latest click event\n */\n clickEvent?: Maybe<DbxMapboxClickEvent>;\n /**\n * Latest double-click event\n */\n doubleClickEvent?: Maybe<DbxMapboxClickEvent>;\n /**\n * Whether or not to retain content between resets.\n *\n * True by default.\n */\n retainContent: boolean;\n /**\n * Custom content configuration.\n */\n content?: Maybe<DbxInjectionComponentConfig<unknown>>;\n /**\n * Latest error\n */\n error?: Maybe<Error>;\n}\n\n/**\n * Store used for retrieving information.\n */\n@Injectable()\nexport class DbxMapboxMapStore extends ComponentStore<DbxMapboxStoreState> implements OnDestroy {\n private latLngPoint = latLngPointFunction();\n private latLngBound = latLngBoundFunction();\n\n constructor(@Inject(DbxMapboxService) private readonly dbxMapboxService: DbxMapboxService) {\n super({\n lifecycleState: 'init',\n moveState: 'init',\n zoomState: 'init',\n rotateState: 'init',\n retainContent: true\n });\n }\n\n // MARK: Effects\n readonly setMapService = this.effect((input: Observable<Maybe<MapService>>) => {\n return input.pipe(\n switchMap((service: Maybe<MapService>) => {\n this._setMapService(service);\n\n if (!service) {\n return NEVER;\n } else {\n return service.mapLoaded$.pipe(\n defaultIfEmpty(undefined),\n map(() => {\n this._setLifecycleState('idle');\n this._setMoveState('idle');\n this._setZoomState('idle');\n this._setRotateState('idle');\n\n const map = service.mapInstance;\n\n const listenerPairs: StringMapboxListenerPair[] = [];\n\n function addListener<T extends keyof MapboxGl.MapEventType>(type: T, listener: (ev: MapboxGl.MapEventType[T] & MapboxGl.EventData) => void) {\n map.on(type, listener);\n listenerPairs.push({ type, listener } as StringMapboxListenerPair);\n }\n\n addListener('idle', () => this._setLifecycleState('idle'));\n addListener('render', () => this._setLifecycleState('render'));\n addListener('error', (x) => {\n this._setError(x.error);\n });\n\n addListener('movestart', () => this._setMoveState('moving'));\n addListener('moveend', () => this._setMoveState('idle'));\n\n addListener('zoomstart', () => this._setZoomState('zooming'));\n addListener('zoomend', () => this._setZoomState('idle'));\n\n addListener('rotatestart', () => this._setRotateState('rotating'));\n addListener('rotateend', () => this._setRotateState('idle'));\n\n addListener('click', (x) => this._setClickEvent(x));\n addListener('dblclick', (x) => this._setDoubleClickEvent(x));\n\n const subs: Subscription[] = [];\n\n return {\n service,\n listenerPairs,\n subs\n };\n })\n );\n }\n }),\n cleanup(({ service, listenerPairs, subs }) => {\n const map = service.mapInstance;\n\n if (map) {\n listenerPairs.forEach((x) => {\n map.off(x.type, x.listener);\n });\n }\n\n subs.forEach((sub) => sub.unsubscribe());\n })\n );\n });\n\n readonly setStyle = this.effect((input: Observable<MapboxStyleConfig | KnownMapboxStyle | string>) => {\n return input.pipe(\n switchMap((style) => {\n return this.mapInstance$.pipe(\n tap((map) => {\n if (typeof style === 'string') {\n map.setStyle(style);\n } else {\n map.setStyle(style.style, style.options);\n }\n })\n );\n })\n );\n });\n\n readonly setCenter = this.effect((input: Observable<LatLngPointInput>) => {\n return input.pipe(\n switchMap((center: LatLngPointInput) => {\n const centerPoint = this.latLngPoint(center);\n return this.mapInstance$.pipe(tap((map) => map.setCenter(centerPoint)));\n })\n );\n });\n\n readonly setZoom = this.effect((input: Observable<MapboxZoomLevel>) => {\n return input.pipe(\n switchMap((zoom: MapboxZoomLevel) => {\n return this.mapInstance$.pipe(tap((map) => map.setZoom(zoom)));\n })\n );\n });\n\n readonly setMinZoom = this.effect((input: Observable<MapboxZoomLevel>) => {\n return input.pipe(\n switchMap((zoom: MapboxZoomLevel) => {\n return this.mapInstance$.pipe(tap((map) => map.setMinZoom(zoom)));\n })\n );\n });\n\n readonly setMaxZoom = this.effect((input: Observable<MapboxZoomLevel>) => {\n return input.pipe(\n switchMap((zoom: MapboxZoomLevel) => {\n return this.mapInstance$.pipe(tap((map) => map.setMaxZoom(zoom)));\n })\n );\n });\n\n readonly setPitch = this.effect((input: Observable<number>) => {\n return input.pipe(\n switchMap((pitch) => {\n return this.mapInstance$.pipe(tap((map) => map.setPitch(pitch)));\n })\n );\n });\n\n readonly setMinPitch = this.effect((input: Observable<number>) => {\n return input.pipe(\n switchMap((pitch: number) => {\n return this.mapInstance$.pipe(tap((map) => map.setMinPitch(pitch)));\n })\n );\n });\n\n readonly setMaxPitch = this.effect((input: Observable<number>) => {\n return input.pipe(\n switchMap((pitch: number) => {\n return this.mapInstance$.pipe(tap((map) => map.setMaxPitch(pitch)));\n })\n );\n });\n\n readonly setBearing = this.effect((input: Observable<number>) => {\n return input.pipe(\n switchMap((bearing) => {\n return this.mapInstance$.pipe(tap((map) => map.setBearing(bearing)));\n })\n );\n });\n\n readonly rotateTo = this.effect((input: Observable<MapboxBearing | MapboxRotateTo>) => {\n return input.pipe(\n switchMap((rotateInput: MapboxBearing | MapboxRotateTo) => {\n const rotate: MapboxRotateTo = typeof rotateInput === 'number' ? { bearing: rotateInput } : rotateInput;\n return this.mapInstance$.pipe(tap((map) => map.rotateTo(rotate.bearing, rotate.options, rotate?.eventData)));\n })\n );\n });\n\n readonly resetNorth = this.effect((input: Observable<Maybe<MapboxResetNorth> | void>) => {\n return input.pipe(\n switchMap((reset: Maybe<MapboxResetNorth> | void) => {\n return this.mapInstance$.pipe(tap((map) => map.resetNorth(reset?.options, reset?.eventData)));\n })\n );\n });\n\n readonly resetNorthPitch = this.effect((input: Observable<Maybe<MapboxResetNorthPitch> | void>) => {\n return input.pipe(\n switchMap((reset: Maybe<MapboxResetNorthPitch> | void) => {\n return this.mapInstance$.pipe(tap((map) => map.resetNorthPitch(reset?.options, reset?.eventData)));\n })\n );\n });\n\n readonly snapToNorth = this.effect((input: Observable<Maybe<MapboxSnapToNorth> | void>) => {\n return input.pipe(\n switchMap((snap: Maybe<MapboxSnapToNorth> | void) => {\n return this.mapInstance$.pipe(tap((map) => map.snapToNorth(snap?.options, snap?.eventData)));\n })\n );\n });\n\n readonly fitBounds = this.effect((input: Observable<MapboxFitBounds>) => {\n return input.pipe(\n switchMap((x) => {\n const bound = this.latLngBound(x.bounds);\n return this.mapInstance$.pipe(tap((map) => map.fitBounds(new MapboxGl.LngLatBounds(bound.sw, bound.ne), x.options, x.eventData)));\n })\n );\n });\n\n readonly jumpTo = this.effect((input: Observable<MapboxJumpTo>) => {\n return input.pipe(\n switchMap((x) => {\n const inputCenter = x.center ?? x.to?.center;\n const center = inputCenter ? this.latLngPoint(inputCenter) : undefined;\n return this.mapInstance$.pipe(tap((map) => map.jumpTo({ ...x.to, center }, x.eventData)));\n })\n );\n });\n\n readonly easeTo = this.effect((input: Observable<MapboxEaseTo>) => {\n return input.pipe(\n switchMap((x) => {\n const inputCenter = x.center ?? x.to?.center;\n const center = inputCenter ? this.latLngPoint(inputCenter) : undefined;\n return this.mapInstance$.pipe(tap((map) => map.easeTo({ ...x.to, center }, x.eventData)));\n })\n );\n });\n\n readonly flyTo = this.effect((input: Observable<MapboxFlyTo>) => {\n return input.pipe(\n switchMap((x) => {\n const inputCenter = x.center ?? x.to?.center;\n const center = inputCenter ? this.latLngPoint(inputCenter) : undefined;\n return this.mapInstance$.pipe(tap((map) => map.flyTo({ ...x.to, center }, x.eventData)));\n })\n );\n });\n\n readonly resetPitchAndBearing = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() => {\n return this.mapInstance$.pipe(\n tap((map) => {\n map.setPitch(0);\n map.setBearing(0);\n })\n );\n })\n );\n });\n\n // MARK: Accessors\n get timerRefreshPeriod() {\n return this.dbxMapboxService.mapboxMapStoreTimerRefreshPeriod;\n }\n\n movingTimer(period = this.timerRefreshPeriod) {\n return this.moveState$.pipe(\n switchMap((x) => {\n if (x === 'moving') {\n return interval(period);\n } else {\n return of(0);\n }\n }),\n shareReplay()\n );\n }\n\n lifecycleRenderTimer(period = this.timerRefreshPeriod) {\n return this.lifecycleState$.pipe(\n switchMap((x) => {\n if (x === 'render') {\n return interval(period);\n } else {\n return of(0);\n }\n }),\n shareReplay()\n );\n }\n\n atNextIdle(): Observable<boolean> {\n return this.moveState$.pipe(\n map((x) => x === 'idle'),\n first()\n );\n }\n\n calculateNextCenterWithOffset(inputOffset: LatLngPointInput): Observable<LatLngPoint> {\n const offset = this.latLngPoint(inputOffset);\n\n return this.atNextIdle().pipe(\n switchMap(() =>\n this.center$.pipe(\n first(),\n map((center) => {\n const newCenter = {\n lat: offset.lat + center.lat,\n lng: offset.lng + center.lng\n };\n return newCenter;\n })\n )\n )\n );\n }\n\n calculateNextCenterOffsetWithScreenMarginChange(sizing: DbxMapboxMarginCalculationSizing): Observable<LatLngPoint> {\n return this.atNextIdle().pipe(\n switchMap(() =>\n this.bound$.pipe(\n (first(),\n map((bounds) => {\n const diff = diffLatLngBoundPoints(bounds);\n const center = latLngBoundCenterPoint(bounds);\n\n const offsetWidth = sizing.leftMargin + sizing.rightMargin; // 300 + 0\n const newWidth = sizing.fullWidth - offsetWidth; // 1000 - 300 - 0\n const newWidthRatio = newWidth / sizing.fullWidth; // 700 / 1000\n const newCenterLongitudeWidth = diff.lng * newWidthRatio; // 70% offset\n\n const effectiveOffset: LatLngPoint = {\n lat: 0,\n lng: newCenterLongitudeWidth / 2\n };\n\n const newCenter = addLatLngPoints(bounds.sw, effectiveOffset);\n newCenter.lat = center.lat; // retain center position\n\n // console.log({ sizing, bounds, effectiveOffset, newWidth, offsetWidth, diff, center, newCenter });\n\n return newCenter;\n }))\n )\n )\n );\n }\n\n readonly currentMapService$ = this.state$.pipe(\n map((x) => x.mapService),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly mapService$ = this.currentMapService$.pipe(filterMaybe());\n\n readonly currentMapInstance$: Observable<Maybe<MapboxGl.Map>> = this.currentMapService$.pipe(\n switchMap((currentMapService: Maybe<MapService>) => {\n if (currentMapService) {\n return currentMapService.mapLoaded$.pipe(\n defaultIfEmpty(undefined),\n map(() => currentMapService.mapInstance)\n );\n } else {\n return of(undefined);\n }\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly mapInstance$ = this.currentMapInstance$.pipe(filterMaybe());\n\n readonly moveState$ = this.state$.pipe(\n map((x) => x.moveState),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly lifecycleState$ = this.state$.pipe(\n map((x) => x.lifecycleState),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly zoomState$ = this.state$.pipe(\n map((x) => x.zoomState),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly rotateState$ = this.state$.pipe(\n map((x) => x.rotateState),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isInitialized$ = this.currentMapInstance$.pipe(\n switchMap((x) => {\n if (!x) {\n return of(false);\n } else {\n return combineLatest([this.moveState$.pipe(map((x) => x === 'idle')), this.lifecycleState$.pipe(map((x) => x === 'idle'))]).pipe(\n filter(([m, l]) => m && l),\n first(),\n map(() => true)\n );\n }\n }),\n shareReplay(1)\n );\n\n readonly whenInitialized$ = this.isInitialized$.pipe(\n filter((x) => true),\n shareReplay(1)\n );\n\n readonly isRendering$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.lifecycleState$.pipe(\n map((x) => x === 'render'),\n distinctUntilChanged(),\n shareReplay()\n )\n )\n );\n\n readonly isMoving$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.moveState$.pipe(\n map((x) => x === 'moving'),\n distinctUntilChanged(),\n shareReplay()\n )\n )\n );\n\n readonly isZooming$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.zoomState$.pipe(\n map((x) => x === 'zooming'),\n distinctUntilChanged(),\n shareReplay()\n )\n )\n );\n\n readonly isRotating$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.rotateState$.pipe(\n map((x) => x === 'rotating'),\n distinctUntilChanged(),\n shareReplay()\n )\n )\n );\n\n private readonly _movingTimer = this.movingTimer();\n private readonly _renderingTimer = this.lifecycleRenderTimer();\n\n readonly centerNow$: Observable<LatLngPoint> = this.whenInitialized$.pipe(\n switchMap(() =>\n this.mapInstance$.pipe(\n switchMap((x) => this._movingTimer.pipe(map(() => this.latLngPoint(x.getCenter())))),\n shareReplay(1)\n )\n )\n );\n\n readonly center$: Observable<LatLngPoint> = this.whenInitialized$.pipe(\n switchMap(() => {\n return this.isMoving$.pipe(\n onTrueToFalse(),\n startWith(undefined),\n switchMap(() => this.centerNow$.pipe(first())),\n distinctUntilChanged(isSameLatLngPoint),\n shareReplay(1)\n );\n })\n );\n\n readonly boundNow$: Observable<LatLngBound> = this.whenInitialized$.pipe(\n switchMap(() =>\n this.mapInstance$.pipe(\n switchMap((x) =>\n this._renderingTimer.pipe(\n map(() => {\n const bound = x.getBounds();\n return this.latLngBound([bound.getSouthWest(), bound.getNorthEast()]);\n })\n )\n ),\n shareReplay(1)\n )\n )\n );\n\n readonly bound$: Observable<LatLngBound> = this.whenInitialized$.pipe(\n switchMap(() => {\n return this.isRendering$.pipe(\n onTrueToFalse(),\n startWith(undefined),\n switchMap((x) => this.boundNow$.pipe(first())),\n distinctUntilChanged(isSameLatLngBound),\n shareReplay(1)\n );\n })\n );\n\n readonly isWithinBoundFunction$: Observable<IsWithinLatLngBoundFunction> = this.bound$.pipe(\n map((x) => isWithinLatLngBoundFunction(x)),\n shareReplay(1)\n );\n\n readonly overlapsBoundFunction$: Observable<OverlapsLatLngBoundFunction> = this.bound$.pipe(\n map((x) => overlapsLatLngBoundFunction(x)),\n shareReplay(1)\n );\n\n readonly zoomNow$: Observable<MapboxZoomLevel> = this.whenInitialized$.pipe(\n switchMap(() =>\n this.mapInstance$.pipe(\n switchMap((x) => this._renderingTimer.pipe(map(() => x.getZoom() as MapboxZoomLevel))),\n shareReplay(1)\n )\n )\n );\n\n readonly zoom$: Observable<MapboxZoomLevel> = this.whenInitialized$.pipe(\n switchMap(() => {\n return this.isZooming$.pipe(\n onTrueToFalse(),\n startWith(undefined),\n switchMap((x) => this.zoomNow$.pipe(first())),\n distinctUntilChanged(),\n shareReplay(1)\n );\n })\n );\n\n readonly pitchNow$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.mapInstance$.pipe(\n switchMap((x) => this._movingTimer.pipe(map(() => x.getPitch()))),\n shareReplay(1)\n )\n )\n );\n\n readonly pitch$ = this.whenInitialized$.pipe(\n switchMap(() => {\n return this.isRotating$.pipe(\n onTrueToFalse(),\n startWith(undefined),\n switchMap((x) => this.pitchNow$.pipe(first())),\n distinctUntilChanged(),\n shareReplay(1)\n );\n })\n );\n\n readonly bearingNow$ = this.whenInitialized$.pipe(\n switchMap(() =>\n this.mapInstance$.pipe(\n switchMap((x) => this._movingTimer.pipe(map(() => x.getBearing()))),\n shareReplay(1)\n )\n )\n );\n\n readonly bearing$ = this.whenInitialized$.pipe(\n switchMap(() => {\n return this.isRotating$.pipe(\n onTrueToFalse(),\n startWith(undefined),\n switchMap((x) => this.bearingNow$.pipe(first())),\n distinctUntilChanged(),\n shareReplay(1)\n );\n })\n );\n\n readonly content$ = this.state$.pipe(\n map((x) => x.content),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly hasContent$ = this.content$.pipe(map(Boolean));\n\n readonly clickEvent$ = this.state$.pipe(\n map((x) => x.clickEvent),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly doubleClickEvent$ = this.state$.pipe(\n map((x) => x.doubleClickEvent),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n // MARK: State Changes\n private readonly _setMapService = this.updater((state, mapService: Maybe<MapService>) => ({ mapService, moveState: 'init', lifecycleState: 'init', zoomState: 'init', rotateState: 'init', retainContent: state.retainContent, content: state.retainContent ? state.content : undefined }));\n private readonly _setLifecycleState = this.updater((state, lifecycleState: MapboxMapLifecycleState) => ({ ...state, lifecycleState }));\n private readonly _setMoveState = this.updater((state, moveState: MapboxMapMoveState) => ({ ...state, moveState }));\n private readonly _setZoomState = this.updater((state, zoomState: MapboxMapZoomState) => ({ ...state, zoomState }));\n private readonly _setRotateState = this.updater((state, rotateState: MapboxMapRotateState) => ({ ...state, rotateState }));\n\n private readonly _setClickEvent = this.updater((state, clickEvent: DbxMapboxClickEvent) => ({ ...state, clickEvent }));\n private readonly _setDoubleClickEvent = this.updater((state, doubleClickEvent: DbxMapboxClickEvent) => ({ ...state, doubleClickEvent }));\n\n private readonly _setError = this.updater((state, error: Error) => ({ ...state, error }));\n\n readonly clearContent = this.updater((state) => ({ ...state, content: undefined }));\n readonly setContent = this.updater((state, content: Maybe<DbxInjectionComponentConfig<unknown>>) => ({ ...state, content }));\n}\n","import { DbxMapboxService } from './mapbox.service';\nimport { DbxMapboxMapStore } from './mapbox.store';\nimport { Directive, Host, OnInit, Optional } from '@angular/core';\nimport { MapComponent, MapService } from 'ngx-mapbox-gl';\nimport { latLngPoint } from '@dereekb/util';\n\n/**\n * Directive that configures a MapComponent with content from DbxMapboxService. Connects a host MapService to a parent DbxMapboxMapStore if available.\n */\n@Directive({\n selector: '[dbxMapboxMap]'\n})\nexport class DbxMapboxMapDirective implements OnInit {\n constructor(\n //\n @Host() readonly mapService: MapService,\n @Host() readonly mapboxMap: MapComponent,\n readonly dbxMapboxService: DbxMapboxService,\n @Optional() readonly dbxMapboxMapStore: DbxMapboxMapStore\n ) {}\n\n ngOnInit(): void {\n // style must be provided first before the map will load.\n this.mapboxMap.style = this.dbxMapboxService.defaultStyle;\n this.mapboxMap.zoom = [this.dbxMapboxService.defaultZoom];\n this.mapboxMap.center = latLngPoint(this.dbxMapboxService.defaultCenter);\n\n if (this.dbxMapboxMapStore) {\n this.dbxMapboxMapStore.setMapService(this.mapService);\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { DbxMapboxMapStore } from './mapbox.store';\n\n/**\n * Content drawer that connects with DbxMapboxMapStore to\n */\n@Component({\n selector: 'dbx-mapbox-layout-drawer',\n templateUrl: './mapbox.layout.drawer.component.html',\n host: {\n class: 'dbx-mapbox-layout-drawer'\n }\n})\nexport class DbxMapboxLayoutDrawerComponent {\n readonly config$ = this.dbxMapboxMapStore.content$;\n\n constructor(readonly dbxMapboxMapStore: DbxMapboxMapStore) {}\n}\n","<div>\n <dbx-injection [config]=\"config$ | async\"></dbx-injection>\n</div>\n","import { skip, switchMap, first, startWith, shareReplay, throttleTime, map, distinctUntilChanged, BehaviorSubject, combineLatest, Subject, Observable } from 'rxjs';\nimport { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { DbxMapboxMapStore } from './mapbox.store';\nimport { Maybe } from '@dereekb/util';\nimport { dbxColorBackground, DbxThemeColor } from '@dereekb/dbx-web';\nimport { ResizedEvent } from 'angular-resize-event';\nimport { SubscriptionObject } from '@dereekb/rxjs';\nimport { MatDrawerContainer } from '@angular/material/sidenav';\nimport { MapboxEaseTo } from './mapbox';\n\nexport type DbxMapboxLayoutSide = 'left' | 'right';\n\n/**\n * Responsive component meant to split a left and right column.\n *\n * The left column is smaller than the right column, which contains the primary content.\n *\n * Requires a TwoColumnsContextStore to be provided.\n */\n@Component({\n selector: 'dbx-mapbox-layout',\n templateUrl: './mapbox.layout.component.html',\n styleUrls: ['./mapbox.layout.component.scss']\n})\nexport class DbxMapboxLayoutComponent extends SubscriptionObject implements OnInit, OnDestroy {\n @ViewChild(MatDrawerContainer)\n readonly container!: MatDrawerContainer;\n\n @ViewChild('content', { read: ElementRef, static: true })\n readonly content!: ElementRef;\n\n private _resized = new Subject<void>();\n private _updateMargins = new Subject<void>();\n private _side = new BehaviorSubject<DbxMapboxLayoutSide>('right');\n private _openToggle = new BehaviorSubject<boolean>(true);\n private _color = new BehaviorSubject<Maybe<DbxThemeColor>>(undefined);\n private _toggleSub = new SubscriptionObject();\n\n readonly side$ = this._side.pipe(distinctUntilChanged(), shareReplay(1));\n\n readonly opened$ = combineLatest([this.dbxMapboxMapStore.hasContent$, this._openToggle]).pipe(\n map(([hasContent, open]) => hasContent && open),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly position$: Observable<'start' | 'end'> = this.side$.pipe(\n map((x) => (x === 'right' ? 'end' : 'start')),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly drawerClasses$ = combineLatest([this.side$, this.dbxMapboxMapStore.hasContent$, this.opened$]).pipe(\n //\n map(([side, hasContent, open]) => (hasContent ? 'has-drawer-content' : 'no-drawer-content') + ` ${side}-drawer ` + (open ? 'open-drawer' : '')),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly drawerButtonClasses$ = combineLatest([this.dbxMapboxMapStore.hasContent$, this._color]).pipe(\n //\n map(([hasContent, color]) => dbxColorBackground(color)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly buttonIcon$: Observable<string> = combineLatest([this.side$, this.opened$]).pipe(\n map(([side, opened]) => {\n let icons = ['chevron_right', 'chevron_left'];\n\n if (side === 'left') {\n icons = icons.reverse();\n }\n\n return opened ? icons[0] : icons[1];\n })\n );\n\n constructor(readonly dbxMapboxMapStore: DbxMapboxMapStore) {\n super();\n }\n\n ngOnInit(): void {\n this.subscription = (\n this.side$.pipe(\n switchMap(() =>\n this._resized.pipe(\n throttleTime(100, undefined, { leading: true, trailing: true }),\n map(() => 'r'),\n startWith('s')\n )\n )\n ) as Observable<'s' | 'r'>\n ).subscribe((reason) => {\n this.dbxMapboxMapStore.mapInstance$.subscribe((x) => {\n x.resize();\n\n // side changed\n if (reason === 's') {\n setTimeout(() => {\n this._updateMargins.next();\n });\n }\n });\n });\n\n this._toggleSub.subscription = combineLatest([this.opened$.pipe(distinctUntilChanged(), skip(1)), this._updateMargins]).subscribe(([opened]) => {\n let { right } = this.container._contentMargins;\n\n this.container.updateContentMargins();\n\n setTimeout(() => {\n const flip = opened ? 1 : -1;\n\n if (opened) {\n right = this.container._contentMargins.right;\n }\n\n right = (right || 0) * flip;\n\n const element: HTMLElement = this.content.nativeElement;\n const width = element.clientWidth;\n\n const easeTo: Observable<MapboxEaseTo> = this.dbxMapboxMapStore\n .calculateNextCenterOffsetWithScreenMarginChange({\n leftMargin: 0,\n rightMargin: right,\n fullWidth: width\n })\n .pipe(\n first(),\n map((center) => ({ to: { center, duration: 3200, essential: false } } as MapboxEaseTo))\n );\n\n this.dbxMapboxMapStore.easeTo(easeTo);\n });\n });\n }\n\n ngOnDestroy(): void {\n this._resized.complete();\n this._updateMargins.complete();\n this._side.complete();\n this._openToggle.complete();\n this._color.complete();\n this._toggleSub.destroy();\n }\n\n toggleDrawer(open?: boolean) {\n if (open == null) {\n open = !this._openToggle.value;\n }\n\n this._openToggle.next(open);\n }\n\n @Input()\n set side(side: Maybe<DbxMapboxLayoutSide>) {\n if (side != null) {\n this._side.next(side);\n }\n }\n\n @Input()\n set opened(opened: Maybe<boolean>) {\n if (opened != null) {\n this._openToggle.next(opened);\n }\n }\n\n @Input()\n set drawerColor(color: Maybe<DbxThemeColor>) {\n this._color.next(color);\n }\n\n onResized(event: ResizedEvent): void {\n this._resized.next();\n }\n}\n","<mat-drawer-container class=\"dbx-mapbox-layout-container\" [ngClass]=\"(drawerClasses$ | async) || ''\" [hasBackdrop]=\"false\">\n <mat-drawer class=\"dbx-mapbox-layout-drawer\" #drawer [opened]=\"opened$ | async\" mode=\"push\" [position]=\"(position$ | async) || 'end'\">\n <div class=\"dbx-mapbox-layout-drawer-content\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <ng-content select=\"[drawer]\"></ng-content>\n <dbx-mapbox-layout-drawer></dbx-mapbox-layout-drawer>\n </div>\n </mat-drawer>\n <mat-drawer-content #content class=\"dbx-mapbox-layout-content\" (resized)=\"onResized($event)\">\n <button mat-icon-button (click)=\"toggleDrawer()\" class=\"dbx-mapbox-layout-drawer-button\" [ngClass]=\"(drawerButtonClasses$ | async) || ''\">\n <mat-icon>{{ buttonIcon$ | async }}</mat-icon>\n </button>\n <ng-content></ng-content>\n </mat-drawer-content>\n</mat-drawer-container>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DbxMapboxMapDirective } from './mapbox.store.map.directive';\nimport { DbxMapboxConfig } from './mapbox.service';\nimport { DbxMapboxLayoutComponent } from './mapbox.layout.component';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { DbxMapboxLayoutDrawerComponent } from './mapbox.layout.drawer.component';\nimport { DbxInjectionComponentModule } from '@dereekb/dbx-core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AngularResizeEventModule } from 'angular-resize-event';\n\nconst declarations = [\n //\n DbxMapboxMapDirective,\n DbxMapboxLayoutComponent,\n DbxMapboxLayoutDrawerComponent\n];\n\n@NgModule({\n imports: [\n //\n CommonModule,\n MatSidenavModule,\n DbxInjectionComponentModule,\n MatButtonModule,\n MatIconModule,\n AngularResizeEventModule\n ],\n declarations,\n exports: declarations\n})\nexport class DbxMapboxModule {\n static forRoot(config: DbxMapboxConfig): ModuleWithProviders<DbxMapboxModule> {\n return {\n ngModule: DbxMapboxModule,\n providers: [\n {\n provide: DbxMapboxConfig,\n useValue: config\n }\n ]\n };\n }\n}\n","import { LatLngPointInput, LatLngBoundInput } from '@dereekb/util';\nimport * as MapboxGl from 'mapbox-gl';\n\nexport type KnownMapboxStyle = 'mapbox://styles/mapbox/streets-v11' | 'mapbox://styles/mapbox/outdoors-v11' | 'mapbox://styles/mapbox/light-v10' | 'mapbox://styles/mapbox/dark-v10' | 'mapbox://styles/mapbox/satellite-v9' | 'mapbox://styles/mapbox/satellite-streets-v11' | 'mapbox://styles/mapbox/navigation-day-v1' | 'mapbox://styles/mapbox/navigation-night-v1';\n\nexport const KNOWN_MAPBOX_STYLES: KnownMapboxStyle[] = [\n //\n 'mapbox://styles/mapbox/streets-v11',\n 'mapbox://styles/mapbox/outdoors-v11',\n 'mapbox://styles/mapbox/light-v10',\n 'mapbox://styles/mapbox/dark-v10',\n 'mapbox://styles/mapbox/satellite-v9',\n 'mapbox://styles/mapbox/satellite-streets-v11',\n 'mapbox://styles/mapbox/navigation-day-v1',\n 'mapbox://styles/mapbox/navigation-night-v1'\n];\n\nexport type MapboxZoomLevel = number;\nexport type MapboxPitch = number;\nexport type MapboxBearing = number;\n\nexport type DbxMapboxClickEvent = MapboxGl.MapMouseEvent & MapboxGl.EventData;\n\nexport interface MapboxStyleConfig {\n style: MapboxGl.Style | string;\n options?: {\n diff?: boolean | undefined;\n localIdeographFontFamily?: string | undefined;\n };\n}\n\nexport interface MapboxFitBounds {\n bounds: LatLngBoundInput;\n options?: mapboxgl.FitBoundsOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxJumpToPositionOptions extends Omit<MapboxGl.CameraOptions, 'center'> {\n center: LatLngPointInput;\n}\n\nexport interface MapboxJumpTo {\n center?: LatLngPointInput;\n to?: MapboxJumpToPositionOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxEaseToPositionOptions extends Omit<MapboxGl.EaseToOptions, 'center'>, MapboxJumpToPositionOptions {}\n\nexport interface MapboxEaseTo {\n center?: LatLngPointInput;\n to?: MapboxEaseToPositionOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxFlyToPositionOptions extends Omit<MapboxGl.FlyToOptions, 'center'>, MapboxJumpToPositionOptions {}\n\nexport interface MapboxFlyTo {\n center?: LatLngPointInput;\n to?: MapboxFlyToPositionOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxRotateTo {\n bearing: MapboxBearing;\n options?: mapboxgl.AnimationOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxResetNorth {\n options?: mapboxgl.AnimationOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxResetNorthPitch {\n options?: mapboxgl.AnimationOptions;\n eventData?: mapboxgl.EventData;\n}\n\nexport interface MapboxSnapToNorth {\n options?: mapboxgl.AnimationOptions;\n eventData?: mapboxgl.EventData;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.DbxMapboxService","i3.DbxMapboxMapStore","i1.DbxMapboxMapStore","i3","i2","i7.DbxMapboxLayoutDrawerComponent"],"mappings":"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"}