@theseam/ui-common 0.4.0-beta.4 → 0.4.0-beta.6

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 (50) hide show
  1. package/esm2020/checkbox/testing/checkbox.harness.mjs +1 -1
  2. package/esm2020/checkbox/testing/index.mjs +1 -1
  3. package/esm2020/form-field/form-field-tokens.mjs +1 -1
  4. package/esm2020/form-field/testing/form-field-required-indicator.harness.mjs +1 -1
  5. package/esm2020/form-field/testing/index.mjs +1 -1
  6. package/esm2020/framework/dashboard/dashboard-widgets-tokens.mjs +1 -1
  7. package/esm2020/framework/side-nav/side-nav-tokens.mjs +1 -1
  8. package/esm2020/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.mjs +103 -0
  9. package/esm2020/google-maps/google-maps-api-loader/noop-google-maps-api-loader.mjs +25 -0
  10. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
  11. package/esm2020/google-maps/public-api.mjs +4 -1
  12. package/esm2020/tabbed/tabbed-models.mjs +1 -1
  13. package/esm2020/utils/file-utils.mjs +2 -3
  14. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  15. package/esm2020/utils/geo-json/geo-json-to-area.mjs +1 -1
  16. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  17. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  18. package/esm2020/utils/geo-json/is-only-geometry-types.validator.mjs +1 -1
  19. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  20. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  21. package/esm2020/utils/geo-json/read-geo-file.mjs +5 -2
  22. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  23. package/esm2020/widget/widget/widget.component.mjs +29 -32
  24. package/esm2020/widget/widget-registry.service.mjs +2 -2
  25. package/esm2020/widget/widget.module.mjs +6 -6
  26. package/fesm2015/theseam-ui-common-checkbox.mjs.map +1 -1
  27. package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
  28. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  29. package/fesm2015/theseam-ui-common-google-maps.mjs +127 -5
  30. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  31. package/fesm2015/theseam-ui-common-utils.mjs +5 -4
  32. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  33. package/fesm2015/theseam-ui-common-widget.mjs +34 -37
  34. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  35. package/fesm2020/theseam-ui-common-checkbox.mjs.map +1 -1
  36. package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
  37. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  38. package/fesm2020/theseam-ui-common-google-maps.mjs +125 -5
  39. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  40. package/fesm2020/theseam-ui-common-utils.mjs +5 -4
  41. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  42. package/fesm2020/theseam-ui-common-widget.mjs +34 -37
  43. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  44. package/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.d.ts +73 -0
  45. package/google-maps/google-maps-api-loader/noop-google-maps-api-loader.d.ts +13 -0
  46. package/google-maps/public-api.d.ts +3 -0
  47. package/package.json +1 -1
  48. package/utils/file-utils.d.ts +1 -1
  49. package/utils/geo-json/read-geo-file.d.ts +1 -1
  50. package/widget/widget/widget.component.d.ts +1 -6
@@ -1,9 +1,9 @@
1
1
  import { __awaiter, __decorate } from 'tslib';
2
2
  import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, Injectable, Injector, Component, ChangeDetectionStrategy, Optional, Inject, Input, HostListener, EventEmitter, forwardRef, HostBinding, Output, ViewChild, Directive, NgModule } from '@angular/core';
4
+ import { InjectionToken, Injectable, Injector, Component, ChangeDetectionStrategy, Optional, Inject, Input, HostListener, EventEmitter, forwardRef, HostBinding, Output, ViewChild, Directive, NgModule, LOCALE_ID } from '@angular/core';
5
5
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
- import { Observable, Subject, fromEvent, BehaviorSubject, from, of, interval } from 'rxjs';
6
+ import { Observable, Subject, fromEvent, BehaviorSubject, from, of, interval, defer, throwError } from 'rxjs';
7
7
  import { takeUntil, switchMap, tap, map, catchError, startWith, filter, take, mapTo } from 'rxjs/operators';
8
8
  import { faFileImport, faCrosshairs, faSearchLocation } from '@fortawesome/free-solid-svg-icons';
9
9
  import { mixinDisabled, InputBoolean, InputNumber } from '@theseam/ui-common/core';
@@ -1733,13 +1733,13 @@ class TheSeamGoogleMapsPlacesAutoCompleteComponent {
1733
1733
  }
1734
1734
  }
1735
1735
  TheSeamGoogleMapsPlacesAutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamGoogleMapsPlacesAutoCompleteComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
1736
- TheSeamGoogleMapsPlacesAutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TheSeamGoogleMapsPlacesAutoCompleteComponent, selector: "seam-google-maps-places-autocomplete", inputs: { label: "label", icon: "icon", disabled: "disabled", placeholder: "placeholder", autocorrect: "autocorrect", autocapitalize: "autocapitalize", tabIndex: "tabIndex", options: "options" }, outputs: { placeChanged: "placeChanged" }, host: { listeners: { "click": "_onClick(event)", "focus": "_onFocus($event)" }, properties: { "attr.tabindex": "this._attrTabIndex" } }, viewQueries: [{ propertyName: "_inputDirective", first: true, predicate: ["inp"], descendants: true, read: InputDirective, static: true }, { propertyName: "__autocompleteDirective", first: true, predicate: TheSeamGoogleMapsPlacesAutocompleteDirective, descendants: true, static: true }], exportAs: ["seamGoogleMapsPlacesAutoComplete"], ngImport: i0, template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\n</div>\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\n<input #inp=\"seamInput\"\n seamInput\n seamGoogleMapsPlacesAutocomplete\n [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\"\n [attr.autocorrect]=\"autocorrect\"\n [attr.autocapitalize]=\"autocapitalize\"\n [options]=\"_options\"\n/>\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: TheSeamGoogleMapsPlacesAutocompleteDirective, selector: "input[seamGoogleMapsPlacesAutocomplete]", inputs: ["options"], outputs: ["placeChanged"], exportAs: ["seamGoogleMapsPlacesAutocomplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1736
+ TheSeamGoogleMapsPlacesAutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TheSeamGoogleMapsPlacesAutoCompleteComponent, selector: "seam-google-maps-places-autocomplete", inputs: { label: "label", icon: "icon", disabled: "disabled", placeholder: "placeholder", autocorrect: "autocorrect", autocapitalize: "autocapitalize", tabIndex: "tabIndex", options: "options" }, outputs: { placeChanged: "placeChanged" }, host: { listeners: { "click": "_onClick(event)", "focus": "_onFocus($event)" }, properties: { "attr.tabindex": "this._attrTabIndex" } }, viewQueries: [{ propertyName: "_inputDirective", first: true, predicate: ["inp"], descendants: true, read: InputDirective, static: true }, { propertyName: "__autocompleteDirective", first: true, predicate: TheSeamGoogleMapsPlacesAutocompleteDirective, descendants: true, static: true }], exportAs: ["seamGoogleMapsPlacesAutoComplete"], ngImport: i0, template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\r\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\r\n</div>\r\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\r\n<input #inp=\"seamInput\"\r\n seamInput\r\n seamGoogleMapsPlacesAutocomplete\r\n [disabled]=\"disabled\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.autocorrect]=\"autocorrect\"\r\n [attr.autocapitalize]=\"autocapitalize\"\r\n [options]=\"_options\"\r\n/>\r\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-checkbox[seamInput] [ngbRadioGroup], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: TheSeamGoogleMapsPlacesAutocompleteDirective, selector: "input[seamGoogleMapsPlacesAutocomplete]", inputs: ["options"], outputs: ["placeChanged"], exportAs: ["seamGoogleMapsPlacesAutocomplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1737
1737
  __decorate([
1738
1738
  InputBoolean()
1739
1739
  ], TheSeamGoogleMapsPlacesAutoCompleteComponent.prototype, "disabled", void 0);
1740
1740
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamGoogleMapsPlacesAutoCompleteComponent, decorators: [{
1741
1741
  type: Component,
1742
- args: [{ selector: 'seam-google-maps-places-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'seamGoogleMapsPlacesAutoComplete', template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\n</div>\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\n<input #inp=\"seamInput\"\n seamInput\n seamGoogleMapsPlacesAutocomplete\n [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\"\n [attr.autocorrect]=\"autocorrect\"\n [attr.autocapitalize]=\"autocapitalize\"\n [options]=\"_options\"\n/>\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
1742
+ args: [{ selector: 'seam-google-maps-places-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'seamGoogleMapsPlacesAutoComplete', template: "<div *ngIf=\"icon\" class=\"search-container--icon-wrapper\">\r\n <seam-icon [icon]=\"icon\" class=\"text-muted\" size=\"lg\"></seam-icon>\r\n</div>\r\n<label *ngIf=\"label || placeholder\" [attr.for]=\"inp.id\" class=\"sr-only\">{{ label || placeholder }}</label>\r\n<input #inp=\"seamInput\"\r\n seamInput\r\n seamGoogleMapsPlacesAutocomplete\r\n [disabled]=\"disabled\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.autocorrect]=\"autocorrect\"\r\n [attr.autocapitalize]=\"autocapitalize\"\r\n [options]=\"_options\"\r\n/>\r\n", styles: [":host{position:relative;width:100%}:host>input{padding-left:40px}:host .search-container--icon-wrapper{position:absolute;top:6px;left:10px;bottom:0}:host .search-container--icon-wrapper ::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
1743
1743
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { label: [{
1744
1744
  type: Input
1745
1745
  }], icon: [{
@@ -1829,9 +1829,131 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
1829
1829
  }]
1830
1830
  }] });
1831
1831
 
1832
+ /**
1833
+ * Token for the config of the LazyMapsAPILoader. Please provide an object of
1834
+ * type {@link TheSeamLazyMapsApiLoader}.
1835
+ */
1836
+ const THESEAM_LAZY_MAPS_API_CONFIG = new InjectionToken('THESEAM_LAZY_MAPS_API_CONFIG');
1837
+ class TheSeamLazyMapsApiLoader extends TheSeamGoogleMapsApiLoader {
1838
+ constructor(_localeId, config) {
1839
+ super();
1840
+ this._localeId = _localeId;
1841
+ this.config = config;
1842
+ this._SCRIPT_ID = 'seamGoogleMapsApiScript';
1843
+ this.callbackName = `__seamLazyGoogleMapsApiLoader`;
1844
+ this._config = config || {};
1845
+ }
1846
+ load() {
1847
+ if (window.google && window.google.maps) {
1848
+ // Google maps already loaded on the page.
1849
+ return of(undefined);
1850
+ }
1851
+ if (this._scriptLoadingPromise) {
1852
+ return from(this._scriptLoadingPromise);
1853
+ }
1854
+ // This can happen in HMR situations or Stackblitz.io editors.
1855
+ const scriptOnPage = document.getElementById(this._SCRIPT_ID);
1856
+ if (scriptOnPage) {
1857
+ this._assignScriptLoadingPromise(scriptOnPage);
1858
+ return from(this._getScriptLoadingPromise());
1859
+ }
1860
+ const script = document.createElement('script');
1861
+ script.type = 'text/javascript';
1862
+ script.async = true;
1863
+ script.defer = true;
1864
+ script.id = this._SCRIPT_ID;
1865
+ script.src = this._getScriptSrc(this.callbackName);
1866
+ this._assignScriptLoadingPromise(script);
1867
+ document.body.appendChild(script);
1868
+ return from(this._getScriptLoadingPromise());
1869
+ }
1870
+ _assignScriptLoadingPromise(scriptElem) {
1871
+ this._scriptLoadingPromise = new Promise((resolve, reject) => {
1872
+ const win = window;
1873
+ win[this.callbackName] = () => { resolve(); };
1874
+ scriptElem.onerror = (error) => {
1875
+ reject(error);
1876
+ };
1877
+ });
1878
+ }
1879
+ _getScriptLoadingPromise() {
1880
+ if (!this._scriptLoadingPromise) {
1881
+ throw Error(`_scriptLoadingPromise has not been assigned.`);
1882
+ }
1883
+ return this._scriptLoadingPromise;
1884
+ }
1885
+ _getScriptSrc(callbackName) {
1886
+ const hostAndPath = this._config.url || 'https://maps.googleapis.com/maps/api/js';
1887
+ const queryParams = {
1888
+ v: this._config.apiVersion || 'quarterly',
1889
+ callback: callbackName,
1890
+ key: this._config.apiKey,
1891
+ client: this._config.clientId,
1892
+ channel: this._config.channel,
1893
+ libraries: this._config.libraries,
1894
+ region: this._config.region,
1895
+ language: this._config.language || (this._localeId !== 'en-US' ? this._localeId : null),
1896
+ };
1897
+ const params = Object.keys(queryParams)
1898
+ // Remove undefined or null params.
1899
+ .filter((k) => queryParams[k] !== undefined && queryParams[k] !== null)
1900
+ // Remove empty arrays.
1901
+ .filter((k) => {
1902
+ const param = queryParams[k];
1903
+ return !Array.isArray(param) || param.length > 0;
1904
+ })
1905
+ // Join arrays as comma seperated strings.
1906
+ .map((k) => {
1907
+ const param = queryParams[k];
1908
+ return { key: k, value: Array.isArray(param) ? param.join(',') : param };
1909
+ })
1910
+ .map((entry) => {
1911
+ return `${entry.key}=${entry.value}`;
1912
+ })
1913
+ .join('&');
1914
+ return `${hostAndPath}?${params}`;
1915
+ }
1916
+ }
1917
+ TheSeamLazyMapsApiLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamLazyMapsApiLoader, deps: [{ token: LOCALE_ID }, { token: THESEAM_LAZY_MAPS_API_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
1918
+ TheSeamLazyMapsApiLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamLazyMapsApiLoader });
1919
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamLazyMapsApiLoader, decorators: [{
1920
+ type: Injectable
1921
+ }], ctorParameters: function () {
1922
+ return [{ type: undefined, decorators: [{
1923
+ type: Inject,
1924
+ args: [LOCALE_ID]
1925
+ }] }, { type: undefined, decorators: [{
1926
+ type: Optional
1927
+ }, {
1928
+ type: Inject,
1929
+ args: [THESEAM_LAZY_MAPS_API_CONFIG]
1930
+ }] }];
1931
+ } });
1932
+
1933
+ /**
1934
+ * When using the TheSeamNoopGoogleMapsAPILoader, the Google Maps API must be
1935
+ * added to the page some other way before the map component is initialixed. One
1936
+ * way would be via a `<script>` Tag.
1937
+ */
1938
+ class TheSeamNoopGoogleMapsAPILoader extends TheSeamGoogleMapsApiLoader {
1939
+ load() {
1940
+ return defer(() => {
1941
+ if (!window.google || !window.google.maps) {
1942
+ return throwError(new Error('Google Maps API not loaded on page. Make sure window.google.maps is available.'));
1943
+ }
1944
+ return of(undefined);
1945
+ });
1946
+ }
1947
+ }
1948
+ TheSeamNoopGoogleMapsAPILoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamNoopGoogleMapsAPILoader, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1949
+ TheSeamNoopGoogleMapsAPILoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamNoopGoogleMapsAPILoader });
1950
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TheSeamNoopGoogleMapsAPILoader, decorators: [{
1951
+ type: Injectable
1952
+ }] });
1953
+
1832
1954
  /**
1833
1955
  * Generated bundle index. Do not edit.
1834
1956
  */
1835
1957
 
1836
- export { AppFeaturePropertyName, GoogleMapsContextMenu, GoogleMapsControlsService, GoogleMapsService, MapControlRef, MapValueManagerService, MapValueSource, SEAM_GOOGLE_PLACES_AUTOCOMPLETE_DEFAULT_OPTIONS, TheSeamGoogleMapsComponent, TheSeamGoogleMapsModule, TheSeamGoogleMapsPlacesAutoCompleteComponent, TheSeamGoogleMapsPlacesAutocompleteDirective, TheSeamGoogleMapsRecenterButtonControlComponent, TheSeamGoogleMapsUploadButtonControlComponent, TheSeamMapFileDropComponent, TheSeamMapsControlComponent, addInnerFeatureCutoutToExteriorFeature, createDataFeatureFromPolygon, createFeatureChangeObservable, featureContains, fixPathDifferentStartingAndEndingPoint, getBoundsWithAllFeatures, getFeatureBounds, getFeatureCenter, getFeaturesCount, getPossibleExteriorFeature, isAppFeatureProperty, isFeatureSelected, multiPolygonCoordinates, polygonCoordinates, polygonHasValidPathsLengths, removeAllFeatures, setFeatureSelected, stripAppFeaturePropertiesFromJson, toTurfJsFeature, toTurfJsMultiPolygon, toTurfJsPolygon };
1958
+ export { AppFeaturePropertyName, GoogleMapsContextMenu, GoogleMapsControlsService, GoogleMapsService, MapControlRef, MapValueManagerService, MapValueSource, SEAM_GOOGLE_PLACES_AUTOCOMPLETE_DEFAULT_OPTIONS, THESEAM_LAZY_MAPS_API_CONFIG, TheSeamGoogleMapsApiLoader, TheSeamGoogleMapsComponent, TheSeamGoogleMapsModule, TheSeamGoogleMapsPlacesAutoCompleteComponent, TheSeamGoogleMapsPlacesAutocompleteDirective, TheSeamGoogleMapsRecenterButtonControlComponent, TheSeamGoogleMapsUploadButtonControlComponent, TheSeamLazyMapsApiLoader, TheSeamMapFileDropComponent, TheSeamMapsControlComponent, TheSeamNoopGoogleMapsAPILoader, addInnerFeatureCutoutToExteriorFeature, createDataFeatureFromPolygon, createFeatureChangeObservable, featureContains, fixPathDifferentStartingAndEndingPoint, getBoundsWithAllFeatures, getFeatureBounds, getFeatureCenter, getFeaturesCount, getPossibleExteriorFeature, isAppFeatureProperty, isFeatureSelected, multiPolygonCoordinates, polygonCoordinates, polygonHasValidPathsLengths, removeAllFeatures, setFeatureSelected, stripAppFeaturePropertiesFromJson, toTurfJsFeature, toTurfJsMultiPolygon, toTurfJsPolygon };
1837
1959
  //# sourceMappingURL=theseam-ui-common-google-maps.mjs.map