{"version":3,"sources":["node_modules/@angular/google-maps/fesm2022/google-maps.mjs","libs/galaxy/input/src/core/core-input.directive.ts","libs/galaxy/input/src/input.interface.ts","libs/galaxy/input/src/input/input.component.ts","libs/galaxy/input/src/input/input.component.html","libs/galaxy/input/src/password-input/password-input.component.ts","libs/galaxy/input/src/password-input/password-input.component.html","libs/galaxy/input/src/phone-input/country-code-list.ts","libs/galaxy/input/src/phone-input/phone-input.component.ts","libs/galaxy/input/src/phone-input/phone-input.component.html","libs/galaxy/input/src/select-input/select-input.component.ts","libs/galaxy/input/src/select-input/select-input.component.html","libs/galaxy/input/src/input.module.ts","libs/forms/src/lib/controls/va-file-upload/file-upload.service.ts","libs/forms/src/lib/assets/i18n/en_devel.json","libs/forms/src/lib/controls/image-upload/image-upload.module.ts","node_modules/@angular/material-date-fns-adapter/fesm2022/material-date-fns-adapter.mjs","libs/forms/src/lib/controls/va-file-upload/va-file-upload.module.ts","libs/galaxy/datepicker/src/datepicker.module.ts","libs/galaxy/loading-spinner/src/loading-spinner.module.ts","libs/galaxy/button-group/src/button-group.module.ts","libs/galaxy/ai-text-button/src/ai-text-button.module.ts","libs/forms/src/lib/forms.module.ts","libs/forms/src/lib/validators/email.ts","libs/forms/src/lib/validators/url.ts","node_modules/uuid/dist/esm-browser/rng.js","node_modules/uuid/dist/esm-browser/regex.js","node_modules/uuid/dist/esm-browser/validate.js","node_modules/uuid/dist/esm-browser/stringify.js","node_modules/uuid/dist/esm-browser/v4.js"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { inject, NgZone, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, Directive, ContentChildren, NgModule, Injectable } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject, Observable, Subject, combineLatest } from 'rxjs';\nimport { switchMap, take, map, takeUntil } from 'rxjs/operators';\n\n/** Manages event on a Google Maps object, ensuring that events are added only when necessary. */\nconst _c0 = [\"*\"];\nclass MapEventManager {\n /** Clears all currently-registered event listeners. */\n _clearListeners() {\n for (const listener of this._listeners) {\n listener.remove();\n }\n this._listeners = [];\n }\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n /** Pending listeners that were added before the target was set. */\n this._pending = [];\n this._listeners = [];\n this._targetStream = new BehaviorSubject(undefined);\n }\n /** Gets an observable that adds an event listener to the map when a consumer subscribes to it. */\n getLazyEmitter(name) {\n return this._targetStream.pipe(switchMap(target => {\n const observable = new Observable(observer => {\n // If the target hasn't been initialized yet, cache the observer so it can be added later.\n if (!target) {\n this._pending.push({\n observable,\n observer\n });\n return undefined;\n }\n const listener = target.addListener(name, event => {\n this._ngZone.run(() => observer.next(event));\n });\n // If there's an error when initializing the Maps API (e.g. a wrong API key), it will\n // return a dummy object that returns `undefined` from `addListener` (see #26514).\n if (!listener) {\n observer.complete();\n return undefined;\n }\n this._listeners.push(listener);\n return () => listener.remove();\n });\n return observable;\n }));\n }\n /** Sets the current target that the manager should bind events to. */\n setTarget(target) {\n const currentTarget = this._targetStream.value;\n if (target === currentTarget) {\n return;\n }\n // Clear the listeners from the pre-existing target.\n if (currentTarget) {\n this._clearListeners();\n this._pending = [];\n }\n this._targetStream.next(target);\n // Add the listeners that were bound before the map was initialized.\n this._pending.forEach(subscriber => subscriber.observable.subscribe(subscriber.observer));\n this._pending = [];\n }\n /** Destroys the manager and clears the event listeners. */\n destroy() {\n this._clearListeners();\n this._pending = [];\n this._targetStream.complete();\n }\n}\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/** default options set to the Googleplex */\nconst DEFAULT_OPTIONS = {\n center: {\n lat: 37.421995,\n lng: -122.084092\n },\n zoom: 17,\n // Note: the type conversion here isn't necessary for our CI, but it resolves a g3 failure.\n mapTypeId: 'roadmap'\n};\n/** Arbitrary default height for the map element */\nconst DEFAULT_HEIGHT = '500px';\n/** Arbitrary default width for the map element */\nconst DEFAULT_WIDTH = '500px';\n/**\n * Angular component that renders a Google Map via the Google Maps JavaScript\n * API.\n * @see https://developers.google.com/maps/documentation/javascript/reference/\n */\nlet GoogleMap = /*#__PURE__*/(() => {\n class GoogleMap {\n set center(center) {\n this._center = center;\n }\n set zoom(zoom) {\n this._zoom = zoom;\n }\n set options(options) {\n this._options = options || DEFAULT_OPTIONS;\n }\n constructor(_elementRef, _ngZone, platformId) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(inject(NgZone));\n /** Height of the map. Set this to `null` if you'd like to control the height through CSS. */\n this.height = DEFAULT_HEIGHT;\n /** Width of the map. Set this to `null` if you'd like to control the width through CSS. */\n this.width = DEFAULT_WIDTH;\n this._options = DEFAULT_OPTIONS;\n /** Event emitted when the map is initialized. */\n this.mapInitialized = new EventEmitter();\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/events#auth-errors\n */\n this.authFailure = new EventEmitter();\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.bounds_changed\n */\n this.boundsChanged = this._eventManager.getLazyEmitter('bounds_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.center_changed\n */\n this.centerChanged = this._eventManager.getLazyEmitter('center_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.click\n */\n this.mapClick = this._eventManager.getLazyEmitter('click');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dblclick\n */\n this.mapDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.drag\n */\n this.mapDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dragend\n */\n this.mapDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.dragstart\n */\n this.mapDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.heading_changed\n */\n this.headingChanged = this._eventManager.getLazyEmitter('heading_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.idle\n */\n this.idle = this._eventManager.getLazyEmitter('idle');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.maptypeid_changed\n */\n this.maptypeidChanged = this._eventManager.getLazyEmitter('maptypeid_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mousemove\n */\n this.mapMousemove = this._eventManager.getLazyEmitter('mousemove');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mouseout\n */\n this.mapMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mouseover\n */\n this.mapMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/map#Map.projection_changed\n */\n this.projectionChanged = this._eventManager.getLazyEmitter('projection_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.rightclick\n */\n this.mapRightclick = this._eventManager.getLazyEmitter('rightclick');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.tilesloaded\n */\n this.tilesloaded = this._eventManager.getLazyEmitter('tilesloaded');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.tilt_changed\n */\n this.tiltChanged = this._eventManager.getLazyEmitter('tilt_changed');\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.zoom_changed\n */\n this.zoomChanged = this._eventManager.getLazyEmitter('zoom_changed');\n this._isBrowser = isPlatformBrowser(platformId);\n if (this._isBrowser) {\n const googleMapsWindow = window;\n if (!googleMapsWindow.google && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Namespace google not found, cannot construct embedded google ' + 'map. Please install the Google Maps JavaScript API: ' + 'https://developers.google.com/maps/documentation/javascript/' + 'tutorial#Loading_the_Maps_API');\n }\n this._existingAuthFailureCallback = googleMapsWindow.gm_authFailure;\n googleMapsWindow.gm_authFailure = () => {\n if (this._existingAuthFailureCallback) {\n this._existingAuthFailureCallback();\n }\n this.authFailure.emit();\n };\n }\n }\n ngOnChanges(changes) {\n if (changes['height'] || changes['width']) {\n this._setSize();\n }\n const googleMap = this.googleMap;\n if (googleMap) {\n if (changes['options']) {\n googleMap.setOptions(this._combineOptions());\n }\n if (changes['center'] && this._center) {\n googleMap.setCenter(this._center);\n }\n // Note that the zoom can be zero.\n if (changes['zoom'] && this._zoom != null) {\n googleMap.setZoom(this._zoom);\n }\n if (changes['mapTypeId'] && this.mapTypeId) {\n googleMap.setMapTypeId(this.mapTypeId);\n }\n }\n }\n ngOnInit() {\n // It should be a noop during server-side rendering.\n if (this._isBrowser) {\n this._mapEl = this._elementRef.nativeElement.querySelector('.map-container');\n this._setSize();\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n if (google.maps.Map) {\n this._initialize(google.maps.Map);\n } else {\n this._ngZone.runOutsideAngular(() => {\n google.maps.importLibrary('maps').then(lib => this._initialize(lib.Map));\n });\n }\n }\n }\n _initialize(mapConstructor) {\n this._ngZone.runOutsideAngular(() => {\n this.googleMap = new mapConstructor(this._mapEl, this._combineOptions());\n this._eventManager.setTarget(this.googleMap);\n this.mapInitialized.emit(this.googleMap);\n });\n }\n ngOnDestroy() {\n this.mapInitialized.complete();\n this._eventManager.destroy();\n if (this._isBrowser) {\n const googleMapsWindow = window;\n googleMapsWindow.gm_authFailure = this._existingAuthFailureCallback;\n }\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.fitBounds\n */\n fitBounds(bounds, padding) {\n this._assertInitialized();\n this.googleMap.fitBounds(bounds, padding);\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panBy\n */\n panBy(x, y) {\n this._assertInitialized();\n this.googleMap.panBy(x, y);\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panTo\n */\n panTo(latLng) {\n this._assertInitialized();\n this.googleMap.panTo(latLng);\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.panToBounds\n */\n panToBounds(latLngBounds, padding) {\n this._assertInitialized();\n this.googleMap.panToBounds(latLngBounds, padding);\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getBounds\n */\n getBounds() {\n this._assertInitialized();\n return this.googleMap.getBounds() || null;\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getCenter\n */\n getCenter() {\n this._assertInitialized();\n return this.googleMap.getCenter();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getClickableIcons\n */\n getClickableIcons() {\n this._assertInitialized();\n return this.googleMap.getClickableIcons();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getHeading\n */\n getHeading() {\n this._assertInitialized();\n return this.googleMap.getHeading();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getMapTypeId\n */\n getMapTypeId() {\n this._assertInitialized();\n return this.googleMap.getMapTypeId();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getProjection\n */\n getProjection() {\n this._assertInitialized();\n return this.googleMap.getProjection() || null;\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getStreetView\n */\n getStreetView() {\n this._assertInitialized();\n return this.googleMap.getStreetView();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getTilt\n */\n getTilt() {\n this._assertInitialized();\n return this.googleMap.getTilt();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.getZoom\n */\n getZoom() {\n this._assertInitialized();\n return this.googleMap.getZoom();\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.controls\n */\n get controls() {\n this._assertInitialized();\n return this.googleMap.controls;\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.data\n */\n get data() {\n this._assertInitialized();\n return this.googleMap.data;\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.mapTypes\n */\n get mapTypes() {\n this._assertInitialized();\n return this.googleMap.mapTypes;\n }\n /**\n * See\n * https://developers.google.com/maps/documentation/javascript/reference/map#Map.overlayMapTypes\n */\n get overlayMapTypes() {\n this._assertInitialized();\n return this.googleMap.overlayMapTypes;\n }\n /** Returns a promise that resolves when the map has been initialized. */\n _resolveMap() {\n return this.googleMap ? Promise.resolve(this.googleMap) : this.mapInitialized.pipe(take(1)).toPromise();\n }\n _setSize() {\n if (this._mapEl) {\n const styles = this._mapEl.style;\n styles.height = this.height === null ? '' : coerceCssPixelValue(this.height) || DEFAULT_HEIGHT;\n styles.width = this.width === null ? '' : coerceCssPixelValue(this.width) || DEFAULT_WIDTH;\n }\n }\n /** Combines the center and zoom and the other map options into a single object */\n _combineOptions() {\n const options = this._options || {};\n return {\n ...options,\n // It's important that we set **some** kind of `center` and `zoom`, otherwise\n // Google Maps will render a blank rectangle which looks broken.\n center: this._center || options.center || DEFAULT_OPTIONS.center,\n zoom: this._zoom ?? options.zoom ?? DEFAULT_OPTIONS.zoom,\n // Passing in an undefined `mapTypeId` seems to break tile loading\n // so make sure that we have some kind of default (see #22082).\n mapTypeId: this.mapTypeId || options.mapTypeId || DEFAULT_OPTIONS.mapTypeId,\n mapId: this.mapId || options.mapId\n };\n }\n /** Asserts that the map has been initialized. */\n _assertInitialized() {\n if (!this.googleMap && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' + 'Please wait for the API to load before trying to interact with it.');\n }\n }\n static {\n this.ɵfac = function GoogleMap_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GoogleMap)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(PLATFORM_ID));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: GoogleMap,\n selectors: [[\"google-map\"]],\n inputs: {\n height: \"height\",\n width: \"width\",\n mapId: \"mapId\",\n mapTypeId: \"mapTypeId\",\n center: \"center\",\n zoom: \"zoom\",\n options: \"options\"\n },\n outputs: {\n mapInitialized: \"mapInitialized\",\n authFailure: \"authFailure\",\n boundsChanged: \"boundsChanged\",\n centerChanged: \"centerChanged\",\n mapClick: \"mapClick\",\n mapDblclick: \"mapDblclick\",\n mapDrag: \"mapDrag\",\n mapDragend: \"mapDragend\",\n mapDragstart: \"mapDragstart\",\n headingChanged: \"headingChanged\",\n idle: \"idle\",\n maptypeidChanged: \"maptypeidChanged\",\n mapMousemove: \"mapMousemove\",\n mapMouseout: \"mapMouseout\",\n mapMouseover: \"mapMouseover\",\n projectionChanged: \"projectionChanged\",\n mapRightclick: \"mapRightclick\",\n tilesloaded: \"tilesloaded\",\n tiltChanged: \"tiltChanged\",\n zoomChanged: \"zoomChanged\"\n },\n exportAs: [\"googleMap\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 2,\n vars: 0,\n consts: [[1, \"map-container\"]],\n template: function GoogleMap_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelement(0, \"div\", 0);\n i0.ɵɵprojection(1);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return GoogleMap;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst cssUnitsPattern = /([A-Za-z%]+)$/;\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return cssUnitsPattern.test(value) ? value : `${value}px`;\n}\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\nlet MapBaseLayer = /*#__PURE__*/(() => {\n class MapBaseLayer {\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._ngZone.runOutsideAngular(() => {\n this._initializeObject();\n });\n this._assertInitialized();\n this._setMap();\n }\n }\n ngOnDestroy() {\n this._unsetMap();\n }\n _assertInitialized() {\n if (!this._map.googleMap) {\n throw Error('Cannot access Google Map information before the API has been initialized. ' + 'Please wait for the API to load before trying to interact with it.');\n }\n }\n _initializeObject() {}\n _setMap() {}\n _unsetMap() {}\n static {\n this.ɵfac = function MapBaseLayer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapBaseLayer)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapBaseLayer,\n selectors: [[\"map-base-layer\"]],\n exportAs: [\"mapBaseLayer\"],\n standalone: true\n });\n }\n }\n return MapBaseLayer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular component that renders a Google Maps Bicycling Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#BicyclingLayer\n */\nlet MapBicyclingLayer = /*#__PURE__*/(() => {\n class MapBicyclingLayer {\n constructor() {\n this._map = inject(GoogleMap);\n this._zone = inject(NgZone);\n /** Event emitted when the bicycling layer is initialized. */\n this.bicyclingLayerInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n if (google.maps.BicyclingLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.BicyclingLayer);\n } else {\n this._zone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(([map, lib]) => {\n this._initialize(map, lib.BicyclingLayer);\n });\n });\n }\n }\n }\n _initialize(map, layerConstructor) {\n this._zone.runOutsideAngular(() => {\n this.bicyclingLayer = new layerConstructor();\n this.bicyclingLayerInitialized.emit(this.bicyclingLayer);\n this._assertLayerInitialized();\n this.bicyclingLayer.setMap(map);\n });\n }\n ngOnDestroy() {\n this.bicyclingLayer?.setMap(null);\n }\n _assertLayerInitialized() {\n if (!this.bicyclingLayer) {\n throw Error('Cannot interact with a Google Map Bicycling Layer before it has been initialized. ' + 'Please wait for the Transit Layer to load before trying to interact with it.');\n }\n }\n static {\n this.ɵfac = function MapBicyclingLayer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapBicyclingLayer)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapBicyclingLayer,\n selectors: [[\"map-bicycling-layer\"]],\n outputs: {\n bicyclingLayerInitialized: \"bicyclingLayerInitialized\"\n },\n exportAs: [\"mapBicyclingLayer\"],\n standalone: true\n });\n }\n }\n return MapBicyclingLayer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular component that renders a Google Maps Circle via the Google Maps JavaScript API.\n * @see developers.google.com/maps/documentation/javascript/reference/polygon#Circle\n */\nlet MapCircle = /*#__PURE__*/(() => {\n class MapCircle {\n set options(options) {\n this._options.next(options || {});\n }\n set center(center) {\n this._center.next(center);\n }\n set radius(radius) {\n this._radius.next(radius);\n }\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(inject(NgZone));\n this._options = new BehaviorSubject({});\n this._center = new BehaviorSubject(undefined);\n this._radius = new BehaviorSubject(undefined);\n this._destroyed = new Subject();\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.center_changed\n */\n this.centerChanged = this._eventManager.getLazyEmitter('center_changed');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.click\n */\n this.circleClick = this._eventManager.getLazyEmitter('click');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dblclick\n */\n this.circleDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.drag\n */\n this.circleDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dragend\n */\n this.circleDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.dragstart\n */\n this.circleDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mousedown\n */\n this.circleMousedown = this._eventManager.getLazyEmitter('mousedown');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mousemove\n */\n this.circleMousemove = this._eventManager.getLazyEmitter('mousemove');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseout\n */\n this.circleMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseover\n */\n this.circleMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.mouseup\n */\n this.circleMouseup = this._eventManager.getLazyEmitter('mouseup');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.radius_changed\n */\n this.radiusChanged = this._eventManager.getLazyEmitter('radius_changed');\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.rightclick\n */\n this.circleRightclick = this._eventManager.getLazyEmitter('rightclick');\n /** Event emitted when the circle is initialized. */\n this.circleInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (!this._map._isBrowser) {\n return;\n }\n this._combineOptions().pipe(take(1)).subscribe(options => {\n if (google.maps.Circle && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Circle, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(([map, lib]) => {\n this._initialize(map, lib.Circle, options);\n });\n });\n }\n });\n }\n _initialize(map, circleConstructor, options) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.circle = new circleConstructor(options);\n this._assertInitialized();\n this.circle.setMap(map);\n this._eventManager.setTarget(this.circle);\n this.circleInitialized.emit(this.circle);\n this._watchForOptionsChanges();\n this._watchForCenterChanges();\n this._watchForRadiusChanges();\n });\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.circle?.setMap(null);\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getBounds\n */\n getBounds() {\n this._assertInitialized();\n return this.circle.getBounds();\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getCenter\n */\n getCenter() {\n this._assertInitialized();\n return this.circle.getCenter();\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getDraggable\n */\n getDraggable() {\n this._assertInitialized();\n return this.circle.getDraggable();\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getEditable\n */\n getEditable() {\n this._assertInitialized();\n return this.circle.getEditable();\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getRadius\n */\n getRadius() {\n this._assertInitialized();\n return this.circle.getRadius();\n }\n /**\n * @see\n * developers.google.com/maps/documentation/javascript/reference/polygon#Circle.getVisible\n */\n getVisible() {\n this._assertInitialized();\n return this.circle.getVisible();\n }\n _combineOptions() {\n return combineLatest([this._options, this._center, this._radius]).pipe(map(([options, center, radius]) => {\n const combinedOptions = {\n ...options,\n center: center || options.center,\n radius: radius !== undefined ? radius : options.radius\n };\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.circle.setOptions(options);\n });\n }\n _watchForCenterChanges() {\n this._center.pipe(takeUntil(this._destroyed)).subscribe(center => {\n if (center) {\n this._assertInitialized();\n this.circle.setCenter(center);\n }\n });\n }\n _watchForRadiusChanges() {\n this._radius.pipe(takeUntil(this._destroyed)).subscribe(radius => {\n if (radius !== undefined) {\n this._assertInitialized();\n this.circle.setRadius(radius);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.circle) {\n throw Error('Cannot interact with a Google Map Circle before it has been ' + 'initialized. Please wait for the Circle to load before trying to interact with it.');\n }\n }\n }\n static {\n this.ɵfac = function MapCircle_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapCircle)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapCircle,\n selectors: [[\"map-circle\"]],\n inputs: {\n options: \"options\",\n center: \"center\",\n radius: \"radius\"\n },\n outputs: {\n centerChanged: \"centerChanged\",\n circleClick: \"circleClick\",\n circleDblclick: \"circleDblclick\",\n circleDrag: \"circleDrag\",\n circleDragend: \"circleDragend\",\n circleDragstart: \"circleDragstart\",\n circleMousedown: \"circleMousedown\",\n circleMousemove: \"circleMousemove\",\n circleMouseout: \"circleMouseout\",\n circleMouseover: \"circleMouseover\",\n circleMouseup: \"circleMouseup\",\n radiusChanged: \"radiusChanged\",\n circleRightclick: \"circleRightclick\",\n circleInitialized: \"circleInitialized\"\n },\n exportAs: [\"mapCircle\"],\n standalone: true\n });\n }\n }\n return MapCircle;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular component that renders a Google Maps Directions Renderer via the Google Maps\n * JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/directions#DirectionsRenderer\n */\nlet MapDirectionsRenderer = /*#__PURE__*/(() => {\n class MapDirectionsRenderer {\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRendererOptions.directions\n */\n set directions(directions) {\n this._directions = directions;\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRendererOptions\n */\n set options(options) {\n this._options = options;\n }\n constructor(_googleMap, _ngZone) {\n this._googleMap = _googleMap;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(inject(NgZone));\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.directions_changed\n */\n this.directionsChanged = this._eventManager.getLazyEmitter('directions_changed');\n /** Event emitted when the directions renderer is initialized. */\n this.directionsRendererInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n if (google.maps.DirectionsRenderer && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.DirectionsRenderer);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._googleMap._resolveMap(), google.maps.importLibrary('routes')]).then(([map, lib]) => {\n this._initialize(map, lib.DirectionsRenderer);\n });\n });\n }\n }\n }\n _initialize(map, rendererConstructor) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.directionsRenderer = new rendererConstructor(this._combineOptions());\n this._assertInitialized();\n this.directionsRenderer.setMap(map);\n this._eventManager.setTarget(this.directionsRenderer);\n this.directionsRendererInitialized.emit(this.directionsRenderer);\n });\n }\n ngOnChanges(changes) {\n if (this.directionsRenderer) {\n if (changes['options']) {\n this.directionsRenderer.setOptions(this._combineOptions());\n }\n if (changes['directions'] && this._directions !== undefined) {\n this.directionsRenderer.setDirections(this._directions);\n }\n }\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this.directionsRenderer?.setMap(null);\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getDirections\n */\n getDirections() {\n this._assertInitialized();\n return this.directionsRenderer.getDirections();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getPanel\n */\n getPanel() {\n this._assertInitialized();\n return this.directionsRenderer.getPanel();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsRenderer.getRouteIndex\n */\n getRouteIndex() {\n this._assertInitialized();\n return this.directionsRenderer.getRouteIndex();\n }\n _combineOptions() {\n const options = this._options || {};\n return {\n ...options,\n directions: this._directions || options.directions,\n map: this._googleMap.googleMap\n };\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.directionsRenderer) {\n throw Error('Cannot interact with a Google Map Directions Renderer before it has been ' + 'initialized. Please wait for the Directions Renderer to load before trying ' + 'to interact with it.');\n }\n }\n }\n static {\n this.ɵfac = function MapDirectionsRenderer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapDirectionsRenderer)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapDirectionsRenderer,\n selectors: [[\"map-directions-renderer\"]],\n inputs: {\n directions: \"directions\",\n options: \"options\"\n },\n outputs: {\n directionsChanged: \"directionsChanged\",\n directionsRendererInitialized: \"directionsRendererInitialized\"\n },\n exportAs: [\"mapDirectionsRenderer\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return MapDirectionsRenderer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular component that renders a Google Maps Ground Overlay via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/image-overlay#GroundOverlay\n */\nlet MapGroundOverlay = /*#__PURE__*/(() => {\n class MapGroundOverlay {\n /** URL of the image that will be shown in the overlay. */\n set url(url) {\n this._url.next(url);\n }\n /** Bounds for the overlay. */\n get bounds() {\n return this._bounds.value;\n }\n set bounds(bounds) {\n this._bounds.next(bounds);\n }\n /** Opacity of the overlay. */\n set opacity(opacity) {\n this._opacity.next(opacity);\n }\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(inject(NgZone));\n this._opacity = new BehaviorSubject(1);\n this._url = new BehaviorSubject('');\n this._bounds = new BehaviorSubject(undefined);\n this._destroyed = new Subject();\n /** Whether the overlay is clickable */\n this.clickable = false;\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay#GroundOverlay.click\n */\n this.mapClick = this._eventManager.getLazyEmitter('click');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.dblclick\n */\n this.mapDblclick = this._eventManager.getLazyEmitter('dblclick');\n /** Event emitted when the ground overlay is initialized. */\n this.groundOverlayInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n // The ground overlay setup is slightly different from the other Google Maps objects in that\n // we have to recreate the `GroundOverlay` object whenever the bounds change, because\n // Google Maps doesn't provide an API to update the bounds of an existing overlay.\n this._bounds.pipe(takeUntil(this._destroyed)).subscribe(bounds => {\n if (this.groundOverlay) {\n this.groundOverlay.setMap(null);\n this.groundOverlay = undefined;\n }\n if (!bounds) {\n return;\n }\n if (google.maps.GroundOverlay && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.GroundOverlay, bounds);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(([map, lib]) => {\n this._initialize(map, lib.GroundOverlay, bounds);\n });\n });\n }\n });\n }\n }\n _initialize(map, overlayConstructor, bounds) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.groundOverlay = new overlayConstructor(this._url.getValue(), bounds, {\n clickable: this.clickable,\n opacity: this._opacity.value\n });\n this._assertInitialized();\n this.groundOverlay.setMap(map);\n this._eventManager.setTarget(this.groundOverlay);\n this.groundOverlayInitialized.emit(this.groundOverlay);\n // We only need to set up the watchers once.\n if (!this._hasWatchers) {\n this._hasWatchers = true;\n this._watchForOpacityChanges();\n this._watchForUrlChanges();\n }\n });\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.groundOverlay?.setMap(null);\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getBounds\n */\n getBounds() {\n this._assertInitialized();\n return this.groundOverlay.getBounds();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getOpacity\n */\n getOpacity() {\n this._assertInitialized();\n return this.groundOverlay.getOpacity();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/image-overlay\n * #GroundOverlay.getUrl\n */\n getUrl() {\n this._assertInitialized();\n return this.groundOverlay.getUrl();\n }\n _watchForOpacityChanges() {\n this._opacity.pipe(takeUntil(this._destroyed)).subscribe(opacity => {\n if (opacity != null) {\n this.groundOverlay?.setOpacity(opacity);\n }\n });\n }\n _watchForUrlChanges() {\n this._url.pipe(takeUntil(this._destroyed)).subscribe(url => {\n const overlay = this.groundOverlay;\n if (overlay) {\n overlay.set('url', url);\n // Google Maps only redraws the overlay if we re-set the map.\n overlay.setMap(null);\n overlay.setMap(this._map.googleMap);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.groundOverlay) {\n throw Error('Cannot interact with a Google Map GroundOverlay before it has been initialized. ' + 'Please wait for the GroundOverlay to load before trying to interact with it.');\n }\n }\n }\n static {\n this.ɵfac = function MapGroundOverlay_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapGroundOverlay)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapGroundOverlay,\n selectors: [[\"map-ground-overlay\"]],\n inputs: {\n url: \"url\",\n bounds: \"bounds\",\n clickable: \"clickable\",\n opacity: \"opacity\"\n },\n outputs: {\n mapClick: \"mapClick\",\n mapDblclick: \"mapDblclick\",\n groundOverlayInitialized: \"groundOverlayInitialized\"\n },\n exportAs: [\"mapGroundOverlay\"],\n standalone: true\n });\n }\n }\n return MapGroundOverlay;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular component that renders a Google Maps info window via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/info-window\n */\nlet MapInfoWindow = /*#__PURE__*/(() => {\n class MapInfoWindow {\n set options(options) {\n this._options.next(options || {});\n }\n set position(position) {\n this._position.next(position);\n }\n constructor(_googleMap, _elementRef, _ngZone) {\n this._googleMap = _googleMap;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(inject(NgZone));\n this._options = new BehaviorSubject({});\n this._position = new BehaviorSubject(undefined);\n this._destroy = new Subject();\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.closeclick\n */\n this.closeclick = this._eventManager.getLazyEmitter('closeclick');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.content_changed\n */\n this.contentChanged = this._eventManager.getLazyEmitter('content_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.domready\n */\n this.domready = this._eventManager.getLazyEmitter('domready');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.position_changed\n */\n this.positionChanged = this._eventManager.getLazyEmitter('position_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.zindex_changed\n */\n this.zindexChanged = this._eventManager.getLazyEmitter('zindex_changed');\n /** Event emitted when the info window is initialized. */\n this.infoWindowInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n if (google.maps.InfoWindow) {\n this._initialize(google.maps.InfoWindow, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n google.maps.importLibrary('maps').then(lib => {\n this._initialize(lib.InfoWindow, options);\n });\n });\n }\n });\n }\n }\n _initialize(infoWindowConstructor, options) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.infoWindow = new infoWindowConstructor(options);\n this._eventManager.setTarget(this.infoWindow);\n this.infoWindowInitialized.emit(this.infoWindow);\n this._watchForOptionsChanges();\n this._watchForPositionChanges();\n });\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroy.next();\n this._destroy.complete();\n // If no info window has been created on the server, we do not try closing it.\n // On the server, an info window cannot be created and this would cause errors.\n if (this.infoWindow) {\n this.close();\n }\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.close\n */\n close() {\n this._assertInitialized();\n this.infoWindow.close();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.getContent\n */\n getContent() {\n this._assertInitialized();\n return this.infoWindow.getContent() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window\n * #InfoWindow.getPosition\n */\n getPosition() {\n this._assertInitialized();\n return this.infoWindow.getPosition() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/info-window#InfoWindow.getZIndex\n */\n getZIndex() {\n this._assertInitialized();\n return this.infoWindow.getZIndex();\n }\n /**\n * Opens the MapInfoWindow using the provided AdvancedMarkerElement.\n * @deprecated Use the `open` method instead.\n * @breaking-change 20.0.0\n */\n openAdvancedMarkerElement(advancedMarkerElement, content) {\n this.open({\n getAnchor: () => advancedMarkerElement\n }, undefined, content);\n }\n /**\n * Opens the MapInfoWindow using the provided anchor. If the anchor is not set,\n * then the position property of the options input is used instead.\n */\n open(anchor, shouldFocus, content) {\n this._assertInitialized();\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && anchor && !anchor.getAnchor) {\n throw new Error('Specified anchor does not implement the `getAnchor` method. ' + 'It cannot be used to open an info window.');\n }\n const anchorObject = anchor ? anchor.getAnchor() : undefined;\n // Prevent the info window from initializing when trying to reopen on the same anchor.\n // Note that when the window is opened for the first time, the anchor will always be\n // undefined. If that's the case, we have to allow it to open in order to handle the\n // case where the window doesn't have an anchor, but is placed at a particular position.\n if (this.infoWindow.get('anchor') !== anchorObject || !anchorObject) {\n this._elementRef.nativeElement.style.display = '';\n if (content) {\n this.infoWindow.setContent(content);\n }\n this.infoWindow.open({\n map: this._googleMap.googleMap,\n anchor: anchorObject,\n shouldFocus\n });\n }\n }\n _combineOptions() {\n return combineLatest([this._options, this._position]).pipe(map(([options, position]) => {\n const combinedOptions = {\n ...options,\n position: position || options.position,\n content: this._elementRef.nativeElement\n };\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroy)).subscribe(options => {\n this._assertInitialized();\n this.infoWindow.setOptions(options);\n });\n }\n _watchForPositionChanges() {\n this._position.pipe(takeUntil(this._destroy)).subscribe(position => {\n if (position) {\n this._assertInitialized();\n this.infoWindow.setPosition(position);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.infoWindow) {\n throw Error('Cannot interact with a Google Map Info Window before it has been ' + 'initialized. Please wait for the Info Window to load before trying to interact with ' + 'it.');\n }\n }\n }\n static {\n this.ɵfac = function MapInfoWindow_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapInfoWindow)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapInfoWindow,\n selectors: [[\"map-info-window\"]],\n hostAttrs: [2, \"display\", \"none\"],\n inputs: {\n options: \"options\",\n position: \"position\"\n },\n outputs: {\n closeclick: \"closeclick\",\n contentChanged: \"contentChanged\",\n domready: \"domready\",\n positionChanged: \"positionChanged\",\n zindexChanged: \"zindexChanged\",\n infoWindowInitialized: \"infoWindowInitialized\"\n },\n exportAs: [\"mapInfoWindow\"],\n standalone: true\n });\n }\n }\n return MapInfoWindow;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular component that renders a Google Maps KML Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer\n */\nlet MapKmlLayer = /*#__PURE__*/(() => {\n class MapKmlLayer {\n set options(options) {\n this._options.next(options || {});\n }\n set url(url) {\n this._url.next(url);\n }\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(inject(NgZone));\n this._options = new BehaviorSubject({});\n this._url = new BehaviorSubject('');\n this._destroyed = new Subject();\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.click\n */\n this.kmlClick = this._eventManager.getLazyEmitter('click');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/kml\n * #KmlLayer.defaultviewport_changed\n */\n this.defaultviewportChanged = this._eventManager.getLazyEmitter('defaultviewport_changed');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.status_changed\n */\n this.statusChanged = this._eventManager.getLazyEmitter('status_changed');\n /** Event emitted when the KML layer is initialized. */\n this.kmlLayerInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n if (google.maps.KmlLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.KmlLayer, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(([map, lib]) => {\n this._initialize(map, lib.KmlLayer, options);\n });\n });\n }\n });\n }\n }\n _initialize(map, layerConstructor, options) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.kmlLayer = new layerConstructor(options);\n this._assertInitialized();\n this.kmlLayer.setMap(map);\n this._eventManager.setTarget(this.kmlLayer);\n this.kmlLayerInitialized.emit(this.kmlLayer);\n this._watchForOptionsChanges();\n this._watchForUrlChanges();\n });\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.kmlLayer?.setMap(null);\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getDefaultViewport\n */\n getDefaultViewport() {\n this._assertInitialized();\n return this.kmlLayer.getDefaultViewport();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getMetadata\n */\n getMetadata() {\n this._assertInitialized();\n return this.kmlLayer.getMetadata();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getStatus\n */\n getStatus() {\n this._assertInitialized();\n return this.kmlLayer.getStatus();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getUrl\n */\n getUrl() {\n this._assertInitialized();\n return this.kmlLayer.getUrl();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/kml#KmlLayer.getZIndex\n */\n getZIndex() {\n this._assertInitialized();\n return this.kmlLayer.getZIndex();\n }\n _combineOptions() {\n return combineLatest([this._options, this._url]).pipe(map(([options, url]) => {\n const combinedOptions = {\n ...options,\n url: url || options.url\n };\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n if (this.kmlLayer) {\n this._assertInitialized();\n this.kmlLayer.setOptions(options);\n }\n });\n }\n _watchForUrlChanges() {\n this._url.pipe(takeUntil(this._destroyed)).subscribe(url => {\n if (url && this.kmlLayer) {\n this._assertInitialized();\n this.kmlLayer.setUrl(url);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.kmlLayer) {\n throw Error('Cannot interact with a Google Map KmlLayer before it has been ' + 'initialized. Please wait for the KmlLayer to load before trying to interact with it.');\n }\n }\n }\n static {\n this.ɵfac = function MapKmlLayer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapKmlLayer)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapKmlLayer,\n selectors: [[\"map-kml-layer\"]],\n inputs: {\n options: \"options\",\n url: \"url\"\n },\n outputs: {\n kmlClick: \"kmlClick\",\n defaultviewportChanged: \"defaultviewportChanged\",\n statusChanged: \"statusChanged\",\n kmlLayerInitialized: \"kmlLayerInitialized\"\n },\n exportAs: [\"mapKmlLayer\"],\n standalone: true\n });\n }\n }\n return MapKmlLayer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Default options for the Google Maps marker component. Displays a marker\n * at the Googleplex.\n */\nconst DEFAULT_MARKER_OPTIONS$1 = {\n position: {\n lat: 37.421995,\n lng: -122.084092\n }\n};\n/**\n * Angular component that renders a Google Maps marker via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/marker\n */\nlet MapMarker = /*#__PURE__*/(() => {\n class MapMarker {\n /**\n * Title of the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.title\n */\n set title(title) {\n this._title = title;\n }\n /**\n * Position of the marker. See:\n * developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.position\n */\n set position(position) {\n this._position = position;\n }\n /**\n * Label for the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.label\n */\n set label(label) {\n this._label = label;\n }\n /**\n * Whether the marker is clickable. See:\n * developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.clickable\n */\n set clickable(clickable) {\n this._clickable = clickable;\n }\n /**\n * Options used to configure the marker.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions\n */\n set options(options) {\n this._options = options;\n }\n /**\n * Icon to be used for the marker.\n * See: https://developers.google.com/maps/documentation/javascript/reference/marker#Icon\n */\n set icon(icon) {\n this._icon = icon;\n }\n /**\n * Whether the marker is visible.\n * See: developers.google.com/maps/documentation/javascript/reference/marker#MarkerOptions.visible\n */\n set visible(value) {\n this._visible = value;\n }\n constructor(_googleMap, _ngZone) {\n this._googleMap = _googleMap;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(inject(NgZone));\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.animation_changed\n */\n this.animationChanged = this._eventManager.getLazyEmitter('animation_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.click\n */\n this.mapClick = this._eventManager.getLazyEmitter('click');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.clickable_changed\n */\n this.clickableChanged = this._eventManager.getLazyEmitter('clickable_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.cursor_changed\n */\n this.cursorChanged = this._eventManager.getLazyEmitter('cursor_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dblclick\n */\n this.mapDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.drag\n */\n this.mapDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dragend\n */\n this.mapDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.draggable_changed\n */\n this.draggableChanged = this._eventManager.getLazyEmitter('draggable_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.dragstart\n */\n this.mapDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.flat_changed\n */\n this.flatChanged = this._eventManager.getLazyEmitter('flat_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.icon_changed\n */\n this.iconChanged = this._eventManager.getLazyEmitter('icon_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mousedown\n */\n this.mapMousedown = this._eventManager.getLazyEmitter('mousedown');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseout\n */\n this.mapMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseover\n */\n this.mapMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.mouseup\n */\n this.mapMouseup = this._eventManager.getLazyEmitter('mouseup');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.position_changed\n */\n this.positionChanged = this._eventManager.getLazyEmitter('position_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.rightclick\n */\n this.mapRightclick = this._eventManager.getLazyEmitter('rightclick');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.shape_changed\n */\n this.shapeChanged = this._eventManager.getLazyEmitter('shape_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.title_changed\n */\n this.titleChanged = this._eventManager.getLazyEmitter('title_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.visible_changed\n */\n this.visibleChanged = this._eventManager.getLazyEmitter('visible_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.zindex_changed\n */\n this.zindexChanged = this._eventManager.getLazyEmitter('zindex_changed');\n /** Event emitted when the marker is initialized. */\n this.markerInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (!this._googleMap._isBrowser) {\n return;\n }\n if (google.maps.Marker && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.Marker);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._googleMap._resolveMap(), google.maps.importLibrary('marker')]).then(([map, lib]) => {\n this._initialize(map, lib.Marker);\n });\n });\n }\n }\n _initialize(map, markerConstructor) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.marker = new markerConstructor(this._combineOptions());\n this._assertInitialized();\n this.marker.setMap(map);\n this._eventManager.setTarget(this.marker);\n this.markerInitialized.next(this.marker);\n });\n }\n ngOnChanges(changes) {\n const {\n marker,\n _title,\n _position,\n _label,\n _clickable,\n _icon,\n _visible\n } = this;\n if (marker) {\n if (changes['options']) {\n marker.setOptions(this._combineOptions());\n }\n if (changes['title'] && _title !== undefined) {\n marker.setTitle(_title);\n }\n if (changes['position'] && _position) {\n marker.setPosition(_position);\n }\n if (changes['label'] && _label !== undefined) {\n marker.setLabel(_label);\n }\n if (changes['clickable'] && _clickable !== undefined) {\n marker.setClickable(_clickable);\n }\n if (changes['icon'] && _icon) {\n marker.setIcon(_icon);\n }\n if (changes['visible'] && _visible !== undefined) {\n marker.setVisible(_visible);\n }\n }\n }\n ngOnDestroy() {\n this.markerInitialized.complete();\n this._eventManager.destroy();\n this.marker?.setMap(null);\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getAnimation\n */\n getAnimation() {\n this._assertInitialized();\n return this.marker.getAnimation() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getClickable\n */\n getClickable() {\n this._assertInitialized();\n return this.marker.getClickable();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getCursor\n */\n getCursor() {\n this._assertInitialized();\n return this.marker.getCursor() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getDraggable\n */\n getDraggable() {\n this._assertInitialized();\n return !!this.marker.getDraggable();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getIcon\n */\n getIcon() {\n this._assertInitialized();\n return this.marker.getIcon() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getLabel\n */\n getLabel() {\n this._assertInitialized();\n return this.marker.getLabel() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getOpacity\n */\n getOpacity() {\n this._assertInitialized();\n return this.marker.getOpacity() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getPosition\n */\n getPosition() {\n this._assertInitialized();\n return this.marker.getPosition() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getShape\n */\n getShape() {\n this._assertInitialized();\n return this.marker.getShape() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getTitle\n */\n getTitle() {\n this._assertInitialized();\n return this.marker.getTitle() || null;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getVisible\n */\n getVisible() {\n this._assertInitialized();\n return this.marker.getVisible();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/marker#Marker.getZIndex\n */\n getZIndex() {\n this._assertInitialized();\n return this.marker.getZIndex() || null;\n }\n /** Gets the anchor point that can be used to attach other Google Maps objects. */\n getAnchor() {\n this._assertInitialized();\n return this.marker;\n }\n /** Returns a promise that resolves when the marker has been initialized. */\n _resolveMarker() {\n return this.marker ? Promise.resolve(this.marker) : this.markerInitialized.pipe(take(1)).toPromise();\n }\n /** Creates a combined options object using the passed-in options and the individual inputs. */\n _combineOptions() {\n const options = this._options || DEFAULT_MARKER_OPTIONS$1;\n return {\n ...options,\n title: this._title || options.title,\n position: this._position || options.position,\n label: this._label || options.label,\n clickable: this._clickable ?? options.clickable,\n map: this._googleMap.googleMap,\n icon: this._icon || options.icon,\n visible: this._visible ?? options.visible\n };\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.marker) {\n throw Error('Cannot interact with a Google Map Marker before it has been ' + 'initialized. Please wait for the Marker to load before trying to interact with it.');\n }\n }\n }\n static {\n this.ɵfac = function MapMarker_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapMarker)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapMarker,\n selectors: [[\"map-marker\"]],\n inputs: {\n title: \"title\",\n position: \"position\",\n label: \"label\",\n clickable: \"clickable\",\n options: \"options\",\n icon: \"icon\",\n visible: \"visible\"\n },\n outputs: {\n animationChanged: \"animationChanged\",\n mapClick: \"mapClick\",\n clickableChanged: \"clickableChanged\",\n cursorChanged: \"cursorChanged\",\n mapDblclick: \"mapDblclick\",\n mapDrag: \"mapDrag\",\n mapDragend: \"mapDragend\",\n draggableChanged: \"draggableChanged\",\n mapDragstart: \"mapDragstart\",\n flatChanged: \"flatChanged\",\n iconChanged: \"iconChanged\",\n mapMousedown: \"mapMousedown\",\n mapMouseout: \"mapMouseout\",\n mapMouseover: \"mapMouseover\",\n mapMouseup: \"mapMouseup\",\n positionChanged: \"positionChanged\",\n mapRightclick: \"mapRightclick\",\n shapeChanged: \"shapeChanged\",\n titleChanged: \"titleChanged\",\n visibleChanged: \"visibleChanged\",\n zindexChanged: \"zindexChanged\",\n markerInitialized: \"markerInitialized\"\n },\n exportAs: [\"mapMarker\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return MapMarker;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/** Default options for a clusterer. */\nconst DEFAULT_CLUSTERER_OPTIONS = {};\n/**\n * Angular component for implementing a Google Maps Marker Clusterer.\n *\n * See https://developers.google.com/maps/documentation/javascript/marker-clustering\n */\nlet MapMarkerClusterer = /*#__PURE__*/(() => {\n class MapMarkerClusterer {\n set averageCenter(averageCenter) {\n this._averageCenter = averageCenter;\n }\n set batchSizeIE(batchSizeIE) {\n this._batchSizeIE = batchSizeIE;\n }\n set calculator(calculator) {\n this._calculator = calculator;\n }\n set clusterClass(clusterClass) {\n this._clusterClass = clusterClass;\n }\n set enableRetinaIcons(enableRetinaIcons) {\n this._enableRetinaIcons = enableRetinaIcons;\n }\n set gridSize(gridSize) {\n this._gridSize = gridSize;\n }\n set ignoreHidden(ignoreHidden) {\n this._ignoreHidden = ignoreHidden;\n }\n set imageExtension(imageExtension) {\n this._imageExtension = imageExtension;\n }\n set imagePath(imagePath) {\n this._imagePath = imagePath;\n }\n set imageSizes(imageSizes) {\n this._imageSizes = imageSizes;\n }\n set maxZoom(maxZoom) {\n this._maxZoom = maxZoom;\n }\n set minimumClusterSize(minimumClusterSize) {\n this._minimumClusterSize = minimumClusterSize;\n }\n set styles(styles) {\n this._styles = styles;\n }\n set title(title) {\n this._title = title;\n }\n set zIndex(zIndex) {\n this._zIndex = zIndex;\n }\n set zoomOnClick(zoomOnClick) {\n this._zoomOnClick = zoomOnClick;\n }\n set options(options) {\n this._options = options;\n }\n constructor(_googleMap, _ngZone) {\n this._googleMap = _googleMap;\n this._ngZone = _ngZone;\n this._currentMarkers = new Set();\n this._eventManager = new MapEventManager(inject(NgZone));\n this._destroy = new Subject();\n this.ariaLabelFn = () => '';\n /**\n * See\n * googlemaps.github.io/v3-utility-library/modules/\n * _google_markerclustererplus.html#clusteringbegin\n */\n this.clusteringbegin = this._eventManager.getLazyEmitter('clusteringbegin');\n /**\n * See\n * googlemaps.github.io/v3-utility-library/modules/_google_markerclustererplus.html#clusteringend\n */\n this.clusteringend = this._eventManager.getLazyEmitter('clusteringend');\n /** Emits when a cluster has been clicked. */\n this.clusterClick = this._eventManager.getLazyEmitter('click');\n /** Event emitted when the clusterer is initialized. */\n this.markerClustererInitialized = new EventEmitter();\n this._canInitialize = _googleMap._isBrowser;\n }\n ngOnInit() {\n if (this._canInitialize) {\n this._ngZone.runOutsideAngular(() => {\n this._googleMap._resolveMap().then(map => {\n if (typeof MarkerClusterer !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('MarkerClusterer class not found, cannot construct a marker cluster. ' + 'Please install the MarkerClustererPlus library: ' + 'https://github.com/googlemaps/js-markerclustererplus');\n }\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this.markerClusterer = this._ngZone.runOutsideAngular(() => {\n return new MarkerClusterer(map, [], this._combineOptions());\n });\n this._assertInitialized();\n this._eventManager.setTarget(this.markerClusterer);\n this.markerClustererInitialized.emit(this.markerClusterer);\n });\n });\n }\n }\n ngAfterContentInit() {\n if (this._canInitialize) {\n if (this.markerClusterer) {\n this._watchForMarkerChanges();\n } else {\n this.markerClustererInitialized.pipe(take(1), takeUntil(this._destroy)).subscribe(() => this._watchForMarkerChanges());\n }\n }\n }\n ngOnChanges(changes) {\n const {\n markerClusterer: clusterer,\n ariaLabelFn,\n _averageCenter,\n _batchSizeIE,\n _calculator,\n _styles,\n _clusterClass,\n _enableRetinaIcons,\n _gridSize,\n _ignoreHidden,\n _imageExtension,\n _imagePath,\n _imageSizes,\n _maxZoom,\n _minimumClusterSize,\n _title,\n _zIndex,\n _zoomOnClick\n } = this;\n if (clusterer) {\n if (changes['options']) {\n clusterer.setOptions(this._combineOptions());\n }\n if (changes['ariaLabelFn']) {\n clusterer.ariaLabelFn = ariaLabelFn;\n }\n if (changes['averageCenter'] && _averageCenter !== undefined) {\n clusterer.setAverageCenter(_averageCenter);\n }\n if (changes['batchSizeIE'] && _batchSizeIE !== undefined) {\n clusterer.setBatchSizeIE(_batchSizeIE);\n }\n if (changes['calculator'] && !!_calculator) {\n clusterer.setCalculator(_calculator);\n }\n if (changes['clusterClass'] && _clusterClass !== undefined) {\n clusterer.setClusterClass(_clusterClass);\n }\n if (changes['enableRetinaIcons'] && _enableRetinaIcons !== undefined) {\n clusterer.setEnableRetinaIcons(_enableRetinaIcons);\n }\n if (changes['gridSize'] && _gridSize !== undefined) {\n clusterer.setGridSize(_gridSize);\n }\n if (changes['ignoreHidden'] && _ignoreHidden !== undefined) {\n clusterer.setIgnoreHidden(_ignoreHidden);\n }\n if (changes['imageExtension'] && _imageExtension !== undefined) {\n clusterer.setImageExtension(_imageExtension);\n }\n if (changes['imagePath'] && _imagePath !== undefined) {\n clusterer.setImagePath(_imagePath);\n }\n if (changes['imageSizes'] && _imageSizes) {\n clusterer.setImageSizes(_imageSizes);\n }\n if (changes['maxZoom'] && _maxZoom !== undefined) {\n clusterer.setMaxZoom(_maxZoom);\n }\n if (changes['minimumClusterSize'] && _minimumClusterSize !== undefined) {\n clusterer.setMinimumClusterSize(_minimumClusterSize);\n }\n if (changes['styles'] && _styles) {\n clusterer.setStyles(_styles);\n }\n if (changes['title'] && _title !== undefined) {\n clusterer.setTitle(_title);\n }\n if (changes['zIndex'] && _zIndex !== undefined) {\n clusterer.setZIndex(_zIndex);\n }\n if (changes['zoomOnClick'] && _zoomOnClick !== undefined) {\n clusterer.setZoomOnClick(_zoomOnClick);\n }\n }\n }\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this._eventManager.destroy();\n this.markerClusterer?.setMap(null);\n }\n fitMapToMarkers(padding) {\n this._assertInitialized();\n this.markerClusterer.fitMapToMarkers(padding);\n }\n getAverageCenter() {\n this._assertInitialized();\n return this.markerClusterer.getAverageCenter();\n }\n getBatchSizeIE() {\n this._assertInitialized();\n return this.markerClusterer.getBatchSizeIE();\n }\n getCalculator() {\n this._assertInitialized();\n return this.markerClusterer.getCalculator();\n }\n getClusterClass() {\n this._assertInitialized();\n return this.markerClusterer.getClusterClass();\n }\n getClusters() {\n this._assertInitialized();\n return this.markerClusterer.getClusters();\n }\n getEnableRetinaIcons() {\n this._assertInitialized();\n return this.markerClusterer.getEnableRetinaIcons();\n }\n getGridSize() {\n this._assertInitialized();\n return this.markerClusterer.getGridSize();\n }\n getIgnoreHidden() {\n this._assertInitialized();\n return this.markerClusterer.getIgnoreHidden();\n }\n getImageExtension() {\n this._assertInitialized();\n return this.markerClusterer.getImageExtension();\n }\n getImagePath() {\n this._assertInitialized();\n return this.markerClusterer.getImagePath();\n }\n getImageSizes() {\n this._assertInitialized();\n return this.markerClusterer.getImageSizes();\n }\n getMaxZoom() {\n this._assertInitialized();\n return this.markerClusterer.getMaxZoom();\n }\n getMinimumClusterSize() {\n this._assertInitialized();\n return this.markerClusterer.getMinimumClusterSize();\n }\n getStyles() {\n this._assertInitialized();\n return this.markerClusterer.getStyles();\n }\n getTitle() {\n this._assertInitialized();\n return this.markerClusterer.getTitle();\n }\n getTotalClusters() {\n this._assertInitialized();\n return this.markerClusterer.getTotalClusters();\n }\n getTotalMarkers() {\n this._assertInitialized();\n return this.markerClusterer.getTotalMarkers();\n }\n getZIndex() {\n this._assertInitialized();\n return this.markerClusterer.getZIndex();\n }\n getZoomOnClick() {\n this._assertInitialized();\n return this.markerClusterer.getZoomOnClick();\n }\n _combineOptions() {\n const options = this._options || DEFAULT_CLUSTERER_OPTIONS;\n return {\n ...options,\n ariaLabelFn: this.ariaLabelFn ?? options.ariaLabelFn,\n averageCenter: this._averageCenter ?? options.averageCenter,\n batchSize: this.batchSize ?? options.batchSize,\n batchSizeIE: this._batchSizeIE ?? options.batchSizeIE,\n calculator: this._calculator ?? options.calculator,\n clusterClass: this._clusterClass ?? options.clusterClass,\n enableRetinaIcons: this._enableRetinaIcons ?? options.enableRetinaIcons,\n gridSize: this._gridSize ?? options.gridSize,\n ignoreHidden: this._ignoreHidden ?? options.ignoreHidden,\n imageExtension: this._imageExtension ?? options.imageExtension,\n imagePath: this._imagePath ?? options.imagePath,\n imageSizes: this._imageSizes ?? options.imageSizes,\n maxZoom: this._maxZoom ?? options.maxZoom,\n minimumClusterSize: this._minimumClusterSize ?? options.minimumClusterSize,\n styles: this._styles ?? options.styles,\n title: this._title ?? options.title,\n zIndex: this._zIndex ?? options.zIndex,\n zoomOnClick: this._zoomOnClick ?? options.zoomOnClick\n };\n }\n _watchForMarkerChanges() {\n this._assertInitialized();\n this._ngZone.runOutsideAngular(() => {\n this._getInternalMarkers(this._markers).then(markers => {\n const initialMarkers = [];\n for (const marker of markers) {\n this._currentMarkers.add(marker);\n initialMarkers.push(marker);\n }\n this.markerClusterer.addMarkers(initialMarkers);\n });\n });\n this._markers.changes.pipe(takeUntil(this._destroy)).subscribe(markerComponents => {\n this._assertInitialized();\n this._ngZone.runOutsideAngular(() => {\n this._getInternalMarkers(markerComponents).then(markers => {\n const newMarkers = new Set(markers);\n const markersToAdd = [];\n const markersToRemove = [];\n for (const marker of Array.from(newMarkers)) {\n if (!this._currentMarkers.has(marker)) {\n this._currentMarkers.add(marker);\n markersToAdd.push(marker);\n }\n }\n for (const marker of Array.from(this._currentMarkers)) {\n if (!newMarkers.has(marker)) {\n markersToRemove.push(marker);\n }\n }\n this.markerClusterer.addMarkers(markersToAdd, true);\n this.markerClusterer.removeMarkers(markersToRemove, true);\n this.markerClusterer.repaint();\n for (const marker of markersToRemove) {\n this._currentMarkers.delete(marker);\n }\n });\n });\n });\n }\n _getInternalMarkers(markers) {\n return Promise.all(markers.map(markerComponent => markerComponent._resolveMarker()));\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.markerClusterer) {\n throw Error('Cannot interact with a MarkerClusterer before it has been initialized. ' + 'Please wait for the MarkerClusterer to load before trying to interact with it.');\n }\n }\n }\n static {\n this.ɵfac = function MapMarkerClusterer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapMarkerClusterer)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MapMarkerClusterer,\n selectors: [[\"map-marker-clusterer\"]],\n contentQueries: function MapMarkerClusterer_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MapMarker, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._markers = _t);\n }\n },\n inputs: {\n ariaLabelFn: \"ariaLabelFn\",\n averageCenter: \"averageCenter\",\n batchSize: \"batchSize\",\n batchSizeIE: \"batchSizeIE\",\n calculator: \"calculator\",\n clusterClass: \"clusterClass\",\n enableRetinaIcons: \"enableRetinaIcons\",\n gridSize: \"gridSize\",\n ignoreHidden: \"ignoreHidden\",\n imageExtension: \"imageExtension\",\n imagePath: \"imagePath\",\n imageSizes: \"imageSizes\",\n maxZoom: \"maxZoom\",\n minimumClusterSize: \"minimumClusterSize\",\n styles: \"styles\",\n title: \"title\",\n zIndex: \"zIndex\",\n zoomOnClick: \"zoomOnClick\",\n options: \"options\"\n },\n outputs: {\n clusteringbegin: \"clusteringbegin\",\n clusteringend: \"clusteringend\",\n clusterClick: \"clusterClick\",\n markerClustererInitialized: \"markerClustererInitialized\"\n },\n exportAs: [\"mapMarkerClusterer\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function MapMarkerClusterer_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MapMarkerClusterer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular component that renders a Google Maps Polygon via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon\n */\nlet MapPolygon = /*#__PURE__*/(() => {\n class MapPolygon {\n set options(options) {\n this._options.next(options || {});\n }\n set paths(paths) {\n this._paths.next(paths);\n }\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(inject(NgZone));\n this._options = new BehaviorSubject({});\n this._paths = new BehaviorSubject(undefined);\n this._destroyed = new Subject();\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.click\n */\n this.polygonClick = this._eventManager.getLazyEmitter('click');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dblclick\n */\n this.polygonDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.drag\n */\n this.polygonDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dragend\n */\n this.polygonDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.dragstart\n */\n this.polygonDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mousedown\n */\n this.polygonMousedown = this._eventManager.getLazyEmitter('mousedown');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mousemove\n */\n this.polygonMousemove = this._eventManager.getLazyEmitter('mousemove');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseout\n */\n this.polygonMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseover\n */\n this.polygonMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.mouseup\n */\n this.polygonMouseup = this._eventManager.getLazyEmitter('mouseup');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.rightclick\n */\n this.polygonRightclick = this._eventManager.getLazyEmitter('rightclick');\n /** Event emitted when the polygon is initialized. */\n this.polygonInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n if (google.maps.Polygon && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Polygon, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(([map, lib]) => {\n this._initialize(map, lib.Polygon, options);\n });\n });\n }\n });\n }\n }\n _initialize(map, polygonConstructor, options) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.polygon = new polygonConstructor(options);\n this._assertInitialized();\n this.polygon.setMap(map);\n this._eventManager.setTarget(this.polygon);\n this.polygonInitialized.emit(this.polygon);\n this._watchForOptionsChanges();\n this._watchForPathChanges();\n });\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.polygon?.setMap(null);\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getDraggable\n */\n getDraggable() {\n this._assertInitialized();\n return this.polygon.getDraggable();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getEditable\n */\n getEditable() {\n this._assertInitialized();\n return this.polygon.getEditable();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getPath\n */\n getPath() {\n this._assertInitialized();\n return this.polygon.getPath();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getPaths\n */\n getPaths() {\n this._assertInitialized();\n return this.polygon.getPaths();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polygon.getVisible\n */\n getVisible() {\n this._assertInitialized();\n return this.polygon.getVisible();\n }\n _combineOptions() {\n return combineLatest([this._options, this._paths]).pipe(map(([options, paths]) => {\n const combinedOptions = {\n ...options,\n paths: paths || options.paths\n };\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.polygon.setOptions(options);\n });\n }\n _watchForPathChanges() {\n this._paths.pipe(takeUntil(this._destroyed)).subscribe(paths => {\n if (paths) {\n this._assertInitialized();\n this.polygon.setPaths(paths);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.polygon) {\n throw Error('Cannot interact with a Google Map Polygon before it has been ' + 'initialized. Please wait for the Polygon to load before trying to interact with it.');\n }\n }\n }\n static {\n this.ɵfac = function MapPolygon_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapPolygon)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapPolygon,\n selectors: [[\"map-polygon\"]],\n inputs: {\n options: \"options\",\n paths: \"paths\"\n },\n outputs: {\n polygonClick: \"polygonClick\",\n polygonDblclick: \"polygonDblclick\",\n polygonDrag: \"polygonDrag\",\n polygonDragend: \"polygonDragend\",\n polygonDragstart: \"polygonDragstart\",\n polygonMousedown: \"polygonMousedown\",\n polygonMousemove: \"polygonMousemove\",\n polygonMouseout: \"polygonMouseout\",\n polygonMouseover: \"polygonMouseover\",\n polygonMouseup: \"polygonMouseup\",\n polygonRightclick: \"polygonRightclick\",\n polygonInitialized: \"polygonInitialized\"\n },\n exportAs: [\"mapPolygon\"],\n standalone: true\n });\n }\n }\n return MapPolygon;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular component that renders a Google Maps Polyline via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline\n */\nlet MapPolyline = /*#__PURE__*/(() => {\n class MapPolyline {\n set options(options) {\n this._options.next(options || {});\n }\n set path(path) {\n this._path.next(path);\n }\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(inject(NgZone));\n this._options = new BehaviorSubject({});\n this._path = new BehaviorSubject(undefined);\n this._destroyed = new Subject();\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.click\n */\n this.polylineClick = this._eventManager.getLazyEmitter('click');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dblclick\n */\n this.polylineDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.drag\n */\n this.polylineDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dragend\n */\n this.polylineDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.dragstart\n */\n this.polylineDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mousedown\n */\n this.polylineMousedown = this._eventManager.getLazyEmitter('mousedown');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mousemove\n */\n this.polylineMousemove = this._eventManager.getLazyEmitter('mousemove');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseout\n */\n this.polylineMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseover\n */\n this.polylineMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.mouseup\n */\n this.polylineMouseup = this._eventManager.getLazyEmitter('mouseup');\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.rightclick\n */\n this.polylineRightclick = this._eventManager.getLazyEmitter('rightclick');\n /** Event emitted when the polyline is initialized. */\n this.polylineInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n if (google.maps.Polyline && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Polyline, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(([map, lib]) => {\n this._initialize(map, lib.Polyline, options);\n });\n });\n }\n });\n }\n }\n _initialize(map, polylineConstructor, options) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.polyline = new polylineConstructor(options);\n this._assertInitialized();\n this.polyline.setMap(map);\n this._eventManager.setTarget(this.polyline);\n this.polylineInitialized.emit(this.polyline);\n this._watchForOptionsChanges();\n this._watchForPathChanges();\n });\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.polyline?.setMap(null);\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getDraggable\n */\n getDraggable() {\n this._assertInitialized();\n return this.polyline.getDraggable();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getEditable\n */\n getEditable() {\n this._assertInitialized();\n return this.polyline.getEditable();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getPath\n */\n getPath() {\n this._assertInitialized();\n return this.polyline.getPath();\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Polyline.getVisible\n */\n getVisible() {\n this._assertInitialized();\n return this.polyline.getVisible();\n }\n _combineOptions() {\n return combineLatest([this._options, this._path]).pipe(map(([options, path]) => {\n const combinedOptions = {\n ...options,\n path: path || options.path\n };\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.polyline.setOptions(options);\n });\n }\n _watchForPathChanges() {\n this._path.pipe(takeUntil(this._destroyed)).subscribe(path => {\n if (path) {\n this._assertInitialized();\n this.polyline.setPath(path);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.polyline) {\n throw Error('Cannot interact with a Google Map Polyline before it has been ' + 'initialized. Please wait for the Polyline to load before trying to interact with it.');\n }\n }\n }\n static {\n this.ɵfac = function MapPolyline_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapPolyline)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapPolyline,\n selectors: [[\"map-polyline\"]],\n inputs: {\n options: \"options\",\n path: \"path\"\n },\n outputs: {\n polylineClick: \"polylineClick\",\n polylineDblclick: \"polylineDblclick\",\n polylineDrag: \"polylineDrag\",\n polylineDragend: \"polylineDragend\",\n polylineDragstart: \"polylineDragstart\",\n polylineMousedown: \"polylineMousedown\",\n polylineMousemove: \"polylineMousemove\",\n polylineMouseout: \"polylineMouseout\",\n polylineMouseover: \"polylineMouseover\",\n polylineMouseup: \"polylineMouseup\",\n polylineRightclick: \"polylineRightclick\",\n polylineInitialized: \"polylineInitialized\"\n },\n exportAs: [\"mapPolyline\"],\n standalone: true\n });\n }\n }\n return MapPolyline;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular component that renders a Google Maps Rectangle via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle\n */\nlet MapRectangle = /*#__PURE__*/(() => {\n class MapRectangle {\n set options(options) {\n this._options.next(options || {});\n }\n set bounds(bounds) {\n this._bounds.next(bounds);\n }\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(inject(NgZone));\n this._options = new BehaviorSubject({});\n this._bounds = new BehaviorSubject(undefined);\n this._destroyed = new Subject();\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.boundsChanged\n */\n this.boundsChanged = this._eventManager.getLazyEmitter('bounds_changed');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.click\n */\n this.rectangleClick = this._eventManager.getLazyEmitter('click');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dblclick\n */\n this.rectangleDblclick = this._eventManager.getLazyEmitter('dblclick');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.drag\n */\n this.rectangleDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dragend\n */\n this.rectangleDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.dragstart\n */\n this.rectangleDragstart = this._eventManager.getLazyEmitter('dragstart');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mousedown\n */\n this.rectangleMousedown = this._eventManager.getLazyEmitter('mousedown');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mousemove\n */\n this.rectangleMousemove = this._eventManager.getLazyEmitter('mousemove');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseout\n */\n this.rectangleMouseout = this._eventManager.getLazyEmitter('mouseout');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseover\n */\n this.rectangleMouseover = this._eventManager.getLazyEmitter('mouseover');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.mouseup\n */\n this.rectangleMouseup = this._eventManager.getLazyEmitter('mouseup');\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.rightclick\n */\n this.rectangleRightclick = this._eventManager.getLazyEmitter('rightclick');\n /** Event emitted when the rectangle is initialized. */\n this.rectangleInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n if (google.maps.Rectangle && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.Rectangle, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(([map, lib]) => {\n this._initialize(map, lib.Rectangle, options);\n });\n });\n }\n });\n }\n }\n _initialize(map, rectangleConstructor, options) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.rectangle = new rectangleConstructor(options);\n this._assertInitialized();\n this.rectangle.setMap(map);\n this._eventManager.setTarget(this.rectangle);\n this.rectangleInitialized.emit(this.rectangle);\n this._watchForOptionsChanges();\n this._watchForBoundsChanges();\n });\n }\n ngOnDestroy() {\n this._eventManager.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n this.rectangle?.setMap(null);\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getBounds\n */\n getBounds() {\n this._assertInitialized();\n return this.rectangle.getBounds();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getDraggable\n */\n getDraggable() {\n this._assertInitialized();\n return this.rectangle.getDraggable();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getEditable\n */\n getEditable() {\n this._assertInitialized();\n return this.rectangle.getEditable();\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/polygon#Rectangle.getVisible\n */\n getVisible() {\n this._assertInitialized();\n return this.rectangle.getVisible();\n }\n _combineOptions() {\n return combineLatest([this._options, this._bounds]).pipe(map(([options, bounds]) => {\n const combinedOptions = {\n ...options,\n bounds: bounds || options.bounds\n };\n return combinedOptions;\n }));\n }\n _watchForOptionsChanges() {\n this._options.pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.rectangle.setOptions(options);\n });\n }\n _watchForBoundsChanges() {\n this._bounds.pipe(takeUntil(this._destroyed)).subscribe(bounds => {\n if (bounds) {\n this._assertInitialized();\n this.rectangle.setBounds(bounds);\n }\n });\n }\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.rectangle) {\n throw Error('Cannot interact with a Google Map Rectangle before it has been initialized. ' + 'Please wait for the Rectangle to load before trying to interact with it.');\n }\n }\n }\n static {\n this.ɵfac = function MapRectangle_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapRectangle)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapRectangle,\n selectors: [[\"map-rectangle\"]],\n inputs: {\n options: \"options\",\n bounds: \"bounds\"\n },\n outputs: {\n boundsChanged: \"boundsChanged\",\n rectangleClick: \"rectangleClick\",\n rectangleDblclick: \"rectangleDblclick\",\n rectangleDrag: \"rectangleDrag\",\n rectangleDragend: \"rectangleDragend\",\n rectangleDragstart: \"rectangleDragstart\",\n rectangleMousedown: \"rectangleMousedown\",\n rectangleMousemove: \"rectangleMousemove\",\n rectangleMouseout: \"rectangleMouseout\",\n rectangleMouseover: \"rectangleMouseover\",\n rectangleMouseup: \"rectangleMouseup\",\n rectangleRightclick: \"rectangleRightclick\",\n rectangleInitialized: \"rectangleInitialized\"\n },\n exportAs: [\"mapRectangle\"],\n standalone: true\n });\n }\n }\n return MapRectangle;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular component that renders a Google Maps Traffic Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TrafficLayer\n */\nlet MapTrafficLayer = /*#__PURE__*/(() => {\n class MapTrafficLayer {\n /**\n * Whether the traffic layer refreshes with updated information automatically.\n */\n set autoRefresh(autoRefresh) {\n this._autoRefresh.next(autoRefresh);\n }\n constructor(_map, _ngZone) {\n this._map = _map;\n this._ngZone = _ngZone;\n this._autoRefresh = new BehaviorSubject(true);\n this._destroyed = new Subject();\n /** Event emitted when the traffic layer is initialized. */\n this.trafficLayerInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n this._combineOptions().pipe(take(1)).subscribe(options => {\n if (google.maps.TrafficLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.TrafficLayer, options);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(([map, lib]) => {\n this._initialize(map, lib.TrafficLayer, options);\n });\n });\n }\n });\n }\n }\n _initialize(map, layerConstructor, options) {\n this._ngZone.runOutsideAngular(() => {\n this.trafficLayer = new layerConstructor(options);\n this._assertInitialized();\n this.trafficLayer.setMap(map);\n this.trafficLayerInitialized.emit(this.trafficLayer);\n this._watchForAutoRefreshChanges();\n });\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this.trafficLayer?.setMap(null);\n }\n _combineOptions() {\n return this._autoRefresh.pipe(map(autoRefresh => {\n const combinedOptions = {\n autoRefresh\n };\n return combinedOptions;\n }));\n }\n _watchForAutoRefreshChanges() {\n this._combineOptions().pipe(takeUntil(this._destroyed)).subscribe(options => {\n this._assertInitialized();\n this.trafficLayer.setOptions(options);\n });\n }\n _assertInitialized() {\n if (!this.trafficLayer) {\n throw Error('Cannot interact with a Google Map Traffic Layer before it has been initialized. ' + 'Please wait for the Traffic Layer to load before trying to interact with it.');\n }\n }\n static {\n this.ɵfac = function MapTrafficLayer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapTrafficLayer)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapTrafficLayer,\n selectors: [[\"map-traffic-layer\"]],\n inputs: {\n autoRefresh: \"autoRefresh\"\n },\n outputs: {\n trafficLayerInitialized: \"trafficLayerInitialized\"\n },\n exportAs: [\"mapTrafficLayer\"],\n standalone: true\n });\n }\n }\n return MapTrafficLayer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular component that renders a Google Maps Transit Layer via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/map#TransitLayer\n */\nlet MapTransitLayer = /*#__PURE__*/(() => {\n class MapTransitLayer {\n constructor() {\n this._map = inject(GoogleMap);\n this._zone = inject(NgZone);\n /** Event emitted when the transit layer is initialized. */\n this.transitLayerInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (this._map._isBrowser) {\n if (google.maps.TransitLayer && this._map.googleMap) {\n this._initialize(this._map.googleMap, google.maps.TransitLayer);\n } else {\n this._zone.runOutsideAngular(() => {\n Promise.all([this._map._resolveMap(), google.maps.importLibrary('maps')]).then(([map, lib]) => {\n this._initialize(map, lib.TransitLayer);\n });\n });\n }\n }\n }\n _initialize(map, layerConstructor) {\n this._zone.runOutsideAngular(() => {\n this.transitLayer = new layerConstructor();\n this.transitLayerInitialized.emit(this.transitLayer);\n this._assertLayerInitialized();\n this.transitLayer.setMap(map);\n });\n }\n ngOnDestroy() {\n this.transitLayer?.setMap(null);\n }\n _assertLayerInitialized() {\n if (!this.transitLayer) {\n throw Error('Cannot interact with a Google Map Transit Layer before it has been initialized. ' + 'Please wait for the Transit Layer to load before trying to interact with it.');\n }\n }\n static {\n this.ɵfac = function MapTransitLayer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapTransitLayer)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapTransitLayer,\n selectors: [[\"map-transit-layer\"]],\n outputs: {\n transitLayerInitialized: \"transitLayerInitialized\"\n },\n exportAs: [\"mapTransitLayer\"],\n standalone: true\n });\n }\n }\n return MapTransitLayer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular directive that renders a Google Maps heatmap via the Google Maps JavaScript API.\n *\n * See: https://developers.google.com/maps/documentation/javascript/reference/visualization\n */\nlet MapHeatmapLayer = /*#__PURE__*/(() => {\n class MapHeatmapLayer {\n /**\n * Data shown on the heatmap.\n * See: https://developers.google.com/maps/documentation/javascript/reference/visualization\n */\n set data(data) {\n this._data = data;\n }\n /**\n * Options used to configure the heatmap. See:\n * developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayerOptions\n */\n set options(options) {\n this._options = options;\n }\n constructor(_googleMap, _ngZone) {\n this._googleMap = _googleMap;\n this._ngZone = _ngZone;\n /** Event emitted when the heatmap is initialized. */\n this.heatmapInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (this._googleMap._isBrowser) {\n if (!window.google?.maps?.visualization && !window.google?.maps.importLibrary && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Namespace `google.maps.visualization` not found, cannot construct heatmap. ' + 'Please install the Google Maps JavaScript API with the \"visualization\" library: ' + 'https://developers.google.com/maps/documentation/javascript/visualization');\n }\n if (google.maps.visualization?.HeatmapLayer && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.visualization.HeatmapLayer);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._googleMap._resolveMap(), google.maps.importLibrary('visualization')]).then(([map, lib]) => {\n this._initialize(map, lib.HeatmapLayer);\n });\n });\n }\n }\n }\n _initialize(map, heatmapConstructor) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.heatmap = new heatmapConstructor(this._combineOptions());\n this._assertInitialized();\n this.heatmap.setMap(map);\n this.heatmapInitialized.emit(this.heatmap);\n });\n }\n ngOnChanges(changes) {\n const {\n _data,\n heatmap\n } = this;\n if (heatmap) {\n if (changes['options']) {\n heatmap.setOptions(this._combineOptions());\n }\n if (changes['data'] && _data !== undefined) {\n heatmap.setData(this._normalizeData(_data));\n }\n }\n }\n ngOnDestroy() {\n this.heatmap?.setMap(null);\n }\n /**\n * Gets the data that is currently shown on the heatmap.\n * See: developers.google.com/maps/documentation/javascript/reference/visualization#HeatmapLayer\n */\n getData() {\n this._assertInitialized();\n return this.heatmap.getData();\n }\n /** Creates a combined options object using the passed-in options and the individual inputs. */\n _combineOptions() {\n const options = this._options || {};\n return {\n ...options,\n data: this._normalizeData(this._data || options.data || []),\n map: this._googleMap.googleMap\n };\n }\n /**\n * Most Google Maps APIs support both `LatLng` objects and `LatLngLiteral`. The latter is more\n * convenient to write out, because the Google Maps API doesn't have to have been loaded in order\n * to construct them. The `HeatmapLayer` appears to be an exception that only allows a `LatLng`\n * object, or it throws a runtime error. Since it's more convenient and we expect that Angular\n * users will load the API asynchronously, we allow them to pass in a `LatLngLiteral` and we\n * convert it to a `LatLng` object before passing it off to Google Maps.\n */\n _normalizeData(data) {\n const result = [];\n data.forEach(item => {\n result.push(isLatLngLiteral(item) ? new google.maps.LatLng(item.lat, item.lng) : item);\n });\n return result;\n }\n /** Asserts that the heatmap object has been initialized. */\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.heatmap) {\n throw Error('Cannot interact with a Google Map HeatmapLayer before it has been ' + 'initialized. Please wait for the heatmap to load before trying to interact with it.');\n }\n }\n }\n static {\n this.ɵfac = function MapHeatmapLayer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapHeatmapLayer)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapHeatmapLayer,\n selectors: [[\"map-heatmap-layer\"]],\n inputs: {\n data: \"data\",\n options: \"options\"\n },\n outputs: {\n heatmapInitialized: \"heatmapInitialized\"\n },\n exportAs: [\"mapHeatmapLayer\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return MapHeatmapLayer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Asserts that an object is a `LatLngLiteral`. */\nfunction isLatLngLiteral(value) {\n return value && typeof value.lat === 'number' && typeof value.lng === 'number';\n}\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Default options for the Google Maps marker component. Displays a marker\n * at the Googleplex.\n */\nconst DEFAULT_MARKER_OPTIONS = {\n position: {\n lat: 37.221995,\n lng: -122.184092\n }\n};\n/**\n * Angular component that renders a Google Maps marker via the Google Maps JavaScript API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/marker\n */\nlet MapAdvancedMarker = /*#__PURE__*/(() => {\n class MapAdvancedMarker {\n /**\n * Rollover text. If provided, an accessibility text (e.g. for use with screen readers) will be added to the AdvancedMarkerElement with the provided value.\n * See: https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.title\n */\n set title(title) {\n this._title = title;\n }\n /**\n * Sets the AdvancedMarkerElement's position. An AdvancedMarkerElement may be constructed without a position, but will not be displayed until its position is provided - for example, by a user's actions or choices. An AdvancedMarkerElement's position can be provided by setting AdvancedMarkerElement.position if not provided at the construction.\n * Note: AdvancedMarkerElement with altitude is only supported on vector maps.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.position\n */\n set position(position) {\n this._position = position;\n }\n /**\n * The DOM Element backing the visual of an AdvancedMarkerElement.\n * Note: AdvancedMarkerElement does not clone the passed-in DOM element. Once the DOM element is passed to an AdvancedMarkerElement, passing the same DOM element to another AdvancedMarkerElement will move the DOM element and cause the previous AdvancedMarkerElement to look empty.\n * See: https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.content\n */\n set content(content) {\n this._content = content;\n }\n /**\n * If true, the AdvancedMarkerElement can be dragged.\n * Note: AdvancedMarkerElement with altitude is not draggable.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.gmpDraggable\n */\n set gmpDraggable(draggable) {\n this._draggable = draggable;\n }\n /**\n * Options for constructing an AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions\n */\n set options(options) {\n this._options = options;\n }\n /**\n * AdvancedMarkerElements on the map are prioritized by zIndex, with higher values indicating higher display.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElementOptions.zIndex\n */\n set zIndex(zIndex) {\n this._zIndex = zIndex;\n }\n constructor(_googleMap, _ngZone) {\n this._googleMap = _googleMap;\n this._ngZone = _ngZone;\n this._eventManager = new MapEventManager(inject(NgZone));\n /**\n * This event is fired when the AdvancedMarkerElement element is clicked.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.click\n */\n this.mapClick = this._eventManager.getLazyEmitter('click');\n /**\n * This event is repeatedly fired while the user drags the AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.drag\n */\n this.mapDrag = this._eventManager.getLazyEmitter('drag');\n /**\n * This event is fired when the user stops dragging the AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.dragend\n */\n this.mapDragend = this._eventManager.getLazyEmitter('dragend');\n /**\n * This event is fired when the user starts dragging the AdvancedMarkerElement.\n * https://developers.google.com/maps/documentation/javascript/reference/advanced-markers#AdvancedMarkerElement.dragstart\n */\n this.mapDragstart = this._eventManager.getLazyEmitter('dragstart');\n /** Event emitted when the marker is initialized. */\n this.markerInitialized = new EventEmitter();\n }\n ngOnInit() {\n if (!this._googleMap._isBrowser) {\n return;\n }\n if (google.maps.marker?.AdvancedMarkerElement && this._googleMap.googleMap) {\n this._initialize(this._googleMap.googleMap, google.maps.marker.AdvancedMarkerElement);\n } else {\n this._ngZone.runOutsideAngular(() => {\n Promise.all([this._googleMap._resolveMap(), google.maps.importLibrary('marker')]).then(([map, lib]) => {\n this._initialize(map, lib.AdvancedMarkerElement);\n });\n });\n }\n }\n _initialize(map, advancedMarkerConstructor) {\n // Create the object outside the zone so its events don't trigger change detection.\n // We'll bring it back in inside the `MapEventManager` only for the events that the\n // user has subscribed to.\n this._ngZone.runOutsideAngular(() => {\n this.advancedMarker = new advancedMarkerConstructor(this._combineOptions());\n this._assertInitialized();\n this.advancedMarker.map = map;\n this._eventManager.setTarget(this.advancedMarker);\n this.markerInitialized.next(this.advancedMarker);\n });\n }\n ngOnChanges(changes) {\n const {\n advancedMarker,\n _content,\n _position,\n _title,\n _draggable,\n _zIndex\n } = this;\n if (advancedMarker) {\n if (changes['title']) {\n advancedMarker.title = _title;\n }\n if (changes['content']) {\n advancedMarker.content = _content;\n }\n if (changes['gmpDraggable']) {\n advancedMarker.gmpDraggable = _draggable;\n }\n if (changes['content']) {\n advancedMarker.content = _content;\n }\n if (changes['position']) {\n advancedMarker.position = _position;\n }\n if (changes['zIndex']) {\n advancedMarker.zIndex = _zIndex;\n }\n }\n }\n ngOnDestroy() {\n this.markerInitialized.complete();\n this._eventManager.destroy();\n if (this.advancedMarker) {\n this.advancedMarker.map = null;\n }\n }\n getAnchor() {\n this._assertInitialized();\n return this.advancedMarker;\n }\n /** Creates a combined options object using the passed-in options and the individual inputs. */\n _combineOptions() {\n const options = this._options || DEFAULT_MARKER_OPTIONS;\n return {\n ...options,\n title: this._title || options.title,\n position: this._position || options.position,\n content: this._content || options.content,\n zIndex: this._zIndex ?? options.zIndex,\n gmpDraggable: this._draggable ?? options.gmpDraggable,\n map: this._googleMap.googleMap\n };\n }\n /** Asserts that the map has been initialized. */\n _assertInitialized() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this.advancedMarker) {\n throw Error('Cannot interact with a Google Map Marker before it has been ' + 'initialized. Please wait for the Marker to load before trying to interact with it.');\n }\n }\n }\n static {\n this.ɵfac = function MapAdvancedMarker_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapAdvancedMarker)(i0.ɵɵdirectiveInject(GoogleMap), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MapAdvancedMarker,\n selectors: [[\"map-advanced-marker\"]],\n inputs: {\n title: \"title\",\n position: \"position\",\n content: \"content\",\n gmpDraggable: \"gmpDraggable\",\n options: \"options\",\n zIndex: \"zIndex\"\n },\n outputs: {\n mapClick: \"mapClick\",\n mapDrag: \"mapDrag\",\n mapDragend: \"mapDragend\",\n mapDragstart: \"mapDragstart\",\n markerInitialized: \"markerInitialized\"\n },\n exportAs: [\"mapAdvancedMarker\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return MapAdvancedMarker;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst COMPONENTS = [GoogleMap, MapBaseLayer, MapBicyclingLayer, MapCircle, MapDirectionsRenderer, MapGroundOverlay, MapHeatmapLayer, MapInfoWindow, MapKmlLayer, MapMarker, MapAdvancedMarker, MapMarkerClusterer, MapPolygon, MapPolyline, MapRectangle, MapTrafficLayer, MapTransitLayer];\nlet GoogleMapsModule = /*#__PURE__*/(() => {\n class GoogleMapsModule {\n static {\n this.ɵfac = function GoogleMapsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || GoogleMapsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: GoogleMapsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return GoogleMapsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular service that wraps the Google Maps DirectionsService from the Google Maps JavaScript\n * API.\n *\n * See developers.google.com/maps/documentation/javascript/reference/directions#DirectionsService\n */\nlet MapDirectionsService = /*#__PURE__*/(() => {\n class MapDirectionsService {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n }\n /**\n * See\n * developers.google.com/maps/documentation/javascript/reference/directions\n * #DirectionsService.route\n */\n route(request) {\n return new Observable(observer => {\n this._getService().then(service => {\n service.route(request, (result, status) => {\n this._ngZone.run(() => {\n observer.next({\n result: result || undefined,\n status\n });\n observer.complete();\n });\n });\n });\n });\n }\n _getService() {\n if (!this._directionsService) {\n if (google.maps.DirectionsService) {\n this._directionsService = new google.maps.DirectionsService();\n } else {\n return google.maps.importLibrary('routes').then(lib => {\n this._directionsService = new lib.DirectionsService();\n return this._directionsService;\n });\n }\n }\n return Promise.resolve(this._directionsService);\n }\n static {\n this.ɵfac = function MapDirectionsService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapDirectionsService)(i0.ɵɵinject(i0.NgZone));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MapDirectionsService,\n factory: MapDirectionsService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return MapDirectionsService;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Workaround for: https://github.com/bazelbuild/rules_nodejs/issues/1265\n/**\n * Angular service that wraps the Google Maps Geocoder from the Google Maps JavaScript API.\n * See developers.google.com/maps/documentation/javascript/reference/geocoder#Geocoder\n */\nlet MapGeocoder = /*#__PURE__*/(() => {\n class MapGeocoder {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n }\n /**\n * See developers.google.com/maps/documentation/javascript/reference/geocoder#Geocoder.geocode\n */\n geocode(request) {\n return new Observable(observer => {\n this._getGeocoder().then(geocoder => {\n geocoder.geocode(request, (results, status) => {\n this._ngZone.run(() => {\n observer.next({\n results: results || [],\n status\n });\n observer.complete();\n });\n });\n });\n });\n }\n _getGeocoder() {\n if (!this._geocoder) {\n if (google.maps.Geocoder) {\n this._geocoder = new google.maps.Geocoder();\n } else {\n return google.maps.importLibrary('geocoding').then(lib => {\n this._geocoder = new lib.Geocoder();\n return this._geocoder;\n });\n }\n }\n return Promise.resolve(this._geocoder);\n }\n static {\n this.ɵfac = function MapGeocoder_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MapGeocoder)(i0.ɵɵinject(i0.NgZone));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MapGeocoder,\n factory: MapGeocoder.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return MapGeocoder;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { GoogleMap, GoogleMapsModule, MapAdvancedMarker, MapBaseLayer, MapBicyclingLayer, MapCircle, MapDirectionsRenderer, MapDirectionsService, MapEventManager, MapGeocoder, MapGroundOverlay, MapHeatmapLayer, MapInfoWindow, MapKmlLayer, MapMarker, MapMarkerClusterer, MapPolygon, MapPolyline, MapRectangle, MapTrafficLayer, MapTransitLayer };\n","import { booleanAttribute, Directive, Input, Pipe, PipeTransform } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n UntypedFormControl,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, mergeMap, tap } from 'rxjs/operators';\nimport {\n GalaxyAsyncInputValidator,\n GalaxyCoreInputInterface,\n GalaxyInputValidator,\n SelectInputOption,\n SelectInputOptionGroupInterface,\n SelectInputOptionInterface,\n} from '../input.interface';\n\n@Directive({\n selector: '[glxyCoreInput]',\n})\nexport class GalaxyCoreInputDirective implements ControlValueAccessor {\n static ASYNC_DEBOUNCE_DELAY = 100;\n\n /** Id of the field */\n @Input() id = '';\n /** Label to display context on what type of text should be entered into the field */\n @Input() label = '';\n /** Placeholder text as an example of what text should be entered into the field */\n @Input() placeholder = '';\n /** The form control for the input. If no form control is passed in, it will create its own */\n @Input() formControl: UntypedFormControl = new UntypedFormControl();\n /** If true, requires the field be filled with text by the user */\n @Input({ transform: booleanAttribute }) required = false;\n /** Whether or not to disable autocompletion for forms */\n @Input({ transform: booleanAttribute }) disableAutoComplete = false;\n /** [Advanced] List of GalaxyInputValidators */\n @Input() validators: GalaxyInputValidator[] = [];\n /** [Advanced] List of GalaxyInputValidators */\n @Input() asyncValidators: GalaxyAsyncInputValidator[] = [];\n /** Controls if the input is disabled */\n @Input({ transform: booleanAttribute }) set disabled(disabled: boolean) {\n this.setDisabledState(!!disabled);\n }\n /** Allows for value input, similar to other angular form inputs */\n @Input() set value(val: T) {\n if (val && typeof val === 'object' && 'toString' in val) {\n this.formControl.setValue(val.toString());\n } else {\n this.formControl.setValue(val);\n }\n this.formControl.updateValueAndValidity();\n }\n\n @Input() config?: GalaxyCoreInputInterface;\n\n @Input() size?: string;\n\n @Input() bottomSpacing?: 'default' | 'small' | 'none' | false = 'default';\n\n inputValue?: T;\n isDisabled = false;\n\n asyncValidatorErrors$$: BehaviorSubject = new BehaviorSubject([]);\n asyncValidatorErrors$: Observable = new Observable();\n validatorError$?: Observable;\n\n // Disables eslint on next line since the onChange function is meant to be overridden\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange = (_value: T): void => {\n // this should be completed to properly implement ControlValueAccessor\n };\n\n // Disables eslint on next line since the onTouched function is meant to be overridden\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onTouched = (_value: T): void => {\n // this should be completed to properly implement ControlValueAccessor\n };\n\n setupControl(): void {\n // If the config is passed in, parse it first\n if (this.config) {\n this.id = this.config.id || '';\n this.label = this.config.label || '';\n this.placeholder = this.config.placeholder || '';\n this.formControl = this.config.formControl || new UntypedFormControl();\n this.required = this.config.required || false;\n this.validators = this.config.validators || [];\n this.disabled = this.config.disabled || false;\n }\n\n // Drop in required validation\n if (this.required) {\n // make sure that a req validator hasn't already been added\n const alreadyContainsReq = this.validators?.some((validator) => {\n return validator.validatorFn === Validators.required;\n });\n\n if (!alreadyContainsReq) {\n this.validators?.push({\n validatorFn: Validators.required,\n errorMessage: 'GALAXY.INPUT.CORE.VALIDATION_ERROR_REQ',\n });\n }\n }\n\n const validators = this.validators?.map((validator) => {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!validator.validatorFn(control)) {\n return null;\n }\n\n return { message: validator.errorMessage };\n };\n });\n\n if (validators) this.formControl.setValidators(validators);\n if (this.asyncValidators?.length !== 0) {\n this.asyncValidatorErrors$ = this.formControl.valueChanges.pipe(\n debounceTime(GalaxyCoreInputDirective.ASYNC_DEBOUNCE_DELAY),\n distinctUntilChanged(),\n mergeMap(() => this.runAsyncValidators()),\n map((result) => this.handleAsyncValidatorResults(result)),\n tap((result) => this.asyncValidatorErrors$$.next(result)),\n );\n\n this.validatorError$ = combineLatest([this.formControl.statusChanges, this.asyncValidatorErrors$]).pipe(\n map(([, asyncErrors]) => {\n if (asyncErrors.length > 0) {\n return asyncErrors[0];\n }\n return this.formControl.errors ? this.formControl.errors.message : '';\n }),\n );\n } else {\n this.validatorError$ = this.formControl.statusChanges.pipe(\n map(() => {\n return this.formControl.errors ? this.formControl.errors.message : '';\n }),\n );\n }\n this.formControl.updateValueAndValidity();\n }\n\n runAsyncValidators(): Observable<{ validatorResult: ValidationErrors; errorMessage: string }[]> {\n const asyncValidators = this.asyncValidators.map((validator) => {\n return validator.validatorFn(this.formControl);\n });\n\n return combineLatest(asyncValidators).pipe(\n map((results) => {\n return this.asyncValidators.map((val, index) => ({\n validatorResult: results[index],\n errorMessage: val.errorMessage,\n }));\n }),\n );\n }\n\n handleAsyncValidatorResults(results: { validatorResult: ValidationErrors; errorMessage: string }[]): string[] {\n const filteredResults = results.filter((r) => r.validatorResult);\n const asyncHasErrors = results.some((r) => r.validatorResult);\n const errorMessages = filteredResults.map((r) => r.errorMessage);\n this.collectErrorsAndUpdateForm(filteredResults);\n return asyncHasErrors ? errorMessages : [];\n }\n\n collectErrorsAndUpdateForm(errors: ValidationErrors[]): void {\n const allErrorsMap: ValidationErrors = {};\n if (this.formControl.errors) errors.push(this.formControl.errors);\n errors.forEach((errorSet) => {\n if (errorSet) {\n Object.keys(errorSet).forEach((key: string) => (allErrorsMap[key] = errorSet[key]));\n }\n });\n if (Object.keys(allErrorsMap).length > 0) {\n this.formControl.setErrors(allErrorsMap);\n }\n }\n\n onBlur(): void {\n if (!this.asyncValidatorErrors$$.getValue().length) {\n this.formControl.updateValueAndValidity();\n }\n }\n\n writeValue(value: T): void {\n this.inputValue = value;\n this.onChange(value);\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: (value: T) => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n // Do nothing when no change\n if (isDisabled === this.formControl?.disabled) {\n return;\n }\n\n this.isDisabled = isDisabled;\n if (isDisabled) {\n this.formControl.disable();\n } else {\n this.formControl.enable();\n }\n }\n}\n\n@Pipe({\n name: 'getOption',\n})\nexport class GetOptionPipe implements PipeTransform {\n transform(obj: SelectInputOption): SelectInputOptionInterface | null {\n if ('options' in obj) {\n return null;\n }\n return obj as SelectInputOptionInterface;\n }\n}\n\n@Pipe({\n name: 'getOptionGroup',\n})\nexport class GetOptionGroupPipe implements PipeTransform {\n transform(obj: SelectInputOption): SelectInputOptionGroupInterface | null {\n if ('options' in obj) {\n return obj as SelectInputOptionGroupInterface;\n }\n return null;\n }\n}\n","import { UntypedFormControl, ValidatorFn, ValidationErrors } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\nexport interface GalaxyInputValidator {\n validatorFn: ValidatorFn;\n errorMessage: string;\n}\n\nexport interface GalaxyAsyncInputValidator {\n validatorFn: (control: UntypedFormControl) => Observable;\n errorMessage: string;\n}\n\nexport interface SelectInputOptionInterface {\n value: Value;\n label: string;\n description?: string;\n selected?: boolean;\n disabled?: boolean;\n}\n\nexport interface SelectInputOptionGroupInterface {\n label: string;\n disabled?: boolean;\n options: SelectInputOptionInterface[];\n}\n\nexport type SelectInputOption = SelectInputOptionInterface | SelectInputOptionGroupInterface;\n\nexport interface GalaxyCoreInputInterface {\n id?: string;\n label?: string;\n placeholder?: string;\n formControl?: UntypedFormControl;\n required?: boolean;\n validators?: GalaxyInputValidator[];\n disabled?: boolean;\n}\n\nexport interface GalaxyInputInterface extends GalaxyCoreInputInterface {\n trailingIcon?: string;\n iconClickable?: boolean;\n hint?: string;\n}\n\nexport interface GalaxySelectInputInterface extends GalaxyCoreInputInterface {\n hint?: string;\n options?: SelectInputOption[];\n}\n\nexport interface GalaxyPasswordInputInterface extends GalaxyCoreInputInterface {\n showPasswordStrength?: boolean;\n confirmPassword?: boolean;\n}\n\nexport interface GalaxyCurrencyInputInterface extends GalaxyCoreInputInterface {\n hint?: string;\n currencyCode?: string;\n decimalSeparator?: string;\n digitGroupSeparator?: string;\n decimalPlaces?: number;\n maximumValue?: string;\n minimumValue?: string;\n locale?: string;\n}\n\nexport interface GalaxyCurrencyFieldInterface extends GalaxyCoreInputInterface {\n hint?: string;\n currencyCode?: string;\n decimalSeparator?: string;\n digitGroupSeparator?: string;\n decimalPlaces?: number;\n maximumValue?: string;\n minimumValue?: string;\n locale?: string;\n}\n\n// Docs on these types can be found here: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/\n// Note that these are input types compatible with MatInput\nexport enum InputType {\n Color = 'color',\n Date = 'date',\n DateTimeLocal = 'datetime-local',\n Month = 'month',\n Number = 'number',\n Search = 'search',\n Text = 'text',\n Time = 'time',\n URL = 'url',\n Week = 'week',\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GalaxyCoreInputDirective } from '../core/core-input.directive';\nimport { GalaxyInputInterface, InputType } from '../input.interface';\n\n/** @deprecated - use Galaxy Field with matInput */\n@Component({\n selector: 'glxy-input',\n templateUrl: './input.component.html',\n styleUrls: ['./../core/core.material-override.scss', './input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n ],\n})\nexport class InputComponent extends GalaxyCoreInputDirective implements OnInit {\n @HostBinding('class') class = 'glxy-input';\n\n /** Material Icon name to display inside of the field */\n @Input() trailingIcon?: string;\n /** Whether the material icon should be clickable */\n @Input({ transform: booleanAttribute }) iconClickable?: boolean;\n /** Additional message to display below the text box */\n @Input() hint?: string;\n\n @Input() config?: GalaxyInputInterface;\n /** Type of input allowed for the input element */\n @Input() type?: InputType = InputType.Text;\n\n /** Emit an event when the icon is clicked */\n @Output() iconClicked: EventEmitter = new EventEmitter();\n\n ngOnInit(): void {\n this.setupControl();\n }\n\n setupControl(): void {\n super.setupControl();\n }\n\n /**\n * If the icon is clickable, emit an event an stop the propogation to the input field\n * @param event - Click Event\n */\n emitIconClick(event: MouseEvent): void {\n if (this.iconClickable) {\n event.stopPropagation();\n this.iconClicked.emit();\n }\n }\n}\n","\n @if (!!label) {\n {{ label | translate }}\n }\n @if (disableAutoComplete) {\n \n }\n \n \n @if (!!trailingIcon) {\n \n {{ trailingIcon }}\n \n }\n @if (hint) {\n {{ hint | translate }}\n }\n\n @if (validatorError$ | async; as validatorError) {\n \n @if (validatorError !== '') {\n {{ validatorError | translate }}\n }\n \n }\n\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n forwardRef,\n HostBinding,\n inject,\n Input,\n OnInit,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, NG_VALUE_ACCESSOR, UntypedFormControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { combineLatest, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, tap } from 'rxjs/operators';\nimport { GalaxyCoreInputDirective } from '../core/core-input.directive';\nimport { GalaxyInputValidator, GalaxyPasswordInputInterface } from './../input.interface';\n\nconst strongRegex = new RegExp('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})');\nconst mediumRegex = new RegExp(\n '^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})',\n);\n\n/** @deprecated - can be updated to use Galaxy Form Field */\n@Component({\n selector: 'glxy-password-input',\n templateUrl: './password-input.component.html',\n styleUrls: ['./../core/core.material-override.scss', './password-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PasswordInputComponent),\n multi: true,\n },\n ],\n})\nexport class PasswordInputComponent extends GalaxyCoreInputDirective implements OnInit {\n @HostBinding('class') class = 'glxy-password-input';\n\n /** Show password strength indicator. */\n @Input({ transform: booleanAttribute }) showPasswordStrength = false;\n /** Show confirm password input */\n @Input({ transform: booleanAttribute }) confirmPassword = false;\n @Input() config?: GalaxyPasswordInputInterface;\n\n confirmPasswordFormControl = new UntypedFormControl('');\n confirmPasswordValidator: GalaxyInputValidator[] = [];\n\n currentType = 'password';\n currentIcon = 'visibility';\n\n passwordStrength$?: Observable;\n strengthLabel$?: Observable;\n\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit(): void {\n this.setupControl();\n }\n\n setupControl(): void {\n if (this.config) {\n this.showPasswordStrength = this.config.showPasswordStrength\n ? this.config.showPasswordStrength\n : this.showPasswordStrength;\n this.confirmPassword = this.config.confirmPassword ? this.config.confirmPassword : this.confirmPassword;\n }\n\n // Make sure the form control is defined\n if (!this.formControl) {\n this.formControl = new UntypedFormControl('');\n }\n\n // Check if we need to display the confirm password input\n if (this.confirmPassword) {\n if (!this.validators) {\n this.validators = [];\n }\n this.confirmPasswordValidator = [...this.validators];\n this.validators.push({\n validatorFn: validatePasswordInputsMatch(this.confirmPasswordFormControl),\n errorMessage: 'GALAXY.INPUT.PASSWORD.VALIDATION_ERROR_NO_MATCH',\n });\n\n this.confirmPasswordValidator.push({\n validatorFn: validatePasswordInputsMatch(this.formControl),\n errorMessage: 'GALAXY.INPUT.PASSWORD.VALIDATION_ERROR_NO_MATCH',\n });\n this.confirmPasswordFormControl.setValidators(\n this.confirmPasswordValidator.map((validator) => {\n return validator.validatorFn;\n }),\n );\n this.addListenersForPasswordMatching();\n }\n\n this.passwordStrength$ = this.formControl.valueChanges.pipe(map(this.calculatePasswordStrength), startWith('none'));\n\n this.strengthLabel$ = this.passwordStrength$.pipe(map(this.getStrengthKey));\n\n super.setupControl();\n }\n\n /**\n * Add listeners for value changes. If either value changes, we should compare the two values to see if they match.\n */\n private addListenersForPasswordMatching(): void {\n combineLatest([this.formControl.valueChanges, this.confirmPasswordFormControl.valueChanges])\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n distinctUntilChanged(\n ([fcPrevious, cpPrevious], [fcCurrent, cpCurrent]) => fcPrevious === fcCurrent && cpPrevious === cpCurrent,\n ),\n tap(() => {\n this.formControl.updateValueAndValidity();\n this.confirmPasswordFormControl.updateValueAndValidity();\n }),\n )\n .subscribe();\n }\n\n /**\n * Toggles the visibility of the inputs\n */\n togglePasswordVisibility(): void {\n if (this.currentType === 'password') {\n this.currentType = 'text';\n this.currentIcon = 'visibility_off';\n return;\n }\n this.currentType = 'password';\n this.currentIcon = 'visibility';\n }\n\n /**\n * Calculates the password strength base on the following:\n * Strong:\n * - Must contain 1 lowercase character\n * - Must contain 1 uppercase letter\n * - Must conatin 1 numeric character\n * - Must contain 1 special character\n * - Must be 8 characters or longer\n * Medium:\n * - lowercase characters and uppercase characters\n * - lowercase characters and numeric characters\n * - uppercase characters and numberic characters\n * - Must be 6 characters or longer\n * Will return strong, medium or weak\n * @param password - Password to check\n */\n private calculatePasswordStrength(password: string): string {\n if (strongRegex.test(password)) {\n return 'strong';\n } else if (mediumRegex.test(password)) {\n return 'medium';\n }\n return 'weak';\n }\n\n private getStrengthKey(strength: string): string {\n let key;\n\n switch (strength) {\n case 'strong':\n key = 'GALAXY.INPUT.PASSWORD.STRENGTH_STRONG';\n break;\n case 'medium':\n key = 'GALAXY.INPUT.PASSWORD.STRENGTH_MEDIUM';\n break;\n case 'weak':\n key = 'GALAXY.INPUT.PASSWORD.STRENGTH_WEAK';\n break;\n default:\n key = 'GALAXY.INPUT.PASSWORD.STRENGTH_NONE';\n }\n\n return key;\n }\n}\n\n/**\n * Compares the passed in control to the control being checked.\n * @param compareControl - Form Control to compare against\n */\nfunction validatePasswordInputsMatch(compareControl: UntypedFormControl): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if ((!control.value && !compareControl.value) || control.value === compareControl.value) {\n return null;\n }\n return { passwordmatch: true };\n };\n}\n","\n @if (!!label) {\n {{ label | translate }}\n }\n \n \n {{ currentIcon }}\n \n\n @if (validatorError$ | async; as validatorError) {\n \n @if (validatorError !== '') {\n {{ validatorError | translate }}\n }\n \n }\n\n@if (showPasswordStrength && formControl) {\n
\n @if (passwordStrength$ | async; as strength) {\n
\n {{ 'GALAXY.INPUT.PASSWORD.PASS_STRENGTH' | translate }}:\n {{ (strengthLabel$ | async) ?? '' | translate }}\n
\n
\n @for (x of [1, 2, 3]; track x) {\n
\n }\n
\n }\n
\n}\n@if (confirmPassword) {\n \n @if (!!label) {\n {{ 'GALAXY.INPUT.PASSWORD.CONFIRM' | translate }} {{ label | translate }}\n }\n \n \n {{ currentIcon }}\n \n @if (validatorError$ | async; as validatorError) {\n \n @if (validatorError !== '') {\n {{ validatorError | translate }}\n }\n \n }\n \n}\n","export interface CountryDetailsInterface {\n countryCode: string;\n flag: string;\n countryNameEn: string;\n countryNameLocal: string;\n countryCallingCode: number;\n}\n\nexport const CountryCodeList: CountryDetailsInterface[] = [\n {\n countryCode: 'AF',\n countryNameEn: 'Afghanistan',\n countryNameLocal: 'د افغانستان اسلامي دولتدولت اسلامی افغانستان, جمهوری اسلامی افغانستان',\n countryCallingCode: 93,\n flag: '🇦🇫',\n },\n {\n countryCode: 'AL',\n countryNameEn: 'Albania',\n countryNameLocal: 'Shqipëria',\n countryCallingCode: 355,\n flag: '🇦🇱',\n },\n {\n countryCode: 'DZ',\n countryNameEn: 'Algeria',\n countryNameLocal: 'الجزائر',\n countryCallingCode: 213,\n flag: '🇩🇿',\n },\n {\n countryCode: 'AS',\n countryNameEn: 'American Samoa',\n countryNameLocal: 'American Samoa',\n countryCallingCode: 1684,\n flag: '🇦🇸',\n },\n {\n countryCode: 'AD',\n countryNameEn: 'Andorra',\n countryNameLocal: 'Andorra',\n countryCallingCode: 376,\n flag: '🇦🇩',\n },\n {\n countryCode: 'AO',\n countryNameEn: 'Angola',\n countryNameLocal: 'Angola',\n countryCallingCode: 244,\n flag: '🇦🇴',\n },\n {\n countryCode: 'AI',\n countryNameEn: 'Anguilla',\n countryNameLocal: 'Anguilla',\n countryCallingCode: 1264,\n flag: '🇦🇮',\n },\n {\n countryCode: 'AQ',\n countryNameEn: 'Antarctica',\n countryNameLocal: 'Antarctica, Antártico, Antarctique, Антарктике',\n countryCallingCode: 672,\n flag: '🇦🇶',\n },\n {\n countryCode: 'AG',\n countryNameEn: 'Antigua and Barbuda',\n countryNameLocal: 'Antigua and Barbuda',\n countryCallingCode: 1268,\n flag: '🇦🇬',\n },\n {\n countryCode: 'AR',\n countryNameEn: 'Argentina',\n countryNameLocal: 'Argentina',\n countryCallingCode: 54,\n flag: '🇦🇷',\n },\n {\n countryCode: 'AM',\n countryNameEn: 'Armenia',\n countryNameLocal: 'Հայաստան',\n countryCallingCode: 374,\n flag: '🇦🇲',\n },\n {\n countryCode: 'AW',\n countryNameEn: 'Aruba',\n countryNameLocal: 'Aruba',\n countryCallingCode: 297,\n flag: '🇦🇼',\n },\n {\n countryCode: 'AU',\n countryNameEn: 'Australia',\n countryNameLocal: 'Australia',\n countryCallingCode: 61,\n flag: '🇦🇺',\n },\n {\n countryCode: 'AT',\n countryNameEn: 'Austria',\n countryNameLocal: 'Österreich',\n countryCallingCode: 43,\n flag: '🇦🇹',\n },\n {\n countryCode: 'AZ',\n countryNameEn: 'Azerbaijan',\n countryNameLocal: 'Azərbaycan',\n countryCallingCode: 994,\n flag: '🇦🇿',\n },\n {\n countryCode: 'BH',\n countryNameEn: 'Bahrain',\n countryNameLocal: 'البحرين',\n countryCallingCode: 973,\n flag: '🇧🇭',\n },\n {\n countryCode: 'BD',\n countryNameEn: 'Bangladesh',\n countryNameLocal: 'গণপ্রজাতন্ত্রী বাংলাদেশ',\n countryCallingCode: 880,\n flag: '🇧🇩',\n },\n {\n countryCode: 'BB',\n countryNameEn: 'Barbados',\n countryNameLocal: 'Barbados',\n countryCallingCode: 1246,\n flag: '🇧🇧',\n },\n {\n countryCode: 'BY',\n countryNameEn: 'Belarus',\n countryNameLocal: 'Беларусь',\n countryCallingCode: 375,\n flag: '🇧🇾',\n },\n {\n countryCode: 'BE',\n countryNameEn: 'Belgium',\n countryNameLocal: 'België, Belgique, Belgien',\n countryCallingCode: 32,\n flag: '🇧🇪',\n },\n {\n countryCode: 'BZ',\n countryNameEn: 'Belize',\n countryNameLocal: 'Belize',\n countryCallingCode: 501,\n flag: '🇧🇿',\n },\n {\n countryCode: 'BJ',\n countryNameEn: 'Benin',\n countryNameLocal: 'Bénin',\n countryCallingCode: 229,\n flag: '🇧🇯',\n },\n {\n countryCode: 'BM',\n countryNameEn: 'Bermuda',\n countryNameLocal: 'Bermuda',\n countryCallingCode: 1441,\n flag: '🇧🇲',\n },\n {\n countryCode: 'BT',\n countryNameEn: 'Bhutan',\n countryNameLocal: 'འབྲུག་ཡུལ',\n countryCallingCode: 975,\n flag: '🇧🇹',\n },\n {\n countryCode: 'BO',\n countryNameEn: 'Bolivia (Plurinational State of)',\n countryNameLocal: 'Bolivia, Bulibiya, Volívia, Wuliwya',\n countryCallingCode: 591,\n flag: '🇧🇴',\n },\n {\n countryCode: 'BQ',\n countryNameEn: 'Bonaire, Sint Eustatius and Saba',\n countryNameLocal: 'Caribisch Nederland',\n countryCallingCode: 5997,\n flag: '🇧🇶',\n },\n {\n countryCode: 'BA',\n countryNameEn: 'Bosnia and Herzegovina',\n countryNameLocal: 'Bosna i Hercegovina',\n countryCallingCode: 387,\n flag: '🇧🇦',\n },\n {\n countryCode: 'BW',\n countryNameEn: 'Botswana',\n countryNameLocal: 'Botswana',\n countryCallingCode: 267,\n flag: '🇧🇼',\n },\n {\n countryCode: 'BV',\n countryNameEn: 'Bouvet Island',\n countryNameLocal: 'Bouvetøya',\n countryCallingCode: 47,\n flag: '🇧🇻',\n },\n {\n countryCode: 'BR',\n countryNameEn: 'Brazil',\n countryNameLocal: 'Brasil',\n countryCallingCode: 55,\n flag: '🇧🇷',\n },\n {\n countryCode: 'IO',\n countryNameEn: 'British Indian Ocean Territory',\n countryNameLocal: 'British Indian Ocean Territory',\n countryCallingCode: 246,\n flag: '🇮🇴',\n },\n {\n countryCode: 'BN',\n countryNameEn: 'Brunei Darussalam',\n countryNameLocal: 'Brunei Darussalam',\n countryCallingCode: 673,\n flag: '🇧🇳',\n },\n {\n countryCode: 'BG',\n countryNameEn: 'Bulgaria',\n countryNameLocal: 'България',\n countryCallingCode: 359,\n flag: '🇧🇬',\n },\n {\n countryCode: 'BF',\n countryNameEn: 'Burkina Faso',\n countryNameLocal: 'Burkina Faso',\n countryCallingCode: 226,\n flag: '🇧🇫',\n },\n {\n countryCode: 'BI',\n countryNameEn: 'Burundi',\n countryNameLocal: 'Burundi',\n countryCallingCode: 257,\n flag: '🇧🇮',\n },\n {\n countryCode: 'CV',\n countryNameEn: 'Cabo Verde',\n countryNameLocal: 'Cabo Verde',\n countryCallingCode: 238,\n flag: '🇨🇻',\n },\n {\n countryCode: 'KH',\n countryNameEn: 'Cambodia',\n countryNameLocal: 'កម្ពុជា',\n countryCallingCode: 855,\n flag: '🇰🇭',\n },\n {\n countryCode: 'CM',\n countryNameEn: 'Cameroon',\n countryNameLocal: 'Cameroun, Cameroon',\n countryCallingCode: 237,\n flag: '🇨🇲',\n },\n {\n countryCode: 'CA',\n countryNameEn: 'Canada',\n countryNameLocal: 'Canada',\n countryCallingCode: 1,\n flag: '🇨🇦',\n },\n {\n countryCode: 'KY',\n countryNameEn: 'Cayman Islands',\n countryNameLocal: 'Cayman Islands',\n countryCallingCode: 1345,\n flag: '🇰🇾',\n },\n {\n countryCode: 'CF',\n countryNameEn: 'Central African Republic',\n countryNameLocal: 'République centrafricaine',\n countryCallingCode: 236,\n flag: '🇨🇫',\n },\n {\n countryCode: 'TD',\n countryNameEn: 'Chad',\n countryNameLocal: 'Tchad, تشاد',\n countryCallingCode: 235,\n flag: '🇹🇩',\n },\n {\n countryCode: 'CL',\n countryNameEn: 'Chile',\n countryNameLocal: 'Chile',\n countryCallingCode: 56,\n flag: '🇨🇱',\n },\n {\n countryCode: 'CN',\n countryNameEn: 'China',\n countryNameLocal: '中国',\n countryCallingCode: 86,\n flag: '🇨🇳',\n },\n {\n countryCode: 'CX',\n countryNameEn: 'Christmas Island',\n countryNameLocal: 'Christmas Island',\n countryCallingCode: 61,\n flag: '🇨🇽',\n },\n {\n countryCode: 'CC',\n countryNameEn: 'Cocos (Keeling) Islands',\n countryNameLocal: 'Pulu Kokos (Keeling)',\n countryCallingCode: 61891,\n flag: '🇨🇨',\n },\n {\n countryCode: 'CO',\n countryNameEn: 'Colombia',\n countryNameLocal: 'Colombia',\n countryCallingCode: 57,\n flag: '🇨🇴',\n },\n {\n countryCode: 'BS',\n countryNameEn: 'Commonwealth of The Bahamas',\n countryNameLocal: 'Commonwealth of The Bahamas',\n countryCallingCode: 1242,\n flag: '🇧🇸',\n },\n {\n countryCode: 'MP',\n countryNameEn: 'Commonwealth of the Northern Mariana Islands',\n countryNameLocal: 'Sankattan Siha Na Islas Mariånas',\n countryCallingCode: 1670,\n flag: '🇲🇵',\n },\n {\n countryCode: 'KM',\n countryNameEn: 'Comoros',\n countryNameLocal: 'Umoja wa Komori',\n countryCallingCode: 269,\n flag: '🇰🇲',\n },\n {\n countryCode: 'CK',\n countryNameEn: 'Cook Islands',\n countryNameLocal: \"Kūki 'Āirani\",\n countryCallingCode: 682,\n flag: '🇨🇰',\n },\n {\n countryCode: 'CR',\n countryNameEn: 'Costa Rica',\n countryNameLocal: 'Costa Rica',\n countryCallingCode: 506,\n flag: '🇨🇷',\n },\n {\n countryCode: 'HR',\n countryNameEn: 'Croatia',\n countryNameLocal: 'Hrvatska',\n countryCallingCode: 385,\n flag: '🇭🇷',\n },\n {\n countryCode: 'CU',\n countryNameEn: 'Cuba',\n countryNameLocal: 'Cuba',\n countryCallingCode: 53,\n flag: '🇨🇺',\n },\n {\n countryCode: 'CW',\n countryNameEn: 'Curaçao',\n countryNameLocal: 'Curaçao',\n countryCallingCode: 599,\n flag: '🇨🇼',\n },\n {\n countryCode: 'CY',\n countryNameEn: 'Cyprus',\n countryNameLocal: 'Κύπρος, Kibris',\n countryCallingCode: 357,\n flag: '🇨🇾',\n },\n {\n countryCode: 'CZ',\n countryNameEn: 'Czechia',\n countryNameLocal: 'Česká republika',\n countryCallingCode: 420,\n flag: '🇨🇿',\n },\n {\n countryCode: 'CI',\n countryNameEn: \"Côte d'Ivoire\",\n countryNameLocal: \"Côte d'Ivoire\",\n countryCallingCode: 225,\n flag: '🇨🇮',\n },\n {\n countryCode: 'CD',\n countryNameEn: 'Democratic Republic of the Congo',\n countryNameLocal: 'Democratic Republic of the Congo',\n countryCallingCode: 243,\n flag: '🇨🇩',\n },\n {\n countryCode: 'DK',\n countryNameEn: 'Denmark',\n countryNameLocal: 'Danmark',\n countryCallingCode: 45,\n flag: '🇩🇰',\n },\n {\n countryCode: 'DJ',\n countryNameEn: 'Djibouti',\n countryNameLocal: 'Djibouti, جيبوتي, Jabuuti, Gabuutih',\n countryCallingCode: 253,\n flag: '🇩🇯',\n },\n {\n countryCode: 'DM',\n countryNameEn: 'Dominica',\n countryNameLocal: 'Dominica',\n countryCallingCode: 767,\n flag: '🇩🇲',\n },\n {\n countryCode: 'DO',\n countryNameEn: 'Dominican Republic',\n countryNameLocal: 'República Dominicana',\n countryCallingCode: 1,\n flag: '🇩🇴',\n },\n {\n countryCode: 'EC',\n countryNameEn: 'Ecuador',\n countryNameLocal: 'Ecuador',\n countryCallingCode: 593,\n flag: '🇪🇨',\n },\n {\n countryCode: 'EG',\n countryNameEn: 'Egypt',\n countryNameLocal: 'مصر',\n countryCallingCode: 20,\n flag: '🇪🇬',\n },\n {\n countryCode: 'SV',\n countryNameEn: 'El Salvador',\n countryNameLocal: 'El Salvador',\n countryCallingCode: 503,\n flag: '🇸🇻',\n },\n {\n countryCode: 'GQ',\n countryNameEn: 'Equatorial Guinea',\n countryNameLocal: 'Guiena ecuatorial, Guinée équatoriale, Guiné Equatorial',\n countryCallingCode: 240,\n flag: '🇬🇶',\n },\n {\n countryCode: 'ER',\n countryNameEn: 'Eritrea',\n countryNameLocal: 'ኤርትራ, إرتريا, Eritrea',\n countryCallingCode: 291,\n flag: '🇪🇷',\n },\n {\n countryCode: 'EE',\n countryNameEn: 'Estonia',\n countryNameLocal: 'Eesti',\n countryCallingCode: 372,\n flag: '🇪🇪',\n },\n {\n countryCode: 'SZ',\n countryNameEn: 'Eswatini',\n countryNameLocal: 'Swaziland',\n countryCallingCode: 268,\n flag: '🇸🇿',\n },\n {\n countryCode: 'ET',\n countryNameEn: 'Ethiopia',\n countryNameLocal: 'ኢትዮጵያ, Itoophiyaa',\n countryCallingCode: 251,\n flag: '🇪🇹',\n },\n {\n countryCode: 'FK',\n countryNameEn: 'Falkland Islands',\n countryNameLocal: 'Falkland Islands',\n countryCallingCode: 500,\n flag: '🇫🇰',\n },\n {\n countryCode: 'FO',\n countryNameEn: 'Faroe Islands',\n countryNameLocal: 'Færøerne',\n countryCallingCode: 298,\n flag: '🇫🇴',\n },\n {\n countryCode: 'FJ',\n countryNameEn: 'Fiji',\n countryNameLocal: 'Fiji',\n countryCallingCode: 679,\n flag: '🇫🇯',\n },\n {\n countryCode: 'FI',\n countryNameEn: 'Finland',\n countryNameLocal: 'Suomi',\n countryCallingCode: 358,\n flag: '🇫🇮',\n },\n {\n countryCode: 'FR',\n countryNameEn: 'France',\n countryNameLocal: 'France',\n countryCallingCode: 33,\n flag: '🇫🇷',\n },\n {\n countryCode: 'GF',\n countryNameEn: 'French Guiana',\n countryNameLocal: 'Guyane française',\n countryCallingCode: 594,\n flag: '🇬🇫',\n },\n {\n countryCode: 'PF',\n countryNameEn: 'French Polynesia',\n countryNameLocal: 'Polynésie française',\n countryCallingCode: 689,\n flag: '🇵🇫',\n },\n {\n countryCode: 'TF',\n countryNameEn: 'French Southern and Antarctic Lands',\n countryNameLocal: 'Terres australes et antarctiques françaises',\n countryCallingCode: 672,\n flag: '🇹🇫',\n },\n {\n countryCode: 'GA',\n countryNameEn: 'Gabon',\n countryNameLocal: 'Gabon',\n countryCallingCode: 241,\n flag: '🇬🇦',\n },\n {\n countryCode: 'GM',\n countryNameEn: 'Gambia',\n countryNameLocal: 'The Gambia',\n countryCallingCode: 220,\n flag: '🇬🇲',\n },\n {\n countryCode: 'GE',\n countryNameEn: 'Georgia',\n countryNameLocal: 'საქართველო',\n countryCallingCode: 995,\n flag: '🇬🇪',\n },\n {\n countryCode: 'DE',\n countryNameEn: 'Germany',\n countryNameLocal: 'Deutschland',\n countryCallingCode: 49,\n flag: '🇩🇪',\n },\n {\n countryCode: 'GH',\n countryNameEn: 'Ghana',\n countryNameLocal: 'Ghana',\n countryCallingCode: 233,\n flag: '🇬🇭',\n },\n {\n countryCode: 'GI',\n countryNameEn: 'Gibraltar',\n countryNameLocal: 'Gibraltar',\n countryCallingCode: 350,\n flag: '🇬🇮',\n },\n {\n countryCode: 'GR',\n countryNameEn: 'Greece',\n countryNameLocal: 'Ελλάδα',\n countryCallingCode: 30,\n flag: '🇬🇷',\n },\n {\n countryCode: 'GL',\n countryNameEn: 'Greenland',\n countryNameLocal: 'Kalaallit Nunaat, Grønland',\n countryCallingCode: 299,\n flag: '🇬🇱',\n },\n {\n countryCode: 'GD',\n countryNameEn: 'Grenada',\n countryNameLocal: 'Grenada',\n countryCallingCode: 1473,\n flag: '🇬🇩',\n },\n {\n countryCode: 'GP',\n countryNameEn: 'Guadeloupe',\n countryNameLocal: 'Guadeloupe',\n countryCallingCode: 590,\n flag: '🇬🇵',\n },\n {\n countryCode: 'GU',\n countryNameEn: 'Guam',\n countryNameLocal: 'Guam, Guåhån',\n countryCallingCode: 1,\n flag: '🇬🇺',\n },\n {\n countryCode: 'GT',\n countryNameEn: 'Guatemala',\n countryNameLocal: 'Guatemala',\n countryCallingCode: 502,\n flag: '🇬🇹',\n },\n {\n countryCode: 'GG',\n countryNameEn: 'Guernsey',\n countryNameLocal: 'Guernsey',\n countryCallingCode: 44,\n flag: '🇬🇬',\n },\n {\n countryCode: 'GN',\n countryNameEn: 'Guinea',\n countryNameLocal: 'Guinée',\n countryCallingCode: 224,\n flag: '🇬🇳',\n },\n {\n countryCode: 'GW',\n countryNameEn: 'Guinea-Bissau',\n countryNameLocal: 'Guiné-Bissau',\n countryCallingCode: 245,\n flag: '🇬🇼',\n },\n {\n countryCode: 'GY',\n countryNameEn: 'Guyana',\n countryNameLocal: 'Guyana',\n countryCallingCode: 592,\n flag: '🇬🇾',\n },\n {\n countryCode: 'HT',\n countryNameEn: 'Haiti',\n countryNameLocal: 'Haïti, Ayiti',\n countryCallingCode: 509,\n flag: '🇭🇹',\n },\n {\n countryCode: 'VA',\n countryNameEn: 'Holy See',\n countryNameLocal: 'Sancta Sedes',\n countryCallingCode: 39,\n flag: '🇻🇦',\n },\n {\n countryCode: 'HN',\n countryNameEn: 'Honduras',\n countryNameLocal: 'Honduras',\n countryCallingCode: 504,\n flag: '🇭🇳',\n },\n {\n countryCode: 'HK',\n countryNameEn: 'Hong Kong',\n countryNameLocal: '香港, Hong Kong',\n countryCallingCode: 852,\n flag: '🇭🇰',\n },\n {\n countryCode: 'HU',\n countryNameEn: 'Hungary',\n countryNameLocal: 'Magyarország',\n countryCallingCode: 36,\n flag: '🇭🇺',\n },\n {\n countryCode: 'IS',\n countryNameEn: 'Iceland',\n countryNameLocal: 'Ísland',\n countryCallingCode: 354,\n flag: '🇮🇸',\n },\n {\n countryCode: 'IN',\n countryNameEn: 'India',\n countryNameLocal: 'भारत, India',\n countryCallingCode: 91,\n flag: '🇮🇳',\n },\n {\n countryCode: 'ID',\n countryNameEn: 'Indonesia',\n countryNameLocal: 'Indonesia',\n countryCallingCode: 62,\n flag: '🇮🇩',\n },\n {\n countryCode: 'IR',\n countryNameEn: 'Iran (Islamic Republic of)',\n countryNameLocal: 'ایران',\n countryCallingCode: 98,\n flag: '🇮🇷',\n },\n {\n countryCode: 'IQ',\n countryNameEn: 'Iraq',\n countryNameLocal: 'العراق, Iraq',\n countryCallingCode: 964,\n flag: '🇮🇶',\n },\n {\n countryCode: 'IE',\n countryNameEn: 'Ireland',\n countryNameLocal: 'Ireland, Éire',\n countryCallingCode: 353,\n flag: '🇮🇪',\n },\n {\n countryCode: 'IM',\n countryNameEn: 'Isle of Man',\n countryNameLocal: 'Isle of Man',\n countryCallingCode: 44,\n flag: '🇮🇲',\n },\n {\n countryCode: 'IL',\n countryNameEn: 'Israel',\n countryNameLocal: 'ישראל',\n countryCallingCode: 972,\n flag: '🇮🇱',\n },\n {\n countryCode: 'IT',\n countryNameEn: 'Italy',\n countryNameLocal: 'Italia',\n countryCallingCode: 39,\n flag: '🇮🇹',\n },\n {\n countryCode: 'JM',\n countryNameEn: 'Jamaica',\n countryNameLocal: 'Jamaica',\n countryCallingCode: 876,\n flag: '🇯🇲',\n },\n {\n countryCode: 'JP',\n countryNameEn: 'Japan',\n countryNameLocal: '日本',\n countryCallingCode: 81,\n flag: '🇯🇵',\n },\n {\n countryCode: 'JE',\n countryNameEn: 'Jersey',\n countryNameLocal: 'Jersey',\n countryCallingCode: 44,\n flag: '🇯🇪',\n },\n {\n countryCode: 'JO',\n countryNameEn: 'Jordan',\n countryNameLocal: 'الأُرْدُن',\n countryCallingCode: 962,\n flag: '🇯🇴',\n },\n {\n countryCode: 'KZ',\n countryNameEn: 'Kazakhstan',\n countryNameLocal: 'Қазақстан, Казахстан',\n countryCallingCode: 7,\n flag: '🇰🇿',\n },\n {\n countryCode: 'KE',\n countryNameEn: 'Kenya',\n countryNameLocal: 'Kenya',\n countryCallingCode: 254,\n flag: '🇰🇪',\n },\n {\n countryCode: 'KI',\n countryNameEn: 'Kiribati',\n countryNameLocal: 'Kiribati',\n countryCallingCode: 686,\n flag: '🇰🇮',\n },\n {\n countryCode: 'KW',\n countryNameEn: 'Kuwait',\n countryNameLocal: 'الكويت',\n countryCallingCode: 965,\n flag: '🇰🇼',\n },\n {\n countryCode: 'KG',\n countryNameEn: 'Kyrgyzstan',\n countryNameLocal: 'Кыргызстан, Киргизия',\n countryCallingCode: 996,\n flag: '🇰🇬',\n },\n {\n countryCode: 'LA',\n countryNameEn: \"Lao People's Democratic Republic\",\n countryNameLocal: 'ປະຊາຊົນລາວ',\n countryCallingCode: 856,\n flag: '🇱🇦',\n },\n {\n countryCode: 'LV',\n countryNameEn: 'Latvia',\n countryNameLocal: 'Latvija',\n countryCallingCode: 371,\n flag: '🇱🇻',\n },\n {\n countryCode: 'LB',\n countryNameEn: 'Lebanon',\n countryNameLocal: 'لبنان, Liban',\n countryCallingCode: 961,\n flag: '🇱🇧',\n },\n {\n countryCode: 'LS',\n countryNameEn: 'Lesotho',\n countryNameLocal: 'Lesotho',\n countryCallingCode: 266,\n flag: '🇱🇸',\n },\n {\n countryCode: 'LR',\n countryNameEn: 'Liberia',\n countryNameLocal: 'Liberia',\n countryCallingCode: 231,\n flag: '🇱🇷',\n },\n {\n countryCode: 'LY',\n countryNameEn: 'Libya',\n countryNameLocal: 'ليبيا',\n countryCallingCode: 218,\n flag: '🇱🇾',\n },\n {\n countryCode: 'LI',\n countryNameEn: 'Liechtenstein',\n countryNameLocal: 'Liechtenstein',\n countryCallingCode: 423,\n flag: '🇱🇮',\n },\n {\n countryCode: 'LT',\n countryNameEn: 'Lithuania',\n countryNameLocal: 'Lietuva',\n countryCallingCode: 370,\n flag: '🇱🇹',\n },\n {\n countryCode: 'LU',\n countryNameEn: 'Luxembourg',\n countryNameLocal: 'Lëtzebuerg, Luxembourg, Luxemburg',\n countryCallingCode: 352,\n flag: '🇱🇺',\n },\n {\n countryCode: 'MO',\n countryNameEn: 'Macao',\n countryNameLocal: '澳門, Macau',\n countryCallingCode: 853,\n flag: '🇲🇴',\n },\n {\n countryCode: 'MG',\n countryNameEn: 'Madagascar',\n countryNameLocal: 'Madagasikara, Madagascar',\n countryCallingCode: 261,\n flag: '🇲🇬',\n },\n {\n countryCode: 'MW',\n countryNameEn: 'Malawi',\n countryNameLocal: 'Malawi',\n countryCallingCode: 265,\n flag: '🇲🇼',\n },\n {\n countryCode: 'MY',\n countryNameEn: 'Malaysia',\n countryNameLocal: '',\n countryCallingCode: 60,\n flag: '🇲🇾',\n },\n {\n countryCode: 'MV',\n countryNameEn: 'Maldives',\n countryNameLocal: '',\n countryCallingCode: 960,\n flag: '🇲🇻',\n },\n {\n countryCode: 'ML',\n countryNameEn: 'Mali',\n countryNameLocal: 'Mali',\n countryCallingCode: 223,\n flag: '🇲🇱',\n },\n {\n countryCode: 'MT',\n countryNameEn: 'Malta',\n countryNameLocal: 'Malta',\n countryCallingCode: 356,\n flag: '🇲🇹',\n },\n {\n countryCode: 'MQ',\n countryNameEn: 'Martinique',\n countryNameLocal: 'Martinique',\n countryCallingCode: 596,\n flag: '🇲🇶',\n },\n {\n countryCode: 'MR',\n countryNameEn: 'Mauritania',\n countryNameLocal: 'موريتانيا, Mauritanie',\n countryCallingCode: 222,\n flag: '🇲🇷',\n },\n {\n countryCode: 'MU',\n countryNameEn: 'Mauritius',\n countryNameLocal: 'Maurice, Mauritius',\n countryCallingCode: 230,\n flag: '🇲🇺',\n },\n {\n countryCode: 'YT',\n countryNameEn: 'Mayotte',\n countryNameLocal: 'Mayotte',\n countryCallingCode: 262,\n flag: '🇾🇹',\n },\n {\n countryCode: 'MX',\n countryNameEn: 'Mexico',\n countryNameLocal: 'México',\n countryCallingCode: 52,\n flag: '🇲🇽',\n },\n {\n countryCode: 'FM',\n countryNameEn: 'Micronesia (Federated States of)',\n countryNameLocal: 'Micronesia',\n countryCallingCode: 691,\n flag: '🇫🇲',\n },\n {\n countryCode: 'MC',\n countryNameEn: 'Monaco',\n countryNameLocal: 'Monaco',\n countryCallingCode: 377,\n flag: '🇲🇨',\n },\n {\n countryCode: 'MN',\n countryNameEn: 'Mongolia',\n countryNameLocal: 'Монгол Улс',\n countryCallingCode: 976,\n flag: '🇲🇳',\n },\n {\n countryCode: 'ME',\n countryNameEn: 'Montenegro',\n countryNameLocal: 'Crna Gora, Црна Гора',\n countryCallingCode: 382,\n flag: '🇲🇪',\n },\n {\n countryCode: 'MS',\n countryNameEn: 'Montserrat',\n countryNameLocal: 'Montserrat',\n countryCallingCode: 1664,\n flag: '🇲🇸',\n },\n {\n countryCode: 'MA',\n countryNameEn: 'Morocco',\n countryNameLocal: 'Maroc, ⵍⵎⵖⵔⵉⴱ, المغرب',\n countryCallingCode: 212,\n flag: '🇲🇦',\n },\n {\n countryCode: 'MZ',\n countryNameEn: 'Mozambique',\n countryNameLocal: 'Mozambique',\n countryCallingCode: 258,\n flag: '🇲🇿',\n },\n {\n countryCode: 'MM',\n countryNameEn: 'Myanmar',\n countryNameLocal: 'မြန်မာ',\n countryCallingCode: 95,\n flag: '🇲🇲',\n },\n {\n countryCode: 'NA',\n countryNameEn: 'Namibia',\n countryNameLocal: 'Namibia',\n countryCallingCode: 264,\n flag: '🇳🇦',\n },\n {\n countryCode: 'NR',\n countryNameEn: 'Nauru',\n countryNameLocal: 'Nauru',\n countryCallingCode: 674,\n flag: '🇳🇷',\n },\n {\n countryCode: 'NP',\n countryNameEn: 'Nepal',\n countryNameLocal: '',\n countryCallingCode: 977,\n flag: '🇳🇵',\n },\n {\n countryCode: 'NL',\n countryNameEn: 'Netherlands',\n countryNameLocal: 'Nederland',\n countryCallingCode: 31,\n flag: '🇳🇱',\n },\n {\n countryCode: 'NC',\n countryNameEn: 'New Caledonia',\n countryNameLocal: 'Nouvelle-Calédonie',\n countryCallingCode: 687,\n flag: '🇳🇨',\n },\n {\n countryCode: 'NZ',\n countryNameEn: 'New Zealand',\n countryNameLocal: 'New Zealand',\n countryCallingCode: 64,\n flag: '🇳🇿',\n },\n {\n countryCode: 'NI',\n countryNameEn: 'Nicaragua',\n countryNameLocal: 'Nicaragua',\n countryCallingCode: 505,\n flag: '🇳🇮',\n },\n {\n countryCode: 'NE',\n countryNameEn: 'Niger',\n countryNameLocal: 'Niger',\n countryCallingCode: 227,\n flag: '🇳🇪',\n },\n {\n countryCode: 'NG',\n countryNameEn: 'Nigeria',\n countryNameLocal: 'Nigeria',\n countryCallingCode: 234,\n flag: '🇳🇬',\n },\n {\n countryCode: 'NU',\n countryNameEn: 'Niue',\n countryNameLocal: 'Niue',\n countryCallingCode: 683,\n flag: '🇳🇺',\n },\n {\n countryCode: 'NF',\n countryNameEn: 'Norfolk Island',\n countryNameLocal: 'Norfolk Island',\n countryCallingCode: 672,\n flag: '🇳🇫',\n },\n {\n countryCode: 'KP',\n countryNameEn: 'North Korea',\n countryNameLocal: '조선민주주의인민공화국',\n countryCallingCode: 850,\n flag: '🇰🇵',\n },\n {\n countryCode: 'MK',\n countryNameEn: 'North Macedonia',\n countryNameLocal: 'Македонија',\n countryCallingCode: 389,\n flag: '🇲🇰',\n },\n {\n countryCode: 'NO',\n countryNameEn: 'Norway',\n countryNameLocal: 'Norge, Noreg',\n countryCallingCode: 47,\n flag: '🇳🇴',\n },\n {\n countryCode: 'OM',\n countryNameEn: 'Oman',\n countryNameLocal: 'سلطنة عُمان',\n countryCallingCode: 968,\n flag: '🇴🇲',\n },\n {\n countryCode: 'PK',\n countryNameEn: 'Pakistan',\n countryNameLocal: 'پاکستان',\n countryCallingCode: 92,\n flag: '🇵🇰',\n },\n {\n countryCode: 'PW',\n countryNameEn: 'Palau',\n countryNameLocal: 'Palau',\n countryCallingCode: 680,\n flag: '🇵🇼',\n },\n {\n countryCode: 'PS',\n countryNameEn: 'Palestine, State of',\n countryNameLocal: 'Palestinian Territory',\n countryCallingCode: 970,\n flag: '🇵🇸',\n },\n {\n countryCode: 'PA',\n countryNameEn: 'Panama',\n countryNameLocal: 'Panama',\n countryCallingCode: 507,\n flag: '🇵🇦',\n },\n {\n countryCode: 'PG',\n countryNameEn: 'Papua New Guinea',\n countryNameLocal: 'Papua New Guinea',\n countryCallingCode: 675,\n flag: '🇵🇬',\n },\n {\n countryCode: 'PY',\n countryNameEn: 'Paraguay',\n countryNameLocal: 'Paraguay',\n countryCallingCode: 595,\n flag: '🇵🇾',\n },\n {\n countryCode: 'PE',\n countryNameEn: 'Peru',\n countryNameLocal: 'Perú',\n countryCallingCode: 51,\n flag: '🇵🇪',\n },\n {\n countryCode: 'PH',\n countryNameEn: 'Philippines',\n countryNameLocal: 'Philippines',\n countryCallingCode: 63,\n flag: '🇵🇭',\n },\n {\n countryCode: 'PN',\n countryNameEn: 'Pitcairn',\n countryNameLocal: 'Pitcairn',\n countryCallingCode: 64,\n flag: '🇵🇳',\n },\n {\n countryCode: 'PL',\n countryNameEn: 'Poland',\n countryNameLocal: 'Polska',\n countryCallingCode: 48,\n flag: '🇵🇱',\n },\n {\n countryCode: 'PT',\n countryNameEn: 'Portugal',\n countryNameLocal: 'Portugal',\n countryCallingCode: 351,\n flag: '🇵🇹',\n },\n {\n countryCode: 'PR',\n countryNameEn: 'Puerto Rico',\n countryNameLocal: 'Puerto Rico',\n countryCallingCode: 1,\n flag: '🇵🇷',\n },\n {\n countryCode: 'QA',\n countryNameEn: 'Qatar',\n countryNameLocal: 'قطر',\n countryCallingCode: 974,\n flag: '🇶🇦',\n },\n {\n countryCode: 'MD',\n countryNameEn: 'Republic of Moldova',\n countryNameLocal: 'Moldova, Молдавия',\n countryCallingCode: 373,\n flag: '🇲🇩',\n },\n {\n countryCode: 'CG',\n countryNameEn: 'Republic of the Congo',\n countryNameLocal: 'République du Congo',\n countryCallingCode: 242,\n flag: '🇨🇬',\n },\n {\n countryCode: 'MH',\n countryNameEn: 'Republic of the Marshall Islands',\n countryNameLocal: 'Aolepān Aorōkin Ṃajeḷ',\n countryCallingCode: 692,\n flag: '🇲🇭',\n },\n {\n countryCode: 'RO',\n countryNameEn: 'Romania',\n countryNameLocal: 'România',\n countryCallingCode: 40,\n flag: '🇷🇴',\n },\n {\n countryCode: 'RU',\n countryNameEn: 'Russia',\n countryNameLocal: 'Россия',\n countryCallingCode: 7,\n flag: '🇷🇺',\n },\n {\n countryCode: 'RW',\n countryNameEn: 'Rwanda',\n countryNameLocal: 'Rwanda',\n countryCallingCode: 250,\n flag: '🇷🇼',\n },\n {\n countryCode: 'RE',\n countryNameEn: 'Réunion',\n countryNameLocal: 'La Réunion',\n countryCallingCode: 262,\n flag: '🇷🇪',\n },\n {\n countryCode: 'BL',\n countryNameEn: 'Saint Barthélemy',\n countryNameLocal: 'Saint-Barthélemy',\n countryCallingCode: 590,\n flag: '🇧🇱',\n },\n {\n countryCode: 'SH',\n countryNameEn: 'Saint Helena, Ascension and Tristan da Cunha',\n countryNameLocal: 'Saint Helena',\n countryCallingCode: 290,\n flag: '🇸🇭',\n },\n {\n countryCode: 'KN',\n countryNameEn: 'Saint Kitts and Nevis',\n countryNameLocal: 'Saint Kitts and Nevis',\n countryCallingCode: 1869,\n flag: '🇰🇳',\n },\n {\n countryCode: 'LC',\n countryNameEn: 'Saint Lucia',\n countryNameLocal: 'Saint Lucia',\n countryCallingCode: 1758,\n flag: '🇱🇨',\n },\n {\n countryCode: 'MF',\n countryNameEn: 'Saint Martin (French part)',\n countryNameLocal: 'Saint-Martin',\n countryCallingCode: 590,\n flag: '🇲🇫',\n },\n {\n countryCode: 'PM',\n countryNameEn: 'Saint Pierre and Miquelon',\n countryNameLocal: 'Saint-Pierre-et-Miquelon',\n countryCallingCode: 508,\n flag: '🇵🇲',\n },\n {\n countryCode: 'VC',\n countryNameEn: 'Saint Vincent and the Grenadines',\n countryNameLocal: 'Saint Vincent and the Grenadines',\n countryCallingCode: 1784,\n flag: '🇻🇨',\n },\n {\n countryCode: 'WS',\n countryNameEn: 'Samoa',\n countryNameLocal: 'Samoa',\n countryCallingCode: 685,\n flag: '🇼🇸',\n },\n {\n countryCode: 'SM',\n countryNameEn: 'San Marino',\n countryNameLocal: 'San Marino',\n countryCallingCode: 378,\n flag: '🇸🇲',\n },\n {\n countryCode: 'ST',\n countryNameEn: 'Sao Tome and Principe',\n countryNameLocal: 'São Tomé e Príncipe',\n countryCallingCode: 239,\n flag: '🇸🇹',\n },\n {\n countryCode: 'SA',\n countryNameEn: 'Saudi Arabia',\n countryNameLocal: 'السعودية',\n countryCallingCode: 966,\n flag: '🇸🇦',\n },\n {\n countryCode: 'SN',\n countryNameEn: 'Senegal',\n countryNameLocal: 'Sénégal',\n countryCallingCode: 221,\n flag: '🇸🇳',\n },\n {\n countryCode: 'RS',\n countryNameEn: 'Serbia',\n countryNameLocal: 'Србија',\n countryCallingCode: 381,\n flag: '🇷🇸',\n },\n {\n countryCode: 'SC',\n countryNameEn: 'Seychelles',\n countryNameLocal: 'Seychelles',\n countryCallingCode: 248,\n flag: '🇸🇨',\n },\n {\n countryCode: 'SL',\n countryNameEn: 'Sierra Leone',\n countryNameLocal: 'Sierra Leone',\n countryCallingCode: 232,\n flag: '🇸🇱',\n },\n {\n countryCode: 'SG',\n countryNameEn: 'Singapore',\n countryNameLocal: 'Singapore',\n countryCallingCode: 65,\n flag: '🇸🇬',\n },\n {\n countryCode: 'SX',\n countryNameEn: 'Sint Maarten (Dutch part)',\n countryNameLocal: 'Sint Maarten',\n countryCallingCode: 1721,\n flag: '🇸🇽',\n },\n {\n countryCode: 'SK',\n countryNameEn: 'Slovakia',\n countryNameLocal: 'Slovensko',\n countryCallingCode: 421,\n flag: '🇸🇰',\n },\n {\n countryCode: 'SI',\n countryNameEn: 'Slovenia',\n countryNameLocal: 'Slovenija',\n countryCallingCode: 386,\n flag: '🇸🇮',\n },\n {\n countryCode: 'SB',\n countryNameEn: 'Solomon Islands',\n countryNameLocal: 'Solomon Islands',\n countryCallingCode: 677,\n flag: '🇸🇧',\n },\n {\n countryCode: 'SO',\n countryNameEn: 'Somalia',\n countryNameLocal: 'Somalia, الصومال',\n countryCallingCode: 252,\n flag: '🇸🇴',\n },\n {\n countryCode: 'ZA',\n countryNameEn: 'South Africa',\n countryNameLocal: 'South Africa',\n countryCallingCode: 27,\n flag: '🇿🇦',\n },\n {\n countryCode: 'GS',\n countryNameEn: 'South Georgia and the South Sandwich Islands',\n countryNameLocal: 'South Georgia and the South Sandwich Islands',\n countryCallingCode: 500,\n flag: '🇬🇸',\n },\n {\n countryCode: 'KR',\n countryNameEn: 'South Korea',\n countryNameLocal: '대한민국',\n countryCallingCode: 82,\n flag: '🇰🇷',\n },\n {\n countryCode: 'SS',\n countryNameEn: 'South Sudan',\n countryNameLocal: 'South Sudan',\n countryCallingCode: 211,\n flag: '🇸🇸',\n },\n {\n countryCode: 'ES',\n countryNameEn: 'Spain',\n countryNameLocal: 'España',\n countryCallingCode: 34,\n flag: '🇪🇸',\n },\n {\n countryCode: 'LK',\n countryNameEn: 'Sri Lanka',\n countryNameLocal: 'ශ්‍රී ලංකා, இலங்கை',\n countryCallingCode: 94,\n flag: '🇱🇰',\n },\n {\n countryCode: 'SD',\n countryNameEn: 'Sudan',\n countryNameLocal: 'السودان',\n countryCallingCode: 249,\n flag: '🇸🇩',\n },\n {\n countryCode: 'SR',\n countryNameEn: 'Suriname',\n countryNameLocal: 'Suriname',\n countryCallingCode: 597,\n flag: '🇸🇷',\n },\n {\n countryCode: 'SJ',\n countryNameEn: 'Svalbard and Jan Mayen',\n countryNameLocal: 'Svalbard and Jan Mayen',\n countryCallingCode: 4779,\n flag: '🇸🇯',\n },\n {\n countryCode: 'SE',\n countryNameEn: 'Sweden',\n countryNameLocal: 'Sverige',\n countryCallingCode: 46,\n flag: '🇸🇪',\n },\n {\n countryCode: 'CH',\n countryNameEn: 'Switzerland',\n countryNameLocal: 'Schweiz, Suisse, Svizzera, Svizra',\n countryCallingCode: 41,\n flag: '🇨🇭',\n },\n {\n countryCode: 'SY',\n countryNameEn: 'Syrian Arab Republic',\n countryNameLocal: 'سوريا, Sūriyya',\n countryCallingCode: 963,\n flag: '🇸🇾',\n },\n {\n countryCode: 'TW',\n countryNameEn: 'Taiwan, Province of China',\n countryNameLocal: 'Taiwan',\n countryCallingCode: 886,\n flag: '🇹🇼',\n },\n {\n countryCode: 'TJ',\n countryNameEn: 'Tajikistan',\n countryNameLocal: ',',\n countryCallingCode: 992,\n flag: '🇹🇯',\n },\n {\n countryCode: 'HM',\n countryNameEn: 'Territory of Heard Island and McDonald Islands',\n countryNameLocal: 'Territory of Heard Island and McDonald Islands',\n countryCallingCode: 672,\n flag: '🇭🇲',\n },\n {\n countryCode: 'TH',\n countryNameEn: 'Thailand',\n countryNameLocal: 'ประเทศไทย',\n countryCallingCode: 66,\n flag: '🇹🇭',\n },\n {\n countryCode: 'TL',\n countryNameEn: 'Timor-Leste',\n countryNameLocal: \"Timor-Leste, Timor Lorosa'e\",\n countryCallingCode: 670,\n flag: '🇹🇱',\n },\n {\n countryCode: 'TG',\n countryNameEn: 'Togo',\n countryNameLocal: 'Togo',\n countryCallingCode: 228,\n flag: '🇹🇬',\n },\n {\n countryCode: 'TK',\n countryNameEn: 'Tokelau',\n countryNameLocal: 'Tokelau',\n countryCallingCode: 690,\n flag: '🇹🇰',\n },\n {\n countryCode: 'TO',\n countryNameEn: 'Tonga',\n countryNameLocal: 'Tonga',\n countryCallingCode: 676,\n flag: '🇹🇴',\n },\n {\n countryCode: 'TT',\n countryNameEn: 'Trinidad and Tobago',\n countryNameLocal: 'Trinidad and Tobago',\n countryCallingCode: 868,\n flag: '🇹🇹',\n },\n {\n countryCode: 'TN',\n countryNameEn: 'Tunisia',\n countryNameLocal: 'تونس, Tunisie',\n countryCallingCode: 216,\n flag: '🇹🇳',\n },\n {\n countryCode: 'TR',\n countryNameEn: 'Turkey',\n countryNameLocal: 'Türkiye',\n countryCallingCode: 90,\n flag: '🇹🇷',\n },\n {\n countryCode: 'TM',\n countryNameEn: 'Turkmenistan',\n countryNameLocal: 'Türkmenistan',\n countryCallingCode: 993,\n flag: '🇹🇲',\n },\n {\n countryCode: 'TC',\n countryNameEn: 'Turks and Caicos Islands',\n countryNameLocal: 'Turks and Caicos Islands',\n countryCallingCode: 1649,\n flag: '🇹🇨',\n },\n {\n countryCode: 'TV',\n countryNameEn: 'Tuvalu',\n countryNameLocal: 'Tuvalu',\n countryCallingCode: 688,\n flag: '🇹🇻',\n },\n {\n countryCode: 'UG',\n countryNameEn: 'Uganda',\n countryNameLocal: 'Uganda',\n countryCallingCode: 256,\n flag: '🇺🇬',\n },\n {\n countryCode: 'UA',\n countryNameEn: 'Ukraine',\n countryNameLocal: 'Україна',\n countryCallingCode: 380,\n flag: '🇺🇦',\n },\n {\n countryCode: 'AE',\n countryNameEn: 'United Arab Emirates',\n countryNameLocal: 'دولة الإمارات العربيّة المتّحدة',\n countryCallingCode: 971,\n flag: '🇦🇪',\n },\n {\n countryCode: 'GB',\n countryNameEn: 'United Kingdom',\n countryNameLocal: 'Great Britain',\n countryCallingCode: 44,\n flag: '🇬🇧',\n },\n {\n countryCode: 'TZ',\n countryNameEn: 'United Republic of Tanzania',\n countryNameLocal: 'Tanzania',\n countryCallingCode: 255,\n flag: '🇹🇿',\n },\n {\n countryCode: 'UM',\n countryNameEn: 'United States Minor Outlying Islands',\n countryNameLocal: 'United States Minor Outlying Islands',\n countryCallingCode: 246,\n flag: '🇺🇲',\n },\n {\n countryCode: 'US',\n countryNameEn: 'United States of America',\n countryNameLocal: 'United States of America',\n countryCallingCode: 1,\n flag: '🇺🇸',\n },\n {\n countryCode: 'UY',\n countryNameEn: 'Uruguay',\n countryNameLocal: 'Uruguay',\n countryCallingCode: 598,\n flag: '🇺🇾',\n },\n {\n countryCode: 'UZ',\n countryNameEn: 'Uzbekistan',\n countryNameLocal: '',\n countryCallingCode: 998,\n flag: '🇺🇿',\n },\n {\n countryCode: 'VU',\n countryNameEn: 'Vanuatu',\n countryNameLocal: 'Vanuatu',\n countryCallingCode: 678,\n flag: '🇻🇺',\n },\n {\n countryCode: 'VE',\n countryNameEn: 'Venezuela (Bolivarian Republic of)',\n countryNameLocal: 'Venezuela',\n countryCallingCode: 58,\n flag: '🇻🇪',\n },\n {\n countryCode: 'VN',\n countryNameEn: 'Vietnam',\n countryNameLocal: 'Việt Nam',\n countryCallingCode: 84,\n flag: '🇻🇳',\n },\n {\n countryCode: 'VG',\n countryNameEn: 'Virgin Islands (British)',\n countryNameLocal: 'British Virgin Islands',\n countryCallingCode: 1284,\n flag: '🇻🇬',\n },\n {\n countryCode: 'VI',\n countryNameEn: 'Virgin Islands (U.S.)',\n countryNameLocal: 'United States Virgin Islands',\n countryCallingCode: 1340,\n flag: '🇻🇮',\n },\n {\n countryCode: 'WF',\n countryNameEn: 'Wallis and Futuna',\n countryNameLocal: 'Wallis-et-Futuna',\n countryCallingCode: 681,\n flag: '🇼🇫',\n },\n {\n countryCode: 'EH',\n countryNameEn: 'Western Sahara',\n countryNameLocal: 'Sahara Occidental',\n countryCallingCode: 212,\n flag: '🇪🇭',\n },\n {\n countryCode: 'YE',\n countryNameEn: 'Yemen',\n countryNameLocal: 'اليَمَن',\n countryCallingCode: 967,\n flag: '🇾🇪',\n },\n {\n countryCode: 'ZM',\n countryNameEn: 'Zambia',\n countryNameLocal: 'Zambia',\n countryCallingCode: 260,\n flag: '🇿🇲',\n },\n {\n countryCode: 'ZW',\n countryNameEn: 'Zimbabwe',\n countryNameLocal: 'Zimbabwe',\n countryCallingCode: 263,\n flag: '🇿🇼',\n },\n {\n countryCode: 'AX',\n countryNameEn: 'Åland Islands',\n countryNameLocal: 'Åland',\n countryCallingCode: 358,\n flag: '🇦🇽',\n },\n];\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n HostBinding,\n Input,\n OnInit,\n} from '@angular/core';\nimport {\n AbstractControl,\n NG_VALUE_ACCESSOR,\n UntypedFormControl,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { CountryCode, parsePhoneNumberFromString, PhoneNumber } from 'libphonenumber-js';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, mergeMap, tap } from 'rxjs/operators';\nimport { GalaxyCoreInputDirective } from '../core/core-input.directive';\nimport { CountryCodeList, CountryDetailsInterface } from './country-code-list';\n\nconst DEFAULT_COUNTRY_CODE = 'US';\nconst INVALID_PHONE_NUMBER_ERROR_KEY = 'GALAXY.INPUT.PHONE.VALIDATION_ERROR';\n\n/** @deprecated - a new phone input is in development */\n@Component({\n selector: 'glxy-phone-input',\n templateUrl: './phone-input.component.html',\n styleUrls: ['./phone-input.component.scss', './../core/core.material-override.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PhoneInputComponent),\n multi: true,\n },\n ],\n})\nexport class PhoneInputComponent extends GalaxyCoreInputDirective implements OnInit {\n @HostBinding('class') class = 'glxy-phone-number-input';\n @Input({ transform: booleanAttribute }) useGalaxyFormField = false;\n\n @Input() set phoneNumber(val: string) {\n if (!!val && val.startsWith('+')) {\n const ccc = CountryCodeList.find((cc) => {\n if (val.substring(1, cc.countryCallingCode.toString().length + 1) === cc.countryCallingCode.toString()) {\n return true;\n }\n return false;\n });\n if (ccc) {\n this.countryDetails$$.next(ccc);\n }\n const ph = this.parsePhoneNumber(val.substring(1));\n if (ph) {\n this.formControl.setValue(ph.formatInternational());\n }\n } else {\n this.formControl.setValue(val.toString());\n }\n }\n\n get countryCode(): string {\n return this.countryDetails$$.getValue().countryCode;\n }\n\n rawInputControl: UntypedFormControl = new UntypedFormControl('', { updateOn: 'blur' });\n\n nationalPhoneNumber$$: BehaviorSubject = new BehaviorSubject('');\n countryDetails$$: BehaviorSubject = new BehaviorSubject(\n this.getCountryDetails(DEFAULT_COUNTRY_CODE),\n );\n\n countryCodeList = CountryCodeList;\n focused = false;\n label = 'GALAXY.INPUT.PHONE.LABEL';\n\n private phoneNumberValidationFunc = (control: AbstractControl): ValidationErrors | null => {\n if (control.value === null || control.value === undefined) {\n return null;\n }\n const phoneNumber = this.parsePhoneNumber(control.value);\n if (phoneNumber) {\n if (phoneNumber.country) {\n this.countryDetails$$.next(this.getCountryDetails(phoneNumber.country));\n }\n this.nationalPhoneNumber$$.next(`${phoneNumber.formatInternational()}`);\n this.formControl.setValue(phoneNumber.number.toString());\n } else {\n this.nationalPhoneNumber$$.next(control.value);\n this.formControl.setValue(control.value);\n }\n\n if ((!!phoneNumber && phoneNumber.isValid()) || control.value === '') {\n return null;\n }\n\n this.collectErrorsAndUpdateRawInputFormControl([]);\n return { message: INVALID_PHONE_NUMBER_ERROR_KEY };\n };\n\n ngOnInit(): void {\n this.setupControl();\n }\n\n getCountryDetails(countryCode: string): CountryDetailsInterface {\n return CountryCodeList.find((c) => c.countryCode === countryCode.toUpperCase()) ?? CountryCodeList[0];\n }\n\n setupControl(): void {\n if (!this.validators) {\n this.validators = [];\n }\n // If the config is passed in, parse it first\n if (this.config) {\n this.id = this.config.id || '';\n this.label = this.config.label || '';\n this.placeholder = this.config.placeholder || '';\n this.formControl = this.config.formControl || new UntypedFormControl();\n this.required = this.config.required || false;\n this.validators = this.config.validators || [];\n this.disabled = this.config.disabled || false;\n }\n\n if (!this.formControl) {\n this.formControl = new UntypedFormControl();\n }\n\n const rawInputValidators = this.setupValidators();\n\n this.rawInputControl.setValidators(rawInputValidators);\n\n const validators = this.validators?.map((validator) => {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!validator.validatorFn(control)) {\n return null;\n }\n return { message: validator.errorMessage };\n };\n });\n\n if (validators?.length) {\n this.formControl.setValidators(validators);\n }\n if (this.asyncValidators?.length) {\n this.asyncValidatorErrors$ = this.formControl.valueChanges.pipe(\n debounceTime(GalaxyCoreInputDirective.ASYNC_DEBOUNCE_DELAY),\n distinctUntilChanged(),\n mergeMap(() => this.runAsyncValidators()),\n map((result) => this.handleAsyncValidatorResultsForPhoneInput(result)),\n tap((result) => this.asyncValidatorErrors$$.next(result)),\n );\n this.validatorError$ = combineLatest([\n this.formControl.statusChanges,\n this.rawInputControl.statusChanges,\n this.asyncValidatorErrors$,\n ]).pipe(\n map(([, , asyncErrors]) => {\n if (asyncErrors?.length) {\n return asyncErrors[0];\n }\n return this.rawInputControl.errors ? this.rawInputControl.errors.message : '';\n }),\n );\n } else {\n this.validatorError$ = combineLatest([this.formControl.statusChanges, this.rawInputControl.statusChanges]).pipe(\n map(() => {\n return this.rawInputControl.errors ? this.rawInputControl.errors.message : '';\n }),\n );\n }\n\n if (typeof this.formControl.value === 'string' && !!this.formControl.value) {\n const phoneNumber = this.parsePhoneNumber(this.formControl.value);\n if (!!phoneNumber && phoneNumber.isValid()) {\n this.rawInputControl.setValue(phoneNumber.number);\n } else {\n this.rawInputControl.setValue(this.formControl.value);\n }\n }\n }\n\n setupValidators(): ValidatorFn[] {\n const validators: ValidatorFn[] = [this.phoneNumberValidationFunc];\n\n // Drop in required validation\n if (this.required) {\n validators.push((control: AbstractControl): ValidationErrors | null => {\n if (!Validators.required(control)) {\n return null;\n }\n const error: ValidationErrors[] = [{ message: 'GALAXY.INPUT.CORE.VALIDATION_ERROR_REQ' }];\n this.collectErrorsAndUpdateRawInputFormControl(error);\n return error[0];\n });\n }\n return validators;\n }\n\n parsePhoneNumber(rawNumber: string): PhoneNumber | null {\n let phoneNumber = parsePhoneNumberFromString(\n `${rawNumber}`,\n this.countryDetails$$.getValue().countryCode as CountryCode,\n );\n if (!!phoneNumber && phoneNumber.isValid()) {\n return phoneNumber;\n }\n\n phoneNumber = parsePhoneNumberFromString(`+${rawNumber}`);\n if (!!phoneNumber && phoneNumber.isValid()) {\n return phoneNumber;\n }\n\n const countryDetails = this.countryDetails$$.getValue();\n const number = `+${countryDetails.countryCallingCode}${rawNumber}`;\n return parsePhoneNumberFromString(number, countryDetails.countryCode as CountryCode) ?? null;\n }\n\n handleAsyncValidatorResultsForPhoneInput(\n results: {\n validatorResult: ValidationErrors;\n errorMessage: string;\n }[],\n ): string[] {\n const filteredResults = results.filter((r) => r.validatorResult);\n const asyncHasErrors = results.some((r) => r.validatorResult);\n const errorMessages = results.map((r) => r.errorMessage);\n this.collectErrorsAndUpdateRawInputFormControl(filteredResults);\n return asyncHasErrors ? errorMessages : [];\n }\n\n collectErrorsAndUpdateRawInputFormControl(errors: ValidationErrors[]): void {\n const allErrorsMap: ValidationErrors = {};\n if (this.formControl.errors) errors.push(this.formControl.errors);\n if (this.rawInputControl.errors) errors.push(this.rawInputControl.errors);\n errors.forEach((errorSet) => {\n if (errorSet) {\n Object.keys(errorSet).forEach((key: string) => {\n return (allErrorsMap[key] = errorSet[key]);\n });\n }\n });\n this.formControl.setErrors(allErrorsMap);\n this.rawInputControl.setErrors(allErrorsMap);\n }\n\n /**\n * Toggles the state of whether to show the input value or the parsed input text\n * @param state - State of focus\n */\n toggleFocus(state: boolean): void {\n this.focused = state;\n }\n\n updateCountryDetails(countryCode: string): void {\n this.countryDetails$$.next(\n CountryCodeList.find((c) => c.countryCode === countryCode.toUpperCase()) ?? CountryCodeList[0],\n );\n this.rawInputControl.updateValueAndValidity();\n this.toggleFocus(false);\n }\n\n blurInput(): void {\n if (!this.asyncValidatorErrors$$.getValue().length) {\n this.rawInputControl.updateValueAndValidity();\n }\n this.toggleFocus(false);\n }\n\n setDisabledState(isDisabled: boolean): void {\n // Do nothing when no change\n if (isDisabled === this.rawInputControl?.disabled) {\n return;\n }\n\n this.isDisabled = isDisabled;\n if (isDisabled) {\n this.rawInputControl.disable();\n } else {\n this.rawInputControl.enable();\n }\n }\n}\n","\n \n {{ label | translate }}\n \n \n \n\n
\n \n {{ nationalPhoneNumber$$ | async }}\n \n
\n\n \n \n {{ validatorError | translate }}\n \n \n \n
\n\n \n {{ label | translate }}\n \n \n \n\n
\n \n {{ nationalPhoneNumber$$ | async }}\n \n
\n\n \n \n {{ validatorError | translate }}\n \n \n \n
\n","import { ChangeDetectionStrategy, Component, forwardRef, HostBinding, Input, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { GalaxyCoreInputDirective } from '../core/core-input.directive';\nimport { GalaxySelectInputInterface, SelectInputOption, SelectInputOptionInterface } from '../input.interface';\n\n/** @deprecated - use Galaxy Field with native select or mat-select */\n@Component({\n selector: 'glxy-select-input',\n templateUrl: './select-input.component.html',\n styleUrls: ['./../core/core.material-override.scss', './select-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectInputComponent),\n multi: true,\n },\n ],\n})\nexport class SelectInputComponent extends GalaxyCoreInputDirective implements OnInit {\n @HostBinding('class') class = 'glxy-select-input';\n\n @Input() hint?: string;\n @Input() options?: SelectInputOption[] = [];\n @Input() config?: GalaxySelectInputInterface;\n\n selectText = '';\n\n ngOnInit(): void {\n this.setupControl();\n }\n\n setupControl(): void {\n super.setupControl();\n\n // If true, use form control initial value to set selected state\n const useFormControl = !!this.formControl?.value;\n\n const preselected = this.options?.find((opt: SelectInputOption) => {\n const option = opt as SelectInputOptionInterface;\n if (!('options' in opt)) {\n if (useFormControl) {\n return option.value === this.formControl?.value;\n } else {\n return option.selected;\n }\n }\n }) as SelectInputOptionInterface;\n\n if (preselected) {\n const { value, label } = preselected;\n if (!useFormControl) {\n this.formControl?.setValue(value, { emitEvent: false });\n }\n\n this.updateSelection(value, label);\n }\n }\n\n selected(event: any, label: string): void {\n if (event.isUserInput) {\n this.selectText = label;\n }\n }\n\n updateSelection(value: any, text: string): void {\n this.selectText = text;\n // Need to wait for next frame for\n // ng model and change to pick this up\n window.setTimeout(() => {\n this.inputValue = value;\n });\n }\n}\n","\n @if (label) {\n {{ label | translate }}\n }\n
\n \n \n {{ selectText | translate }}\n \n @for (option of options; track option) {\n @if (option | getOption; as optionObj) {\n \n \n {{ option.label | translate }}\n \n @if (!!optionObj.description) {\n
\n \n {{ optionObj.description | translate }}\n \n }\n \n }\n @if (option | getOptionGroup; as optionGroup) {\n \n @for (subOption of optionGroup.options; track subOption) {\n \n \n {{ subOption.label | translate }}\n \n
\n @if (!!subOption.description) {\n \n {{ subOption.description | translate }}\n \n }\n \n }\n
\n }\n }\n \n @if (hint) {\n {{ hint | translate }}\n }\n\n @if (validatorError$ | async; as validatorError) {\n \n @if (validatorError !== '') {\n {{ validatorError | translate }}\n }\n \n }\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\n// Material imports\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\n\nimport { GalaxyCoreInputDirective, GetOptionGroupPipe, GetOptionPipe } from './core/core-input.directive';\n\nimport { InputComponent } from './input/input.component';\nexport { CurrencyFieldComponent } from './currency-field/currency-field.component';\nexport { CurrencyInputComponent } from './currency-input/currency-input.component';\nexport { EmailInputComponent } from './email-input/email-input.component';\nexport { InputComponent } from './input/input.component';\nexport { PasswordInputComponent } from './password-input/password-input.component';\nexport { ParsePhoneInputPipe } from './phone-input/parse-phone-input.pipe';\nexport { PhoneInputComponent } from './phone-input/phone-input.component';\nexport { SearchSelectInputComponent } from './search-select-input/search-select-input.component';\nexport { SelectInputComponent } from './select-input/select-input.component';\n\nimport { EmailInputComponent } from './email-input/email-input.component';\n\nimport { PasswordInputComponent } from './password-input/password-input.component';\n\nimport { PhoneInputComponent } from './phone-input/phone-input.component';\n\nimport { ParsePhoneInputPipe } from './phone-input/parse-phone-input.pipe';\n\nimport { SelectInputComponent } from './select-input/select-input.component';\n\nimport { CurrencyInputComponent } from './currency-input/currency-input.component';\n\nimport { CurrencyFieldComponent } from './currency-field/currency-field.component';\n\nimport { SearchSelectInputComponent } from './search-select-input/search-select-input.component';\n\nexport const MODULE_IMPORTS = [\n CommonModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n FormsModule,\n ReactiveFormsModule,\n MatSelectModule,\n TranslateModule,\n MatMenuModule,\n MatTooltipModule,\n MatAutocompleteModule,\n GalaxyFormFieldModule,\n];\n\nexport const MODULE_DECLARATIONS = [\n InputComponent,\n GalaxyCoreInputDirective,\n EmailInputComponent,\n PasswordInputComponent,\n PhoneInputComponent,\n ParsePhoneInputPipe,\n SelectInputComponent,\n CurrencyInputComponent,\n CurrencyFieldComponent,\n SearchSelectInputComponent,\n GetOptionPipe,\n GetOptionGroupPipe,\n];\n\nexport const MODULE_EXPORTS = [\n InputComponent,\n EmailInputComponent,\n PasswordInputComponent,\n PhoneInputComponent,\n SelectInputComponent,\n CurrencyInputComponent,\n CurrencyFieldComponent,\n SearchSelectInputComponent,\n];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n providers: [GetOptionPipe, GetOptionGroupPipe],\n exports: MODULE_EXPORTS,\n imports: MODULE_IMPORTS,\n})\nexport class GalaxyInputModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FileUploadInfo } from './file-upload-info';\n\n@Injectable()\nexport class FileUploadService {\n constructor(private http: HttpClient) {}\n\n upload(url: string, file: File): Observable {\n const body = new FormData();\n body.append('file', file);\n return this.http\n .post(url, body, { withCredentials: true })\n .pipe(map((response: any) => response.data)) as Observable;\n }\n}\n","{\n \"FRONTEND\": {\n \"FORMS\": {\n \"ATTRIBUTES\": {\n \"CARD_TITLE\": \"Google\",\n \"SELECT_BUSINESS_CATEGORY\": \"Select a business category\",\n \"TO_ACCESS_ATTRIBUTES\": \"to access attributes\",\n \"AUTOCOMPLETE_HEADER\": \"Add attributes\",\n \"MORE_ATTRIBUTES\": \"Attributes\"\n },\n \"INPUT\": {\n \"YES\": \"Yes\",\n \"NO\": \"No\",\n \"REQUIRED\": \"Required\",\n \"WHATS_THIS\": \"What's this?\",\n \"MAXIMUM_LENGTH\": \"Maximum length of {{maxLength}}\",\n \"MINIMUM_LENGTH\": \"Minimum length of {{minLength}}\",\n \"ADD_FIELD\": \"+ Add field\",\n \"MAX_LENGTH_ERROR\": \"You can only choose {{maxLength}} options\",\n \"ADD\": \"Add\"\n },\n \"MORE_HOURS\": {\n \"TITLE\": \"More hours\",\n \"EMPTY\": \"More hours aren't applicable to your business category\"\n },\n \"SPECIAL_HOURS\": {\n \"DESCRIPTION_ADD_EXCEPTIONS\": \"Add exceptions to your regular hours for upcoming holidays and other special cases.\",\n \"TITLE\": \"Special Hours\",\n \"DATE\": \"Date\",\n \"OPEN\": \"Open\",\n \"ADD_NEW_DATE\": \"Add new date\",\n \"ADD_HOURS\": \"Add hours\",\n \"REMOVE_DATE\": \"Remove Date\"\n },\n \"HOURS_OF_OPERATION\": {\n \"HOURS_OF_OPERATION\": \"Hours of operation\",\n \"MONDAY\": \"Monday\",\n \"TUESDAY\": \"Tuesday\",\n \"WEDNESDAY\": \"Wednesday\",\n \"THURSDAY\": \"Thursday\",\n \"FRIDAY\": \"Friday\",\n \"SATURDAY\": \"Saturday\",\n \"SUNDAY\": \"Sunday\",\n \"HOLIDAY_HOURS\": \"Holiday hours\",\n \"PUBLIC_HOLIDAYS\": \"Public holidays\",\n \"CLOSED\": \"Closed\",\n \"NONE\": \"None\",\n \"ALL_DAY\": \"All day\",\n \"NOTES\": \"Notes\",\n \"ADD_NOTES\": \"Add notes\",\n \"ADD_HOURS\": \"Add hours\",\n \"NOTES_ONLY\": \"Notes only\",\n \"OPENS_AT\": \"Opens at\",\n \"CLOSES_AT\": \"Closes at\",\n \"CANCEL\": \"Cancel\",\n \"SAVE\": \"Save\",\n \"REMOVE\": \"Remove hours\",\n \"REMOVE_DATE\": \"Remove Date\",\n \"HOURS_CANNOT_BE_EMPTY\": \"Hours cannot be empty\",\n \"CLOSING_TIME_MUST_BE_AFTER_OPENING\": \"Closing time must be after opening time. If you meant 'open all day', set the opening time to 'All day'\",\n \"OPENING_TIME_OVER_MIDNIGHT\": \"If your business is open over midnight, you'll need to set your hours for each day. For example, if open from 9 PM - 2 AM, enter 9 PM - 12 AM on the first day and 12 AM - 2 AM on the second.\",\n \"NOTES_ONLY_IS_DEPRECATED\": \"You must specify hours of operation for this day. Availability by appointment only can be set under the Hours tab in your Business Profile. Other details can be added to your Business Descriptions in the Marketing tab.\",\n \"DESCRIPTION_WILL_BE_REMOVED\": \"Notes on individual days are no longer supported. Please add relevant notes to your Business Descriptions under the Marketing tab.\"\n },\n \"IMAGE_UPLOAD\": {\n \"DROP_NOUN_HERE\": \"Drop {{imageNoun}} here\",\n \"UPLOAD_NOUN\": \"Upload {{imageNoun}}\",\n \"DISABLED\": \"Disabled\",\n \"OR\": \"or\",\n \"MAX_FILE_SIZE\": \"Maximum file size {{sizeInMb}} MB\",\n \"IMAGE_NOT_DETECTED\": \"Image not detected\",\n \"UNSUPPORTED_FILE_TYPE\": \"Unsupported file type {{fileType}}, please try a different file.\",\n \"FILE_TOO_LARGE\": \"File is too large, please try a different file.\",\n \"NO_UPLOAD_URL_SET\": \"No upload url set\",\n \"DRAG_AND_DROP_UNSUPPORTED\": \"Your browser does not support drag and drop. Select 'Upload Image' instead.\"\n },\n \"TIME_PICKER\": {\n \"ENTER_VALID_TIME\": \"Enter valid time\"\n }\n },\n \"BUSINESS\": {\n \"ACTIVE\": \"Active\"\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FileUploadService } from '../va-file-upload/file-upload.service';\nimport { ImageUploaderComponent } from './image-upload.component';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\n\n@NgModule({\n imports: [\n CommonModule,\n MatProgressSpinnerModule,\n MatIconModule,\n MatButtonModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'common/forms',\n baseTranslation: baseTranslation,\n }),\n ],\n declarations: [ImageUploaderComponent],\n providers: [FileUploadService],\n exports: [ImageUploaderComponent],\n})\nexport class VaImageUploaderModule {}\n","import * as i0 from '@angular/core';\nimport { Injectable, Optional, Inject, NgModule } from '@angular/core';\nimport { DateAdapter, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { getYear, getMonth, getDate, getDay, getDaysInMonth, parseISO, parse, format, addYears, addMonths, addDays, formatISO, isDate, isValid } from 'date-fns';\n\n/** Creates an array and fills it with values. */\nfunction range(length, valueFunction) {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n// date-fns doesn't have a way to read/print month names or days of the week directly,\n// so we get them by formatting a date with a format that produces the desired month/day.\nconst MONTH_FORMATS = {\n long: 'LLLL',\n short: 'LLL',\n narrow: 'LLLLL'\n};\nconst DAY_OF_WEEK_FORMATS = {\n long: 'EEEE',\n short: 'EEE',\n narrow: 'EEEEE'\n};\n/** Adds date-fns support to Angular Material. */\nlet DateFnsAdapter = /*#__PURE__*/(() => {\n class DateFnsAdapter extends DateAdapter {\n constructor(matDateLocale) {\n super();\n this.setLocale(matDateLocale);\n }\n getYear(date) {\n return getYear(date);\n }\n getMonth(date) {\n return getMonth(date);\n }\n getDate(date) {\n return getDate(date);\n }\n getDayOfWeek(date) {\n return getDay(date);\n }\n getMonthNames(style) {\n const pattern = MONTH_FORMATS[style];\n return range(12, i => this.format(new Date(2017, i, 1), pattern));\n }\n getDateNames() {\n const dtf = typeof Intl !== 'undefined' ? new Intl.DateTimeFormat(this.locale.code, {\n day: 'numeric',\n timeZone: 'utc'\n }) : null;\n return range(31, i => {\n if (dtf) {\n // date-fns doesn't appear to support this functionality.\n // Fall back to `Intl` on supported browsers.\n const date = new Date();\n date.setUTCFullYear(2017, 0, i + 1);\n date.setUTCHours(0, 0, 0, 0);\n return dtf.format(date).replace(/[\\u200e\\u200f]/g, '');\n }\n return i + '';\n });\n }\n getDayOfWeekNames(style) {\n const pattern = DAY_OF_WEEK_FORMATS[style];\n return range(7, i => this.format(new Date(2017, 0, i + 1), pattern));\n }\n getYearName(date) {\n return this.format(date, 'y');\n }\n getFirstDayOfWeek() {\n return this.locale.options?.weekStartsOn ?? 0;\n }\n getNumDaysInMonth(date) {\n return getDaysInMonth(date);\n }\n clone(date) {\n return new Date(date.getTime());\n }\n createDate(year, month, date) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const result = new Date();\n result.setFullYear(year, month, date);\n result.setHours(0, 0, 0, 0);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n return result;\n }\n today() {\n return new Date();\n }\n parse(value, parseFormat) {\n if (typeof value == 'string' && value.length > 0) {\n const iso8601Date = parseISO(value);\n if (this.isValid(iso8601Date)) {\n return iso8601Date;\n }\n const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\n if (!parseFormat.length) {\n throw Error('Formats array must not be empty.');\n }\n for (const currentFormat of formats) {\n const fromFormat = parse(value, currentFormat, new Date(), {\n locale: this.locale\n });\n if (this.isValid(fromFormat)) {\n return fromFormat;\n }\n }\n return this.invalid();\n } else if (typeof value === 'number') {\n return new Date(value);\n } else if (value instanceof Date) {\n return this.clone(value);\n }\n return null;\n }\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n throw Error('DateFnsAdapter: Cannot format invalid date.');\n }\n return format(date, displayFormat, {\n locale: this.locale\n });\n }\n addCalendarYears(date, years) {\n return addYears(date, years);\n }\n addCalendarMonths(date, months) {\n return addMonths(date, months);\n }\n addCalendarDays(date, days) {\n return addDays(date, days);\n }\n toIso8601(date) {\n return formatISO(date, {\n representation: 'date'\n });\n }\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n deserialize(value) {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n const date = parseISO(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n return super.deserialize(value);\n }\n isDateInstance(obj) {\n return isDate(obj);\n }\n isValid(date) {\n return isValid(date);\n }\n invalid() {\n return new Date(NaN);\n }\n static {\n this.ɵfac = function DateFnsAdapter_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DateFnsAdapter)(i0.ɵɵinject(MAT_DATE_LOCALE, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DateFnsAdapter,\n factory: DateFnsAdapter.ɵfac\n });\n }\n }\n return DateFnsAdapter;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst MAT_DATE_FNS_FORMATS = {\n parse: {\n dateInput: 'P'\n },\n display: {\n dateInput: 'P',\n monthYearLabel: 'LLL uuuu',\n dateA11yLabel: 'PP',\n monthYearA11yLabel: 'LLLL uuuu'\n }\n};\nlet DateFnsModule = /*#__PURE__*/(() => {\n class DateFnsModule {\n static {\n this.ɵfac = function DateFnsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DateFnsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: DateFnsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [{\n provide: DateAdapter,\n useClass: DateFnsAdapter,\n deps: [MAT_DATE_LOCALE]\n }]\n });\n }\n }\n return DateFnsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatDateFnsModule = /*#__PURE__*/(() => {\n class MatDateFnsModule {\n static {\n this.ɵfac = function MatDateFnsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatDateFnsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatDateFnsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [provideDateFnsAdapter()]\n });\n }\n }\n return MatDateFnsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction provideDateFnsAdapter(formats = MAT_DATE_FNS_FORMATS) {\n return [{\n provide: DateAdapter,\n useClass: DateFnsAdapter,\n deps: [MAT_DATE_LOCALE]\n }, {\n provide: MAT_DATE_FORMATS,\n useValue: formats\n }];\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DateFnsAdapter, DateFnsModule, MAT_DATE_FNS_FORMATS, MatDateFnsModule, provideDateFnsAdapter };\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { FileGroupUploaderComponent } from './file-group-uploader.component';\nimport { FileUploadFieldComponent } from './file-upload-field.component';\nimport { FileUploadService } from './file-upload.service';\n\n@NgModule({\n imports: [CommonModule, MatInputModule, MatIconModule, MatProgressSpinnerModule],\n declarations: [FileUploadFieldComponent, FileGroupUploaderComponent],\n exports: [FileUploadFieldComponent, FileGroupUploaderComponent],\n providers: [FileUploadService],\n})\nexport class VaFileUploaderModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatDividerModule } from '@angular/material/divider';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { GalaxyInputModule } from '@vendasta/galaxy/input';\nimport { GalaxyWrapModule } from '@vendasta/galaxy/galaxy-wrap';\n\nimport { DatepickerComponent } from './datepicker/datepicker.component';\nimport { DateRangePresetsComponent } from './date-range-presets/date-range-presets.component';\nimport { MatDateFnsModule } from '@angular/material-date-fns-adapter';\n\nexport const MODULE_IMPORTS = [\n MatDateFnsModule,\n CommonModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule,\n MatDividerModule,\n MatCardModule,\n MatFormFieldModule,\n MatInputModule,\n MatRadioModule,\n OverlayModule,\n TranslateModule,\n FormsModule,\n ReactiveFormsModule,\n GalaxyInputModule,\n GalaxyWrapModule,\n];\n\nexport const MODULE_DECLARATIONS = [DatepickerComponent, DateRangePresetsComponent];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n imports: MODULE_IMPORTS,\n exports: MODULE_DECLARATIONS,\n})\nexport class GalaxyDatepickerModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { LoadingSpinnerComponent } from './loading-spinner.component';\nexport { LoadingSpinnerComponent };\n\nexport const MODULE_IMPORTS = [CommonModule, MatProgressSpinnerModule];\n\nexport const MODULE_DECLARATIONS = [LoadingSpinnerComponent];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n imports: MODULE_IMPORTS,\n exports: [LoadingSpinnerComponent],\n})\nexport class GalaxyLoadingSpinnerModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ButtonGroupComponent } from './button-group.component';\nexport { ButtonGroupComponent } from './button-group.component';\n\nexport const MODULE_IMPORTS = [CommonModule];\n\nexport const MODULE_DECLARATIONS = [ButtonGroupComponent];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n imports: MODULE_IMPORTS,\n exports: [ButtonGroupComponent],\n})\nexport class GalaxyButtonGroupModule {}\n","import { NgModule } from '@angular/core';\nimport { AiTextButtonComponent } from './ai-text-button.component';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyButtonGroupModule } from '@vendasta/galaxy/button-group';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { GalaxyI18NModule } from '@vendasta/galaxy/i18n';\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport const MODULE_IMPORTS = [\n CommonModule,\n GalaxyButtonGroupModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n GalaxyI18NModule,\n TranslateModule,\n];\n\nexport const MODULE_DECLARATIONS = [AiTextButtonComponent];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n imports: MODULE_IMPORTS,\n exports: [AiTextButtonComponent],\n})\nexport class GalaxyAITextButtonModule {}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { GoogleMapsModule } from '@angular/google-maps';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { HoursOfOperationComponent } from './controls/hours-of-operation/hours-of-operation.component';\nimport { InputComponent } from './controls/input/input.component';\nimport { InputRepeatedComponent } from './controls/input-repeated/input-repeated.component';\nimport { GlxyInputRepeatedComponent } from './controls/input-repeated-glxy/input-repeated-glxy.component';\nimport { InputTextareaComponent } from './controls/input-textarea/input-textarea.component';\nimport { InputTagsComponent } from './controls/input-tags/input-tags.component';\nimport { GlxyInputTagsComponent } from './controls/input-tags-glxy/input-tags-glxy.component';\nimport { FileUploadService } from './controls/va-file-upload/file-upload.service';\nimport { GeoComponent } from './controls/geo/geo.component';\nimport { VaImageUploaderModule } from './controls/image-upload/image-upload.module';\nimport { CountryStateComponent } from './controls/country-state/country-state.component';\nimport { EditHoursOfOperationDialogComponent } from './controls/hours-of-operation/edit-dialog/edit-dialog.component';\nimport { PhoneNumberMultiComponent } from './controls/phone-number-multi/phone-number-multi.component';\nimport { DayOfWeekDisplayComponent } from './controls/hours-of-operation/inner-components/day-of-week-display.component';\nimport { DayOfWeekEditComponent } from './controls/hours-of-operation/inner-components/day-of-week-edit.component';\nimport { MatDateFnsModule } from '@angular/material-date-fns-adapter';\n\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { HoursOfOperationTimeSpanEditComponent } from './controls/hours-of-operation/inner-components/time-span-edit.component';\nimport { TimePickerComponent } from './controls/time-picker/time-picker.component';\nimport { VaFileUploaderModule } from './controls/va-file-upload/va-file-upload.module';\nimport { TimeRangeSelectorComponent } from './controls/time-range-selector/time-range-selector.component';\nimport { ErrorControlDirective } from './controls/error-control.component';\nimport { ErrorRepeatedControlDirective } from './controls/error-repeated-control.component';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from './assets/i18n/en_devel.json';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { GalaxyWrapModule } from '@vendasta/galaxy/galaxy-wrap';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { BusinessHoursComponent } from './controls/business-hours/business-hours.component';\nimport { SpecialHoursDisplayComponent } from './controls/business-hours/inner-components/special-hours-display/special-hours-display.component';\nimport { EditSpecialHoursDialogComponent } from './controls/business-hours/edit-special-hours-dialog/edit-special-hours-dialog.component';\nimport { EditSpecialTimePeriodComponent } from './controls/business-hours/inner-components/edit-special-time-period/edit-special-time-period.component';\nimport { EditTimeSpanComponent } from './controls/business-hours/inner-components/edit-time-span/edit-time-span.component';\nimport { GalaxyDatepickerModule } from '@vendasta/galaxy/datepicker';\nimport { GoogleAttributesComponent } from './controls/google-attributes/google-attributes.component';\nimport { BingAttributesComponent } from './controls/bing-attributes/bing-attributes.component';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { AttributesInputComponent } from './controls/google-attributes/attributes-input/attributes-input.component';\nimport { SpecialHoursComponent } from './controls/business-hours/special-hours/special-hours.component';\nimport { BooleanAttributeComponent } from './controls/google-attributes/attributes-input/boolean-attribute/boolean-attribute.component';\nimport { UrlAttributeComponent } from './controls/google-attributes/attributes-input/url-attribute/url-attribute.component';\nimport { TextAttributeComponent } from './controls/google-attributes/attributes-input/text-attribute/text-attribute.component';\nimport { RepeatedEnumAttributeComponent } from './controls/google-attributes/attributes-input/repeated-enum-attribute/repeated-enum-attribute.component';\nimport { SingleEnumAttributeComponent } from './controls/google-attributes/attributes-input/single-enum-attribute/single-enum-attribute.component';\nimport { EditRegularHoursDialogComponent } from './controls/business-hours/edit-regular-hours-dialog/edit-regular-hours-dialog.component';\nimport { RegularHoursDisplayComponent } from './controls/business-hours/inner-components/regular-hours-display/regular-hours-display.component';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { InputTextareaAiComponent } from './controls/input-textarea-ai/input-textarea-ai.component';\nimport { GalaxyButtonGroupModule } from '@vendasta/galaxy/button-group';\nimport { GalaxyAITextButtonModule } from '@vendasta/galaxy/ai-text-button';\n\n@NgModule({\n imports: [\n MatDateFnsModule,\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n MatExpansionModule,\n MatCheckboxModule,\n MatDatepickerModule,\n MatInputModule,\n MatTooltipModule,\n MatCardModule,\n MatButtonModule,\n MatIconModule,\n MatDialogModule,\n MatRadioModule,\n MatSlideToggleModule,\n MatSelectModule,\n MatMenuModule,\n MatAutocompleteModule,\n MatChipsModule,\n MatProgressSpinnerModule,\n VaImageUploaderModule,\n VaFileUploaderModule,\n TranslateModule,\n MatFormFieldModule,\n LexiconModule.forChild({\n componentName: 'common/forms',\n baseTranslation: baseTranslation,\n }),\n GalaxyWrapModule,\n GalaxyFormFieldModule,\n GoogleMapsModule,\n GalaxyDatepickerModule,\n GalaxyLoadingSpinnerModule,\n MatButtonToggleModule,\n GalaxyButtonGroupModule,\n GalaxyAITextButtonModule,\n ],\n declarations: [\n InputComponent,\n InputRepeatedComponent,\n GlxyInputRepeatedComponent,\n InputTextareaComponent,\n DayOfWeekEditComponent,\n HoursOfOperationTimeSpanEditComponent,\n HoursOfOperationComponent,\n DayOfWeekDisplayComponent,\n EditHoursOfOperationDialogComponent,\n TimePickerComponent,\n InputTagsComponent,\n GlxyInputTagsComponent,\n GeoComponent,\n PhoneNumberMultiComponent,\n CountryStateComponent,\n TimeRangeSelectorComponent,\n ErrorControlDirective,\n ErrorRepeatedControlDirective,\n BusinessHoursComponent,\n SpecialHoursDisplayComponent,\n EditSpecialHoursDialogComponent,\n EditSpecialTimePeriodComponent,\n EditTimeSpanComponent,\n EditRegularHoursDialogComponent,\n GoogleAttributesComponent,\n BingAttributesComponent,\n AttributesInputComponent,\n BooleanAttributeComponent,\n UrlAttributeComponent,\n SingleEnumAttributeComponent,\n RepeatedEnumAttributeComponent,\n SpecialHoursComponent,\n EditRegularHoursDialogComponent,\n RegularHoursDisplayComponent,\n InputTextareaAiComponent,\n TextAttributeComponent,\n ],\n exports: [\n InputComponent,\n InputRepeatedComponent,\n GlxyInputRepeatedComponent,\n InputTextareaComponent,\n HoursOfOperationComponent,\n TimePickerComponent,\n InputTagsComponent,\n GlxyInputTagsComponent,\n GeoComponent,\n CountryStateComponent,\n VaImageUploaderModule,\n VaFileUploaderModule,\n PhoneNumberMultiComponent,\n TimeRangeSelectorComponent,\n BusinessHoursComponent,\n GoogleAttributesComponent,\n BingAttributesComponent,\n SpecialHoursComponent,\n InputTextareaAiComponent,\n ],\n providers: [FileUploadService],\n})\nexport class VaFormsModule {}\n","import { AbstractControl } from '@angular/forms';\n\n/*\nFIXME this regex has some problems\n 1. It's got some values that look like unicode, but aren't actually valid.\n I lost the codes I was spot-checking, sorry.\n 2. One massive unreadable blob - No tests or examples in test-cases.\n 3. Can't find the original website explaining this regex.\n Z. This should probably be in a backend lib, so all our APIs are the same.\n But that's a larger discussion.\n*/\n\n//Its advisable to validate email address in the backend. However the regex earlier was not even close to being correct.\n// \"^(?!.*(\\u200B))[a-zA-Z0-9\\u0080-\\u00FF\\u0100-\\u017F\\u0180-\\u024F\\u0250-\\u02AF\\u0300-\\u036F\\u0370-\\u03FF\\u0400-\\u04FF\\u0500-\\u052F\\u0530-\\u058F\\u0590-\\u05FF\\u0600-\\u06FF\\u0700-\\u074F\\u0750-\\u077F\\u0780-\\u07BF\\u07C0-\\u07FF\\u0900-\\u097F\\u0980-\\u09FF\\u0A00-\\u0A7F\\u0A80-\\u0AFF\\u0B00-\\u0B7F\\u0B80-\\u0BFF\\u0C00-\\u0C7F\\u0C80-\\u0CFF\\u0D00-\\u0D7F\\u0D80-\\u0DFF\\u0E00-\\u0E7F\\u0E80-\\u0EFF\\u0F00-\\u0FFF\\u1000-\\u109F\\u10A0-\\u10FF\\u1100-\\u11FF\\u1200-\\u137F\\u1380-\\u139F\\u13A0-\\u13FF\\u1400-\\u167F\\u1680-\\u169F\\u16A0-\\u16FF\\u1700-\\u171F\\u1720-\\u173F\\u1740-\\u175F\\u1760-\\u177F\\u1780-\\u17FF\\u1800-\\u18AF\\u1900-\\u194F\\u1950-\\u197F\\u1980-\\u19DF\\u19E0-\\u19FF\\u1A00-\\u1A1F\\u1B00-\\u1B7F\\u1D00-\\u1D7F\\u1D80-\\u1DBF\\u1DC0-\\u1DFF\\u1E00-\\u1EFF\\u1F00-\\u1FFFu20D0-\\u20FF\\u2100-\\u214F\\u2C00-\\u2C5F\\u2C60-\\u2C7F\\u2C80-\\u2CFF\\u2D00-\\u2D2F\\u2D30-\\u2D7F\\u2D80-\\u2DDF\\u2F00-\\u2FDF\\u2FF0-\\u2FFF\\u3040-\\u309F\\u30A0-\\u30FF\\u3100-\\u312F\\u3130-\\u318F\\u3190-\\u319F\\u31C0-\\u31EF\\u31F0-\\u31FF\\u3200-\\u32FF\\u3300-\\u33FF\\u3400-\\u4DBF\\u4DC0-\\u4DFF\\u4E00-\\u9FFF\\uA000-\\uA48F\\uA490-\\uA4CF\\uA700-\\uA71F\\uA800-\\uA82F\\uA840-\\uA87F\\uAC00-\\uD7AF\\uF900-\\uFAFF.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$\",\n// Below regex follows RFC 5322 standards. Its a little lenient but it will catch really bad ones.\n//https://www.regular-expressions.info/email.html\n// eslint-disable-next-line no-misleading-character-class\nexport const REGEX = new RegExp(\n \"^(?![.])[a-zA-Z0-9!#$%&'*+/=?^_`{|}~]+(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~.-]+)*\" +\n // Domain part\n '@' +\n '((?:[a-zA-Z0-9-]+\\\\.)+[a-zA-Z]{1,})$',\n);\n/*\nDisallow emails like alice@company without a .something\n\nAs summarized here https://www.icann.org/en/announcements/details/new-gtld-dotless-domain-names-prohibited-30-8-2013-en\nwhich itself cites\n https://www.icann.org/en/system/files/files/sac-053-en.pdf\n https://www.iab.org/documents/correspondence-reports-documents/2013-2/iab-statement-dotless-domains-considered-harmful/\n https://www.icann.org/en/system/files/files/dotless-domain-study-29jul13-en.pdf\ndotless domains are prohibited in most cases, and strongly discouraged everywhere else.\n*/\nexport const NoDotlessDomainsRegex = /^.+@.+\\..+$/;\n\n// Validation to ensure the text entered is of type email\nexport function emailValidator(control: AbstractControl): { [key: string]: any } {\n if (!control.value) {\n return null;\n }\n if ([NoDotlessDomainsRegex, REGEX].some((re) => !re.test(control.value))) {\n return { email: '' };\n }\n return null;\n}\n","import { AbstractControl } from '@angular/forms';\n/* tslint:disable */\nexport const REGEX = new RegExp(/^((https?:\\/\\/)?([\\w-]+(\\.[\\w-]+)+|localhost)\\.?(:\\d+)?((\\/)?\\S*)?)$/i);\n\n// Validation to ensure the text entered is of type url\nexport function urlValidator(control: AbstractControl): { [key: string]: any } {\n return !control.value ? null : REGEX.test(control.value) ? null : { url: '' };\n}\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return stringify(rnds);\n}\nexport default v4;"],"mappings":"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","names":["_c0","MapEventManager","listener","_ngZone","BehaviorSubject","name","switchMap","target","observable","Observable","observer","event","currentTarget","subscriber","DEFAULT_OPTIONS","DEFAULT_HEIGHT","DEFAULT_WIDTH","GoogleMap","_GoogleMap","center","zoom","options","_elementRef","platformId","inject","NgZone","EventEmitter","isPlatformBrowser","googleMapsWindow","changes","googleMap","lib","mapConstructor","bounds","padding","x","y","latLng","latLngBounds","take","styles","coerceCssPixelValue","__spreadProps","__spreadValues","__ngFactoryType__","ɵɵdirectiveInject","ElementRef","PLATFORM_ID","ɵɵdefineComponent","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","rf","ctx","ɵɵprojectionDef","ɵɵelement","ɵɵprojection","cssUnitsPattern","value","GoogleMapsModule","_GoogleMapsModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","GalaxyCoreInputDirective","constructor","id","label","placeholder","formControl","UntypedFormControl","required","disableAutoComplete","validators","asyncValidators","bottomSpacing","isDisabled","asyncValidatorErrors$$","BehaviorSubject","asyncValidatorErrors$","Observable","onChange","_value","onTouched","disabled","setDisabledState","value","val","setValue","toString","updateValueAndValidity","setupControl","config","some","validator","validatorFn","Validators","push","errorMessage","map","control","message","setValidators","length","valueChanges","pipe","debounceTime","ASYNC_DEBOUNCE_DELAY","distinctUntilChanged","mergeMap","runAsyncValidators","result","handleAsyncValidatorResults","tap","next","validatorError$","combineLatest","statusChanges","asyncErrors","errors","results","index","validatorResult","filteredResults","filter","r","asyncHasErrors","errorMessages","collectErrorsAndUpdateForm","allErrorsMap","forEach","errorSet","Object","keys","key","setErrors","onBlur","getValue","writeValue","inputValue","registerOnChange","fn","registerOnTouched","disable","enable","_GalaxyCoreInputDirective","selectors","inputs","booleanAttribute","size","features","ɵɵInputTransformsFeature","GetOptionPipe","transform","obj","pure","_GetOptionPipe","GetOptionGroupPipe","_GetOptionGroupPipe","InputType","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ctx_r0","label","ɵɵelement","ɵɵlistener","$event","ɵɵrestoreView","_r2","ɵɵnextContext","ɵɵresetView","emitIconClick","ɵɵproperty","ɵɵpureFunction1","_c1","iconClickable","ɵɵtextInterpolate1","trailingIcon","hint","validatorError_r3","ɵɵtemplate","InputComponent_Conditional_7_Conditional_1_Template","ɵɵconditional","ctx","InputComponent","GalaxyCoreInputDirective","constructor","class","type","InputType","Text","iconClicked","EventEmitter","ngOnInit","setupControl","event","stopPropagation","emit","__ngFactoryType__","selectors","hostVars","hostBindings","rf","ɵɵclassMap","booleanAttribute","config","outputs","features","ɵɵProvidersFeature","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","ɵɵInputTransformsFeature","ɵɵInheritDefinitionFeature","decls","vars","consts","template","InputComponent_Conditional_1_Template","InputComponent_Conditional_2_Template","writeValue","target","value","onBlur","InputComponent_Conditional_5_Template","InputComponent_Conditional_6_Template","InputComponent_Conditional_7_Template","_c0","formControl","invalid","pristine","disableAutoComplete","ɵɵpropertyInterpolate","placeholder","id","required","tmp_12_0","validatorError$","_InputComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ctx_r0","label","ɵɵtextInterpolate1","validatorError_r2","ɵɵtemplate","PasswordInputComponent_Conditional_6_Conditional_1_Template","ɵɵconditional","ctx","ɵɵelement","ɵɵrepeaterCreate","PasswordInputComponent_Conditional_8_Conditional_1_For_9_Template","ɵɵrepeaterTrackByIdentity","tmp_4_0","strengthLabel$","undefined","ɵɵclassMapInterpolate1","ɵɵrepeater","ɵɵpureFunction0","_c1","PasswordInputComponent_Conditional_8_Conditional_1_Template","tmp_1_0","passwordStrength$","ɵɵtextInterpolate2","validatorError_r4","PasswordInputComponent_Conditional_9_Conditional_6_Conditional_1_Template","PasswordInputComponent_Conditional_9_Conditional_1_Template","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","onBlur","togglePasswordVisibility","PasswordInputComponent_Conditional_9_Conditional_6_Template","ɵɵproperty","ɵɵpureFunction1","_c0","confirmPasswordFormControl","invalid","pristine","ɵɵpropertyInterpolate","placeholder","id","required","currentType","currentIcon","tmp_10_0","validatorError$","strongRegex","RegExp","mediumRegex","PasswordInputComponent","GalaxyCoreInputDirective","constructor","class","showPasswordStrength","confirmPassword","UntypedFormControl","confirmPasswordValidator","destroyRef","inject","DestroyRef","ngOnInit","setupControl","config","formControl","validators","push","validatorFn","validatePasswordInputsMatch","errorMessage","setValidators","map","validator","addListenersForPasswordMatching","valueChanges","pipe","calculatePasswordStrength","startWith","getStrengthKey","combineLatest","takeUntilDestroyed","distinctUntilChanged","fcPrevious","cpPrevious","fcCurrent","cpCurrent","tap","updateValueAndValidity","subscribe","password","test","strength","key","__ngFactoryType__","selectors","hostVars","hostBindings","rf","ɵɵclassMap","booleanAttribute","features","ɵɵProvidersFeature","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","ɵɵInputTransformsFeature","ɵɵInheritDefinitionFeature","decls","vars","consts","template","PasswordInputComponent_Conditional_1_Template","$event","writeValue","target","value","PasswordInputComponent_Conditional_6_Template","PasswordInputComponent_Conditional_8_Template","PasswordInputComponent_Conditional_9_Template","tmp_9_0","_PasswordInputComponent","compareControl","control","passwordmatch","CountryCodeList","countryCode","countryNameEn","countryNameLocal","countryCallingCode","flag","ɵɵelement","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ctx_r1","nationalPhoneNumber$$","ɵɵelementContainerStart","validatorError_r3","ɵɵtemplate","PhoneInputComponent_ng_container_0_mat_error_9_ng_container_1_Template","ɵɵproperty","PhoneInputComponent_ng_container_0_input_5_Template","ɵɵlistener","ɵɵrestoreView","_r1","ɵɵnextContext","ɵɵresetView","toggleFocus","blurInput","PhoneInputComponent_ng_container_0_div_8_Template","PhoneInputComponent_ng_container_0_mat_error_9_Template","ɵɵpureFunction1","_c0","formControl","invalid","pristine","ɵɵtextInterpolate","label","disableAutoComplete","ɵɵpropertyInterpolate","tmp_5_0","placeholder","undefined","_c1","focused","id","rawInputControl","required","validatorError$","validatorError_r5","PhoneInputComponent_ng_template_1_glxy_error_8_ng_container_1_Template","PhoneInputComponent_ng_template_1_input_4_Template","_r4","PhoneInputComponent_ng_template_1_div_7_Template","PhoneInputComponent_ng_template_1_glxy_error_8_Template","DEFAULT_COUNTRY_CODE","INVALID_PHONE_NUMBER_ERROR_KEY","PhoneInputComponent","GalaxyCoreInputDirective","constructor","class","useGalaxyFormField","UntypedFormControl","updateOn","BehaviorSubject","countryDetails$$","getCountryDetails","countryCodeList","CountryCodeList","phoneNumberValidationFunc","control","value","phoneNumber","parsePhoneNumber","country","next","formatInternational","setValue","number","toString","isValid","collectErrorsAndUpdateRawInputFormControl","message","val","startsWith","ccc","find","cc","substring","countryCallingCode","length","ph","countryCode","getValue","ngOnInit","setupControl","c","toUpperCase","validators","config","disabled","rawInputValidators","setupValidators","setValidators","map","validator","validatorFn","errorMessage","asyncValidators","asyncValidatorErrors$","valueChanges","pipe","debounceTime","ASYNC_DEBOUNCE_DELAY","distinctUntilChanged","mergeMap","runAsyncValidators","result","handleAsyncValidatorResultsForPhoneInput","tap","asyncValidatorErrors$$","combineLatest","statusChanges","asyncErrors","errors","push","Validators","error","rawNumber","parsePhoneNumberFromString","countryDetails","results","filteredResults","filter","r","validatorResult","asyncHasErrors","some","errorMessages","allErrorsMap","forEach","errorSet","Object","keys","key","setErrors","state","updateCountryDetails","updateValueAndValidity","setDisabledState","isDisabled","disable","enable","__ngFactoryType__","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","booleanAttribute","features","ɵɵProvidersFeature","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","ɵɵInputTransformsFeature","ɵɵInheritDefinitionFeature","decls","vars","consts","template","PhoneInputComponent_ng_container_0_Template","PhoneInputComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","galaxyFormField_r6","_PhoneInputComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ctx_r0","label","ɵɵelement","ɵɵtextInterpolate1","optionObj_r4","description","ɵɵlistener","$event","ɵɵrestoreView","_r2","option_r3","ɵɵnextContext","$implicit","ɵɵresetView","selected","ɵɵtemplate","SelectInputComponent_For_9_Conditional_0_Conditional_4_Template","ɵɵproperty","value","disabled","ɵɵconditional","subOption_r6","_r5","SelectInputComponent_For_9_Conditional_2_For_2_Conditional_5_Template","ɵɵrepeaterCreate","SelectInputComponent_For_9_Conditional_2_For_2_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","ctx","options","SelectInputComponent_For_9_Conditional_0_Template","SelectInputComponent_For_9_Conditional_2_Template","tmp_10_0","tmp_11_0","hint","validatorError_r7","SelectInputComponent_Conditional_11_Conditional_1_Template","SelectInputComponent","GalaxyCoreInputDirective","constructor","class","selectText","ngOnInit","setupControl","useFormControl","formControl","preselected","find","opt","option","setValue","emitEvent","updateSelection","event","isUserInput","text","window","setTimeout","inputValue","__ngFactoryType__","selectors","hostVars","hostBindings","rf","ɵɵclassMap","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","ɵɵInheritDefinitionFeature","decls","vars","consts","template","SelectInputComponent_Conditional_1_Template","writeValue","onBlur","SelectInputComponent_For_9_Template","SelectInputComponent_Conditional_10_Template","SelectInputComponent_Conditional_11_Template","ɵɵpureFunction1","_c0","invalid","pristine","id","required","validatorError$","_SelectInputComponent","MODULE_IMPORTS","CommonModule","MatFormFieldModule","MatIconModule","MatInputModule","FormsModule","ReactiveFormsModule","MatSelectModule","TranslateModule","MatMenuModule","MatTooltipModule","MatAutocompleteModule","GalaxyFormFieldModule","GalaxyInputModule","GetOptionPipe","GetOptionGroupPipe","imports","MODULE_IMPORTS","_GalaxyInputModule","FileUploadService","constructor","http","upload","url","file","body","FormData","append","post","withCredentials","pipe","map","response","data","ɵɵinject","HttpClient","factory","ɵfac","_FileUploadService","en_devel_default","VaImageUploaderModule","FileUploadService","imports","CommonModule","MatProgressSpinnerModule","MatIconModule","MatButtonModule","TranslateModule","LexiconModule","forChild","componentName","baseTranslation","_VaImageUploaderModule","range","length","valueFunction","valuesArray","i","MONTH_FORMATS","DAY_OF_WEEK_FORMATS","DateFnsAdapter","_DateFnsAdapter","DateAdapter","matDateLocale","date","getYear","getMonth","getDate","getDay","style","pattern","dtf","getDaysInMonth","year","month","result","value","parseFormat","iso8601Date","parseISO","formats","currentFormat","fromFormat","parse","displayFormat","format","years","addYears","months","addMonths","days","addDays","formatISO","obj","isDate","isValid","__ngFactoryType__","ɵɵinject","MAT_DATE_LOCALE","ɵɵdefineInjectable","MAT_DATE_FNS_FORMATS","MatDateFnsModule","_MatDateFnsModule","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","provideDateFnsAdapter","formats","MAT_DATE_FNS_FORMATS","DateAdapter","DateFnsAdapter","MAT_DATE_LOCALE","MAT_DATE_FORMATS","VaFileUploaderModule","FileUploadService","imports","CommonModule","MatInputModule","MatIconModule","MatProgressSpinnerModule","_VaFileUploaderModule","MODULE_IMPORTS","MatDateFnsModule","CommonModule","MatDatepickerModule","MatNativeDateModule","MatIconModule","MatButtonModule","MatDividerModule","MatCardModule","MatFormFieldModule","MatInputModule","MatRadioModule","OverlayModule","TranslateModule","FormsModule","ReactiveFormsModule","GalaxyInputModule","GalaxyWrapModule","GalaxyDatepickerModule","MODULE_IMPORTS","_GalaxyDatepickerModule","MODULE_IMPORTS","CommonModule","MatProgressSpinnerModule","GalaxyLoadingSpinnerModule","MODULE_IMPORTS","_GalaxyLoadingSpinnerModule","MODULE_IMPORTS","CommonModule","GalaxyButtonGroupModule","MODULE_IMPORTS","_GalaxyButtonGroupModule","MODULE_IMPORTS","CommonModule","GalaxyButtonGroupModule","MatButtonModule","MatIconModule","MatMenuModule","GalaxyI18NModule","TranslateModule","GalaxyAITextButtonModule","MODULE_IMPORTS","_GalaxyAITextButtonModule","VaFormsModule","FileUploadService","imports","MatDateFnsModule","CommonModule","ReactiveFormsModule","FormsModule","MatExpansionModule","MatCheckboxModule","MatDatepickerModule","MatInputModule","MatTooltipModule","MatCardModule","MatButtonModule","MatIconModule","MatDialogModule","MatRadioModule","MatSlideToggleModule","MatSelectModule","MatMenuModule","MatAutocompleteModule","MatChipsModule","MatProgressSpinnerModule","VaImageUploaderModule","VaFileUploaderModule","TranslateModule","MatFormFieldModule","LexiconModule","forChild","componentName","baseTranslation","GalaxyWrapModule","GalaxyFormFieldModule","GoogleMapsModule","GalaxyDatepickerModule","GalaxyLoadingSpinnerModule","MatButtonToggleModule","GalaxyButtonGroupModule","GalaxyAITextButtonModule","_VaFormsModule","REGEX","RegExp","NoDotlessDomainsRegex","emailValidator","control","value","some","re","test","email","REGEX","RegExp","urlValidator","control","value","test","url","getRandomValues","rnds8","rng","regex_default","validate","uuid","regex_default","validate_default","byteToHex","i","stringify","arr","offset","uuid","validate_default","stringify_default","v4","options","buf","offset","rnds","rng","stringify_default","v4_default"],"x_google_ignoreList":[0,16,25,26,27,28,29]}