@theseam/ui-common 0.4.22 → 0.4.24-beta.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 (154) hide show
  1. package/breadcrumbs/breadcrumbs/breadcrumbs.component.scss +1 -1
  2. package/datatable/datatable/datatable.component.d.ts +10 -1
  3. package/datatable/models/action-item-column-position.d.ts +13 -0
  4. package/datatable/services/columns-manager.service.d.ts +7 -0
  5. package/datatable/utils/create-action-menu-column.d.ts +1 -1
  6. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +2 -2
  7. package/esm2020/datatable/datatable/datatable.component.mjs +20 -4
  8. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +2 -2
  9. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  10. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  11. package/esm2020/datatable/models/action-item-column-position.mjs +5 -0
  12. package/esm2020/datatable/services/columns-manager.service.mjs +27 -2
  13. package/esm2020/datatable/utils/create-action-menu-column.mjs +4 -3
  14. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  15. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +1 -1
  16. package/esm2020/form-field/form-field-required-indicator.component.mjs +22 -7
  17. package/esm2020/form-field/input.directive.mjs +19 -16
  18. package/esm2020/form-field/testing/form-field.harness.mjs +45 -0
  19. package/esm2020/form-field/testing/index.mjs +2 -1
  20. package/esm2020/framework/base-layout/base-layout.component.mjs +14 -4
  21. package/esm2020/framework/base-layout/base-layout.module.mjs +6 -1
  22. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +21 -5
  23. package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +16 -0
  24. package/esm2020/framework/base-layout/index.mjs +2 -1
  25. package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +55 -0
  26. package/esm2020/framework/nav/index.mjs +6 -0
  27. package/esm2020/framework/nav/nav-item/nav-item.component.mjs +227 -0
  28. package/esm2020/framework/nav/nav-utils.mjs +107 -0
  29. package/esm2020/framework/nav/nav.models.mjs +2 -0
  30. package/esm2020/framework/nav/nav.module.mjs +67 -0
  31. package/esm2020/framework/nav/nav.service.mjs +204 -0
  32. package/esm2020/framework/public-api.mjs +2 -1
  33. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +2 -2
  34. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +28 -67
  35. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +12 -5
  36. package/esm2020/framework/side-nav/side-nav.component.mjs +116 -38
  37. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  38. package/esm2020/framework/side-nav/side-nav.module.mjs +9 -39
  39. package/esm2020/framework/side-nav/side-nav.service.mjs +1 -1
  40. package/esm2020/framework/top-bar/index.mjs +3 -1
  41. package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +16 -0
  42. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +10 -4
  43. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +6 -4
  44. package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +16 -0
  45. package/esm2020/framework/top-bar/top-bar.component.mjs +55 -11
  46. package/esm2020/framework/top-bar/top-bar.module.mjs +15 -5
  47. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
  48. package/esm2020/layout/layout.service.mjs +12 -2
  49. package/esm2020/menu/menu-toggle.directive.mjs +7 -2
  50. package/esm2020/story-helpers/story-modal-container.component.mjs +3 -3
  51. package/esm2020/tabbed/tabbed.component.mjs +25 -18
  52. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +4 -2
  53. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  54. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  55. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  56. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  57. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  58. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  59. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +2 -2
  60. package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  61. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +2 -2
  62. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  63. package/fesm2015/theseam-ui-common-datatable.mjs +56 -10
  64. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  65. package/fesm2015/theseam-ui-common-form-field.mjs +92 -27
  66. package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
  67. package/fesm2015/theseam-ui-common-framework.mjs +905 -156
  68. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  69. package/fesm2015/theseam-ui-common-google-maps.mjs +2 -2
  70. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  71. package/fesm2015/theseam-ui-common-layout.mjs +11 -2
  72. package/fesm2015/theseam-ui-common-layout.mjs.map +1 -1
  73. package/fesm2015/theseam-ui-common-menu.mjs +6 -1
  74. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  75. package/fesm2015/theseam-ui-common-story-helpers.mjs +2 -2
  76. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  77. package/fesm2015/theseam-ui-common-tabbed.mjs +26 -19
  78. package/fesm2015/theseam-ui-common-tabbed.mjs.map +1 -1
  79. package/fesm2015/theseam-ui-common-table-cell-types.mjs +3 -1
  80. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  81. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  82. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +2 -2
  83. package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  84. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +2 -2
  85. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  86. package/fesm2020/theseam-ui-common-datatable.mjs +56 -10
  87. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  88. package/fesm2020/theseam-ui-common-form-field.mjs +88 -27
  89. package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
  90. package/fesm2020/theseam-ui-common-framework.mjs +907 -156
  91. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  92. package/fesm2020/theseam-ui-common-google-maps.mjs +2 -2
  93. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  94. package/fesm2020/theseam-ui-common-layout.mjs +11 -2
  95. package/fesm2020/theseam-ui-common-layout.mjs.map +1 -1
  96. package/fesm2020/theseam-ui-common-menu.mjs +6 -1
  97. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  98. package/fesm2020/theseam-ui-common-story-helpers.mjs +2 -2
  99. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  100. package/fesm2020/theseam-ui-common-tabbed.mjs +24 -17
  101. package/fesm2020/theseam-ui-common-tabbed.mjs.map +1 -1
  102. package/fesm2020/theseam-ui-common-table-cell-types.mjs +3 -1
  103. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  104. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  105. package/form-field/form-field-required-indicator.component.d.ts +6 -1
  106. package/form-field/input.directive.d.ts +9 -15
  107. package/form-field/testing/form-field.harness.d.ts +14 -0
  108. package/form-field/testing/index.d.ts +1 -0
  109. package/framework/base-layout/base-layout.component.d.ts +4 -2
  110. package/framework/base-layout/base-layout.component.scss +18 -10
  111. package/framework/base-layout/base-layout.module.d.ts +11 -10
  112. package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +8 -3
  113. package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +9 -0
  114. package/framework/base-layout/index.d.ts +1 -0
  115. package/framework/base-layout/styles/_variables.scss +21 -0
  116. package/framework/nav/_nav-theme.scss +4 -0
  117. package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +25 -0
  118. package/framework/nav/horizontal-nav/horizontal-nav.component.scss +50 -0
  119. package/framework/nav/index.d.ts +5 -0
  120. package/framework/nav/nav-item/nav-item.component.d.ts +74 -0
  121. package/framework/nav/nav-item/nav-item.component.scss +203 -0
  122. package/framework/nav/nav-utils.d.ts +20 -0
  123. package/framework/nav/nav.models.d.ts +77 -0
  124. package/framework/nav/nav.module.d.ts +17 -0
  125. package/framework/nav/nav.service.d.ts +27 -0
  126. package/framework/nav/styles/_themes/light/_variables.scss +56 -0
  127. package/framework/nav/styles/_themes/primary/_variables.scss +56 -0
  128. package/framework/nav/styles/_utilities.scss +3 -0
  129. package/framework/nav/styles/_variables.scss +2 -0
  130. package/framework/public-api.d.ts +1 -0
  131. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +7 -14
  132. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +7 -5
  133. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +5 -3
  134. package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.scss +3 -6
  135. package/framework/side-nav/side-nav.component.d.ts +13 -1
  136. package/framework/side-nav/side-nav.component.scss +0 -1
  137. package/framework/side-nav/side-nav.models.d.ts +7 -1
  138. package/framework/side-nav/side-nav.module.d.ts +1 -9
  139. package/framework/side-nav/styles/_themes/light/_variables.scss +24 -14
  140. package/framework/side-nav/styles/_themes/primary/_variables.scss +8 -0
  141. package/framework/top-bar/index.d.ts +2 -0
  142. package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +8 -0
  143. package/framework/top-bar/top-bar-item.directive.d.ts +4 -1
  144. package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +5 -2
  145. package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +8 -0
  146. package/framework/top-bar/top-bar.component.d.ts +25 -3
  147. package/framework/top-bar/top-bar.component.scss +7 -2
  148. package/framework/top-bar/top-bar.module.d.ts +10 -8
  149. package/layout/layout.service.d.ts +9 -1
  150. package/menu/menu-toggle.directive.d.ts +2 -1
  151. package/package.json +2 -2
  152. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +57 -14
  153. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +33 -5
  154. package/tabbed/tabbed.component.d.ts +9 -4
@@ -1,4 +1,6 @@
1
1
  import { Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest, shareReplay, tap } from 'rxjs';
3
+ import { isNullOrUndefined } from '@theseam/ui-common/utils';
2
4
  import { TabbedItemComponent } from './tabbed-item/tabbed-item.component';
3
5
  import { TabbedService } from './tabbed.service';
4
6
  import * as i0 from "@angular/core";
@@ -8,6 +10,12 @@ import * as i3 from "@angular/common";
8
10
  import * as i4 from "@angular/flex-layout/flex";
9
11
  import * as i5 from "./tabbed-content/tabbed-content.component";
10
12
  export class TabbedComponent {
13
+ set tabbedItems(val) {
14
+ this._tabbedItems.next(val);
15
+ }
16
+ get tabbedItems() {
17
+ return this._tabbedItems.value;
18
+ }
11
19
  set direction(val) {
12
20
  this._direction = val;
13
21
  }
@@ -31,20 +39,12 @@ export class TabbedComponent {
31
39
  }
32
40
  }
33
41
  else {
34
- return this._selectedTab;
42
+ return this._selectedTab.value;
35
43
  }
36
44
  }
37
- set selectedTab(tab) { this._selectedTab = tab; }
45
+ set selectedTab(tab) { this._selectedTab.next(tab); }
38
46
  set activeTabName(val) {
39
- clearTimeout(this._activeTabNameTimeout);
40
- this._activeTabNameTimeout = setTimeout(() => {
41
- if (!val) {
42
- this.selectedTab = undefined;
43
- }
44
- else {
45
- this.selectTab(val);
46
- }
47
- });
47
+ this._activeTabName.next(val);
48
48
  }
49
49
  constructor(tabbedService, router, route) {
50
50
  this.tabbedService = tabbedService;
@@ -52,8 +52,14 @@ export class TabbedComponent {
52
52
  this.route = route;
53
53
  this._direction = 'vertical';
54
54
  this._hideTabs = false;
55
+ this._tabbedItems = new BehaviorSubject(undefined);
56
+ this.tabbedItems$ = this._tabbedItems.asObservable();
55
57
  this.tabChanged = new EventEmitter();
56
58
  this.onlyRouteContent = false;
59
+ this._selectedTab = new BehaviorSubject(undefined);
60
+ this.selectedTab$ = this._selectedTab.asObservable().pipe(shareReplay({ bufferSize: 1, refCount: true }));
61
+ this._activeTabName = new BehaviorSubject(undefined);
62
+ this.activeTabName$ = this._activeTabName.asObservable();
57
63
  }
58
64
  ngOnInit() {
59
65
  this.tabbedService.registerTab(this, 'main');
@@ -62,9 +68,7 @@ export class TabbedComponent {
62
68
  this.tabbedService.unregisterTab(this, 'main');
63
69
  }
64
70
  ngAfterContentInit() {
65
- if (this.tabbedItems && this.tabbedItems.length > 0) {
66
- this.selectedTab = this.tabbedItems.first;
67
- }
71
+ combineLatest([this.tabbedItems$, this.activeTabName$]).pipe(tap(([_, activeTabName]) => this.selectTab(activeTabName))).subscribe();
68
72
  }
69
73
  /**
70
74
  *
@@ -81,20 +85,23 @@ export class TabbedComponent {
81
85
  * to select a tab
82
86
  */
83
87
  selectTab(name) {
88
+ if (isNullOrUndefined(name) || name === this.selectedTab?.name) {
89
+ return;
90
+ }
84
91
  const tab = this.tabbedItems?.find(t => t.name === name);
85
92
  if (tab) {
86
93
  this.selectedTab = tab;
87
94
  }
88
95
  else {
89
- throw new Error(`Tab with name '${name}' not found`);
96
+ console.warn(`Tab with name '${name}' not found`);
90
97
  }
91
98
  }
92
99
  }
93
100
  TabbedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, deps: [{ token: i1.TabbedService }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
94
- TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i5.TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }] });
101
+ TabbedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: TabbedComponent, selector: "seam-tabbed", inputs: { direction: "direction", hideTabs: "hideTabs", onlyRouteContent: "onlyRouteContent", activeTabName: "activeTabName" }, outputs: { tabChanged: "tabChanged" }, providers: [TabbedService], queries: [{ propertyName: "tabbedItems", predicate: TabbedItemComponent }], ngImport: i0, template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i5.TabbedContentComponent, selector: "seam-tabbed-content", inputs: ["tabbedItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
95
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: TabbedComponent, decorators: [{
96
103
  type: Component,
97
- args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === selectedTab\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"!selectedTab; else findContentTpl\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItems?.first\"></seam-tabbed-content>\n </ng-container>\n <ng-template #findContentTpl>\n <ng-container *ngFor=\"let tabbedItem of tabbedItems\">\n <ng-container *ngIf=\"selectedTab === tabbedItem\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"tabbedItem\"></seam-tabbed-content>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
104
+ args: [{ selector: 'seam-tabbed', providers: [TabbedService], template: "<div [fxLayout]=\"(direction === 'horizontal') ? 'column' : 'row'\" fxFlexFill>\n\n <!-- Tabs -->\n <div *ngIf=\"!hideTabs\"\n [fxLayout]=\"(direction === 'horizontal') ? 'row' : 'column'\"\n style=\"position: relative;\">\n <ng-container *ngFor=\"let tabbedItem of tabbedItems$ | async\">\n <div class=\"tabbed-tab pt-2 pb-2 pl-4 pr-4 bg-light text-nowrap\"\n [class.tab-dir-horizontal]=\"direction === 'horizontal'\"\n [class.tab-dir-vertical]=\"direction === 'vertical'\"\n (click)=\"onClickTab($event, tabbedItem)\"\n [class.active]=\"tabbedItem === (selectedTab$ | async)\">\n <ng-template *ngIf=\"tabbedItem.tabbedTabTpl; else tabLabelTpl\" [ngTemplateOutlet]=\"tabbedItem.tabbedTabTpl\"></ng-template>\n <ng-template #tabLabelTpl>{{ tabbedItem?.label }}</ng-template>\n </div>\n </ng-container>\n <!-- <div class=\"active-indicator\"\n [class.active-indicator-horizontal]=\"direction === 'horizontal'\"\n [class.active-indicator-vertical]=\"direction === 'vertical'\">\n </div> -->\n </div>\n\n <!-- Tabs Content -->\n <div class=\"tabbed-tabs-content bg-light\">\n <ng-container *ngIf=\"onlyRouteContent; else notOnlyRouteContent\">\n <!-- <app-slide-over-router-outlet></app-slide-over-router-outlet> -->\n <router-outlet></router-outlet>\n </ng-container>\n <ng-template #notOnlyRouteContent>\n <ng-container *ngIf=\"selectedTab$ | async as selectedTab\">\n <seam-tabbed-content fxFlexFill [tabbedItem]=\"selectedTab\"></seam-tabbed-content>\n </ng-container>\n </ng-template>\n </div>\n\n</div>\n", styles: [":host{display:block}.tabbed-tab{box-sizing:border-box;font-weight:400;font-size:10pt;min-width:130px;transform:translateZ(0);overflow:hidden;border:1px solid #dee2e6}.tabbed-tab:not(.active){background-color:#fff!important}.tabbed-tab.active{font-weight:700;color:#357ebd}.tabbed-tab:hover{cursor:pointer}.tabbed-tab.tab-dir-horizontal{border-bottom:0}.tabbed-tab.tab-dir-horizontal:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-horizontal:last-child{border-top-right-radius:.25rem}.tabbed-tab.tab-dir-horizontal:not(:last-child){border-right:0}.tabbed-tab.tab-dir-horizontal.active{margin-bottom:-2px}.tabbed-tab.tab-dir-vertical{border-right:0}.tabbed-tab.tab-dir-vertical:first-child{border-top-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:last-child{border-bottom-left-radius:.25rem}.tabbed-tab.tab-dir-vertical:not(:last-child){border-bottom:0}.tabbed-tab.tab-dir-vertical.active{margin-right:-2px}.tabbed-tabs-content{display:block;flex:1 1 auto;overflow:hidden;border:1px solid #dee2e6;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}app-slide-over-router-outlet{width:100%;height:100%;min-width:0;min-height:0}\n"] }]
98
105
  }], ctorParameters: function () { return [{ type: i1.TabbedService }, { type: i2.Router }, { type: i2.ActivatedRoute }]; }, propDecorators: { tabbedItems: [{
99
106
  type: ContentChildren,
100
107
  args: [TabbedItemComponent]
@@ -109,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
109
116
  }], activeTabName: [{
110
117
  type: Input
111
118
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDYSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFDN0YsTUFBTSxlQUFlLENBQUE7QUFHdEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQTs7Ozs7OztBQVEvRCxNQUFNLE9BQU8sZUFBZTtJQVMxQixJQUNJLFNBQVMsQ0FBQyxHQUFrQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtJQUN2QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxHQUFZO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQTtRQUN0QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7SUFDdkIsQ0FBQztJQUtELElBQUksV0FBVztRQUNiLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFD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RSxhQUFhLGFBR1osQ0FBRSxhQUFhLENBQUU7c0pBT1UsV0FBVztzQkFBaEQsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBRTFCLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0gsU0FBUztzQkFEWixLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFXQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBbUJGLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuXG5pbXBvcnQgeyBUYWJiZWRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90YWJiZWQtaXRlbS90YWJiZWQtaXRlbS5jb21wb25lbnQnXG5pbXBvcnQgeyBUYWJiZWRTZXJ2aWNlLCBUYWJzRGlyZWN0aW9uIH0gZnJvbSAnLi90YWJiZWQuc2VydmljZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS10YWJiZWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiYmVkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiYmVkLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogWyBUYWJiZWRTZXJ2aWNlIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFiYmVkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX2RpcmVjdGlvbjogVGFic0RpcmVjdGlvbiA9ICd2ZXJ0aWNhbCdcbiAgcHJpdmF0ZSBfaGlkZVRhYnMgPSBmYWxzZVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiYmVkSXRlbUNvbXBvbmVudCkgdGFiYmVkSXRlbXM/OiBRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD5cblxuICBAT3V0cHV0KCkgdGFiQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFiYmVkSXRlbUNvbXBvbmVudD4oKVxuXG4gIEBJbnB1dCgpXG4gIHNldCBkaXJlY3Rpb24odmFsOiBUYWJzRGlyZWN0aW9uKSB7XG4gICAgdGhpcy5fZGlyZWN0aW9uID0gdmFsXG4gIH1cbiAgZ2V0IGRpcmVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlyZWN0aW9uXG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgaGlkZVRhYnModmFsOiBib29sZWFuKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9oaWRlVGFicyA9IHZhbFxuICAgIH0pXG4gIH1cbiAgZ2V0IGhpZGVUYWJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlVGFic1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIG9ubHlSb3V0ZUNvbnRlbnQgPSBmYWxzZVxuXG4gIGdldCBzZWxlY3RlZFRhYigpOiBUYWJiZWRJdGVtQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5vbmx5Um91dGVDb250ZW50KSB7XG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMucm91dGUuc25hcHNob3QuY2hpbGRyZW5bMF0ucm91dGVDb25maWdcbiAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY29uZmlnICYmIGNvbmZpZy5wYXRoXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmJlZEl0ZW1zPy5maW5kKHQgPT4gdC5uYW1lID09PSBjaGlsZFBhdGgpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFRhYlxuICAgIH1cbiAgfVxuICBzZXQgc2VsZWN0ZWRUYWIodGFiOiBUYWJiZWRJdGVtQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7IHRoaXMuX3NlbGVjdGVkVGFiID0gdGFiIH1cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRUYWI6IFRhYmJlZEl0ZW1Db21wb25lbnQgfCB1bmRlZmluZWRcblxuICBwcml2YXRlIF9hY3RpdmVUYWJOYW1lVGltZW91dDogYW55XG4gIEBJbnB1dCgpXG4gIHNldCBhY3RpdmVUYWJOYW1lKHZhbDogc3RyaW5nKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2FjdGl2ZVRhYk5hbWVUaW1lb3V0KVxuICAgIHRoaXMuX2FjdGl2ZVRhYk5hbWVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXZhbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdW5kZWZpbmVkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdFRhYih2YWwpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWJiZWRTZXJ2aWNlOiBUYWJiZWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRhYmJlZFNlcnZpY2UucmVnaXN0ZXJUYWIodGhpcywgJ21haW4nKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy50YWJiZWRTZXJ2aWNlLnVucmVnaXN0ZXJUYWIodGhpcywgJ21haW4nKVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLnRhYmJlZEl0ZW1zICYmIHRoaXMudGFiYmVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYiA9IHRoaXMudGFiYmVkSXRlbXMuZmlyc3RcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyBvbkNsaWNrVGFiKGV2ZW50OiBhbnksIHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCkge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICBpZiAodGhpcy5vbmx5Um91dGVDb250ZW50KSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbIHRhYi5uYW1lIF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KVxuICAgIH1cbiAgICB0aGlzLnRhYkNoYW5nZWQuZW1pdCh0YWIpXG4gIH1cblxuICAvKipcbiAgICogVE9ETzogTWFrZSBtb3JlIGdlbmVyaWMsIHNvIHRoYXQgdGhlIG5hbWUgaXNuJ3QgdGhlIG9ubHkgd2F5XG4gICAqICB0byBzZWxlY3QgYSB0YWJcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RUYWIobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGFiID0gdGhpcy50YWJiZWRJdGVtcz8uZmluZCh0ID0+IHQubmFtZSA9PT0gbmFtZSlcbiAgICBpZiAodGFiKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiID0gdGFiXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGFiIHdpdGggbmFtZSAnJHtuYW1lfScgbm90IGZvdW5kYClcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBbZnhMYXlvdXRdPVwiKGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSA/ICdjb2x1bW4nIDogJ3JvdydcIiBmeEZsZXhGaWxsPlxuXG4gIDwhLS0gVGFicyAtLT5cbiAgPGRpdiAqbmdJZj1cIiFoaWRlVGFic1wiXG4gICAgW2Z4TGF5b3V0XT1cIihkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykgPyAncm93JyA6ICdjb2x1bW4nXCJcbiAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWJiZWRJdGVtIG9mIHRhYmJlZEl0ZW1zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFiYmVkLXRhYiBwdC0yIHBiLTIgcGwtNCBwci00IGJnLWxpZ2h0IHRleHQtbm93cmFwXCJcbiAgICAgICAgW2NsYXNzLnRhYi1kaXItaG9yaXpvbnRhbF09XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICAgIFtjbGFzcy50YWItZGlyLXZlcnRpY2FsXT1cImRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrVGFiKCRldmVudCwgdGFiYmVkSXRlbSlcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInRhYmJlZEl0ZW0gPT09IHNlbGVjdGVkVGFiXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRhYmJlZEl0ZW0udGFiYmVkVGFiVHBsOyBlbHNlIHRhYkxhYmVsVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiYmVkSXRlbS50YWJiZWRUYWJUcGxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYkxhYmVsVHBsPnt7IHRhYmJlZEl0ZW0/LmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImFjdGl2ZS1pbmRpY2F0b3JcIlxuICAgICAgW2NsYXNzLmFjdGl2ZS1pbmRpY2F0b3ItaG9yaXpvbnRhbF09XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICBbY2xhc3MuYWN0aXZlLWluZGljYXRvci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIj5cbiAgICA8L2Rpdj4gLS0+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGFicyBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwidGFiYmVkLXRhYnMtY29udGVudCBiZy1saWdodFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmx5Um91dGVDb250ZW50OyBlbHNlIG5vdE9ubHlSb3V0ZUNvbnRlbnRcIj5cbiAgICAgIDwhLS0gPGFwcC1zbGlkZS1vdmVyLXJvdXRlci1vdXRsZXQ+PC9hcHAtc2xpZGUtb3Zlci1yb3V0ZXItb3V0bGV0PiAtLT5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdE9ubHlSb3V0ZUNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGVkVGFiOyBlbHNlIGZpbmRDb250ZW50VHBsXCI+XG4gICAgICAgIDxzZWFtLXRhYmJlZC1jb250ZW50IGZ4RmxleEZpbGwgW3RhYmJlZEl0ZW1dPVwidGFiYmVkSXRlbXM/LmZpcnN0XCI+PC9zZWFtLXRhYmJlZC1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2ZpbmRDb250ZW50VHBsPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWJiZWRJdGVtIG9mIHRhYmJlZEl0ZW1zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVGFiID09PSB0YWJiZWRJdGVtXCI+XG4gICAgICAgICAgICA8c2VhbS10YWJiZWQtY29udGVudCBmeEZsZXhGaWxsIFt0YWJiZWRJdGVtXT1cInRhYmJlZEl0ZW1cIj48L3NlYW0tdGFiYmVkLWNvbnRlbnQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiYmVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJiZWQvdGFiYmVkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDYSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFDN0YsTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUV2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLGtCQUFrQixDQUFBOzs7Ozs7O0FBUS9ELE1BQU0sT0FBTyxlQUFlO0lBSzFCLElBQ0ksV0FBVyxDQUFDLEdBQStDO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFDRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFBO0lBQ2hDLENBQUM7SUFNRCxJQUNJLFNBQVMsQ0FBQyxHQUFrQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQTtJQUN2QixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxHQUFZO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQTtR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dENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHsgVGFiYmVkSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdGFiYmVkLWl0ZW0vdGFiYmVkLWl0ZW0uY29tcG9uZW50J1xuaW1wb3J0IHsgVGFiYmVkU2VydmljZSwgVGFic0RpcmVjdGlvbiB9IGZyb20gJy4vdGFiYmVkLnNlcnZpY2UnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFiYmVkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmJlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmJlZC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFsgVGFiYmVkU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmJlZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIF9kaXJlY3Rpb246IFRhYnNEaXJlY3Rpb24gPSAndmVydGljYWwnXG4gIHByaXZhdGUgX2hpZGVUYWJzID0gZmFsc2VcblxuICBAQ29udGVudENoaWxkcmVuKFRhYmJlZEl0ZW1Db21wb25lbnQpXG4gIHNldCB0YWJiZWRJdGVtcyh2YWw6IFF1ZXJ5TGlzdDxUYWJiZWRJdGVtQ29tcG9uZW50PiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3RhYmJlZEl0ZW1zLm5leHQodmFsKVxuICB9XG4gIGdldCB0YWJiZWRJdGVtcygpOiBRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90YWJiZWRJdGVtcy52YWx1ZVxuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYmJlZEl0ZW1zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8VGFiYmVkSXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgcHVibGljIHJlYWRvbmx5IHRhYmJlZEl0ZW1zJCA9IHRoaXMuX3RhYmJlZEl0ZW1zLmFzT2JzZXJ2YWJsZSgpXG5cbiAgQE91dHB1dCgpIHRhYkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmJlZEl0ZW1Db21wb25lbnQ+KClcblxuICBASW5wdXQoKVxuICBzZXQgZGlyZWN0aW9uKHZhbDogVGFic0RpcmVjdGlvbikge1xuICAgIHRoaXMuX2RpcmVjdGlvbiA9IHZhbFxuICB9XG4gIGdldCBkaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RpcmVjdGlvblxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGhpZGVUYWJzKHZhbDogYm9vbGVhbikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5faGlkZVRhYnMgPSB2YWxcbiAgICB9KVxuICB9XG4gIGdldCBoaWRlVGFicygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZVRhYnNcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvbmx5Um91dGVDb250ZW50ID0gZmFsc2VcblxuICBnZXQgc2VsZWN0ZWRUYWIoKTogVGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMub25seVJvdXRlQ29udGVudCkge1xuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmNoaWxkcmVuWzBdLnJvdXRlQ29uZmlnXG4gICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGNvbmZpZyAmJiBjb25maWcucGF0aFxuICAgICAgICByZXR1cm4gdGhpcy50YWJiZWRJdGVtcz8uZmluZCh0ID0+IHQubmFtZSA9PT0gY2hpbGRQYXRoKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRUYWIudmFsdWVcbiAgICB9XG4gIH1cbiAgc2V0IHNlbGVjdGVkVGFiKHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCkgeyB0aGlzLl9zZWxlY3RlZFRhYi5uZXh0KHRhYikgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RlZFRhYiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFiYmVkSXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRUYWIkID0gdGhpcy5fc2VsZWN0ZWRUYWIuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gIClcblxuICBASW5wdXQoKVxuICBzZXQgYWN0aXZlVGFiTmFtZSh2YWw6IHN0cmluZykge1xuICAgIHRoaXMuX2FjdGl2ZVRhYk5hbWUubmV4dCh2YWwpXG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlVGFiTmFtZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlVGFiTmFtZSQgPSB0aGlzLl9hY3RpdmVUYWJOYW1lLmFzT2JzZXJ2YWJsZSgpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRhYmJlZFNlcnZpY2U6IFRhYmJlZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGFiYmVkU2VydmljZS5yZWdpc3RlclRhYih0aGlzLCAnbWFpbicpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnRhYmJlZFNlcnZpY2UudW5yZWdpc3RlclRhYih0aGlzLCAnbWFpbicpXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgY29tYmluZUxhdGVzdChbIHRoaXMudGFiYmVkSXRlbXMkLCB0aGlzLmFjdGl2ZVRhYk5hbWUkIF0pLnBpcGUoXG4gICAgICB0YXAoKFsgXywgYWN0aXZlVGFiTmFtZSBdKSA9PiB0aGlzLnNlbGVjdFRhYihhY3RpdmVUYWJOYW1lKSlcbiAgICApLnN1YnNjcmliZSgpXG4gIH1cblxuICAvKipcbiAgICpcbiAgICovXG4gIHB1YmxpYyBvbkNsaWNrVGFiKGV2ZW50OiBhbnksIHRhYjogVGFiYmVkSXRlbUNvbXBvbmVudCkge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICBpZiAodGhpcy5vbmx5Um91dGVDb250ZW50KSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbIHRhYi5uYW1lIF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KVxuICAgIH1cbiAgICB0aGlzLnRhYkNoYW5nZWQuZW1pdCh0YWIpXG4gIH1cblxuICAvKipcbiAgICogVE9ETzogTWFrZSBtb3JlIGdlbmVyaWMsIHNvIHRoYXQgdGhlIG5hbWUgaXNuJ3QgdGhlIG9ubHkgd2F5XG4gICAqICB0byBzZWxlY3QgYSB0YWJcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RUYWIobmFtZT86IHN0cmluZykge1xuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChuYW1lKSB8fCBuYW1lID09PSB0aGlzLnNlbGVjdGVkVGFiPy5uYW1lKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYmJlZEl0ZW1zPy5maW5kKHQgPT4gdC5uYW1lID09PSBuYW1lKVxuICAgIGlmICh0YWIpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWIgPSB0YWJcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oYFRhYiB3aXRoIG5hbWUgJyR7bmFtZX0nIG5vdCBmb3VuZGApXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgW2Z4TGF5b3V0XT1cIihkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykgPyAnY29sdW1uJyA6ICdyb3cnXCIgZnhGbGV4RmlsbD5cblxuICA8IS0tIFRhYnMgLS0+XG4gIDxkaXYgKm5nSWY9XCIhaGlkZVRhYnNcIlxuICAgIFtmeExheW91dF09XCIoZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpID8gJ3JvdycgOiAnY29sdW1uJ1wiXG4gICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiYmVkSXRlbSBvZiB0YWJiZWRJdGVtcyQgfCBhc3luY1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInRhYmJlZC10YWIgcHQtMiBwYi0yIHBsLTQgcHItNCBiZy1saWdodCB0ZXh0LW5vd3JhcFwiXG4gICAgICAgIFtjbGFzcy50YWItZGlyLWhvcml6b250YWxdPVwiZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCdcIlxuICAgICAgICBbY2xhc3MudGFiLWRpci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIlxuICAgICAgICAoY2xpY2spPVwib25DbGlja1RhYigkZXZlbnQsIHRhYmJlZEl0ZW0pXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJ0YWJiZWRJdGVtID09PSAoc2VsZWN0ZWRUYWIkIHwgYXN5bmMpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRhYmJlZEl0ZW0udGFiYmVkVGFiVHBsOyBlbHNlIHRhYkxhYmVsVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiYmVkSXRlbS50YWJiZWRUYWJUcGxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RhYkxhYmVsVHBsPnt7IHRhYmJlZEl0ZW0/LmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImFjdGl2ZS1pbmRpY2F0b3JcIlxuICAgICAgW2NsYXNzLmFjdGl2ZS1pbmRpY2F0b3ItaG9yaXpvbnRhbF09XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1wiXG4gICAgICBbY2xhc3MuYWN0aXZlLWluZGljYXRvci12ZXJ0aWNhbF09XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCdcIj5cbiAgICA8L2Rpdj4gLS0+XG4gIDwvZGl2PlxuXG4gIDwhLS0gVGFicyBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwidGFiYmVkLXRhYnMtY29udGVudCBiZy1saWdodFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmx5Um91dGVDb250ZW50OyBlbHNlIG5vdE9ubHlSb3V0ZUNvbnRlbnRcIj5cbiAgICAgIDwhLS0gPGFwcC1zbGlkZS1vdmVyLXJvdXRlci1vdXRsZXQ+PC9hcHAtc2xpZGUtb3Zlci1yb3V0ZXItb3V0bGV0PiAtLT5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdE9ubHlSb3V0ZUNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRUYWIkIHwgYXN5bmMgYXMgc2VsZWN0ZWRUYWJcIj5cbiAgICAgICAgPHNlYW0tdGFiYmVkLWNvbnRlbnQgZnhGbGV4RmlsbCBbdGFiYmVkSXRlbV09XCJzZWxlY3RlZFRhYlwiPjwvc2VhbS10YWJiZWQtY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
@@ -101,7 +101,9 @@ export class TableCellTypeStringComponent {
101
101
  if (configAction.type === 'link') {
102
102
  link = this._parseConfigValue(configAction.link);
103
103
  if (link !== undefined && link !== null) {
104
- newTplType = this._parseConfigValue(configAction.asset) ? 'link-encrypted' : 'link';
104
+ newTplType = this._parseConfigValue(configAction.asset)
105
+ ? 'link-encrypted'
106
+ : this._parseConfigValue(configAction.external) ? 'link-external' : 'link';
105
107
  download = !!this._parseConfigValue(configAction.download);
106
108
  detectMimeContent = !!this._parseConfigValue(configAction.detectMimeContent);
107
109
  queryParams = this._parseConfigValue(configAction.queryParams);
@@ -192,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
192
194
  type: HostBinding,
193
195
  args: ['class']
194
196
  }] } });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC10eXBlLXN0cmluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdGFibGUtY2VsbC10eXBlcy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nL3RhYmxlLWNlbGwtdHlwZS1zdHJpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLXN0cmluZy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUkxQyxPQUFPLEVBQWdDLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFBOzs7Ozs7Ozs7QUFjbEcsTUFBTSxPQUFPLDRCQUE0QjtJQUl2QyxJQUNJLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBQ2xDLElBQUksS0FBSyxDQUFDLEdBQThCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFBO1FBQ2pCLHlFQUF5RTtRQUN6RSxzRUFBc0U7UUFDdEUsMkVBQTJFO1FBQzNFLDZCQUE2QjtRQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1NBQ3ZCO0lBQ0gsQ0FBQztJQUdELElBQ0ksTUFBTSxLQUFL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QWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUM7aUJBQ3hFLFNBQVMsQ0FDUixDQUFDLENBQUMsRUFBRSxHQUFFLENBQUM7WUFDUCxzQ0FBc0M7WUFDdEMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUN6QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FDbkMsQ0FBQTtTQUNKO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxDQUFBO1NBQzlDO2FBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsQ0FBQTtTQUMxQztJQUNILENBQUM7O3lIQW5NVSw0QkFBNEIsK0xBdUVqQixlQUFlOzZHQXZFMUIsNEJBQTRCLGlTQzlCekMsc3BEQXlEQTsyRkQzQmEsNEJBQTRCO2tCQVB4QyxTQUFTOytCQUNFLDZCQUE2QixRQUdqQyxFQUFHLG1CQUNRLHVCQUF1QixDQUFDLE1BQU07OzBCQXVFNUMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzRDQWxFakMsS0FBSztzQkFEUixLQUFLO2dCQWVGLE1BQU07c0JBRFQsS0FBSztnQkE2QkYsS0FBSztzQkFEUixLQUFLO2dCQUl5QixVQUFVO3NCQUF4QyxXQUFXO3VCQUFDLFlBQVk7Z0JBR3JCLEtBQUs7c0JBRFIsS0FBSztnQkFJeUIsVUFBVTtzQkFBeEMsV0FBVzt1QkFBQyxZQUFZO2dCQUdyQixTQUFTO3NCQURaLEtBQUs7Z0JBSW9CLFVBQVU7c0JBQW5DLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBEYXRhdGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vZGF0YXRhYmxlJ1xuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUnXG5pbXBvcnQgeyBUYWJsZUNlbGxUeXBlc0hlbHBlcnNTZXJ2aWNlLCBUQUJMRV9DRUxMX0RBVEEgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuaW1wb3J0IHR5cGUgeyBUYWJsZUNlbGxEYXRhLCBUaGVTZWFtVGFibGVDb2x1bW4gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuXG5pbXBvcnQgeyBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nLCBUYWJsZUNlbGxUeXBlU3RyaW5nQ29uZmlnQWN0aW9uIH0gZnJvbSAnLi90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLWNvbmZpZydcblxuZXhwb3J0IHR5cGUgU3RyaW5nVGVtcGxhdGVUeXBlID0gJ2RlZmF1bHQnIHwgJ2xpbmsnIHwgJ2xpbmstZXh0ZXJuYWwnIHwgJ2xpbmstZW5jcnlwdGVkJyB8ICdidXR0b24nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFibGUtY2VsbC10eXBlLXN0cmluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY2VsbC10eXBlLXN0cmluZy5jb21wb25lbnQuc2NzcyddLFxuICBob3N0OiB7IH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbFR5cGVTdHJpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZSB9XG4gIHNldCB2YWx1ZSh2YWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbFxuICAgIC8vIFRPRE86IFRoaXMgaXMgdGVtcG9yYXJ5IHRvIHRlc3QgdGhlIGZlYXR1cmUgYW5kIHdpbGwgYmUgZml4ZWQgd2hlbiB0aGVcbiAgICAvLyBkeW5hbWljIGNvbHVtbiBkYXRhIGlzIGZpeGVkLiBUaGUgcGxhbiBpcyB0byBhZGQgYSBjb25maWcgdG9nZ2xlIHRvXG4gICAgLy8gYWx3YXlzIGVuYWJsZSBhbmQgZGVwZW5kaW5nIG9uIHBlcmZvcm1hbmNlIGl0IGNvdWxkIHRyeSB0byBkZWNpZGUgb24gaXRzXG4gICAgLy8gb3duIGJhc2VkIG9uIGNvbnRlbnQgc2l6ZS5cbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDMwKSB7XG4gICAgICB0aGlzLmNhblBvcG92ZXIgPSB0cnVlXG4gICAgfVxuICB9XG4gIF92YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpXG4gIGdldCBjb25maWcoKSB7IHJldHVybiB0aGlzLl9jb25maWcgfVxuICBzZXQgY29uZmlnKHZhbHVlOiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX2NvbmZpZyA9IHZhbHVlXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNldENvbmZpZyh2YWx1ZSlcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfY29uZmlnOiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIF90cGxUeXBlOiBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgX2xpbms/OiBzdHJpbmdcbiAgX3RpdGxlPzogc3RyaW5nXG4gIF9xdWVyeVBhcmFtcz86IHsgW2s6IHN0cmluZ106IGFueSB9XG5cbiAgX3N0eWxlPzogc3RyaW5nXG4gIF9jbGFzcz86IHN0cmluZ1xuXG4gIF9idXR0b25BY3Rpb24/OiBUYWJsZUNlbGxUeXBlU3RyaW5nQ29uZmlnQWN0aW9uXG5cbiAgX3RhYmxlQ2VsbERhdGE/OiBUYWJsZUNlbGxEYXRhPCdzdHJpbmcnLCBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nPlxuICBfcm93PzogYW55XG4gIF9yb3dJbmRleD86IG51bWJlclxuICBfY29sRGF0YT86IFRoZVNlYW1UYWJsZUNvbHVtbjwnc3RyaW5nJywgVGFibGVDZWxsVHlwZUNvbmZpZ1N0cmluZz5cblxuICBfZG93bmxvYWQ/OiBib29sZWFuXG4gIF9kZXRlY3RNaW1lQ29udGVudD86IGJvb2xlYW5cblxuICBASW5wdXQoKVxuICBzZXQgdGl0bGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgeyB0aGlzLl90aXRsZSA9IHZhbHVlIH1cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl90aXRsZSB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRpdGxlJykgZ2V0IF90aXRsZUF0dHIoKSB7IHJldHVybiB0aGlzLnRpdGxlIHx8IHRoaXMudmFsdWUgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBzdHlsZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7IHRoaXMuX3N0eWxlID0gdmFsdWUgfVxuICBnZXQgc3R5bGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3N0eWxlIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuc3R5bGUnKSBnZXQgX3N0eWxlQXR0cigpIHsgcmV0dXJuIHRoaXMuc3R5bGUgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjbGFzc0F0dHIodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgeyB0aGlzLl9jbGFzcyA9IHZhbHVlIH1cbiAgZ2V0IGNsYXNzQXR0cigpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fY2xhc3MgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgX2NsYXNzQXR0cigpIHsgcmV0dXJuIHRoaXMuY2xhc3NBdHRyIH1cblxuICBjYW5Qb3BvdmVyID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZGY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlQ2VsbFR5cGVIZWxwZXJzOiBUYWJsZUNlbGxUeXBlc0hlbHBlcnNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RhdGF0YWJsZT86IERhdGF0YWJsZUNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF90YWJsZT86IFRhYmxlQ29tcG9uZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEFCTEVfQ0VMTF9EQVRBKSByZWFkb25seSBfdGFibGVEYXRhPzogVGFibGVDZWxsRGF0YTwnc3RyaW5nJywgVGFibGVDZWxsVHlwZUNvbmZpZ1N0cmluZz5cbiAgKSB7XG4gICAgY29uc3QgX2RhdGEgPSBfdGFibGVEYXRhXG4gICAgdGhpcy5fdGFibGVDZWxsRGF0YSA9IF90YWJsZURhdGFcblxuICAgIHRoaXMuX3JvdyA9IF9kYXRhICYmIF9kYXRhLnJvd1xuICAgIHRoaXMuX3Jvd0luZGV4ID0gX2RhdGEgJiYgX2RhdGEucm93SW5kZXhcblxuICAgIHRoaXMudmFsdWUgPSBfZGF0YSAmJiBfZGF0YS52YWx1ZVxuICAgIHRoaXMuX2NvbERhdGEgPSBfZGF0YSAmJiBfZGF0YS5jb2xEYXRhXG4gICAgaWYgKF9kYXRhICYmIF9kYXRhLmNvbERhdGEgJiYgKF9kYXRhLmNvbERhdGEgYXMgYW55KS5jZWxsVHlwZUNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSAoX2RhdGEuY29sRGF0YSBhcyBhbnkpLmNlbGxUeXBlQ29uZmlnXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgX2RhdGEgPSB0aGlzLl90YWJsZURhdGFcbiAgICBpZiAoX2RhdGEpIHtcbiAgICAgIF9kYXRhLmNoYW5nZWRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodi5jaGFuZ2VzLCAndmFsdWUnKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHYuY2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWVcbiAgICAgICAgICAgIHRoaXMuX2NkZi5tYXJrRm9yQ2hlY2soKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodi5jaGFuZ2VzLCAnY29sRGF0YScpKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xEYXRhID0gdi5jaGFuZ2VzLmNvbERhdGEuY3VycmVudFZhbHVlXG4gICAgICAgICAgICBpZiAoY29sRGF0YSAmJiBjb2xEYXRhLmNlbGxUeXBlQ29uZmlnICE9PSB0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbERhdGEuY2VsbFR5cGVDb25maWdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnID0gdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2LmNoYW5nZXMsICdyb3cnKSkge1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ25cbiAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZ1xuICAgICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb24oY29uZmlnQWN0aW9uPzogVGFibGVDZWxsVHlwZVN0cmluZ0NvbmZpZ0FjdGlvbikge1xuICAgIGxldCBuZXdUcGxUeXBlOiBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgICBsZXQgbGluazogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgbGV0IGRvd25sb2FkID0gZmFsc2VcbiAgICBsZXQgZGV0ZWN0TWltZUNvbnRlbnQgPSBmYWxzZVxuICAgIGxldCBxdWVyeVBhcmFtczogeyBbazogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWRcblxuICAgIGlmIChjb25maWdBY3Rpb24pIHtcbiAgICAgIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgIGxpbmsgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5saW5rKVxuICAgICAgICBpZiAobGluayAhPT0gdW5kZWZpbmVkICYmIGxpbmsgIT09IG51bGwpIHtcbiAgICAgICAgICBuZXdUcGxUeXBlID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uYXNzZXQpID8gJ2xpbmstZW5jcnlwdGVkJyA6ICdsaW5rJ1xuICAgICAgICAgIGRvd25sb2FkID0gISF0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5kb3dubG9hZClcbiAgICAgICAgICBkZXRlY3RNaW1lQ29udGVudCA9ICEhdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uZGV0ZWN0TWltZUNvbnRlbnQpXG4gICAgICAgICAgcXVlcnlQYXJhbXMgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5xdWVyeVBhcmFtcylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ21vZGFsJykge1xuICAgICAgICBuZXdUcGxUeXBlID0gJ2J1dHRvbidcbiAgICAgICAgdGhpcy5fYnV0dG9uQWN0aW9uID0gY29uZmlnQWN0aW9uXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdHBsVHlwZSA9IG5ld1RwbFR5cGVcbiAgICB0aGlzLl9saW5rID0gbGlua1xuICAgIHRoaXMuX2Rvd25sb2FkID0gZG93bmxvYWRcbiAgICB0aGlzLl9kZXRlY3RNaW1lQ29udGVudCA9IGRldGVjdE1pbWVDb250ZW50XG4gICAgdGhpcy5fcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtc1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhjb25maWc/OiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFjb25maWcpIHsgcmV0dXJuIH1cblxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWcudGl0bGVBdHRyKVxuICAgIGlmICh0aXRsZSkge1xuICAgICAgdGhpcy50aXRsZSA9IHRpdGxlXG4gICAgfVxuXG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZy5zdHlsZUF0dHIpXG4gICAgaWYgKHN0eWxlKSB7XG4gICAgICB0aGlzLnN0eWxlID0gc3R5bGVcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc0F0dHIgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZy5jbGFzc0F0dHIpXG4gICAgaWYgKGNsYXNzQXR0cikge1xuICAgICAgdGhpcy5jbGFzc0F0dHIgPSBjbGFzc0F0dHJcbiAgICB9XG5cbiAgICB0aGlzLnNldEFjdGlvbihjb25maWcuYWN0aW9uKVxuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VDb25maWdWYWx1ZSh2YWw6IGFueSkge1xuICAgIGNvbnN0IGNvbnRleHRGbiA9ICgpID0+IHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLmdldFZhbHVlQ29udGV4dCh2YWwsIHRoaXMuX3RhYmxlQ2VsbERhdGEpXG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLnBhcnNlVmFsdWVQcm9wKHZhbCwgY29udGV4dEZuKVxuICB9XG5cbiAgX2RvQnV0dG9uQWN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9idXR0b25BY3Rpb24gJiYgdGhpcy5fYnV0dG9uQWN0aW9uLnR5cGUgPT09ICdtb2RhbCcpIHtcbiAgICAgIGNvbnN0IGNvbnRleHRGbiA9ICgpID0+IHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLmdldFZhbHVlQ29udGV4dCh0aGlzLnZhbHVlLCB0aGlzLl90YWJsZUNlbGxEYXRhKVxuICAgICAgdGhpcy5fdGFibGVDZWxsVHlwZUhlbHBlcnMuaGFuZGxlTW9kYWxBY3Rpb24odGhpcy5fYnV0dG9uQWN0aW9uLCBjb250ZXh0Rm4pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgciA9PiB7fSxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGVyciA9PiBjb25zb2xlLmVycm9yKGVyciksXG4gICAgICAgICAgKCkgPT4gdGhpcy5fYWN0aW9uUmVmcmVzaFJlcXVlc3QoKVxuICAgICAgICApXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYWN0aW9uUmVmcmVzaFJlcXVlc3QoKSB7XG4gICAgaWYgKHRoaXMuX2RhdGF0YWJsZSkge1xuICAgICAgdGhpcy5fZGF0YXRhYmxlLnRyaWdnZXJBY3Rpb25SZWZyZXNoUmVxdWVzdCgpXG4gICAgfSBlbHNlIGlmICh0aGlzLl90YWJsZSkge1xuICAgICAgdGhpcy5fdGFibGUudHJpZ2dlckFjdGlvblJlZnJlc2hSZXF1ZXN0KClcbiAgICB9XG4gIH1cblxufVxuIiwiPG5nLXRlbXBsYXRlICNwb3BvdmVyVHBsPlxuICB7eyB2YWx1ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub1BvcG92ZXI+XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAge3sgdmFsdWUgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIV90cGxUeXBlIHx8IF90cGxUeXBlID09PSAnZGVmYXVsdCdcIj5cbiAgPGRpdiAqbmdJZj1cImNhblBvcG92ZXI7IGVsc2Ugbm9Qb3BvdmVyXCIgW3NlYW1Qb3BvdmVyXT1cInBvcG92ZXJUcGxcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9Qb3BvdmVyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuXG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2xpbmsnXCI+XG4gIDxhIGNsYXNzPVwiZC1ibG9jayB0ZXh0LWJvZHkgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIlxuICAgIFtyb3V0ZXJMaW5rXT1cIl9saW5rXCJcbiAgICBbcXVlcnlQYXJhbXNdPVwiX3F1ZXJ5UGFyYW1zXCJcbiAgICBbYXR0ci50aXRsZV09XCJfdGl0bGVcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9Qb3BvdmVyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9hPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2xpbmstZXh0ZXJuYWwnXCI+XG4gIDxhIGNsYXNzPVwiZC1ibG9jayB0ZXh0LWJvZHkgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIlxuICAgIFthdHRyLmhyZWZdPVwiX2xpbmtcIlxuICAgIFthdHRyLnRpdGxlXT1cIl90aXRsZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1BvcG92ZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L2E+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIl90cGxUeXBlID09PSAnbGluay1lbmNyeXB0ZWQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTAgZC1ibG9jayB0ZXh0LWJvZHkgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtzZWFtRW5jcnlwdGVkQXNzZXRMaW5rXT1cIl9saW5rXCJcbiAgICBbc2VhbURldGVjdE1pbWVGcm9tQ29udGVudF09XCJfZGV0ZWN0TWltZUNvbnRlbnRcIlxuICAgIFtzZWFtRG93bmxvYWRBc3NldF09XCJfZG93bmxvYWRcIlxuICAgIFthdHRyLnRpdGxlXT1cIl90aXRsZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1BvcG92ZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiX3RwbFR5cGUgPT09ICdidXR0b24nXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTAgZC1ibG9jayB0ZXh0LWJvZHkgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFthdHRyLnRpdGxlXT1cIl90aXRsZVwiXG4gICAgKGNsaWNrKT1cIl9kb0J1dHRvbkFjdGlvbigpXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vUG9wb3ZlclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG5cbiJdfQ==
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC10eXBlLXN0cmluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdGFibGUtY2VsbC10eXBlcy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nL3RhYmxlLWNlbGwtdHlwZS1zdHJpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLXN0cmluZy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUkxQyxPQUFPLEVBQWdDLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFBOzs7Ozs7Ozs7QUFjbEcsTUFBTSxPQUFPLDRCQUE0QjtJQUl2QyxJQUNJLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBQ2xDLElBQUksS0FBSyxDQUFDLEdBQThCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFBO1FBQ2pCLHlFQUF5RTtRQUN6RSxzRUFBc0U7UUFDdEUsMkVBQTJFO1FBQzNFLDZCQUE2QjtRQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1NBQ3ZCO0lBQ0gsQ0FBQztJQUdELElBQ0ksTUFBTSxLQUFL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ZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBEYXRhdGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vZGF0YXRhYmxlJ1xuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUnXG5pbXBvcnQgeyBUYWJsZUNlbGxUeXBlc0hlbHBlcnNTZXJ2aWNlLCBUQUJMRV9DRUxMX0RBVEEgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuaW1wb3J0IHR5cGUgeyBUYWJsZUNlbGxEYXRhLCBUaGVTZWFtVGFibGVDb2x1bW4gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuXG5pbXBvcnQgeyBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nLCBUYWJsZUNlbGxUeXBlU3RyaW5nQ29uZmlnQWN0aW9uIH0gZnJvbSAnLi90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLWNvbmZpZydcblxuZXhwb3J0IHR5cGUgU3RyaW5nVGVtcGxhdGVUeXBlID0gJ2RlZmF1bHQnIHwgJ2xpbmsnIHwgJ2xpbmstZXh0ZXJuYWwnIHwgJ2xpbmstZW5jcnlwdGVkJyB8ICdidXR0b24nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFibGUtY2VsbC10eXBlLXN0cmluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY2VsbC10eXBlLXN0cmluZy5jb21wb25lbnQuc2NzcyddLFxuICBob3N0OiB7IH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbFR5cGVTdHJpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZSB9XG4gIHNldCB2YWx1ZSh2YWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbFxuICAgIC8vIFRPRE86IFRoaXMgaXMgdGVtcG9yYXJ5IHRvIHRlc3QgdGhlIGZlYXR1cmUgYW5kIHdpbGwgYmUgZml4ZWQgd2hlbiB0aGVcbiAgICAvLyBkeW5hbWljIGNvbHVtbiBkYXRhIGlzIGZpeGVkLiBUaGUgcGxhbiBpcyB0byBhZGQgYSBjb25maWcgdG9nZ2xlIHRvXG4gICAgLy8gYWx3YXlzIGVuYWJsZSBhbmQgZGVwZW5kaW5nIG9uIHBlcmZvcm1hbmNlIGl0IGNvdWxkIHRyeSB0byBkZWNpZGUgb24gaXRzXG4gICAgLy8gb3duIGJhc2VkIG9uIGNvbnRlbnQgc2l6ZS5cbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDMwKSB7XG4gICAgICB0aGlzLmNhblBvcG92ZXIgPSB0cnVlXG4gICAgfVxuICB9XG4gIF92YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpXG4gIGdldCBjb25maWcoKSB7IHJldHVybiB0aGlzLl9jb25maWcgfVxuICBzZXQgY29uZmlnKHZhbHVlOiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX2NvbmZpZyA9IHZhbHVlXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNldENvbmZpZyh2YWx1ZSlcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfY29uZmlnOiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIF90cGxUeXBlOiBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgX2xpbms/OiBzdHJpbmdcbiAgX3RpdGxlPzogc3RyaW5nXG4gIF9xdWVyeVBhcmFtcz86IHsgW2s6IHN0cmluZ106IGFueSB9XG5cbiAgX3N0eWxlPzogc3RyaW5nXG4gIF9jbGFzcz86IHN0cmluZ1xuXG4gIF9idXR0b25BY3Rpb24/OiBUYWJsZUNlbGxUeXBlU3RyaW5nQ29uZmlnQWN0aW9uXG5cbiAgX3RhYmxlQ2VsbERhdGE/OiBUYWJsZUNlbGxEYXRhPCdzdHJpbmcnLCBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nPlxuICBfcm93PzogYW55XG4gIF9yb3dJbmRleD86IG51bWJlclxuICBfY29sRGF0YT86IFRoZVNlYW1UYWJsZUNvbHVtbjwnc3RyaW5nJywgVGFibGVDZWxsVHlwZUNvbmZpZ1N0cmluZz5cblxuICBfZG93bmxvYWQ/OiBib29sZWFuXG4gIF9kZXRlY3RNaW1lQ29udGVudD86IGJvb2xlYW5cblxuICBASW5wdXQoKVxuICBzZXQgdGl0bGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgeyB0aGlzLl90aXRsZSA9IHZhbHVlIH1cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl90aXRsZSB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRpdGxlJykgZ2V0IF90aXRsZUF0dHIoKSB7IHJldHVybiB0aGlzLnRpdGxlIHx8IHRoaXMudmFsdWUgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBzdHlsZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7IHRoaXMuX3N0eWxlID0gdmFsdWUgfVxuICBnZXQgc3R5bGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3N0eWxlIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuc3R5bGUnKSBnZXQgX3N0eWxlQXR0cigpIHsgcmV0dXJuIHRoaXMuc3R5bGUgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjbGFzc0F0dHIodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgeyB0aGlzLl9jbGFzcyA9IHZhbHVlIH1cbiAgZ2V0IGNsYXNzQXR0cigpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fY2xhc3MgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgX2NsYXNzQXR0cigpIHsgcmV0dXJuIHRoaXMuY2xhc3NBdHRyIH1cblxuICBjYW5Qb3BvdmVyID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZGY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlQ2VsbFR5cGVIZWxwZXJzOiBUYWJsZUNlbGxUeXBlc0hlbHBlcnNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RhdGF0YWJsZT86IERhdGF0YWJsZUNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF90YWJsZT86IFRhYmxlQ29tcG9uZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEFCTEVfQ0VMTF9EQVRBKSByZWFkb25seSBfdGFibGVEYXRhPzogVGFibGVDZWxsRGF0YTwnc3RyaW5nJywgVGFibGVDZWxsVHlwZUNvbmZpZ1N0cmluZz5cbiAgKSB7XG4gICAgY29uc3QgX2RhdGEgPSBfdGFibGVEYXRhXG4gICAgdGhpcy5fdGFibGVDZWxsRGF0YSA9IF90YWJsZURhdGFcblxuICAgIHRoaXMuX3JvdyA9IF9kYXRhICYmIF9kYXRhLnJvd1xuICAgIHRoaXMuX3Jvd0luZGV4ID0gX2RhdGEgJiYgX2RhdGEucm93SW5kZXhcblxuICAgIHRoaXMudmFsdWUgPSBfZGF0YSAmJiBfZGF0YS52YWx1ZVxuICAgIHRoaXMuX2NvbERhdGEgPSBfZGF0YSAmJiBfZGF0YS5jb2xEYXRhXG4gICAgaWYgKF9kYXRhICYmIF9kYXRhLmNvbERhdGEgJiYgKF9kYXRhLmNvbERhdGEgYXMgYW55KS5jZWxsVHlwZUNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSAoX2RhdGEuY29sRGF0YSBhcyBhbnkpLmNlbGxUeXBlQ29uZmlnXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgX2RhdGEgPSB0aGlzLl90YWJsZURhdGFcbiAgICBpZiAoX2RhdGEpIHtcbiAgICAgIF9kYXRhLmNoYW5nZWRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodi5jaGFuZ2VzLCAndmFsdWUnKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHYuY2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWVcbiAgICAgICAgICAgIHRoaXMuX2NkZi5tYXJrRm9yQ2hlY2soKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodi5jaGFuZ2VzLCAnY29sRGF0YScpKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xEYXRhID0gdi5jaGFuZ2VzLmNvbERhdGEuY3VycmVudFZhbHVlXG4gICAgICAgICAgICBpZiAoY29sRGF0YSAmJiBjb2xEYXRhLmNlbGxUeXBlQ29uZmlnICE9PSB0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbERhdGEuY2VsbFR5cGVDb25maWdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnID0gdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2LmNoYW5nZXMsICdyb3cnKSkge1xuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ25cbiAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZ1xuICAgICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb24oY29uZmlnQWN0aW9uPzogVGFibGVDZWxsVHlwZVN0cmluZ0NvbmZpZ0FjdGlvbikge1xuICAgIGxldCBuZXdUcGxUeXBlOiBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgICBsZXQgbGluazogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgbGV0IGRvd25sb2FkID0gZmFsc2VcbiAgICBsZXQgZGV0ZWN0TWltZUNvbnRlbnQgPSBmYWxzZVxuICAgIGxldCBxdWVyeVBhcmFtczogeyBbazogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWRcblxuICAgIGlmIChjb25maWdBY3Rpb24pIHtcbiAgICAgIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgIGxpbmsgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5saW5rKVxuICAgICAgICBpZiAobGluayAhPT0gdW5kZWZpbmVkICYmIGxpbmsgIT09IG51bGwpIHtcbiAgICAgICAgICBuZXdUcGxUeXBlID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uYXNzZXQpXG4gICAgICAgICAgICA/ICdsaW5rLWVuY3J5cHRlZCdcbiAgICAgICAgICAgIDogdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uZXh0ZXJuYWwpID8gJ2xpbmstZXh0ZXJuYWwnIDogJ2xpbmsnXG4gICAgICAgICAgZG93bmxvYWQgPSAhIXRoaXMuX3BhcnNlQ29uZmlnVmFsdWUoY29uZmlnQWN0aW9uLmRvd25sb2FkKVxuICAgICAgICAgIGRldGVjdE1pbWVDb250ZW50ID0gISF0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5kZXRlY3RNaW1lQ29udGVudClcbiAgICAgICAgICBxdWVyeVBhcmFtcyA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUoY29uZmlnQWN0aW9uLnF1ZXJ5UGFyYW1zKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNvbmZpZ0FjdGlvbi50eXBlID09PSAnbW9kYWwnKSB7XG4gICAgICAgIG5ld1RwbFR5cGUgPSAnYnV0dG9uJ1xuICAgICAgICB0aGlzLl9idXR0b25BY3Rpb24gPSBjb25maWdBY3Rpb25cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl90cGxUeXBlID0gbmV3VHBsVHlwZVxuICAgIHRoaXMuX2xpbmsgPSBsaW5rXG4gICAgdGhpcy5fZG93bmxvYWQgPSBkb3dubG9hZFxuICAgIHRoaXMuX2RldGVjdE1pbWVDb250ZW50ID0gZGV0ZWN0TWltZUNvbnRlbnRcbiAgICB0aGlzLl9xdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zXG4gIH1cblxuICBwdWJsaWMgc2V0Q29uZmlnKGNvbmZpZz86IFRhYmxlQ2VsbFR5cGVDb25maWdTdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWNvbmZpZykgeyByZXR1cm4gfVxuXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZy50aXRsZUF0dHIpXG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICB0aGlzLnRpdGxlID0gdGl0bGVcbiAgICB9XG5cbiAgICBjb25zdCBzdHlsZSA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUoY29uZmlnLnN0eWxlQXR0cilcbiAgICBpZiAoc3R5bGUpIHtcbiAgICAgIHRoaXMuc3R5bGUgPSBzdHlsZVxuICAgIH1cblxuICAgIGNvbnN0IGNsYXNzQXR0ciA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUoY29uZmlnLmNsYXNzQXR0cilcbiAgICBpZiAoY2xhc3NBdHRyKSB7XG4gICAgICB0aGlzLmNsYXNzQXR0ciA9IGNsYXNzQXR0clxuICAgIH1cblxuICAgIHRoaXMuc2V0QWN0aW9uKGNvbmZpZy5hY3Rpb24pXG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUNvbmZpZ1ZhbHVlKHZhbDogYW55KSB7XG4gICAgY29uc3QgY29udGV4dEZuID0gKCkgPT4gdGhpcy5fdGFibGVDZWxsVHlwZUhlbHBlcnMuZ2V0VmFsdWVDb250ZXh0KHZhbCwgdGhpcy5fdGFibGVDZWxsRGF0YSlcbiAgICByZXR1cm4gdGhpcy5fdGFibGVDZWxsVHlwZUhlbHBlcnMucGFyc2VWYWx1ZVByb3AodmFsLCBjb250ZXh0Rm4pXG4gIH1cblxuICBfZG9CdXR0b25BY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2J1dHRvbkFjdGlvbiAmJiB0aGlzLl9idXR0b25BY3Rpb24udHlwZSA9PT0gJ21vZGFsJykge1xuICAgICAgY29uc3QgY29udGV4dEZuID0gKCkgPT4gdGhpcy5fdGFibGVDZWxsVHlwZUhlbHBlcnMuZ2V0VmFsdWVDb250ZXh0KHRoaXMudmFsdWUsIHRoaXMuX3RhYmxlQ2VsbERhdGEpXG4gICAgICB0aGlzLl90YWJsZUNlbGxUeXBlSGVscGVycy5oYW5kbGVNb2RhbEFjdGlvbih0aGlzLl9idXR0b25BY3Rpb24sIGNvbnRleHRGbilcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICByID0+IHt9LFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSxcbiAgICAgICAgICAoKSA9PiB0aGlzLl9hY3Rpb25SZWZyZXNoUmVxdWVzdCgpXG4gICAgICAgIClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hY3Rpb25SZWZyZXNoUmVxdWVzdCgpIHtcbiAgICBpZiAodGhpcy5fZGF0YXRhYmxlKSB7XG4gICAgICB0aGlzLl9kYXRhdGFibGUudHJpZ2dlckFjdGlvblJlZnJlc2hSZXF1ZXN0KClcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3RhYmxlKSB7XG4gICAgICB0aGlzLl90YWJsZS50cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKVxuICAgIH1cbiAgfVxuXG59XG4iLCI8bmctdGVtcGxhdGUgI3BvcG92ZXJUcGw+XG4gIHt7IHZhbHVlIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vUG9wb3Zlcj5cbiAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICB7eyB2YWx1ZSB9fVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhX3RwbFR5cGUgfHwgX3RwbFR5cGUgPT09ICdkZWZhdWx0J1wiPlxuICA8ZGl2ICpuZ0lmPVwiY2FuUG9wb3ZlcjsgZWxzZSBub1BvcG92ZXJcIiBbc2VhbVBvcG92ZXJdPVwicG9wb3ZlclRwbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1BvcG92ZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIl90cGxUeXBlID09PSAnbGluaydcIj5cbiAgPGEgY2xhc3M9XCJkLWJsb2NrIHRleHQtYm9keSB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgW3JvdXRlckxpbmtdPVwiX2xpbmtcIlxuICAgIFtxdWVyeVBhcmFtc109XCJfcXVlcnlQYXJhbXNcIlxuICAgIFthdHRyLnRpdGxlXT1cIl90aXRsZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1BvcG92ZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L2E+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIl90cGxUeXBlID09PSAnbGluay1leHRlcm5hbCdcIj5cbiAgPGEgY2xhc3M9XCJkLWJsb2NrIHRleHQtYm9keSB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgW2F0dHIuaHJlZl09XCJfbGlua1wiXG4gICAgW2F0dHIudGl0bGVdPVwiX3RpdGxlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vUG9wb3ZlclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiX3RwbFR5cGUgPT09ICdsaW5rLWVuY3J5cHRlZCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBkLWJsb2NrIHRleHQtYm9keSB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW3NlYW1FbmNyeXB0ZWRBc3NldExpbmtdPVwiX2xpbmtcIlxuICAgIFtzZWFtRGV0ZWN0TWltZUZyb21Db250ZW50XT1cIl9kZXRlY3RNaW1lQ29udGVudFwiXG4gICAgW3NlYW1Eb3dubG9hZEFzc2V0XT1cIl9kb3dubG9hZFwiXG4gICAgW2F0dHIudGl0bGVdPVwiX3RpdGxlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vUG9wb3ZlclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2J1dHRvbidcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBkLWJsb2NrIHRleHQtYm9keSB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgW2F0dHIudGl0bGVdPVwiX3RpdGxlXCJcbiAgICAoY2xpY2spPVwiX2RvQnV0dG9uQWN0aW9uKClcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9Qb3BvdmVyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9idXR0b24+XG48L25nLWNvbnRhaW5lcj5cblxuIl19
@@ -41,4 +41,4 @@ function isFeatureCollectionValue(value) {
41
41
  }
42
42
  return value.type === 'FeatureCollection' && Array.isArray(value.features);
43
43
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlLWZlYXR1cmUtY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi91dGlscy9nZW8tanNvbi9jb2VyY2UtZmVhdHVyZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGlFQUFpRTtBQUNqRSxNQUFNLFVBQVUsdUJBQXVCLENBQUMsS0FBVTtJQUNoRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUMxQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxVQUFVLENBQUMsS0FBVTtJQUM1QixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QyxJQUFJLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3BDLE9BQU8sTUFBTSxDQUFBO0tBQ2Q7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLEtBQVU7SUFDbEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsSUFBSTtZQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUN6QjtRQUFDLE1BQU07WUFDTixPQUFPLElBQUksQ0FBQTtTQUNaO0tBQ0Y7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLHdCQUF3QixDQUFDLEtBQVU7SUFDMUMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDekMsT0FBTyxLQUFLLENBQUE7S0FDYjtJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBbUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICdnZW9qc29uJ1xuXG4vLyBUT0RPOiBNYWtlIHRoaXMgbW9yZSB0aG9yb3VnaCBhbmQgbWF5YmUgZXJyb3Igb24gdW5yZWNvZ25pemVkLlxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUZlYXR1cmVDb2xsZWN0aW9uKHZhbHVlOiBhbnkpOiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwge1xuICByZXR1cm4gcGFyc2VWYWx1ZSh2YWx1ZSlcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIHZhbHVlIHRvIGEgRmVhdHVyZUNvbGxlY3Rpb24gb2JqZWN0IG9yIG51bGwgaWYgaXQgaXMgbm90IGFcbiAqIEZlYXR1cmVDb2xsZWN0aW9uLlxuICovXG5mdW5jdGlvbiBwYXJzZVZhbHVlKHZhbHVlOiBhbnkpOiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwge1xuICBjb25zdCBfdmFsdWUgPSBwYXJzZVN0cmluZ1ZhbHVlKHZhbHVlKVxuICBpZiAoaXNGZWF0dXJlQ29sbGVjdGlvblZhbHVlKF92YWx1ZSkpIHtcbiAgICByZXR1cm4gX3ZhbHVlXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBUcmllcyB0byBwYXJzZSB0aGUgdmFsdWUgdG8gYW4gb2JqZWN0LCBpbiBjYXNlIHRoZSB2YWx1ZSBpcyBhIHN0cmluZ2lmaWVkXG4gKiBqc29uLlxuICovXG5mdW5jdGlvbiBwYXJzZVN0cmluZ1ZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBhIEZlYXR1cmVDb2xsZWN0aW9uLlxuICpcbiAqIE5PVEU6IFRoaXMgaXMgbm90IGEgdGhvcm91Z2ggRmVhdHVyZUNvbGxlY3Rpb24gY2hlY2suIEl0IG9ubHkgY2hlY2tzIHRoYXQgdGhlXG4gKiB2YWx1ZSBpcyBhbiBvYmplY3QgcmVzZW1ibGluZyBhIEdlb0pTT04uRmVhdHVyZUNvbGxlY3Rpb24sIGVub3VnaCBmb3IgdGhlXG4gKiB2YWxpZGF0b3IuXG4gKi9cbmZ1bmN0aW9uIGlzRmVhdHVyZUNvbGxlY3Rpb25WYWx1ZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgRmVhdHVyZUNvbGxlY3Rpb24ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB2YWx1ZS50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nICYmIEFycmF5LmlzQXJyYXkodmFsdWUuZmVhdHVyZXMpXG59XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlLWZlYXR1cmUtY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi91dGlscy9nZW8tanNvbi9jb2VyY2UtZmVhdHVyZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGlFQUFpRTtBQUNqRSxNQUFNLFVBQVUsdUJBQXVCLENBQUMsS0FBVTtJQUNoRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUMxQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxVQUFVLENBQUMsS0FBVTtJQUM1QixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN0QyxJQUFJLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3BDLE9BQU8sTUFBTSxDQUFBO0tBQ2Q7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLEtBQVU7SUFDbEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsSUFBSTtZQUNGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUN6QjtRQUFDLE1BQU07WUFDTixPQUFPLElBQUksQ0FBQTtTQUNaO0tBQ0Y7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLHdCQUF3QixDQUFDLEtBQVU7SUFDMUMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDekMsT0FBTyxLQUFLLENBQUE7S0FDYjtJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBbUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUM1RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICdnZW9qc29uJ1xyXG5cclxuLy8gVE9ETzogTWFrZSB0aGlzIG1vcmUgdGhvcm91Z2ggYW5kIG1heWJlIGVycm9yIG9uIHVucmVjb2duaXplZC5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUZlYXR1cmVDb2xsZWN0aW9uKHZhbHVlOiBhbnkpOiBGZWF0dXJlQ29sbGVjdGlvbiB8IG51bGwge1xyXG4gIHJldHVybiBwYXJzZVZhbHVlKHZhbHVlKVxyXG59XHJcblxyXG4vKipcclxuICogUGFyc2VzIHRoZSB2YWx1ZSB0byBhIEZlYXR1cmVDb2xsZWN0aW9uIG9iamVjdCBvciBudWxsIGlmIGl0IGlzIG5vdCBhXHJcbiAqIEZlYXR1cmVDb2xsZWN0aW9uLlxyXG4gKi9cclxuZnVuY3Rpb24gcGFyc2VWYWx1ZSh2YWx1ZTogYW55KTogRmVhdHVyZUNvbGxlY3Rpb24gfCBudWxsIHtcclxuICBjb25zdCBfdmFsdWUgPSBwYXJzZVN0cmluZ1ZhbHVlKHZhbHVlKVxyXG4gIGlmIChpc0ZlYXR1cmVDb2xsZWN0aW9uVmFsdWUoX3ZhbHVlKSkge1xyXG4gICAgcmV0dXJuIF92YWx1ZVxyXG4gIH1cclxuICByZXR1cm4gbnVsbFxyXG59XHJcblxyXG4vKipcclxuICogVHJpZXMgdG8gcGFyc2UgdGhlIHZhbHVlIHRvIGFuIG9iamVjdCwgaW4gY2FzZSB0aGUgdmFsdWUgaXMgYSBzdHJpbmdpZmllZFxyXG4gKiBqc29uLlxyXG4gKi9cclxuZnVuY3Rpb24gcGFyc2VTdHJpbmdWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcclxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpXHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIG51bGxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB2YWx1ZVxyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBhIEZlYXR1cmVDb2xsZWN0aW9uLlxyXG4gKlxyXG4gKiBOT1RFOiBUaGlzIGlzIG5vdCBhIHRob3JvdWdoIEZlYXR1cmVDb2xsZWN0aW9uIGNoZWNrLiBJdCBvbmx5IGNoZWNrcyB0aGF0IHRoZVxyXG4gKiB2YWx1ZSBpcyBhbiBvYmplY3QgcmVzZW1ibGluZyBhIEdlb0pTT04uRmVhdHVyZUNvbGxlY3Rpb24sIGVub3VnaCBmb3IgdGhlXHJcbiAqIHZhbGlkYXRvci5cclxuICovXHJcbmZ1bmN0aW9uIGlzRmVhdHVyZUNvbGxlY3Rpb25WYWx1ZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgRmVhdHVyZUNvbGxlY3Rpb24ge1xyXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbiAgcmV0dXJuIHZhbHVlLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZS5mZWF0dXJlcylcclxufVxyXG4iXX0=
@@ -18,4 +18,4 @@ export function isFeatureCollectionValidator() {
18
18
  return null;
19
19
  };
20
20
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZmVhdHVyZS1jb2xsZWN0aW9uLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi91dGlscy9nZW8tanNvbi9pcy1mZWF0dXJlLWNvbGxlY3Rpb24udmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLHVCQUF1QixDQUFBO0FBRTNFLE1BQU0sVUFBVSw0QkFBNEI7SUFDMUMsT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtRQUNsQyxxRkFBcUY7UUFDckYsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxJQUFJLENBQUEsQ0FBQyx5REFBeUQ7U0FDdEU7UUFFRCxNQUFNLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFcEQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ2xCLE9BQU87Z0JBQ0wsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFO29CQUN0QyxNQUFNLEVBQUUsOEJBQThCO2lCQUN2QzthQUNGLENBQUE7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3JtcydcblxuaW1wb3J0IHsgaXNFbXB0eUlucHV0VmFsdWUgfSBmcm9tICcuLi9mb3JtL2lzLWVtcHR5LWlucHV0LXZhbHVlJ1xuaW1wb3J0IHsgY29lcmNlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2NvZXJjZS1mZWF0dXJlLWNvbGxlY3Rpb24nXG5cbmV4cG9ydCBjb25zdCBJU19GRUFUVVJFX0NPTExFQ1RJT05fVkFMSURBVE9SX05BTUUgPSAnaXMtZmVhdHVyZS1jb2xsZWN0aW9uJ1xuXG5leHBvcnQgZnVuY3Rpb24gaXNGZWF0dXJlQ29sbGVjdGlvblZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgLy8gRG9uJ3QgbmVlZCB0byB2YWxpZGF0ZSBpZiB0aGVyZSBpc24ndCBhIHZhbHVlLiBVc2UgYFZhbGlkYXRvcnMucmVxdWlyZWRgIGZvciB0aGF0LlxuICAgIGlmIChpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGwgLy8gZG9uJ3QgdmFsaWRhdGUgZW1wdHkgdmFsdWVzIHRvIGFsbG93IG9wdGlvbmFsIGNvbnRyb2xzXG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBjb2VyY2VGZWF0dXJlQ29sbGVjdGlvbihjb250cm9sLnZhbHVlKVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbSVNfRkVBVFVSRV9DT0xMRUNUSU9OX1ZBTElEQVRPUl9OQU1FXToge1xuICAgICAgICAgIHJlYXNvbjogYE11c3QgYmUgYSBGZWF0dXJlQ29sbGVjdGlvbi5gLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZmVhdHVyZS1jb2xsZWN0aW9uLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi91dGlscy9nZW8tanNvbi9pcy1mZWF0dXJlLWNvbGxlY3Rpb24udmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLHVCQUF1QixDQUFBO0FBRTNFLE1BQU0sVUFBVSw0QkFBNEI7SUFDMUMsT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtRQUNsQyxxRkFBcUY7UUFDckYsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxJQUFJLENBQUEsQ0FBQyx5REFBeUQ7U0FDdEU7UUFFRCxNQUFNLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFcEQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ2xCLE9BQU87Z0JBQ0wsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFO29CQUN0QyxNQUFNLEVBQUUsOEJBQThCO2lCQUN2QzthQUNGLENBQUE7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3JtcydcclxuXHJcbmltcG9ydCB7IGlzRW1wdHlJbnB1dFZhbHVlIH0gZnJvbSAnLi4vZm9ybS9pcy1lbXB0eS1pbnB1dC12YWx1ZSdcclxuaW1wb3J0IHsgY29lcmNlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2NvZXJjZS1mZWF0dXJlLWNvbGxlY3Rpb24nXHJcblxyXG5leHBvcnQgY29uc3QgSVNfRkVBVFVSRV9DT0xMRUNUSU9OX1ZBTElEQVRPUl9OQU1FID0gJ2lzLWZlYXR1cmUtY29sbGVjdGlvbidcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0ZlYXR1cmVDb2xsZWN0aW9uVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcclxuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgLy8gRG9uJ3QgbmVlZCB0byB2YWxpZGF0ZSBpZiB0aGVyZSBpc24ndCBhIHZhbHVlLiBVc2UgYFZhbGlkYXRvcnMucmVxdWlyZWRgIGZvciB0aGF0LlxyXG4gICAgaWYgKGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsIC8vIGRvbid0IHZhbGlkYXRlIGVtcHR5IHZhbHVlcyB0byBhbGxvdyBvcHRpb25hbCBjb250cm9sc1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZhbHVlID0gY29lcmNlRmVhdHVyZUNvbGxlY3Rpb24oY29udHJvbC52YWx1ZSlcclxuXHJcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBbSVNfRkVBVFVSRV9DT0xMRUNUSU9OX1ZBTElEQVRPUl9OQU1FXToge1xyXG4gICAgICAgICAgcmVhc29uOiBgTXVzdCBiZSBhIEZlYXR1cmVDb2xsZWN0aW9uLmAsXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGxcclxuICB9XHJcbn1cclxuIl19
@@ -20,4 +20,4 @@ export function isOnlyGeometryTypes(featureCollection, types) {
20
20
  }
21
21
  return true;
22
22
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtb25seS1nZW9tZXRyeS10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi91dGlscy9nZW8tanNvbi9pcy1vbmx5LWdlb21ldHJ5LXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLGlCQUFvQyxFQUFFLEtBQXlCO0lBQ2pHLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdEIsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QywyRUFBMkU7WUFDM0UsT0FBTyxLQUFLLENBQUE7U0FDYjthQUFNO1lBQ0wsb0VBQW9FO1lBQ3BFLCtDQUErQztZQUMvQyxPQUFPLElBQUksQ0FBQTtTQUNaO0tBQ0Y7SUFFRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtRQUMxQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN6QyxPQUFPLEtBQUssQ0FBQTtTQUNiO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgR2VvbWV0cnkgfSBmcm9tICdnZW9qc29uJ1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgR2VvSlNPTiBpcyBvbmx5IHNwZWNpZmllcyBnZW9tZXRyaWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPbmx5R2VvbWV0cnlUeXBlcyhmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24sIHR5cGVzOiBHZW9tZXRyeVsndHlwZSddW10pOiBib29sZWFuIHtcbiAgaWYgKHR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBJZiBubyB0eXBlcyBhcmUgc3BlY2lmaWVkIHRoZW4gdGhlcmUgY2FuJ3QgYmUgYW55IHNwZWNpZmllZCB0eXBlcyBmb3VuZC5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBubyB0eXBlcyBhcmUgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmUgbm8gZmVhdHVyZXMgdGhlbiB0aGVyZSBpc1xuICAgICAgLy8gbm90aGluZyB0byBzYXkgYSBzcGVjaWZpZWQgdHlwZSBpc24ndCBmb3VuZC5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBmIG9mIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzKSB7XG4gICAgaWYgKHR5cGVzLmluZGV4T2YoZi5nZW9tZXRyeS50eXBlKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtb25seS1nZW9tZXRyeS10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi91dGlscy9nZW8tanNvbi9pcy1vbmx5LWdlb21ldHJ5LXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLGlCQUFvQyxFQUFFLEtBQXlCO0lBQ2pHLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdEIsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QywyRUFBMkU7WUFDM0UsT0FBTyxLQUFLLENBQUE7U0FDYjthQUFNO1lBQ0wsb0VBQW9FO1lBQ3BFLCtDQUErQztZQUMvQyxPQUFPLElBQUksQ0FBQTtTQUNaO0tBQ0Y7SUFFRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtRQUMxQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN6QyxPQUFPLEtBQUssQ0FBQTtTQUNiO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgR2VvbWV0cnkgfSBmcm9tICdnZW9qc29uJ1xyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgR2VvSlNPTiBpcyBvbmx5IHNwZWNpZmllcyBnZW9tZXRyaWVzLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzT25seUdlb21ldHJ5VHlwZXMoZmVhdHVyZUNvbGxlY3Rpb246IEZlYXR1cmVDb2xsZWN0aW9uLCB0eXBlczogR2VvbWV0cnlbJ3R5cGUnXVtdKTogYm9vbGVhbiB7XHJcbiAgaWYgKHR5cGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgaWYgKGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gSWYgbm8gdHlwZXMgYXJlIHNwZWNpZmllZCB0aGVuIHRoZXJlIGNhbid0IGJlIGFueSBzcGVjaWZpZWQgdHlwZXMgZm91bmQuXHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gSWYgbm8gdHlwZXMgYXJlIHNwZWNpZmllZCBhbmQgdGhlcmUgYXJlIG5vIGZlYXR1cmVzIHRoZW4gdGhlcmUgaXNcclxuICAgICAgLy8gbm90aGluZyB0byBzYXkgYSBzcGVjaWZpZWQgdHlwZSBpc24ndCBmb3VuZC5cclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgZiBvZiBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcykge1xyXG4gICAgaWYgKHR5cGVzLmluZGV4T2YoZi5nZW9tZXRyeS50eXBlKSA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdHJ1ZVxyXG59XHJcbiJdfQ==
@@ -32,4 +32,4 @@ export function mergePolygons(featureCollection) {
32
32
  featureCollection.features.push(feature);
33
33
  }
34
34
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtcG9seWdvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdXRpbHMvZ2VvLWpzb24vbWVyZ2UtcG9seWdvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxpQkFBb0M7SUFDaEUsTUFBTSxZQUFZLEdBQWlCO1FBQ2pDLElBQUksRUFBRSxjQUFjO1FBQ3BCLFdBQVcsRUFBRSxFQUFFO0tBQ2hCLENBQUE7SUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMxRCxNQUFNLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDakMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNyRCxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUN2QyxDQUFDLEVBQUUsQ0FBQTtTQUNKO2FBQU0sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUU7WUFDN0MsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3hELGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ3ZDLENBQUMsRUFBRSxDQUFBO1NBQ0o7S0FDRjtJQUVELElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZDLE1BQU0sT0FBTyxHQUFZO1lBQ3ZCLElBQUksRUFBRSxTQUFTO1lBQ2YsUUFBUSxFQUFFLFlBQVk7WUFDdEIsVUFBVSxFQUFFLEVBQUc7U0FDaEIsQ0FBQTtRQUNELGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7S0FDekM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZUNvbGxlY3Rpb24sXG4gIE11bHRpUG9seWdvbixcbn0gZnJvbSAnZ2VvanNvbidcblxuLyoqXG4gKiBNZXJnZSBQb2x5Z29uIGFuZCBNdWx0aVBvbHlnb24gZ2VvbWV0cmllcyBpbnRvIGEgc2luZ2xlIE11bHRpUG9seWdvbi4gQW55XG4gKiBwcm9wZXJ0aWVzLCBvdGhlciB0aGFuICdjb29yZGluYXRlcycsIG9mIHRoZSBQb2x5Z29ucyBhbmQgTXVsdGlQb2x5Z29ucyB3aWxsXG4gKiBiZSBsb3N0LlxuICpcbiAqIE5PVEU6IFBvbHlnb25zIGFuZCBNdWx0UG9seWdvbnMgaW4gYSBHZW9tZXRyeUNvbGxlY3Rpb24gd2lsbCBub3QgYmUgbWVyZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VQb2x5Z29ucyhmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24pOiB2b2lkIHtcbiAgY29uc3QgbXVsdGlQb2x5Z29uOiBNdWx0aVBvbHlnb24gPSB7XG4gICAgdHlwZTogJ011bHRpUG9seWdvbicsXG4gICAgY29vcmRpbmF0ZXM6IFtdLFxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGYgPSBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlc1tpXVxuICAgIGlmIChmLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgbXVsdGlQb2x5Z29uLmNvb3JkaW5hdGVzLnB1c2goZi5nZW9tZXRyeS5jb29yZGluYXRlcylcbiAgICAgIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLnNwbGljZShpLCAxKVxuICAgICAgaS0tXG4gICAgfSBlbHNlIGlmIChmLmdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nKSB7XG4gICAgICBtdWx0aVBvbHlnb24uY29vcmRpbmF0ZXMucHVzaCguLi5mLmdlb21ldHJ5LmNvb3JkaW5hdGVzKVxuICAgICAgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMuc3BsaWNlKGksIDEpXG4gICAgICBpLS1cbiAgICB9XG4gIH1cblxuICBpZiAobXVsdGlQb2x5Z29uLmNvb3JkaW5hdGVzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBmZWF0dXJlOiBGZWF0dXJlID0ge1xuICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgZ2VvbWV0cnk6IG11bHRpUG9seWdvbixcbiAgICAgIHByb3BlcnRpZXM6IHsgfSxcbiAgICB9XG4gICAgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMucHVzaChmZWF0dXJlKVxuICB9XG59XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtcG9seWdvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdXRpbHMvZ2VvLWpzb24vbWVyZ2UtcG9seWdvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxpQkFBb0M7SUFDaEUsTUFBTSxZQUFZLEdBQWlCO1FBQ2pDLElBQUksRUFBRSxjQUFjO1FBQ3BCLFdBQVcsRUFBRSxFQUFFO0tBQ2hCLENBQUE7SUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMxRCxNQUFNLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDakMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNyRCxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUN2QyxDQUFDLEVBQUUsQ0FBQTtTQUNKO2FBQU0sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUU7WUFDN0MsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3hELGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ3ZDLENBQUMsRUFBRSxDQUFBO1NBQ0o7S0FDRjtJQUVELElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3ZDLE1BQU0sT0FBTyxHQUFZO1lBQ3ZCLElBQUksRUFBRSxTQUFTO1lBQ2YsUUFBUSxFQUFFLFlBQVk7WUFDdEIsVUFBVSxFQUFFLEVBQUc7U0FDaEIsQ0FBQTtRQUNELGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7S0FDekM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBGZWF0dXJlLFxyXG4gIEZlYXR1cmVDb2xsZWN0aW9uLFxyXG4gIE11bHRpUG9seWdvbixcclxufSBmcm9tICdnZW9qc29uJ1xyXG5cclxuLyoqXHJcbiAqIE1lcmdlIFBvbHlnb24gYW5kIE11bHRpUG9seWdvbiBnZW9tZXRyaWVzIGludG8gYSBzaW5nbGUgTXVsdGlQb2x5Z29uLiBBbnlcclxuICogcHJvcGVydGllcywgb3RoZXIgdGhhbiAnY29vcmRpbmF0ZXMnLCBvZiB0aGUgUG9seWdvbnMgYW5kIE11bHRpUG9seWdvbnMgd2lsbFxyXG4gKiBiZSBsb3N0LlxyXG4gKlxyXG4gKiBOT1RFOiBQb2x5Z29ucyBhbmQgTXVsdFBvbHlnb25zIGluIGEgR2VvbWV0cnlDb2xsZWN0aW9uIHdpbGwgbm90IGJlIG1lcmdlZC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVBvbHlnb25zKGZlYXR1cmVDb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbik6IHZvaWQge1xyXG4gIGNvbnN0IG11bHRpUG9seWdvbjogTXVsdGlQb2x5Z29uID0ge1xyXG4gICAgdHlwZTogJ011bHRpUG9seWdvbicsXHJcbiAgICBjb29yZGluYXRlczogW10sXHJcbiAgfVxyXG5cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCBmID0gZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXNbaV1cclxuICAgIGlmIChmLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xyXG4gICAgICBtdWx0aVBvbHlnb24uY29vcmRpbmF0ZXMucHVzaChmLmdlb21ldHJ5LmNvb3JkaW5hdGVzKVxyXG4gICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5zcGxpY2UoaSwgMSlcclxuICAgICAgaS0tXHJcbiAgICB9IGVsc2UgaWYgKGYuZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbicpIHtcclxuICAgICAgbXVsdGlQb2x5Z29uLmNvb3JkaW5hdGVzLnB1c2goLi4uZi5nZW9tZXRyeS5jb29yZGluYXRlcylcclxuICAgICAgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMuc3BsaWNlKGksIDEpXHJcbiAgICAgIGktLVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKG11bHRpUG9seWdvbi5jb29yZGluYXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICBjb25zdCBmZWF0dXJlOiBGZWF0dXJlID0ge1xyXG4gICAgICB0eXBlOiAnRmVhdHVyZScsXHJcbiAgICAgIGdlb21ldHJ5OiBtdWx0aVBvbHlnb24sXHJcbiAgICAgIHByb3BlcnRpZXM6IHsgfSxcclxuICAgIH1cclxuICAgIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzLnB1c2goZmVhdHVyZSlcclxuICB9XHJcbn1cclxuIl19
@@ -60,4 +60,4 @@ function hasInnerRing(featureCollection) {
60
60
  }
61
61
  return false;
62
62
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW5uZXItcmluZ3MudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3V0aWxzL2dlby1qc29uL25vLWlubmVyLXJpbmdzLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUVyRSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxnQkFBZ0IsQ0FBQTtBQUU3RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sQ0FBQyxPQUF3QixFQUFFLEVBQUU7UUFDbEMscUZBQXFGO1FBQ3JGLElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sSUFBSSxDQUFBLENBQUMseURBQXlEO1NBQ3RFO1FBRUQsTUFBTSxLQUFLLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRXBELElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQix3RUFBd0U7WUFDeEUsMEVBQTBFO1lBQzFFLE9BQU8sSUFBSSxDQUFBO1NBQ1o7UUFFRCxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QixPQUFPO2dCQUNMLENBQUMsNkJBQTZCLENBQUMsRUFBRTtvQkFDL0IsTUFBTSxFQUFFLG9DQUFvQztpQkFDN0M7YUFDRixDQUFBO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsWUFBWSxDQUFDLGlCQUFvQztJQUN4RCxLQUFLLE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtRQUMxQyx5RUFBeUU7UUFDekUsMEVBQTBFO1FBQzFFLDBFQUEwRTtRQUMxRSx5RUFBeUU7UUFDekUseUVBQXlFO1FBQ3pFLEVBQUU7UUFDRiw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDakMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQyxPQUFPLElBQUksQ0FBQTthQUNaO1NBQ0Y7YUFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtZQUM3QyxLQUFLLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFO2dCQUMzQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNyQixPQUFPLElBQUksQ0FBQTtpQkFDWjthQUNGO1NBQ0Y7S0FDRjtJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3JtcydcblxuaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICdnZW9qc29uJ1xuXG5pbXBvcnQgeyBpc0VtcHR5SW5wdXRWYWx1ZSB9IGZyb20gJy4uL2Zvcm0vaXMtZW1wdHktaW5wdXQtdmFsdWUnXG5pbXBvcnQgeyBjb2VyY2VGZWF0dXJlQ29sbGVjdGlvbiB9IGZyb20gJy4vY29lcmNlLWZlYXR1cmUtY29sbGVjdGlvbidcblxuZXhwb3J0IGNvbnN0IE5PX0lOTkVSX1JJTkdTX1ZBTElEQVRPUl9OQU1FID0gJ25vLWlubmVyLXJpbmdzJ1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGF0IGEgRmVhdHVyZUNvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiBhbnkgUG9seWdvbiB3aXRoIGlubmVyXG4gKiByaW5ncyhcImhvbGVzXCIpLlxuICpcbiAqIE5PVEU6IE9ubHkgY29uc2lkZXJzIFBvbHlnb24gYW5kIE11bHRpUG9seWdvbi4gRG9lcyBub3QgY29uc2lkZXJcbiAqIEdlb21ldHJ5Q29sbGVjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vSW5uZXJSaW5nc1ZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgLy8gRG9uJ3QgbmVlZCB0byB2YWxpZGF0ZSBpZiB0aGVyZSBpc24ndCBhIHZhbHVlLiBVc2UgYFZhbGlkYXRvcnMucmVxdWlyZWRgIGZvciB0aGF0LlxuICAgIGlmIChpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGwgLy8gZG9uJ3QgdmFsaWRhdGUgZW1wdHkgdmFsdWVzIHRvIGFsbG93IG9wdGlvbmFsIGNvbnRyb2xzXG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBjb2VyY2VGZWF0dXJlQ29sbGVjdGlvbihjb250cm9sLnZhbHVlKVxuXG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpc24ndCBhIEZlYXR1cmVDb2xsZWN0aW9uIHRoZW4gdGhlcmUgaXMgbm90aGluZyB0byB2YWxpZGF0ZS5cbiAgICAgIC8vIFVzZSAnaXNGZWF0dXJlQ29sbGVjdGlvbicgdG8gdmFsaWRhdGUgdGhlIHZhbHVlIGlzIGEgRmVhdHVyZUNvbGxlY3Rpb24uXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGlmIChoYXNJbm5lclJpbmcodmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbTk9fSU5ORVJfUklOR1NfVkFMSURBVE9SX05BTUVdOiB7XG4gICAgICAgICAgcmVhc29uOiBgQSBzaGFwZSBjYW5ub3QgaGF2ZSBhbiBpbm5lciByaW5nLmBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBGZWF0dXJlQ29sbGVjdGlvbiBjb250YWlucyBhbnkgZ2VvbWV0cmllcyB3aXRoIGFuIGlubmVyXG4gKiByaW5nKFwiaG9sZVwiKS5cbiAqXG4gKiBOT1RFOiBEb2VzIG5vdCBjb25zaWRlciBHZW9tZXRyeUNvbGxlY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGhhc0lubmVyUmluZyhmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24pOiBib29sZWFuIHtcbiAgZm9yIChjb25zdCBmIG9mIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzKSB7XG4gICAgLy8gVGhlIHNwZWMgc2F5cyB0aGUgcmlnaHQtaGFuZCBydWxlIG11c3QgYmUgZm9sbG93ZWQsIGJ1dCBhbHNvIHNwZWNpZmllc1xuICAgIC8vIHRoYXQgdG9vbHMgc2hvdWxkIG5vdCByZWplY3QgcG9seWdvbnMgdGhhdCBkbyBub3QgZm9sbG93IHRoZSByaWdodC1oYW5kXG4gICAgLy8gcnVsZS4gSXQgZG9lcyBzcGVjaWZ5IHRoYXQgdGhlIGZpcnN0IHJpbmcgbXVzdCBiZSB0aGUgZXh0ZXJpb3IgcmluZyBhbmRcbiAgICAvLyB0aGUgb3RoZXJzIG11c3QgYmUgdGhlIGludGVyaW9yLiBTbywgdGhpcyBzaG91bGQgYmUgc2FmZSB0byBqdXN0IGNoZWNrXG4gICAgLy8gaWYgdGhlcmUgYXJlIG11bHRpcGxlIHJpbmdzLCBpbnN0ZWFkIG9mIGNoZWNraW5nIHRoZWlyIHdpbmRpbmcgb3JkZXJzLlxuICAgIC8vXG4gICAgLy8gUG9seWdvbiBzcGVjOiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzc5NDYjc2VjdGlvbi0zLjEuNlxuICAgIGlmIChmLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xuICAgICAgaWYgKGYuZ2VvbWV0cnkuY29vcmRpbmF0ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZi5nZW9tZXRyeS50eXBlID09PSAnTXVsdGlQb2x5Z29uJykge1xuICAgICAgZm9yIChjb25zdCBjb29yZHMgb2YgZi5nZW9tZXRyeS5jb29yZGluYXRlcykge1xuICAgICAgICBpZiAoY29vcmRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW5uZXItcmluZ3MudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3V0aWxzL2dlby1qc29uL25vLWlubmVyLXJpbmdzLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUVyRSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxnQkFBZ0IsQ0FBQTtBQUU3RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sQ0FBQyxPQUF3QixFQUFFLEVBQUU7UUFDbEMscUZBQXFGO1FBQ3JGLElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sSUFBSSxDQUFBLENBQUMseURBQXlEO1NBQ3RFO1FBRUQsTUFBTSxLQUFLLEdBQUcsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRXBELElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQix3RUFBd0U7WUFDeEUsMEVBQTBFO1lBQzFFLE9BQU8sSUFBSSxDQUFBO1NBQ1o7UUFFRCxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QixPQUFPO2dCQUNMLENBQUMsNkJBQTZCLENBQUMsRUFBRTtvQkFDL0IsTUFBTSxFQUFFLG9DQUFvQztpQkFDN0M7YUFDRixDQUFBO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsWUFBWSxDQUFDLGlCQUFvQztJQUN4RCxLQUFLLE1BQU0sQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtRQUMxQyx5RUFBeUU7UUFDekUsMEVBQTBFO1FBQzFFLDBFQUEwRTtRQUMxRSx5RUFBeUU7UUFDekUseUVBQXlFO1FBQ3pFLEVBQUU7UUFDRiw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDakMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQyxPQUFPLElBQUksQ0FBQTthQUNaO1NBQ0Y7YUFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtZQUM3QyxLQUFLLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFO2dCQUMzQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNyQixPQUFPLElBQUksQ0FBQTtpQkFDWjthQUNGO1NBQ0Y7S0FDRjtJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3JtcydcclxuXHJcbmltcG9ydCB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcclxuXHJcbmltcG9ydCB7IGlzRW1wdHlJbnB1dFZhbHVlIH0gZnJvbSAnLi4vZm9ybS9pcy1lbXB0eS1pbnB1dC12YWx1ZSdcclxuaW1wb3J0IHsgY29lcmNlRmVhdHVyZUNvbGxlY3Rpb24gfSBmcm9tICcuL2NvZXJjZS1mZWF0dXJlLWNvbGxlY3Rpb24nXHJcblxyXG5leHBvcnQgY29uc3QgTk9fSU5ORVJfUklOR1NfVkFMSURBVE9SX05BTUUgPSAnbm8taW5uZXItcmluZ3MnXHJcblxyXG4vKipcclxuICogVmFsaWRhdGVzIHRoYXQgYSBGZWF0dXJlQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluIGFueSBQb2x5Z29uIHdpdGggaW5uZXJcclxuICogcmluZ3MoXCJob2xlc1wiKS5cclxuICpcclxuICogTk9URTogT25seSBjb25zaWRlcnMgUG9seWdvbiBhbmQgTXVsdGlQb2x5Z29uLiBEb2VzIG5vdCBjb25zaWRlclxyXG4gKiBHZW9tZXRyeUNvbGxlY3Rpb24uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbm9Jbm5lclJpbmdzVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcclxuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgLy8gRG9uJ3QgbmVlZCB0byB2YWxpZGF0ZSBpZiB0aGVyZSBpc24ndCBhIHZhbHVlLiBVc2UgYFZhbGlkYXRvcnMucmVxdWlyZWRgIGZvciB0aGF0LlxyXG4gICAgaWYgKGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiBudWxsIC8vIGRvbid0IHZhbGlkYXRlIGVtcHR5IHZhbHVlcyB0byBhbGxvdyBvcHRpb25hbCBjb250cm9sc1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZhbHVlID0gY29lcmNlRmVhdHVyZUNvbGxlY3Rpb24oY29udHJvbC52YWx1ZSlcclxuXHJcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgLy8gSWYgdGhlcmUgaXNuJ3QgYSBGZWF0dXJlQ29sbGVjdGlvbiB0aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gdmFsaWRhdGUuXHJcbiAgICAgIC8vIFVzZSAnaXNGZWF0dXJlQ29sbGVjdGlvbicgdG8gdmFsaWRhdGUgdGhlIHZhbHVlIGlzIGEgRmVhdHVyZUNvbGxlY3Rpb24uXHJcbiAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGhhc0lubmVyUmluZyh2YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBbTk9fSU5ORVJfUklOR1NfVkFMSURBVE9SX05BTUVdOiB7XHJcbiAgICAgICAgICByZWFzb246IGBBIHNoYXBlIGNhbm5vdCBoYXZlIGFuIGlubmVyIHJpbmcuYFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsXHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQ2hlY2tzIGlmIGEgRmVhdHVyZUNvbGxlY3Rpb24gY29udGFpbnMgYW55IGdlb21ldHJpZXMgd2l0aCBhbiBpbm5lclxyXG4gKiByaW5nKFwiaG9sZVwiKS5cclxuICpcclxuICogTk9URTogRG9lcyBub3QgY29uc2lkZXIgR2VvbWV0cnlDb2xsZWN0aW9uLlxyXG4gKi9cclxuZnVuY3Rpb24gaGFzSW5uZXJSaW5nKGZlYXR1cmVDb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbik6IGJvb2xlYW4ge1xyXG4gIGZvciAoY29uc3QgZiBvZiBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcykge1xyXG4gICAgLy8gVGhlIHNwZWMgc2F5cyB0aGUgcmlnaHQtaGFuZCBydWxlIG11c3QgYmUgZm9sbG93ZWQsIGJ1dCBhbHNvIHNwZWNpZmllc1xyXG4gICAgLy8gdGhhdCB0b29scyBzaG91bGQgbm90IHJlamVjdCBwb2x5Z29ucyB0aGF0IGRvIG5vdCBmb2xsb3cgdGhlIHJpZ2h0LWhhbmRcclxuICAgIC8vIHJ1bGUuIEl0IGRvZXMgc3BlY2lmeSB0aGF0IHRoZSBmaXJzdCByaW5nIG11c3QgYmUgdGhlIGV4dGVyaW9yIHJpbmcgYW5kXHJcbiAgICAvLyB0aGUgb3RoZXJzIG11c3QgYmUgdGhlIGludGVyaW9yLiBTbywgdGhpcyBzaG91bGQgYmUgc2FmZSB0byBqdXN0IGNoZWNrXHJcbiAgICAvLyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgcmluZ3MsIGluc3RlYWQgb2YgY2hlY2tpbmcgdGhlaXIgd2luZGluZyBvcmRlcnMuXHJcbiAgICAvL1xyXG4gICAgLy8gUG9seWdvbiBzcGVjOiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzc5NDYjc2VjdGlvbi0zLjEuNlxyXG4gICAgaWYgKGYuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XHJcbiAgICAgIGlmIChmLmdlb21ldHJ5LmNvb3JkaW5hdGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGYuZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbicpIHtcclxuICAgICAgZm9yIChjb25zdCBjb29yZHMgb2YgZi5nZW9tZXRyeS5jb29yZGluYXRlcykge1xyXG4gICAgICAgIGlmIChjb29yZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBmYWxzZVxyXG59XHJcbiJdfQ==
@@ -26,4 +26,4 @@ function splitMultPolygon(multiPolygon) {
26
26
  coordinates: c,
27
27
  }));
28
28
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtbXVsdGktcG9seWdvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdXRpbHMvZ2VvLWpzb24vc3BsaXQtbXVsdGktcG9seWdvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsaUJBQW9DO0lBQ3JFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzFELElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUE7WUFDdkQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtnQkFDcEMsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDcEQsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsUUFBUSxFQUFFLENBQUM7b0JBQ1gsVUFBVSxFQUFFLEVBQUc7aUJBQ0osQ0FBQSxDQUFDLENBQUE7Z0JBQ2QsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUE7Z0JBQ3BELENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO2FBQ3RDO1NBQ0Y7S0FDRjtBQUNILENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFlBQTBCO0lBQ2xELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLENBQUM7S0FDZixDQUFDLENBQUMsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2x5Z29uIH0gZnJvbSAnQHR1cmYvaGVscGVycydcbmltcG9ydCB7XG4gIEZlYXR1cmUsXG4gIEZlYXR1cmVDb2xsZWN0aW9uLFxuICBNdWx0aVBvbHlnb24sXG59IGZyb20gJ2dlb2pzb24nXG5cbi8qKlxuICogU3BsaXQgYWxsIE11bHRpUG9seWdvbiBpbnRvIFBvbHlnb24uIEFueSBwcm9wZXJ0aWVzLCBvdGhlciB0aGFuXG4gKiAnY29vcmRpbmF0ZXMnLCBvZiB0aGUgTXVsdGlQb2x5Z29ucyB3aWxsIGJlIGxvc3QuXG4gKlxuICogTk9URTogTXVsdGlQb2x5Z29ucyBpbiBhIEdlb21ldHJ5Q29sbGVjdGlvbiB3aWxsIG5vdCBiZSBzcGxpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0TXVsdGlQb2x5Z29ucyhmZWF0dXJlQ29sbGVjdGlvbjogRmVhdHVyZUNvbGxlY3Rpb24pOiB2b2lkIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlc1tpXSkge1xuICAgICAgY29uc3QgZ2VvbWV0cnkgPSBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlc1tpXS5nZW9tZXRyeVxuICAgICAgaWYgKGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nKSB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gc3BsaXRNdWx0UG9seWdvbihnZW9tZXRyeSkubWFwKHAgPT4gKHtcbiAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgZ2VvbWV0cnk6IHAsXG4gICAgICAgICAgcHJvcGVydGllczogeyB9LFxuICAgICAgICB9IGFzIEZlYXR1cmUpKVxuICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcy5zcGxpY2UoaSwgMSwgLi4uZmVhdHVyZXMpXG4gICAgICAgIGkgKz0gTWF0aC5tYXgoZmVhdHVyZXMubGVuZ3RoIC0gMSwgMClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3BsaXRNdWx0UG9seWdvbihtdWx0aVBvbHlnb246IE11bHRpUG9seWdvbik6IFBvbHlnb25bXSB7XG4gIHJldHVybiBtdWx0aVBvbHlnb24uY29vcmRpbmF0ZXMubWFwKGMgPT4gKHtcbiAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgY29vcmRpbmF0ZXM6IGMsXG4gIH0pKVxufVxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtbXVsdGktcG9seWdvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdXRpbHMvZ2VvLWpzb24vc3BsaXQtbXVsdGktcG9seWdvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsaUJBQW9DO0lBQ3JFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzFELElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUE7WUFDdkQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRTtnQkFDcEMsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDcEQsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsUUFBUSxFQUFFLENBQUM7b0JBQ1gsVUFBVSxFQUFFLEVBQUc7aUJBQ0osQ0FBQSxDQUFDLENBQUE7Z0JBQ2QsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUE7Z0JBQ3BELENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO2FBQ3RDO1NBQ0Y7S0FDRjtBQUNILENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFlBQTBCO0lBQ2xELE9BQU8sWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksRUFBRSxTQUFTO1FBQ2YsV0FBVyxFQUFFLENBQUM7S0FDZixDQUFDLENBQUMsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2x5Z29uIH0gZnJvbSAnQHR1cmYvaGVscGVycydcclxuaW1wb3J0IHtcclxuICBGZWF0dXJlLFxyXG4gIEZlYXR1cmVDb2xsZWN0aW9uLFxyXG4gIE11bHRpUG9seWdvbixcclxufSBmcm9tICdnZW9qc29uJ1xyXG5cclxuLyoqXHJcbiAqIFNwbGl0IGFsbCBNdWx0aVBvbHlnb24gaW50byBQb2x5Z29uLiBBbnkgcHJvcGVydGllcywgb3RoZXIgdGhhblxyXG4gKiAnY29vcmRpbmF0ZXMnLCBvZiB0aGUgTXVsdGlQb2x5Z29ucyB3aWxsIGJlIGxvc3QuXHJcbiAqXHJcbiAqIE5PVEU6IE11bHRpUG9seWdvbnMgaW4gYSBHZW9tZXRyeUNvbGxlY3Rpb24gd2lsbCBub3QgYmUgc3BsaXQuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRNdWx0aVBvbHlnb25zKGZlYXR1cmVDb2xsZWN0aW9uOiBGZWF0dXJlQ29sbGVjdGlvbik6IHZvaWQge1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmIChmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlc1tpXSkge1xyXG4gICAgICBjb25zdCBnZW9tZXRyeSA9IGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVzW2ldLmdlb21ldHJ5XHJcbiAgICAgIGlmIChnZW9tZXRyeS50eXBlID09PSAnTXVsdGlQb2x5Z29uJykge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gc3BsaXRNdWx0UG9seWdvbihnZW9tZXRyeSkubWFwKHAgPT4gKHtcclxuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcclxuICAgICAgICAgIGdlb21ldHJ5OiBwLFxyXG4gICAgICAgICAgcHJvcGVydGllczogeyB9LFxyXG4gICAgICAgIH0gYXMgRmVhdHVyZSkpXHJcbiAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXMuc3BsaWNlKGksIDEsIC4uLmZlYXR1cmVzKVxyXG4gICAgICAgIGkgKz0gTWF0aC5tYXgoZmVhdHVyZXMubGVuZ3RoIC0gMSwgMClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc3BsaXRNdWx0UG9seWdvbihtdWx0aVBvbHlnb246IE11bHRpUG9seWdvbik6IFBvbHlnb25bXSB7XHJcbiAgcmV0dXJuIG11bHRpUG9seWdvbi5jb29yZGluYXRlcy5tYXAoYyA9PiAoe1xyXG4gICAgdHlwZTogJ1BvbHlnb24nLFxyXG4gICAgY29vcmRpbmF0ZXM6IGMsXHJcbiAgfSkpXHJcbn1cclxuIl19
@@ -164,10 +164,10 @@ class BreadcrumbsComponent {
164
164
  }
165
165
  }
166
166
  BreadcrumbsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BreadcrumbsComponent, deps: [{ token: TheSeamBreadcrumbsService }], target: i0.ɵɵFactoryTarget.Component });
167
- BreadcrumbsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BreadcrumbsComponent, selector: "seam-breadcrumbs", ngImport: i0, template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:inherit}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
167
+ BreadcrumbsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BreadcrumbsComponent, selector: "seam-breadcrumbs", ngImport: i0, template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
168
168
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BreadcrumbsComponent, decorators: [{
169
169
  type: Component,
170
- args: [{ selector: 'seam-breadcrumbs', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:inherit}\n"] }]
170
+ args: [{ selector: 'seam-breadcrumbs', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n", styles: ["seam-breadcrumbs li{color:#fff}seam-breadcrumbs li a{color:#fff}\n"] }]
171
171
  }], ctorParameters: function () { return [{ type: TheSeamBreadcrumbsService }]; } });
172
172
 
173
173
  class TheSeamBreadcrumbsModule {
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-breadcrumbs.mjs","sources":["../../../projects/ui-common/breadcrumbs/breadcrumbs.service.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs/breadcrumbs.component.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs/breadcrumbs.component.html","../../../projects/ui-common/breadcrumbs/breadcrumbs.module.ts","../../../projects/ui-common/breadcrumbs/theseam-ui-common-breadcrumbs.ts"],"sourcesContent":["import { Injectable, isDevMode } from '@angular/core'\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router'\nimport { combineLatest, Observable, of } from 'rxjs'\nimport { filter, map, startWith, switchMap } from 'rxjs/operators'\n\nimport {\n activatedRoutesWithDataProperty,\n hasProperty,\n IActivatedRouteWithData,\n isEmptyUrlRoute,\n leafChildRoute,\n notNullOrUndefined,\n routeSnapshotPathFull,\n willHaveDataProp\n} from '@theseam/ui-common/utils'\n\nimport { TheSeamBreadcrumb } from './breadcrumb'\n\ninterface BreadcrumbDataExtras {\n dataProps?: string[]\n}\n\ninterface ExtrasPropRef {\n prop: string\n value: Observable<string>\n}\n\ninterface BreadcrumbData {\n breadcrumb?: string\n breadcrumbExtras?: BreadcrumbDataExtras\n\n activatedRoute: ActivatedRoute\n extrasPropRefs: ExtrasPropRef[]\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TheSeamBreadcrumbsService {\n\n // public readonly breadcrumbDataKey = 'breadcrumb'\n\n private readonly dataProps: (keyof Omit<BreadcrumbData, 'activatedRoute'>)[] = [\n 'breadcrumb',\n 'breadcrumbExtras',\n ]\n\n public readonly crumbs$: Observable<TheSeamBreadcrumb[]>\n\n constructor(\n private readonly _router: Router,\n private readonly _activatedRoute: ActivatedRoute\n ) {\n // this.crumbs$ = this._router.events.pipe(\n // filter(event => event instanceof NavigationEnd),\n // map(_ => this._activatedRoute),\n // startWith(this._activatedRoute),\n // activatedRoutesWithDataProperty(this.breadcrumbDataKey, true),\n // switchMap(rwdArr => combineLatest(rwdArr.map(rwd => this._parseBreadcrumbData(rwd))))\n // )\n\n this.crumbs$ = this._crumbsFromRoute()\n }\n\n private _crumbsFromRoute(): Observable<TheSeamBreadcrumb[]> {\n return this._router.events.pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n map(() => this._activatedRoute),\n startWith(this._activatedRoute),\n switchMap(activatedRoute => this._crumbsFromActivatedRoute(activatedRoute))\n )\n }\n\n private _crumbsFromActivatedRoute(activatedRoute: ActivatedRoute): Observable<TheSeamBreadcrumb[]> {\n return this._breadcrumbDatasFromRoot(activatedRoute).pipe(\n map(bcDatas => this._breadcrumbsFromData(bcDatas))\n )\n }\n\n private _breadcrumbDatasFromRoot(activatedRoute: ActivatedRoute): Observable<BreadcrumbData[]> {\n const bcDataObs = leafChildRoute(activatedRoute).pathFromRoot.map(r => this._breadcrumbData(r))\n return combineLatest(bcDataObs).pipe(\n map(v => v.filter(notNullOrUndefined)),\n switchMap(v => this._applyBreadcrumbExtras(v)),\n )\n }\n\n private _breadcrumbData(activatedRoute: ActivatedRoute): Observable<BreadcrumbData | null> {\n return activatedRoute.data.pipe(\n map(data => {\n const bcData: BreadcrumbData = {\n activatedRoute,\n extrasPropRefs: []\n }\n\n let found = false\n for (const prop of this.dataProps) {\n if (prop === 'breadcrumb' && !willHaveDataProp(activatedRoute, prop)) {\n // Need to skip if the 'breadcrumb' data prop is not in the config,\n // because we will get duplicates if the data 'breadcrumb' prop is\n // inheritted from a parent route.\n continue\n }\n\n if (hasProperty(data, prop)) {\n bcData[prop] = data[prop]\n found = true\n }\n }\n\n if (!found) {\n return null\n }\n\n bcData.extrasPropRefs = this._getBreadcrumbExtrasDataProps(bcData)\n\n return bcData\n })\n )\n }\n\n private _applyBreadcrumbExtras(datas: BreadcrumbData[]): Observable<BreadcrumbData[]> {\n const newDatas: BreadcrumbData[] = []\n\n let pending: BreadcrumbData[] = []\n for (const data of datas) {\n if (!hasProperty(data, 'breadcrumb')) {\n pending.push(data)\n continue\n }\n\n newDatas.push(data)\n\n pending = []\n }\n\n if (newDatas.length === 0) {\n return of([])\n }\n\n if (pending.length > 0) {\n // add extras\n newDatas[newDatas.length - 1].extrasPropRefs = this._filterExtrasPropRefs([\n ...newDatas[newDatas.length - 1].extrasPropRefs,\n ...pending.map(p => p.extrasPropRefs).reduce((prev, curr) => [ ...prev, ...curr ], [])\n ])\n }\n\n return combineLatest(newDatas.map(data => {\n if (data.extrasPropRefs.length === 0) {\n return of(data)\n }\n\n return this._observeExtrasPropRefs(data.extrasPropRefs).pipe(\n map(extrasStr => {\n data.breadcrumb = `${data.breadcrumb} ${extrasStr}`\n return data\n })\n )\n }))\n }\n\n private _observeExtrasPropRefs(propRefs: ExtrasPropRef[]): Observable<string> {\n return combineLatest(propRefs.map(pf => pf.value)).pipe(\n map(values => values.map(v => `(${v})`).join(' '))\n )\n }\n\n private _getBreadcrumbExtrasDataProps(data: BreadcrumbData): ExtrasPropRef[] {\n if (!hasProperty(data, 'breadcrumbExtras')) {\n return []\n }\n\n if (!hasProperty(data.breadcrumbExtras, 'dataProps')) {\n return []\n }\n\n const propRefs = data.breadcrumbExtras.dataProps.map(prop => {\n return { prop, value: this._getDataProp(data.activatedRoute, prop) }\n })\n\n return this._filterExtrasPropRefs(propRefs)\n }\n\n private _filterExtrasPropRefs(propRefs: ExtrasPropRef[]): ExtrasPropRef[] {\n const seen: { [key: string]: boolean } = { }\n return propRefs.filter(propRef => {\n if (seen[propRef.prop]) {\n return false\n }\n seen[propRef.prop] = true\n return true\n })\n }\n\n private _getDataProp(activatedRoute: ActivatedRoute, prop: string): Observable<string> {\n if (activatedRoute.routeConfig !== null) {\n if (willHaveDataProp(activatedRoute, prop)) {\n return activatedRoute.data.pipe(map(d => d[prop]))\n }\n }\n\n let r = activatedRoute.parent\n while (r !== null) {\n if (willHaveDataProp(r, prop)) {\n return r.data.pipe(map(d => d[prop]))\n }\n\n r = r.parent\n }\n\n throw Error(`DataProp '${prop}' not found.`)\n }\n\n private _breadcrumbsFromData(datas: BreadcrumbData[]): TheSeamBreadcrumb[] {\n const breadcrumbs: TheSeamBreadcrumb[] = []\n\n for (const data of datas) {\n if (hasProperty(data, 'breadcrumb')) {\n const breadcrumb: TheSeamBreadcrumb = {\n value: data.breadcrumb,\n path: routeSnapshotPathFull(data.activatedRoute.snapshot),\n route: data.activatedRoute\n }\n breadcrumbs.push(breadcrumb)\n }\n }\n\n return breadcrumbs\n }\n\n // private _parseBreadcrumbData(routeWithData: IActivatedRouteWithData): Observable<TheSeamBreadcrumb> {\n // const crumbValue = routeWithData.data[this.breadcrumbDataKey]\n // const route = routeWithData.route\n // const path = routeSnapshotPathFull(route.snapshot)\n // let value = ''\n\n // if (typeof crumbValue === 'string') {\n // value = crumbValue\n // } else {\n // if (isDevMode()) {\n // console.warn(\n // '[TheSeamBreadcrumbsService] Only string breadcrumbs are supported currently. '\n // + 'Use a resolver if the value needs to be dynamically calculated.'\n // )\n // }\n // }\n\n // return of({ value, path, route })\n // }\n\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core'\nimport { Observable } from 'rxjs'\n\nimport { TheSeamBreadcrumb } from '../breadcrumb'\nimport { TheSeamBreadcrumbsService } from '../breadcrumbs.service'\n\n@Component({\n selector: 'seam-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbsComponent {\n\n public crumbs$: Observable<TheSeamBreadcrumb[]>\n\n constructor(\n private _breadcrumbs: TheSeamBreadcrumbsService\n ) {\n this.crumbs$ = this._breadcrumbs.crumbs$\n }\n\n}\n","<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { BreadcrumbsComponent } from './breadcrumbs/breadcrumbs.component'\n\n@NgModule({\n declarations: [\n BreadcrumbsComponent\n ],\n imports: [\n CommonModule,\n RouterModule\n ],\n exports: [\n BreadcrumbsComponent\n ]\n})\nexport class TheSeamBreadcrumbsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TheSeamBreadcrumbsService","i3"],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-breadcrumbs.mjs","sources":["../../../projects/ui-common/breadcrumbs/breadcrumbs.service.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs/breadcrumbs.component.ts","../../../projects/ui-common/breadcrumbs/breadcrumbs/breadcrumbs.component.html","../../../projects/ui-common/breadcrumbs/breadcrumbs.module.ts","../../../projects/ui-common/breadcrumbs/theseam-ui-common-breadcrumbs.ts"],"sourcesContent":["import { Injectable, isDevMode } from '@angular/core'\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router'\nimport { combineLatest, Observable, of } from 'rxjs'\nimport { filter, map, startWith, switchMap } from 'rxjs/operators'\n\nimport {\n activatedRoutesWithDataProperty,\n hasProperty,\n IActivatedRouteWithData,\n isEmptyUrlRoute,\n leafChildRoute,\n notNullOrUndefined,\n routeSnapshotPathFull,\n willHaveDataProp\n} from '@theseam/ui-common/utils'\n\nimport { TheSeamBreadcrumb } from './breadcrumb'\n\ninterface BreadcrumbDataExtras {\n dataProps?: string[]\n}\n\ninterface ExtrasPropRef {\n prop: string\n value: Observable<string>\n}\n\ninterface BreadcrumbData {\n breadcrumb?: string\n breadcrumbExtras?: BreadcrumbDataExtras\n\n activatedRoute: ActivatedRoute\n extrasPropRefs: ExtrasPropRef[]\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TheSeamBreadcrumbsService {\n\n // public readonly breadcrumbDataKey = 'breadcrumb'\n\n private readonly dataProps: (keyof Omit<BreadcrumbData, 'activatedRoute'>)[] = [\n 'breadcrumb',\n 'breadcrumbExtras',\n ]\n\n public readonly crumbs$: Observable<TheSeamBreadcrumb[]>\n\n constructor(\n private readonly _router: Router,\n private readonly _activatedRoute: ActivatedRoute\n ) {\n // this.crumbs$ = this._router.events.pipe(\n // filter(event => event instanceof NavigationEnd),\n // map(_ => this._activatedRoute),\n // startWith(this._activatedRoute),\n // activatedRoutesWithDataProperty(this.breadcrumbDataKey, true),\n // switchMap(rwdArr => combineLatest(rwdArr.map(rwd => this._parseBreadcrumbData(rwd))))\n // )\n\n this.crumbs$ = this._crumbsFromRoute()\n }\n\n private _crumbsFromRoute(): Observable<TheSeamBreadcrumb[]> {\n return this._router.events.pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n map(() => this._activatedRoute),\n startWith(this._activatedRoute),\n switchMap(activatedRoute => this._crumbsFromActivatedRoute(activatedRoute))\n )\n }\n\n private _crumbsFromActivatedRoute(activatedRoute: ActivatedRoute): Observable<TheSeamBreadcrumb[]> {\n return this._breadcrumbDatasFromRoot(activatedRoute).pipe(\n map(bcDatas => this._breadcrumbsFromData(bcDatas))\n )\n }\n\n private _breadcrumbDatasFromRoot(activatedRoute: ActivatedRoute): Observable<BreadcrumbData[]> {\n const bcDataObs = leafChildRoute(activatedRoute).pathFromRoot.map(r => this._breadcrumbData(r))\n return combineLatest(bcDataObs).pipe(\n map(v => v.filter(notNullOrUndefined)),\n switchMap(v => this._applyBreadcrumbExtras(v)),\n )\n }\n\n private _breadcrumbData(activatedRoute: ActivatedRoute): Observable<BreadcrumbData | null> {\n return activatedRoute.data.pipe(\n map(data => {\n const bcData: BreadcrumbData = {\n activatedRoute,\n extrasPropRefs: []\n }\n\n let found = false\n for (const prop of this.dataProps) {\n if (prop === 'breadcrumb' && !willHaveDataProp(activatedRoute, prop)) {\n // Need to skip if the 'breadcrumb' data prop is not in the config,\n // because we will get duplicates if the data 'breadcrumb' prop is\n // inheritted from a parent route.\n continue\n }\n\n if (hasProperty(data, prop)) {\n bcData[prop] = data[prop]\n found = true\n }\n }\n\n if (!found) {\n return null\n }\n\n bcData.extrasPropRefs = this._getBreadcrumbExtrasDataProps(bcData)\n\n return bcData\n })\n )\n }\n\n private _applyBreadcrumbExtras(datas: BreadcrumbData[]): Observable<BreadcrumbData[]> {\n const newDatas: BreadcrumbData[] = []\n\n let pending: BreadcrumbData[] = []\n for (const data of datas) {\n if (!hasProperty(data, 'breadcrumb')) {\n pending.push(data)\n continue\n }\n\n newDatas.push(data)\n\n pending = []\n }\n\n if (newDatas.length === 0) {\n return of([])\n }\n\n if (pending.length > 0) {\n // add extras\n newDatas[newDatas.length - 1].extrasPropRefs = this._filterExtrasPropRefs([\n ...newDatas[newDatas.length - 1].extrasPropRefs,\n ...pending.map(p => p.extrasPropRefs).reduce((prev, curr) => [ ...prev, ...curr ], [])\n ])\n }\n\n return combineLatest(newDatas.map(data => {\n if (data.extrasPropRefs.length === 0) {\n return of(data)\n }\n\n return this._observeExtrasPropRefs(data.extrasPropRefs).pipe(\n map(extrasStr => {\n data.breadcrumb = `${data.breadcrumb} ${extrasStr}`\n return data\n })\n )\n }))\n }\n\n private _observeExtrasPropRefs(propRefs: ExtrasPropRef[]): Observable<string> {\n return combineLatest(propRefs.map(pf => pf.value)).pipe(\n map(values => values.map(v => `(${v})`).join(' '))\n )\n }\n\n private _getBreadcrumbExtrasDataProps(data: BreadcrumbData): ExtrasPropRef[] {\n if (!hasProperty(data, 'breadcrumbExtras')) {\n return []\n }\n\n if (!hasProperty(data.breadcrumbExtras, 'dataProps')) {\n return []\n }\n\n const propRefs = data.breadcrumbExtras.dataProps.map(prop => {\n return { prop, value: this._getDataProp(data.activatedRoute, prop) }\n })\n\n return this._filterExtrasPropRefs(propRefs)\n }\n\n private _filterExtrasPropRefs(propRefs: ExtrasPropRef[]): ExtrasPropRef[] {\n const seen: { [key: string]: boolean } = { }\n return propRefs.filter(propRef => {\n if (seen[propRef.prop]) {\n return false\n }\n seen[propRef.prop] = true\n return true\n })\n }\n\n private _getDataProp(activatedRoute: ActivatedRoute, prop: string): Observable<string> {\n if (activatedRoute.routeConfig !== null) {\n if (willHaveDataProp(activatedRoute, prop)) {\n return activatedRoute.data.pipe(map(d => d[prop]))\n }\n }\n\n let r = activatedRoute.parent\n while (r !== null) {\n if (willHaveDataProp(r, prop)) {\n return r.data.pipe(map(d => d[prop]))\n }\n\n r = r.parent\n }\n\n throw Error(`DataProp '${prop}' not found.`)\n }\n\n private _breadcrumbsFromData(datas: BreadcrumbData[]): TheSeamBreadcrumb[] {\n const breadcrumbs: TheSeamBreadcrumb[] = []\n\n for (const data of datas) {\n if (hasProperty(data, 'breadcrumb')) {\n const breadcrumb: TheSeamBreadcrumb = {\n value: data.breadcrumb,\n path: routeSnapshotPathFull(data.activatedRoute.snapshot),\n route: data.activatedRoute\n }\n breadcrumbs.push(breadcrumb)\n }\n }\n\n return breadcrumbs\n }\n\n // private _parseBreadcrumbData(routeWithData: IActivatedRouteWithData): Observable<TheSeamBreadcrumb> {\n // const crumbValue = routeWithData.data[this.breadcrumbDataKey]\n // const route = routeWithData.route\n // const path = routeSnapshotPathFull(route.snapshot)\n // let value = ''\n\n // if (typeof crumbValue === 'string') {\n // value = crumbValue\n // } else {\n // if (isDevMode()) {\n // console.warn(\n // '[TheSeamBreadcrumbsService] Only string breadcrumbs are supported currently. '\n // + 'Use a resolver if the value needs to be dynamically calculated.'\n // )\n // }\n // }\n\n // return of({ value, path, route })\n // }\n\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core'\nimport { Observable } from 'rxjs'\n\nimport { TheSeamBreadcrumb } from '../breadcrumb'\nimport { TheSeamBreadcrumbsService } from '../breadcrumbs.service'\n\n@Component({\n selector: 'seam-breadcrumbs',\n templateUrl: './breadcrumbs.component.html',\n styleUrls: ['./breadcrumbs.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbsComponent {\n\n public crumbs$: Observable<TheSeamBreadcrumb[]>\n\n constructor(\n private _breadcrumbs: TheSeamBreadcrumbsService\n ) {\n this.crumbs$ = this._breadcrumbs.crumbs$\n }\n\n}\n","<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb mb-0\">\n <li *ngFor=\"let crumb of crumbs$ | async; last as isLast\"\n class=\"breadcrumb-item\"\n [ngClass]=\"{ 'active': isLast }\"\n [attr.aria-current]=\"isLast ? 'page' : undefined\">\n <a *ngIf=\"!isLast; else notLink\" [routerLink]=\"crumb.path\">{{ crumb.value }}</a>\n <ng-template #notLink>{{ crumb.value }}</ng-template>\n </li>\n </ol>\n</nav>\n","import { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { BreadcrumbsComponent } from './breadcrumbs/breadcrumbs.component'\n\n@NgModule({\n declarations: [\n BreadcrumbsComponent\n ],\n imports: [\n CommonModule,\n RouterModule\n ],\n exports: [\n BreadcrumbsComponent\n ]\n})\nexport class TheSeamBreadcrumbsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TheSeamBreadcrumbsService","i3"],"mappings":"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"}