@metadev/lux 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/metadev-lux.umd.js +4 -1
- package/bundles/metadev-lux.umd.js.map +1 -1
- package/esm2015/lib/input/input.component.js +5 -2
- package/fesm2015/metadev-lux.js +4 -1
- package/fesm2015/metadev-lux.js.map +1 -1
- package/lib/input/input.component.d.ts +1 -0
- package/metadev-lux.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1164,6 +1164,9 @@
|
|
|
1164
1164
|
? this.inputId
|
|
1165
1165
|
: this.type + "$" + InputComponent.idCounter++;
|
|
1166
1166
|
};
|
|
1167
|
+
InputComponent.prototype.onLostFocus = function () {
|
|
1168
|
+
this.markAsTouched();
|
|
1169
|
+
};
|
|
1167
1170
|
InputComponent.prototype.onKeyUp = function (newValue) {
|
|
1168
1171
|
this.value = newValue;
|
|
1169
1172
|
};
|
|
@@ -1257,7 +1260,7 @@
|
|
|
1257
1260
|
InputComponent.decorators = [
|
|
1258
1261
|
{ type: i0.Component, args: [{
|
|
1259
1262
|
selector: 'lux-input',
|
|
1260
|
-
template: "<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min?.toString() || undefined\"\n [attr.max]=\"max?.toString() || undefined\"\n [attr.step]=\"step?.toString() || undefined\"\n [attr.pattern]=\"pattern || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols?.toString() || undefined\"\n [attr.rows]=\"rows?.toString() || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix\">\n <span>\u20AC</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix\">\n <span>\u2030</span>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n",
|
|
1263
|
+
template: "<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min?.toString() || undefined\"\n [attr.max]=\"max?.toString() || undefined\"\n [attr.step]=\"step?.toString() || undefined\"\n [attr.pattern]=\"pattern || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols?.toString() || undefined\"\n [attr.rows]=\"rows?.toString() || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix\">\n <span>\u20AC</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix\">\n <span>\u2030</span>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n",
|
|
1261
1264
|
providers: [
|
|
1262
1265
|
{
|
|
1263
1266
|
provide: forms.NG_VALUE_ACCESSOR,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadev-lux.umd.js","sources":["../../../projects/lux/src/lib/helperFns.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.ts","../../../projects/lux/src/lib/lang.ts","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.ts","../../../projects/lux/src/lib/checkbox/checkbox.component.ts","../../../projects/lux/src/lib/input/input.component.ts","../../../projects/lux/src/lib/filter/filter.component.ts","../../../projects/lux/src/lib/modal/modal-ref.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/lux/src/lib/modal/util.ts","../../../projects/lux/src/lib/modal/modal-dismiss-reasons.ts","../../../projects/lux/src/lib/modal/modal-window.ts","../../../projects/lux/src/lib/modal/modal-backdrop.ts","../../../projects/lux/src/lib/modal/modal-config.ts","../../../projects/lux/src/lib/modal/modal-stack.ts","../../../projects/lux/src/lib/modal/modal.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.component.ts","../../../projects/lux/src/lib/tooltip/placement.ts","../../../projects/lux/src/lib/tooltip/tooltip.component.ts","../../../projects/lux/src/lib/tooltip/tooltop-content.ts","../../../projects/lux/src/lib/tooltip/tooltip.service.ts","../../../projects/lux/src/lib/tooltip/tooltip.directive.ts","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/lux/src/lib/geolocation/openlayer-loader.service.ts","../../../projects/lux/src/lib/map/map.component.ts","../../../projects/lux/src/lib/pagination/pagination.component.ts","../../../projects/lux/src/lib/radiogroup/radiogroup.component.ts","../../../projects/lux/src/lib/select/select.component.ts","../../../projects/lux/src/lib/voice-recognition/voice-recognition.directive.ts","../../../projects/lux/src/lib/window/window.service.ts","../../../projects/lux/src/lib/lux.module.ts","../../../projects/lux/src/public-api.ts","../../../projects/lux/src/metadev-lux.ts"],"sourcesContent":["// undefined and null functions\r\n\r\nexport const exists = (value: any): boolean =>\r\n value !== null && value !== undefined;\r\n\r\nexport const hasValue = (value: any): boolean =>\r\n exists(value) && (typeof value === 'string' ? !isEmptyString(value) : true);\r\n\r\n// string functions\r\n\r\nexport const isEmptyString = (value: string): boolean => value.trim() === '';\r\n\r\nexport const isValidEmail = (value: string): boolean => {\r\n const re =\r\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;\r\n return re.test(String(value).toLowerCase().trim());\r\n};\r\n\r\n// date functions\r\n\r\nexport const normalizeDate = (value: any): string => {\r\n if (typeof value === 'string' && value.length > 10) {\r\n return value.substr(0, 10);\r\n }\r\n return value ? value.toString() : null;\r\n};\r\n\r\n// number functions\r\n\r\nexport const isValidNumber = (\r\n value: string | number | undefined | null\r\n): boolean => (hasValue(value) ? !Number.isNaN(Number(value)) : false);\r\n\r\nexport const numberOfDecimalDigits = (\r\n x: number | string\r\n): number | undefined => {\r\n if (isValidNumber(x)) {\r\n const xString = String(Number(x));\r\n if (xString === 'Infinity') {\r\n return 0;\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return 0;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return 0;\r\n } else {\r\n return xString.length - indexOfDecimalPoint - 1;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const numberOfWholeDigits = (x: number | string): number | undefined => {\r\n if (isValidNumber(x)) {\r\n let xString = String(Number(x));\r\n if (xString.indexOf('-') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n if (xString === 'Infinity') {\r\n return Infinity;\r\n }\r\n if (xString.indexOf('0') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return Number(xString.slice(indexOfE + 1, xString.length)) + 1;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return xString.length;\r\n } else {\r\n return indexOfDecimalPoint;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const roundToMultipleOf = (x: number, modulo: number): number => {\r\n const moduloString = String(modulo);\r\n // approximates the result\r\n // prone to inexactitude because of floating point arithmetic\r\n const approximation = Math.round(x / modulo) * modulo;\r\n const approximationString = String(approximation);\r\n // remove useless decimals\r\n const uselessDecimalsInApproximation =\r\n numberOfDecimalDigits(approximationString) -\r\n numberOfDecimalDigits(moduloString);\r\n const resultString = approximationString.slice(\r\n 0,\r\n approximationString.length - uselessDecimalsInApproximation\r\n );\r\n return Number(resultString);\r\n};\r\n\r\n// other functions\r\n\r\nexport const isInitialAndEmpty = (\r\n previousValue: any,\r\n newValue: any\r\n): boolean => {\r\n const isPrevArray = Array.isArray(previousValue);\r\n const isNewArray = Array.isArray(newValue);\r\n return !(\r\n (isPrevArray ? previousValue.length !== 0 : Boolean(previousValue)) ||\r\n (isNewArray ? newValue.length !== 0 : Boolean(newValue))\r\n );\r\n};\r\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, first, map } from 'rxjs/operators';\n// Do not remove this import: needed in the template\nimport { ResizedEvent } from 'angular-resize-event';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\n\n@Component({\n selector: 'lux-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n }\n ]\n})\nexport class AutocompleteComponent\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('i0', { static: true }) i0: ElementRef;\n @ViewChild('completeDiv', { static: true }) completeDiv: ElementRef;\n\n private _dataSource: DataSource<any, string>;\n private _placeholder: string;\n private _value: any;\n\n showSpinner = false;\n touched = false;\n completionList: DecoratedDataSource = [];\n showCompletion = false;\n focusItem: DataSourceItem<any, string>;\n\n @Output() valueChange = new EventEmitter<any>();\n @Output() dataSourceChange = new EventEmitter<DataSource<any, string>>();\n\n @Input() public inputId: string;\n @Input() public disabled: boolean | null = null;\n @Input() public readonly: boolean | null = null;\n @Input() label = '';\n /** If canAddNewValues, user can type items not present in the data-source. */\n @Input() canAddNewValues = false;\n /** After cleaning the selection should the completion list remain open or closed:\n * false: (default) close on filters, to clean a filter and select all.\n * true: keep open (when the action most likely is to pick another one).\n */\n @Input() keepOpenAfterDelete = false;\n\n @Input()\n get value(): any {\n return this._value;\n }\n set value(v: any) {\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n this.completeLabel();\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n @Input()\n get dataSource(): DataSource<any, string> {\n return this._dataSource;\n }\n set dataSource(v: DataSource<any, string>) {\n this._dataSource = v;\n this.dataSourceChange.emit(v);\n }\n @Input() required = false;\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n keys: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n clear(): void {\n this.value = null;\n this.toggleCompletion(this.keepOpenAfterDelete, '');\n }\n\n private completeLabel(): void {\n if (this.value) {\n if (this.dataSource) {\n this.label = findLabelForId(this.dataSource, this.value) || '';\n } else if (this.instance && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, [this.value])\n .pipe(debounceTime(1), first())\n .subscribe((data) => {\n this.label = findLabelForId(data, this.value) || '';\n });\n }\n } else {\n this.label = '';\n }\n }\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteComponent.idCounter++}`;\n this.completeLabel();\n }\n ngAfterViewInit(): void {\n this.setSameWidth();\n }\n onInputResized(): void {\n this.setSameWidth();\n }\n private setSameWidth(): void {\n const width = this.i0.nativeElement.getBoundingClientRect().width;\n this.completeDiv.nativeElement.style.width = `${width}px`;\n }\n\n onKeydown(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Tab':\n if (label) {\n this.pickSelectionOrFirstMatch(label);\n }\n this.showCompletion = false;\n break;\n }\n this.markAsTouched();\n }\n onKeypress(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Intro':\n case 'Enter':\n this.pickSelectionOrFirstMatch(label);\n event.preventDefault();\n break;\n }\n this.markAsTouched();\n }\n onKeyup(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'PageDown':\n this.focusOnNext(5);\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.focusOnNext(1);\n event.preventDefault();\n break;\n case 'PageUp':\n this.focusOnPrevious(5);\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.focusOnPrevious(1);\n event.preventDefault();\n break;\n case 'Escape':\n this.complete(null);\n event.preventDefault();\n break;\n case 'Intro':\n case 'Enter':\n event.preventDefault();\n break;\n default:\n this.showCompletionList(label);\n // event.preventDefault();\n }\n this.markAsTouched();\n }\n private focusOnNext(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && list.length > index + offset\n ? list[index + offset]\n : list[list.length - 1];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n private focusOnPrevious(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && index > offset ? list[index - offset] : list[0];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n onLostFocus(): void {\n setTimeout(() => {\n this.toggleCompletion(false, null);\n }, 200);\n }\n complete(item: DataSourceItem<Record<string, unknown>, string>): void {\n if (item !== null) {\n this.value = item.key;\n this.label = item.label;\n } else {\n this.value = null;\n this.label = '';\n }\n this.toggleCompletion(false, null);\n this.markAsTouched();\n }\n toggleCompletion(show: boolean, label: string): void {\n if (show && !this.disabled) {\n this.showCompletionList(label);\n } else {\n this.showCompletion = false;\n if (this.canAddNewValues) {\n this.syncCustomValue(this.label);\n return;\n }\n }\n this.cd.markForCheck();\n }\n\n get selectedOption(): string {\n const index = this.completionList.findIndex(\n (i) => i.key === this.focusItem.key\n );\n if (index === -1 || !this.focusItem) {\n return null;\n }\n return `${this.inputId}_${index}`;\n }\n\n private ensureItemVisible(index: number): void {\n const target = this.completeDiv.nativeElement.querySelectorAll('li')[index];\n if (target) {\n target.scrollIntoView({ block: 'center' });\n }\n }\n private syncCustomValue(text: string): void {\n this.value = text;\n this.label = text;\n }\n private pickSelectionOrFirstMatch(text: string): void {\n if (this.canAddNewValues) {\n this.syncCustomValue(text);\n return;\n }\n if (this.focusItem && this.focusItem.label) {\n this.complete(this.focusItem);\n return;\n }\n const source = (text || '').trim();\n if (source === '') {\n this.showCompletion = false;\n return;\n }\n this.completionList = [];\n this.computeCompletionList(source).subscribe((suggestions) => {\n this.complete(\n suggestions && suggestions.length > 0 ? suggestions[0] : null\n );\n });\n }\n private showCompletionList(text: string): void {\n this.setSameWidth();\n const useSpinner = this.hasExternalDataSource();\n this.spinnerVisibility(useSpinner, true);\n setTimeout(() => {\n // for spinner to be shown\n this.computeCompletionList(text).subscribe({\n next: (cl) => {\n this.completionList = cl;\n this.focusItem =\n this.completionList.length > 0 ? this.completionList[0] : null;\n this.showCompletion = true;\n this.spinnerVisibility(useSpinner, false);\n },\n error: () => {\n this.spinnerVisibility(useSpinner, false);\n },\n complete: () => {\n this.spinnerVisibility(useSpinner, false);\n }\n });\n }, 1);\n }\n private spinnerVisibility(useSpinner: boolean, value: boolean): void {\n if (useSpinner) {\n this.showSpinner = value;\n }\n }\n private hasExternalDataSource(): boolean {\n return !this.dataSource && !!this.instance && !!this.populateFunction;\n }\n private computeCompletionList(text: string): Observable<DecoratedDataSource> {\n const searchText = (text || '').toLowerCase();\n if (this.dataSource) {\n const ds = (this.dataSource || [])\n .filter((it) => ignoreAccentsInclude(it.label, searchText))\n .sort((a, b) => a.label.localeCompare(b.label));\n return of(decorateDataSource(ds, searchText));\n } else if (this.instance && this.populateFunction) {\n return this.populateFunction(this.instance, searchText).pipe(\n debounceTime(1),\n first(),\n map((ds) => {\n ds.filter((it) => ignoreAccentsInclude(it.label, searchText)).sort(\n (a, b) => a.label.localeCompare(b.label)\n );\n return decorateDataSource(ds, searchText);\n })\n );\n } else {\n return of([]);\n }\n }\n}\n\n/** Returns true if text includes substring. No accents considered. Ignorecase */\nconst ignoreAccentsInclude = (text: string, substring: string): boolean => {\n text = normalizedString(text).toLowerCase();\n substring = normalizedString(substring).toLowerCase();\n return text.includes(substring);\n};\n\n/** Returns a normalized string with no accents: used for comparison */\nconst normalizedString = (a: string): string =>\n (a || '').normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n\nconst decorateDataSource = (\n dataSource: DataSource<any, string>,\n subString: string\n): DecoratedDataSource => dataSource.map((it) => decorateItem(it, subString));\n\nconst decorateItem = (\n item: DataSourceItem<any, string>,\n tx: string\n): DecoratedDataSourceItem => {\n const index = normalizedString(item.label)\n .toLowerCase()\n .indexOf(normalizedString(tx).toLowerCase());\n const labelPrefix = index === -1 ? item.label : item.label.substr(0, index);\n const labelMatch = index === -1 ? '' : item.label.substr(index, tx.length);\n const labelPostfix = index === -1 ? '' : item.label.substr(index + tx.length);\n const newItem: DecoratedDataSourceItem = {\n ...item,\n labelPrefix,\n labelMatch,\n labelPostfix\n };\n return newItem;\n};\n\nconst findLabelForId = (data: DataSource<any, string>, id: any): string => {\n const found = data.find((it) => it.key === id);\n return found ? found.label : null;\n};\n","/** Language detector based on Navigator preferences */\nexport const languageDetector = (): string => {\n const lang = navigator.language.split('-')[0];\n if (lang === 'es' || lang === 'en') {\n return lang;\n }\n return 'en'; // default\n};\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\nimport { DataSource } from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\n@Component({\n selector: 'lux-autocomplete-list',\n templateUrl: './autocomplete-list.component.html',\n styleUrls: ['./autocomplete-list.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n }\n ]\n})\nexport class AutocompleteListComponent\n implements ControlValueAccessor, Validator, OnInit\n{\n static idCounter = 0;\n\n @ViewChild('auto') auto!: AutocompleteListComponent;\n\n literals = {\n en: {\n placeholder: 'new item',\n deleteLabelTemplate: 'Delete <<label>>',\n addMessage: 'Add'\n },\n es: {\n placeholder: 'nuevo elemento',\n deleteLabelTemplate: 'Eliminar <<label>>',\n addMessage: 'Añadir'\n }\n };\n\n public internalDataSource: DataSource<any, string> = [];\n private autoPopulate = false;\n\n private _value: any[] = [];\n @Input()\n set value(val: any[]) {\n if (val === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, val);\n this._value = val;\n this.ensureLabelsForIds();\n this.populateWith('');\n this.onChange(this._value);\n if (!initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n }\n get value(): any[] {\n return this._value;\n }\n labels: string[] = [];\n newEntry: any;\n canAdd = false;\n touched = false;\n\n private _lang = languageDetector();\n @Input()\n get lang(): string {\n return this._lang;\n }\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n\n @Input() inputId: string;\n @Input() dataSource: DataSource<any, any> = [];\n @Input() placeholder?: string;\n @Input() disabled = false;\n @Input() deleteLabelTemplate?: string;\n @Input() addMessage?: string;\n @Input() required = false;\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n ids: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n @Output() valueChange = new EventEmitter<any[]>();\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteListComponent.idCounter++}`;\n this.autoPopulate =\n !!this.resolveLabelsFunction && !!this.populateFunction && this.instance;\n this.ensureLabelsForIds();\n }\n ensureLabelsForIds(): void {\n if (this.autoPopulate && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, this._value)\n .pipe(first())\n .subscribe((data) => {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = data.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n });\n } else if (this.dataSource) {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = this.dataSource.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n } else {\n this.labels = this._value.map((it) => (it ? it.toString() : '(unset)'));\n }\n }\n removeAt(index: number): void {\n if (this._value.length > index) {\n const key = this._value.splice(index, 1)[0];\n const label = this.labels.splice(index, 1)[0];\n this.internalDataSource.push({ key, label });\n }\n this.markAsTouched();\n }\n onValueChange(): void {\n this.updateCanAdd();\n }\n onNewEntryChange(event: KeyboardEvent, auto: AutocompleteComponent): void {\n if (event.key === 'Enter' && !!auto.value) {\n this.addNew(auto);\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n // todo\n } else {\n this.populateWith(auto.label + event.key);\n }\n this.updateCanAdd();\n }\n populateWith(searchText: string): void {\n if (this.autoPopulate && this.populateFunction && this.instance) {\n this.populateFunction(this.instance, searchText)\n .pipe(first())\n .subscribe((data) => {\n this.internalDataSource = data.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n });\n } else if (this.dataSource) {\n this.internalDataSource = this.dataSource.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n }\n }\n updateCanAdd(): void {\n this.canAdd =\n !this.disabled &&\n this.auto &&\n !!this.auto.value && // has value\n !this.value.find((it) => it === this.auto.value); // not already in\n }\n\n addNew(auto: AutocompleteComponent): void {\n this.value.push(auto.value);\n this.ensureLabelsForIds();\n this.newEntry = '';\n this.internalDataSource = this.internalDataSource.filter(\n (it) => !this._value.includes(it.key)\n );\n this.markAsTouched();\n }\n\n getDeleteMessage(label: string): string {\n return (\n this.deleteLabelTemplate ?? this.literals[this.lang].deleteLabelTemplate\n ).replace('<<label>>', label);\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n OnInit,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\nconst KEY_SPACE = ' ';\n\n@Component({\n selector: 'lux-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => CheckboxComponent)\n }\n ]\n})\nexport class CheckboxComponent\n implements ControlValueAccessor, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('ck', { static: false }) ck: ElementRef;\n\n private _lang = languageDetector();\n @Input()\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n get lang(): string {\n return this._lang;\n }\n private internalValue: boolean;\n @Input()\n get value(): boolean {\n return this.internalValue;\n }\n set value(v: boolean) {\n if (this.internalValue === v) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this.internalValue, v);\n this.internalValue = v;\n this.syncModel();\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n\n get tabindexValue(): string {\n return this.disabled ? null : '0';\n }\n\n @Input() label: string = null;\n @Input() name: string = null;\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(v: boolean) {\n if (v === this._disabled) {\n return;\n }\n this._disabled = v;\n this.syncModel();\n }\n @Input() inputId: string;\n\n literals = {\n en: {\n yesLabel: 'Yes',\n noLabel: 'No'\n },\n es: {\n yesLabel: 'Sí',\n noLabel: 'No'\n }\n };\n touched = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = !!value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.name || 'checkbox'}$${CheckboxComponent.idCounter++}`;\n }\n ngAfterViewInit(): void {\n this.syncModel();\n }\n\n clicked(): void {\n if (!this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n }\n }\n onKey(event: KeyboardEvent): void {\n if (event.key === KEY_SPACE && !this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n event.preventDefault();\n }\n }\n\n private syncModel(): void {\n if (this.ck) {\n this.ck.nativeElement.checked = this.internalValue;\n }\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n AbstractControl,\n ValidationErrors,\n Validator,\n NG_VALIDATORS\n} from '@angular/forms';\nimport {\n hasValue,\n isInitialAndEmpty,\n isValidEmail,\n isValidNumber,\n normalizeDate\n} from '../helperFns';\nimport { languageDetector } from '../lang';\n@Component({\n selector: 'lux-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n }\n ]\n})\nexport class InputComponent implements OnInit, ControlValueAccessor, Validator {\n static idCounter = 0;\n\n @ViewChild('input', { static: false }) input: ElementRef;\n @ViewChild('textarea', { static: false }) textarea: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _value: any = '';\n private _type: string;\n private _placeholder: string;\n private _pattern?: string = undefined;\n private _regexp?: RegExp = undefined;\n private _currency: string;\n private _required: boolean;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n min: 'Minimum value is $min.',\n max: 'Maximum value is $max.',\n email: 'Format should match example@example.com.'\n },\n es: {\n required: 'El campo es obligatorio.',\n min: 'El valor mínimo es $min.',\n max: 'El valor máximo es $max.',\n email: 'El campo debe tener un formato como ejemplo@ejemplo.com.'\n }\n };\n\n public domain: string;\n @Input()\n public rows?: number | string;\n @Input()\n public cols?: number | string;\n @Input()\n public step?: number;\n @Input()\n public min?: number | string;\n @Input()\n public max?: number | string;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set pattern(p: string | undefined) {\n this._pattern = p;\n if (p === undefined) {\n this._regexp = undefined;\n } else {\n try {\n this._regexp = new RegExp(p);\n } catch (e) {\n this._pattern = undefined;\n this._regexp = undefined;\n }\n }\n }\n get pattern(): string | undefined {\n return this._pattern;\n }\n\n @Input()\n set currency(v: string) {\n this._currency = v.toUpperCase();\n }\n get currency(): string {\n return this._currency;\n }\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set type(v: string) {\n this._type = v.toLowerCase();\n this.domain = v.toLowerCase();\n this.checkType(v);\n }\n get type(): string {\n return this._type ? this._type : 'text';\n }\n\n @Input()\n set value(v: any) {\n v = v === undefined ? null : v;\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (this.type === 'date') {\n v = normalizeDate(v);\n }\n\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n if (this.isPercentage() || this.isPermillage() || this.isNumber()) {\n const numVal = parseFloat(this._value);\n if (!Number.isNaN(numVal)) {\n return numVal;\n }\n }\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n constructor() {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setValueInControl(value);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setValueInControl(v: any): void {\n if (this.domain === 'date') {\n v = normalizeDate(v);\n }\n if (this.input) {\n this.input.nativeElement.value = v;\n }\n if (this.textarea) {\n this.textarea.nativeElement.value = v;\n }\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && !hasValue(hasValue)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (this._regexp && hasValue(value) && !this._regexp.test(value)) {\n result = result || {};\n result.pattern = {\n value,\n reason: `Value must follow the pattern: ${this._pattern}`\n };\n }\n if (this.type === 'email' && hasValue(value) && !isValidEmail(value)) {\n result = result || {};\n result.email = { value, reason: 'Invalid email.' };\n }\n if (this.type === 'number' && hasValue(value) && !isValidNumber(value)) {\n result = result || {};\n result.numeric = { value, reason: 'Invalid number.' };\n }\n if (\n this.type === 'date' ||\n this.type === 'time' ||\n this.type === 'timestamp'\n ) {\n if (\n typeof this.min === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.min) === -1\n ) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (\n typeof this.max === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.max) !== -1\n ) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n\n if (\n this.type === 'percentage' ||\n this.type === 'permillage' ||\n this.type === 'number' ||\n this.type === 'currency'\n ) {\n if (hasValue(this.min) && hasValue(value) && value < +this.min) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (hasValue(this.max) && hasValue(value) && value > +this.max) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.type}$${InputComponent.idCounter++}`;\n }\n\n onKeyUp(newValue: string): void {\n this.value = newValue;\n }\n onChangeValue(newValue: string): void {\n this.value = newValue;\n this.markAsTouched();\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n isNumber(): boolean {\n return this.type === 'number';\n }\n isPercentage(): boolean {\n return this.type === 'percentage';\n }\n isPermillage(): boolean {\n return this.type === 'permillage';\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n checkType(type: string): void {\n switch (type) {\n case 'email':\n this.setEmailPatterns();\n break;\n case 'date':\n this.setDatePatterns();\n break;\n case 'time':\n this.setTimePatterns();\n break;\n case 'password':\n this.setPasswordPatterns();\n break;\n case 'number':\n this.setNumberPatterns();\n break;\n case 'currency':\n this.setCurrencyPatterns();\n break;\n case 'percentage':\n this.setPercentagePatterns();\n break;\n case 'permillage':\n this.setPermillagePatterns();\n break;\n default:\n break;\n }\n }\n\n setEmailPatterns(): void {}\n\n setDatePatterns(): void {\n this.min = this.min || '1900-01-01';\n this.max = this.max || '2100-01-01';\n }\n\n setTimePatterns(): void {}\n\n setPasswordPatterns(): void {}\n\n setNumberPatterns(): void {\n this.domain = 'number';\n this.placeholder = '0';\n }\n\n setCurrencyPatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.1;\n this.min = this.min || 0.0;\n this.max = this.max || 10000.0;\n this.value = 0.0;\n }\n\n setPercentagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 100.0;\n this.placeholder = '0.00';\n }\n\n setPermillagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 1000.0;\n this.placeholder = '0.00';\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnDestroy,\n OnInit,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/** Filter component to query for objects. */\n@Component({\n selector: 'lux-filter',\n templateUrl: './filter.component.html',\n styleUrls: ['./filter.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FilterComponent)\n }\n ]\n})\nexport class FilterComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n static idCounter = 0;\n\n private touched = false;\n private _searchValue = '';\n\n @Input() disabled = false;\n /** id for the input. If left blank, it is autogenerated */\n @Input() inputId: string;\n /** Placeholder default text. */\n @Input() placeholder = '';\n /** Search value introduced by the user. */\n @Input()\n get searchValue(): string {\n return this._searchValue;\n }\n set searchValue(v: string) {\n v = (v || '').toString();\n if (v === this._searchValue) {\n return;\n }\n this.onChange(v);\n this._searchValue = v;\n }\n /** Search on type: (default true) Auto-search when user types in. */\n @Input() searchOnType = true;\n /** Custom aria label in case of not using a label */\n @Input('aria-label') ariaLabel: string;\n\n private debounceValue = 300; // 300 ms\n /** Debounce time in milliseconds. (defaults to 300 ms) */\n @Input()\n set debounce(val: number) {\n this.debounceValue = val;\n this.recreateObservable();\n }\n get debounce(): number {\n return this.debounceValue;\n }\n\n /** Search value changed by user. */\n @Output() searchValueChange = new EventEmitter<string>();\n\n searchValue$: Observable<string>;\n\n private subject = new Subject<string>();\n private sub: Subscription;\n\n constructor() {\n this.recreateObservable();\n }\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.searchValue = (value || '').toString();\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `filter$${FilterComponent.idCounter++}`;\n }\n ngOnDestroy(): void {\n this.freeSubscriptions();\n }\n clear(): void {\n this.searchValue = '';\n this.search();\n }\n search(): void {\n this.searchValueChange.emit(this.searchValue);\n }\n keyup(event: KeyboardEvent, newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n if (event.key === 'Enter') {\n this.searchNow(this.searchValue);\n }\n if (this.searchOnType) {\n this.addEvent();\n }\n }\n onInputValueChange(newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n }\n\n private recreateObservable(): void {\n this.searchValue$ = this.subject\n .asObservable()\n .pipe(debounceTime(this.debounce));\n\n this.freeSubscriptions();\n this.sub = this.searchValue$.subscribe((value) => {\n this.searchValueChange.emit(value);\n });\n }\n private freeSubscriptions(): void {\n if (this.sub) {\n this.sub.unsubscribe();\n this.sub = null;\n }\n }\n private searchNow(value: string): void {\n this.searchValueChange.emit(value);\n }\n private addEvent(): void {\n this.subject.next(this.searchValue);\n }\n}\n","import { ComponentRef } from '@angular/core';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { ContentRef } from './util';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\n\nexport class ActiveModal {\n close(result?: any): void {}\n dismiss(reason?: any): void {}\n}\n\nexport class ModalRef {\n private _resolve: (result?: any) => void;\n private _reject: (reason?: any) => void;\n\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content, will return `undefined`.\n */\n get componentInstance(): any {\n if (this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n\n /**\n * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n */\n result: Promise<any>;\n\n constructor(\n private _windowCmptRef: ComponentRef<LuxModalWindowComponent>,\n private _contentRef: ContentRef,\n private _backdropCmptRef?: ComponentRef<LuxModalBackdropComponent>,\n private _beforeDismiss?: () => any\n ) {\n _windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n this.dismiss(reason);\n });\n\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => {});\n }\n\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result?: any): void {\n if (this._windowCmptRef) {\n if (this._resolve) {\n this._resolve(result);\n }\n this._removeModalElements();\n }\n }\n\n private _dismiss(reason?: any): void {\n if (this._reject) {\n this._reject(reason);\n }\n this._removeModalElements();\n }\n\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason?: any): void {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(\n (result) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n },\n () => {}\n );\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n\n private _removeModalElements(): void {\n const windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n\n if (this._backdropCmptRef) {\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { ViewRef, ComponentRef } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nexport const FOCUS = 'focus';\n\nexport enum Key {\n Tab = 9,\n Enter = 13,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40\n}\n\nexport const isDefined = (value: any): boolean =>\n value !== undefined && value !== null;\n\nexport class ContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef<any>\n ) {}\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable]',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nexport const getFocusableBoundaryElements = (\n element: HTMLElement\n): HTMLElement[] => {\n const list: HTMLElement[] = Array.from(\n element.querySelectorAll(\n FOCUSABLE_ELEMENTS_SELECTOR\n ) as NodeListOf<HTMLElement>\n ).filter((el) => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n};\n\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nexport const focusTrap = (\n element: HTMLElement,\n stopFocusTrap$: Observable<any>,\n refocusOnClick = false\n): void => {\n // last focused element\n const lastFocusedElement$ = fromEvent<FocusEvent>(element, 'focusin').pipe(\n takeUntil(stopFocusTrap$),\n map((e) => e.target)\n );\n\n // 'tab' / 'shift+tab' stream\n fromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(\n takeUntil(stopFocusTrap$),\n /* eslint-disable import/no-deprecated */\n filter((e) => e.which === Key.Tab),\n /* eslint-enable import/no-deprecated */\n withLatestFrom(lastFocusedElement$)\n )\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n\n if (\n (focusedElement === first || focusedElement === element) &&\n tabEvent.shiftKey\n ) {\n last.focus();\n tabEvent.preventDefault();\n }\n\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(\n takeUntil(stopFocusTrap$),\n withLatestFrom(lastFocusedElement$),\n map((arr) => arr[1] as HTMLElement)\n )\n .subscribe((lastFocusedElement) => lastFocusedElement.focus());\n }\n};\n","export enum ModalDismissReasons {\n BackdropClick,\n Esc\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n HostBinding,\n HostListener\n} from '@angular/core';\n\nimport { getFocusableBoundaryElements, FOCUS } from './util';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\n\n@Component({\n selector: 'lux-modal-window',\n template: `\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\"><ng-content></ng-content></div>\n </div>\n `\n})\nexport class LuxModalWindowComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n private _elWithFocus: Element; // element that is focused prior to modal opening\n\n @Input() ariaDescribedBy: string;\n @Input() ariaLabelledBy: string;\n @Input() backdrop: boolean | string = false;\n @Input() keyboard = true;\n @Input() windowClass: string;\n\n @Output() dismissEvent = new EventEmitter();\n\n @HostBinding('class') get class(): string {\n return `modal ${this.windowClass || ''}`;\n }\n @HostBinding('attr.role') role = 'dialog';\n @HostBinding('tabindex') tabindex = '-1';\n @HostBinding('attr.aria-modal') ariamodal = true;\n @HostBinding('attr.aria-labelledby') get hostAriaLabelledBy(): string {\n return this.ariaLabelledBy;\n }\n @HostBinding('attr.aria-describedby') get hostAriaDescribedBy(): string {\n return this.ariaDescribedBy;\n }\n @HostListener('click', ['$event.target']) backdropClick(\n btn: HTMLElement\n ): void {\n if (this.backdrop === true && this._elRef.nativeElement === btn) {\n this.dismiss(ModalDismissReasons.BackdropClick);\n }\n }\n @HostListener('keyup.esc', ['$event']) escKey(event): void {\n if (this.keyboard && !event.defaultPrevented) {\n this.dismiss(ModalDismissReasons.Esc);\n }\n }\n\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _elRef: ElementRef<HTMLElement>\n ) {}\n\n dismiss(reason): void {\n this.dismissEvent.emit(reason);\n }\n\n ngOnInit(): void {\n this._elWithFocus = this._document.activeElement;\n }\n\n ngAfterViewInit(): void {\n if (!this._elRef.nativeElement.contains(document.activeElement)) {\n const firstFocusable = getFocusableBoundaryElements(\n this._elRef.nativeElement\n )[0];\n\n const elementToFocus = firstFocusable || this._elRef.nativeElement;\n elementToFocus.focus();\n }\n }\n\n ngOnDestroy(): void {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n\n let elementToFocus;\n if (elWithFocus && elWithFocus[FOCUS] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n } else {\n elementToFocus = body;\n }\n elementToFocus.focus();\n this._elWithFocus = null;\n }\n}\n","import {Component, Input, HostBinding} from '@angular/core';\n\n@Component({\n selector: 'lux-modal-backdrop',\n template: ''\n})\nexport class LuxModalBackdropComponent {\n @Input() backdropClass: string;\n\n @HostBinding('class') class = 'modal-backdrop fade show';\n @HostBinding('style') style = 'z-index: 1050';\n}\n","import { Injectable } from '@angular/core';\n\nexport interface LuxModalOptions {\n ariaDescribedBy?: string;\n ariaLabelledBy?: string;\n backdrop?: boolean;\n keyboard?: boolean;\n windowClass?: string;\n backdropClass?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LuxModalConfig implements LuxModalOptions {\n backdrop = true;\n}\n","import {\n Injectable,\n ApplicationRef,\n ComponentFactoryResolver,\n TemplateRef,\n ComponentRef,\n Inject,\n Injector,\n RendererFactory2\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { ActiveModal, ModalRef } from './modal-ref';\nimport { ContentRef, focusTrap, isDefined } from './util';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { Subject } from 'rxjs';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\nimport { LuxModalOptions, LuxModalConfig } from './modal-config';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStack {\n private _activeWindowCmptHasChanged = new Subject();\n private _modalRefs: ModalRef[] = [];\n private _windowCmpts: ComponentRef<LuxModalWindowComponent>[] = [];\n private _ariaHiddenValues: Map<Element, string> = new Map();\n private _backdropAttributes = ['backdropClass'];\n private _windowAttributes = [\n 'ariaLabelledBy',\n 'backdrop',\n 'centered',\n 'keyboard',\n 'scrollable',\n 'size',\n 'windowClass'\n ];\n\n constructor(\n private _applicationRef: ApplicationRef,\n @Inject(DOCUMENT) private _document: any,\n private _injector: Injector,\n private _rendererFactory: RendererFactory2,\n private modalConfig: LuxModalConfig\n ) {\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt =\n this._windowCmpts[this._windowCmpts.length - 1];\n focusTrap(\n activeWindowCmpt.location.nativeElement,\n this._activeWindowCmptHasChanged\n );\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n\n open(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n options: LuxModalOptions\n ): ModalRef {\n const config = Object.assign({}, this.modalConfig, options);\n const containerEl = this._document.body;\n const renderer = this._rendererFactory.createRenderer(null, null);\n const removeBodyClass = (): void => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._revertAriaHidden();\n }\n };\n const activeModal = new ActiveModal();\n const contentRef = this.getContentRef(moduleCFR, content, activeModal);\n const backdropCmptRef: ComponentRef<LuxModalBackdropComponent> =\n config.backdrop ? this._attachBackdrop(moduleCFR, containerEl) : null;\n const windowCmptRef: ComponentRef<LuxModalWindowComponent> =\n this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n const modalRef: ModalRef = new ModalRef(\n windowCmptRef,\n contentRef,\n backdropCmptRef\n );\n this._registerModalRef(modalRef);\n this._registerWindowCmpt(windowCmptRef);\n modalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = (result: any): void => {\n modalRef.close(result);\n };\n activeModal.dismiss = (reason: any): void => {\n modalRef.dismiss(reason);\n };\n\n this._applyWindowOptions(windowCmptRef.instance, config);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackgroundOptions(backdropCmptRef.instance, config);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n windowCmptRef.changeDetectorRef.detectChanges();\n\n return modalRef;\n }\n\n private _applyWindowOptions(\n windowInstance: LuxModalWindowComponent,\n config: LuxModalOptions\n ): void {\n this._windowAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n windowInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _applyBackgroundOptions(\n backgroudInstance: LuxModalBackdropComponent,\n config: LuxModalOptions\n ): void {\n this._backdropAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n backgroudInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _revertAriaHidden(): void {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n\n private getContentRef(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n activeModal: ActiveModal\n ): ContentRef {\n if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content, activeModal);\n }\n }\n\n private createFromTemplateRef(\n content: TemplateRef<any>,\n activeModal: ActiveModal\n ): ContentRef {\n const context = {\n $implicit: activeModal,\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n close(result): void {\n activeModal.close(result);\n },\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n dismiss(reason): void {\n activeModal.dismiss(reason);\n }\n };\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n\n private _attachBackdrop(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any\n ): ComponentRef<LuxModalBackdropComponent> {\n const backdropFactory = moduleCFR.resolveComponentFactory(\n LuxModalBackdropComponent\n );\n const backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n\n private _attachWindowComponent(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any,\n contentRef: any\n ): ComponentRef<LuxModalWindowComponent> {\n const windowFactory = moduleCFR.resolveComponentFactory(\n LuxModalWindowComponent\n );\n const windowCmptRef = windowFactory.create(\n this._injector,\n contentRef.nodes\n );\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n\n private _registerModalRef(modalRef: ModalRef): void {\n const unregisterModalRef = (): void => {\n const index = this._modalRefs.indexOf(modalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n }\n };\n this._modalRefs.push(modalRef);\n modalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n\n private _registerWindowCmpt(\n windowCmpt: ComponentRef<LuxModalWindowComponent>\n ): void {\n this._windowCmpts.push(windowCmpt);\n this._activeWindowCmptHasChanged.next();\n\n windowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(windowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n\n private _setAriaHidden(element: Element): void {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach((sibling) => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n}\n","import {\n Injectable,\n ComponentFactoryResolver,\n TemplateRef,\n} from '@angular/core';\nimport { ModalStack } from './modal-stack';\nimport { ModalRef } from './modal-ref';\nimport { LuxModalOptions } from './modal-config';\n\n/**\n * A service that it allow open an close modal components\n */\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(\n private modalStack: ModalStack,\n private moduleCFR: ComponentFactoryResolver\n ) {}\n\n /**Open a modal component\n * @param content TemplateRef\n */\n open(content: TemplateRef<any>, options: LuxModalOptions = {}): ModalRef {\n return this.modalStack.open(this.moduleCFR, content, options);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DataSource } from '../datasource';\nimport { Observable, of, Subject } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n switchMap\n} from 'rxjs/operators';\nimport { GeoPoint } from '../map/geopoint';\n\ninterface SearchResult {\n place_id: number;\n lat: number;\n lon: number;\n display_name: string;\n icon: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GeolocationService {\n private debouncePeriodMs = 300; // ms\n private cacheSize = 20;\n private lastQueriesWithResults = new Map<string, SearchResult[]>();\n private lastQueriesLru: string[] = [];\n private currentSearch$: Subject<string>;\n private currentQuery$: Observable<SearchResult[]>;\n\n constructor(private http: HttpClient) {\n this.currentSearch$ = new Subject<string>();\n\n const typed$ = this.currentSearch$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n this.currentQuery$ = typed$.pipe(\n debounceTime(this.debouncePeriodMs),\n\n switchMap((currentQuery) => {\n const data = this.getFromCache(currentQuery);\n if (data !== undefined) {\n return of(data);\n }\n // Nominatim search documentation:\n // https://nominatim.org/release-docs/develop/api/Search/\n const url =\n 'https://nominatim.openstreetmap.org/search?format=json&limit=20&q=' +\n encodeURIComponent(currentQuery);\n const headers = {\n 'Content-Type': 'application/json'\n };\n this.addToCache(currentQuery, []);\n\n return this.http.get(url, { headers }).pipe(\n map((response) => {\n const searchResults = response as unknown as SearchResult[];\n const uniqueResults = distinct(searchResults);\n return this.addToCache(currentQuery, uniqueResults);\n })\n );\n })\n );\n }\n\n searchGeolocation(query: string): Observable<SearchResult[]> {\n this.currentSearch$.next(query);\n return this.currentQuery$;\n }\n\n getLabels(\n instance: GeolocationService,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n const searchResults = instance.lastQueriesWithResults\n .get(instance.getLatestQuery())\n .filter((searchResult) => samePosition(searchResult, keys));\n return of(\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n return {\n key,\n label: searchResult.display_name\n };\n })\n );\n }\n\n getData(\n instance: GeolocationService,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.searchGeolocation(search).pipe(\n map((searchResults) =>\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n const label = searchResult.display_name;\n return { key, label };\n })\n )\n );\n }\n\n // Cache implemementation ---\n private getFromCache(query: string): SearchResult[] {\n if (this.lastQueriesWithResults.has(query)) {\n return this.lastQueriesWithResults.get(query);\n }\n return undefined;\n }\n private addToCache(query: string, data: SearchResult[]): SearchResult[] {\n if (this.lastQueriesWithResults.keys.length >= this.cacheSize) {\n const deletedQuery = this.lastQueriesLru[0];\n this.revomeFromCache(deletedQuery);\n }\n this.lastQueriesWithResults.set(query, data);\n this.lastQueriesLru.push(query);\n return data;\n }\n private revomeFromCache(query: string): void {\n this.lastQueriesWithResults.delete(query);\n const index = this.lastQueriesLru.findIndex((it) => it === query);\n this.lastQueriesLru.splice(index, 1);\n }\n private getLatestQuery(): string | null {\n return this.lastQueriesLru.length\n ? this.lastQueriesLru[this.lastQueriesLru.length - 1]\n : null;\n }\n // End cache implemementation ---\n}\n\nconst samePosition = (\n searchResult: SearchResult,\n keys: GeoPoint[]\n): boolean => {\n let found = false;\n keys.forEach((item) => {\n if (\n searchResult.lon === item.coordinates[0] &&\n searchResult.lat === item.coordinates[1]\n ) {\n found = true;\n }\n });\n return found;\n};\n\nconst distinct = (data: SearchResult[]): SearchResult[] => {\n const unique: { [key: string]: number } = {};\n return data.filter((r) => {\n if (unique[r.display_name]) {\n return false;\n }\n unique[r.display_name] = 1;\n return true;\n });\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef,\n TemplateRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n AbstractControl,\n ValidationErrors,\n NG_VALIDATORS\n} from '@angular/forms';\nimport { DataSource } from '../datasource';\nimport {\n isInitialAndEmpty,\n isValidNumber,\n roundToMultipleOf\n} from '../helperFns';\nimport { languageDetector } from '../lang';\nimport { ModalService } from '../modal/modal.service';\nimport { GeoPoint } from '../map/geopoint';\nimport { Observable } from 'rxjs';\nimport { GeolocationService } from './geolocation.service';\n\n@Component({\n selector: 'lux-geolocation',\n templateUrl: './geolocation.component.html',\n styleUrls: ['./geolocation.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n }\n ]\n})\nexport class GeolocationComponent implements OnInit {\n static idCounter = 0;\n\n @ViewChild('latitude', { static: true }) latitude: ElementRef;\n @ViewChild('longitude', { static: true }) longitude: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _required: boolean;\n private _value: any;\n\n public latitudeValue?: number = null;\n public longitudeValue?: number = null;\n\n isValidNumber = isValidNumber;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n minLatitude: 'Minimum latitude is $minLatitude.',\n maxLatitude: 'Maximum latitude is $maxLatitude.',\n minLongitude: 'Minimum longitude is $minLongitude.',\n maxLongitude: 'Maximum longitude is $maxLongitude.'\n },\n es: {\n required: 'El campo es obligatorio.',\n minLatitude: 'La latitud mínima es $minLatitude.',\n maxLatitude: 'La latitud máxima es $maxLatitude.',\n minLongitude: 'La longitud mínima es $minLongitude.',\n maxLongitude: 'La longitud máxima es $maxLongitude.'\n }\n };\n\n public cardinalPoints = {\n en: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'W',\n unknown: '?'\n },\n es: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'O',\n unknown: '?'\n }\n };\n\n @Input()\n public minLatitude: number;\n @Input()\n public maxLatitude: number;\n @Input()\n public minLongitude: number;\n @Input()\n public maxLongitude: number;\n @Input()\n public step: number;\n @Input()\n public zoom: number;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set value(v: GeoPoint) {\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (v.coordinates && v.coordinates.length === 2) {\n this._value = v;\n this.latitudeValue = v.coordinates[1];\n this.longitudeValue = v.coordinates[0];\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n } else {\n this._value = undefined;\n this.latitudeValue = undefined;\n this.longitudeValue = undefined;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): GeoPoint {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<GeoPoint>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value: any): void => {};\n onTouched = (): void => {};\n\n constructor(\n private modalService: ModalService,\n public locationService: GeolocationService\n ) {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setLatitudeInControl(latitude: number): void {\n this.latitude.nativeElement.value = latitude;\n }\n private setLongitudeInControl(longitude: number): void {\n this.longitude.nativeElement.value = longitude;\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && (value === null || value === undefined)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (\n this.minLatitude !== undefined &&\n this.minLatitude !== null &&\n this.latitudeValue < this.minLatitude\n ) {\n result = result || {};\n result.minLatitude = {\n value,\n min: this.minLatitude,\n reason: `Value is lower than minimum value: ${this.minLatitude}.`\n };\n }\n if (\n this.maxLatitude !== undefined &&\n this.maxLatitude !== null &&\n this.latitudeValue < this.maxLatitude\n ) {\n result = result || {};\n result.maxLatitude = {\n value,\n max: this.maxLatitude,\n reason: `Value is lower than maximum value: ${this.maxLatitude}.`\n };\n }\n if (\n this.minLongitude !== undefined &&\n this.minLongitude !== null &&\n this.longitudeValue < this.minLongitude\n ) {\n result = result || {};\n result.minLongitude = {\n value,\n min: this.minLongitude,\n reason: `Value is lower than minimum value: ${this.minLongitude}.`\n };\n }\n if (\n this.maxLongitude !== undefined &&\n this.maxLongitude !== null &&\n this.longitudeValue < this.maxLongitude\n ) {\n result = result || {};\n result.maxLongitude = {\n value,\n max: this.maxLongitude,\n reason: `Value is lower than maximum value: ${this.maxLongitude}.`\n };\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `geolocation$${GeolocationComponent.idCounter++}`;\n this.setPatterns();\n }\n\n updateLatitude(newLatitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [this.longitudeValue, newLatitude]\n };\n }\n updateLongitude(newLongitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, this.latitudeValue]\n };\n }\n updateLatitudeAndLongitude(newLatitudeAndLongitude: number[]): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: newLatitudeAndLongitude\n };\n }\n\n roundToStepAndUpdateLatitudeAndLongitude(\n newLatitudeAndLongitude: number[]\n ): void {\n const newLatitude = roundToMultipleOf(\n newLatitudeAndLongitude[1],\n this.step\n );\n const newLongitude = roundToMultipleOf(\n newLatitudeAndLongitude[0],\n this.step\n );\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, newLatitude]\n };\n }\n\n onEventLatitude(newLatitude: string): void {\n if (isValidNumber(newLatitude)) {\n this.updateLatitude(+newLatitude);\n }\n }\n onEventLongitude(newLongitude: string): void {\n if (isValidNumber(newLongitude)) {\n this.updateLongitude(+newLongitude);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n openModalMap(modal: TemplateRef<any>): void {\n this.modalService.open(modal).result.then(\n (result) => {\n if (result !== 'cancel') {\n this.roundToStepAndUpdateLatitudeAndLongitude(result);\n }\n },\n (_) => {}\n );\n }\n\n get mapTitle(): string {\n return this._disabled || !!this.readonly ? 'Location:' : 'Select location:';\n }\n\n get self(): GeolocationComponent {\n return this;\n }\n\n getLabels(\n instance: GeolocationComponent,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getLabels(instance.locationService, keys);\n }\n\n getData(\n instance: GeolocationComponent,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getData(instance.locationService, search);\n }\n\n setPatterns(): void {\n this.step = this.step || 0.00001; // 0.00001 degrees = 1.11 meters\n this.zoom = this.zoom || 18; // (360/2^18) degrees ~ 0.00137 degrees ~ 153 meters\n this.minLatitude = this.minLatitude || -90;\n this.maxLatitude = this.maxLatitude || +90;\n this.minLongitude = this.minLongitude || -180;\n this.maxLongitude = this.maxLongitude || +180;\n }\n}\n","export enum Placement {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right'\n}\nexport type PlacementValue = 'left' | 'right' | 'top' | 'bottom';\n","import { Component, Input } from '@angular/core';\nimport { LuxTooltipContext } from './tooltip-context';\n\n/**\n * Default Tooltip Component\n */\n@Component({\n template: `\n <span class=\"lux-tooltip\" style=\"transition: opacity 200ms\">{{context.message}}</span>\n `\n})\nexport class TooltipComponent {\n\n @Input() context: LuxTooltipContext;\n\n constructor() { }\n\n}\n","import { ViewRef, ComponentRef } from '@angular/core';\n\nexport class TooltipContentRef {\n constructor(public viewRef?: ViewRef, public componentRef?: ComponentRef<any>) {}\n}\n","import {\n Injectable,\n Injector,\n ComponentRef,\n ComponentFactoryResolver,\n ApplicationRef,\n EmbeddedViewRef,\n ElementRef,\n TemplateRef\n} from '@angular/core';\n\nimport { PlacementValue, Placement } from './placement';\nimport { LuxTooltipContext } from './tooltip-context';\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipContentRef } from './tooltop-content';\n\n@Injectable()\nexport class TooltipService {\n constructor(\n private _injector: Injector,\n private _crf: ComponentFactoryResolver,\n private _applicationRef: ApplicationRef\n ) {}\n\n appendComponentToBody(\n content: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n const tooltipContentRef = this.getTooltipContentRef(content);\n if (tooltipContentRef) {\n let domElem = (tooltipContentRef.viewRef as EmbeddedViewRef<any>)\n .rootNodes[0];\n document.body.appendChild(domElem);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.changeDetectorRef.detectChanges();\n }\n domElem = this.setStyle(domElem, placement);\n domElem = this.setPosition(domElem, elHost, placement);\n return tooltipContentRef;\n }\n return null;\n }\n\n removeComponentFromBody(tooltipContentRef: TooltipContentRef): void {\n this._applicationRef.detachView(tooltipContentRef.viewRef);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.destroy();\n }\n }\n\n private getTooltipContentRef(content: any): TooltipContentRef {\n if (!content) {\n // nothing to show\n } else if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content);\n } else if (typeof content === 'string') {\n return this.createFromComponent(TooltipComponent, { message: content });\n } else {\n return this.createFromComponent(content);\n }\n }\n\n private createFromTemplateRef(content: TemplateRef<any>): TooltipContentRef {\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n return new TooltipContentRef(viewRef);\n }\n\n private createFromComponent(\n component: any,\n context?: LuxTooltipContext\n ): TooltipContentRef {\n const componentRef: ComponentRef<any> = this._crf\n .resolveComponentFactory(component)\n .create(this._injector);\n if (context) {\n componentRef.instance.context = context;\n }\n this._applicationRef.attachView(componentRef.hostView);\n return new TooltipContentRef(componentRef.hostView, componentRef);\n }\n\n private setStyle(\n domElem: HTMLElement,\n placement: PlacementValue\n ): HTMLElement {\n domElem.style.position = 'absolute';\n domElem.style.minWidth = 'min-content';\n domElem.style.minHeight = 'min-content';\n const tooltipElement = this.getTooltipElementFromHTMLElemnt(domElem);\n placement =\n placement !== undefined\n ? (placement.toLocaleLowerCase() as PlacementValue)\n : 'top'; // 'Top' is the default value of placement\n tooltipElement.classList.add(`lux-tooltip-${placement}`);\n tooltipElement.classList.add('lux-tooltip-show');\n return domElem;\n }\n\n private getTooltipElementFromHTMLElemnt(domElem: HTMLElement): any {\n const elementsArray = Array.from(domElem.classList).filter(\n (className) => className === 'lux-tooltip'\n );\n if (elementsArray.length !== 0) {\n return domElem;\n } else if (domElem.hasChildNodes()) {\n const childrenArray = Array.from(domElem.children).filter(\n (child) =>\n this.getTooltipElementFromHTMLElemnt(child as HTMLElement) !== null\n );\n if (childrenArray.length !== 0) {\n return this.getTooltipElementFromHTMLElemnt(\n childrenArray[0] as HTMLElement\n );\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n private setPosition(\n domElem: HTMLElement,\n elHost: ElementRef,\n placement: PlacementValue\n ): HTMLElement {\n const hostPos = elHost.nativeElement.getBoundingClientRect();\n const tooltipPos = domElem.getBoundingClientRect();\n const scrollPos =\n window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0;\n let top = 0;\n let left = 0;\n const offset = 10;\n\n switch (placement) {\n case Placement.Bottom:\n top = hostPos.bottom + offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n case Placement.Left:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.left - tooltipPos.width - offset;\n break;\n case Placement.Right:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.right + offset;\n break;\n case Placement.Top:\n default:\n top = hostPos.top - tooltipPos.height - offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n }\n top = Math.max(0, top);\n left = Math.max(0, left);\n domElem.style.top = `${top + scrollPos}px`;\n domElem.style.left = `${left}px`;\n return domElem;\n }\n}\n","import { HostListener, Input, Directive, ElementRef } from '@angular/core';\n\nimport { TooltipService } from './tooltip.service';\nimport { PlacementValue } from './placement';\nimport { TooltipContentRef } from './tooltop-content';\n\n/**\n * Tooltip directive\n */\n@Directive({\n selector: '[luxTooltip]'\n})\nexport class LuxTooltipDirective {\n /** Tooltip title */\n @Input() luxTooltip: any;\n\n /** Component, TemplateRef or String */\n @Input() content: any;\n\n /** Placement */\n @Input() placement: PlacementValue;\n\n tooltipRef: TooltipContentRef;\n\n constructor(\n private elHost: ElementRef,\n private tooltipService: TooltipService\n ) {}\n\n @HostListener('mouseenter') onMouseEnter(): void {\n if (!this.tooltipRef) {\n this.tooltipRef = this.show(this.content, this.elHost, this.placement);\n }\n }\n\n @HostListener('mouseleave') onMouseLeave(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n @HostListener('click') onClick(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n show(\n component: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n return this.tooltipService.appendComponentToBody(\n component,\n elHost,\n placement\n );\n }\n\n remove(tooltipRef: TooltipContentRef): void {\n this.tooltipService.removeComponentFromBody(tooltipRef);\n }\n}\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport {\n Router,\n NavigationEnd,\n ActivatedRoute,\n ActivatedRouteSnapshot\n} from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nexport interface BreadcrumbItem {\n label: string;\n url: string;\n}\n@Component({\n selector: 'lux-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss']\n})\nexport class LuxBreadcrumbComponent implements OnInit, OnDestroy {\n public breadcrumbs: BreadcrumbItem[];\n private subs: Subscription[] = [];\n public imagePath = '../assets/img/arrow-forward.svg';\n\n constructor(private route: Router, private activedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.subs.push(\n this.route.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((_) => {\n this.breadcrumbs = [];\n this.addBreadcrumbs(this.activedRoute.snapshot.root, true, null);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subs.forEach((s) => s.unsubscribe());\n this.subs = [];\n }\n\n private addBreadcrumbs(\n activedRouteSnapshot: ActivatedRouteSnapshot,\n isRoot: boolean,\n urlPrefix: string\n ): void {\n const routeConfig = activedRouteSnapshot.routeConfig;\n let url = urlPrefix || '';\n url += routeConfig ? '/' + this.getUrl(activedRouteSnapshot) : '';\n const label = routeConfig\n ? this.getLabel(activedRouteSnapshot)\n : isRoot\n ? 'Home'\n : '';\n if (label && url !== '/') {\n const breadcrumb = { label, url };\n this.breadcrumbs.push(breadcrumb);\n }\n if (activedRouteSnapshot.children.length) {\n this.addBreadcrumbs(activedRouteSnapshot.children[0], false, url);\n }\n }\n\n private getUrl(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n if (!activedRouteSnapshot.url[0]) {\n return '';\n }\n const id = activedRouteSnapshot.params.id;\n return id\n ? `${activedRouteSnapshot.url[0]}/${id}`\n : activedRouteSnapshot.routeConfig.path || '';\n }\n\n private getLabel(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n const routeConfig = activedRouteSnapshot.routeConfig;\n if (!routeConfig) {\n return null;\n }\n if (activedRouteSnapshot.data && activedRouteSnapshot.data.title) {\n const data = activedRouteSnapshot.data;\n if (data.objectTitle) {\n return `${data.title} ${data.objectTitle}`;\n } else {\n return data.title;\n }\n }\n return activedRouteSnapshot.params.id || routeConfig.path;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { from, Observable, of } from 'rxjs';\n\nlet openLayersIsInstalled = false;\n\n@Injectable({ providedIn: 'root' })\nexport class OpenLayerLoaderService {\n load(): Observable<boolean> {\n if ((window as any).ol) {\n return of(true);\n }\n\n const openLayerJsUrl = 'https://openlayers.org/en/v5.3.0/build/ol.js';\n const openLayerCssUrl = 'https://openlayers.org/en/v5.3.0/css/ol.css';\n\n if (!openLayersIsInstalled) {\n openLayersIsInstalled = true; // only try to install it once\n loadCss(openLayerCssUrl, () => {});\n return from(\n new Promise<boolean>((resolve, _) => {\n loadScript(openLayerJsUrl, () => resolve(true));\n })\n );\n }\n return of(true);\n }\n}\n\n/** Dynamically load a script from url and return a callback */\nconst loadScript = (url: string, callback: () => void): void => {\n const script: any = document.createElement('script');\n script.type = 'text/javascript';\n\n if (script.readyState) {\n // for old IE\n script.onreadystatechange = (): void => {\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\n script.onreadystatechange = null;\n callback();\n }\n };\n } else {\n // Others browsers\n script.onload = (): void => {\n callback();\n };\n }\n script.src = url;\n document.getElementsByTagName('head')[0].appendChild(script);\n};\n\n/** Dynamically load css from url and return a callback */\nconst loadCss = (url: string, callback: () => void): void => {\n const link: any = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.type = 'text/javascript';\n link.href = url;\n link.onload = (): void => {\n callback();\n };\n document.getElementsByTagName('head')[0].appendChild(link);\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n AfterViewInit\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { OpenLayerLoaderService } from '../geolocation/openlayer-loader.service';\n\nimport { GeoPoint } from './geopoint';\n\n// @dynamic\ndeclare const ol: any;\n\n@Component({\n selector: 'lux-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\nexport class MapComponent implements OnInit, AfterViewInit {\n static idCounter = 0;\n\n private loaded$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n private _map: any;\n\n @Input() mapId;\n\n _zoom: number;\n @Input()\n set zoom(zoom: number) {\n if (!isNaN(zoom)) {\n this._zoom = zoom;\n if (this._map) {\n this._map.getView().setZoom(zoom);\n }\n }\n }\n get zoom(): number {\n return this._zoom;\n }\n\n _center: GeoPoint;\n @Input()\n set center(center: GeoPoint) {\n if (center) {\n if (center.coordinates && center.coordinates.length === 2) {\n this._center = center;\n if (this._map) {\n this._map.getView().setCenter(ol.proj.fromLonLat(center.coordinates));\n }\n }\n }\n }\n get center(): GeoPoint {\n return this._center;\n }\n\n _readonly: boolean;\n @Input()\n set readonly(readonly: boolean) {\n if (!readonly) {\n if (this._map) {\n this._map.on('click', (args: any) => {\n // args.coordinate is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n const coordinates = ol.proj.toLonLat(args.coordinate);\n // alternatively: const lonLat = ol.proj.transform(args.coordinate,'EPSG:3857','EPSG:4326');\n this.addMarkerAtCoordinates(coordinates);\n });\n this._map.on('pointermove', (event: any) => {\n const pixel = this._map.getEventPixel(event.originalEvent);\n const hit = this._map.hasFeatureAtPixel(pixel);\n this._map.getViewport().style.cursor = hit ? 'move' : 'grab';\n });\n }\n } else {\n if (this._map) {\n this._map.on('click', (args: any) => {});\n this._map.on('pointermove', (event: any) => {});\n this._map.getViewport().style.cursor = 'grab';\n }\n }\n this._readonly = readonly;\n // reset marker coordinates so marker interactions can be created or recreated accordingly\n // to the changes to readonly\n this.markerCoordinates = this.markerCoordinates;\n }\n get readonly(): boolean {\n return this._readonly;\n }\n\n private _marker: any;\n private _markerInteraction: any;\n private _markerCoordinates: number[];\n @Input()\n private set markerCoordinates(markerCoordinates: number[]) {\n if (markerCoordinates && markerCoordinates.length === 2) {\n this._markerCoordinates = markerCoordinates;\n if (this._map) {\n this.addMarkerAtCoordinates(markerCoordinates);\n }\n } else {\n this._markerCoordinates = undefined;\n if (this._map) {\n this.removeMarker();\n }\n }\n }\n private get markerCoordinates(): number[] {\n return this._markerCoordinates;\n }\n @Input()\n set markerPoint(markerPoint: GeoPoint) {\n if (\n !markerPoint ||\n !(markerPoint.coordinates && markerPoint.coordinates.length === 2)\n ) {\n this.markerCoordinates = undefined;\n } else {\n this.markerCoordinates = [\n +markerPoint.coordinates[0],\n +markerPoint.coordinates[1]\n ];\n }\n this.valueChange.emit(markerPoint);\n }\n get markerPoint(): GeoPoint {\n return {\n type: 'Point',\n coordinates: this.markerCoordinates\n };\n }\n @Output() valueChange = new EventEmitter<GeoPoint>();\n\n private _markerSource: any;\n private _markerStyle: any;\n\n constructor(olLoader: OpenLayerLoaderService) {\n olLoader.load().subscribe((_) => {\n // Initialize\n this._markerSource = new ol.source.Vector();\n this._markerStyle = new ol.style.Style({\n image: new ol.style.Icon({\n anchor: [0.5, 1],\n scale: 0.25,\n src: '/assets/img/marker.png'\n })\n });\n this.loaded$.next(true);\n });\n }\n\n ngOnInit(): void {\n this.mapId = this.mapId ? this.mapId : 'map' + MapComponent.idCounter++;\n }\n\n ngAfterViewInit(): void {\n this.loaded$.subscribe((loaded) => {\n if (loaded) {\n this.initMap();\n }\n });\n }\n private initMap(): void {\n this._map = new ol.Map({\n target: this.mapId,\n controls: ol.control.defaults({ attribution: false }),\n layers: [\n new ol.layer.Tile({\n source: new ol.source.OSM()\n }),\n new ol.layer.Vector({\n source: this._markerSource,\n style: this._markerStyle\n })\n ],\n view: new ol.View({\n center: ol.proj.fromLonLat(\n this.center !== undefined ? this.center.coordinates : [0, 0]\n ),\n zoom: this.zoom\n })\n });\n\n if (this.center === undefined || this.center === null) {\n // if the center is not set, we set its default value\n if ('geolocation' in navigator) {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n this.center = {\n type: 'Point',\n coordinates: [position.coords.longitude, position.coords.latitude]\n };\n },\n (error) => {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n );\n } else {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n } else {\n // the center needs the map to be properly set, so if it was set before the map was initialized,\n // we set the center again to perform necessary adjustements\n this.center = this.center;\n }\n\n if (this.zoom === undefined || this.zoom === null) {\n // if the zoom is not set, we set its default value\n this.zoom = 18;\n } else {\n // the zoom needs the map to be properly set, so if it was set before the map was initialized,\n // we set the zoom again to perform necessary adjustements\n this.zoom = this.zoom;\n }\n\n if (this.readonly === undefined || this.readonly === null) {\n // if readonly is not set, we set its default value\n this.readonly = false;\n } else {\n // readonly needs the map to be properly set, so if it was set before the map was initialized,\n // we set readonly again to perform necessary adjustements\n this.readonly = this.readonly;\n }\n\n if (\n this.markerCoordinates !== undefined &&\n this.markerCoordinates !== null\n ) {\n // the marker coordinates need the map to be properly set, so if they were set before the map was initialized,\n // we set the marker coordinates again to perform necessary adjustements\n this.markerCoordinates = this.markerCoordinates;\n }\n }\n\n private addMarkerAtCoordinates(coordinates: number[]): void {\n if (coordinates && coordinates.length === 2) {\n if (this._marker !== undefined) {\n this.removeMarker();\n }\n this._marker = new ol.Feature({\n geometry: new ol.geom.Point(\n // [lon, lat] is in EPSG:4326 (degrees), we transform it into EPSG:3857 (meters)\n ol.proj.transform(coordinates, 'EPSG:4326', 'EPSG:3857')\n )\n });\n this._markerSource.addFeature(this._marker);\n this._markerCoordinates = this.getMarkerCoordinates();\n\n if (!this.readonly) {\n const dragInteraction = new ol.interaction.Modify({\n features: new ol.Collection([this._marker]),\n style: this._markerStyle,\n pixelTolerance: 50,\n hitDetection: true\n });\n this._markerInteraction = dragInteraction;\n this._map.addInteraction(dragInteraction);\n }\n\n this._marker.on(\n 'change',\n () => {\n this._markerCoordinates = this.getMarkerCoordinates();\n },\n this._marker\n );\n }\n }\n\n private removeMarker(): void {\n if (this._marker !== undefined) {\n this._markerSource.removeFeature(this._marker);\n this._marker = undefined;\n }\n if (this._markerInteraction !== undefined) {\n this._map.getInteractions().pop();\n this._markerInteraction = undefined;\n }\n }\n\n private getMarkerCoordinates(): number[] | null {\n if (this._marker === undefined || this._marker == null) {\n return this._marker;\n }\n const coordinates = this._marker.getGeometry().getCoordinates();\n // coordinates is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n return ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326');\n }\n\n onResize(): void {\n if (this._map) {\n this._map.updateSize();\n }\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\nimport { languageDetector } from '../lang';\r\nimport { PaginationInfo } from './pagination';\r\n\r\n@Component({\r\n selector: 'lux-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit {\r\n literals = {\r\n en: {\r\n first: 'First',\r\n previous: 'Previous',\r\n next: 'Next',\r\n last: 'Last'\r\n },\r\n es: {\r\n first: 'Primero',\r\n previous: 'Anterior',\r\n next: 'Siguiente',\r\n last: 'Último'\r\n }\r\n };\r\n\r\n public first: string;\r\n public previous: string;\r\n public next: string;\r\n public last: string;\r\n\r\n public showPagination = false;\r\n public hidePrevious = false;\r\n public lastPage = false;\r\n public totalPages = 0;\r\n public displayNextEllipsis = false;\r\n public displayPreviousEllipsis = false;\r\n\r\n public pages: number[] = [];\r\n\r\n @Output() goToPage = new EventEmitter<number>();\r\n @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n /** Current page, total items and items to show per page */\r\n private paginationInfoValue: PaginationInfo;\r\n\r\n private _lang: string;\r\n @Input()\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n this.loadLanguage();\r\n }\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n\r\n @Input()\r\n set paginationInfo(value: PaginationInfo) {\r\n this.paginationInfoValue = value;\r\n this.syncState();\r\n }\r\n get paginationInfo(): PaginationInfo {\r\n return this.paginationInfoValue;\r\n }\r\n\r\n constructor() {\r\n this.lang = languageDetector();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.calculatePages();\r\n }\r\n\r\n pageSizeChanged(pageSize: number): void {\r\n this.paginationInfo.pageSize = pageSize;\r\n this.syncState();\r\n this.pageSizeChange.emit(pageSize);\r\n }\r\n\r\n onPage(n: number): void {\r\n this.goToPage.emit(n);\r\n }\r\n\r\n onFirst(): void {\r\n this.goToPage.emit(0);\r\n }\r\n\r\n onLast(): void {\r\n this.goToPage.emit(this.totalPages - 1);\r\n }\r\n onNext(): void {\r\n const page = (this.paginationInfo.page || 0) + 1;\r\n this.goToPage.emit(page);\r\n }\r\n onPrevious(): void {\r\n const page = (this.paginationInfo.page || 0) - 1;\r\n this.goToPage.emit(page);\r\n }\r\n\r\n private syncState(): void {\r\n this.pages = this.calculatePages();\r\n\r\n this.showPagination =\r\n this.paginationInfo.total > this.paginationInfo.pageSize;\r\n this.hidePrevious = this.paginationInfo.page === 0;\r\n this.lastPage =\r\n this.paginationInfo.pageSize * (this.paginationInfo.page + 1) >=\r\n this.paginationInfo.total;\r\n this.totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) || 0;\r\n this.displayNextEllipsis = !this.pages.includes(this.totalPages - 1);\r\n this.displayPreviousEllipsis = !this.pages.includes(0);\r\n }\r\n\r\n private calculatePages(): number[] {\r\n const totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) - 1; // 0-index\r\n const p = this.paginationInfo.page || 0;\r\n const pagesToShow = this.paginationInfo.pagesToShow;\r\n const pages: number[] = [];\r\n pages.push(p);\r\n const times = pagesToShow - 1;\r\n for (let i = 0; i < times; i++) {\r\n if (pages.length < pagesToShow) {\r\n if (Math.min(...pages) > 0) {\r\n pages.unshift(Math.min(...pages) - 1);\r\n }\r\n }\r\n if (pages.length < pagesToShow) {\r\n if (Math.max(...pages) < totalPages) {\r\n pages.push(Math.max(...pages) + 1);\r\n }\r\n }\r\n }\r\n pages.sort((a, b) => a - b);\r\n return pages;\r\n }\r\n\r\n private loadLanguage(): void {\r\n const l = this.literals[this.lang];\r\n this.first = l.first;\r\n this.previous = l.previous;\r\n this.next = l.next;\r\n this.last = l.last;\r\n }\r\n}\r\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\n\nexport interface RadioItem {\n name?: string;\n label: string;\n value: any;\n}\n\n@Component({\n selector: 'lux-radiogroup',\n templateUrl: './radiogroup.component.html',\n styleUrls: ['./radiogroup.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n }\n ]\n})\nexport class RadiogroupComponent implements ControlValueAccessor, Validator {\n private touched = false;\n\n @Input() name = 'radiogroup1';\n @Input() public disabled: boolean | null = false;\n @Input() public readonly: boolean | null = false;\n @Input() public required: boolean | null = false;\n\n @Input()\n set items(col: RadioItem[]) {\n this._items = (col || []).map((it, index) =>\n this.ensureHasUniqueName(it, index)\n );\n this.itemsChange.emit(col);\n }\n get items(): RadioItem[] {\n return this._items;\n }\n @Output() itemsChange = new EventEmitter<RadioItem[]>();\n\n @Input()\n set value(v: any) {\n if (v === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n\n private _value: any = undefined;\n private _items: RadioItem[] = [];\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n setValue(event: MouseEvent, item: RadioItem): void {\n if (!this.disabled && !this.readonly) {\n this.value = item.value;\n this.markAsTouched();\n }\n event.preventDefault();\n }\n ensureHasUniqueName(item: RadioItem, index: number): RadioItem {\n if (!item.name) {\n item.name = `${this.name}_${index}`;\n }\n return item;\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n forwardRef\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nlet sequencer = 0;\n\n@Component({\n selector: 'lux-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n }\n ]\n})\nexport class SelectComponent implements ControlValueAccessor, Validator {\n @Input() id = 'stringList' + sequencer++;\n @Input() disabled = false;\n @Input() required = false;\n /** Allow multiple elements */\n @Input() multiple = true;\n @Input() value: string[] = [];\n @Output() valueChange = new EventEmitter<string[]>();\n @Input() placeholder = 'Add new';\n /** If set, check there is no duplicates in the data. */\n @Input() unique = true;\n /** Validation function for new items. Returns error or null if valid */\n @Input() validateItem: (item: string) => string = (_) => null;\n\n newEntry = '';\n error = null;\n isValidNewEntry = false;\n\n private touched = false;\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n get canAdd(): boolean {\n return this.multiple || this.value.length === 0;\n }\n add(val: string): void {\n this.value.push(val);\n this.newEntry = '';\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n remove(index: number): void {\n if (this.value.length > index) {\n this.value.splice(index, 1);\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n if (event.key === 'Enter' && !this.error && this.newEntry !== '') {\n // Add on pressing Enter/Return\n this.markAsTouched();\n this.add(this.newEntry);\n }\n }\n onChangeNewEntry(newValue: string): void {\n this.markAsTouched();\n if (!newValue) {\n this.isValidNewEntry = false;\n this.error = null;\n return;\n }\n if (this.unique) {\n const found = (this.value || []).find((it) => it === newValue);\n this.isValidNewEntry = !found;\n this.error = found\n ? `Value '${newValue}' is already in. Cannot add duplicates.`\n : null;\n if (!this.isValidNewEntry) {\n return;\n }\n }\n this.error = this.validateItem(newValue);\n this.isValidNewEntry = !this.error;\n }\n}\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[luxVoiceRecognition]'\n})\nexport class VoiceRecognitionDirective implements OnInit {\n @Input() language: string;\n // See API at: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition\n private recognition: any;\n private isRecognizing = false;\n private mic: any;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n const speechRecognition = (window as any).webkitSpeechRecognition;\n if (speechRecognition) {\n this.recognition = new speechRecognition();\n }\n }\n\n ngOnInit(): void {\n if (this.recognition) {\n // API is available\n this.recognition.lang = this.language || window.navigator.language;\n this.recognition.interimResults = false;\n this.recognition.maxAlternatives = 1;\n\n // Add mic icon\n this.mic = document.createElement('div');\n this.mic.setAttribute('class', 'lux-microphone');\n\n const parent = this.el.nativeElement.parentElement;\n parent.appendChild(this.mic);\n\n // Add event handlers\n this.mic.onclick = (): void => this.microphoneClick();\n this.recognition.onresult = (event): void => this.onRecognized(event);\n }\n }\n\n microphoneClick(): void {\n if (this.isRecognizing) {\n // stop\n this.isRecognizing = false;\n this.renderer.removeClass(this.mic, 'lux-recording');\n this.recognition.abort();\n } else {\n // start\n this.el.nativeElement.value = getRecordingMessage(this.language);\n this.isRecognizing = true;\n this.renderer.addClass(this.mic, 'lux-recording');\n this.recognition.start();\n }\n }\n onRecognized(event: any): void {\n const recognizedText = event.results[0][0].transcript;\n this.isRecognizing = false;\n this.el.nativeElement.value = recognizedText;\n this.renderer.removeClass(this.mic, 'lux-recording');\n }\n}\n\nconst getRecordingMessage = (lang: string): string => {\n switch (lang.toLowerCase()) {\n case 'es':\n case 'es-es':\n return 'Grabando...';\n case 'en':\n case 'en-uk':\n case 'en-us':\n default:\n return 'Recording...';\n }\n};\n","\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { ClassProvider, FactoryProvider, InjectionToken, PLATFORM_ID } from '@angular/core';\n\n/* Create a new injection token for injecting the window into a component. */\nexport const WINDOW = new InjectionToken('WindowToken');\n\n/* Define abstract class for obtaining reference to the global window object. */\nexport abstract class WindowRef {\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n throw new Error('Not implemented.');\n }\n\n}\n\n/* Define class that implements the abstract class and returns the native window object. */\nexport class BrowserWindowRef extends WindowRef {\n\n constructor() {\n super();\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n return window;\n }\n\n}\n\n/* Create an factory function that returns the native window object. */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const windowFactory = (browserWindowRef: BrowserWindowRef, platformId: Object): Window | Object => {\n if (isPlatformBrowser(platformId)) {\n return browserWindowRef.nativeWindow;\n }\n return new Object();\n};\n\n/* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */\nconst browserWindowProvider: ClassProvider = {\n provide: WindowRef,\n useClass: BrowserWindowRef\n};\n\n/* Create an injectable provider that uses the windowFactory function for returning the native window object. */\nconst windowProvider: FactoryProvider = {\n provide: WINDOW,\n useFactory: windowFactory,\n deps: [ WindowRef, PLATFORM_ID ]\n};\n\n/* Create an array of providers. */\nexport const WINDOW_PROVIDERS = [\n browserWindowProvider,\n windowProvider\n];\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { AngularResizedEventModule } from 'angular-resize-event';\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { AutocompleteListComponent } from './autocomplete-list/autocomplete-list.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { InputComponent } from './input/input.component';\nimport { FilterComponent } from './filter/filter.component';\nimport { GeolocationComponent } from './geolocation/geolocation.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LuxTooltipDirective } from './tooltip/tooltip.directive';\nimport { LuxBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { LuxModalWindowComponent } from './modal/modal-window';\nimport { LuxModalBackdropComponent } from './modal/modal-backdrop';\nimport { MapComponent } from './map/map.component';\nimport { ModalService } from './modal/modal.service';\nimport { PaginationComponent } from './pagination/pagination.component';\nimport { RadiogroupComponent } from './radiogroup/radiogroup.component';\nimport { SelectComponent } from './select/select.component';\nimport { TooltipComponent } from './tooltip/tooltip.component';\nimport { TooltipService } from './tooltip/tooltip.service';\nimport { VoiceRecognitionDirective } from './voice-recognition/voice-recognition.directive';\nimport { WINDOW_PROVIDERS } from './window/window.service';\n\n@NgModule({\n declarations: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n TooltipComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ],\n entryComponents: [\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n TooltipComponent\n ],\n providers: [ModalService, TooltipService, WINDOW_PROVIDERS],\n imports: [\n AngularResizedEventModule,\n FormsModule,\n HttpClientModule,\n ReactiveFormsModule,\n RouterModule,\n CommonModule\n ],\n exports: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxBreadcrumbComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ]\n})\nexport class LuxModule {}\n","/*\n * Public API Surface of lux\n */\n\nexport { LuxModule } from './lib/lux.module';\nexport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from './lib/datasource';\nexport { AutocompleteComponent } from './lib/autocomplete/autocomplete.component';\nexport { AutocompleteListComponent } from './lib/autocomplete-list/autocomplete-list.component';\nexport {\n LuxBreadcrumbComponent,\n BreadcrumbItem\n} from './lib/breadcrumb/breadcrumb.component';\nexport { CheckboxComponent } from './lib/checkbox/checkbox.component';\nexport { FilterComponent } from './lib/filter/filter.component';\nexport { InputComponent } from './lib/input/input.component';\nexport { PaginationComponent } from './lib/pagination/pagination.component';\nexport { LuxTooltipDirective } from './lib/tooltip/tooltip.directive';\nexport { ModalService } from './lib/modal/modal.service';\nexport {\n RadioItem,\n RadiogroupComponent\n} from './lib/radiogroup/radiogroup.component';\nexport { ModalRef } from './lib/modal/modal-ref';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {GeolocationComponent as ɵa} from './lib/geolocation/geolocation.component';\nexport {GeolocationService as ɵd} from './lib/geolocation/geolocation.service';\nexport {OpenLayerLoaderService as ɵi} from './lib/geolocation/openlayer-loader.service';\nexport {MapComponent as ɵh} from './lib/map/map.component';\nexport {LuxModalBackdropComponent as ɵg} from './lib/modal/modal-backdrop';\nexport {LuxModalConfig as ɵc} from './lib/modal/modal-config';\nexport {ModalStack as ɵb} from './lib/modal/modal-stack';\nexport {LuxModalWindowComponent as ɵf} from './lib/modal/modal-window';\nexport {ContentRef as ɵr} from './lib/modal/util';\nexport {SelectComponent as ɵj} from './lib/select/select.component';\nexport {TooltipComponent as ɵk} from './lib/tooltip/tooltip.component';\nexport {TooltipService as ɵe} from './lib/tooltip/tooltip.service';\nexport {VoiceRecognitionDirective as ɵl} from './lib/voice-recognition/voice-recognition.directive';\nexport {BrowserWindowRef as ɵo,WINDOW as ɵm,WINDOW_PROVIDERS as ɵq,WindowRef as ɵn,windowFactory as ɵp} from './lib/window/window.service';"],"names":["EventEmitter","debounceTime","first","of","map","Component","NG_VALUE_ACCESSOR","forwardRef","NG_VALIDATORS","ChangeDetectorRef","ViewChild","Output","Input","Subject","fromEvent","takeUntil","filter","withLatestFrom","Inject","DOCUMENT","ElementRef","HostBinding","HostListener","Injectable","TemplateRef","ApplicationRef","Injector","RendererFactory2","ComponentFactoryResolver","distinctUntilChanged","switchMap","HttpClient","Directive","NavigationEnd","Router","ActivatedRoute","from","BehaviorSubject","Renderer2","InjectionToken","isPlatformBrowser","PLATFORM_ID","NgModule","AngularResizedEventModule","FormsModule","HttpClientModule","ReactiveFormsModule","RouterModule","CommonModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metadev-lux.umd.js","sources":["../../../projects/lux/src/lib/helperFns.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.ts","../../../projects/lux/src/lib/lang.ts","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.ts","../../../projects/lux/src/lib/checkbox/checkbox.component.ts","../../../projects/lux/src/lib/input/input.component.ts","../../../projects/lux/src/lib/filter/filter.component.ts","../../../projects/lux/src/lib/modal/modal-ref.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/lux/src/lib/modal/util.ts","../../../projects/lux/src/lib/modal/modal-dismiss-reasons.ts","../../../projects/lux/src/lib/modal/modal-window.ts","../../../projects/lux/src/lib/modal/modal-backdrop.ts","../../../projects/lux/src/lib/modal/modal-config.ts","../../../projects/lux/src/lib/modal/modal-stack.ts","../../../projects/lux/src/lib/modal/modal.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.component.ts","../../../projects/lux/src/lib/tooltip/placement.ts","../../../projects/lux/src/lib/tooltip/tooltip.component.ts","../../../projects/lux/src/lib/tooltip/tooltop-content.ts","../../../projects/lux/src/lib/tooltip/tooltip.service.ts","../../../projects/lux/src/lib/tooltip/tooltip.directive.ts","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/lux/src/lib/geolocation/openlayer-loader.service.ts","../../../projects/lux/src/lib/map/map.component.ts","../../../projects/lux/src/lib/pagination/pagination.component.ts","../../../projects/lux/src/lib/radiogroup/radiogroup.component.ts","../../../projects/lux/src/lib/select/select.component.ts","../../../projects/lux/src/lib/voice-recognition/voice-recognition.directive.ts","../../../projects/lux/src/lib/window/window.service.ts","../../../projects/lux/src/lib/lux.module.ts","../../../projects/lux/src/public-api.ts","../../../projects/lux/src/metadev-lux.ts"],"sourcesContent":["// undefined and null functions\r\n\r\nexport const exists = (value: any): boolean =>\r\n value !== null && value !== undefined;\r\n\r\nexport const hasValue = (value: any): boolean =>\r\n exists(value) && (typeof value === 'string' ? !isEmptyString(value) : true);\r\n\r\n// string functions\r\n\r\nexport const isEmptyString = (value: string): boolean => value.trim() === '';\r\n\r\nexport const isValidEmail = (value: string): boolean => {\r\n const re =\r\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;\r\n return re.test(String(value).toLowerCase().trim());\r\n};\r\n\r\n// date functions\r\n\r\nexport const normalizeDate = (value: any): string => {\r\n if (typeof value === 'string' && value.length > 10) {\r\n return value.substr(0, 10);\r\n }\r\n return value ? value.toString() : null;\r\n};\r\n\r\n// number functions\r\n\r\nexport const isValidNumber = (\r\n value: string | number | undefined | null\r\n): boolean => (hasValue(value) ? !Number.isNaN(Number(value)) : false);\r\n\r\nexport const numberOfDecimalDigits = (\r\n x: number | string\r\n): number | undefined => {\r\n if (isValidNumber(x)) {\r\n const xString = String(Number(x));\r\n if (xString === 'Infinity') {\r\n return 0;\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return 0;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return 0;\r\n } else {\r\n return xString.length - indexOfDecimalPoint - 1;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const numberOfWholeDigits = (x: number | string): number | undefined => {\r\n if (isValidNumber(x)) {\r\n let xString = String(Number(x));\r\n if (xString.indexOf('-') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n if (xString === 'Infinity') {\r\n return Infinity;\r\n }\r\n if (xString.indexOf('0') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return Number(xString.slice(indexOfE + 1, xString.length)) + 1;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return xString.length;\r\n } else {\r\n return indexOfDecimalPoint;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const roundToMultipleOf = (x: number, modulo: number): number => {\r\n const moduloString = String(modulo);\r\n // approximates the result\r\n // prone to inexactitude because of floating point arithmetic\r\n const approximation = Math.round(x / modulo) * modulo;\r\n const approximationString = String(approximation);\r\n // remove useless decimals\r\n const uselessDecimalsInApproximation =\r\n numberOfDecimalDigits(approximationString) -\r\n numberOfDecimalDigits(moduloString);\r\n const resultString = approximationString.slice(\r\n 0,\r\n approximationString.length - uselessDecimalsInApproximation\r\n );\r\n return Number(resultString);\r\n};\r\n\r\n// other functions\r\n\r\nexport const isInitialAndEmpty = (\r\n previousValue: any,\r\n newValue: any\r\n): boolean => {\r\n const isPrevArray = Array.isArray(previousValue);\r\n const isNewArray = Array.isArray(newValue);\r\n return !(\r\n (isPrevArray ? previousValue.length !== 0 : Boolean(previousValue)) ||\r\n (isNewArray ? newValue.length !== 0 : Boolean(newValue))\r\n );\r\n};\r\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, first, map } from 'rxjs/operators';\n// Do not remove this import: needed in the template\nimport { ResizedEvent } from 'angular-resize-event';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\n\n@Component({\n selector: 'lux-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n }\n ]\n})\nexport class AutocompleteComponent\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('i0', { static: true }) i0: ElementRef;\n @ViewChild('completeDiv', { static: true }) completeDiv: ElementRef;\n\n private _dataSource: DataSource<any, string>;\n private _placeholder: string;\n private _value: any;\n\n showSpinner = false;\n touched = false;\n completionList: DecoratedDataSource = [];\n showCompletion = false;\n focusItem: DataSourceItem<any, string>;\n\n @Output() valueChange = new EventEmitter<any>();\n @Output() dataSourceChange = new EventEmitter<DataSource<any, string>>();\n\n @Input() public inputId: string;\n @Input() public disabled: boolean | null = null;\n @Input() public readonly: boolean | null = null;\n @Input() label = '';\n /** If canAddNewValues, user can type items not present in the data-source. */\n @Input() canAddNewValues = false;\n /** After cleaning the selection should the completion list remain open or closed:\n * false: (default) close on filters, to clean a filter and select all.\n * true: keep open (when the action most likely is to pick another one).\n */\n @Input() keepOpenAfterDelete = false;\n\n @Input()\n get value(): any {\n return this._value;\n }\n set value(v: any) {\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n this.completeLabel();\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n @Input()\n get dataSource(): DataSource<any, string> {\n return this._dataSource;\n }\n set dataSource(v: DataSource<any, string>) {\n this._dataSource = v;\n this.dataSourceChange.emit(v);\n }\n @Input() required = false;\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n keys: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n clear(): void {\n this.value = null;\n this.toggleCompletion(this.keepOpenAfterDelete, '');\n }\n\n private completeLabel(): void {\n if (this.value) {\n if (this.dataSource) {\n this.label = findLabelForId(this.dataSource, this.value) || '';\n } else if (this.instance && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, [this.value])\n .pipe(debounceTime(1), first())\n .subscribe((data) => {\n this.label = findLabelForId(data, this.value) || '';\n });\n }\n } else {\n this.label = '';\n }\n }\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteComponent.idCounter++}`;\n this.completeLabel();\n }\n ngAfterViewInit(): void {\n this.setSameWidth();\n }\n onInputResized(): void {\n this.setSameWidth();\n }\n private setSameWidth(): void {\n const width = this.i0.nativeElement.getBoundingClientRect().width;\n this.completeDiv.nativeElement.style.width = `${width}px`;\n }\n\n onKeydown(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Tab':\n if (label) {\n this.pickSelectionOrFirstMatch(label);\n }\n this.showCompletion = false;\n break;\n }\n this.markAsTouched();\n }\n onKeypress(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Intro':\n case 'Enter':\n this.pickSelectionOrFirstMatch(label);\n event.preventDefault();\n break;\n }\n this.markAsTouched();\n }\n onKeyup(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'PageDown':\n this.focusOnNext(5);\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.focusOnNext(1);\n event.preventDefault();\n break;\n case 'PageUp':\n this.focusOnPrevious(5);\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.focusOnPrevious(1);\n event.preventDefault();\n break;\n case 'Escape':\n this.complete(null);\n event.preventDefault();\n break;\n case 'Intro':\n case 'Enter':\n event.preventDefault();\n break;\n default:\n this.showCompletionList(label);\n // event.preventDefault();\n }\n this.markAsTouched();\n }\n private focusOnNext(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && list.length > index + offset\n ? list[index + offset]\n : list[list.length - 1];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n private focusOnPrevious(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && index > offset ? list[index - offset] : list[0];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n onLostFocus(): void {\n setTimeout(() => {\n this.toggleCompletion(false, null);\n }, 200);\n }\n complete(item: DataSourceItem<Record<string, unknown>, string>): void {\n if (item !== null) {\n this.value = item.key;\n this.label = item.label;\n } else {\n this.value = null;\n this.label = '';\n }\n this.toggleCompletion(false, null);\n this.markAsTouched();\n }\n toggleCompletion(show: boolean, label: string): void {\n if (show && !this.disabled) {\n this.showCompletionList(label);\n } else {\n this.showCompletion = false;\n if (this.canAddNewValues) {\n this.syncCustomValue(this.label);\n return;\n }\n }\n this.cd.markForCheck();\n }\n\n get selectedOption(): string {\n const index = this.completionList.findIndex(\n (i) => i.key === this.focusItem.key\n );\n if (index === -1 || !this.focusItem) {\n return null;\n }\n return `${this.inputId}_${index}`;\n }\n\n private ensureItemVisible(index: number): void {\n const target = this.completeDiv.nativeElement.querySelectorAll('li')[index];\n if (target) {\n target.scrollIntoView({ block: 'center' });\n }\n }\n private syncCustomValue(text: string): void {\n this.value = text;\n this.label = text;\n }\n private pickSelectionOrFirstMatch(text: string): void {\n if (this.canAddNewValues) {\n this.syncCustomValue(text);\n return;\n }\n if (this.focusItem && this.focusItem.label) {\n this.complete(this.focusItem);\n return;\n }\n const source = (text || '').trim();\n if (source === '') {\n this.showCompletion = false;\n return;\n }\n this.completionList = [];\n this.computeCompletionList(source).subscribe((suggestions) => {\n this.complete(\n suggestions && suggestions.length > 0 ? suggestions[0] : null\n );\n });\n }\n private showCompletionList(text: string): void {\n this.setSameWidth();\n const useSpinner = this.hasExternalDataSource();\n this.spinnerVisibility(useSpinner, true);\n setTimeout(() => {\n // for spinner to be shown\n this.computeCompletionList(text).subscribe({\n next: (cl) => {\n this.completionList = cl;\n this.focusItem =\n this.completionList.length > 0 ? this.completionList[0] : null;\n this.showCompletion = true;\n this.spinnerVisibility(useSpinner, false);\n },\n error: () => {\n this.spinnerVisibility(useSpinner, false);\n },\n complete: () => {\n this.spinnerVisibility(useSpinner, false);\n }\n });\n }, 1);\n }\n private spinnerVisibility(useSpinner: boolean, value: boolean): void {\n if (useSpinner) {\n this.showSpinner = value;\n }\n }\n private hasExternalDataSource(): boolean {\n return !this.dataSource && !!this.instance && !!this.populateFunction;\n }\n private computeCompletionList(text: string): Observable<DecoratedDataSource> {\n const searchText = (text || '').toLowerCase();\n if (this.dataSource) {\n const ds = (this.dataSource || [])\n .filter((it) => ignoreAccentsInclude(it.label, searchText))\n .sort((a, b) => a.label.localeCompare(b.label));\n return of(decorateDataSource(ds, searchText));\n } else if (this.instance && this.populateFunction) {\n return this.populateFunction(this.instance, searchText).pipe(\n debounceTime(1),\n first(),\n map((ds) => {\n ds.filter((it) => ignoreAccentsInclude(it.label, searchText)).sort(\n (a, b) => a.label.localeCompare(b.label)\n );\n return decorateDataSource(ds, searchText);\n })\n );\n } else {\n return of([]);\n }\n }\n}\n\n/** Returns true if text includes substring. No accents considered. Ignorecase */\nconst ignoreAccentsInclude = (text: string, substring: string): boolean => {\n text = normalizedString(text).toLowerCase();\n substring = normalizedString(substring).toLowerCase();\n return text.includes(substring);\n};\n\n/** Returns a normalized string with no accents: used for comparison */\nconst normalizedString = (a: string): string =>\n (a || '').normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n\nconst decorateDataSource = (\n dataSource: DataSource<any, string>,\n subString: string\n): DecoratedDataSource => dataSource.map((it) => decorateItem(it, subString));\n\nconst decorateItem = (\n item: DataSourceItem<any, string>,\n tx: string\n): DecoratedDataSourceItem => {\n const index = normalizedString(item.label)\n .toLowerCase()\n .indexOf(normalizedString(tx).toLowerCase());\n const labelPrefix = index === -1 ? item.label : item.label.substr(0, index);\n const labelMatch = index === -1 ? '' : item.label.substr(index, tx.length);\n const labelPostfix = index === -1 ? '' : item.label.substr(index + tx.length);\n const newItem: DecoratedDataSourceItem = {\n ...item,\n labelPrefix,\n labelMatch,\n labelPostfix\n };\n return newItem;\n};\n\nconst findLabelForId = (data: DataSource<any, string>, id: any): string => {\n const found = data.find((it) => it.key === id);\n return found ? found.label : null;\n};\n","/** Language detector based on Navigator preferences */\nexport const languageDetector = (): string => {\n const lang = navigator.language.split('-')[0];\n if (lang === 'es' || lang === 'en') {\n return lang;\n }\n return 'en'; // default\n};\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\nimport { DataSource } from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\n@Component({\n selector: 'lux-autocomplete-list',\n templateUrl: './autocomplete-list.component.html',\n styleUrls: ['./autocomplete-list.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n }\n ]\n})\nexport class AutocompleteListComponent\n implements ControlValueAccessor, Validator, OnInit\n{\n static idCounter = 0;\n\n @ViewChild('auto') auto!: AutocompleteListComponent;\n\n literals = {\n en: {\n placeholder: 'new item',\n deleteLabelTemplate: 'Delete <<label>>',\n addMessage: 'Add'\n },\n es: {\n placeholder: 'nuevo elemento',\n deleteLabelTemplate: 'Eliminar <<label>>',\n addMessage: 'Añadir'\n }\n };\n\n public internalDataSource: DataSource<any, string> = [];\n private autoPopulate = false;\n\n private _value: any[] = [];\n @Input()\n set value(val: any[]) {\n if (val === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, val);\n this._value = val;\n this.ensureLabelsForIds();\n this.populateWith('');\n this.onChange(this._value);\n if (!initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n }\n get value(): any[] {\n return this._value;\n }\n labels: string[] = [];\n newEntry: any;\n canAdd = false;\n touched = false;\n\n private _lang = languageDetector();\n @Input()\n get lang(): string {\n return this._lang;\n }\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n\n @Input() inputId: string;\n @Input() dataSource: DataSource<any, any> = [];\n @Input() placeholder?: string;\n @Input() disabled = false;\n @Input() deleteLabelTemplate?: string;\n @Input() addMessage?: string;\n @Input() required = false;\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n ids: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n @Output() valueChange = new EventEmitter<any[]>();\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteListComponent.idCounter++}`;\n this.autoPopulate =\n !!this.resolveLabelsFunction && !!this.populateFunction && this.instance;\n this.ensureLabelsForIds();\n }\n ensureLabelsForIds(): void {\n if (this.autoPopulate && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, this._value)\n .pipe(first())\n .subscribe((data) => {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = data.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n });\n } else if (this.dataSource) {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = this.dataSource.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n } else {\n this.labels = this._value.map((it) => (it ? it.toString() : '(unset)'));\n }\n }\n removeAt(index: number): void {\n if (this._value.length > index) {\n const key = this._value.splice(index, 1)[0];\n const label = this.labels.splice(index, 1)[0];\n this.internalDataSource.push({ key, label });\n }\n this.markAsTouched();\n }\n onValueChange(): void {\n this.updateCanAdd();\n }\n onNewEntryChange(event: KeyboardEvent, auto: AutocompleteComponent): void {\n if (event.key === 'Enter' && !!auto.value) {\n this.addNew(auto);\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n // todo\n } else {\n this.populateWith(auto.label + event.key);\n }\n this.updateCanAdd();\n }\n populateWith(searchText: string): void {\n if (this.autoPopulate && this.populateFunction && this.instance) {\n this.populateFunction(this.instance, searchText)\n .pipe(first())\n .subscribe((data) => {\n this.internalDataSource = data.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n });\n } else if (this.dataSource) {\n this.internalDataSource = this.dataSource.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n }\n }\n updateCanAdd(): void {\n this.canAdd =\n !this.disabled &&\n this.auto &&\n !!this.auto.value && // has value\n !this.value.find((it) => it === this.auto.value); // not already in\n }\n\n addNew(auto: AutocompleteComponent): void {\n this.value.push(auto.value);\n this.ensureLabelsForIds();\n this.newEntry = '';\n this.internalDataSource = this.internalDataSource.filter(\n (it) => !this._value.includes(it.key)\n );\n this.markAsTouched();\n }\n\n getDeleteMessage(label: string): string {\n return (\n this.deleteLabelTemplate ?? this.literals[this.lang].deleteLabelTemplate\n ).replace('<<label>>', label);\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n OnInit,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\nconst KEY_SPACE = ' ';\n\n@Component({\n selector: 'lux-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => CheckboxComponent)\n }\n ]\n})\nexport class CheckboxComponent\n implements ControlValueAccessor, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('ck', { static: false }) ck: ElementRef;\n\n private _lang = languageDetector();\n @Input()\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n get lang(): string {\n return this._lang;\n }\n private internalValue: boolean;\n @Input()\n get value(): boolean {\n return this.internalValue;\n }\n set value(v: boolean) {\n if (this.internalValue === v) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this.internalValue, v);\n this.internalValue = v;\n this.syncModel();\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n\n get tabindexValue(): string {\n return this.disabled ? null : '0';\n }\n\n @Input() label: string = null;\n @Input() name: string = null;\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(v: boolean) {\n if (v === this._disabled) {\n return;\n }\n this._disabled = v;\n this.syncModel();\n }\n @Input() inputId: string;\n\n literals = {\n en: {\n yesLabel: 'Yes',\n noLabel: 'No'\n },\n es: {\n yesLabel: 'Sí',\n noLabel: 'No'\n }\n };\n touched = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = !!value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.name || 'checkbox'}$${CheckboxComponent.idCounter++}`;\n }\n ngAfterViewInit(): void {\n this.syncModel();\n }\n\n clicked(): void {\n if (!this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n }\n }\n onKey(event: KeyboardEvent): void {\n if (event.key === KEY_SPACE && !this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n event.preventDefault();\n }\n }\n\n private syncModel(): void {\n if (this.ck) {\n this.ck.nativeElement.checked = this.internalValue;\n }\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n AbstractControl,\n ValidationErrors,\n Validator,\n NG_VALIDATORS\n} from '@angular/forms';\nimport {\n hasValue,\n isInitialAndEmpty,\n isValidEmail,\n isValidNumber,\n normalizeDate\n} from '../helperFns';\nimport { languageDetector } from '../lang';\n@Component({\n selector: 'lux-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n }\n ]\n})\nexport class InputComponent implements OnInit, ControlValueAccessor, Validator {\n static idCounter = 0;\n\n @ViewChild('input', { static: false }) input: ElementRef;\n @ViewChild('textarea', { static: false }) textarea: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _value: any = '';\n private _type: string;\n private _placeholder: string;\n private _pattern?: string = undefined;\n private _regexp?: RegExp = undefined;\n private _currency: string;\n private _required: boolean;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n min: 'Minimum value is $min.',\n max: 'Maximum value is $max.',\n email: 'Format should match example@example.com.'\n },\n es: {\n required: 'El campo es obligatorio.',\n min: 'El valor mínimo es $min.',\n max: 'El valor máximo es $max.',\n email: 'El campo debe tener un formato como ejemplo@ejemplo.com.'\n }\n };\n\n public domain: string;\n @Input()\n public rows?: number | string;\n @Input()\n public cols?: number | string;\n @Input()\n public step?: number;\n @Input()\n public min?: number | string;\n @Input()\n public max?: number | string;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set pattern(p: string | undefined) {\n this._pattern = p;\n if (p === undefined) {\n this._regexp = undefined;\n } else {\n try {\n this._regexp = new RegExp(p);\n } catch (e) {\n this._pattern = undefined;\n this._regexp = undefined;\n }\n }\n }\n get pattern(): string | undefined {\n return this._pattern;\n }\n\n @Input()\n set currency(v: string) {\n this._currency = v.toUpperCase();\n }\n get currency(): string {\n return this._currency;\n }\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set type(v: string) {\n this._type = v.toLowerCase();\n this.domain = v.toLowerCase();\n this.checkType(v);\n }\n get type(): string {\n return this._type ? this._type : 'text';\n }\n\n @Input()\n set value(v: any) {\n v = v === undefined ? null : v;\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (this.type === 'date') {\n v = normalizeDate(v);\n }\n\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n if (this.isPercentage() || this.isPermillage() || this.isNumber()) {\n const numVal = parseFloat(this._value);\n if (!Number.isNaN(numVal)) {\n return numVal;\n }\n }\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n constructor() {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setValueInControl(value);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setValueInControl(v: any): void {\n if (this.domain === 'date') {\n v = normalizeDate(v);\n }\n if (this.input) {\n this.input.nativeElement.value = v;\n }\n if (this.textarea) {\n this.textarea.nativeElement.value = v;\n }\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && !hasValue(hasValue)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (this._regexp && hasValue(value) && !this._regexp.test(value)) {\n result = result || {};\n result.pattern = {\n value,\n reason: `Value must follow the pattern: ${this._pattern}`\n };\n }\n if (this.type === 'email' && hasValue(value) && !isValidEmail(value)) {\n result = result || {};\n result.email = { value, reason: 'Invalid email.' };\n }\n if (this.type === 'number' && hasValue(value) && !isValidNumber(value)) {\n result = result || {};\n result.numeric = { value, reason: 'Invalid number.' };\n }\n if (\n this.type === 'date' ||\n this.type === 'time' ||\n this.type === 'timestamp'\n ) {\n if (\n typeof this.min === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.min) === -1\n ) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (\n typeof this.max === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.max) !== -1\n ) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n\n if (\n this.type === 'percentage' ||\n this.type === 'permillage' ||\n this.type === 'number' ||\n this.type === 'currency'\n ) {\n if (hasValue(this.min) && hasValue(value) && value < +this.min) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (hasValue(this.max) && hasValue(value) && value > +this.max) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.type}$${InputComponent.idCounter++}`;\n }\n onLostFocus(): void {\n this.markAsTouched();\n }\n onKeyUp(newValue: string): void {\n this.value = newValue;\n }\n onChangeValue(newValue: string): void {\n this.value = newValue;\n this.markAsTouched();\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n isNumber(): boolean {\n return this.type === 'number';\n }\n isPercentage(): boolean {\n return this.type === 'percentage';\n }\n isPermillage(): boolean {\n return this.type === 'permillage';\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n checkType(type: string): void {\n switch (type) {\n case 'email':\n this.setEmailPatterns();\n break;\n case 'date':\n this.setDatePatterns();\n break;\n case 'time':\n this.setTimePatterns();\n break;\n case 'password':\n this.setPasswordPatterns();\n break;\n case 'number':\n this.setNumberPatterns();\n break;\n case 'currency':\n this.setCurrencyPatterns();\n break;\n case 'percentage':\n this.setPercentagePatterns();\n break;\n case 'permillage':\n this.setPermillagePatterns();\n break;\n default:\n break;\n }\n }\n\n setEmailPatterns(): void {}\n\n setDatePatterns(): void {\n this.min = this.min || '1900-01-01';\n this.max = this.max || '2100-01-01';\n }\n\n setTimePatterns(): void {}\n\n setPasswordPatterns(): void {}\n\n setNumberPatterns(): void {\n this.domain = 'number';\n this.placeholder = '0';\n }\n\n setCurrencyPatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.1;\n this.min = this.min || 0.0;\n this.max = this.max || 10000.0;\n this.value = 0.0;\n }\n\n setPercentagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 100.0;\n this.placeholder = '0.00';\n }\n\n setPermillagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 1000.0;\n this.placeholder = '0.00';\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnDestroy,\n OnInit,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/** Filter component to query for objects. */\n@Component({\n selector: 'lux-filter',\n templateUrl: './filter.component.html',\n styleUrls: ['./filter.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FilterComponent)\n }\n ]\n})\nexport class FilterComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n static idCounter = 0;\n\n private touched = false;\n private _searchValue = '';\n\n @Input() disabled = false;\n /** id for the input. If left blank, it is autogenerated */\n @Input() inputId: string;\n /** Placeholder default text. */\n @Input() placeholder = '';\n /** Search value introduced by the user. */\n @Input()\n get searchValue(): string {\n return this._searchValue;\n }\n set searchValue(v: string) {\n v = (v || '').toString();\n if (v === this._searchValue) {\n return;\n }\n this.onChange(v);\n this._searchValue = v;\n }\n /** Search on type: (default true) Auto-search when user types in. */\n @Input() searchOnType = true;\n /** Custom aria label in case of not using a label */\n @Input('aria-label') ariaLabel: string;\n\n private debounceValue = 300; // 300 ms\n /** Debounce time in milliseconds. (defaults to 300 ms) */\n @Input()\n set debounce(val: number) {\n this.debounceValue = val;\n this.recreateObservable();\n }\n get debounce(): number {\n return this.debounceValue;\n }\n\n /** Search value changed by user. */\n @Output() searchValueChange = new EventEmitter<string>();\n\n searchValue$: Observable<string>;\n\n private subject = new Subject<string>();\n private sub: Subscription;\n\n constructor() {\n this.recreateObservable();\n }\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.searchValue = (value || '').toString();\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `filter$${FilterComponent.idCounter++}`;\n }\n ngOnDestroy(): void {\n this.freeSubscriptions();\n }\n clear(): void {\n this.searchValue = '';\n this.search();\n }\n search(): void {\n this.searchValueChange.emit(this.searchValue);\n }\n keyup(event: KeyboardEvent, newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n if (event.key === 'Enter') {\n this.searchNow(this.searchValue);\n }\n if (this.searchOnType) {\n this.addEvent();\n }\n }\n onInputValueChange(newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n }\n\n private recreateObservable(): void {\n this.searchValue$ = this.subject\n .asObservable()\n .pipe(debounceTime(this.debounce));\n\n this.freeSubscriptions();\n this.sub = this.searchValue$.subscribe((value) => {\n this.searchValueChange.emit(value);\n });\n }\n private freeSubscriptions(): void {\n if (this.sub) {\n this.sub.unsubscribe();\n this.sub = null;\n }\n }\n private searchNow(value: string): void {\n this.searchValueChange.emit(value);\n }\n private addEvent(): void {\n this.subject.next(this.searchValue);\n }\n}\n","import { ComponentRef } from '@angular/core';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { ContentRef } from './util';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\n\nexport class ActiveModal {\n close(result?: any): void {}\n dismiss(reason?: any): void {}\n}\n\nexport class ModalRef {\n private _resolve: (result?: any) => void;\n private _reject: (reason?: any) => void;\n\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content, will return `undefined`.\n */\n get componentInstance(): any {\n if (this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n\n /**\n * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n */\n result: Promise<any>;\n\n constructor(\n private _windowCmptRef: ComponentRef<LuxModalWindowComponent>,\n private _contentRef: ContentRef,\n private _backdropCmptRef?: ComponentRef<LuxModalBackdropComponent>,\n private _beforeDismiss?: () => any\n ) {\n _windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n this.dismiss(reason);\n });\n\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => {});\n }\n\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result?: any): void {\n if (this._windowCmptRef) {\n if (this._resolve) {\n this._resolve(result);\n }\n this._removeModalElements();\n }\n }\n\n private _dismiss(reason?: any): void {\n if (this._reject) {\n this._reject(reason);\n }\n this._removeModalElements();\n }\n\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason?: any): void {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(\n (result) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n },\n () => {}\n );\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n\n private _removeModalElements(): void {\n const windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n\n if (this._backdropCmptRef) {\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { ViewRef, ComponentRef } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nexport const FOCUS = 'focus';\n\nexport enum Key {\n Tab = 9,\n Enter = 13,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40\n}\n\nexport const isDefined = (value: any): boolean =>\n value !== undefined && value !== null;\n\nexport class ContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef<any>\n ) {}\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable]',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nexport const getFocusableBoundaryElements = (\n element: HTMLElement\n): HTMLElement[] => {\n const list: HTMLElement[] = Array.from(\n element.querySelectorAll(\n FOCUSABLE_ELEMENTS_SELECTOR\n ) as NodeListOf<HTMLElement>\n ).filter((el) => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n};\n\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nexport const focusTrap = (\n element: HTMLElement,\n stopFocusTrap$: Observable<any>,\n refocusOnClick = false\n): void => {\n // last focused element\n const lastFocusedElement$ = fromEvent<FocusEvent>(element, 'focusin').pipe(\n takeUntil(stopFocusTrap$),\n map((e) => e.target)\n );\n\n // 'tab' / 'shift+tab' stream\n fromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(\n takeUntil(stopFocusTrap$),\n /* eslint-disable import/no-deprecated */\n filter((e) => e.which === Key.Tab),\n /* eslint-enable import/no-deprecated */\n withLatestFrom(lastFocusedElement$)\n )\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n\n if (\n (focusedElement === first || focusedElement === element) &&\n tabEvent.shiftKey\n ) {\n last.focus();\n tabEvent.preventDefault();\n }\n\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(\n takeUntil(stopFocusTrap$),\n withLatestFrom(lastFocusedElement$),\n map((arr) => arr[1] as HTMLElement)\n )\n .subscribe((lastFocusedElement) => lastFocusedElement.focus());\n }\n};\n","export enum ModalDismissReasons {\n BackdropClick,\n Esc\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n HostBinding,\n HostListener\n} from '@angular/core';\n\nimport { getFocusableBoundaryElements, FOCUS } from './util';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\n\n@Component({\n selector: 'lux-modal-window',\n template: `\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\"><ng-content></ng-content></div>\n </div>\n `\n})\nexport class LuxModalWindowComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n private _elWithFocus: Element; // element that is focused prior to modal opening\n\n @Input() ariaDescribedBy: string;\n @Input() ariaLabelledBy: string;\n @Input() backdrop: boolean | string = false;\n @Input() keyboard = true;\n @Input() windowClass: string;\n\n @Output() dismissEvent = new EventEmitter();\n\n @HostBinding('class') get class(): string {\n return `modal ${this.windowClass || ''}`;\n }\n @HostBinding('attr.role') role = 'dialog';\n @HostBinding('tabindex') tabindex = '-1';\n @HostBinding('attr.aria-modal') ariamodal = true;\n @HostBinding('attr.aria-labelledby') get hostAriaLabelledBy(): string {\n return this.ariaLabelledBy;\n }\n @HostBinding('attr.aria-describedby') get hostAriaDescribedBy(): string {\n return this.ariaDescribedBy;\n }\n @HostListener('click', ['$event.target']) backdropClick(\n btn: HTMLElement\n ): void {\n if (this.backdrop === true && this._elRef.nativeElement === btn) {\n this.dismiss(ModalDismissReasons.BackdropClick);\n }\n }\n @HostListener('keyup.esc', ['$event']) escKey(event): void {\n if (this.keyboard && !event.defaultPrevented) {\n this.dismiss(ModalDismissReasons.Esc);\n }\n }\n\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _elRef: ElementRef<HTMLElement>\n ) {}\n\n dismiss(reason): void {\n this.dismissEvent.emit(reason);\n }\n\n ngOnInit(): void {\n this._elWithFocus = this._document.activeElement;\n }\n\n ngAfterViewInit(): void {\n if (!this._elRef.nativeElement.contains(document.activeElement)) {\n const firstFocusable = getFocusableBoundaryElements(\n this._elRef.nativeElement\n )[0];\n\n const elementToFocus = firstFocusable || this._elRef.nativeElement;\n elementToFocus.focus();\n }\n }\n\n ngOnDestroy(): void {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n\n let elementToFocus;\n if (elWithFocus && elWithFocus[FOCUS] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n } else {\n elementToFocus = body;\n }\n elementToFocus.focus();\n this._elWithFocus = null;\n }\n}\n","import {Component, Input, HostBinding} from '@angular/core';\n\n@Component({\n selector: 'lux-modal-backdrop',\n template: ''\n})\nexport class LuxModalBackdropComponent {\n @Input() backdropClass: string;\n\n @HostBinding('class') class = 'modal-backdrop fade show';\n @HostBinding('style') style = 'z-index: 1050';\n}\n","import { Injectable } from '@angular/core';\n\nexport interface LuxModalOptions {\n ariaDescribedBy?: string;\n ariaLabelledBy?: string;\n backdrop?: boolean;\n keyboard?: boolean;\n windowClass?: string;\n backdropClass?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LuxModalConfig implements LuxModalOptions {\n backdrop = true;\n}\n","import {\n Injectable,\n ApplicationRef,\n ComponentFactoryResolver,\n TemplateRef,\n ComponentRef,\n Inject,\n Injector,\n RendererFactory2\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { ActiveModal, ModalRef } from './modal-ref';\nimport { ContentRef, focusTrap, isDefined } from './util';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { Subject } from 'rxjs';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\nimport { LuxModalOptions, LuxModalConfig } from './modal-config';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStack {\n private _activeWindowCmptHasChanged = new Subject();\n private _modalRefs: ModalRef[] = [];\n private _windowCmpts: ComponentRef<LuxModalWindowComponent>[] = [];\n private _ariaHiddenValues: Map<Element, string> = new Map();\n private _backdropAttributes = ['backdropClass'];\n private _windowAttributes = [\n 'ariaLabelledBy',\n 'backdrop',\n 'centered',\n 'keyboard',\n 'scrollable',\n 'size',\n 'windowClass'\n ];\n\n constructor(\n private _applicationRef: ApplicationRef,\n @Inject(DOCUMENT) private _document: any,\n private _injector: Injector,\n private _rendererFactory: RendererFactory2,\n private modalConfig: LuxModalConfig\n ) {\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt =\n this._windowCmpts[this._windowCmpts.length - 1];\n focusTrap(\n activeWindowCmpt.location.nativeElement,\n this._activeWindowCmptHasChanged\n );\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n\n open(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n options: LuxModalOptions\n ): ModalRef {\n const config = Object.assign({}, this.modalConfig, options);\n const containerEl = this._document.body;\n const renderer = this._rendererFactory.createRenderer(null, null);\n const removeBodyClass = (): void => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._revertAriaHidden();\n }\n };\n const activeModal = new ActiveModal();\n const contentRef = this.getContentRef(moduleCFR, content, activeModal);\n const backdropCmptRef: ComponentRef<LuxModalBackdropComponent> =\n config.backdrop ? this._attachBackdrop(moduleCFR, containerEl) : null;\n const windowCmptRef: ComponentRef<LuxModalWindowComponent> =\n this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n const modalRef: ModalRef = new ModalRef(\n windowCmptRef,\n contentRef,\n backdropCmptRef\n );\n this._registerModalRef(modalRef);\n this._registerWindowCmpt(windowCmptRef);\n modalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = (result: any): void => {\n modalRef.close(result);\n };\n activeModal.dismiss = (reason: any): void => {\n modalRef.dismiss(reason);\n };\n\n this._applyWindowOptions(windowCmptRef.instance, config);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackgroundOptions(backdropCmptRef.instance, config);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n windowCmptRef.changeDetectorRef.detectChanges();\n\n return modalRef;\n }\n\n private _applyWindowOptions(\n windowInstance: LuxModalWindowComponent,\n config: LuxModalOptions\n ): void {\n this._windowAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n windowInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _applyBackgroundOptions(\n backgroudInstance: LuxModalBackdropComponent,\n config: LuxModalOptions\n ): void {\n this._backdropAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n backgroudInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _revertAriaHidden(): void {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n\n private getContentRef(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n activeModal: ActiveModal\n ): ContentRef {\n if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content, activeModal);\n }\n }\n\n private createFromTemplateRef(\n content: TemplateRef<any>,\n activeModal: ActiveModal\n ): ContentRef {\n const context = {\n $implicit: activeModal,\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n close(result): void {\n activeModal.close(result);\n },\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n dismiss(reason): void {\n activeModal.dismiss(reason);\n }\n };\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n\n private _attachBackdrop(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any\n ): ComponentRef<LuxModalBackdropComponent> {\n const backdropFactory = moduleCFR.resolveComponentFactory(\n LuxModalBackdropComponent\n );\n const backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n\n private _attachWindowComponent(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any,\n contentRef: any\n ): ComponentRef<LuxModalWindowComponent> {\n const windowFactory = moduleCFR.resolveComponentFactory(\n LuxModalWindowComponent\n );\n const windowCmptRef = windowFactory.create(\n this._injector,\n contentRef.nodes\n );\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n\n private _registerModalRef(modalRef: ModalRef): void {\n const unregisterModalRef = (): void => {\n const index = this._modalRefs.indexOf(modalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n }\n };\n this._modalRefs.push(modalRef);\n modalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n\n private _registerWindowCmpt(\n windowCmpt: ComponentRef<LuxModalWindowComponent>\n ): void {\n this._windowCmpts.push(windowCmpt);\n this._activeWindowCmptHasChanged.next();\n\n windowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(windowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n\n private _setAriaHidden(element: Element): void {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach((sibling) => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n}\n","import {\n Injectable,\n ComponentFactoryResolver,\n TemplateRef,\n} from '@angular/core';\nimport { ModalStack } from './modal-stack';\nimport { ModalRef } from './modal-ref';\nimport { LuxModalOptions } from './modal-config';\n\n/**\n * A service that it allow open an close modal components\n */\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(\n private modalStack: ModalStack,\n private moduleCFR: ComponentFactoryResolver\n ) {}\n\n /**Open a modal component\n * @param content TemplateRef\n */\n open(content: TemplateRef<any>, options: LuxModalOptions = {}): ModalRef {\n return this.modalStack.open(this.moduleCFR, content, options);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DataSource } from '../datasource';\nimport { Observable, of, Subject } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n switchMap\n} from 'rxjs/operators';\nimport { GeoPoint } from '../map/geopoint';\n\ninterface SearchResult {\n place_id: number;\n lat: number;\n lon: number;\n display_name: string;\n icon: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GeolocationService {\n private debouncePeriodMs = 300; // ms\n private cacheSize = 20;\n private lastQueriesWithResults = new Map<string, SearchResult[]>();\n private lastQueriesLru: string[] = [];\n private currentSearch$: Subject<string>;\n private currentQuery$: Observable<SearchResult[]>;\n\n constructor(private http: HttpClient) {\n this.currentSearch$ = new Subject<string>();\n\n const typed$ = this.currentSearch$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n this.currentQuery$ = typed$.pipe(\n debounceTime(this.debouncePeriodMs),\n\n switchMap((currentQuery) => {\n const data = this.getFromCache(currentQuery);\n if (data !== undefined) {\n return of(data);\n }\n // Nominatim search documentation:\n // https://nominatim.org/release-docs/develop/api/Search/\n const url =\n 'https://nominatim.openstreetmap.org/search?format=json&limit=20&q=' +\n encodeURIComponent(currentQuery);\n const headers = {\n 'Content-Type': 'application/json'\n };\n this.addToCache(currentQuery, []);\n\n return this.http.get(url, { headers }).pipe(\n map((response) => {\n const searchResults = response as unknown as SearchResult[];\n const uniqueResults = distinct(searchResults);\n return this.addToCache(currentQuery, uniqueResults);\n })\n );\n })\n );\n }\n\n searchGeolocation(query: string): Observable<SearchResult[]> {\n this.currentSearch$.next(query);\n return this.currentQuery$;\n }\n\n getLabels(\n instance: GeolocationService,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n const searchResults = instance.lastQueriesWithResults\n .get(instance.getLatestQuery())\n .filter((searchResult) => samePosition(searchResult, keys));\n return of(\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n return {\n key,\n label: searchResult.display_name\n };\n })\n );\n }\n\n getData(\n instance: GeolocationService,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.searchGeolocation(search).pipe(\n map((searchResults) =>\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n const label = searchResult.display_name;\n return { key, label };\n })\n )\n );\n }\n\n // Cache implemementation ---\n private getFromCache(query: string): SearchResult[] {\n if (this.lastQueriesWithResults.has(query)) {\n return this.lastQueriesWithResults.get(query);\n }\n return undefined;\n }\n private addToCache(query: string, data: SearchResult[]): SearchResult[] {\n if (this.lastQueriesWithResults.keys.length >= this.cacheSize) {\n const deletedQuery = this.lastQueriesLru[0];\n this.revomeFromCache(deletedQuery);\n }\n this.lastQueriesWithResults.set(query, data);\n this.lastQueriesLru.push(query);\n return data;\n }\n private revomeFromCache(query: string): void {\n this.lastQueriesWithResults.delete(query);\n const index = this.lastQueriesLru.findIndex((it) => it === query);\n this.lastQueriesLru.splice(index, 1);\n }\n private getLatestQuery(): string | null {\n return this.lastQueriesLru.length\n ? this.lastQueriesLru[this.lastQueriesLru.length - 1]\n : null;\n }\n // End cache implemementation ---\n}\n\nconst samePosition = (\n searchResult: SearchResult,\n keys: GeoPoint[]\n): boolean => {\n let found = false;\n keys.forEach((item) => {\n if (\n searchResult.lon === item.coordinates[0] &&\n searchResult.lat === item.coordinates[1]\n ) {\n found = true;\n }\n });\n return found;\n};\n\nconst distinct = (data: SearchResult[]): SearchResult[] => {\n const unique: { [key: string]: number } = {};\n return data.filter((r) => {\n if (unique[r.display_name]) {\n return false;\n }\n unique[r.display_name] = 1;\n return true;\n });\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef,\n TemplateRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n AbstractControl,\n ValidationErrors,\n NG_VALIDATORS\n} from '@angular/forms';\nimport { DataSource } from '../datasource';\nimport {\n isInitialAndEmpty,\n isValidNumber,\n roundToMultipleOf\n} from '../helperFns';\nimport { languageDetector } from '../lang';\nimport { ModalService } from '../modal/modal.service';\nimport { GeoPoint } from '../map/geopoint';\nimport { Observable } from 'rxjs';\nimport { GeolocationService } from './geolocation.service';\n\n@Component({\n selector: 'lux-geolocation',\n templateUrl: './geolocation.component.html',\n styleUrls: ['./geolocation.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n }\n ]\n})\nexport class GeolocationComponent implements OnInit {\n static idCounter = 0;\n\n @ViewChild('latitude', { static: true }) latitude: ElementRef;\n @ViewChild('longitude', { static: true }) longitude: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _required: boolean;\n private _value: any;\n\n public latitudeValue?: number = null;\n public longitudeValue?: number = null;\n\n isValidNumber = isValidNumber;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n minLatitude: 'Minimum latitude is $minLatitude.',\n maxLatitude: 'Maximum latitude is $maxLatitude.',\n minLongitude: 'Minimum longitude is $minLongitude.',\n maxLongitude: 'Maximum longitude is $maxLongitude.'\n },\n es: {\n required: 'El campo es obligatorio.',\n minLatitude: 'La latitud mínima es $minLatitude.',\n maxLatitude: 'La latitud máxima es $maxLatitude.',\n minLongitude: 'La longitud mínima es $minLongitude.',\n maxLongitude: 'La longitud máxima es $maxLongitude.'\n }\n };\n\n public cardinalPoints = {\n en: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'W',\n unknown: '?'\n },\n es: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'O',\n unknown: '?'\n }\n };\n\n @Input()\n public minLatitude: number;\n @Input()\n public maxLatitude: number;\n @Input()\n public minLongitude: number;\n @Input()\n public maxLongitude: number;\n @Input()\n public step: number;\n @Input()\n public zoom: number;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set value(v: GeoPoint) {\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (v.coordinates && v.coordinates.length === 2) {\n this._value = v;\n this.latitudeValue = v.coordinates[1];\n this.longitudeValue = v.coordinates[0];\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n } else {\n this._value = undefined;\n this.latitudeValue = undefined;\n this.longitudeValue = undefined;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): GeoPoint {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<GeoPoint>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value: any): void => {};\n onTouched = (): void => {};\n\n constructor(\n private modalService: ModalService,\n public locationService: GeolocationService\n ) {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setLatitudeInControl(latitude: number): void {\n this.latitude.nativeElement.value = latitude;\n }\n private setLongitudeInControl(longitude: number): void {\n this.longitude.nativeElement.value = longitude;\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && (value === null || value === undefined)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (\n this.minLatitude !== undefined &&\n this.minLatitude !== null &&\n this.latitudeValue < this.minLatitude\n ) {\n result = result || {};\n result.minLatitude = {\n value,\n min: this.minLatitude,\n reason: `Value is lower than minimum value: ${this.minLatitude}.`\n };\n }\n if (\n this.maxLatitude !== undefined &&\n this.maxLatitude !== null &&\n this.latitudeValue < this.maxLatitude\n ) {\n result = result || {};\n result.maxLatitude = {\n value,\n max: this.maxLatitude,\n reason: `Value is lower than maximum value: ${this.maxLatitude}.`\n };\n }\n if (\n this.minLongitude !== undefined &&\n this.minLongitude !== null &&\n this.longitudeValue < this.minLongitude\n ) {\n result = result || {};\n result.minLongitude = {\n value,\n min: this.minLongitude,\n reason: `Value is lower than minimum value: ${this.minLongitude}.`\n };\n }\n if (\n this.maxLongitude !== undefined &&\n this.maxLongitude !== null &&\n this.longitudeValue < this.maxLongitude\n ) {\n result = result || {};\n result.maxLongitude = {\n value,\n max: this.maxLongitude,\n reason: `Value is lower than maximum value: ${this.maxLongitude}.`\n };\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `geolocation$${GeolocationComponent.idCounter++}`;\n this.setPatterns();\n }\n\n updateLatitude(newLatitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [this.longitudeValue, newLatitude]\n };\n }\n updateLongitude(newLongitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, this.latitudeValue]\n };\n }\n updateLatitudeAndLongitude(newLatitudeAndLongitude: number[]): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: newLatitudeAndLongitude\n };\n }\n\n roundToStepAndUpdateLatitudeAndLongitude(\n newLatitudeAndLongitude: number[]\n ): void {\n const newLatitude = roundToMultipleOf(\n newLatitudeAndLongitude[1],\n this.step\n );\n const newLongitude = roundToMultipleOf(\n newLatitudeAndLongitude[0],\n this.step\n );\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, newLatitude]\n };\n }\n\n onEventLatitude(newLatitude: string): void {\n if (isValidNumber(newLatitude)) {\n this.updateLatitude(+newLatitude);\n }\n }\n onEventLongitude(newLongitude: string): void {\n if (isValidNumber(newLongitude)) {\n this.updateLongitude(+newLongitude);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n openModalMap(modal: TemplateRef<any>): void {\n this.modalService.open(modal).result.then(\n (result) => {\n if (result !== 'cancel') {\n this.roundToStepAndUpdateLatitudeAndLongitude(result);\n }\n },\n (_) => {}\n );\n }\n\n get mapTitle(): string {\n return this._disabled || !!this.readonly ? 'Location:' : 'Select location:';\n }\n\n get self(): GeolocationComponent {\n return this;\n }\n\n getLabels(\n instance: GeolocationComponent,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getLabels(instance.locationService, keys);\n }\n\n getData(\n instance: GeolocationComponent,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getData(instance.locationService, search);\n }\n\n setPatterns(): void {\n this.step = this.step || 0.00001; // 0.00001 degrees = 1.11 meters\n this.zoom = this.zoom || 18; // (360/2^18) degrees ~ 0.00137 degrees ~ 153 meters\n this.minLatitude = this.minLatitude || -90;\n this.maxLatitude = this.maxLatitude || +90;\n this.minLongitude = this.minLongitude || -180;\n this.maxLongitude = this.maxLongitude || +180;\n }\n}\n","export enum Placement {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right'\n}\nexport type PlacementValue = 'left' | 'right' | 'top' | 'bottom';\n","import { Component, Input } from '@angular/core';\nimport { LuxTooltipContext } from './tooltip-context';\n\n/**\n * Default Tooltip Component\n */\n@Component({\n template: `\n <span class=\"lux-tooltip\" style=\"transition: opacity 200ms\">{{context.message}}</span>\n `\n})\nexport class TooltipComponent {\n\n @Input() context: LuxTooltipContext;\n\n constructor() { }\n\n}\n","import { ViewRef, ComponentRef } from '@angular/core';\n\nexport class TooltipContentRef {\n constructor(public viewRef?: ViewRef, public componentRef?: ComponentRef<any>) {}\n}\n","import {\n Injectable,\n Injector,\n ComponentRef,\n ComponentFactoryResolver,\n ApplicationRef,\n EmbeddedViewRef,\n ElementRef,\n TemplateRef\n} from '@angular/core';\n\nimport { PlacementValue, Placement } from './placement';\nimport { LuxTooltipContext } from './tooltip-context';\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipContentRef } from './tooltop-content';\n\n@Injectable()\nexport class TooltipService {\n constructor(\n private _injector: Injector,\n private _crf: ComponentFactoryResolver,\n private _applicationRef: ApplicationRef\n ) {}\n\n appendComponentToBody(\n content: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n const tooltipContentRef = this.getTooltipContentRef(content);\n if (tooltipContentRef) {\n let domElem = (tooltipContentRef.viewRef as EmbeddedViewRef<any>)\n .rootNodes[0];\n document.body.appendChild(domElem);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.changeDetectorRef.detectChanges();\n }\n domElem = this.setStyle(domElem, placement);\n domElem = this.setPosition(domElem, elHost, placement);\n return tooltipContentRef;\n }\n return null;\n }\n\n removeComponentFromBody(tooltipContentRef: TooltipContentRef): void {\n this._applicationRef.detachView(tooltipContentRef.viewRef);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.destroy();\n }\n }\n\n private getTooltipContentRef(content: any): TooltipContentRef {\n if (!content) {\n // nothing to show\n } else if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content);\n } else if (typeof content === 'string') {\n return this.createFromComponent(TooltipComponent, { message: content });\n } else {\n return this.createFromComponent(content);\n }\n }\n\n private createFromTemplateRef(content: TemplateRef<any>): TooltipContentRef {\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n return new TooltipContentRef(viewRef);\n }\n\n private createFromComponent(\n component: any,\n context?: LuxTooltipContext\n ): TooltipContentRef {\n const componentRef: ComponentRef<any> = this._crf\n .resolveComponentFactory(component)\n .create(this._injector);\n if (context) {\n componentRef.instance.context = context;\n }\n this._applicationRef.attachView(componentRef.hostView);\n return new TooltipContentRef(componentRef.hostView, componentRef);\n }\n\n private setStyle(\n domElem: HTMLElement,\n placement: PlacementValue\n ): HTMLElement {\n domElem.style.position = 'absolute';\n domElem.style.minWidth = 'min-content';\n domElem.style.minHeight = 'min-content';\n const tooltipElement = this.getTooltipElementFromHTMLElemnt(domElem);\n placement =\n placement !== undefined\n ? (placement.toLocaleLowerCase() as PlacementValue)\n : 'top'; // 'Top' is the default value of placement\n tooltipElement.classList.add(`lux-tooltip-${placement}`);\n tooltipElement.classList.add('lux-tooltip-show');\n return domElem;\n }\n\n private getTooltipElementFromHTMLElemnt(domElem: HTMLElement): any {\n const elementsArray = Array.from(domElem.classList).filter(\n (className) => className === 'lux-tooltip'\n );\n if (elementsArray.length !== 0) {\n return domElem;\n } else if (domElem.hasChildNodes()) {\n const childrenArray = Array.from(domElem.children).filter(\n (child) =>\n this.getTooltipElementFromHTMLElemnt(child as HTMLElement) !== null\n );\n if (childrenArray.length !== 0) {\n return this.getTooltipElementFromHTMLElemnt(\n childrenArray[0] as HTMLElement\n );\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n private setPosition(\n domElem: HTMLElement,\n elHost: ElementRef,\n placement: PlacementValue\n ): HTMLElement {\n const hostPos = elHost.nativeElement.getBoundingClientRect();\n const tooltipPos = domElem.getBoundingClientRect();\n const scrollPos =\n window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0;\n let top = 0;\n let left = 0;\n const offset = 10;\n\n switch (placement) {\n case Placement.Bottom:\n top = hostPos.bottom + offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n case Placement.Left:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.left - tooltipPos.width - offset;\n break;\n case Placement.Right:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.right + offset;\n break;\n case Placement.Top:\n default:\n top = hostPos.top - tooltipPos.height - offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n }\n top = Math.max(0, top);\n left = Math.max(0, left);\n domElem.style.top = `${top + scrollPos}px`;\n domElem.style.left = `${left}px`;\n return domElem;\n }\n}\n","import { HostListener, Input, Directive, ElementRef } from '@angular/core';\n\nimport { TooltipService } from './tooltip.service';\nimport { PlacementValue } from './placement';\nimport { TooltipContentRef } from './tooltop-content';\n\n/**\n * Tooltip directive\n */\n@Directive({\n selector: '[luxTooltip]'\n})\nexport class LuxTooltipDirective {\n /** Tooltip title */\n @Input() luxTooltip: any;\n\n /** Component, TemplateRef or String */\n @Input() content: any;\n\n /** Placement */\n @Input() placement: PlacementValue;\n\n tooltipRef: TooltipContentRef;\n\n constructor(\n private elHost: ElementRef,\n private tooltipService: TooltipService\n ) {}\n\n @HostListener('mouseenter') onMouseEnter(): void {\n if (!this.tooltipRef) {\n this.tooltipRef = this.show(this.content, this.elHost, this.placement);\n }\n }\n\n @HostListener('mouseleave') onMouseLeave(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n @HostListener('click') onClick(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n show(\n component: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n return this.tooltipService.appendComponentToBody(\n component,\n elHost,\n placement\n );\n }\n\n remove(tooltipRef: TooltipContentRef): void {\n this.tooltipService.removeComponentFromBody(tooltipRef);\n }\n}\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport {\n Router,\n NavigationEnd,\n ActivatedRoute,\n ActivatedRouteSnapshot\n} from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nexport interface BreadcrumbItem {\n label: string;\n url: string;\n}\n@Component({\n selector: 'lux-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss']\n})\nexport class LuxBreadcrumbComponent implements OnInit, OnDestroy {\n public breadcrumbs: BreadcrumbItem[];\n private subs: Subscription[] = [];\n public imagePath = '../assets/img/arrow-forward.svg';\n\n constructor(private route: Router, private activedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.subs.push(\n this.route.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((_) => {\n this.breadcrumbs = [];\n this.addBreadcrumbs(this.activedRoute.snapshot.root, true, null);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subs.forEach((s) => s.unsubscribe());\n this.subs = [];\n }\n\n private addBreadcrumbs(\n activedRouteSnapshot: ActivatedRouteSnapshot,\n isRoot: boolean,\n urlPrefix: string\n ): void {\n const routeConfig = activedRouteSnapshot.routeConfig;\n let url = urlPrefix || '';\n url += routeConfig ? '/' + this.getUrl(activedRouteSnapshot) : '';\n const label = routeConfig\n ? this.getLabel(activedRouteSnapshot)\n : isRoot\n ? 'Home'\n : '';\n if (label && url !== '/') {\n const breadcrumb = { label, url };\n this.breadcrumbs.push(breadcrumb);\n }\n if (activedRouteSnapshot.children.length) {\n this.addBreadcrumbs(activedRouteSnapshot.children[0], false, url);\n }\n }\n\n private getUrl(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n if (!activedRouteSnapshot.url[0]) {\n return '';\n }\n const id = activedRouteSnapshot.params.id;\n return id\n ? `${activedRouteSnapshot.url[0]}/${id}`\n : activedRouteSnapshot.routeConfig.path || '';\n }\n\n private getLabel(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n const routeConfig = activedRouteSnapshot.routeConfig;\n if (!routeConfig) {\n return null;\n }\n if (activedRouteSnapshot.data && activedRouteSnapshot.data.title) {\n const data = activedRouteSnapshot.data;\n if (data.objectTitle) {\n return `${data.title} ${data.objectTitle}`;\n } else {\n return data.title;\n }\n }\n return activedRouteSnapshot.params.id || routeConfig.path;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { from, Observable, of } from 'rxjs';\n\nlet openLayersIsInstalled = false;\n\n@Injectable({ providedIn: 'root' })\nexport class OpenLayerLoaderService {\n load(): Observable<boolean> {\n if ((window as any).ol) {\n return of(true);\n }\n\n const openLayerJsUrl = 'https://openlayers.org/en/v5.3.0/build/ol.js';\n const openLayerCssUrl = 'https://openlayers.org/en/v5.3.0/css/ol.css';\n\n if (!openLayersIsInstalled) {\n openLayersIsInstalled = true; // only try to install it once\n loadCss(openLayerCssUrl, () => {});\n return from(\n new Promise<boolean>((resolve, _) => {\n loadScript(openLayerJsUrl, () => resolve(true));\n })\n );\n }\n return of(true);\n }\n}\n\n/** Dynamically load a script from url and return a callback */\nconst loadScript = (url: string, callback: () => void): void => {\n const script: any = document.createElement('script');\n script.type = 'text/javascript';\n\n if (script.readyState) {\n // for old IE\n script.onreadystatechange = (): void => {\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\n script.onreadystatechange = null;\n callback();\n }\n };\n } else {\n // Others browsers\n script.onload = (): void => {\n callback();\n };\n }\n script.src = url;\n document.getElementsByTagName('head')[0].appendChild(script);\n};\n\n/** Dynamically load css from url and return a callback */\nconst loadCss = (url: string, callback: () => void): void => {\n const link: any = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.type = 'text/javascript';\n link.href = url;\n link.onload = (): void => {\n callback();\n };\n document.getElementsByTagName('head')[0].appendChild(link);\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n AfterViewInit\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { OpenLayerLoaderService } from '../geolocation/openlayer-loader.service';\n\nimport { GeoPoint } from './geopoint';\n\n// @dynamic\ndeclare const ol: any;\n\n@Component({\n selector: 'lux-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\nexport class MapComponent implements OnInit, AfterViewInit {\n static idCounter = 0;\n\n private loaded$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n private _map: any;\n\n @Input() mapId;\n\n _zoom: number;\n @Input()\n set zoom(zoom: number) {\n if (!isNaN(zoom)) {\n this._zoom = zoom;\n if (this._map) {\n this._map.getView().setZoom(zoom);\n }\n }\n }\n get zoom(): number {\n return this._zoom;\n }\n\n _center: GeoPoint;\n @Input()\n set center(center: GeoPoint) {\n if (center) {\n if (center.coordinates && center.coordinates.length === 2) {\n this._center = center;\n if (this._map) {\n this._map.getView().setCenter(ol.proj.fromLonLat(center.coordinates));\n }\n }\n }\n }\n get center(): GeoPoint {\n return this._center;\n }\n\n _readonly: boolean;\n @Input()\n set readonly(readonly: boolean) {\n if (!readonly) {\n if (this._map) {\n this._map.on('click', (args: any) => {\n // args.coordinate is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n const coordinates = ol.proj.toLonLat(args.coordinate);\n // alternatively: const lonLat = ol.proj.transform(args.coordinate,'EPSG:3857','EPSG:4326');\n this.addMarkerAtCoordinates(coordinates);\n });\n this._map.on('pointermove', (event: any) => {\n const pixel = this._map.getEventPixel(event.originalEvent);\n const hit = this._map.hasFeatureAtPixel(pixel);\n this._map.getViewport().style.cursor = hit ? 'move' : 'grab';\n });\n }\n } else {\n if (this._map) {\n this._map.on('click', (args: any) => {});\n this._map.on('pointermove', (event: any) => {});\n this._map.getViewport().style.cursor = 'grab';\n }\n }\n this._readonly = readonly;\n // reset marker coordinates so marker interactions can be created or recreated accordingly\n // to the changes to readonly\n this.markerCoordinates = this.markerCoordinates;\n }\n get readonly(): boolean {\n return this._readonly;\n }\n\n private _marker: any;\n private _markerInteraction: any;\n private _markerCoordinates: number[];\n @Input()\n private set markerCoordinates(markerCoordinates: number[]) {\n if (markerCoordinates && markerCoordinates.length === 2) {\n this._markerCoordinates = markerCoordinates;\n if (this._map) {\n this.addMarkerAtCoordinates(markerCoordinates);\n }\n } else {\n this._markerCoordinates = undefined;\n if (this._map) {\n this.removeMarker();\n }\n }\n }\n private get markerCoordinates(): number[] {\n return this._markerCoordinates;\n }\n @Input()\n set markerPoint(markerPoint: GeoPoint) {\n if (\n !markerPoint ||\n !(markerPoint.coordinates && markerPoint.coordinates.length === 2)\n ) {\n this.markerCoordinates = undefined;\n } else {\n this.markerCoordinates = [\n +markerPoint.coordinates[0],\n +markerPoint.coordinates[1]\n ];\n }\n this.valueChange.emit(markerPoint);\n }\n get markerPoint(): GeoPoint {\n return {\n type: 'Point',\n coordinates: this.markerCoordinates\n };\n }\n @Output() valueChange = new EventEmitter<GeoPoint>();\n\n private _markerSource: any;\n private _markerStyle: any;\n\n constructor(olLoader: OpenLayerLoaderService) {\n olLoader.load().subscribe((_) => {\n // Initialize\n this._markerSource = new ol.source.Vector();\n this._markerStyle = new ol.style.Style({\n image: new ol.style.Icon({\n anchor: [0.5, 1],\n scale: 0.25,\n src: '/assets/img/marker.png'\n })\n });\n this.loaded$.next(true);\n });\n }\n\n ngOnInit(): void {\n this.mapId = this.mapId ? this.mapId : 'map' + MapComponent.idCounter++;\n }\n\n ngAfterViewInit(): void {\n this.loaded$.subscribe((loaded) => {\n if (loaded) {\n this.initMap();\n }\n });\n }\n private initMap(): void {\n this._map = new ol.Map({\n target: this.mapId,\n controls: ol.control.defaults({ attribution: false }),\n layers: [\n new ol.layer.Tile({\n source: new ol.source.OSM()\n }),\n new ol.layer.Vector({\n source: this._markerSource,\n style: this._markerStyle\n })\n ],\n view: new ol.View({\n center: ol.proj.fromLonLat(\n this.center !== undefined ? this.center.coordinates : [0, 0]\n ),\n zoom: this.zoom\n })\n });\n\n if (this.center === undefined || this.center === null) {\n // if the center is not set, we set its default value\n if ('geolocation' in navigator) {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n this.center = {\n type: 'Point',\n coordinates: [position.coords.longitude, position.coords.latitude]\n };\n },\n (error) => {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n );\n } else {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n } else {\n // the center needs the map to be properly set, so if it was set before the map was initialized,\n // we set the center again to perform necessary adjustements\n this.center = this.center;\n }\n\n if (this.zoom === undefined || this.zoom === null) {\n // if the zoom is not set, we set its default value\n this.zoom = 18;\n } else {\n // the zoom needs the map to be properly set, so if it was set before the map was initialized,\n // we set the zoom again to perform necessary adjustements\n this.zoom = this.zoom;\n }\n\n if (this.readonly === undefined || this.readonly === null) {\n // if readonly is not set, we set its default value\n this.readonly = false;\n } else {\n // readonly needs the map to be properly set, so if it was set before the map was initialized,\n // we set readonly again to perform necessary adjustements\n this.readonly = this.readonly;\n }\n\n if (\n this.markerCoordinates !== undefined &&\n this.markerCoordinates !== null\n ) {\n // the marker coordinates need the map to be properly set, so if they were set before the map was initialized,\n // we set the marker coordinates again to perform necessary adjustements\n this.markerCoordinates = this.markerCoordinates;\n }\n }\n\n private addMarkerAtCoordinates(coordinates: number[]): void {\n if (coordinates && coordinates.length === 2) {\n if (this._marker !== undefined) {\n this.removeMarker();\n }\n this._marker = new ol.Feature({\n geometry: new ol.geom.Point(\n // [lon, lat] is in EPSG:4326 (degrees), we transform it into EPSG:3857 (meters)\n ol.proj.transform(coordinates, 'EPSG:4326', 'EPSG:3857')\n )\n });\n this._markerSource.addFeature(this._marker);\n this._markerCoordinates = this.getMarkerCoordinates();\n\n if (!this.readonly) {\n const dragInteraction = new ol.interaction.Modify({\n features: new ol.Collection([this._marker]),\n style: this._markerStyle,\n pixelTolerance: 50,\n hitDetection: true\n });\n this._markerInteraction = dragInteraction;\n this._map.addInteraction(dragInteraction);\n }\n\n this._marker.on(\n 'change',\n () => {\n this._markerCoordinates = this.getMarkerCoordinates();\n },\n this._marker\n );\n }\n }\n\n private removeMarker(): void {\n if (this._marker !== undefined) {\n this._markerSource.removeFeature(this._marker);\n this._marker = undefined;\n }\n if (this._markerInteraction !== undefined) {\n this._map.getInteractions().pop();\n this._markerInteraction = undefined;\n }\n }\n\n private getMarkerCoordinates(): number[] | null {\n if (this._marker === undefined || this._marker == null) {\n return this._marker;\n }\n const coordinates = this._marker.getGeometry().getCoordinates();\n // coordinates is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n return ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326');\n }\n\n onResize(): void {\n if (this._map) {\n this._map.updateSize();\n }\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\nimport { languageDetector } from '../lang';\r\nimport { PaginationInfo } from './pagination';\r\n\r\n@Component({\r\n selector: 'lux-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit {\r\n literals = {\r\n en: {\r\n first: 'First',\r\n previous: 'Previous',\r\n next: 'Next',\r\n last: 'Last'\r\n },\r\n es: {\r\n first: 'Primero',\r\n previous: 'Anterior',\r\n next: 'Siguiente',\r\n last: 'Último'\r\n }\r\n };\r\n\r\n public first: string;\r\n public previous: string;\r\n public next: string;\r\n public last: string;\r\n\r\n public showPagination = false;\r\n public hidePrevious = false;\r\n public lastPage = false;\r\n public totalPages = 0;\r\n public displayNextEllipsis = false;\r\n public displayPreviousEllipsis = false;\r\n\r\n public pages: number[] = [];\r\n\r\n @Output() goToPage = new EventEmitter<number>();\r\n @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n /** Current page, total items and items to show per page */\r\n private paginationInfoValue: PaginationInfo;\r\n\r\n private _lang: string;\r\n @Input()\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n this.loadLanguage();\r\n }\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n\r\n @Input()\r\n set paginationInfo(value: PaginationInfo) {\r\n this.paginationInfoValue = value;\r\n this.syncState();\r\n }\r\n get paginationInfo(): PaginationInfo {\r\n return this.paginationInfoValue;\r\n }\r\n\r\n constructor() {\r\n this.lang = languageDetector();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.calculatePages();\r\n }\r\n\r\n pageSizeChanged(pageSize: number): void {\r\n this.paginationInfo.pageSize = pageSize;\r\n this.syncState();\r\n this.pageSizeChange.emit(pageSize);\r\n }\r\n\r\n onPage(n: number): void {\r\n this.goToPage.emit(n);\r\n }\r\n\r\n onFirst(): void {\r\n this.goToPage.emit(0);\r\n }\r\n\r\n onLast(): void {\r\n this.goToPage.emit(this.totalPages - 1);\r\n }\r\n onNext(): void {\r\n const page = (this.paginationInfo.page || 0) + 1;\r\n this.goToPage.emit(page);\r\n }\r\n onPrevious(): void {\r\n const page = (this.paginationInfo.page || 0) - 1;\r\n this.goToPage.emit(page);\r\n }\r\n\r\n private syncState(): void {\r\n this.pages = this.calculatePages();\r\n\r\n this.showPagination =\r\n this.paginationInfo.total > this.paginationInfo.pageSize;\r\n this.hidePrevious = this.paginationInfo.page === 0;\r\n this.lastPage =\r\n this.paginationInfo.pageSize * (this.paginationInfo.page + 1) >=\r\n this.paginationInfo.total;\r\n this.totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) || 0;\r\n this.displayNextEllipsis = !this.pages.includes(this.totalPages - 1);\r\n this.displayPreviousEllipsis = !this.pages.includes(0);\r\n }\r\n\r\n private calculatePages(): number[] {\r\n const totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) - 1; // 0-index\r\n const p = this.paginationInfo.page || 0;\r\n const pagesToShow = this.paginationInfo.pagesToShow;\r\n const pages: number[] = [];\r\n pages.push(p);\r\n const times = pagesToShow - 1;\r\n for (let i = 0; i < times; i++) {\r\n if (pages.length < pagesToShow) {\r\n if (Math.min(...pages) > 0) {\r\n pages.unshift(Math.min(...pages) - 1);\r\n }\r\n }\r\n if (pages.length < pagesToShow) {\r\n if (Math.max(...pages) < totalPages) {\r\n pages.push(Math.max(...pages) + 1);\r\n }\r\n }\r\n }\r\n pages.sort((a, b) => a - b);\r\n return pages;\r\n }\r\n\r\n private loadLanguage(): void {\r\n const l = this.literals[this.lang];\r\n this.first = l.first;\r\n this.previous = l.previous;\r\n this.next = l.next;\r\n this.last = l.last;\r\n }\r\n}\r\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\n\nexport interface RadioItem {\n name?: string;\n label: string;\n value: any;\n}\n\n@Component({\n selector: 'lux-radiogroup',\n templateUrl: './radiogroup.component.html',\n styleUrls: ['./radiogroup.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n }\n ]\n})\nexport class RadiogroupComponent implements ControlValueAccessor, Validator {\n private touched = false;\n\n @Input() name = 'radiogroup1';\n @Input() public disabled: boolean | null = false;\n @Input() public readonly: boolean | null = false;\n @Input() public required: boolean | null = false;\n\n @Input()\n set items(col: RadioItem[]) {\n this._items = (col || []).map((it, index) =>\n this.ensureHasUniqueName(it, index)\n );\n this.itemsChange.emit(col);\n }\n get items(): RadioItem[] {\n return this._items;\n }\n @Output() itemsChange = new EventEmitter<RadioItem[]>();\n\n @Input()\n set value(v: any) {\n if (v === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n\n private _value: any = undefined;\n private _items: RadioItem[] = [];\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n setValue(event: MouseEvent, item: RadioItem): void {\n if (!this.disabled && !this.readonly) {\n this.value = item.value;\n this.markAsTouched();\n }\n event.preventDefault();\n }\n ensureHasUniqueName(item: RadioItem, index: number): RadioItem {\n if (!item.name) {\n item.name = `${this.name}_${index}`;\n }\n return item;\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n forwardRef\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nlet sequencer = 0;\n\n@Component({\n selector: 'lux-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n }\n ]\n})\nexport class SelectComponent implements ControlValueAccessor, Validator {\n @Input() id = 'stringList' + sequencer++;\n @Input() disabled = false;\n @Input() required = false;\n /** Allow multiple elements */\n @Input() multiple = true;\n @Input() value: string[] = [];\n @Output() valueChange = new EventEmitter<string[]>();\n @Input() placeholder = 'Add new';\n /** If set, check there is no duplicates in the data. */\n @Input() unique = true;\n /** Validation function for new items. Returns error or null if valid */\n @Input() validateItem: (item: string) => string = (_) => null;\n\n newEntry = '';\n error = null;\n isValidNewEntry = false;\n\n private touched = false;\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n get canAdd(): boolean {\n return this.multiple || this.value.length === 0;\n }\n add(val: string): void {\n this.value.push(val);\n this.newEntry = '';\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n remove(index: number): void {\n if (this.value.length > index) {\n this.value.splice(index, 1);\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n if (event.key === 'Enter' && !this.error && this.newEntry !== '') {\n // Add on pressing Enter/Return\n this.markAsTouched();\n this.add(this.newEntry);\n }\n }\n onChangeNewEntry(newValue: string): void {\n this.markAsTouched();\n if (!newValue) {\n this.isValidNewEntry = false;\n this.error = null;\n return;\n }\n if (this.unique) {\n const found = (this.value || []).find((it) => it === newValue);\n this.isValidNewEntry = !found;\n this.error = found\n ? `Value '${newValue}' is already in. Cannot add duplicates.`\n : null;\n if (!this.isValidNewEntry) {\n return;\n }\n }\n this.error = this.validateItem(newValue);\n this.isValidNewEntry = !this.error;\n }\n}\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[luxVoiceRecognition]'\n})\nexport class VoiceRecognitionDirective implements OnInit {\n @Input() language: string;\n // See API at: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition\n private recognition: any;\n private isRecognizing = false;\n private mic: any;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n const speechRecognition = (window as any).webkitSpeechRecognition;\n if (speechRecognition) {\n this.recognition = new speechRecognition();\n }\n }\n\n ngOnInit(): void {\n if (this.recognition) {\n // API is available\n this.recognition.lang = this.language || window.navigator.language;\n this.recognition.interimResults = false;\n this.recognition.maxAlternatives = 1;\n\n // Add mic icon\n this.mic = document.createElement('div');\n this.mic.setAttribute('class', 'lux-microphone');\n\n const parent = this.el.nativeElement.parentElement;\n parent.appendChild(this.mic);\n\n // Add event handlers\n this.mic.onclick = (): void => this.microphoneClick();\n this.recognition.onresult = (event): void => this.onRecognized(event);\n }\n }\n\n microphoneClick(): void {\n if (this.isRecognizing) {\n // stop\n this.isRecognizing = false;\n this.renderer.removeClass(this.mic, 'lux-recording');\n this.recognition.abort();\n } else {\n // start\n this.el.nativeElement.value = getRecordingMessage(this.language);\n this.isRecognizing = true;\n this.renderer.addClass(this.mic, 'lux-recording');\n this.recognition.start();\n }\n }\n onRecognized(event: any): void {\n const recognizedText = event.results[0][0].transcript;\n this.isRecognizing = false;\n this.el.nativeElement.value = recognizedText;\n this.renderer.removeClass(this.mic, 'lux-recording');\n }\n}\n\nconst getRecordingMessage = (lang: string): string => {\n switch (lang.toLowerCase()) {\n case 'es':\n case 'es-es':\n return 'Grabando...';\n case 'en':\n case 'en-uk':\n case 'en-us':\n default:\n return 'Recording...';\n }\n};\n","\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { ClassProvider, FactoryProvider, InjectionToken, PLATFORM_ID } from '@angular/core';\n\n/* Create a new injection token for injecting the window into a component. */\nexport const WINDOW = new InjectionToken('WindowToken');\n\n/* Define abstract class for obtaining reference to the global window object. */\nexport abstract class WindowRef {\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n throw new Error('Not implemented.');\n }\n\n}\n\n/* Define class that implements the abstract class and returns the native window object. */\nexport class BrowserWindowRef extends WindowRef {\n\n constructor() {\n super();\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n return window;\n }\n\n}\n\n/* Create an factory function that returns the native window object. */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const windowFactory = (browserWindowRef: BrowserWindowRef, platformId: Object): Window | Object => {\n if (isPlatformBrowser(platformId)) {\n return browserWindowRef.nativeWindow;\n }\n return new Object();\n};\n\n/* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */\nconst browserWindowProvider: ClassProvider = {\n provide: WindowRef,\n useClass: BrowserWindowRef\n};\n\n/* Create an injectable provider that uses the windowFactory function for returning the native window object. */\nconst windowProvider: FactoryProvider = {\n provide: WINDOW,\n useFactory: windowFactory,\n deps: [ WindowRef, PLATFORM_ID ]\n};\n\n/* Create an array of providers. */\nexport const WINDOW_PROVIDERS = [\n browserWindowProvider,\n windowProvider\n];\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { AngularResizedEventModule } from 'angular-resize-event';\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { AutocompleteListComponent } from './autocomplete-list/autocomplete-list.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { InputComponent } from './input/input.component';\nimport { FilterComponent } from './filter/filter.component';\nimport { GeolocationComponent } from './geolocation/geolocation.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LuxTooltipDirective } from './tooltip/tooltip.directive';\nimport { LuxBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { LuxModalWindowComponent } from './modal/modal-window';\nimport { LuxModalBackdropComponent } from './modal/modal-backdrop';\nimport { MapComponent } from './map/map.component';\nimport { ModalService } from './modal/modal.service';\nimport { PaginationComponent } from './pagination/pagination.component';\nimport { RadiogroupComponent } from './radiogroup/radiogroup.component';\nimport { SelectComponent } from './select/select.component';\nimport { TooltipComponent } from './tooltip/tooltip.component';\nimport { TooltipService } from './tooltip/tooltip.service';\nimport { VoiceRecognitionDirective } from './voice-recognition/voice-recognition.directive';\nimport { WINDOW_PROVIDERS } from './window/window.service';\n\n@NgModule({\n declarations: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n TooltipComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ],\n entryComponents: [\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n TooltipComponent\n ],\n providers: [ModalService, TooltipService, WINDOW_PROVIDERS],\n imports: [\n AngularResizedEventModule,\n FormsModule,\n HttpClientModule,\n ReactiveFormsModule,\n RouterModule,\n CommonModule\n ],\n exports: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxBreadcrumbComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ]\n})\nexport class LuxModule {}\n","/*\n * Public API Surface of lux\n */\n\nexport { LuxModule } from './lib/lux.module';\nexport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from './lib/datasource';\nexport { AutocompleteComponent } from './lib/autocomplete/autocomplete.component';\nexport { AutocompleteListComponent } from './lib/autocomplete-list/autocomplete-list.component';\nexport {\n LuxBreadcrumbComponent,\n BreadcrumbItem\n} from './lib/breadcrumb/breadcrumb.component';\nexport { CheckboxComponent } from './lib/checkbox/checkbox.component';\nexport { FilterComponent } from './lib/filter/filter.component';\nexport { InputComponent } from './lib/input/input.component';\nexport { PaginationComponent } from './lib/pagination/pagination.component';\nexport { LuxTooltipDirective } from './lib/tooltip/tooltip.directive';\nexport { ModalService } from './lib/modal/modal.service';\nexport {\n RadioItem,\n RadiogroupComponent\n} from './lib/radiogroup/radiogroup.component';\nexport { ModalRef } from './lib/modal/modal-ref';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {GeolocationComponent as ɵa} from './lib/geolocation/geolocation.component';\nexport {GeolocationService as ɵd} from './lib/geolocation/geolocation.service';\nexport {OpenLayerLoaderService as ɵi} from './lib/geolocation/openlayer-loader.service';\nexport {MapComponent as ɵh} from './lib/map/map.component';\nexport {LuxModalBackdropComponent as ɵg} from './lib/modal/modal-backdrop';\nexport {LuxModalConfig as ɵc} from './lib/modal/modal-config';\nexport {ModalStack as ɵb} from './lib/modal/modal-stack';\nexport {LuxModalWindowComponent as ɵf} from './lib/modal/modal-window';\nexport {ContentRef as ɵr} from './lib/modal/util';\nexport {SelectComponent as ɵj} from './lib/select/select.component';\nexport {TooltipComponent as ɵk} from './lib/tooltip/tooltip.component';\nexport {TooltipService as ɵe} from './lib/tooltip/tooltip.service';\nexport {VoiceRecognitionDirective as ɵl} from './lib/voice-recognition/voice-recognition.directive';\nexport {BrowserWindowRef as ɵo,WINDOW as ɵm,WINDOW_PROVIDERS as ɵq,WindowRef as ɵn,windowFactory as ɵp} from './lib/window/window.service';"],"names":["EventEmitter","debounceTime","first","of","map","Component","NG_VALUE_ACCESSOR","forwardRef","NG_VALIDATORS","ChangeDetectorRef","ViewChild","Output","Input","Subject","fromEvent","takeUntil","filter","withLatestFrom","Inject","DOCUMENT","ElementRef","HostBinding","HostListener","Injectable","TemplateRef","ApplicationRef","Injector","RendererFactory2","ComponentFactoryResolver","distinctUntilChanged","switchMap","HttpClient","Directive","NavigationEnd","Router","ActivatedRoute","from","BehaviorSubject","Renderer2","InjectionToken","isPlatformBrowser","PLATFORM_ID","NgModule","AngularResizedEventModule","FormsModule","HttpClientModule","ReactiveFormsModule","RouterModule","CommonModule"],"mappings":"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"}
|
|
@@ -220,6 +220,9 @@ export class InputComponent {
|
|
|
220
220
|
? this.inputId
|
|
221
221
|
: `${this.type}$${InputComponent.idCounter++}`;
|
|
222
222
|
}
|
|
223
|
+
onLostFocus() {
|
|
224
|
+
this.markAsTouched();
|
|
225
|
+
}
|
|
223
226
|
onKeyUp(newValue) {
|
|
224
227
|
this.value = newValue;
|
|
225
228
|
}
|
|
@@ -312,7 +315,7 @@ InputComponent.idCounter = 0;
|
|
|
312
315
|
InputComponent.decorators = [
|
|
313
316
|
{ type: Component, args: [{
|
|
314
317
|
selector: 'lux-input',
|
|
315
|
-
template: "<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min?.toString() || undefined\"\n [attr.max]=\"max?.toString() || undefined\"\n [attr.step]=\"step?.toString() || undefined\"\n [attr.pattern]=\"pattern || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols?.toString() || undefined\"\n [attr.rows]=\"rows?.toString() || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix\">\n <span>\u20AC</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix\">\n <span>\u2030</span>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n",
|
|
318
|
+
template: "<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min?.toString() || undefined\"\n [attr.max]=\"max?.toString() || undefined\"\n [attr.step]=\"step?.toString() || undefined\"\n [attr.pattern]=\"pattern || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols?.toString() || undefined\"\n [attr.rows]=\"rows?.toString() || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix\">\n <span>\u20AC</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix\">\n <span>\u2030</span>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n",
|
|
316
319
|
providers: [
|
|
317
320
|
{
|
|
318
321
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -352,4 +355,4 @@ InputComponent.propDecorators = {
|
|
|
352
355
|
valueChange: [{ type: Output }],
|
|
353
356
|
keyPress: [{ type: Output }]
|
|
354
357
|
};
|
|
355
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvaW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGlCQUFpQixFQUtqQixhQUFhLEVBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osYUFBYSxFQUNiLGFBQWEsRUFDZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFrQjNDLE1BQU0sT0FBTyxjQUFjO0lBcUp6QjtRQS9JQSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxlQUFVLEdBQTRCLElBQUksQ0FBQztRQUduQyxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBR2pCLGFBQVEsR0FBWSxTQUFTLENBQUM7UUFDOUIsWUFBTyxHQUFZLFNBQVMsQ0FBQztRQUk5QixlQUFVLEdBQUc7WUFDbEIsRUFBRSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLEdBQUcsRUFBRSx3QkFBd0I7Z0JBQzdCLEdBQUcsRUFBRSx3QkFBd0I7Z0JBQzdCLEtBQUssRUFBRSwwQ0FBMEM7YUFDbEQ7WUFDRCxFQUFFLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsR0FBRyxFQUFFLDBCQUEwQjtnQkFDL0IsR0FBRyxFQUFFLDBCQUEwQjtnQkFDL0IsS0FBSyxFQUFFLDBEQUEwRDthQUNsRTtTQUNGLENBQUM7UUFrQk8sU0FBSSxHQUFHLGdC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LEVBQUUsSUFBSTt3QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQztxQkFDOUM7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLEtBQUssRUFBRSxJQUFJO3dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO3FCQUM5QztpQkFDRjs7YUFDRjs7OztvQkFJRSxTQUFTLFNBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTt1QkFDcEMsU0FBUyxTQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7bUJBK0J2QyxLQUFLO21CQUVMLEtBQUs7bUJBRUwsS0FBSztrQkFFTCxLQUFLO2tCQUVMLEtBQUs7bUJBT0wsS0FBSzsyQkFDTCxLQUFLO3NCQUNMLEtBQUs7d0JBQ0wsS0FBSyxTQUFDLFlBQVk7dUJBQ2xCLEtBQUs7dUJBRUwsS0FBSztzQkFTTCxLQUFLO3VCQWtCTCxLQUFLOzBCQVFMLEtBQUs7dUJBUUwsS0FBSzttQkFRTCxLQUFLO29CQVVMLEtBQUs7MEJBMEJMLE1BQU07dUJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgQWJzdHJhY3RDb250cm9sLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgaGFzVmFsdWUsXG4gIGlzSW5pdGlhbEFuZEVtcHR5LFxuICBpc1ZhbGlkRW1haWwsXG4gIGlzVmFsaWROdW1iZXIsXG4gIG5vcm1hbGl6ZURhdGVcbn0gZnJvbSAnLi4vaGVscGVyRm5zJztcbmltcG9ydCB7IGxhbmd1YWdlRGV0ZWN0b3IgfSBmcm9tICcuLi9sYW5nJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x1eC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2lucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dENvbXBvbmVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0Q29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIHN0YXRpYyBpZENvdW50ZXIgPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0ZXh0YXJlYScsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZXh0YXJlYTogRWxlbWVudFJlZjtcblxuICB0b3VjaGVkID0gZmFsc2U7XG4gIGRpcnR5ID0gZmFsc2U7XG4gIGxhc3RFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9kaXNhYmxlZDogc3RyaW5nIHwgYm9vbGVhbjtcbiAgcHJpdmF0ZSBfdmFsdWU6IGFueSA9ICcnO1xuICBwcml2YXRlIF90eXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX3BhdHRlcm4/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX3JlZ2V4cD86IFJlZ0V4cCA9IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfY3VycmVuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIHVzZXJFcnJvcnMgPSB7XG4gICAgZW46IHtcbiAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQgZmllbGQuJyxcbiAgICAgIG1pbjogJ01pbmltdW0gdmFsdWUgaXMgJG1pbi4nLFxuICAgICAgbWF4OiAnTWF4aW11bSB2YWx1ZSBpcyAkbWF4LicsXG4gICAgICBlbWFpbDogJ0Zvcm1hdCBzaG91bGQgbWF0Y2ggZXhhbXBsZUBleGFtcGxlLmNvbS4nXG4gICAgfSxcbiAgICBlczoge1xuICAgICAgcmVxdWlyZWQ6ICdFbCBjYW1wbyBlcyBvYmxpZ2F0b3Jpby4nLFxuICAgICAgbWluOiAnRWwgdmFsb3IgbcOtbmltbyBlcyAkbWluLicsXG4gICAgICBtYXg6ICdFbCB2YWxvciBtw6F4aW1vIGVzICRtYXguJyxcbiAgICAgIGVtYWlsOiAnRWwgY2FtcG8gZGViZSB0ZW5lciB1biBmb3JtYXRvIGNvbW8gZWplbXBsb0BlamVtcGxvLmNvbS4nXG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyBkb21haW46IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIHJvd3M/OiBudW1iZXIgfCBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb2xzPzogbnVtYmVyIHwgc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RlcD86IG51bWJlcjtcbiAgQElucHV0KClcbiAgcHVibGljIG1pbj86IG51bWJlciB8IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIG1heD86IG51bWJlciB8IHN0cmluZztcblxuICBnZXQgY2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tDbGFzc05hbWUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGxhbmcgPSBsYW5ndWFnZURldGVjdG9yKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbmxpbmVFcnJvcnMgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlucHV0SWQ6IHN0cmluZztcbiAgQElucHV0KCdhcmlhLWxhYmVsJykgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQodjogc3RyaW5nIHwgYm9vbGVhbikge1xuICAgIHYgPSB0eXBlb2YgdiA9PT0gJ3N0cmluZycgPyB0cnVlIDogdjtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHY7XG4gIH1cbiAgZ2V0IGRpc2FibGVkKCk6IHN0cmluZyB8IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwYXR0ZXJuKHA6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3BhdHRlcm4gPSBwO1xuICAgIGlmIChwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3JlZ2V4cCA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fcmVnZXhwID0gbmV3IFJlZ0V4cChwKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5fcGF0dGVybiA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5fcmVnZXhwID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBnZXQgcGF0dGVybigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wYXR0ZXJuO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGN1cnJlbmN5KHY6IHN0cmluZykge1xuICAgIHRoaXMuX2N1cnJlbmN5ID0gdi50b1VwcGVyQ2FzZSgpO1xuICB9XG4gIGdldCBjdXJyZW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwbGFjZWhvbGRlcih2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHY7XG4gIH1cbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyID8gdGhpcy5fcGxhY2Vob2xkZXIgOiAnJztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCByZXF1aXJlZCh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2O1xuICB9XG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgdHlwZSh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90eXBlID0gdi50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuZG9tYWluID0gdi50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuY2hlY2tUeXBlKHYpO1xuICB9XG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGUgPyB0aGlzLl90eXBlIDogJ3RleHQnO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIHYgPSB2ID09PSB1bmRlZmluZWQgPyBudWxsIDogdjtcbiAgICBpZiAodiA9PT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHJldHVybjsgLy8gcHJldmVudCBldmVudHMgd2hlbiB0aGVyZSBpcyBubyBjaGFuZ2VzXG4gICAgfVxuICAgIGNvbnN0IGluaXRpYWxBbmRFbXB0eSA9IGlzSW5pdGlhbEFuZEVtcHR5KHRoaXMuX3ZhbHVlLCB2KTtcbiAgICBpZiAodGhpcy50eXBlID09PSAnZGF0ZScpIHtcbiAgICAgIHYgPSBub3JtYWxpemVEYXRlKHYpO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICB0aGlzLm9uQ2hhbmdlKHYpO1xuICAgIGlmICghaW5pdGlhbEFuZEVtcHR5KSB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XG4gICAgfVxuICB9XG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIGlmICh0aGlzLmlzUGVyY2VudGFnZSgpIHx8IHRoaXMuaXNQZXJtaWxsYWdlKCkgfHwgdGhpcy5pc051bWJlcigpKSB7XG4gICAgICBjb25zdCBudW1WYWwgPSBwYXJzZUZsb2F0KHRoaXMuX3ZhbHVlKTtcbiAgICAgIGlmICghTnVtYmVyLmlzTmFOKG51bVZhbCkpIHtcbiAgICAgICAgcmV0dXJuIG51bVZhbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkga2V5UHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgb25DaGFuZ2UgPSAodmFsdWUpOiB2b2lkID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnNldFZhbHVlSW5Db250cm9sKHZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gIH1cblxuICBtYXJrQXNUb3VjaGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG4gIC8vIEVuZCBvZiBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cblxuICBwcml2YXRlIHNldFZhbHVlSW5Db250cm9sKHY6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRvbWFpbiA9PT0gJ2RhdGUnKSB7XG4gICAgICB2ID0gbm9ybWFsaXplRGF0ZSh2KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHY7XG4gICAgfVxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XG4gICAgICB0aGlzLnRleHRhcmVhLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2O1xuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSgpOiB2b2lkIHt9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICBsZXQgcmVzdWx0OiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAhaGFzVmFsdWUoaGFzVmFsdWUpKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHQucmVxdWlyZWQgPSB7IHZhbHVlLCByZWFzb246ICdSZXF1aXJlZCBmaWVsZC4nIH07XG4gICAgfVxuICAgIGlmICh0aGlzLl9yZWdleHAgJiYgaGFzVmFsdWUodmFsdWUpICYmICF0aGlzLl9yZWdleHAudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5wYXR0ZXJuID0ge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcmVhc29uOiBgVmFsdWUgbXVzdCBmb2xsb3cgdGhlIHBhdHRlcm46ICR7dGhpcy5fcGF0dGVybn1gXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSAnZW1haWwnICYmIGhhc1ZhbHVlKHZhbHVlKSAmJiAhaXNWYWxpZEVtYWlsKHZhbHVlKSkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgcmVzdWx0LmVtYWlsID0geyB2YWx1ZSwgcmVhc29uOiAnSW52YWxpZCBlbWFpbC4nIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdudW1iZXInICYmIGhhc1ZhbHVlKHZhbHVlKSAmJiAhaXNWYWxpZE51bWJlcih2YWx1ZSkpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5udW1lcmljID0geyB2YWx1ZSwgcmVhc29uOiAnSW52YWxpZCBudW1iZXIuJyB9O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnR5cGUgPT09ICdkYXRlJyB8fFxuICAgICAgdGhpcy50eXBlID09PSAndGltZScgfHxcbiAgICAgIHRoaXMudHlwZSA9PT0gJ3RpbWVzdGFtcCdcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHRoaXMubWluID09PSAnc3RyaW5nJyAmJlxuICAgICAgICBoYXNWYWx1ZSh2YWx1ZSkgJiZcbiAgICAgICAgU3RyaW5nKHZhbHVlKS5sb2NhbGVDb21wYXJlKHRoaXMubWluKSA9PT0gLTFcbiAgICAgICkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICAgIHJlc3VsdC5taW4gPSB7XG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgbWluOiB0aGlzLm1pbixcbiAgICAgICAgICByZWFzb246IGBWYWx1ZSBpcyBsb3dlciB0aGFuIG1pbmltdW0gdmFsdWU6ICR7dGhpcy5taW59LmBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHRoaXMubWF4ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICBoYXNWYWx1ZSh2YWx1ZSkgJiZcbiAgICAgICAgU3RyaW5nKHZhbHVlKS5sb2NhbGVDb21wYXJlKHRoaXMubWF4KSAhPT0gLTFcbiAgICAgICkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICAgIHJlc3VsdC5tYXggPSB7XG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgbWF4OiB0aGlzLm1heCxcbiAgICAgICAgICByZWFzb246IGBWYWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhhbiBtYXhpbXVtIHZhbHVlOiAke3RoaXMubWF4fS5gXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy50eXBlID09PSAncGVyY2VudGFnZScgfHxcbiAgICAgIHRoaXMudHlwZSA9PT0gJ3Blcm1pbGxhZ2UnIHx8XG4gICAgICB0aGlzLnR5cGUgPT09ICdudW1iZXInIHx8XG4gICAgICB0aGlzLnR5cGUgPT09ICdjdXJyZW5jeSdcbiAgICApIHtcbiAgICAgIGlmIChoYXNWYWx1ZSh0aGlzLm1pbikgJiYgaGFzVmFsdWUodmFsdWUpICYmIHZhbHVlIDwgK3RoaXMubWluKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgICAgcmVzdWx0Lm1pbiA9IHtcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBtaW46IHRoaXMubWluLFxuICAgICAgICAgIHJlYXNvbjogYFZhbHVlIGlzIGxvd2VyIHRoYW4gbWluaW11bSB2YWx1ZTogJHt0aGlzLm1pbn0uYFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKGhhc1ZhbHVlKHRoaXMubWF4KSAmJiBoYXNWYWx1ZSh2YWx1ZSkgJiYgdmFsdWUgPiArdGhpcy5tYXgpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgICByZXN1bHQubWF4ID0ge1xuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICAgICAgcmVhc29uOiBgVmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoYW4gbWF4aW11bSB2YWx1ZTogJHt0aGlzLm1heH0uYFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxhc3RFcnJvcnMgPSByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvLyBFbmQgb2YgVmFsaWRhdG9yIGludGVyZmFjZVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRJZCA9IHRoaXMuaW5wdXRJZFxuICAgICAgPyB0aGlzLmlucHV0SWRcbiAgICAgIDogYCR7dGhpcy50eXBlfSQke0lucHV0Q29tcG9uZW50LmlkQ291bnRlcisrfWA7XG4gIH1cblxuICBvbktleVVwKG5ld1ZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gIH1cbiAgb25DaGFuZ2VWYWx1ZShuZXdWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgIHRoaXMubWFya0FzVG91Y2hlZCgpO1xuICB9XG4gIG9uS2V5UHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmtleVByZXNzLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgaXNOdW1iZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ251bWJlcic7XG4gIH1cbiAgaXNQZXJjZW50YWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdwZXJjZW50YWdlJztcbiAgfVxuICBpc1Blcm1pbGxhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ3Blcm1pbGxhZ2UnO1xuICB9XG5cbiAgY2hlY2tDbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuICdyZWFkb25seSc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNoZWNrVHlwZSh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgdGhpcy5zZXRFbWFpbFBhdHRlcm5zKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHRoaXMuc2V0RGF0ZVBhdHRlcm5zKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgIHRoaXMuc2V0VGltZVBhdHRlcm5zKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncGFzc3dvcmQnOlxuICAgICAgICB0aGlzLnNldFBhc3N3b3JkUGF0dGVybnMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICB0aGlzLnNldE51bWJlclBhdHRlcm5zKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICB0aGlzLnNldEN1cnJlbmN5UGF0dGVybnMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwZXJjZW50YWdlJzpcbiAgICAgICAgdGhpcy5zZXRQZXJjZW50YWdlUGF0dGVybnMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwZXJtaWxsYWdlJzpcbiAgICAgICAgdGhpcy5zZXRQZXJtaWxsYWdlUGF0dGVybnMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXRFbWFpbFBhdHRlcm5zKCk6IHZvaWQge31cblxuICBzZXREYXRlUGF0dGVybnMoKTogdm9pZCB7XG4gICAgdGhpcy5taW4gPSB0aGlzLm1pbiB8fCAnMTkwMC0wMS0wMSc7XG4gICAgdGhpcy5tYXggPSB0aGlzLm1heCB8fCAnMjEwMC0wMS0wMSc7XG4gIH1cblxuICBzZXRUaW1lUGF0dGVybnMoKTogdm9pZCB7fVxuXG4gIHNldFBhc3N3b3JkUGF0dGVybnMoKTogdm9pZCB7fVxuXG4gIHNldE51bWJlclBhdHRlcm5zKCk6IHZvaWQge1xuICAgIHRoaXMuZG9tYWluID0gJ251bWJlcic7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9ICcwJztcbiAgfVxuXG4gIHNldEN1cnJlbmN5UGF0dGVybnMoKTogdm9pZCB7XG4gICAgdGhpcy5kb21haW4gPSAnbnVtYmVyJztcbiAgICB0aGlzLnN0ZXAgPSB0aGlzLnN0ZXAgfHwgMC4xO1xuICAgIHRoaXMubWluID0gdGhpcy5taW4gfHwgMC4wO1xuICAgIHRoaXMubWF4ID0gdGhpcy5tYXggfHwgMTAwMDAuMDtcbiAgICB0aGlzLnZhbHVlID0gMC4wO1xuICB9XG5cbiAgc2V0UGVyY2VudGFnZVBhdHRlcm5zKCk6IHZvaWQge1xuICAgIHRoaXMuZG9tYWluID0gJ251bWJlcic7XG4gICAgdGhpcy5zdGVwID0gdGhpcy5zdGVwIHx8IDAuMDE7XG4gICAgdGhpcy5taW4gPSB0aGlzLm1pbiB8fCAwLjA7XG4gICAgdGhpcy5tYXggPSB0aGlzLm1heCB8fCAxMDAuMDtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gJzAuMDAnO1xuICB9XG5cbiAgc2V0UGVybWlsbGFnZVBhdHRlcm5zKCk6IHZvaWQge1xuICAgIHRoaXMuZG9tYWluID0gJ251bWJlcic7XG4gICAgdGhpcy5zdGVwID0gdGhpcy5zdGVwIHx8IDAuMDE7XG4gICAgdGhpcy5taW4gPSB0aGlzLm1pbiB8fCAwLjA7XG4gICAgdGhpcy5tYXggPSB0aGlzLm1heCB8fCAxMDAwLjA7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9ICcwLjAwJztcbiAgfVxufVxuIl19
|
|
358
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvaW5wdXQvaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGlCQUFpQixFQUtqQixhQUFhLEVBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osYUFBYSxFQUNiLGFBQWEsRUFDZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFrQjNDLE1BQU0sT0FBTyxjQUFjO0lBcUp6QjtRQS9JQSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxlQUFVLEdBQTRCLElBQUksQ0FBQztRQUduQyxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBR2pCLGFBQVEsR0FBWSxTQUFTLENBQUM7UUFDOUIsWUFBTyxHQUFZLFNBQVMsQ0FBQztRQUk5QixlQUFVLEdBQUc7WUFDbEIsRUFBRSxFQUFFO2dCQUNGLFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLEdBQUcsRUFBRSx3QkFBd0I7Z0JBQzdCLEdBQUcsRUFBRSx3QkFBd0I7Z0JBQzdCLEtBQUssRUFBRSwwQ0FBMEM7YUFDbEQ7WUFDRCxFQUFFLEVBQUU7Z0JBQ0YsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsR0FBRyxFQUFFLDBCQUEwQjtnQkFDL0IsR0FBRyxFQUFFLDBCQUEwQjtnQkFDL0IsS0FBSyxFQUFFLDBEQUEwRDthQUNsRTtTQUNGLENBQUM7UUFrQk8sU0FBSSxHQUFHLGdC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LFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixLQUFLLEVBQUUsSUFBSTt3QkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQztxQkFDOUM7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLEtBQUssRUFBRSxJQUFJO3dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO3FCQUM5QztpQkFDRjs7YUFDRjs7OztvQkFJRSxTQUFTLFNBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTt1QkFDcEMsU0FBUyxTQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7bUJBK0J2QyxLQUFLO21CQUVMLEtBQUs7bUJBRUwsS0FBSztrQkFFTCxLQUFLO2tCQUVMLEtBQUs7bUJBT0wsS0FBSzsyQkFDTCxLQUFLO3NCQUNMLEtBQUs7d0JBQ0wsS0FBSyxTQUFDLFlBQVk7dUJBQ2xCLEtBQUs7dUJBRUwsS0FBSztzQkFTTCxLQUFLO3VCQWtCTCxLQUFLOzBCQVFMLEtBQUs7dUJBUUwsS0FBSzttQkFRTCxLQUFLO29CQVVMLEtBQUs7MEJBMEJMLE1BQU07dUJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgQWJzdHJhY3RDb250cm9sLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgaGFzVmFsdWUsXG4gIGlzSW5pdGlhbEFuZEVtcHR5LFxuICBpc1ZhbGlkRW1haWwsXG4gIGlzVmFsaWROdW1iZXIsXG4gIG5vcm1hbGl6ZURhdGVcbn0gZnJvbSAnLi4vaGVscGVyRm5zJztcbmltcG9ydCB7IGxhbmd1YWdlRGV0ZWN0b3IgfSBmcm9tICcuLi9sYW5nJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x1eC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2lucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dENvbXBvbmVudClcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0Q29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIHN0YXRpYyBpZENvdW50ZXIgPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0ZXh0YXJlYScsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZXh0YXJlYTogRWxlbWVudFJlZjtcblxuICB0b3VjaGVkID0gZmFsc2U7XG4gIGRpcnR5ID0gZmFsc2U7XG4gIGxhc3RFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9kaXNhYmxlZDogc3RyaW5nIHwgYm9vbGVhbjtcbiAgcHJpdmF0ZSBfdmFsdWU6IGFueSA9ICcnO1xuICBwcml2YXRlIF90eXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHByaXZhdGUgX3BhdHRlcm4/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX3JlZ2V4cD86IFJlZ0V4cCA9IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfY3VycmVuY3k6IHN0cmluZztcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIHVzZXJFcnJvcnMgPSB7XG4gICAgZW46IHtcbiAgICAgIHJlcXVpcmVkOiAnUmVxdWlyZWQgZmllbGQuJyxcbiAgICAgIG1pbjogJ01pbmltdW0gdmFsdWUgaXMgJG1pbi4nLFxuICAgICAgbWF4OiAnTWF4aW11bSB2YWx1ZSBpcyAkbWF4LicsXG4gICAgICBlbWFpbDogJ0Zvcm1hdCBzaG91bGQgbWF0Y2ggZXhhbXBsZUBleGFtcGxlLmNvbS4nXG4gICAgfSxcbiAgICBlczoge1xuICAgICAgcmVxdWlyZWQ6ICdFbCBjYW1wbyBlcyBvYmxpZ2F0b3Jpby4nLFxuICAgICAgbWluOiAnRWwgdmFsb3IgbcOtbmltbyBlcyAkbWluLicsXG4gICAgICBtYXg6ICdFbCB2YWxvciBtw6F4aW1vIGVzICRtYXguJyxcbiAgICAgIGVtYWlsOiAnRWwgY2FtcG8gZGViZSB0ZW5lciB1biBmb3JtYXRvIGNvbW8gZWplbXBsb0BlamVtcGxvLmNvbS4nXG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyBkb21haW46IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIHJvd3M/OiBudW1iZXIgfCBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb2xzPzogbnVtYmVyIHwgc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RlcD86IG51bWJlcjtcbiAgQElucHV0KClcbiAgcHVibGljIG1pbj86IG51bWJlciB8IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIG1heD86IG51bWJlciB8IHN0cmluZztcblxuICBnZXQgY2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tDbGFzc05hbWUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGxhbmcgPSBsYW5ndWFnZURldGVjdG9yKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbmxpbmVFcnJvcnMgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlucHV0SWQ6IHN0cmluZztcbiAgQElucHV0KCdhcmlhLWxhYmVsJykgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQodjogc3RyaW5nIHwgYm9vbGVhbikge1xuICAgIHYgPSB0eXBlb2YgdiA9PT0gJ3N0cmluZycgPyB0cnVlIDogdjtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHY7XG4gIH1cbiAgZ2V0IGRpc2FibGVkKCk6IHN0cmluZyB8IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwYXR0ZXJuKHA6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3BhdHRlcm4gPSBwO1xuICAgIGlmIChwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3JlZ2V4cCA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5fcmVnZXhwID0gbmV3IFJlZ0V4cChwKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5fcGF0dGVybiA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5fcmVnZXhwID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBnZXQgcGF0dGVybigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wYXR0ZXJuO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGN1cnJlbmN5KHY6IHN0cmluZykge1xuICAgIHRoaXMuX2N1cnJlbmN5ID0gdi50b1VwcGVyQ2FzZSgpO1xuICB9XG4gIGdldCBjdXJyZW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwbGFjZWhvbGRlcih2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHY7XG4gIH1cbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyID8gdGhpcy5fcGxhY2Vob2xkZXIgOiAnJztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCByZXF1aXJlZCh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2O1xuICB9XG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgdHlwZSh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90eXBlID0gdi50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuZG9tYWluID0gdi50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuY2hlY2tUeXBlKHYpO1xuICB9XG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGUgPyB0aGlzLl90eXBlIDogJ3RleHQnO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIHYgPSB2ID09PSB1bmRlZmluZWQgPyBudWxsIDogdjtcbiAgICBpZiAodiA9PT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHJldHVybjsgLy8gcHJldmVudCBldmVudHMgd2hlbiB0aGVyZSBpcyBubyBjaGFuZ2VzXG4gICAgfVxuICAgIGNvbnN0IGluaXRpYWxBbmRFbXB0eSA9IGlzSW5pdGlhbEFuZEVtcHR5KHRoaXMuX3ZhbHVlLCB2KTtcbiAgICBpZiAodGhpcy50eXBlID09PSAnZGF0ZScpIHtcbiAgICAgIHYgPSBub3JtYWxpemVEYXRlKHYpO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICB0aGlzLm9uQ2hhbmdlKHYpO1xuICAgIGlmICghaW5pdGlhbEFuZEVtcHR5KSB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XG4gICAgfVxuICB9XG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIGlmICh0aGlzLmlzUGVyY2VudGFnZSgpIHx8IHRoaXMuaXNQZXJtaWxsYWdlKCkgfHwgdGhpcy5pc051bWJlcigpKSB7XG4gICAgICBjb25zdCBudW1WYWwgPSBwYXJzZUZsb2F0KHRoaXMuX3ZhbHVlKTtcbiAgICAgIGlmICghTnVtYmVyLmlzTmFOKG51bVZhbCkpIHtcbiAgICAgICAgcmV0dXJuIG51bVZhbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkga2V5UHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgb25DaGFuZ2UgPSAodmFsdWUpOiB2b2lkID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3IgSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnNldFZhbHVlSW5Db250cm9sKHZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gIH1cblxuICBtYXJrQXNUb3VjaGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50b3VjaGVkKSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG4gIC8vIEVuZCBvZiBDb250cm9sVmFsdWVBY2Nlc3NvciBJbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cblxuICBwcml2YXRlIHNldFZhbHVlSW5Db250cm9sKHY6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRvbWFpbiA9PT0gJ2RhdGUnKSB7XG4gICAgICB2ID0gbm9ybWFsaXplRGF0ZSh2KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHY7XG4gICAgfVxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XG4gICAgICB0aGlzLnRleHRhcmVhLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2O1xuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSgpOiB2b2lkIHt9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICBsZXQgcmVzdWx0OiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAhaGFzVmFsdWUoaGFzVmFsdWUpKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHQucmVxdWlyZWQgPSB7IHZhbHVlLCByZWFzb246ICdSZXF1aXJlZCBmaWVsZC4nIH07XG4gICAgfVxuICAgIGlmICh0aGlzLl9yZWdleHAgJiYgaGFzVmFsdWUodmFsdWUpICYmICF0aGlzLl9yZWdleHAudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5wYXR0ZXJuID0ge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcmVhc29uOiBgVmFsdWUgbXVzdCBmb2xsb3cgdGhlIHBhdHRlcm46ICR7dGhpcy5fcGF0dGVybn1gXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSAnZW1haWwnICYmIGhhc1ZhbHVlKHZhbHVlKSAmJiAhaXNWYWxpZEVtYWlsKHZhbHVlKSkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgcmVzdWx0LmVtYWlsID0geyB2YWx1ZSwgcmVhc29uOiAnSW52YWxpZCBlbWFpbC4nIH07XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdudW1iZXInICYmIGhhc1ZhbHVlKHZhbHVlKSAmJiAhaXNWYWxpZE51bWJlcih2YWx1ZSkpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgIHJlc3VsdC5udW1lcmljID0geyB2YWx1ZSwgcmVhc29uOiAnSW52YWxpZCBudW1iZXIuJyB9O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnR5cGUgPT09ICdkYXRlJyB8fFxuICAgICAgdGhpcy50eXBlID09PSAndGltZScgfHxcbiAgICAgIHRoaXMudHlwZSA9PT0gJ3RpbWVzdGFtcCdcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHRoaXMubWluID09PSAnc3RyaW5nJyAmJlxuICAgICAgICBoYXNWYWx1ZSh2YWx1ZSkgJiZcbiAgICAgICAgU3RyaW5nKHZhbHVlKS5sb2NhbGVDb21wYXJlKHRoaXMubWluKSA9PT0gLTFcbiAgICAgICkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICAgIHJlc3VsdC5taW4gPSB7XG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgbWluOiB0aGlzLm1pbixcbiAgICAgICAgICByZWFzb246IGBWYWx1ZSBpcyBsb3dlciB0aGFuIG1pbmltdW0gdmFsdWU6ICR7dGhpcy5taW59LmBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIHRoaXMubWF4ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICBoYXNWYWx1ZSh2YWx1ZSkgJiZcbiAgICAgICAgU3RyaW5nKHZhbHVlKS5sb2NhbGVDb21wYXJlKHRoaXMubWF4KSAhPT0gLTFcbiAgICAgICkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICAgIHJlc3VsdC5tYXggPSB7XG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgbWF4OiB0aGlzLm1heCxcbiAgICAgICAgICByZWFzb246IGBWYWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhhbiBtYXhpbXVtIHZhbHVlOiAke3RoaXMubWF4fS5gXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy50eXBlID09PSAncGVyY2VudGFnZScgfHxcbiAgICAgIHRoaXMudHlwZSA9PT0gJ3Blcm1pbGxhZ2UnIHx8XG4gICAgICB0aGlzLnR5cGUgPT09ICdudW1iZXInIHx8XG4gICAgICB0aGlzLnR5cGUgPT09ICdjdXJyZW5jeSdcbiAgICApIHtcbiAgICAgIGlmIChoYXNWYWx1ZSh0aGlzLm1pbikgJiYgaGFzVmFsdWUodmFsdWUpICYmIHZhbHVlIDwgK3RoaXMubWluKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCB7fTtcbiAgICAgICAgcmVzdWx0Lm1pbiA9IHtcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBtaW46IHRoaXMubWluLFxuICAgICAgICAgIHJlYXNvbjogYFZhbHVlIGlzIGxvd2VyIHRoYW4gbWluaW11bSB2YWx1ZTogJHt0aGlzLm1pbn0uYFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKGhhc1ZhbHVlKHRoaXMubWF4KSAmJiBoYXNWYWx1ZSh2YWx1ZSkgJiYgdmFsdWUgPiArdGhpcy5tYXgpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgICByZXN1bHQubWF4ID0ge1xuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICAgICAgcmVhc29uOiBgVmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoYW4gbWF4aW11bSB2YWx1ZTogJHt0aGlzLm1heH0uYFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxhc3RFcnJvcnMgPSByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvLyBFbmQgb2YgVmFsaWRhdG9yIGludGVyZmFjZVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRJZCA9IHRoaXMuaW5wdXRJZFxuICAgICAgPyB0aGlzLmlucHV0SWRcbiAgICAgIDogYCR7dGhpcy50eXBlfSQke0lucHV0Q29tcG9uZW50LmlkQ291bnRlcisrfWA7XG4gIH1cbiAgb25Mb3N0Rm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbiAgb25LZXlVcChuZXdWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9XG4gIG9uQ2hhbmdlVmFsdWUobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5rZXlQcmVzcy5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGlzTnVtYmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdudW1iZXInO1xuICB9XG4gIGlzUGVyY2VudGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSAncGVyY2VudGFnZSc7XG4gIH1cbiAgaXNQZXJtaWxsYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdwZXJtaWxsYWdlJztcbiAgfVxuXG4gIGNoZWNrQ2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiAncmVhZG9ubHknO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjaGVja1R5cGUodHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgIHRoaXMuc2V0RW1haWxQYXR0ZXJucygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICB0aGlzLnNldERhdGVQYXR0ZXJucygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgICB0aGlzLnNldFRpbWVQYXR0ZXJucygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Bhc3N3b3JkJzpcbiAgICAgICAgdGhpcy5zZXRQYXNzd29yZFBhdHRlcm5zKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgdGhpcy5zZXROdW1iZXJQYXR0ZXJucygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgdGhpcy5zZXRDdXJyZW5jeVBhdHRlcm5zKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncGVyY2VudGFnZSc6XG4gICAgICAgIHRoaXMuc2V0UGVyY2VudGFnZVBhdHRlcm5zKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncGVybWlsbGFnZSc6XG4gICAgICAgIHRoaXMuc2V0UGVybWlsbGFnZVBhdHRlcm5zKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc2V0RW1haWxQYXR0ZXJucygpOiB2b2lkIHt9XG5cbiAgc2V0RGF0ZVBhdHRlcm5zKCk6IHZvaWQge1xuICAgIHRoaXMubWluID0gdGhpcy5taW4gfHwgJzE5MDAtMDEtMDEnO1xuICAgIHRoaXMubWF4ID0gdGhpcy5tYXggfHwgJzIxMDAtMDEtMDEnO1xuICB9XG5cbiAgc2V0VGltZVBhdHRlcm5zKCk6IHZvaWQge31cblxuICBzZXRQYXNzd29yZFBhdHRlcm5zKCk6IHZvaWQge31cblxuICBzZXROdW1iZXJQYXR0ZXJucygpOiB2b2lkIHtcbiAgICB0aGlzLmRvbWFpbiA9ICdudW1iZXInO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSAnMCc7XG4gIH1cblxuICBzZXRDdXJyZW5jeVBhdHRlcm5zKCk6IHZvaWQge1xuICAgIHRoaXMuZG9tYWluID0gJ251bWJlcic7XG4gICAgdGhpcy5zdGVwID0gdGhpcy5zdGVwIHx8IDAuMTtcbiAgICB0aGlzLm1pbiA9IHRoaXMubWluIHx8IDAuMDtcbiAgICB0aGlzLm1heCA9IHRoaXMubWF4IHx8IDEwMDAwLjA7XG4gICAgdGhpcy52YWx1ZSA9IDAuMDtcbiAgfVxuXG4gIHNldFBlcmNlbnRhZ2VQYXR0ZXJucygpOiB2b2lkIHtcbiAgICB0aGlzLmRvbWFpbiA9ICdudW1iZXInO1xuICAgIHRoaXMuc3RlcCA9IHRoaXMuc3RlcCB8fCAwLjAxO1xuICAgIHRoaXMubWluID0gdGhpcy5taW4gfHwgMC4wO1xuICAgIHRoaXMubWF4ID0gdGhpcy5tYXggfHwgMTAwLjA7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9ICcwLjAwJztcbiAgfVxuXG4gIHNldFBlcm1pbGxhZ2VQYXR0ZXJucygpOiB2b2lkIHtcbiAgICB0aGlzLmRvbWFpbiA9ICdudW1iZXInO1xuICAgIHRoaXMuc3RlcCA9IHRoaXMuc3RlcCB8fCAwLjAxO1xuICAgIHRoaXMubWluID0gdGhpcy5taW4gfHwgMC4wO1xuICAgIHRoaXMubWF4ID0gdGhpcy5tYXggfHwgMTAwMC4wO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSAnMC4wMCc7XG4gIH1cbn1cbiJdfQ==
|
package/fesm2015/metadev-lux.js
CHANGED
|
@@ -1060,6 +1060,9 @@ class InputComponent {
|
|
|
1060
1060
|
? this.inputId
|
|
1061
1061
|
: `${this.type}$${InputComponent.idCounter++}`;
|
|
1062
1062
|
}
|
|
1063
|
+
onLostFocus() {
|
|
1064
|
+
this.markAsTouched();
|
|
1065
|
+
}
|
|
1063
1066
|
onKeyUp(newValue) {
|
|
1064
1067
|
this.value = newValue;
|
|
1065
1068
|
}
|
|
@@ -1152,7 +1155,7 @@ InputComponent.idCounter = 0;
|
|
|
1152
1155
|
InputComponent.decorators = [
|
|
1153
1156
|
{ type: Component, args: [{
|
|
1154
1157
|
selector: 'lux-input',
|
|
1155
|
-
template: "<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min?.toString() || undefined\"\n [attr.max]=\"max?.toString() || undefined\"\n [attr.step]=\"step?.toString() || undefined\"\n [attr.pattern]=\"pattern || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols?.toString() || undefined\"\n [attr.rows]=\"rows?.toString() || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix\">\n <span>\u20AC</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix\">\n <span>\u2030</span>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n",
|
|
1158
|
+
template: "<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min?.toString() || undefined\"\n [attr.max]=\"max?.toString() || undefined\"\n [attr.step]=\"step?.toString() || undefined\"\n [attr.pattern]=\"pattern || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols?.toString() || undefined\"\n [attr.rows]=\"rows?.toString() || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix\">\n <span>\u20AC</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix\">\n <span>\u2030</span>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n",
|
|
1156
1159
|
providers: [
|
|
1157
1160
|
{
|
|
1158
1161
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadev-lux.js","sources":["../../../projects/lux/src/lib/helperFns.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.ts","../../../projects/lux/src/lib/lang.ts","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.ts","../../../projects/lux/src/lib/checkbox/checkbox.component.ts","../../../projects/lux/src/lib/input/input.component.ts","../../../projects/lux/src/lib/filter/filter.component.ts","../../../projects/lux/src/lib/modal/modal-ref.ts","../../../projects/lux/src/lib/modal/util.ts","../../../projects/lux/src/lib/modal/modal-dismiss-reasons.ts","../../../projects/lux/src/lib/modal/modal-window.ts","../../../projects/lux/src/lib/modal/modal-backdrop.ts","../../../projects/lux/src/lib/modal/modal-config.ts","../../../projects/lux/src/lib/modal/modal-stack.ts","../../../projects/lux/src/lib/modal/modal.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.component.ts","../../../projects/lux/src/lib/tooltip/placement.ts","../../../projects/lux/src/lib/tooltip/tooltip.component.ts","../../../projects/lux/src/lib/tooltip/tooltop-content.ts","../../../projects/lux/src/lib/tooltip/tooltip.service.ts","../../../projects/lux/src/lib/tooltip/tooltip.directive.ts","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/lux/src/lib/geolocation/openlayer-loader.service.ts","../../../projects/lux/src/lib/map/map.component.ts","../../../projects/lux/src/lib/pagination/pagination.component.ts","../../../projects/lux/src/lib/radiogroup/radiogroup.component.ts","../../../projects/lux/src/lib/select/select.component.ts","../../../projects/lux/src/lib/voice-recognition/voice-recognition.directive.ts","../../../projects/lux/src/lib/window/window.service.ts","../../../projects/lux/src/lib/lux.module.ts","../../../projects/lux/src/public-api.ts","../../../projects/lux/src/metadev-lux.ts"],"sourcesContent":["// undefined and null functions\r\n\r\nexport const exists = (value: any): boolean =>\r\n value !== null && value !== undefined;\r\n\r\nexport const hasValue = (value: any): boolean =>\r\n exists(value) && (typeof value === 'string' ? !isEmptyString(value) : true);\r\n\r\n// string functions\r\n\r\nexport const isEmptyString = (value: string): boolean => value.trim() === '';\r\n\r\nexport const isValidEmail = (value: string): boolean => {\r\n const re =\r\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;\r\n return re.test(String(value).toLowerCase().trim());\r\n};\r\n\r\n// date functions\r\n\r\nexport const normalizeDate = (value: any): string => {\r\n if (typeof value === 'string' && value.length > 10) {\r\n return value.substr(0, 10);\r\n }\r\n return value ? value.toString() : null;\r\n};\r\n\r\n// number functions\r\n\r\nexport const isValidNumber = (\r\n value: string | number | undefined | null\r\n): boolean => (hasValue(value) ? !Number.isNaN(Number(value)) : false);\r\n\r\nexport const numberOfDecimalDigits = (\r\n x: number | string\r\n): number | undefined => {\r\n if (isValidNumber(x)) {\r\n const xString = String(Number(x));\r\n if (xString === 'Infinity') {\r\n return 0;\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return 0;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return 0;\r\n } else {\r\n return xString.length - indexOfDecimalPoint - 1;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const numberOfWholeDigits = (x: number | string): number | undefined => {\r\n if (isValidNumber(x)) {\r\n let xString = String(Number(x));\r\n if (xString.indexOf('-') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n if (xString === 'Infinity') {\r\n return Infinity;\r\n }\r\n if (xString.indexOf('0') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return Number(xString.slice(indexOfE + 1, xString.length)) + 1;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return xString.length;\r\n } else {\r\n return indexOfDecimalPoint;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const roundToMultipleOf = (x: number, modulo: number): number => {\r\n const moduloString = String(modulo);\r\n // approximates the result\r\n // prone to inexactitude because of floating point arithmetic\r\n const approximation = Math.round(x / modulo) * modulo;\r\n const approximationString = String(approximation);\r\n // remove useless decimals\r\n const uselessDecimalsInApproximation =\r\n numberOfDecimalDigits(approximationString) -\r\n numberOfDecimalDigits(moduloString);\r\n const resultString = approximationString.slice(\r\n 0,\r\n approximationString.length - uselessDecimalsInApproximation\r\n );\r\n return Number(resultString);\r\n};\r\n\r\n// other functions\r\n\r\nexport const isInitialAndEmpty = (\r\n previousValue: any,\r\n newValue: any\r\n): boolean => {\r\n const isPrevArray = Array.isArray(previousValue);\r\n const isNewArray = Array.isArray(newValue);\r\n return !(\r\n (isPrevArray ? previousValue.length !== 0 : Boolean(previousValue)) ||\r\n (isNewArray ? newValue.length !== 0 : Boolean(newValue))\r\n );\r\n};\r\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, first, map } from 'rxjs/operators';\n// Do not remove this import: needed in the template\nimport { ResizedEvent } from 'angular-resize-event';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\n\n@Component({\n selector: 'lux-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n }\n ]\n})\nexport class AutocompleteComponent\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('i0', { static: true }) i0: ElementRef;\n @ViewChild('completeDiv', { static: true }) completeDiv: ElementRef;\n\n private _dataSource: DataSource<any, string>;\n private _placeholder: string;\n private _value: any;\n\n showSpinner = false;\n touched = false;\n completionList: DecoratedDataSource = [];\n showCompletion = false;\n focusItem: DataSourceItem<any, string>;\n\n @Output() valueChange = new EventEmitter<any>();\n @Output() dataSourceChange = new EventEmitter<DataSource<any, string>>();\n\n @Input() public inputId: string;\n @Input() public disabled: boolean | null = null;\n @Input() public readonly: boolean | null = null;\n @Input() label = '';\n /** If canAddNewValues, user can type items not present in the data-source. */\n @Input() canAddNewValues = false;\n /** After cleaning the selection should the completion list remain open or closed:\n * false: (default) close on filters, to clean a filter and select all.\n * true: keep open (when the action most likely is to pick another one).\n */\n @Input() keepOpenAfterDelete = false;\n\n @Input()\n get value(): any {\n return this._value;\n }\n set value(v: any) {\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n this.completeLabel();\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n @Input()\n get dataSource(): DataSource<any, string> {\n return this._dataSource;\n }\n set dataSource(v: DataSource<any, string>) {\n this._dataSource = v;\n this.dataSourceChange.emit(v);\n }\n @Input() required = false;\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n keys: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n clear(): void {\n this.value = null;\n this.toggleCompletion(this.keepOpenAfterDelete, '');\n }\n\n private completeLabel(): void {\n if (this.value) {\n if (this.dataSource) {\n this.label = findLabelForId(this.dataSource, this.value) || '';\n } else if (this.instance && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, [this.value])\n .pipe(debounceTime(1), first())\n .subscribe((data) => {\n this.label = findLabelForId(data, this.value) || '';\n });\n }\n } else {\n this.label = '';\n }\n }\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteComponent.idCounter++}`;\n this.completeLabel();\n }\n ngAfterViewInit(): void {\n this.setSameWidth();\n }\n onInputResized(): void {\n this.setSameWidth();\n }\n private setSameWidth(): void {\n const width = this.i0.nativeElement.getBoundingClientRect().width;\n this.completeDiv.nativeElement.style.width = `${width}px`;\n }\n\n onKeydown(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Tab':\n if (label) {\n this.pickSelectionOrFirstMatch(label);\n }\n this.showCompletion = false;\n break;\n }\n this.markAsTouched();\n }\n onKeypress(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Intro':\n case 'Enter':\n this.pickSelectionOrFirstMatch(label);\n event.preventDefault();\n break;\n }\n this.markAsTouched();\n }\n onKeyup(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'PageDown':\n this.focusOnNext(5);\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.focusOnNext(1);\n event.preventDefault();\n break;\n case 'PageUp':\n this.focusOnPrevious(5);\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.focusOnPrevious(1);\n event.preventDefault();\n break;\n case 'Escape':\n this.complete(null);\n event.preventDefault();\n break;\n case 'Intro':\n case 'Enter':\n event.preventDefault();\n break;\n default:\n this.showCompletionList(label);\n // event.preventDefault();\n }\n this.markAsTouched();\n }\n private focusOnNext(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && list.length > index + offset\n ? list[index + offset]\n : list[list.length - 1];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n private focusOnPrevious(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && index > offset ? list[index - offset] : list[0];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n onLostFocus(): void {\n setTimeout(() => {\n this.toggleCompletion(false, null);\n }, 200);\n }\n complete(item: DataSourceItem<Record<string, unknown>, string>): void {\n if (item !== null) {\n this.value = item.key;\n this.label = item.label;\n } else {\n this.value = null;\n this.label = '';\n }\n this.toggleCompletion(false, null);\n this.markAsTouched();\n }\n toggleCompletion(show: boolean, label: string): void {\n if (show && !this.disabled) {\n this.showCompletionList(label);\n } else {\n this.showCompletion = false;\n if (this.canAddNewValues) {\n this.syncCustomValue(this.label);\n return;\n }\n }\n this.cd.markForCheck();\n }\n\n get selectedOption(): string {\n const index = this.completionList.findIndex(\n (i) => i.key === this.focusItem.key\n );\n if (index === -1 || !this.focusItem) {\n return null;\n }\n return `${this.inputId}_${index}`;\n }\n\n private ensureItemVisible(index: number): void {\n const target = this.completeDiv.nativeElement.querySelectorAll('li')[index];\n if (target) {\n target.scrollIntoView({ block: 'center' });\n }\n }\n private syncCustomValue(text: string): void {\n this.value = text;\n this.label = text;\n }\n private pickSelectionOrFirstMatch(text: string): void {\n if (this.canAddNewValues) {\n this.syncCustomValue(text);\n return;\n }\n if (this.focusItem && this.focusItem.label) {\n this.complete(this.focusItem);\n return;\n }\n const source = (text || '').trim();\n if (source === '') {\n this.showCompletion = false;\n return;\n }\n this.completionList = [];\n this.computeCompletionList(source).subscribe((suggestions) => {\n this.complete(\n suggestions && suggestions.length > 0 ? suggestions[0] : null\n );\n });\n }\n private showCompletionList(text: string): void {\n this.setSameWidth();\n const useSpinner = this.hasExternalDataSource();\n this.spinnerVisibility(useSpinner, true);\n setTimeout(() => {\n // for spinner to be shown\n this.computeCompletionList(text).subscribe({\n next: (cl) => {\n this.completionList = cl;\n this.focusItem =\n this.completionList.length > 0 ? this.completionList[0] : null;\n this.showCompletion = true;\n this.spinnerVisibility(useSpinner, false);\n },\n error: () => {\n this.spinnerVisibility(useSpinner, false);\n },\n complete: () => {\n this.spinnerVisibility(useSpinner, false);\n }\n });\n }, 1);\n }\n private spinnerVisibility(useSpinner: boolean, value: boolean): void {\n if (useSpinner) {\n this.showSpinner = value;\n }\n }\n private hasExternalDataSource(): boolean {\n return !this.dataSource && !!this.instance && !!this.populateFunction;\n }\n private computeCompletionList(text: string): Observable<DecoratedDataSource> {\n const searchText = (text || '').toLowerCase();\n if (this.dataSource) {\n const ds = (this.dataSource || [])\n .filter((it) => ignoreAccentsInclude(it.label, searchText))\n .sort((a, b) => a.label.localeCompare(b.label));\n return of(decorateDataSource(ds, searchText));\n } else if (this.instance && this.populateFunction) {\n return this.populateFunction(this.instance, searchText).pipe(\n debounceTime(1),\n first(),\n map((ds) => {\n ds.filter((it) => ignoreAccentsInclude(it.label, searchText)).sort(\n (a, b) => a.label.localeCompare(b.label)\n );\n return decorateDataSource(ds, searchText);\n })\n );\n } else {\n return of([]);\n }\n }\n}\n\n/** Returns true if text includes substring. No accents considered. Ignorecase */\nconst ignoreAccentsInclude = (text: string, substring: string): boolean => {\n text = normalizedString(text).toLowerCase();\n substring = normalizedString(substring).toLowerCase();\n return text.includes(substring);\n};\n\n/** Returns a normalized string with no accents: used for comparison */\nconst normalizedString = (a: string): string =>\n (a || '').normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n\nconst decorateDataSource = (\n dataSource: DataSource<any, string>,\n subString: string\n): DecoratedDataSource => dataSource.map((it) => decorateItem(it, subString));\n\nconst decorateItem = (\n item: DataSourceItem<any, string>,\n tx: string\n): DecoratedDataSourceItem => {\n const index = normalizedString(item.label)\n .toLowerCase()\n .indexOf(normalizedString(tx).toLowerCase());\n const labelPrefix = index === -1 ? item.label : item.label.substr(0, index);\n const labelMatch = index === -1 ? '' : item.label.substr(index, tx.length);\n const labelPostfix = index === -1 ? '' : item.label.substr(index + tx.length);\n const newItem: DecoratedDataSourceItem = {\n ...item,\n labelPrefix,\n labelMatch,\n labelPostfix\n };\n return newItem;\n};\n\nconst findLabelForId = (data: DataSource<any, string>, id: any): string => {\n const found = data.find((it) => it.key === id);\n return found ? found.label : null;\n};\n","/** Language detector based on Navigator preferences */\nexport const languageDetector = (): string => {\n const lang = navigator.language.split('-')[0];\n if (lang === 'es' || lang === 'en') {\n return lang;\n }\n return 'en'; // default\n};\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\nimport { DataSource } from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\n@Component({\n selector: 'lux-autocomplete-list',\n templateUrl: './autocomplete-list.component.html',\n styleUrls: ['./autocomplete-list.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n }\n ]\n})\nexport class AutocompleteListComponent\n implements ControlValueAccessor, Validator, OnInit\n{\n static idCounter = 0;\n\n @ViewChild('auto') auto!: AutocompleteListComponent;\n\n literals = {\n en: {\n placeholder: 'new item',\n deleteLabelTemplate: 'Delete <<label>>',\n addMessage: 'Add'\n },\n es: {\n placeholder: 'nuevo elemento',\n deleteLabelTemplate: 'Eliminar <<label>>',\n addMessage: 'Añadir'\n }\n };\n\n public internalDataSource: DataSource<any, string> = [];\n private autoPopulate = false;\n\n private _value: any[] = [];\n @Input()\n set value(val: any[]) {\n if (val === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, val);\n this._value = val;\n this.ensureLabelsForIds();\n this.populateWith('');\n this.onChange(this._value);\n if (!initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n }\n get value(): any[] {\n return this._value;\n }\n labels: string[] = [];\n newEntry: any;\n canAdd = false;\n touched = false;\n\n private _lang = languageDetector();\n @Input()\n get lang(): string {\n return this._lang;\n }\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n\n @Input() inputId: string;\n @Input() dataSource: DataSource<any, any> = [];\n @Input() placeholder?: string;\n @Input() disabled = false;\n @Input() deleteLabelTemplate?: string;\n @Input() addMessage?: string;\n @Input() required = false;\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n ids: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n @Output() valueChange = new EventEmitter<any[]>();\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteListComponent.idCounter++}`;\n this.autoPopulate =\n !!this.resolveLabelsFunction && !!this.populateFunction && this.instance;\n this.ensureLabelsForIds();\n }\n ensureLabelsForIds(): void {\n if (this.autoPopulate && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, this._value)\n .pipe(first())\n .subscribe((data) => {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = data.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n });\n } else if (this.dataSource) {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = this.dataSource.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n } else {\n this.labels = this._value.map((it) => (it ? it.toString() : '(unset)'));\n }\n }\n removeAt(index: number): void {\n if (this._value.length > index) {\n const key = this._value.splice(index, 1)[0];\n const label = this.labels.splice(index, 1)[0];\n this.internalDataSource.push({ key, label });\n }\n this.markAsTouched();\n }\n onValueChange(): void {\n this.updateCanAdd();\n }\n onNewEntryChange(event: KeyboardEvent, auto: AutocompleteComponent): void {\n if (event.key === 'Enter' && !!auto.value) {\n this.addNew(auto);\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n // todo\n } else {\n this.populateWith(auto.label + event.key);\n }\n this.updateCanAdd();\n }\n populateWith(searchText: string): void {\n if (this.autoPopulate && this.populateFunction && this.instance) {\n this.populateFunction(this.instance, searchText)\n .pipe(first())\n .subscribe((data) => {\n this.internalDataSource = data.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n });\n } else if (this.dataSource) {\n this.internalDataSource = this.dataSource.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n }\n }\n updateCanAdd(): void {\n this.canAdd =\n !this.disabled &&\n this.auto &&\n !!this.auto.value && // has value\n !this.value.find((it) => it === this.auto.value); // not already in\n }\n\n addNew(auto: AutocompleteComponent): void {\n this.value.push(auto.value);\n this.ensureLabelsForIds();\n this.newEntry = '';\n this.internalDataSource = this.internalDataSource.filter(\n (it) => !this._value.includes(it.key)\n );\n this.markAsTouched();\n }\n\n getDeleteMessage(label: string): string {\n return (\n this.deleteLabelTemplate ?? this.literals[this.lang].deleteLabelTemplate\n ).replace('<<label>>', label);\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n OnInit,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\nconst KEY_SPACE = ' ';\n\n@Component({\n selector: 'lux-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => CheckboxComponent)\n }\n ]\n})\nexport class CheckboxComponent\n implements ControlValueAccessor, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('ck', { static: false }) ck: ElementRef;\n\n private _lang = languageDetector();\n @Input()\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n get lang(): string {\n return this._lang;\n }\n private internalValue: boolean;\n @Input()\n get value(): boolean {\n return this.internalValue;\n }\n set value(v: boolean) {\n if (this.internalValue === v) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this.internalValue, v);\n this.internalValue = v;\n this.syncModel();\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n\n get tabindexValue(): string {\n return this.disabled ? null : '0';\n }\n\n @Input() label: string = null;\n @Input() name: string = null;\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(v: boolean) {\n if (v === this._disabled) {\n return;\n }\n this._disabled = v;\n this.syncModel();\n }\n @Input() inputId: string;\n\n literals = {\n en: {\n yesLabel: 'Yes',\n noLabel: 'No'\n },\n es: {\n yesLabel: 'Sí',\n noLabel: 'No'\n }\n };\n touched = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = !!value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.name || 'checkbox'}$${CheckboxComponent.idCounter++}`;\n }\n ngAfterViewInit(): void {\n this.syncModel();\n }\n\n clicked(): void {\n if (!this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n }\n }\n onKey(event: KeyboardEvent): void {\n if (event.key === KEY_SPACE && !this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n event.preventDefault();\n }\n }\n\n private syncModel(): void {\n if (this.ck) {\n this.ck.nativeElement.checked = this.internalValue;\n }\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n AbstractControl,\n ValidationErrors,\n Validator,\n NG_VALIDATORS\n} from '@angular/forms';\nimport {\n hasValue,\n isInitialAndEmpty,\n isValidEmail,\n isValidNumber,\n normalizeDate\n} from '../helperFns';\nimport { languageDetector } from '../lang';\n@Component({\n selector: 'lux-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n }\n ]\n})\nexport class InputComponent implements OnInit, ControlValueAccessor, Validator {\n static idCounter = 0;\n\n @ViewChild('input', { static: false }) input: ElementRef;\n @ViewChild('textarea', { static: false }) textarea: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _value: any = '';\n private _type: string;\n private _placeholder: string;\n private _pattern?: string = undefined;\n private _regexp?: RegExp = undefined;\n private _currency: string;\n private _required: boolean;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n min: 'Minimum value is $min.',\n max: 'Maximum value is $max.',\n email: 'Format should match example@example.com.'\n },\n es: {\n required: 'El campo es obligatorio.',\n min: 'El valor mínimo es $min.',\n max: 'El valor máximo es $max.',\n email: 'El campo debe tener un formato como ejemplo@ejemplo.com.'\n }\n };\n\n public domain: string;\n @Input()\n public rows?: number | string;\n @Input()\n public cols?: number | string;\n @Input()\n public step?: number;\n @Input()\n public min?: number | string;\n @Input()\n public max?: number | string;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set pattern(p: string | undefined) {\n this._pattern = p;\n if (p === undefined) {\n this._regexp = undefined;\n } else {\n try {\n this._regexp = new RegExp(p);\n } catch (e) {\n this._pattern = undefined;\n this._regexp = undefined;\n }\n }\n }\n get pattern(): string | undefined {\n return this._pattern;\n }\n\n @Input()\n set currency(v: string) {\n this._currency = v.toUpperCase();\n }\n get currency(): string {\n return this._currency;\n }\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set type(v: string) {\n this._type = v.toLowerCase();\n this.domain = v.toLowerCase();\n this.checkType(v);\n }\n get type(): string {\n return this._type ? this._type : 'text';\n }\n\n @Input()\n set value(v: any) {\n v = v === undefined ? null : v;\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (this.type === 'date') {\n v = normalizeDate(v);\n }\n\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n if (this.isPercentage() || this.isPermillage() || this.isNumber()) {\n const numVal = parseFloat(this._value);\n if (!Number.isNaN(numVal)) {\n return numVal;\n }\n }\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n constructor() {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setValueInControl(value);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setValueInControl(v: any): void {\n if (this.domain === 'date') {\n v = normalizeDate(v);\n }\n if (this.input) {\n this.input.nativeElement.value = v;\n }\n if (this.textarea) {\n this.textarea.nativeElement.value = v;\n }\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && !hasValue(hasValue)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (this._regexp && hasValue(value) && !this._regexp.test(value)) {\n result = result || {};\n result.pattern = {\n value,\n reason: `Value must follow the pattern: ${this._pattern}`\n };\n }\n if (this.type === 'email' && hasValue(value) && !isValidEmail(value)) {\n result = result || {};\n result.email = { value, reason: 'Invalid email.' };\n }\n if (this.type === 'number' && hasValue(value) && !isValidNumber(value)) {\n result = result || {};\n result.numeric = { value, reason: 'Invalid number.' };\n }\n if (\n this.type === 'date' ||\n this.type === 'time' ||\n this.type === 'timestamp'\n ) {\n if (\n typeof this.min === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.min) === -1\n ) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (\n typeof this.max === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.max) !== -1\n ) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n\n if (\n this.type === 'percentage' ||\n this.type === 'permillage' ||\n this.type === 'number' ||\n this.type === 'currency'\n ) {\n if (hasValue(this.min) && hasValue(value) && value < +this.min) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (hasValue(this.max) && hasValue(value) && value > +this.max) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.type}$${InputComponent.idCounter++}`;\n }\n\n onKeyUp(newValue: string): void {\n this.value = newValue;\n }\n onChangeValue(newValue: string): void {\n this.value = newValue;\n this.markAsTouched();\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n isNumber(): boolean {\n return this.type === 'number';\n }\n isPercentage(): boolean {\n return this.type === 'percentage';\n }\n isPermillage(): boolean {\n return this.type === 'permillage';\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n checkType(type: string): void {\n switch (type) {\n case 'email':\n this.setEmailPatterns();\n break;\n case 'date':\n this.setDatePatterns();\n break;\n case 'time':\n this.setTimePatterns();\n break;\n case 'password':\n this.setPasswordPatterns();\n break;\n case 'number':\n this.setNumberPatterns();\n break;\n case 'currency':\n this.setCurrencyPatterns();\n break;\n case 'percentage':\n this.setPercentagePatterns();\n break;\n case 'permillage':\n this.setPermillagePatterns();\n break;\n default:\n break;\n }\n }\n\n setEmailPatterns(): void {}\n\n setDatePatterns(): void {\n this.min = this.min || '1900-01-01';\n this.max = this.max || '2100-01-01';\n }\n\n setTimePatterns(): void {}\n\n setPasswordPatterns(): void {}\n\n setNumberPatterns(): void {\n this.domain = 'number';\n this.placeholder = '0';\n }\n\n setCurrencyPatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.1;\n this.min = this.min || 0.0;\n this.max = this.max || 10000.0;\n this.value = 0.0;\n }\n\n setPercentagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 100.0;\n this.placeholder = '0.00';\n }\n\n setPermillagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 1000.0;\n this.placeholder = '0.00';\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnDestroy,\n OnInit,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/** Filter component to query for objects. */\n@Component({\n selector: 'lux-filter',\n templateUrl: './filter.component.html',\n styleUrls: ['./filter.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FilterComponent)\n }\n ]\n})\nexport class FilterComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n static idCounter = 0;\n\n private touched = false;\n private _searchValue = '';\n\n @Input() disabled = false;\n /** id for the input. If left blank, it is autogenerated */\n @Input() inputId: string;\n /** Placeholder default text. */\n @Input() placeholder = '';\n /** Search value introduced by the user. */\n @Input()\n get searchValue(): string {\n return this._searchValue;\n }\n set searchValue(v: string) {\n v = (v || '').toString();\n if (v === this._searchValue) {\n return;\n }\n this.onChange(v);\n this._searchValue = v;\n }\n /** Search on type: (default true) Auto-search when user types in. */\n @Input() searchOnType = true;\n /** Custom aria label in case of not using a label */\n @Input('aria-label') ariaLabel: string;\n\n private debounceValue = 300; // 300 ms\n /** Debounce time in milliseconds. (defaults to 300 ms) */\n @Input()\n set debounce(val: number) {\n this.debounceValue = val;\n this.recreateObservable();\n }\n get debounce(): number {\n return this.debounceValue;\n }\n\n /** Search value changed by user. */\n @Output() searchValueChange = new EventEmitter<string>();\n\n searchValue$: Observable<string>;\n\n private subject = new Subject<string>();\n private sub: Subscription;\n\n constructor() {\n this.recreateObservable();\n }\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.searchValue = (value || '').toString();\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `filter$${FilterComponent.idCounter++}`;\n }\n ngOnDestroy(): void {\n this.freeSubscriptions();\n }\n clear(): void {\n this.searchValue = '';\n this.search();\n }\n search(): void {\n this.searchValueChange.emit(this.searchValue);\n }\n keyup(event: KeyboardEvent, newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n if (event.key === 'Enter') {\n this.searchNow(this.searchValue);\n }\n if (this.searchOnType) {\n this.addEvent();\n }\n }\n onInputValueChange(newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n }\n\n private recreateObservable(): void {\n this.searchValue$ = this.subject\n .asObservable()\n .pipe(debounceTime(this.debounce));\n\n this.freeSubscriptions();\n this.sub = this.searchValue$.subscribe((value) => {\n this.searchValueChange.emit(value);\n });\n }\n private freeSubscriptions(): void {\n if (this.sub) {\n this.sub.unsubscribe();\n this.sub = null;\n }\n }\n private searchNow(value: string): void {\n this.searchValueChange.emit(value);\n }\n private addEvent(): void {\n this.subject.next(this.searchValue);\n }\n}\n","import { ComponentRef } from '@angular/core';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { ContentRef } from './util';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\n\nexport class ActiveModal {\n close(result?: any): void {}\n dismiss(reason?: any): void {}\n}\n\nexport class ModalRef {\n private _resolve: (result?: any) => void;\n private _reject: (reason?: any) => void;\n\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content, will return `undefined`.\n */\n get componentInstance(): any {\n if (this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n\n /**\n * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n */\n result: Promise<any>;\n\n constructor(\n private _windowCmptRef: ComponentRef<LuxModalWindowComponent>,\n private _contentRef: ContentRef,\n private _backdropCmptRef?: ComponentRef<LuxModalBackdropComponent>,\n private _beforeDismiss?: () => any\n ) {\n _windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n this.dismiss(reason);\n });\n\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => {});\n }\n\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result?: any): void {\n if (this._windowCmptRef) {\n if (this._resolve) {\n this._resolve(result);\n }\n this._removeModalElements();\n }\n }\n\n private _dismiss(reason?: any): void {\n if (this._reject) {\n this._reject(reason);\n }\n this._removeModalElements();\n }\n\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason?: any): void {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(\n (result) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n },\n () => {}\n );\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n\n private _removeModalElements(): void {\n const windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n\n if (this._backdropCmptRef) {\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n }\n}\n","import { ViewRef, ComponentRef } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nexport const FOCUS = 'focus';\n\nexport enum Key {\n Tab = 9,\n Enter = 13,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40\n}\n\nexport const isDefined = (value: any): boolean =>\n value !== undefined && value !== null;\n\nexport class ContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef<any>\n ) {}\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable]',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nexport const getFocusableBoundaryElements = (\n element: HTMLElement\n): HTMLElement[] => {\n const list: HTMLElement[] = Array.from(\n element.querySelectorAll(\n FOCUSABLE_ELEMENTS_SELECTOR\n ) as NodeListOf<HTMLElement>\n ).filter((el) => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n};\n\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nexport const focusTrap = (\n element: HTMLElement,\n stopFocusTrap$: Observable<any>,\n refocusOnClick = false\n): void => {\n // last focused element\n const lastFocusedElement$ = fromEvent<FocusEvent>(element, 'focusin').pipe(\n takeUntil(stopFocusTrap$),\n map((e) => e.target)\n );\n\n // 'tab' / 'shift+tab' stream\n fromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(\n takeUntil(stopFocusTrap$),\n /* eslint-disable import/no-deprecated */\n filter((e) => e.which === Key.Tab),\n /* eslint-enable import/no-deprecated */\n withLatestFrom(lastFocusedElement$)\n )\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n\n if (\n (focusedElement === first || focusedElement === element) &&\n tabEvent.shiftKey\n ) {\n last.focus();\n tabEvent.preventDefault();\n }\n\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(\n takeUntil(stopFocusTrap$),\n withLatestFrom(lastFocusedElement$),\n map((arr) => arr[1] as HTMLElement)\n )\n .subscribe((lastFocusedElement) => lastFocusedElement.focus());\n }\n};\n","export enum ModalDismissReasons {\n BackdropClick,\n Esc\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n HostBinding,\n HostListener\n} from '@angular/core';\n\nimport { getFocusableBoundaryElements, FOCUS } from './util';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\n\n@Component({\n selector: 'lux-modal-window',\n template: `\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\"><ng-content></ng-content></div>\n </div>\n `\n})\nexport class LuxModalWindowComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n private _elWithFocus: Element; // element that is focused prior to modal opening\n\n @Input() ariaDescribedBy: string;\n @Input() ariaLabelledBy: string;\n @Input() backdrop: boolean | string = false;\n @Input() keyboard = true;\n @Input() windowClass: string;\n\n @Output() dismissEvent = new EventEmitter();\n\n @HostBinding('class') get class(): string {\n return `modal ${this.windowClass || ''}`;\n }\n @HostBinding('attr.role') role = 'dialog';\n @HostBinding('tabindex') tabindex = '-1';\n @HostBinding('attr.aria-modal') ariamodal = true;\n @HostBinding('attr.aria-labelledby') get hostAriaLabelledBy(): string {\n return this.ariaLabelledBy;\n }\n @HostBinding('attr.aria-describedby') get hostAriaDescribedBy(): string {\n return this.ariaDescribedBy;\n }\n @HostListener('click', ['$event.target']) backdropClick(\n btn: HTMLElement\n ): void {\n if (this.backdrop === true && this._elRef.nativeElement === btn) {\n this.dismiss(ModalDismissReasons.BackdropClick);\n }\n }\n @HostListener('keyup.esc', ['$event']) escKey(event): void {\n if (this.keyboard && !event.defaultPrevented) {\n this.dismiss(ModalDismissReasons.Esc);\n }\n }\n\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _elRef: ElementRef<HTMLElement>\n ) {}\n\n dismiss(reason): void {\n this.dismissEvent.emit(reason);\n }\n\n ngOnInit(): void {\n this._elWithFocus = this._document.activeElement;\n }\n\n ngAfterViewInit(): void {\n if (!this._elRef.nativeElement.contains(document.activeElement)) {\n const firstFocusable = getFocusableBoundaryElements(\n this._elRef.nativeElement\n )[0];\n\n const elementToFocus = firstFocusable || this._elRef.nativeElement;\n elementToFocus.focus();\n }\n }\n\n ngOnDestroy(): void {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n\n let elementToFocus;\n if (elWithFocus && elWithFocus[FOCUS] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n } else {\n elementToFocus = body;\n }\n elementToFocus.focus();\n this._elWithFocus = null;\n }\n}\n","import {Component, Input, HostBinding} from '@angular/core';\n\n@Component({\n selector: 'lux-modal-backdrop',\n template: ''\n})\nexport class LuxModalBackdropComponent {\n @Input() backdropClass: string;\n\n @HostBinding('class') class = 'modal-backdrop fade show';\n @HostBinding('style') style = 'z-index: 1050';\n}\n","import { Injectable } from '@angular/core';\n\nexport interface LuxModalOptions {\n ariaDescribedBy?: string;\n ariaLabelledBy?: string;\n backdrop?: boolean;\n keyboard?: boolean;\n windowClass?: string;\n backdropClass?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LuxModalConfig implements LuxModalOptions {\n backdrop = true;\n}\n","import {\n Injectable,\n ApplicationRef,\n ComponentFactoryResolver,\n TemplateRef,\n ComponentRef,\n Inject,\n Injector,\n RendererFactory2\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { ActiveModal, ModalRef } from './modal-ref';\nimport { ContentRef, focusTrap, isDefined } from './util';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { Subject } from 'rxjs';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\nimport { LuxModalOptions, LuxModalConfig } from './modal-config';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStack {\n private _activeWindowCmptHasChanged = new Subject();\n private _modalRefs: ModalRef[] = [];\n private _windowCmpts: ComponentRef<LuxModalWindowComponent>[] = [];\n private _ariaHiddenValues: Map<Element, string> = new Map();\n private _backdropAttributes = ['backdropClass'];\n private _windowAttributes = [\n 'ariaLabelledBy',\n 'backdrop',\n 'centered',\n 'keyboard',\n 'scrollable',\n 'size',\n 'windowClass'\n ];\n\n constructor(\n private _applicationRef: ApplicationRef,\n @Inject(DOCUMENT) private _document: any,\n private _injector: Injector,\n private _rendererFactory: RendererFactory2,\n private modalConfig: LuxModalConfig\n ) {\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt =\n this._windowCmpts[this._windowCmpts.length - 1];\n focusTrap(\n activeWindowCmpt.location.nativeElement,\n this._activeWindowCmptHasChanged\n );\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n\n open(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n options: LuxModalOptions\n ): ModalRef {\n const config = Object.assign({}, this.modalConfig, options);\n const containerEl = this._document.body;\n const renderer = this._rendererFactory.createRenderer(null, null);\n const removeBodyClass = (): void => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._revertAriaHidden();\n }\n };\n const activeModal = new ActiveModal();\n const contentRef = this.getContentRef(moduleCFR, content, activeModal);\n const backdropCmptRef: ComponentRef<LuxModalBackdropComponent> =\n config.backdrop ? this._attachBackdrop(moduleCFR, containerEl) : null;\n const windowCmptRef: ComponentRef<LuxModalWindowComponent> =\n this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n const modalRef: ModalRef = new ModalRef(\n windowCmptRef,\n contentRef,\n backdropCmptRef\n );\n this._registerModalRef(modalRef);\n this._registerWindowCmpt(windowCmptRef);\n modalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = (result: any): void => {\n modalRef.close(result);\n };\n activeModal.dismiss = (reason: any): void => {\n modalRef.dismiss(reason);\n };\n\n this._applyWindowOptions(windowCmptRef.instance, config);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackgroundOptions(backdropCmptRef.instance, config);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n windowCmptRef.changeDetectorRef.detectChanges();\n\n return modalRef;\n }\n\n private _applyWindowOptions(\n windowInstance: LuxModalWindowComponent,\n config: LuxModalOptions\n ): void {\n this._windowAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n windowInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _applyBackgroundOptions(\n backgroudInstance: LuxModalBackdropComponent,\n config: LuxModalOptions\n ): void {\n this._backdropAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n backgroudInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _revertAriaHidden(): void {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n\n private getContentRef(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n activeModal: ActiveModal\n ): ContentRef {\n if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content, activeModal);\n }\n }\n\n private createFromTemplateRef(\n content: TemplateRef<any>,\n activeModal: ActiveModal\n ): ContentRef {\n const context = {\n $implicit: activeModal,\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n close(result): void {\n activeModal.close(result);\n },\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n dismiss(reason): void {\n activeModal.dismiss(reason);\n }\n };\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n\n private _attachBackdrop(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any\n ): ComponentRef<LuxModalBackdropComponent> {\n const backdropFactory = moduleCFR.resolveComponentFactory(\n LuxModalBackdropComponent\n );\n const backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n\n private _attachWindowComponent(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any,\n contentRef: any\n ): ComponentRef<LuxModalWindowComponent> {\n const windowFactory = moduleCFR.resolveComponentFactory(\n LuxModalWindowComponent\n );\n const windowCmptRef = windowFactory.create(\n this._injector,\n contentRef.nodes\n );\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n\n private _registerModalRef(modalRef: ModalRef): void {\n const unregisterModalRef = (): void => {\n const index = this._modalRefs.indexOf(modalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n }\n };\n this._modalRefs.push(modalRef);\n modalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n\n private _registerWindowCmpt(\n windowCmpt: ComponentRef<LuxModalWindowComponent>\n ): void {\n this._windowCmpts.push(windowCmpt);\n this._activeWindowCmptHasChanged.next();\n\n windowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(windowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n\n private _setAriaHidden(element: Element): void {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach((sibling) => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n}\n","import {\n Injectable,\n ComponentFactoryResolver,\n TemplateRef,\n} from '@angular/core';\nimport { ModalStack } from './modal-stack';\nimport { ModalRef } from './modal-ref';\nimport { LuxModalOptions } from './modal-config';\n\n/**\n * A service that it allow open an close modal components\n */\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(\n private modalStack: ModalStack,\n private moduleCFR: ComponentFactoryResolver\n ) {}\n\n /**Open a modal component\n * @param content TemplateRef\n */\n open(content: TemplateRef<any>, options: LuxModalOptions = {}): ModalRef {\n return this.modalStack.open(this.moduleCFR, content, options);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DataSource } from '../datasource';\nimport { Observable, of, Subject } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n switchMap\n} from 'rxjs/operators';\nimport { GeoPoint } from '../map/geopoint';\n\ninterface SearchResult {\n place_id: number;\n lat: number;\n lon: number;\n display_name: string;\n icon: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GeolocationService {\n private debouncePeriodMs = 300; // ms\n private cacheSize = 20;\n private lastQueriesWithResults = new Map<string, SearchResult[]>();\n private lastQueriesLru: string[] = [];\n private currentSearch$: Subject<string>;\n private currentQuery$: Observable<SearchResult[]>;\n\n constructor(private http: HttpClient) {\n this.currentSearch$ = new Subject<string>();\n\n const typed$ = this.currentSearch$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n this.currentQuery$ = typed$.pipe(\n debounceTime(this.debouncePeriodMs),\n\n switchMap((currentQuery) => {\n const data = this.getFromCache(currentQuery);\n if (data !== undefined) {\n return of(data);\n }\n // Nominatim search documentation:\n // https://nominatim.org/release-docs/develop/api/Search/\n const url =\n 'https://nominatim.openstreetmap.org/search?format=json&limit=20&q=' +\n encodeURIComponent(currentQuery);\n const headers = {\n 'Content-Type': 'application/json'\n };\n this.addToCache(currentQuery, []);\n\n return this.http.get(url, { headers }).pipe(\n map((response) => {\n const searchResults = response as unknown as SearchResult[];\n const uniqueResults = distinct(searchResults);\n return this.addToCache(currentQuery, uniqueResults);\n })\n );\n })\n );\n }\n\n searchGeolocation(query: string): Observable<SearchResult[]> {\n this.currentSearch$.next(query);\n return this.currentQuery$;\n }\n\n getLabels(\n instance: GeolocationService,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n const searchResults = instance.lastQueriesWithResults\n .get(instance.getLatestQuery())\n .filter((searchResult) => samePosition(searchResult, keys));\n return of(\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n return {\n key,\n label: searchResult.display_name\n };\n })\n );\n }\n\n getData(\n instance: GeolocationService,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.searchGeolocation(search).pipe(\n map((searchResults) =>\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n const label = searchResult.display_name;\n return { key, label };\n })\n )\n );\n }\n\n // Cache implemementation ---\n private getFromCache(query: string): SearchResult[] {\n if (this.lastQueriesWithResults.has(query)) {\n return this.lastQueriesWithResults.get(query);\n }\n return undefined;\n }\n private addToCache(query: string, data: SearchResult[]): SearchResult[] {\n if (this.lastQueriesWithResults.keys.length >= this.cacheSize) {\n const deletedQuery = this.lastQueriesLru[0];\n this.revomeFromCache(deletedQuery);\n }\n this.lastQueriesWithResults.set(query, data);\n this.lastQueriesLru.push(query);\n return data;\n }\n private revomeFromCache(query: string): void {\n this.lastQueriesWithResults.delete(query);\n const index = this.lastQueriesLru.findIndex((it) => it === query);\n this.lastQueriesLru.splice(index, 1);\n }\n private getLatestQuery(): string | null {\n return this.lastQueriesLru.length\n ? this.lastQueriesLru[this.lastQueriesLru.length - 1]\n : null;\n }\n // End cache implemementation ---\n}\n\nconst samePosition = (\n searchResult: SearchResult,\n keys: GeoPoint[]\n): boolean => {\n let found = false;\n keys.forEach((item) => {\n if (\n searchResult.lon === item.coordinates[0] &&\n searchResult.lat === item.coordinates[1]\n ) {\n found = true;\n }\n });\n return found;\n};\n\nconst distinct = (data: SearchResult[]): SearchResult[] => {\n const unique: { [key: string]: number } = {};\n return data.filter((r) => {\n if (unique[r.display_name]) {\n return false;\n }\n unique[r.display_name] = 1;\n return true;\n });\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef,\n TemplateRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n AbstractControl,\n ValidationErrors,\n NG_VALIDATORS\n} from '@angular/forms';\nimport { DataSource } from '../datasource';\nimport {\n isInitialAndEmpty,\n isValidNumber,\n roundToMultipleOf\n} from '../helperFns';\nimport { languageDetector } from '../lang';\nimport { ModalService } from '../modal/modal.service';\nimport { GeoPoint } from '../map/geopoint';\nimport { Observable } from 'rxjs';\nimport { GeolocationService } from './geolocation.service';\n\n@Component({\n selector: 'lux-geolocation',\n templateUrl: './geolocation.component.html',\n styleUrls: ['./geolocation.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n }\n ]\n})\nexport class GeolocationComponent implements OnInit {\n static idCounter = 0;\n\n @ViewChild('latitude', { static: true }) latitude: ElementRef;\n @ViewChild('longitude', { static: true }) longitude: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _required: boolean;\n private _value: any;\n\n public latitudeValue?: number = null;\n public longitudeValue?: number = null;\n\n isValidNumber = isValidNumber;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n minLatitude: 'Minimum latitude is $minLatitude.',\n maxLatitude: 'Maximum latitude is $maxLatitude.',\n minLongitude: 'Minimum longitude is $minLongitude.',\n maxLongitude: 'Maximum longitude is $maxLongitude.'\n },\n es: {\n required: 'El campo es obligatorio.',\n minLatitude: 'La latitud mínima es $minLatitude.',\n maxLatitude: 'La latitud máxima es $maxLatitude.',\n minLongitude: 'La longitud mínima es $minLongitude.',\n maxLongitude: 'La longitud máxima es $maxLongitude.'\n }\n };\n\n public cardinalPoints = {\n en: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'W',\n unknown: '?'\n },\n es: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'O',\n unknown: '?'\n }\n };\n\n @Input()\n public minLatitude: number;\n @Input()\n public maxLatitude: number;\n @Input()\n public minLongitude: number;\n @Input()\n public maxLongitude: number;\n @Input()\n public step: number;\n @Input()\n public zoom: number;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set value(v: GeoPoint) {\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (v.coordinates && v.coordinates.length === 2) {\n this._value = v;\n this.latitudeValue = v.coordinates[1];\n this.longitudeValue = v.coordinates[0];\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n } else {\n this._value = undefined;\n this.latitudeValue = undefined;\n this.longitudeValue = undefined;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): GeoPoint {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<GeoPoint>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value: any): void => {};\n onTouched = (): void => {};\n\n constructor(\n private modalService: ModalService,\n public locationService: GeolocationService\n ) {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setLatitudeInControl(latitude: number): void {\n this.latitude.nativeElement.value = latitude;\n }\n private setLongitudeInControl(longitude: number): void {\n this.longitude.nativeElement.value = longitude;\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && (value === null || value === undefined)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (\n this.minLatitude !== undefined &&\n this.minLatitude !== null &&\n this.latitudeValue < this.minLatitude\n ) {\n result = result || {};\n result.minLatitude = {\n value,\n min: this.minLatitude,\n reason: `Value is lower than minimum value: ${this.minLatitude}.`\n };\n }\n if (\n this.maxLatitude !== undefined &&\n this.maxLatitude !== null &&\n this.latitudeValue < this.maxLatitude\n ) {\n result = result || {};\n result.maxLatitude = {\n value,\n max: this.maxLatitude,\n reason: `Value is lower than maximum value: ${this.maxLatitude}.`\n };\n }\n if (\n this.minLongitude !== undefined &&\n this.minLongitude !== null &&\n this.longitudeValue < this.minLongitude\n ) {\n result = result || {};\n result.minLongitude = {\n value,\n min: this.minLongitude,\n reason: `Value is lower than minimum value: ${this.minLongitude}.`\n };\n }\n if (\n this.maxLongitude !== undefined &&\n this.maxLongitude !== null &&\n this.longitudeValue < this.maxLongitude\n ) {\n result = result || {};\n result.maxLongitude = {\n value,\n max: this.maxLongitude,\n reason: `Value is lower than maximum value: ${this.maxLongitude}.`\n };\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `geolocation$${GeolocationComponent.idCounter++}`;\n this.setPatterns();\n }\n\n updateLatitude(newLatitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [this.longitudeValue, newLatitude]\n };\n }\n updateLongitude(newLongitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, this.latitudeValue]\n };\n }\n updateLatitudeAndLongitude(newLatitudeAndLongitude: number[]): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: newLatitudeAndLongitude\n };\n }\n\n roundToStepAndUpdateLatitudeAndLongitude(\n newLatitudeAndLongitude: number[]\n ): void {\n const newLatitude = roundToMultipleOf(\n newLatitudeAndLongitude[1],\n this.step\n );\n const newLongitude = roundToMultipleOf(\n newLatitudeAndLongitude[0],\n this.step\n );\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, newLatitude]\n };\n }\n\n onEventLatitude(newLatitude: string): void {\n if (isValidNumber(newLatitude)) {\n this.updateLatitude(+newLatitude);\n }\n }\n onEventLongitude(newLongitude: string): void {\n if (isValidNumber(newLongitude)) {\n this.updateLongitude(+newLongitude);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n openModalMap(modal: TemplateRef<any>): void {\n this.modalService.open(modal).result.then(\n (result) => {\n if (result !== 'cancel') {\n this.roundToStepAndUpdateLatitudeAndLongitude(result);\n }\n },\n (_) => {}\n );\n }\n\n get mapTitle(): string {\n return this._disabled || !!this.readonly ? 'Location:' : 'Select location:';\n }\n\n get self(): GeolocationComponent {\n return this;\n }\n\n getLabels(\n instance: GeolocationComponent,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getLabels(instance.locationService, keys);\n }\n\n getData(\n instance: GeolocationComponent,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getData(instance.locationService, search);\n }\n\n setPatterns(): void {\n this.step = this.step || 0.00001; // 0.00001 degrees = 1.11 meters\n this.zoom = this.zoom || 18; // (360/2^18) degrees ~ 0.00137 degrees ~ 153 meters\n this.minLatitude = this.minLatitude || -90;\n this.maxLatitude = this.maxLatitude || +90;\n this.minLongitude = this.minLongitude || -180;\n this.maxLongitude = this.maxLongitude || +180;\n }\n}\n","export enum Placement {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right'\n}\nexport type PlacementValue = 'left' | 'right' | 'top' | 'bottom';\n","import { Component, Input } from '@angular/core';\nimport { LuxTooltipContext } from './tooltip-context';\n\n/**\n * Default Tooltip Component\n */\n@Component({\n template: `\n <span class=\"lux-tooltip\" style=\"transition: opacity 200ms\">{{context.message}}</span>\n `\n})\nexport class TooltipComponent {\n\n @Input() context: LuxTooltipContext;\n\n constructor() { }\n\n}\n","import { ViewRef, ComponentRef } from '@angular/core';\n\nexport class TooltipContentRef {\n constructor(public viewRef?: ViewRef, public componentRef?: ComponentRef<any>) {}\n}\n","import {\n Injectable,\n Injector,\n ComponentRef,\n ComponentFactoryResolver,\n ApplicationRef,\n EmbeddedViewRef,\n ElementRef,\n TemplateRef\n} from '@angular/core';\n\nimport { PlacementValue, Placement } from './placement';\nimport { LuxTooltipContext } from './tooltip-context';\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipContentRef } from './tooltop-content';\n\n@Injectable()\nexport class TooltipService {\n constructor(\n private _injector: Injector,\n private _crf: ComponentFactoryResolver,\n private _applicationRef: ApplicationRef\n ) {}\n\n appendComponentToBody(\n content: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n const tooltipContentRef = this.getTooltipContentRef(content);\n if (tooltipContentRef) {\n let domElem = (tooltipContentRef.viewRef as EmbeddedViewRef<any>)\n .rootNodes[0];\n document.body.appendChild(domElem);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.changeDetectorRef.detectChanges();\n }\n domElem = this.setStyle(domElem, placement);\n domElem = this.setPosition(domElem, elHost, placement);\n return tooltipContentRef;\n }\n return null;\n }\n\n removeComponentFromBody(tooltipContentRef: TooltipContentRef): void {\n this._applicationRef.detachView(tooltipContentRef.viewRef);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.destroy();\n }\n }\n\n private getTooltipContentRef(content: any): TooltipContentRef {\n if (!content) {\n // nothing to show\n } else if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content);\n } else if (typeof content === 'string') {\n return this.createFromComponent(TooltipComponent, { message: content });\n } else {\n return this.createFromComponent(content);\n }\n }\n\n private createFromTemplateRef(content: TemplateRef<any>): TooltipContentRef {\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n return new TooltipContentRef(viewRef);\n }\n\n private createFromComponent(\n component: any,\n context?: LuxTooltipContext\n ): TooltipContentRef {\n const componentRef: ComponentRef<any> = this._crf\n .resolveComponentFactory(component)\n .create(this._injector);\n if (context) {\n componentRef.instance.context = context;\n }\n this._applicationRef.attachView(componentRef.hostView);\n return new TooltipContentRef(componentRef.hostView, componentRef);\n }\n\n private setStyle(\n domElem: HTMLElement,\n placement: PlacementValue\n ): HTMLElement {\n domElem.style.position = 'absolute';\n domElem.style.minWidth = 'min-content';\n domElem.style.minHeight = 'min-content';\n const tooltipElement = this.getTooltipElementFromHTMLElemnt(domElem);\n placement =\n placement !== undefined\n ? (placement.toLocaleLowerCase() as PlacementValue)\n : 'top'; // 'Top' is the default value of placement\n tooltipElement.classList.add(`lux-tooltip-${placement}`);\n tooltipElement.classList.add('lux-tooltip-show');\n return domElem;\n }\n\n private getTooltipElementFromHTMLElemnt(domElem: HTMLElement): any {\n const elementsArray = Array.from(domElem.classList).filter(\n (className) => className === 'lux-tooltip'\n );\n if (elementsArray.length !== 0) {\n return domElem;\n } else if (domElem.hasChildNodes()) {\n const childrenArray = Array.from(domElem.children).filter(\n (child) =>\n this.getTooltipElementFromHTMLElemnt(child as HTMLElement) !== null\n );\n if (childrenArray.length !== 0) {\n return this.getTooltipElementFromHTMLElemnt(\n childrenArray[0] as HTMLElement\n );\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n private setPosition(\n domElem: HTMLElement,\n elHost: ElementRef,\n placement: PlacementValue\n ): HTMLElement {\n const hostPos = elHost.nativeElement.getBoundingClientRect();\n const tooltipPos = domElem.getBoundingClientRect();\n const scrollPos =\n window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0;\n let top = 0;\n let left = 0;\n const offset = 10;\n\n switch (placement) {\n case Placement.Bottom:\n top = hostPos.bottom + offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n case Placement.Left:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.left - tooltipPos.width - offset;\n break;\n case Placement.Right:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.right + offset;\n break;\n case Placement.Top:\n default:\n top = hostPos.top - tooltipPos.height - offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n }\n top = Math.max(0, top);\n left = Math.max(0, left);\n domElem.style.top = `${top + scrollPos}px`;\n domElem.style.left = `${left}px`;\n return domElem;\n }\n}\n","import { HostListener, Input, Directive, ElementRef } from '@angular/core';\n\nimport { TooltipService } from './tooltip.service';\nimport { PlacementValue } from './placement';\nimport { TooltipContentRef } from './tooltop-content';\n\n/**\n * Tooltip directive\n */\n@Directive({\n selector: '[luxTooltip]'\n})\nexport class LuxTooltipDirective {\n /** Tooltip title */\n @Input() luxTooltip: any;\n\n /** Component, TemplateRef or String */\n @Input() content: any;\n\n /** Placement */\n @Input() placement: PlacementValue;\n\n tooltipRef: TooltipContentRef;\n\n constructor(\n private elHost: ElementRef,\n private tooltipService: TooltipService\n ) {}\n\n @HostListener('mouseenter') onMouseEnter(): void {\n if (!this.tooltipRef) {\n this.tooltipRef = this.show(this.content, this.elHost, this.placement);\n }\n }\n\n @HostListener('mouseleave') onMouseLeave(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n @HostListener('click') onClick(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n show(\n component: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n return this.tooltipService.appendComponentToBody(\n component,\n elHost,\n placement\n );\n }\n\n remove(tooltipRef: TooltipContentRef): void {\n this.tooltipService.removeComponentFromBody(tooltipRef);\n }\n}\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport {\n Router,\n NavigationEnd,\n ActivatedRoute,\n ActivatedRouteSnapshot\n} from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nexport interface BreadcrumbItem {\n label: string;\n url: string;\n}\n@Component({\n selector: 'lux-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss']\n})\nexport class LuxBreadcrumbComponent implements OnInit, OnDestroy {\n public breadcrumbs: BreadcrumbItem[];\n private subs: Subscription[] = [];\n public imagePath = '../assets/img/arrow-forward.svg';\n\n constructor(private route: Router, private activedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.subs.push(\n this.route.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((_) => {\n this.breadcrumbs = [];\n this.addBreadcrumbs(this.activedRoute.snapshot.root, true, null);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subs.forEach((s) => s.unsubscribe());\n this.subs = [];\n }\n\n private addBreadcrumbs(\n activedRouteSnapshot: ActivatedRouteSnapshot,\n isRoot: boolean,\n urlPrefix: string\n ): void {\n const routeConfig = activedRouteSnapshot.routeConfig;\n let url = urlPrefix || '';\n url += routeConfig ? '/' + this.getUrl(activedRouteSnapshot) : '';\n const label = routeConfig\n ? this.getLabel(activedRouteSnapshot)\n : isRoot\n ? 'Home'\n : '';\n if (label && url !== '/') {\n const breadcrumb = { label, url };\n this.breadcrumbs.push(breadcrumb);\n }\n if (activedRouteSnapshot.children.length) {\n this.addBreadcrumbs(activedRouteSnapshot.children[0], false, url);\n }\n }\n\n private getUrl(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n if (!activedRouteSnapshot.url[0]) {\n return '';\n }\n const id = activedRouteSnapshot.params.id;\n return id\n ? `${activedRouteSnapshot.url[0]}/${id}`\n : activedRouteSnapshot.routeConfig.path || '';\n }\n\n private getLabel(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n const routeConfig = activedRouteSnapshot.routeConfig;\n if (!routeConfig) {\n return null;\n }\n if (activedRouteSnapshot.data && activedRouteSnapshot.data.title) {\n const data = activedRouteSnapshot.data;\n if (data.objectTitle) {\n return `${data.title} ${data.objectTitle}`;\n } else {\n return data.title;\n }\n }\n return activedRouteSnapshot.params.id || routeConfig.path;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { from, Observable, of } from 'rxjs';\n\nlet openLayersIsInstalled = false;\n\n@Injectable({ providedIn: 'root' })\nexport class OpenLayerLoaderService {\n load(): Observable<boolean> {\n if ((window as any).ol) {\n return of(true);\n }\n\n const openLayerJsUrl = 'https://openlayers.org/en/v5.3.0/build/ol.js';\n const openLayerCssUrl = 'https://openlayers.org/en/v5.3.0/css/ol.css';\n\n if (!openLayersIsInstalled) {\n openLayersIsInstalled = true; // only try to install it once\n loadCss(openLayerCssUrl, () => {});\n return from(\n new Promise<boolean>((resolve, _) => {\n loadScript(openLayerJsUrl, () => resolve(true));\n })\n );\n }\n return of(true);\n }\n}\n\n/** Dynamically load a script from url and return a callback */\nconst loadScript = (url: string, callback: () => void): void => {\n const script: any = document.createElement('script');\n script.type = 'text/javascript';\n\n if (script.readyState) {\n // for old IE\n script.onreadystatechange = (): void => {\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\n script.onreadystatechange = null;\n callback();\n }\n };\n } else {\n // Others browsers\n script.onload = (): void => {\n callback();\n };\n }\n script.src = url;\n document.getElementsByTagName('head')[0].appendChild(script);\n};\n\n/** Dynamically load css from url and return a callback */\nconst loadCss = (url: string, callback: () => void): void => {\n const link: any = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.type = 'text/javascript';\n link.href = url;\n link.onload = (): void => {\n callback();\n };\n document.getElementsByTagName('head')[0].appendChild(link);\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n AfterViewInit\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { OpenLayerLoaderService } from '../geolocation/openlayer-loader.service';\n\nimport { GeoPoint } from './geopoint';\n\n// @dynamic\ndeclare const ol: any;\n\n@Component({\n selector: 'lux-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\nexport class MapComponent implements OnInit, AfterViewInit {\n static idCounter = 0;\n\n private loaded$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n private _map: any;\n\n @Input() mapId;\n\n _zoom: number;\n @Input()\n set zoom(zoom: number) {\n if (!isNaN(zoom)) {\n this._zoom = zoom;\n if (this._map) {\n this._map.getView().setZoom(zoom);\n }\n }\n }\n get zoom(): number {\n return this._zoom;\n }\n\n _center: GeoPoint;\n @Input()\n set center(center: GeoPoint) {\n if (center) {\n if (center.coordinates && center.coordinates.length === 2) {\n this._center = center;\n if (this._map) {\n this._map.getView().setCenter(ol.proj.fromLonLat(center.coordinates));\n }\n }\n }\n }\n get center(): GeoPoint {\n return this._center;\n }\n\n _readonly: boolean;\n @Input()\n set readonly(readonly: boolean) {\n if (!readonly) {\n if (this._map) {\n this._map.on('click', (args: any) => {\n // args.coordinate is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n const coordinates = ol.proj.toLonLat(args.coordinate);\n // alternatively: const lonLat = ol.proj.transform(args.coordinate,'EPSG:3857','EPSG:4326');\n this.addMarkerAtCoordinates(coordinates);\n });\n this._map.on('pointermove', (event: any) => {\n const pixel = this._map.getEventPixel(event.originalEvent);\n const hit = this._map.hasFeatureAtPixel(pixel);\n this._map.getViewport().style.cursor = hit ? 'move' : 'grab';\n });\n }\n } else {\n if (this._map) {\n this._map.on('click', (args: any) => {});\n this._map.on('pointermove', (event: any) => {});\n this._map.getViewport().style.cursor = 'grab';\n }\n }\n this._readonly = readonly;\n // reset marker coordinates so marker interactions can be created or recreated accordingly\n // to the changes to readonly\n this.markerCoordinates = this.markerCoordinates;\n }\n get readonly(): boolean {\n return this._readonly;\n }\n\n private _marker: any;\n private _markerInteraction: any;\n private _markerCoordinates: number[];\n @Input()\n private set markerCoordinates(markerCoordinates: number[]) {\n if (markerCoordinates && markerCoordinates.length === 2) {\n this._markerCoordinates = markerCoordinates;\n if (this._map) {\n this.addMarkerAtCoordinates(markerCoordinates);\n }\n } else {\n this._markerCoordinates = undefined;\n if (this._map) {\n this.removeMarker();\n }\n }\n }\n private get markerCoordinates(): number[] {\n return this._markerCoordinates;\n }\n @Input()\n set markerPoint(markerPoint: GeoPoint) {\n if (\n !markerPoint ||\n !(markerPoint.coordinates && markerPoint.coordinates.length === 2)\n ) {\n this.markerCoordinates = undefined;\n } else {\n this.markerCoordinates = [\n +markerPoint.coordinates[0],\n +markerPoint.coordinates[1]\n ];\n }\n this.valueChange.emit(markerPoint);\n }\n get markerPoint(): GeoPoint {\n return {\n type: 'Point',\n coordinates: this.markerCoordinates\n };\n }\n @Output() valueChange = new EventEmitter<GeoPoint>();\n\n private _markerSource: any;\n private _markerStyle: any;\n\n constructor(olLoader: OpenLayerLoaderService) {\n olLoader.load().subscribe((_) => {\n // Initialize\n this._markerSource = new ol.source.Vector();\n this._markerStyle = new ol.style.Style({\n image: new ol.style.Icon({\n anchor: [0.5, 1],\n scale: 0.25,\n src: '/assets/img/marker.png'\n })\n });\n this.loaded$.next(true);\n });\n }\n\n ngOnInit(): void {\n this.mapId = this.mapId ? this.mapId : 'map' + MapComponent.idCounter++;\n }\n\n ngAfterViewInit(): void {\n this.loaded$.subscribe((loaded) => {\n if (loaded) {\n this.initMap();\n }\n });\n }\n private initMap(): void {\n this._map = new ol.Map({\n target: this.mapId,\n controls: ol.control.defaults({ attribution: false }),\n layers: [\n new ol.layer.Tile({\n source: new ol.source.OSM()\n }),\n new ol.layer.Vector({\n source: this._markerSource,\n style: this._markerStyle\n })\n ],\n view: new ol.View({\n center: ol.proj.fromLonLat(\n this.center !== undefined ? this.center.coordinates : [0, 0]\n ),\n zoom: this.zoom\n })\n });\n\n if (this.center === undefined || this.center === null) {\n // if the center is not set, we set its default value\n if ('geolocation' in navigator) {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n this.center = {\n type: 'Point',\n coordinates: [position.coords.longitude, position.coords.latitude]\n };\n },\n (error) => {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n );\n } else {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n } else {\n // the center needs the map to be properly set, so if it was set before the map was initialized,\n // we set the center again to perform necessary adjustements\n this.center = this.center;\n }\n\n if (this.zoom === undefined || this.zoom === null) {\n // if the zoom is not set, we set its default value\n this.zoom = 18;\n } else {\n // the zoom needs the map to be properly set, so if it was set before the map was initialized,\n // we set the zoom again to perform necessary adjustements\n this.zoom = this.zoom;\n }\n\n if (this.readonly === undefined || this.readonly === null) {\n // if readonly is not set, we set its default value\n this.readonly = false;\n } else {\n // readonly needs the map to be properly set, so if it was set before the map was initialized,\n // we set readonly again to perform necessary adjustements\n this.readonly = this.readonly;\n }\n\n if (\n this.markerCoordinates !== undefined &&\n this.markerCoordinates !== null\n ) {\n // the marker coordinates need the map to be properly set, so if they were set before the map was initialized,\n // we set the marker coordinates again to perform necessary adjustements\n this.markerCoordinates = this.markerCoordinates;\n }\n }\n\n private addMarkerAtCoordinates(coordinates: number[]): void {\n if (coordinates && coordinates.length === 2) {\n if (this._marker !== undefined) {\n this.removeMarker();\n }\n this._marker = new ol.Feature({\n geometry: new ol.geom.Point(\n // [lon, lat] is in EPSG:4326 (degrees), we transform it into EPSG:3857 (meters)\n ol.proj.transform(coordinates, 'EPSG:4326', 'EPSG:3857')\n )\n });\n this._markerSource.addFeature(this._marker);\n this._markerCoordinates = this.getMarkerCoordinates();\n\n if (!this.readonly) {\n const dragInteraction = new ol.interaction.Modify({\n features: new ol.Collection([this._marker]),\n style: this._markerStyle,\n pixelTolerance: 50,\n hitDetection: true\n });\n this._markerInteraction = dragInteraction;\n this._map.addInteraction(dragInteraction);\n }\n\n this._marker.on(\n 'change',\n () => {\n this._markerCoordinates = this.getMarkerCoordinates();\n },\n this._marker\n );\n }\n }\n\n private removeMarker(): void {\n if (this._marker !== undefined) {\n this._markerSource.removeFeature(this._marker);\n this._marker = undefined;\n }\n if (this._markerInteraction !== undefined) {\n this._map.getInteractions().pop();\n this._markerInteraction = undefined;\n }\n }\n\n private getMarkerCoordinates(): number[] | null {\n if (this._marker === undefined || this._marker == null) {\n return this._marker;\n }\n const coordinates = this._marker.getGeometry().getCoordinates();\n // coordinates is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n return ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326');\n }\n\n onResize(): void {\n if (this._map) {\n this._map.updateSize();\n }\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\nimport { languageDetector } from '../lang';\r\nimport { PaginationInfo } from './pagination';\r\n\r\n@Component({\r\n selector: 'lux-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit {\r\n literals = {\r\n en: {\r\n first: 'First',\r\n previous: 'Previous',\r\n next: 'Next',\r\n last: 'Last'\r\n },\r\n es: {\r\n first: 'Primero',\r\n previous: 'Anterior',\r\n next: 'Siguiente',\r\n last: 'Último'\r\n }\r\n };\r\n\r\n public first: string;\r\n public previous: string;\r\n public next: string;\r\n public last: string;\r\n\r\n public showPagination = false;\r\n public hidePrevious = false;\r\n public lastPage = false;\r\n public totalPages = 0;\r\n public displayNextEllipsis = false;\r\n public displayPreviousEllipsis = false;\r\n\r\n public pages: number[] = [];\r\n\r\n @Output() goToPage = new EventEmitter<number>();\r\n @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n /** Current page, total items and items to show per page */\r\n private paginationInfoValue: PaginationInfo;\r\n\r\n private _lang: string;\r\n @Input()\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n this.loadLanguage();\r\n }\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n\r\n @Input()\r\n set paginationInfo(value: PaginationInfo) {\r\n this.paginationInfoValue = value;\r\n this.syncState();\r\n }\r\n get paginationInfo(): PaginationInfo {\r\n return this.paginationInfoValue;\r\n }\r\n\r\n constructor() {\r\n this.lang = languageDetector();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.calculatePages();\r\n }\r\n\r\n pageSizeChanged(pageSize: number): void {\r\n this.paginationInfo.pageSize = pageSize;\r\n this.syncState();\r\n this.pageSizeChange.emit(pageSize);\r\n }\r\n\r\n onPage(n: number): void {\r\n this.goToPage.emit(n);\r\n }\r\n\r\n onFirst(): void {\r\n this.goToPage.emit(0);\r\n }\r\n\r\n onLast(): void {\r\n this.goToPage.emit(this.totalPages - 1);\r\n }\r\n onNext(): void {\r\n const page = (this.paginationInfo.page || 0) + 1;\r\n this.goToPage.emit(page);\r\n }\r\n onPrevious(): void {\r\n const page = (this.paginationInfo.page || 0) - 1;\r\n this.goToPage.emit(page);\r\n }\r\n\r\n private syncState(): void {\r\n this.pages = this.calculatePages();\r\n\r\n this.showPagination =\r\n this.paginationInfo.total > this.paginationInfo.pageSize;\r\n this.hidePrevious = this.paginationInfo.page === 0;\r\n this.lastPage =\r\n this.paginationInfo.pageSize * (this.paginationInfo.page + 1) >=\r\n this.paginationInfo.total;\r\n this.totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) || 0;\r\n this.displayNextEllipsis = !this.pages.includes(this.totalPages - 1);\r\n this.displayPreviousEllipsis = !this.pages.includes(0);\r\n }\r\n\r\n private calculatePages(): number[] {\r\n const totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) - 1; // 0-index\r\n const p = this.paginationInfo.page || 0;\r\n const pagesToShow = this.paginationInfo.pagesToShow;\r\n const pages: number[] = [];\r\n pages.push(p);\r\n const times = pagesToShow - 1;\r\n for (let i = 0; i < times; i++) {\r\n if (pages.length < pagesToShow) {\r\n if (Math.min(...pages) > 0) {\r\n pages.unshift(Math.min(...pages) - 1);\r\n }\r\n }\r\n if (pages.length < pagesToShow) {\r\n if (Math.max(...pages) < totalPages) {\r\n pages.push(Math.max(...pages) + 1);\r\n }\r\n }\r\n }\r\n pages.sort((a, b) => a - b);\r\n return pages;\r\n }\r\n\r\n private loadLanguage(): void {\r\n const l = this.literals[this.lang];\r\n this.first = l.first;\r\n this.previous = l.previous;\r\n this.next = l.next;\r\n this.last = l.last;\r\n }\r\n}\r\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\n\nexport interface RadioItem {\n name?: string;\n label: string;\n value: any;\n}\n\n@Component({\n selector: 'lux-radiogroup',\n templateUrl: './radiogroup.component.html',\n styleUrls: ['./radiogroup.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n }\n ]\n})\nexport class RadiogroupComponent implements ControlValueAccessor, Validator {\n private touched = false;\n\n @Input() name = 'radiogroup1';\n @Input() public disabled: boolean | null = false;\n @Input() public readonly: boolean | null = false;\n @Input() public required: boolean | null = false;\n\n @Input()\n set items(col: RadioItem[]) {\n this._items = (col || []).map((it, index) =>\n this.ensureHasUniqueName(it, index)\n );\n this.itemsChange.emit(col);\n }\n get items(): RadioItem[] {\n return this._items;\n }\n @Output() itemsChange = new EventEmitter<RadioItem[]>();\n\n @Input()\n set value(v: any) {\n if (v === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n\n private _value: any = undefined;\n private _items: RadioItem[] = [];\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n setValue(event: MouseEvent, item: RadioItem): void {\n if (!this.disabled && !this.readonly) {\n this.value = item.value;\n this.markAsTouched();\n }\n event.preventDefault();\n }\n ensureHasUniqueName(item: RadioItem, index: number): RadioItem {\n if (!item.name) {\n item.name = `${this.name}_${index}`;\n }\n return item;\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n forwardRef\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nlet sequencer = 0;\n\n@Component({\n selector: 'lux-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n }\n ]\n})\nexport class SelectComponent implements ControlValueAccessor, Validator {\n @Input() id = 'stringList' + sequencer++;\n @Input() disabled = false;\n @Input() required = false;\n /** Allow multiple elements */\n @Input() multiple = true;\n @Input() value: string[] = [];\n @Output() valueChange = new EventEmitter<string[]>();\n @Input() placeholder = 'Add new';\n /** If set, check there is no duplicates in the data. */\n @Input() unique = true;\n /** Validation function for new items. Returns error or null if valid */\n @Input() validateItem: (item: string) => string = (_) => null;\n\n newEntry = '';\n error = null;\n isValidNewEntry = false;\n\n private touched = false;\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n get canAdd(): boolean {\n return this.multiple || this.value.length === 0;\n }\n add(val: string): void {\n this.value.push(val);\n this.newEntry = '';\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n remove(index: number): void {\n if (this.value.length > index) {\n this.value.splice(index, 1);\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n if (event.key === 'Enter' && !this.error && this.newEntry !== '') {\n // Add on pressing Enter/Return\n this.markAsTouched();\n this.add(this.newEntry);\n }\n }\n onChangeNewEntry(newValue: string): void {\n this.markAsTouched();\n if (!newValue) {\n this.isValidNewEntry = false;\n this.error = null;\n return;\n }\n if (this.unique) {\n const found = (this.value || []).find((it) => it === newValue);\n this.isValidNewEntry = !found;\n this.error = found\n ? `Value '${newValue}' is already in. Cannot add duplicates.`\n : null;\n if (!this.isValidNewEntry) {\n return;\n }\n }\n this.error = this.validateItem(newValue);\n this.isValidNewEntry = !this.error;\n }\n}\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[luxVoiceRecognition]'\n})\nexport class VoiceRecognitionDirective implements OnInit {\n @Input() language: string;\n // See API at: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition\n private recognition: any;\n private isRecognizing = false;\n private mic: any;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n const speechRecognition = (window as any).webkitSpeechRecognition;\n if (speechRecognition) {\n this.recognition = new speechRecognition();\n }\n }\n\n ngOnInit(): void {\n if (this.recognition) {\n // API is available\n this.recognition.lang = this.language || window.navigator.language;\n this.recognition.interimResults = false;\n this.recognition.maxAlternatives = 1;\n\n // Add mic icon\n this.mic = document.createElement('div');\n this.mic.setAttribute('class', 'lux-microphone');\n\n const parent = this.el.nativeElement.parentElement;\n parent.appendChild(this.mic);\n\n // Add event handlers\n this.mic.onclick = (): void => this.microphoneClick();\n this.recognition.onresult = (event): void => this.onRecognized(event);\n }\n }\n\n microphoneClick(): void {\n if (this.isRecognizing) {\n // stop\n this.isRecognizing = false;\n this.renderer.removeClass(this.mic, 'lux-recording');\n this.recognition.abort();\n } else {\n // start\n this.el.nativeElement.value = getRecordingMessage(this.language);\n this.isRecognizing = true;\n this.renderer.addClass(this.mic, 'lux-recording');\n this.recognition.start();\n }\n }\n onRecognized(event: any): void {\n const recognizedText = event.results[0][0].transcript;\n this.isRecognizing = false;\n this.el.nativeElement.value = recognizedText;\n this.renderer.removeClass(this.mic, 'lux-recording');\n }\n}\n\nconst getRecordingMessage = (lang: string): string => {\n switch (lang.toLowerCase()) {\n case 'es':\n case 'es-es':\n return 'Grabando...';\n case 'en':\n case 'en-uk':\n case 'en-us':\n default:\n return 'Recording...';\n }\n};\n","\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { ClassProvider, FactoryProvider, InjectionToken, PLATFORM_ID } from '@angular/core';\n\n/* Create a new injection token for injecting the window into a component. */\nexport const WINDOW = new InjectionToken('WindowToken');\n\n/* Define abstract class for obtaining reference to the global window object. */\nexport abstract class WindowRef {\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n throw new Error('Not implemented.');\n }\n\n}\n\n/* Define class that implements the abstract class and returns the native window object. */\nexport class BrowserWindowRef extends WindowRef {\n\n constructor() {\n super();\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n return window;\n }\n\n}\n\n/* Create an factory function that returns the native window object. */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const windowFactory = (browserWindowRef: BrowserWindowRef, platformId: Object): Window | Object => {\n if (isPlatformBrowser(platformId)) {\n return browserWindowRef.nativeWindow;\n }\n return new Object();\n};\n\n/* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */\nconst browserWindowProvider: ClassProvider = {\n provide: WindowRef,\n useClass: BrowserWindowRef\n};\n\n/* Create an injectable provider that uses the windowFactory function for returning the native window object. */\nconst windowProvider: FactoryProvider = {\n provide: WINDOW,\n useFactory: windowFactory,\n deps: [ WindowRef, PLATFORM_ID ]\n};\n\n/* Create an array of providers. */\nexport const WINDOW_PROVIDERS = [\n browserWindowProvider,\n windowProvider\n];\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { AngularResizedEventModule } from 'angular-resize-event';\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { AutocompleteListComponent } from './autocomplete-list/autocomplete-list.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { InputComponent } from './input/input.component';\nimport { FilterComponent } from './filter/filter.component';\nimport { GeolocationComponent } from './geolocation/geolocation.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LuxTooltipDirective } from './tooltip/tooltip.directive';\nimport { LuxBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { LuxModalWindowComponent } from './modal/modal-window';\nimport { LuxModalBackdropComponent } from './modal/modal-backdrop';\nimport { MapComponent } from './map/map.component';\nimport { ModalService } from './modal/modal.service';\nimport { PaginationComponent } from './pagination/pagination.component';\nimport { RadiogroupComponent } from './radiogroup/radiogroup.component';\nimport { SelectComponent } from './select/select.component';\nimport { TooltipComponent } from './tooltip/tooltip.component';\nimport { TooltipService } from './tooltip/tooltip.service';\nimport { VoiceRecognitionDirective } from './voice-recognition/voice-recognition.directive';\nimport { WINDOW_PROVIDERS } from './window/window.service';\n\n@NgModule({\n declarations: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n TooltipComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ],\n entryComponents: [\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n TooltipComponent\n ],\n providers: [ModalService, TooltipService, WINDOW_PROVIDERS],\n imports: [\n AngularResizedEventModule,\n FormsModule,\n HttpClientModule,\n ReactiveFormsModule,\n RouterModule,\n CommonModule\n ],\n exports: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxBreadcrumbComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ]\n})\nexport class LuxModule {}\n","/*\n * Public API Surface of lux\n */\n\nexport { LuxModule } from './lib/lux.module';\nexport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from './lib/datasource';\nexport { AutocompleteComponent } from './lib/autocomplete/autocomplete.component';\nexport { AutocompleteListComponent } from './lib/autocomplete-list/autocomplete-list.component';\nexport {\n LuxBreadcrumbComponent,\n BreadcrumbItem\n} from './lib/breadcrumb/breadcrumb.component';\nexport { CheckboxComponent } from './lib/checkbox/checkbox.component';\nexport { FilterComponent } from './lib/filter/filter.component';\nexport { InputComponent } from './lib/input/input.component';\nexport { PaginationComponent } from './lib/pagination/pagination.component';\nexport { LuxTooltipDirective } from './lib/tooltip/tooltip.directive';\nexport { ModalService } from './lib/modal/modal.service';\nexport {\n RadioItem,\n RadiogroupComponent\n} from './lib/radiogroup/radiogroup.component';\nexport { ModalRef } from './lib/modal/modal-ref';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {GeolocationComponent as ɵa} from './lib/geolocation/geolocation.component';\nexport {GeolocationService as ɵd} from './lib/geolocation/geolocation.service';\nexport {OpenLayerLoaderService as ɵi} from './lib/geolocation/openlayer-loader.service';\nexport {MapComponent as ɵh} from './lib/map/map.component';\nexport {LuxModalBackdropComponent as ɵg} from './lib/modal/modal-backdrop';\nexport {LuxModalConfig as ɵc} from './lib/modal/modal-config';\nexport {ModalStack as ɵb} from './lib/modal/modal-stack';\nexport {LuxModalWindowComponent as ɵf} from './lib/modal/modal-window';\nexport {ContentRef as ɵr} from './lib/modal/util';\nexport {SelectComponent as ɵj} from './lib/select/select.component';\nexport {TooltipComponent as ɵk} from './lib/tooltip/tooltip.component';\nexport {TooltipService as ɵe} from './lib/tooltip/tooltip.service';\nexport {VoiceRecognitionDirective as ɵl} from './lib/voice-recognition/voice-recognition.directive';\nexport {BrowserWindowRef as ɵo,WINDOW as ɵm,WINDOW_PROVIDERS as ɵq,WindowRef as ɵn,windowFactory as ɵp} from './lib/window/window.service';"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metadev-lux.js","sources":["../../../projects/lux/src/lib/helperFns.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.ts","../../../projects/lux/src/lib/lang.ts","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.ts","../../../projects/lux/src/lib/checkbox/checkbox.component.ts","../../../projects/lux/src/lib/input/input.component.ts","../../../projects/lux/src/lib/filter/filter.component.ts","../../../projects/lux/src/lib/modal/modal-ref.ts","../../../projects/lux/src/lib/modal/util.ts","../../../projects/lux/src/lib/modal/modal-dismiss-reasons.ts","../../../projects/lux/src/lib/modal/modal-window.ts","../../../projects/lux/src/lib/modal/modal-backdrop.ts","../../../projects/lux/src/lib/modal/modal-config.ts","../../../projects/lux/src/lib/modal/modal-stack.ts","../../../projects/lux/src/lib/modal/modal.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.component.ts","../../../projects/lux/src/lib/tooltip/placement.ts","../../../projects/lux/src/lib/tooltip/tooltip.component.ts","../../../projects/lux/src/lib/tooltip/tooltop-content.ts","../../../projects/lux/src/lib/tooltip/tooltip.service.ts","../../../projects/lux/src/lib/tooltip/tooltip.directive.ts","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/lux/src/lib/geolocation/openlayer-loader.service.ts","../../../projects/lux/src/lib/map/map.component.ts","../../../projects/lux/src/lib/pagination/pagination.component.ts","../../../projects/lux/src/lib/radiogroup/radiogroup.component.ts","../../../projects/lux/src/lib/select/select.component.ts","../../../projects/lux/src/lib/voice-recognition/voice-recognition.directive.ts","../../../projects/lux/src/lib/window/window.service.ts","../../../projects/lux/src/lib/lux.module.ts","../../../projects/lux/src/public-api.ts","../../../projects/lux/src/metadev-lux.ts"],"sourcesContent":["// undefined and null functions\r\n\r\nexport const exists = (value: any): boolean =>\r\n value !== null && value !== undefined;\r\n\r\nexport const hasValue = (value: any): boolean =>\r\n exists(value) && (typeof value === 'string' ? !isEmptyString(value) : true);\r\n\r\n// string functions\r\n\r\nexport const isEmptyString = (value: string): boolean => value.trim() === '';\r\n\r\nexport const isValidEmail = (value: string): boolean => {\r\n const re =\r\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;\r\n return re.test(String(value).toLowerCase().trim());\r\n};\r\n\r\n// date functions\r\n\r\nexport const normalizeDate = (value: any): string => {\r\n if (typeof value === 'string' && value.length > 10) {\r\n return value.substr(0, 10);\r\n }\r\n return value ? value.toString() : null;\r\n};\r\n\r\n// number functions\r\n\r\nexport const isValidNumber = (\r\n value: string | number | undefined | null\r\n): boolean => (hasValue(value) ? !Number.isNaN(Number(value)) : false);\r\n\r\nexport const numberOfDecimalDigits = (\r\n x: number | string\r\n): number | undefined => {\r\n if (isValidNumber(x)) {\r\n const xString = String(Number(x));\r\n if (xString === 'Infinity') {\r\n return 0;\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return 0;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return 0;\r\n } else {\r\n return xString.length - indexOfDecimalPoint - 1;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const numberOfWholeDigits = (x: number | string): number | undefined => {\r\n if (isValidNumber(x)) {\r\n let xString = String(Number(x));\r\n if (xString.indexOf('-') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n if (xString === 'Infinity') {\r\n return Infinity;\r\n }\r\n if (xString.indexOf('0') === 0) {\r\n xString = xString.slice(1, xString.length);\r\n }\r\n const indexOfE = xString.indexOf('e');\r\n if (indexOfE >= 0) {\r\n return Number(xString.slice(indexOfE + 1, xString.length)) + 1;\r\n }\r\n const indexOfDecimalPoint = xString.indexOf('.');\r\n if (indexOfDecimalPoint < 0) {\r\n return xString.length;\r\n } else {\r\n return indexOfDecimalPoint;\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const roundToMultipleOf = (x: number, modulo: number): number => {\r\n const moduloString = String(modulo);\r\n // approximates the result\r\n // prone to inexactitude because of floating point arithmetic\r\n const approximation = Math.round(x / modulo) * modulo;\r\n const approximationString = String(approximation);\r\n // remove useless decimals\r\n const uselessDecimalsInApproximation =\r\n numberOfDecimalDigits(approximationString) -\r\n numberOfDecimalDigits(moduloString);\r\n const resultString = approximationString.slice(\r\n 0,\r\n approximationString.length - uselessDecimalsInApproximation\r\n );\r\n return Number(resultString);\r\n};\r\n\r\n// other functions\r\n\r\nexport const isInitialAndEmpty = (\r\n previousValue: any,\r\n newValue: any\r\n): boolean => {\r\n const isPrevArray = Array.isArray(previousValue);\r\n const isNewArray = Array.isArray(newValue);\r\n return !(\r\n (isPrevArray ? previousValue.length !== 0 : Boolean(previousValue)) ||\r\n (isNewArray ? newValue.length !== 0 : Boolean(newValue))\r\n );\r\n};\r\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { debounceTime, first, map } from 'rxjs/operators';\n// Do not remove this import: needed in the template\nimport { ResizedEvent } from 'angular-resize-event';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\n\n@Component({\n selector: 'lux-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteComponent)\n }\n ]\n})\nexport class AutocompleteComponent\n implements ControlValueAccessor, Validator, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('i0', { static: true }) i0: ElementRef;\n @ViewChild('completeDiv', { static: true }) completeDiv: ElementRef;\n\n private _dataSource: DataSource<any, string>;\n private _placeholder: string;\n private _value: any;\n\n showSpinner = false;\n touched = false;\n completionList: DecoratedDataSource = [];\n showCompletion = false;\n focusItem: DataSourceItem<any, string>;\n\n @Output() valueChange = new EventEmitter<any>();\n @Output() dataSourceChange = new EventEmitter<DataSource<any, string>>();\n\n @Input() public inputId: string;\n @Input() public disabled: boolean | null = null;\n @Input() public readonly: boolean | null = null;\n @Input() label = '';\n /** If canAddNewValues, user can type items not present in the data-source. */\n @Input() canAddNewValues = false;\n /** After cleaning the selection should the completion list remain open or closed:\n * false: (default) close on filters, to clean a filter and select all.\n * true: keep open (when the action most likely is to pick another one).\n */\n @Input() keepOpenAfterDelete = false;\n\n @Input()\n get value(): any {\n return this._value;\n }\n set value(v: any) {\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n this.completeLabel();\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n @Input()\n get dataSource(): DataSource<any, string> {\n return this._dataSource;\n }\n set dataSource(v: DataSource<any, string>) {\n this._dataSource = v;\n this.dataSourceChange.emit(v);\n }\n @Input() required = false;\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n keys: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n clear(): void {\n this.value = null;\n this.toggleCompletion(this.keepOpenAfterDelete, '');\n }\n\n private completeLabel(): void {\n if (this.value) {\n if (this.dataSource) {\n this.label = findLabelForId(this.dataSource, this.value) || '';\n } else if (this.instance && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, [this.value])\n .pipe(debounceTime(1), first())\n .subscribe((data) => {\n this.label = findLabelForId(data, this.value) || '';\n });\n }\n } else {\n this.label = '';\n }\n }\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteComponent.idCounter++}`;\n this.completeLabel();\n }\n ngAfterViewInit(): void {\n this.setSameWidth();\n }\n onInputResized(): void {\n this.setSameWidth();\n }\n private setSameWidth(): void {\n const width = this.i0.nativeElement.getBoundingClientRect().width;\n this.completeDiv.nativeElement.style.width = `${width}px`;\n }\n\n onKeydown(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Tab':\n if (label) {\n this.pickSelectionOrFirstMatch(label);\n }\n this.showCompletion = false;\n break;\n }\n this.markAsTouched();\n }\n onKeypress(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'Intro':\n case 'Enter':\n this.pickSelectionOrFirstMatch(label);\n event.preventDefault();\n break;\n }\n this.markAsTouched();\n }\n onKeyup(event: KeyboardEvent, label: string): void {\n switch (event.key) {\n case 'PageDown':\n this.focusOnNext(5);\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.focusOnNext(1);\n event.preventDefault();\n break;\n case 'PageUp':\n this.focusOnPrevious(5);\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.focusOnPrevious(1);\n event.preventDefault();\n break;\n case 'Escape':\n this.complete(null);\n event.preventDefault();\n break;\n case 'Intro':\n case 'Enter':\n event.preventDefault();\n break;\n default:\n this.showCompletionList(label);\n // event.preventDefault();\n }\n this.markAsTouched();\n }\n private focusOnNext(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && list.length > index + offset\n ? list[index + offset]\n : list[list.length - 1];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n private focusOnPrevious(offset: number): void {\n const list = this.completionList || [];\n const index = list.findIndex(\n (it) => this.focusItem && it.key === this.focusItem.key\n );\n const next =\n index !== -1 && index > offset ? list[index - offset] : list[0];\n this.focusItem = next;\n this.ensureItemVisible(index);\n }\n onLostFocus(): void {\n setTimeout(() => {\n this.toggleCompletion(false, null);\n }, 200);\n }\n complete(item: DataSourceItem<Record<string, unknown>, string>): void {\n if (item !== null) {\n this.value = item.key;\n this.label = item.label;\n } else {\n this.value = null;\n this.label = '';\n }\n this.toggleCompletion(false, null);\n this.markAsTouched();\n }\n toggleCompletion(show: boolean, label: string): void {\n if (show && !this.disabled) {\n this.showCompletionList(label);\n } else {\n this.showCompletion = false;\n if (this.canAddNewValues) {\n this.syncCustomValue(this.label);\n return;\n }\n }\n this.cd.markForCheck();\n }\n\n get selectedOption(): string {\n const index = this.completionList.findIndex(\n (i) => i.key === this.focusItem.key\n );\n if (index === -1 || !this.focusItem) {\n return null;\n }\n return `${this.inputId}_${index}`;\n }\n\n private ensureItemVisible(index: number): void {\n const target = this.completeDiv.nativeElement.querySelectorAll('li')[index];\n if (target) {\n target.scrollIntoView({ block: 'center' });\n }\n }\n private syncCustomValue(text: string): void {\n this.value = text;\n this.label = text;\n }\n private pickSelectionOrFirstMatch(text: string): void {\n if (this.canAddNewValues) {\n this.syncCustomValue(text);\n return;\n }\n if (this.focusItem && this.focusItem.label) {\n this.complete(this.focusItem);\n return;\n }\n const source = (text || '').trim();\n if (source === '') {\n this.showCompletion = false;\n return;\n }\n this.completionList = [];\n this.computeCompletionList(source).subscribe((suggestions) => {\n this.complete(\n suggestions && suggestions.length > 0 ? suggestions[0] : null\n );\n });\n }\n private showCompletionList(text: string): void {\n this.setSameWidth();\n const useSpinner = this.hasExternalDataSource();\n this.spinnerVisibility(useSpinner, true);\n setTimeout(() => {\n // for spinner to be shown\n this.computeCompletionList(text).subscribe({\n next: (cl) => {\n this.completionList = cl;\n this.focusItem =\n this.completionList.length > 0 ? this.completionList[0] : null;\n this.showCompletion = true;\n this.spinnerVisibility(useSpinner, false);\n },\n error: () => {\n this.spinnerVisibility(useSpinner, false);\n },\n complete: () => {\n this.spinnerVisibility(useSpinner, false);\n }\n });\n }, 1);\n }\n private spinnerVisibility(useSpinner: boolean, value: boolean): void {\n if (useSpinner) {\n this.showSpinner = value;\n }\n }\n private hasExternalDataSource(): boolean {\n return !this.dataSource && !!this.instance && !!this.populateFunction;\n }\n private computeCompletionList(text: string): Observable<DecoratedDataSource> {\n const searchText = (text || '').toLowerCase();\n if (this.dataSource) {\n const ds = (this.dataSource || [])\n .filter((it) => ignoreAccentsInclude(it.label, searchText))\n .sort((a, b) => a.label.localeCompare(b.label));\n return of(decorateDataSource(ds, searchText));\n } else if (this.instance && this.populateFunction) {\n return this.populateFunction(this.instance, searchText).pipe(\n debounceTime(1),\n first(),\n map((ds) => {\n ds.filter((it) => ignoreAccentsInclude(it.label, searchText)).sort(\n (a, b) => a.label.localeCompare(b.label)\n );\n return decorateDataSource(ds, searchText);\n })\n );\n } else {\n return of([]);\n }\n }\n}\n\n/** Returns true if text includes substring. No accents considered. Ignorecase */\nconst ignoreAccentsInclude = (text: string, substring: string): boolean => {\n text = normalizedString(text).toLowerCase();\n substring = normalizedString(substring).toLowerCase();\n return text.includes(substring);\n};\n\n/** Returns a normalized string with no accents: used for comparison */\nconst normalizedString = (a: string): string =>\n (a || '').normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n\nconst decorateDataSource = (\n dataSource: DataSource<any, string>,\n subString: string\n): DecoratedDataSource => dataSource.map((it) => decorateItem(it, subString));\n\nconst decorateItem = (\n item: DataSourceItem<any, string>,\n tx: string\n): DecoratedDataSourceItem => {\n const index = normalizedString(item.label)\n .toLowerCase()\n .indexOf(normalizedString(tx).toLowerCase());\n const labelPrefix = index === -1 ? item.label : item.label.substr(0, index);\n const labelMatch = index === -1 ? '' : item.label.substr(index, tx.length);\n const labelPostfix = index === -1 ? '' : item.label.substr(index + tx.length);\n const newItem: DecoratedDataSourceItem = {\n ...item,\n labelPrefix,\n labelMatch,\n labelPostfix\n };\n return newItem;\n};\n\nconst findLabelForId = (data: DataSource<any, string>, id: any): string => {\n const found = data.find((it) => it.key === id);\n return found ? found.label : null;\n};\n","/** Language detector based on Navigator preferences */\nexport const languageDetector = (): string => {\n const lang = navigator.language.split('-')[0];\n if (lang === 'es' || lang === 'en') {\n return lang;\n }\n return 'en'; // default\n};\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\nimport { DataSource } from '../datasource';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\n@Component({\n selector: 'lux-autocomplete-list',\n templateUrl: './autocomplete-list.component.html',\n styleUrls: ['./autocomplete-list.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => AutocompleteListComponent)\n }\n ]\n})\nexport class AutocompleteListComponent\n implements ControlValueAccessor, Validator, OnInit\n{\n static idCounter = 0;\n\n @ViewChild('auto') auto!: AutocompleteListComponent;\n\n literals = {\n en: {\n placeholder: 'new item',\n deleteLabelTemplate: 'Delete <<label>>',\n addMessage: 'Add'\n },\n es: {\n placeholder: 'nuevo elemento',\n deleteLabelTemplate: 'Eliminar <<label>>',\n addMessage: 'Añadir'\n }\n };\n\n public internalDataSource: DataSource<any, string> = [];\n private autoPopulate = false;\n\n private _value: any[] = [];\n @Input()\n set value(val: any[]) {\n if (val === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, val);\n this._value = val;\n this.ensureLabelsForIds();\n this.populateWith('');\n this.onChange(this._value);\n if (!initialAndEmpty) {\n this.valueChange.emit(this._value);\n }\n }\n get value(): any[] {\n return this._value;\n }\n labels: string[] = [];\n newEntry: any;\n canAdd = false;\n touched = false;\n\n private _lang = languageDetector();\n @Input()\n get lang(): string {\n return this._lang;\n }\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n\n @Input() inputId: string;\n @Input() dataSource: DataSource<any, any> = [];\n @Input() placeholder?: string;\n @Input() disabled = false;\n @Input() deleteLabelTemplate?: string;\n @Input() addMessage?: string;\n @Input() required = false;\n\n @Input() resolveLabelsFunction?: (\n instance: any,\n ids: any[]\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() populateFunction?: (\n instance: any,\n search: string\n ) => Observable<DataSource<any, string>> = undefined;\n @Input() instance: any;\n\n @Output() valueChange = new EventEmitter<any[]>();\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n writeValue(value: any): void {\n this.value = value;\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched && !this.disabled) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `autocompletelist${AutocompleteListComponent.idCounter++}`;\n this.autoPopulate =\n !!this.resolveLabelsFunction && !!this.populateFunction && this.instance;\n this.ensureLabelsForIds();\n }\n ensureLabelsForIds(): void {\n if (this.autoPopulate && this.resolveLabelsFunction) {\n this.resolveLabelsFunction(this.instance, this._value)\n .pipe(first())\n .subscribe((data) => {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = data.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n });\n } else if (this.dataSource) {\n const res: string[] = [];\n (this._value || []).map((id) => {\n const found = this.dataSource.find((it) => it.key === id);\n if (found) {\n res.push(found.label);\n } else {\n res.push('(unset)');\n }\n });\n this.labels = res;\n } else {\n this.labels = this._value.map((it) => (it ? it.toString() : '(unset)'));\n }\n }\n removeAt(index: number): void {\n if (this._value.length > index) {\n const key = this._value.splice(index, 1)[0];\n const label = this.labels.splice(index, 1)[0];\n this.internalDataSource.push({ key, label });\n }\n this.markAsTouched();\n }\n onValueChange(): void {\n this.updateCanAdd();\n }\n onNewEntryChange(event: KeyboardEvent, auto: AutocompleteComponent): void {\n if (event.key === 'Enter' && !!auto.value) {\n this.addNew(auto);\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n // todo\n } else {\n this.populateWith(auto.label + event.key);\n }\n this.updateCanAdd();\n }\n populateWith(searchText: string): void {\n if (this.autoPopulate && this.populateFunction && this.instance) {\n this.populateFunction(this.instance, searchText)\n .pipe(first())\n .subscribe((data) => {\n this.internalDataSource = data.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n });\n } else if (this.dataSource) {\n this.internalDataSource = this.dataSource.filter(\n (it) => !(this._value || []).includes(it.key)\n );\n }\n }\n updateCanAdd(): void {\n this.canAdd =\n !this.disabled &&\n this.auto &&\n !!this.auto.value && // has value\n !this.value.find((it) => it === this.auto.value); // not already in\n }\n\n addNew(auto: AutocompleteComponent): void {\n this.value.push(auto.value);\n this.ensureLabelsForIds();\n this.newEntry = '';\n this.internalDataSource = this.internalDataSource.filter(\n (it) => !this._value.includes(it.key)\n );\n this.markAsTouched();\n }\n\n getDeleteMessage(label: string): string {\n return (\n this.deleteLabelTemplate ?? this.literals[this.lang].deleteLabelTemplate\n ).replace('<<label>>', label);\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n OnInit,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\nimport { languageDetector } from '../lang';\n\nconst KEY_SPACE = ' ';\n\n@Component({\n selector: 'lux-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => CheckboxComponent)\n }\n ]\n})\nexport class CheckboxComponent\n implements ControlValueAccessor, OnInit, AfterViewInit\n{\n static idCounter = 0;\n\n @ViewChild('ck', { static: false }) ck: ElementRef;\n\n private _lang = languageDetector();\n @Input()\n set lang(l: string) {\n if (l === this._lang) {\n return;\n }\n if (Object.keys(this.literals).includes(l)) {\n this._lang = l;\n } else {\n this._lang = 'en';\n }\n }\n get lang(): string {\n return this._lang;\n }\n private internalValue: boolean;\n @Input()\n get value(): boolean {\n return this.internalValue;\n }\n set value(v: boolean) {\n if (this.internalValue === v) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this.internalValue, v);\n this.internalValue = v;\n this.syncModel();\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n\n get tabindexValue(): string {\n return this.disabled ? null : '0';\n }\n\n @Input() label: string = null;\n @Input() name: string = null;\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(v: boolean) {\n if (v === this._disabled) {\n return;\n }\n this._disabled = v;\n this.syncModel();\n }\n @Input() inputId: string;\n\n literals = {\n en: {\n yesLabel: 'Yes',\n noLabel: 'No'\n },\n es: {\n yesLabel: 'Sí',\n noLabel: 'No'\n }\n };\n touched = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = !!value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.name || 'checkbox'}$${CheckboxComponent.idCounter++}`;\n }\n ngAfterViewInit(): void {\n this.syncModel();\n }\n\n clicked(): void {\n if (!this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n }\n }\n onKey(event: KeyboardEvent): void {\n if (event.key === KEY_SPACE && !this.disabled) {\n this.value = !this.internalValue;\n this.markAsTouched();\n event.preventDefault();\n }\n }\n\n private syncModel(): void {\n if (this.ck) {\n this.ck.nativeElement.checked = this.internalValue;\n }\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n AbstractControl,\n ValidationErrors,\n Validator,\n NG_VALIDATORS\n} from '@angular/forms';\nimport {\n hasValue,\n isInitialAndEmpty,\n isValidEmail,\n isValidNumber,\n normalizeDate\n} from '../helperFns';\nimport { languageDetector } from '../lang';\n@Component({\n selector: 'lux-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => InputComponent)\n }\n ]\n})\nexport class InputComponent implements OnInit, ControlValueAccessor, Validator {\n static idCounter = 0;\n\n @ViewChild('input', { static: false }) input: ElementRef;\n @ViewChild('textarea', { static: false }) textarea: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _value: any = '';\n private _type: string;\n private _placeholder: string;\n private _pattern?: string = undefined;\n private _regexp?: RegExp = undefined;\n private _currency: string;\n private _required: boolean;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n min: 'Minimum value is $min.',\n max: 'Maximum value is $max.',\n email: 'Format should match example@example.com.'\n },\n es: {\n required: 'El campo es obligatorio.',\n min: 'El valor mínimo es $min.',\n max: 'El valor máximo es $max.',\n email: 'El campo debe tener un formato como ejemplo@ejemplo.com.'\n }\n };\n\n public domain: string;\n @Input()\n public rows?: number | string;\n @Input()\n public cols?: number | string;\n @Input()\n public step?: number;\n @Input()\n public min?: number | string;\n @Input()\n public max?: number | string;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set pattern(p: string | undefined) {\n this._pattern = p;\n if (p === undefined) {\n this._regexp = undefined;\n } else {\n try {\n this._regexp = new RegExp(p);\n } catch (e) {\n this._pattern = undefined;\n this._regexp = undefined;\n }\n }\n }\n get pattern(): string | undefined {\n return this._pattern;\n }\n\n @Input()\n set currency(v: string) {\n this._currency = v.toUpperCase();\n }\n get currency(): string {\n return this._currency;\n }\n\n @Input()\n set placeholder(v: string) {\n this._placeholder = v;\n }\n get placeholder(): string {\n return this._placeholder ? this._placeholder : '';\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set type(v: string) {\n this._type = v.toLowerCase();\n this.domain = v.toLowerCase();\n this.checkType(v);\n }\n get type(): string {\n return this._type ? this._type : 'text';\n }\n\n @Input()\n set value(v: any) {\n v = v === undefined ? null : v;\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (this.type === 'date') {\n v = normalizeDate(v);\n }\n\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n if (this.isPercentage() || this.isPermillage() || this.isNumber()) {\n const numVal = parseFloat(this._value);\n if (!Number.isNaN(numVal)) {\n return numVal;\n }\n }\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value): void => {};\n onTouched = (): void => {};\n\n constructor() {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setValueInControl(value);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setValueInControl(v: any): void {\n if (this.domain === 'date') {\n v = normalizeDate(v);\n }\n if (this.input) {\n this.input.nativeElement.value = v;\n }\n if (this.textarea) {\n this.textarea.nativeElement.value = v;\n }\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && !hasValue(hasValue)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (this._regexp && hasValue(value) && !this._regexp.test(value)) {\n result = result || {};\n result.pattern = {\n value,\n reason: `Value must follow the pattern: ${this._pattern}`\n };\n }\n if (this.type === 'email' && hasValue(value) && !isValidEmail(value)) {\n result = result || {};\n result.email = { value, reason: 'Invalid email.' };\n }\n if (this.type === 'number' && hasValue(value) && !isValidNumber(value)) {\n result = result || {};\n result.numeric = { value, reason: 'Invalid number.' };\n }\n if (\n this.type === 'date' ||\n this.type === 'time' ||\n this.type === 'timestamp'\n ) {\n if (\n typeof this.min === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.min) === -1\n ) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (\n typeof this.max === 'string' &&\n hasValue(value) &&\n String(value).localeCompare(this.max) !== -1\n ) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n\n if (\n this.type === 'percentage' ||\n this.type === 'permillage' ||\n this.type === 'number' ||\n this.type === 'currency'\n ) {\n if (hasValue(this.min) && hasValue(value) && value < +this.min) {\n result = result || {};\n result.min = {\n value,\n min: this.min,\n reason: `Value is lower than minimum value: ${this.min}.`\n };\n }\n if (hasValue(this.max) && hasValue(value) && value > +this.max) {\n result = result || {};\n result.max = {\n value,\n max: this.max,\n reason: `Value is greater than than maximum value: ${this.max}.`\n };\n }\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `${this.type}$${InputComponent.idCounter++}`;\n }\n onLostFocus(): void {\n this.markAsTouched();\n }\n onKeyUp(newValue: string): void {\n this.value = newValue;\n }\n onChangeValue(newValue: string): void {\n this.value = newValue;\n this.markAsTouched();\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n isNumber(): boolean {\n return this.type === 'number';\n }\n isPercentage(): boolean {\n return this.type === 'percentage';\n }\n isPermillage(): boolean {\n return this.type === 'permillage';\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n checkType(type: string): void {\n switch (type) {\n case 'email':\n this.setEmailPatterns();\n break;\n case 'date':\n this.setDatePatterns();\n break;\n case 'time':\n this.setTimePatterns();\n break;\n case 'password':\n this.setPasswordPatterns();\n break;\n case 'number':\n this.setNumberPatterns();\n break;\n case 'currency':\n this.setCurrencyPatterns();\n break;\n case 'percentage':\n this.setPercentagePatterns();\n break;\n case 'permillage':\n this.setPermillagePatterns();\n break;\n default:\n break;\n }\n }\n\n setEmailPatterns(): void {}\n\n setDatePatterns(): void {\n this.min = this.min || '1900-01-01';\n this.max = this.max || '2100-01-01';\n }\n\n setTimePatterns(): void {}\n\n setPasswordPatterns(): void {}\n\n setNumberPatterns(): void {\n this.domain = 'number';\n this.placeholder = '0';\n }\n\n setCurrencyPatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.1;\n this.min = this.min || 0.0;\n this.max = this.max || 10000.0;\n this.value = 0.0;\n }\n\n setPercentagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 100.0;\n this.placeholder = '0.00';\n }\n\n setPermillagePatterns(): void {\n this.domain = 'number';\n this.step = this.step || 0.01;\n this.min = this.min || 0.0;\n this.max = this.max || 1000.0;\n this.placeholder = '0.00';\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnDestroy,\n OnInit,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/** Filter component to query for objects. */\n@Component({\n selector: 'lux-filter',\n templateUrl: './filter.component.html',\n styleUrls: ['./filter.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => FilterComponent)\n }\n ]\n})\nexport class FilterComponent\n implements ControlValueAccessor, OnInit, OnDestroy\n{\n static idCounter = 0;\n\n private touched = false;\n private _searchValue = '';\n\n @Input() disabled = false;\n /** id for the input. If left blank, it is autogenerated */\n @Input() inputId: string;\n /** Placeholder default text. */\n @Input() placeholder = '';\n /** Search value introduced by the user. */\n @Input()\n get searchValue(): string {\n return this._searchValue;\n }\n set searchValue(v: string) {\n v = (v || '').toString();\n if (v === this._searchValue) {\n return;\n }\n this.onChange(v);\n this._searchValue = v;\n }\n /** Search on type: (default true) Auto-search when user types in. */\n @Input() searchOnType = true;\n /** Custom aria label in case of not using a label */\n @Input('aria-label') ariaLabel: string;\n\n private debounceValue = 300; // 300 ms\n /** Debounce time in milliseconds. (defaults to 300 ms) */\n @Input()\n set debounce(val: number) {\n this.debounceValue = val;\n this.recreateObservable();\n }\n get debounce(): number {\n return this.debounceValue;\n }\n\n /** Search value changed by user. */\n @Output() searchValueChange = new EventEmitter<string>();\n\n searchValue$: Observable<string>;\n\n private subject = new Subject<string>();\n private sub: Subscription;\n\n constructor() {\n this.recreateObservable();\n }\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.searchValue = (value || '').toString();\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `filter$${FilterComponent.idCounter++}`;\n }\n ngOnDestroy(): void {\n this.freeSubscriptions();\n }\n clear(): void {\n this.searchValue = '';\n this.search();\n }\n search(): void {\n this.searchValueChange.emit(this.searchValue);\n }\n keyup(event: KeyboardEvent, newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n if (event.key === 'Enter') {\n this.searchNow(this.searchValue);\n }\n if (this.searchOnType) {\n this.addEvent();\n }\n }\n onInputValueChange(newValue: string): void {\n this.markAsTouched();\n this.searchValue = newValue;\n }\n\n private recreateObservable(): void {\n this.searchValue$ = this.subject\n .asObservable()\n .pipe(debounceTime(this.debounce));\n\n this.freeSubscriptions();\n this.sub = this.searchValue$.subscribe((value) => {\n this.searchValueChange.emit(value);\n });\n }\n private freeSubscriptions(): void {\n if (this.sub) {\n this.sub.unsubscribe();\n this.sub = null;\n }\n }\n private searchNow(value: string): void {\n this.searchValueChange.emit(value);\n }\n private addEvent(): void {\n this.subject.next(this.searchValue);\n }\n}\n","import { ComponentRef } from '@angular/core';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { ContentRef } from './util';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\n\nexport class ActiveModal {\n close(result?: any): void {}\n dismiss(reason?: any): void {}\n}\n\nexport class ModalRef {\n private _resolve: (result?: any) => void;\n private _reject: (reason?: any) => void;\n\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content, will return `undefined`.\n */\n get componentInstance(): any {\n if (this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n\n /**\n * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n */\n result: Promise<any>;\n\n constructor(\n private _windowCmptRef: ComponentRef<LuxModalWindowComponent>,\n private _contentRef: ContentRef,\n private _backdropCmptRef?: ComponentRef<LuxModalBackdropComponent>,\n private _beforeDismiss?: () => any\n ) {\n _windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n this.dismiss(reason);\n });\n\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => {});\n }\n\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result?: any): void {\n if (this._windowCmptRef) {\n if (this._resolve) {\n this._resolve(result);\n }\n this._removeModalElements();\n }\n }\n\n private _dismiss(reason?: any): void {\n if (this._reject) {\n this._reject(reason);\n }\n this._removeModalElements();\n }\n\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason?: any): void {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(\n (result) => {\n if (result !== false) {\n this._dismiss(reason);\n }\n },\n () => {}\n );\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n\n private _removeModalElements(): void {\n const windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n\n if (this._backdropCmptRef) {\n const backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n }\n}\n","import { ViewRef, ComponentRef } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nexport const FOCUS = 'focus';\n\nexport enum Key {\n Tab = 9,\n Enter = 13,\n Escape = 27,\n Space = 32,\n PageUp = 33,\n PageDown = 34,\n End = 35,\n Home = 36,\n ArrowLeft = 37,\n ArrowUp = 38,\n ArrowRight = 39,\n ArrowDown = 40\n}\n\nexport const isDefined = (value: any): boolean =>\n value !== undefined && value !== null;\n\nexport class ContentRef {\n constructor(\n public nodes: any[],\n public viewRef?: ViewRef,\n public componentRef?: ComponentRef<any>\n ) {}\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable]',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nexport const getFocusableBoundaryElements = (\n element: HTMLElement\n): HTMLElement[] => {\n const list: HTMLElement[] = Array.from(\n element.querySelectorAll(\n FOCUSABLE_ELEMENTS_SELECTOR\n ) as NodeListOf<HTMLElement>\n ).filter((el) => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n};\n\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nexport const focusTrap = (\n element: HTMLElement,\n stopFocusTrap$: Observable<any>,\n refocusOnClick = false\n): void => {\n // last focused element\n const lastFocusedElement$ = fromEvent<FocusEvent>(element, 'focusin').pipe(\n takeUntil(stopFocusTrap$),\n map((e) => e.target)\n );\n\n // 'tab' / 'shift+tab' stream\n fromEvent<KeyboardEvent>(element, 'keydown')\n .pipe(\n takeUntil(stopFocusTrap$),\n /* eslint-disable import/no-deprecated */\n filter((e) => e.which === Key.Tab),\n /* eslint-enable import/no-deprecated */\n withLatestFrom(lastFocusedElement$)\n )\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n\n if (\n (focusedElement === first || focusedElement === element) &&\n tabEvent.shiftKey\n ) {\n last.focus();\n tabEvent.preventDefault();\n }\n\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(\n takeUntil(stopFocusTrap$),\n withLatestFrom(lastFocusedElement$),\n map((arr) => arr[1] as HTMLElement)\n )\n .subscribe((lastFocusedElement) => lastFocusedElement.focus());\n }\n};\n","export enum ModalDismissReasons {\n BackdropClick,\n Esc\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n HostBinding,\n HostListener\n} from '@angular/core';\n\nimport { getFocusableBoundaryElements, FOCUS } from './util';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\n\n@Component({\n selector: 'lux-modal-window',\n template: `\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\"><ng-content></ng-content></div>\n </div>\n `\n})\nexport class LuxModalWindowComponent\n implements OnInit, AfterViewInit, OnDestroy\n{\n private _elWithFocus: Element; // element that is focused prior to modal opening\n\n @Input() ariaDescribedBy: string;\n @Input() ariaLabelledBy: string;\n @Input() backdrop: boolean | string = false;\n @Input() keyboard = true;\n @Input() windowClass: string;\n\n @Output() dismissEvent = new EventEmitter();\n\n @HostBinding('class') get class(): string {\n return `modal ${this.windowClass || ''}`;\n }\n @HostBinding('attr.role') role = 'dialog';\n @HostBinding('tabindex') tabindex = '-1';\n @HostBinding('attr.aria-modal') ariamodal = true;\n @HostBinding('attr.aria-labelledby') get hostAriaLabelledBy(): string {\n return this.ariaLabelledBy;\n }\n @HostBinding('attr.aria-describedby') get hostAriaDescribedBy(): string {\n return this.ariaDescribedBy;\n }\n @HostListener('click', ['$event.target']) backdropClick(\n btn: HTMLElement\n ): void {\n if (this.backdrop === true && this._elRef.nativeElement === btn) {\n this.dismiss(ModalDismissReasons.BackdropClick);\n }\n }\n @HostListener('keyup.esc', ['$event']) escKey(event): void {\n if (this.keyboard && !event.defaultPrevented) {\n this.dismiss(ModalDismissReasons.Esc);\n }\n }\n\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _elRef: ElementRef<HTMLElement>\n ) {}\n\n dismiss(reason): void {\n this.dismissEvent.emit(reason);\n }\n\n ngOnInit(): void {\n this._elWithFocus = this._document.activeElement;\n }\n\n ngAfterViewInit(): void {\n if (!this._elRef.nativeElement.contains(document.activeElement)) {\n const firstFocusable = getFocusableBoundaryElements(\n this._elRef.nativeElement\n )[0];\n\n const elementToFocus = firstFocusable || this._elRef.nativeElement;\n elementToFocus.focus();\n }\n }\n\n ngOnDestroy(): void {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n\n let elementToFocus;\n if (elWithFocus && elWithFocus[FOCUS] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n } else {\n elementToFocus = body;\n }\n elementToFocus.focus();\n this._elWithFocus = null;\n }\n}\n","import {Component, Input, HostBinding} from '@angular/core';\n\n@Component({\n selector: 'lux-modal-backdrop',\n template: ''\n})\nexport class LuxModalBackdropComponent {\n @Input() backdropClass: string;\n\n @HostBinding('class') class = 'modal-backdrop fade show';\n @HostBinding('style') style = 'z-index: 1050';\n}\n","import { Injectable } from '@angular/core';\n\nexport interface LuxModalOptions {\n ariaDescribedBy?: string;\n ariaLabelledBy?: string;\n backdrop?: boolean;\n keyboard?: boolean;\n windowClass?: string;\n backdropClass?: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LuxModalConfig implements LuxModalOptions {\n backdrop = true;\n}\n","import {\n Injectable,\n ApplicationRef,\n ComponentFactoryResolver,\n TemplateRef,\n ComponentRef,\n Inject,\n Injector,\n RendererFactory2\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { ActiveModal, ModalRef } from './modal-ref';\nimport { ContentRef, focusTrap, isDefined } from './util';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { Subject } from 'rxjs';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\nimport { LuxModalOptions, LuxModalConfig } from './modal-config';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStack {\n private _activeWindowCmptHasChanged = new Subject();\n private _modalRefs: ModalRef[] = [];\n private _windowCmpts: ComponentRef<LuxModalWindowComponent>[] = [];\n private _ariaHiddenValues: Map<Element, string> = new Map();\n private _backdropAttributes = ['backdropClass'];\n private _windowAttributes = [\n 'ariaLabelledBy',\n 'backdrop',\n 'centered',\n 'keyboard',\n 'scrollable',\n 'size',\n 'windowClass'\n ];\n\n constructor(\n private _applicationRef: ApplicationRef,\n @Inject(DOCUMENT) private _document: any,\n private _injector: Injector,\n private _rendererFactory: RendererFactory2,\n private modalConfig: LuxModalConfig\n ) {\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt =\n this._windowCmpts[this._windowCmpts.length - 1];\n focusTrap(\n activeWindowCmpt.location.nativeElement,\n this._activeWindowCmptHasChanged\n );\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n\n open(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n options: LuxModalOptions\n ): ModalRef {\n const config = Object.assign({}, this.modalConfig, options);\n const containerEl = this._document.body;\n const renderer = this._rendererFactory.createRenderer(null, null);\n const removeBodyClass = (): void => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._revertAriaHidden();\n }\n };\n const activeModal = new ActiveModal();\n const contentRef = this.getContentRef(moduleCFR, content, activeModal);\n const backdropCmptRef: ComponentRef<LuxModalBackdropComponent> =\n config.backdrop ? this._attachBackdrop(moduleCFR, containerEl) : null;\n const windowCmptRef: ComponentRef<LuxModalWindowComponent> =\n this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n const modalRef: ModalRef = new ModalRef(\n windowCmptRef,\n contentRef,\n backdropCmptRef\n );\n this._registerModalRef(modalRef);\n this._registerWindowCmpt(windowCmptRef);\n modalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = (result: any): void => {\n modalRef.close(result);\n };\n activeModal.dismiss = (reason: any): void => {\n modalRef.dismiss(reason);\n };\n\n this._applyWindowOptions(windowCmptRef.instance, config);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackgroundOptions(backdropCmptRef.instance, config);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n windowCmptRef.changeDetectorRef.detectChanges();\n\n return modalRef;\n }\n\n private _applyWindowOptions(\n windowInstance: LuxModalWindowComponent,\n config: LuxModalOptions\n ): void {\n this._windowAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n windowInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _applyBackgroundOptions(\n backgroudInstance: LuxModalBackdropComponent,\n config: LuxModalOptions\n ): void {\n this._backdropAttributes.forEach((optionName: string) => {\n if (isDefined(config[optionName])) {\n backgroudInstance[optionName] = config[optionName];\n }\n });\n }\n\n private _revertAriaHidden(): void {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n\n private getContentRef(\n moduleCFR: ComponentFactoryResolver,\n content: any,\n activeModal: ActiveModal\n ): ContentRef {\n if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content, activeModal);\n }\n }\n\n private createFromTemplateRef(\n content: TemplateRef<any>,\n activeModal: ActiveModal\n ): ContentRef {\n const context = {\n $implicit: activeModal,\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n close(result): void {\n activeModal.close(result);\n },\n // eslint-disable-next-line prefer-arrow/prefer-arrow-functions\n dismiss(reason): void {\n activeModal.dismiss(reason);\n }\n };\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n\n private _attachBackdrop(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any\n ): ComponentRef<LuxModalBackdropComponent> {\n const backdropFactory = moduleCFR.resolveComponentFactory(\n LuxModalBackdropComponent\n );\n const backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n\n private _attachWindowComponent(\n moduleCFR: ComponentFactoryResolver,\n containerEl: any,\n contentRef: any\n ): ComponentRef<LuxModalWindowComponent> {\n const windowFactory = moduleCFR.resolveComponentFactory(\n LuxModalWindowComponent\n );\n const windowCmptRef = windowFactory.create(\n this._injector,\n contentRef.nodes\n );\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n\n private _registerModalRef(modalRef: ModalRef): void {\n const unregisterModalRef = (): void => {\n const index = this._modalRefs.indexOf(modalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n }\n };\n this._modalRefs.push(modalRef);\n modalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n\n private _registerWindowCmpt(\n windowCmpt: ComponentRef<LuxModalWindowComponent>\n ): void {\n this._windowCmpts.push(windowCmpt);\n this._activeWindowCmptHasChanged.next();\n\n windowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(windowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n\n private _setAriaHidden(element: Element): void {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach((sibling) => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n}\n","import {\n Injectable,\n ComponentFactoryResolver,\n TemplateRef,\n} from '@angular/core';\nimport { ModalStack } from './modal-stack';\nimport { ModalRef } from './modal-ref';\nimport { LuxModalOptions } from './modal-config';\n\n/**\n * A service that it allow open an close modal components\n */\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(\n private modalStack: ModalStack,\n private moduleCFR: ComponentFactoryResolver\n ) {}\n\n /**Open a modal component\n * @param content TemplateRef\n */\n open(content: TemplateRef<any>, options: LuxModalOptions = {}): ModalRef {\n return this.modalStack.open(this.moduleCFR, content, options);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { DataSource } from '../datasource';\nimport { Observable, of, Subject } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n switchMap\n} from 'rxjs/operators';\nimport { GeoPoint } from '../map/geopoint';\n\ninterface SearchResult {\n place_id: number;\n lat: number;\n lon: number;\n display_name: string;\n icon: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class GeolocationService {\n private debouncePeriodMs = 300; // ms\n private cacheSize = 20;\n private lastQueriesWithResults = new Map<string, SearchResult[]>();\n private lastQueriesLru: string[] = [];\n private currentSearch$: Subject<string>;\n private currentQuery$: Observable<SearchResult[]>;\n\n constructor(private http: HttpClient) {\n this.currentSearch$ = new Subject<string>();\n\n const typed$ = this.currentSearch$\n .asObservable()\n .pipe(distinctUntilChanged());\n\n this.currentQuery$ = typed$.pipe(\n debounceTime(this.debouncePeriodMs),\n\n switchMap((currentQuery) => {\n const data = this.getFromCache(currentQuery);\n if (data !== undefined) {\n return of(data);\n }\n // Nominatim search documentation:\n // https://nominatim.org/release-docs/develop/api/Search/\n const url =\n 'https://nominatim.openstreetmap.org/search?format=json&limit=20&q=' +\n encodeURIComponent(currentQuery);\n const headers = {\n 'Content-Type': 'application/json'\n };\n this.addToCache(currentQuery, []);\n\n return this.http.get(url, { headers }).pipe(\n map((response) => {\n const searchResults = response as unknown as SearchResult[];\n const uniqueResults = distinct(searchResults);\n return this.addToCache(currentQuery, uniqueResults);\n })\n );\n })\n );\n }\n\n searchGeolocation(query: string): Observable<SearchResult[]> {\n this.currentSearch$.next(query);\n return this.currentQuery$;\n }\n\n getLabels(\n instance: GeolocationService,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n const searchResults = instance.lastQueriesWithResults\n .get(instance.getLatestQuery())\n .filter((searchResult) => samePosition(searchResult, keys));\n return of(\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n return {\n key,\n label: searchResult.display_name\n };\n })\n );\n }\n\n getData(\n instance: GeolocationService,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.searchGeolocation(search).pipe(\n map((searchResults) =>\n searchResults.map((searchResult) => {\n const key: GeoPoint = {\n type: 'Point',\n coordinates: [searchResult.lon, searchResult.lat]\n };\n const label = searchResult.display_name;\n return { key, label };\n })\n )\n );\n }\n\n // Cache implemementation ---\n private getFromCache(query: string): SearchResult[] {\n if (this.lastQueriesWithResults.has(query)) {\n return this.lastQueriesWithResults.get(query);\n }\n return undefined;\n }\n private addToCache(query: string, data: SearchResult[]): SearchResult[] {\n if (this.lastQueriesWithResults.keys.length >= this.cacheSize) {\n const deletedQuery = this.lastQueriesLru[0];\n this.revomeFromCache(deletedQuery);\n }\n this.lastQueriesWithResults.set(query, data);\n this.lastQueriesLru.push(query);\n return data;\n }\n private revomeFromCache(query: string): void {\n this.lastQueriesWithResults.delete(query);\n const index = this.lastQueriesLru.findIndex((it) => it === query);\n this.lastQueriesLru.splice(index, 1);\n }\n private getLatestQuery(): string | null {\n return this.lastQueriesLru.length\n ? this.lastQueriesLru[this.lastQueriesLru.length - 1]\n : null;\n }\n // End cache implemementation ---\n}\n\nconst samePosition = (\n searchResult: SearchResult,\n keys: GeoPoint[]\n): boolean => {\n let found = false;\n keys.forEach((item) => {\n if (\n searchResult.lon === item.coordinates[0] &&\n searchResult.lat === item.coordinates[1]\n ) {\n found = true;\n }\n });\n return found;\n};\n\nconst distinct = (data: SearchResult[]): SearchResult[] => {\n const unique: { [key: string]: number } = {};\n return data.filter((r) => {\n if (unique[r.display_name]) {\n return false;\n }\n unique[r.display_name] = 1;\n return true;\n });\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ElementRef,\n ViewChild,\n forwardRef,\n TemplateRef\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n AbstractControl,\n ValidationErrors,\n NG_VALIDATORS\n} from '@angular/forms';\nimport { DataSource } from '../datasource';\nimport {\n isInitialAndEmpty,\n isValidNumber,\n roundToMultipleOf\n} from '../helperFns';\nimport { languageDetector } from '../lang';\nimport { ModalService } from '../modal/modal.service';\nimport { GeoPoint } from '../map/geopoint';\nimport { Observable } from 'rxjs';\nimport { GeolocationService } from './geolocation.service';\n\n@Component({\n selector: 'lux-geolocation',\n templateUrl: './geolocation.component.html',\n styleUrls: ['./geolocation.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => GeolocationComponent)\n }\n ]\n})\nexport class GeolocationComponent implements OnInit {\n static idCounter = 0;\n\n @ViewChild('latitude', { static: true }) latitude: ElementRef;\n @ViewChild('longitude', { static: true }) longitude: ElementRef;\n\n touched = false;\n dirty = false;\n lastErrors: ValidationErrors | null = null;\n\n private _disabled: string | boolean;\n private _required: boolean;\n private _value: any;\n\n public latitudeValue?: number = null;\n public longitudeValue?: number = null;\n\n isValidNumber = isValidNumber;\n\n public userErrors = {\n en: {\n required: 'Required field.',\n minLatitude: 'Minimum latitude is $minLatitude.',\n maxLatitude: 'Maximum latitude is $maxLatitude.',\n minLongitude: 'Minimum longitude is $minLongitude.',\n maxLongitude: 'Maximum longitude is $maxLongitude.'\n },\n es: {\n required: 'El campo es obligatorio.',\n minLatitude: 'La latitud mínima es $minLatitude.',\n maxLatitude: 'La latitud máxima es $maxLatitude.',\n minLongitude: 'La longitud mínima es $minLongitude.',\n maxLongitude: 'La longitud máxima es $maxLongitude.'\n }\n };\n\n public cardinalPoints = {\n en: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'W',\n unknown: '?'\n },\n es: {\n north: 'N',\n south: 'S',\n east: 'E',\n west: 'O',\n unknown: '?'\n }\n };\n\n @Input()\n public minLatitude: number;\n @Input()\n public maxLatitude: number;\n @Input()\n public minLongitude: number;\n @Input()\n public maxLongitude: number;\n @Input()\n public step: number;\n @Input()\n public zoom: number;\n\n get className(): string {\n return this.checkClassName();\n }\n\n @Input() lang = languageDetector();\n @Input() public inlineErrors = false;\n @Input() public inputId: string;\n @Input('aria-label') public ariaLabel: string;\n @Input() public readonly: boolean | null = null;\n\n @Input()\n set disabled(v: string | boolean) {\n v = typeof v === 'string' ? true : v;\n this._disabled = v;\n }\n get disabled(): string | boolean {\n return this._disabled;\n }\n\n @Input()\n set required(v: boolean) {\n this._required = v;\n }\n get required(): boolean {\n return this._required;\n }\n\n @Input()\n set value(v: GeoPoint) {\n if (v === this._value) {\n return; // prevent events when there is no changes\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n if (v.coordinates && v.coordinates.length === 2) {\n this._value = v;\n this.latitudeValue = v.coordinates[1];\n this.longitudeValue = v.coordinates[0];\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n } else {\n this._value = undefined;\n this.latitudeValue = undefined;\n this.longitudeValue = undefined;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): GeoPoint {\n return this._value;\n }\n\n @Output() valueChange = new EventEmitter<GeoPoint>();\n @Output() keyPress = new EventEmitter<KeyboardEvent>();\n\n onChange = (value: any): void => {};\n onTouched = (): void => {};\n\n constructor(\n private modalService: ModalService,\n public locationService: GeolocationService\n ) {}\n\n // ControlValueAccessor Interface implementation\n writeValue(value: any): void {\n this.value = value;\n this.setLatitudeInControl(this.latitudeValue);\n this.setLongitudeInControl(this.longitudeValue);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End of ControlValueAccessor Interface implementation\n\n private setLatitudeInControl(latitude: number): void {\n this.latitude.nativeElement.value = latitude;\n }\n private setLongitudeInControl(longitude: number): void {\n this.longitude.nativeElement.value = longitude;\n }\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n let result: ValidationErrors | null = null;\n\n if (this.required && (value === null || value === undefined)) {\n result = result || {};\n result.required = { value, reason: 'Required field.' };\n }\n if (\n this.minLatitude !== undefined &&\n this.minLatitude !== null &&\n this.latitudeValue < this.minLatitude\n ) {\n result = result || {};\n result.minLatitude = {\n value,\n min: this.minLatitude,\n reason: `Value is lower than minimum value: ${this.minLatitude}.`\n };\n }\n if (\n this.maxLatitude !== undefined &&\n this.maxLatitude !== null &&\n this.latitudeValue < this.maxLatitude\n ) {\n result = result || {};\n result.maxLatitude = {\n value,\n max: this.maxLatitude,\n reason: `Value is lower than maximum value: ${this.maxLatitude}.`\n };\n }\n if (\n this.minLongitude !== undefined &&\n this.minLongitude !== null &&\n this.longitudeValue < this.minLongitude\n ) {\n result = result || {};\n result.minLongitude = {\n value,\n min: this.minLongitude,\n reason: `Value is lower than minimum value: ${this.minLongitude}.`\n };\n }\n if (\n this.maxLongitude !== undefined &&\n this.maxLongitude !== null &&\n this.longitudeValue < this.maxLongitude\n ) {\n result = result || {};\n result.maxLongitude = {\n value,\n max: this.maxLongitude,\n reason: `Value is lower than maximum value: ${this.maxLongitude}.`\n };\n }\n this.lastErrors = result;\n return result;\n }\n // End of Validator interface\n\n ngOnInit(): void {\n this.inputId = this.inputId\n ? this.inputId\n : `geolocation$${GeolocationComponent.idCounter++}`;\n this.setPatterns();\n }\n\n updateLatitude(newLatitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [this.longitudeValue, newLatitude]\n };\n }\n updateLongitude(newLongitude: number | null): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, this.latitudeValue]\n };\n }\n updateLatitudeAndLongitude(newLatitudeAndLongitude: number[]): void {\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: newLatitudeAndLongitude\n };\n }\n\n roundToStepAndUpdateLatitudeAndLongitude(\n newLatitudeAndLongitude: number[]\n ): void {\n const newLatitude = roundToMultipleOf(\n newLatitudeAndLongitude[1],\n this.step\n );\n const newLongitude = roundToMultipleOf(\n newLatitudeAndLongitude[0],\n this.step\n );\n if (this.disabled || this.readonly) {\n return;\n }\n this.value = {\n type: 'Point',\n coordinates: [newLongitude, newLatitude]\n };\n }\n\n onEventLatitude(newLatitude: string): void {\n if (isValidNumber(newLatitude)) {\n this.updateLatitude(+newLatitude);\n }\n }\n onEventLongitude(newLongitude: string): void {\n if (isValidNumber(newLongitude)) {\n this.updateLongitude(+newLongitude);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n this.keyPress.emit(event);\n }\n\n checkClassName(): string {\n if (this.readonly === true) {\n return 'readonly';\n }\n return '';\n }\n\n openModalMap(modal: TemplateRef<any>): void {\n this.modalService.open(modal).result.then(\n (result) => {\n if (result !== 'cancel') {\n this.roundToStepAndUpdateLatitudeAndLongitude(result);\n }\n },\n (_) => {}\n );\n }\n\n get mapTitle(): string {\n return this._disabled || !!this.readonly ? 'Location:' : 'Select location:';\n }\n\n get self(): GeolocationComponent {\n return this;\n }\n\n getLabels(\n instance: GeolocationComponent,\n keys: GeoPoint[]\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getLabels(instance.locationService, keys);\n }\n\n getData(\n instance: GeolocationComponent,\n search: string\n ): Observable<DataSource<GeoPoint, string>> {\n return instance.locationService.getData(instance.locationService, search);\n }\n\n setPatterns(): void {\n this.step = this.step || 0.00001; // 0.00001 degrees = 1.11 meters\n this.zoom = this.zoom || 18; // (360/2^18) degrees ~ 0.00137 degrees ~ 153 meters\n this.minLatitude = this.minLatitude || -90;\n this.maxLatitude = this.maxLatitude || +90;\n this.minLongitude = this.minLongitude || -180;\n this.maxLongitude = this.maxLongitude || +180;\n }\n}\n","export enum Placement {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right'\n}\nexport type PlacementValue = 'left' | 'right' | 'top' | 'bottom';\n","import { Component, Input } from '@angular/core';\nimport { LuxTooltipContext } from './tooltip-context';\n\n/**\n * Default Tooltip Component\n */\n@Component({\n template: `\n <span class=\"lux-tooltip\" style=\"transition: opacity 200ms\">{{context.message}}</span>\n `\n})\nexport class TooltipComponent {\n\n @Input() context: LuxTooltipContext;\n\n constructor() { }\n\n}\n","import { ViewRef, ComponentRef } from '@angular/core';\n\nexport class TooltipContentRef {\n constructor(public viewRef?: ViewRef, public componentRef?: ComponentRef<any>) {}\n}\n","import {\n Injectable,\n Injector,\n ComponentRef,\n ComponentFactoryResolver,\n ApplicationRef,\n EmbeddedViewRef,\n ElementRef,\n TemplateRef\n} from '@angular/core';\n\nimport { PlacementValue, Placement } from './placement';\nimport { LuxTooltipContext } from './tooltip-context';\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipContentRef } from './tooltop-content';\n\n@Injectable()\nexport class TooltipService {\n constructor(\n private _injector: Injector,\n private _crf: ComponentFactoryResolver,\n private _applicationRef: ApplicationRef\n ) {}\n\n appendComponentToBody(\n content: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n const tooltipContentRef = this.getTooltipContentRef(content);\n if (tooltipContentRef) {\n let domElem = (tooltipContentRef.viewRef as EmbeddedViewRef<any>)\n .rootNodes[0];\n document.body.appendChild(domElem);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.changeDetectorRef.detectChanges();\n }\n domElem = this.setStyle(domElem, placement);\n domElem = this.setPosition(domElem, elHost, placement);\n return tooltipContentRef;\n }\n return null;\n }\n\n removeComponentFromBody(tooltipContentRef: TooltipContentRef): void {\n this._applicationRef.detachView(tooltipContentRef.viewRef);\n if (tooltipContentRef.componentRef) {\n tooltipContentRef.componentRef.destroy();\n }\n }\n\n private getTooltipContentRef(content: any): TooltipContentRef {\n if (!content) {\n // nothing to show\n } else if (content instanceof TemplateRef) {\n return this.createFromTemplateRef(content);\n } else if (typeof content === 'string') {\n return this.createFromComponent(TooltipComponent, { message: content });\n } else {\n return this.createFromComponent(content);\n }\n }\n\n private createFromTemplateRef(content: TemplateRef<any>): TooltipContentRef {\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n return new TooltipContentRef(viewRef);\n }\n\n private createFromComponent(\n component: any,\n context?: LuxTooltipContext\n ): TooltipContentRef {\n const componentRef: ComponentRef<any> = this._crf\n .resolveComponentFactory(component)\n .create(this._injector);\n if (context) {\n componentRef.instance.context = context;\n }\n this._applicationRef.attachView(componentRef.hostView);\n return new TooltipContentRef(componentRef.hostView, componentRef);\n }\n\n private setStyle(\n domElem: HTMLElement,\n placement: PlacementValue\n ): HTMLElement {\n domElem.style.position = 'absolute';\n domElem.style.minWidth = 'min-content';\n domElem.style.minHeight = 'min-content';\n const tooltipElement = this.getTooltipElementFromHTMLElemnt(domElem);\n placement =\n placement !== undefined\n ? (placement.toLocaleLowerCase() as PlacementValue)\n : 'top'; // 'Top' is the default value of placement\n tooltipElement.classList.add(`lux-tooltip-${placement}`);\n tooltipElement.classList.add('lux-tooltip-show');\n return domElem;\n }\n\n private getTooltipElementFromHTMLElemnt(domElem: HTMLElement): any {\n const elementsArray = Array.from(domElem.classList).filter(\n (className) => className === 'lux-tooltip'\n );\n if (elementsArray.length !== 0) {\n return domElem;\n } else if (domElem.hasChildNodes()) {\n const childrenArray = Array.from(domElem.children).filter(\n (child) =>\n this.getTooltipElementFromHTMLElemnt(child as HTMLElement) !== null\n );\n if (childrenArray.length !== 0) {\n return this.getTooltipElementFromHTMLElemnt(\n childrenArray[0] as HTMLElement\n );\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n\n private setPosition(\n domElem: HTMLElement,\n elHost: ElementRef,\n placement: PlacementValue\n ): HTMLElement {\n const hostPos = elHost.nativeElement.getBoundingClientRect();\n const tooltipPos = domElem.getBoundingClientRect();\n const scrollPos =\n window.pageYOffset ||\n document.documentElement.scrollTop ||\n document.body.scrollTop ||\n 0;\n let top = 0;\n let left = 0;\n const offset = 10;\n\n switch (placement) {\n case Placement.Bottom:\n top = hostPos.bottom + offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n case Placement.Left:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.left - tooltipPos.width - offset;\n break;\n case Placement.Right:\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n left = hostPos.right + offset;\n break;\n case Placement.Top:\n default:\n top = hostPos.top - tooltipPos.height - offset;\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n break;\n }\n top = Math.max(0, top);\n left = Math.max(0, left);\n domElem.style.top = `${top + scrollPos}px`;\n domElem.style.left = `${left}px`;\n return domElem;\n }\n}\n","import { HostListener, Input, Directive, ElementRef } from '@angular/core';\n\nimport { TooltipService } from './tooltip.service';\nimport { PlacementValue } from './placement';\nimport { TooltipContentRef } from './tooltop-content';\n\n/**\n * Tooltip directive\n */\n@Directive({\n selector: '[luxTooltip]'\n})\nexport class LuxTooltipDirective {\n /** Tooltip title */\n @Input() luxTooltip: any;\n\n /** Component, TemplateRef or String */\n @Input() content: any;\n\n /** Placement */\n @Input() placement: PlacementValue;\n\n tooltipRef: TooltipContentRef;\n\n constructor(\n private elHost: ElementRef,\n private tooltipService: TooltipService\n ) {}\n\n @HostListener('mouseenter') onMouseEnter(): void {\n if (!this.tooltipRef) {\n this.tooltipRef = this.show(this.content, this.elHost, this.placement);\n }\n }\n\n @HostListener('mouseleave') onMouseLeave(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n @HostListener('click') onClick(): void {\n if (this.tooltipRef) {\n this.remove(this.tooltipRef);\n this.tooltipRef = null;\n }\n }\n\n show(\n component: any,\n elHost: ElementRef,\n placement: PlacementValue\n ): TooltipContentRef {\n return this.tooltipService.appendComponentToBody(\n component,\n elHost,\n placement\n );\n }\n\n remove(tooltipRef: TooltipContentRef): void {\n this.tooltipService.removeComponentFromBody(tooltipRef);\n }\n}\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport {\n Router,\n NavigationEnd,\n ActivatedRoute,\n ActivatedRouteSnapshot\n} from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nexport interface BreadcrumbItem {\n label: string;\n url: string;\n}\n@Component({\n selector: 'lux-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss']\n})\nexport class LuxBreadcrumbComponent implements OnInit, OnDestroy {\n public breadcrumbs: BreadcrumbItem[];\n private subs: Subscription[] = [];\n public imagePath = '../assets/img/arrow-forward.svg';\n\n constructor(private route: Router, private activedRoute: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.subs.push(\n this.route.events\n .pipe(filter((event) => event instanceof NavigationEnd))\n .subscribe((_) => {\n this.breadcrumbs = [];\n this.addBreadcrumbs(this.activedRoute.snapshot.root, true, null);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subs.forEach((s) => s.unsubscribe());\n this.subs = [];\n }\n\n private addBreadcrumbs(\n activedRouteSnapshot: ActivatedRouteSnapshot,\n isRoot: boolean,\n urlPrefix: string\n ): void {\n const routeConfig = activedRouteSnapshot.routeConfig;\n let url = urlPrefix || '';\n url += routeConfig ? '/' + this.getUrl(activedRouteSnapshot) : '';\n const label = routeConfig\n ? this.getLabel(activedRouteSnapshot)\n : isRoot\n ? 'Home'\n : '';\n if (label && url !== '/') {\n const breadcrumb = { label, url };\n this.breadcrumbs.push(breadcrumb);\n }\n if (activedRouteSnapshot.children.length) {\n this.addBreadcrumbs(activedRouteSnapshot.children[0], false, url);\n }\n }\n\n private getUrl(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n if (!activedRouteSnapshot.url[0]) {\n return '';\n }\n const id = activedRouteSnapshot.params.id;\n return id\n ? `${activedRouteSnapshot.url[0]}/${id}`\n : activedRouteSnapshot.routeConfig.path || '';\n }\n\n private getLabel(activedRouteSnapshot: ActivatedRouteSnapshot): string {\n const routeConfig = activedRouteSnapshot.routeConfig;\n if (!routeConfig) {\n return null;\n }\n if (activedRouteSnapshot.data && activedRouteSnapshot.data.title) {\n const data = activedRouteSnapshot.data;\n if (data.objectTitle) {\n return `${data.title} ${data.objectTitle}`;\n } else {\n return data.title;\n }\n }\n return activedRouteSnapshot.params.id || routeConfig.path;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { from, Observable, of } from 'rxjs';\n\nlet openLayersIsInstalled = false;\n\n@Injectable({ providedIn: 'root' })\nexport class OpenLayerLoaderService {\n load(): Observable<boolean> {\n if ((window as any).ol) {\n return of(true);\n }\n\n const openLayerJsUrl = 'https://openlayers.org/en/v5.3.0/build/ol.js';\n const openLayerCssUrl = 'https://openlayers.org/en/v5.3.0/css/ol.css';\n\n if (!openLayersIsInstalled) {\n openLayersIsInstalled = true; // only try to install it once\n loadCss(openLayerCssUrl, () => {});\n return from(\n new Promise<boolean>((resolve, _) => {\n loadScript(openLayerJsUrl, () => resolve(true));\n })\n );\n }\n return of(true);\n }\n}\n\n/** Dynamically load a script from url and return a callback */\nconst loadScript = (url: string, callback: () => void): void => {\n const script: any = document.createElement('script');\n script.type = 'text/javascript';\n\n if (script.readyState) {\n // for old IE\n script.onreadystatechange = (): void => {\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\n script.onreadystatechange = null;\n callback();\n }\n };\n } else {\n // Others browsers\n script.onload = (): void => {\n callback();\n };\n }\n script.src = url;\n document.getElementsByTagName('head')[0].appendChild(script);\n};\n\n/** Dynamically load css from url and return a callback */\nconst loadCss = (url: string, callback: () => void): void => {\n const link: any = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.type = 'text/javascript';\n link.href = url;\n link.onload = (): void => {\n callback();\n };\n document.getElementsByTagName('head')[0].appendChild(link);\n};\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n AfterViewInit\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { OpenLayerLoaderService } from '../geolocation/openlayer-loader.service';\n\nimport { GeoPoint } from './geopoint';\n\n// @dynamic\ndeclare const ol: any;\n\n@Component({\n selector: 'lux-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\nexport class MapComponent implements OnInit, AfterViewInit {\n static idCounter = 0;\n\n private loaded$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n private _map: any;\n\n @Input() mapId;\n\n _zoom: number;\n @Input()\n set zoom(zoom: number) {\n if (!isNaN(zoom)) {\n this._zoom = zoom;\n if (this._map) {\n this._map.getView().setZoom(zoom);\n }\n }\n }\n get zoom(): number {\n return this._zoom;\n }\n\n _center: GeoPoint;\n @Input()\n set center(center: GeoPoint) {\n if (center) {\n if (center.coordinates && center.coordinates.length === 2) {\n this._center = center;\n if (this._map) {\n this._map.getView().setCenter(ol.proj.fromLonLat(center.coordinates));\n }\n }\n }\n }\n get center(): GeoPoint {\n return this._center;\n }\n\n _readonly: boolean;\n @Input()\n set readonly(readonly: boolean) {\n if (!readonly) {\n if (this._map) {\n this._map.on('click', (args: any) => {\n // args.coordinate is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n const coordinates = ol.proj.toLonLat(args.coordinate);\n // alternatively: const lonLat = ol.proj.transform(args.coordinate,'EPSG:3857','EPSG:4326');\n this.addMarkerAtCoordinates(coordinates);\n });\n this._map.on('pointermove', (event: any) => {\n const pixel = this._map.getEventPixel(event.originalEvent);\n const hit = this._map.hasFeatureAtPixel(pixel);\n this._map.getViewport().style.cursor = hit ? 'move' : 'grab';\n });\n }\n } else {\n if (this._map) {\n this._map.on('click', (args: any) => {});\n this._map.on('pointermove', (event: any) => {});\n this._map.getViewport().style.cursor = 'grab';\n }\n }\n this._readonly = readonly;\n // reset marker coordinates so marker interactions can be created or recreated accordingly\n // to the changes to readonly\n this.markerCoordinates = this.markerCoordinates;\n }\n get readonly(): boolean {\n return this._readonly;\n }\n\n private _marker: any;\n private _markerInteraction: any;\n private _markerCoordinates: number[];\n @Input()\n private set markerCoordinates(markerCoordinates: number[]) {\n if (markerCoordinates && markerCoordinates.length === 2) {\n this._markerCoordinates = markerCoordinates;\n if (this._map) {\n this.addMarkerAtCoordinates(markerCoordinates);\n }\n } else {\n this._markerCoordinates = undefined;\n if (this._map) {\n this.removeMarker();\n }\n }\n }\n private get markerCoordinates(): number[] {\n return this._markerCoordinates;\n }\n @Input()\n set markerPoint(markerPoint: GeoPoint) {\n if (\n !markerPoint ||\n !(markerPoint.coordinates && markerPoint.coordinates.length === 2)\n ) {\n this.markerCoordinates = undefined;\n } else {\n this.markerCoordinates = [\n +markerPoint.coordinates[0],\n +markerPoint.coordinates[1]\n ];\n }\n this.valueChange.emit(markerPoint);\n }\n get markerPoint(): GeoPoint {\n return {\n type: 'Point',\n coordinates: this.markerCoordinates\n };\n }\n @Output() valueChange = new EventEmitter<GeoPoint>();\n\n private _markerSource: any;\n private _markerStyle: any;\n\n constructor(olLoader: OpenLayerLoaderService) {\n olLoader.load().subscribe((_) => {\n // Initialize\n this._markerSource = new ol.source.Vector();\n this._markerStyle = new ol.style.Style({\n image: new ol.style.Icon({\n anchor: [0.5, 1],\n scale: 0.25,\n src: '/assets/img/marker.png'\n })\n });\n this.loaded$.next(true);\n });\n }\n\n ngOnInit(): void {\n this.mapId = this.mapId ? this.mapId : 'map' + MapComponent.idCounter++;\n }\n\n ngAfterViewInit(): void {\n this.loaded$.subscribe((loaded) => {\n if (loaded) {\n this.initMap();\n }\n });\n }\n private initMap(): void {\n this._map = new ol.Map({\n target: this.mapId,\n controls: ol.control.defaults({ attribution: false }),\n layers: [\n new ol.layer.Tile({\n source: new ol.source.OSM()\n }),\n new ol.layer.Vector({\n source: this._markerSource,\n style: this._markerStyle\n })\n ],\n view: new ol.View({\n center: ol.proj.fromLonLat(\n this.center !== undefined ? this.center.coordinates : [0, 0]\n ),\n zoom: this.zoom\n })\n });\n\n if (this.center === undefined || this.center === null) {\n // if the center is not set, we set its default value\n if ('geolocation' in navigator) {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n this.center = {\n type: 'Point',\n coordinates: [position.coords.longitude, position.coords.latitude]\n };\n },\n (error) => {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n );\n } else {\n this.center = {\n type: 'Point',\n coordinates: [0, 0]\n };\n }\n } else {\n // the center needs the map to be properly set, so if it was set before the map was initialized,\n // we set the center again to perform necessary adjustements\n this.center = this.center;\n }\n\n if (this.zoom === undefined || this.zoom === null) {\n // if the zoom is not set, we set its default value\n this.zoom = 18;\n } else {\n // the zoom needs the map to be properly set, so if it was set before the map was initialized,\n // we set the zoom again to perform necessary adjustements\n this.zoom = this.zoom;\n }\n\n if (this.readonly === undefined || this.readonly === null) {\n // if readonly is not set, we set its default value\n this.readonly = false;\n } else {\n // readonly needs the map to be properly set, so if it was set before the map was initialized,\n // we set readonly again to perform necessary adjustements\n this.readonly = this.readonly;\n }\n\n if (\n this.markerCoordinates !== undefined &&\n this.markerCoordinates !== null\n ) {\n // the marker coordinates need the map to be properly set, so if they were set before the map was initialized,\n // we set the marker coordinates again to perform necessary adjustements\n this.markerCoordinates = this.markerCoordinates;\n }\n }\n\n private addMarkerAtCoordinates(coordinates: number[]): void {\n if (coordinates && coordinates.length === 2) {\n if (this._marker !== undefined) {\n this.removeMarker();\n }\n this._marker = new ol.Feature({\n geometry: new ol.geom.Point(\n // [lon, lat] is in EPSG:4326 (degrees), we transform it into EPSG:3857 (meters)\n ol.proj.transform(coordinates, 'EPSG:4326', 'EPSG:3857')\n )\n });\n this._markerSource.addFeature(this._marker);\n this._markerCoordinates = this.getMarkerCoordinates();\n\n if (!this.readonly) {\n const dragInteraction = new ol.interaction.Modify({\n features: new ol.Collection([this._marker]),\n style: this._markerStyle,\n pixelTolerance: 50,\n hitDetection: true\n });\n this._markerInteraction = dragInteraction;\n this._map.addInteraction(dragInteraction);\n }\n\n this._marker.on(\n 'change',\n () => {\n this._markerCoordinates = this.getMarkerCoordinates();\n },\n this._marker\n );\n }\n }\n\n private removeMarker(): void {\n if (this._marker !== undefined) {\n this._markerSource.removeFeature(this._marker);\n this._marker = undefined;\n }\n if (this._markerInteraction !== undefined) {\n this._map.getInteractions().pop();\n this._markerInteraction = undefined;\n }\n }\n\n private getMarkerCoordinates(): number[] | null {\n if (this._marker === undefined || this._marker == null) {\n return this._marker;\n }\n const coordinates = this._marker.getGeometry().getCoordinates();\n // coordinates is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\n return ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326');\n }\n\n onResize(): void {\n if (this._map) {\n this._map.updateSize();\n }\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\nimport { languageDetector } from '../lang';\r\nimport { PaginationInfo } from './pagination';\r\n\r\n@Component({\r\n selector: 'lux-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit {\r\n literals = {\r\n en: {\r\n first: 'First',\r\n previous: 'Previous',\r\n next: 'Next',\r\n last: 'Last'\r\n },\r\n es: {\r\n first: 'Primero',\r\n previous: 'Anterior',\r\n next: 'Siguiente',\r\n last: 'Último'\r\n }\r\n };\r\n\r\n public first: string;\r\n public previous: string;\r\n public next: string;\r\n public last: string;\r\n\r\n public showPagination = false;\r\n public hidePrevious = false;\r\n public lastPage = false;\r\n public totalPages = 0;\r\n public displayNextEllipsis = false;\r\n public displayPreviousEllipsis = false;\r\n\r\n public pages: number[] = [];\r\n\r\n @Output() goToPage = new EventEmitter<number>();\r\n @Output() pageSizeChange = new EventEmitter<number>();\r\n\r\n /** Current page, total items and items to show per page */\r\n private paginationInfoValue: PaginationInfo;\r\n\r\n private _lang: string;\r\n @Input()\r\n set lang(l: string) {\r\n if (l === this._lang) {\r\n return;\r\n }\r\n if (Object.keys(this.literals).includes(l)) {\r\n this._lang = l;\r\n } else {\r\n this._lang = 'en';\r\n }\r\n this.loadLanguage();\r\n }\r\n get lang(): string {\r\n return this._lang;\r\n }\r\n\r\n @Input()\r\n set paginationInfo(value: PaginationInfo) {\r\n this.paginationInfoValue = value;\r\n this.syncState();\r\n }\r\n get paginationInfo(): PaginationInfo {\r\n return this.paginationInfoValue;\r\n }\r\n\r\n constructor() {\r\n this.lang = languageDetector();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.calculatePages();\r\n }\r\n\r\n pageSizeChanged(pageSize: number): void {\r\n this.paginationInfo.pageSize = pageSize;\r\n this.syncState();\r\n this.pageSizeChange.emit(pageSize);\r\n }\r\n\r\n onPage(n: number): void {\r\n this.goToPage.emit(n);\r\n }\r\n\r\n onFirst(): void {\r\n this.goToPage.emit(0);\r\n }\r\n\r\n onLast(): void {\r\n this.goToPage.emit(this.totalPages - 1);\r\n }\r\n onNext(): void {\r\n const page = (this.paginationInfo.page || 0) + 1;\r\n this.goToPage.emit(page);\r\n }\r\n onPrevious(): void {\r\n const page = (this.paginationInfo.page || 0) - 1;\r\n this.goToPage.emit(page);\r\n }\r\n\r\n private syncState(): void {\r\n this.pages = this.calculatePages();\r\n\r\n this.showPagination =\r\n this.paginationInfo.total > this.paginationInfo.pageSize;\r\n this.hidePrevious = this.paginationInfo.page === 0;\r\n this.lastPage =\r\n this.paginationInfo.pageSize * (this.paginationInfo.page + 1) >=\r\n this.paginationInfo.total;\r\n this.totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) || 0;\r\n this.displayNextEllipsis = !this.pages.includes(this.totalPages - 1);\r\n this.displayPreviousEllipsis = !this.pages.includes(0);\r\n }\r\n\r\n private calculatePages(): number[] {\r\n const totalPages =\r\n Math.ceil(this.paginationInfo.total / this.paginationInfo.pageSize) - 1; // 0-index\r\n const p = this.paginationInfo.page || 0;\r\n const pagesToShow = this.paginationInfo.pagesToShow;\r\n const pages: number[] = [];\r\n pages.push(p);\r\n const times = pagesToShow - 1;\r\n for (let i = 0; i < times; i++) {\r\n if (pages.length < pagesToShow) {\r\n if (Math.min(...pages) > 0) {\r\n pages.unshift(Math.min(...pages) - 1);\r\n }\r\n }\r\n if (pages.length < pagesToShow) {\r\n if (Math.max(...pages) < totalPages) {\r\n pages.push(Math.max(...pages) + 1);\r\n }\r\n }\r\n }\r\n pages.sort((a, b) => a - b);\r\n return pages;\r\n }\r\n\r\n private loadLanguage(): void {\r\n const l = this.literals[this.lang];\r\n this.first = l.first;\r\n this.previous = l.previous;\r\n this.next = l.next;\r\n this.last = l.last;\r\n }\r\n}\r\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\nimport { isInitialAndEmpty } from '../helperFns';\n\nexport interface RadioItem {\n name?: string;\n label: string;\n value: any;\n}\n\n@Component({\n selector: 'lux-radiogroup',\n templateUrl: './radiogroup.component.html',\n styleUrls: ['./radiogroup.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => RadiogroupComponent)\n }\n ]\n})\nexport class RadiogroupComponent implements ControlValueAccessor, Validator {\n private touched = false;\n\n @Input() name = 'radiogroup1';\n @Input() public disabled: boolean | null = false;\n @Input() public readonly: boolean | null = false;\n @Input() public required: boolean | null = false;\n\n @Input()\n set items(col: RadioItem[]) {\n this._items = (col || []).map((it, index) =>\n this.ensureHasUniqueName(it, index)\n );\n this.itemsChange.emit(col);\n }\n get items(): RadioItem[] {\n return this._items;\n }\n @Output() itemsChange = new EventEmitter<RadioItem[]>();\n\n @Input()\n set value(v: any) {\n if (v === this._value) {\n return;\n }\n const initialAndEmpty = isInitialAndEmpty(this._value, v);\n this._value = v;\n this.onChange(v);\n if (!initialAndEmpty) {\n this.valueChange.emit(v);\n }\n }\n get value(): any {\n return this._value;\n }\n @Output() valueChange = new EventEmitter<any>();\n\n private _value: any = undefined;\n private _items: RadioItem[] = [];\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n setValue(event: MouseEvent, item: RadioItem): void {\n if (!this.disabled && !this.readonly) {\n this.value = item.value;\n this.markAsTouched();\n }\n event.preventDefault();\n }\n ensureHasUniqueName(item: RadioItem, index: number): RadioItem {\n if (!item.name) {\n item.name = `${this.name}_${index}`;\n }\n return item;\n }\n}\n","import {\n Component,\n Input,\n EventEmitter,\n Output,\n forwardRef\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nlet sequencer = 0;\n\n@Component({\n selector: 'lux-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => SelectComponent)\n }\n ]\n})\nexport class SelectComponent implements ControlValueAccessor, Validator {\n @Input() id = 'stringList' + sequencer++;\n @Input() disabled = false;\n @Input() required = false;\n /** Allow multiple elements */\n @Input() multiple = true;\n @Input() value: string[] = [];\n @Output() valueChange = new EventEmitter<string[]>();\n @Input() placeholder = 'Add new';\n /** If set, check there is no duplicates in the data. */\n @Input() unique = true;\n /** Validation function for new items. Returns error or null if valid */\n @Input() validateItem: (item: string) => string = (_) => null;\n\n newEntry = '';\n error = null;\n isValidNewEntry = false;\n\n private touched = false;\n\n constructor() {}\n\n // ControlValueAccessor Interface\n onChange = (value): void => {};\n onTouched = (): void => {};\n writeValue(value: any): void {\n this.value = value;\n }\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n markAsTouched(): void {\n if (!this.touched) {\n this.onTouched();\n this.touched = true;\n }\n }\n setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n }\n // End ControlValueAccessor Interface\n\n // Validator interface\n registerOnValidatorChange(): void {}\n\n validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n if (\n this.required &&\n (value === '' || value === null || value === undefined)\n ) {\n return { required: { value, reason: 'Required field.' } };\n }\n return null;\n }\n // End of Validator interface\n\n get canAdd(): boolean {\n return this.multiple || this.value.length === 0;\n }\n add(val: string): void {\n this.value.push(val);\n this.newEntry = '';\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n remove(index: number): void {\n if (this.value.length > index) {\n this.value.splice(index, 1);\n this.markAsTouched();\n this.valueChange.emit(this.value);\n }\n }\n onKeyPress(event: KeyboardEvent): void {\n if (event.key === 'Enter' && !this.error && this.newEntry !== '') {\n // Add on pressing Enter/Return\n this.markAsTouched();\n this.add(this.newEntry);\n }\n }\n onChangeNewEntry(newValue: string): void {\n this.markAsTouched();\n if (!newValue) {\n this.isValidNewEntry = false;\n this.error = null;\n return;\n }\n if (this.unique) {\n const found = (this.value || []).find((it) => it === newValue);\n this.isValidNewEntry = !found;\n this.error = found\n ? `Value '${newValue}' is already in. Cannot add duplicates.`\n : null;\n if (!this.isValidNewEntry) {\n return;\n }\n }\n this.error = this.validateItem(newValue);\n this.isValidNewEntry = !this.error;\n }\n}\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[luxVoiceRecognition]'\n})\nexport class VoiceRecognitionDirective implements OnInit {\n @Input() language: string;\n // See API at: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition\n private recognition: any;\n private isRecognizing = false;\n private mic: any;\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n const speechRecognition = (window as any).webkitSpeechRecognition;\n if (speechRecognition) {\n this.recognition = new speechRecognition();\n }\n }\n\n ngOnInit(): void {\n if (this.recognition) {\n // API is available\n this.recognition.lang = this.language || window.navigator.language;\n this.recognition.interimResults = false;\n this.recognition.maxAlternatives = 1;\n\n // Add mic icon\n this.mic = document.createElement('div');\n this.mic.setAttribute('class', 'lux-microphone');\n\n const parent = this.el.nativeElement.parentElement;\n parent.appendChild(this.mic);\n\n // Add event handlers\n this.mic.onclick = (): void => this.microphoneClick();\n this.recognition.onresult = (event): void => this.onRecognized(event);\n }\n }\n\n microphoneClick(): void {\n if (this.isRecognizing) {\n // stop\n this.isRecognizing = false;\n this.renderer.removeClass(this.mic, 'lux-recording');\n this.recognition.abort();\n } else {\n // start\n this.el.nativeElement.value = getRecordingMessage(this.language);\n this.isRecognizing = true;\n this.renderer.addClass(this.mic, 'lux-recording');\n this.recognition.start();\n }\n }\n onRecognized(event: any): void {\n const recognizedText = event.results[0][0].transcript;\n this.isRecognizing = false;\n this.el.nativeElement.value = recognizedText;\n this.renderer.removeClass(this.mic, 'lux-recording');\n }\n}\n\nconst getRecordingMessage = (lang: string): string => {\n switch (lang.toLowerCase()) {\n case 'es':\n case 'es-es':\n return 'Grabando...';\n case 'en':\n case 'en-uk':\n case 'en-us':\n default:\n return 'Recording...';\n }\n};\n","\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { ClassProvider, FactoryProvider, InjectionToken, PLATFORM_ID } from '@angular/core';\n\n/* Create a new injection token for injecting the window into a component. */\nexport const WINDOW = new InjectionToken('WindowToken');\n\n/* Define abstract class for obtaining reference to the global window object. */\nexport abstract class WindowRef {\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n throw new Error('Not implemented.');\n }\n\n}\n\n/* Define class that implements the abstract class and returns the native window object. */\nexport class BrowserWindowRef extends WindowRef {\n\n constructor() {\n super();\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n get nativeWindow(): Window | Object {\n return window;\n }\n\n}\n\n/* Create an factory function that returns the native window object. */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const windowFactory = (browserWindowRef: BrowserWindowRef, platformId: Object): Window | Object => {\n if (isPlatformBrowser(platformId)) {\n return browserWindowRef.nativeWindow;\n }\n return new Object();\n};\n\n/* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */\nconst browserWindowProvider: ClassProvider = {\n provide: WindowRef,\n useClass: BrowserWindowRef\n};\n\n/* Create an injectable provider that uses the windowFactory function for returning the native window object. */\nconst windowProvider: FactoryProvider = {\n provide: WINDOW,\n useFactory: windowFactory,\n deps: [ WindowRef, PLATFORM_ID ]\n};\n\n/* Create an array of providers. */\nexport const WINDOW_PROVIDERS = [\n browserWindowProvider,\n windowProvider\n];\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { AngularResizedEventModule } from 'angular-resize-event';\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { AutocompleteListComponent } from './autocomplete-list/autocomplete-list.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { InputComponent } from './input/input.component';\nimport { FilterComponent } from './filter/filter.component';\nimport { GeolocationComponent } from './geolocation/geolocation.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { LuxTooltipDirective } from './tooltip/tooltip.directive';\nimport { LuxBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { LuxModalWindowComponent } from './modal/modal-window';\nimport { LuxModalBackdropComponent } from './modal/modal-backdrop';\nimport { MapComponent } from './map/map.component';\nimport { ModalService } from './modal/modal.service';\nimport { PaginationComponent } from './pagination/pagination.component';\nimport { RadiogroupComponent } from './radiogroup/radiogroup.component';\nimport { SelectComponent } from './select/select.component';\nimport { TooltipComponent } from './tooltip/tooltip.component';\nimport { TooltipService } from './tooltip/tooltip.service';\nimport { VoiceRecognitionDirective } from './voice-recognition/voice-recognition.directive';\nimport { WINDOW_PROVIDERS } from './window/window.service';\n\n@NgModule({\n declarations: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n TooltipComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ],\n entryComponents: [\n LuxModalWindowComponent,\n LuxModalBackdropComponent,\n TooltipComponent\n ],\n providers: [ModalService, TooltipService, WINDOW_PROVIDERS],\n imports: [\n AngularResizedEventModule,\n FormsModule,\n HttpClientModule,\n ReactiveFormsModule,\n RouterModule,\n CommonModule\n ],\n exports: [\n AutocompleteComponent,\n AutocompleteListComponent,\n FilterComponent,\n CheckboxComponent,\n InputComponent,\n GeolocationComponent,\n LuxTooltipDirective,\n LuxBreadcrumbComponent,\n LuxBreadcrumbComponent,\n MapComponent,\n SelectComponent,\n PaginationComponent,\n RadiogroupComponent,\n VoiceRecognitionDirective\n ]\n})\nexport class LuxModule {}\n","/*\n * Public API Surface of lux\n */\n\nexport { LuxModule } from './lib/lux.module';\nexport {\n DataSource,\n DataSourceItem,\n DecoratedDataSource,\n DecoratedDataSourceItem\n} from './lib/datasource';\nexport { AutocompleteComponent } from './lib/autocomplete/autocomplete.component';\nexport { AutocompleteListComponent } from './lib/autocomplete-list/autocomplete-list.component';\nexport {\n LuxBreadcrumbComponent,\n BreadcrumbItem\n} from './lib/breadcrumb/breadcrumb.component';\nexport { CheckboxComponent } from './lib/checkbox/checkbox.component';\nexport { FilterComponent } from './lib/filter/filter.component';\nexport { InputComponent } from './lib/input/input.component';\nexport { PaginationComponent } from './lib/pagination/pagination.component';\nexport { LuxTooltipDirective } from './lib/tooltip/tooltip.directive';\nexport { ModalService } from './lib/modal/modal.service';\nexport {\n RadioItem,\n RadiogroupComponent\n} from './lib/radiogroup/radiogroup.component';\nexport { ModalRef } from './lib/modal/modal-ref';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {GeolocationComponent as ɵa} from './lib/geolocation/geolocation.component';\nexport {GeolocationService as ɵd} from './lib/geolocation/geolocation.service';\nexport {OpenLayerLoaderService as ɵi} from './lib/geolocation/openlayer-loader.service';\nexport {MapComponent as ɵh} from './lib/map/map.component';\nexport {LuxModalBackdropComponent as ɵg} from './lib/modal/modal-backdrop';\nexport {LuxModalConfig as ɵc} from './lib/modal/modal-config';\nexport {ModalStack as ɵb} from './lib/modal/modal-stack';\nexport {LuxModalWindowComponent as ɵf} from './lib/modal/modal-window';\nexport {ContentRef as ɵr} from './lib/modal/util';\nexport {SelectComponent as ɵj} from './lib/select/select.component';\nexport {TooltipComponent as ɵk} from './lib/tooltip/tooltip.component';\nexport {TooltipService as ɵe} from './lib/tooltip/tooltip.service';\nexport {VoiceRecognitionDirective as ɵl} from './lib/voice-recognition/voice-recognition.directive';\nexport {BrowserWindowRef as ɵo,WINDOW as ɵm,WINDOW_PROVIDERS as ɵq,WindowRef as ɵn,windowFactory as ɵp} from './lib/window/window.service';"],"names":[],"mappings":"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"}
|
|
@@ -69,6 +69,7 @@ export declare class InputComponent implements OnInit, ControlValueAccessor, Val
|
|
|
69
69
|
registerOnValidatorChange(): void;
|
|
70
70
|
validate(control: AbstractControl): ValidationErrors | null;
|
|
71
71
|
ngOnInit(): void;
|
|
72
|
+
onLostFocus(): void;
|
|
72
73
|
onKeyUp(newValue: string): void;
|
|
73
74
|
onChangeValue(newValue: string): void;
|
|
74
75
|
onKeyPress(event: KeyboardEvent): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"LuxModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":27,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AutocompleteComponent"},{"__symbolic":"reference","name":"AutocompleteListComponent"},{"__symbolic":"reference","name":"FilterComponent"},{"__symbolic":"reference","name":"CheckboxComponent"},{"__symbolic":"reference","name":"InputComponent"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LuxTooltipDirective"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"LuxBreadcrumbComponent"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"PaginationComponent"},{"__symbolic":"reference","name":"RadiogroupComponent"},{"__symbolic":"reference","name":"ɵl"}],"entryComponents":[{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵk"}],"providers":[{"__symbolic":"reference","name":"ModalService"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵq"}],"imports":[{"__symbolic":"reference","module":"angular-resize-event","name":"AngularResizedEventModule","line":53,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":54,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":55,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":56,"character":4},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":57,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":58,"character":4}],"exports":[{"__symbolic":"reference","name":"AutocompleteComponent"},{"__symbolic":"reference","name":"AutocompleteListComponent"},{"__symbolic":"reference","name":"FilterComponent"},{"__symbolic":"reference","name":"CheckboxComponent"},{"__symbolic":"reference","name":"InputComponent"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LuxTooltipDirective"},{"__symbolic":"reference","name":"LuxBreadcrumbComponent"},{"__symbolic":"reference","name":"LuxBreadcrumbComponent"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"PaginationComponent"},{"__symbolic":"reference","name":"RadiogroupComponent"},{"__symbolic":"reference","name":"ɵl"}]}]}],"members":{}},"DataSource":{"__symbolic":"interface"},"DataSourceItem":{"__symbolic":"interface"},"DecoratedDataSource":{"__symbolic":"interface"},"DecoratedDataSourceItem":{"__symbolic":"interface"},"AutocompleteComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":32,"character":1},"arguments":[{"selector":"lux-autocomplete","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":38,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"AutocompleteComponent"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":43,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"AutocompleteComponent"}}],"template":"<div class=\"lux-autocomplete\" (blur)=\"toggleCompletion(false, i0.value)\">\n <div class=\"lux-autocomplete-box\">\n <input\n #i0\n [id]=\"inputId\"\n [(ngModel)]=\"label\"\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled || null\"\n [attr.readonly]=\"readonly || null\"\n (keydown)=\"onKeydown($event, i0.value)\"\n (keypress)=\"onKeypress($event, i0.value)\"\n (keyup)=\"onKeyup($event, i0.value)\"\n (blur)=\"onLostFocus()\"\n (focus)=\"toggleCompletion(true, i0.value)\"\n (click)=\"toggleCompletion(true, i0.value)\"\n (resized)=\"onInputResized()\"\n (window:resize)=\"onInputResized()\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"showCompletion\"\n aria-haspopup=\"true\"\n attr.aria-owns=\"{{ inputId + '_list' }}\"\n [attr.aria-activedescendant]=\"selectedOption\"\n />\n <div *ngIf=\"canAddNewValues\" class=\"icon-suggestions\"></div>\n <div *ngIf=\"showSpinner; else noLoading\" class=\"icon-spinner\"></div>\n <ng-template #noLoading>\n <button\n *ngIf=\"!disabled && i0.value; else dropdown\"\n class=\"icon-clear\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n ></button>\n <ng-template #dropdown>\n <div\n class=\"icon-dropdown\"\n (click)=\"toggleCompletion(!showCompletion, i0.value)\"\n ></div>\n </ng-template>\n </ng-template>\n </div>\n <div\n #completeDiv\n [class.showCompletion]=\"showCompletion\"\n class=\"lux-completion-list\"\n id=\"{{ inputId + '_list' }}\"\n >\n <ul>\n <li\n *ngFor=\"let item of completionList; let index = index\"\n id=\"{{ inputId + '_' + index }}\"\n class=\"lux-completion-item\"\n [class.selected]=\"focusItem && item.key === focusItem.key\"\n (click)=\"complete(item)\"\n [attr.aria-label]=\"item.label\"\n >\n <span>{{ item.labelPrefix }}</span>\n <span class=\"bold\">{{ item.labelMatch }}</span>\n <span>{{ item.labelPostfix }}</span>\n </li>\n </ul>\n </div>\n</div>\n","styles":[".lux-autocomplete .lux-autocomplete-box{display:grid;grid-template-columns:1fr -webkit-max-content;grid-template-columns:1fr max-content}.lux-autocomplete input{padding:.1rem 1.5rem .1rem .5rem;padding:var(--lux-autocomplete-input-padding, .1rem 1.5rem .1rem .5rem);text-overflow:ellipsis;grid-row:1;grid-column-start:1;grid-column-end:3}.lux-autocomplete .icon-suggestions{grid-row:1;grid-column:2;width:1.5rem;border:none;background-color:transparent;background:url(/assets/img/suggestions.svg) no-repeat center;background-size:.5rem .5rem;z-index:1;position:relative;left:-1rem}.lux-autocomplete .icon-clear{grid-row:1;grid-column:2;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);border:none;background-color:transparent;background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-autocomplete-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}.lux-autocomplete .icon-dropdown{grid-row:1;grid-column:2;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);height:1.3rem;height:var(--lux-autocomplete-icon-height, 1.3rem);border:none;background-color:transparent;background:url(/assets/img/drop-down-arrow.svg) no-repeat center;background:var(--lux-autocomplete-icon-dropdown, url(/assets/img/drop-down-arrow.svg) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}.lux-autocomplete .icon-spinner{grid-row:1;grid-column:2;width:1.5rem;border:none;background-color:transparent;background:url(/assets/img/spinner.svg) no-repeat center;background-size:1.2rem 1.2rem;z-index:1}.lux-completion-list{visibility:collapse;position:absolute;border:1px solid #ccc;margin:0;padding:0;max-height:10rem;overflow:auto;z-index:2}.lux-completion-list ul{list-style:none;margin:0;padding:0}.showCompletion{visibility:visible}.lux-completion-item{background-color:#fff;color:#000;padding:.1rem .5rem;cursor:pointer}.selected{background-color:#2e2eac;color:#fff}.disabled{background-color:#f0f0f0;color:#444}.disabled .selected{background-color:#9898ec;color:#fff}.bold{font-weight:bold}\n"]}]}],"members":{"i0":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":54,"character":3},"arguments":["i0",{"static":true}]}]}],"completeDiv":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":55,"character":3},"arguments":["completeDiv",{"static":true}]}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":67,"character":3}}]}],"dataSourceChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":68,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":73,"character":3}}]}],"canAddNewValues":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"keepOpenAfterDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"dataSource":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"resolveLabelsFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":113,"character":3}}]}],"populateFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":117,"character":3}}]}],"instance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":121,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":123,"character":26}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"completeLabel":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"onInputResized":[{"__symbolic":"method"}],"setSameWidth":[{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method"}],"onKeypress":[{"__symbolic":"method"}],"onKeyup":[{"__symbolic":"method"}],"focusOnNext":[{"__symbolic":"method"}],"focusOnPrevious":[{"__symbolic":"method"}],"onLostFocus":[{"__symbolic":"method"}],"complete":[{"__symbolic":"method"}],"toggleCompletion":[{"__symbolic":"method"}],"ensureItemVisible":[{"__symbolic":"method"}],"syncCustomValue":[{"__symbolic":"method"}],"pickSelectionOrFirstMatch":[{"__symbolic":"method"}],"showCompletionList":[{"__symbolic":"method"}],"spinnerVisibility":[{"__symbolic":"method"}],"hasExternalDataSource":[{"__symbolic":"method"}],"computeCompletionList":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"AutocompleteListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":24,"character":1},"arguments":[{"selector":"lux-autocomplete-list","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":30,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"AutocompleteListComponent"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":35,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"AutocompleteListComponent"}}],"template":"<div [id]=\"inputId\">\n <ul>\n <li *ngFor=\"let label of labels; let index = index\">\n <span>{{ label }}</span>\n <button\n *ngIf=\"!disabled\"\n class=\"remove-item\"\n (click)=\"removeAt(index)\"\n attr.aria-label=\"{{ getDeleteMessage(label) }}\"\n ></button>\n </li>\n </ul>\n <div *ngIf=\"!disabled\" class=\"new-entry\">\n <lux-autocomplete\n #auto\n [dataSource]=\"internalDataSource\"\n [placeholder]=\"placeholder ?? literals[lang].placeholder\"\n [(value)]=\"newEntry\"\n (valueChange)=\"onValueChange()\"\n (keypress)=\"onNewEntryChange($event, auto)\"\n >\n </lux-autocomplete>\n <button\n *ngIf=\"canAdd\"\n class=\"add-item\"\n attr.aria-label=\"addMessage ?? literals[lang].addMessage\"\n (click)=\"addNew(auto)\"\n ></button>\n </div>\n</div>\n","styles":[".new-entry{margin-left:1.5rem;display:grid;grid-template-columns:-webkit-max-content -webkit-max-content;grid-template-columns:max-content max-content}.new-entry lux-autocomplete{grid-column:1;grid-row:1}.new-entry .add-item{grid-column:2;grid-row:1;border:none;background:url(/assets/img/create.png) no-repeat .2rem .2rem;background:var(--lux-autocomplete-list-add-icon, url(/assets/img/create.png) no-repeat .2rem .2rem);background-size:1.1rem;background-size:var(--lux-autocomplete-list-add-icon-size, 1.1rem);height:1.4rem;height:var(--lux-autocomplete-list-add-icon-height, 1.4rem);width:1.4rem;width:var(--lux-autocomplete-list-add-icon-width, 1.4rem)}.remove-item{margin-left:.5rem;border:none;background:url(/assets/img/delete.svg) no-repeat .2rem .1rem;background:var(--lux-autocomplete-list-remove-icon, url(/assets/img/delete.svg) no-repeat .2rem .1rem);height:1.2rem;height:var(--lux-autocomplete-list-remove-icon-height, 1.2rem);width:1.3rem;width:var(--lux-autocomplete-list-remove-icon-width, 1.3rem);position:relative;top:.2rem;top:var(--lux-autocomplete-list-remove-icon-top, .2rem);background-size:1rem 1rem;background-size:var(--lux-autocomplete-list-remove-icon-size, 1rem 1rem)}\n"]}]}],"members":{"auto":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":46,"character":3},"arguments":["auto"]}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"lang":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"dataSource":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":104,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":106,"character":3}}]}],"deleteLabelTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":107,"character":3}}]}],"addMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":109,"character":3}}]}],"resolveLabelsFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":111,"character":3}}]}],"populateFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":115,"character":3}}]}],"instance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":119,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":121,"character":3}}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ensureLabelsForIds":[{"__symbolic":"method"}],"removeAt":[{"__symbolic":"method"}],"onValueChange":[{"__symbolic":"method"}],"onNewEntryChange":[{"__symbolic":"method"}],"populateWith":[{"__symbolic":"method"}],"updateCanAdd":[{"__symbolic":"method"}],"addNew":[{"__symbolic":"method"}],"getDeleteMessage":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"LuxBreadcrumbComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"lux-breadcrumb","template":"<ul class=\"lux-breadcrumb\">\n <li *ngFor=\"let breadcrumb of breadcrumbs; last as isLast; first as isFirst\"\n class=\"lux-breadcrumb-item\">\n <a [class.first]=\"isFirst\" routerLink=\"{{ breadcrumb.url }}\">{{ breadcrumb.label }}</a>\n <div *ngIf=\"!isLast\" class=\"lux-breadcrumb-separator\"></div>\n </li>\n</ul>\n","styles":[".lux-breadcrumb{padding:10px 12px;list-style:none;list-style-type:none}.lux-breadcrumb li{display:inline;font-size:.8em}.lux-breadcrumb li a.first{font-weight:bold}.lux-breadcrumb li+li:before{padding:8px;color:#000}.lux-breadcrumb li a{text-decoration:underline}ol.lux-breadcrumb li a:hover{text-decoration:underline}.lux-breadcrumb a{cursor:hand}.lux-breadcrumb-separator{color:red;position:relative;top:5px;height:16px;padding:0 8px;background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 512 512%22%3E %3Cpath d%3D%22M294.1 256L167 129c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.3 34 0L345 239c9.1 9.1 9.3 23.7.7 33.1L201.1 417c-4.7 4.7-10.9 7-17 7s-12.3-2.3-17-7c-9.4-9.4-9.4-24.6 0-33.9l127-127.1z%22%2F%3E%3C%2Fsvg%3E\");background-repeat:no-repeat;display:inline-block}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":24,"character":29},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":24,"character":59}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"addBreadcrumbs":[{"__symbolic":"method"}],"getUrl":[{"__symbolic":"method"}],"getLabel":[{"__symbolic":"method"}]}},"BreadcrumbItem":{"__symbolic":"interface"},"CheckboxComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":17,"character":1},"arguments":[{"selector":"lux-checkbox","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":23,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"CheckboxComponent"}}],"template":"<div class=\"switch\">\n <div>\n <label *ngIf=\"label\" [for]=\"inputId\">{{ label }}</label>\n </div>\n <div *ngIf=\"!disabled\" class=\"switch-item\" (click)=\"clicked()\">\n <input #ck [name]=\"name\" type=\"checkbox\" [id]=\"inputId\" />\n <div\n class=\"slider round\"\n [class.on]=\"value\"\n [class.disabled]=\"disabled\"\n [tabindex]=\"tabindexValue\"\n (keyup)=\"onKey($event)\"\n ></div>\n </div>\n <div>\n <span class=\"checkbox-label\" *ngIf=\"value\">{{\n literals[lang].yesLabel\n }}</span>\n <span class=\"checkbox-label\" *ngIf=\"!value\">{{\n literals[lang].noLabel\n }}</span>\n </div>\n</div>\n","styles":[".switch{display:flex;flex-flow:row wrap;align-items:center}label{padding-right:1.1rem}.switch-item{padding-right:.5em}.slider.round{border-radius:.7rem;width:3.1rem;height:1.4rem}.slider.round:before{border-radius:50%}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;position:relative;top:-.7rem;background-color:#ccc;transition:.4s}.slider.on{background-color:#2196f3}.slider:before{position:absolute;content:\"\";height:1rem;width:1rem;left:.2rem;bottom:.2rem;background-color:#fff;transition:.4s}.slider.on:before{transform:translate(26px)}input:focus+.slider{box-shadow:0 0 1px #2196f3}\n"]}]}],"members":{"ck":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":34,"character":3},"arguments":["ck",{"static":false}]}]}],"lang":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":73,"character":3}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":101,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"clicked":[{"__symbolic":"method"}],"onKey":[{"__symbolic":"method"}],"syncModel":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"FilterComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"lux-filter","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":20,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"FilterComponent"}}],"template":"<div class=\"filter\">\n <input\n #i0\n type=\"text\"\n [attr.aria-label]=\"ariaLabel\"\n [placeholder]=\"placeholder\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [value]=\"searchValue\"\n (valueChange)=\"onInputValueChange(i0.value)\"\n (keyup)=\"keyup($event, i0.value)\"\n />\n\n <button\n [class.hide]=\"!searchValue\"\n aria-label=\"Clear\"\n class=\"clear-indicator icon icon-clear\"\n (click)=\"clear()\"\n ></button>\n <i *ngIf=\"1 || searchOnType\" class=\"search-indicator icon icon-search\"></i>\n <button\n class=\"btn-search\"\n *ngIf=\"!searchOnType\"\n [disabled]=\"disabled\"\n (click)=\"search()\"\n >\n Search\n </button>\n</div>\n","styles":[".filter{display:grid;grid-template-columns:auto 1.5rem 1.5rem .5rem auto}.filter input{grid-row:1;grid-column-start:1;grid-column-end:4}.filter .hide{visibility:collapse}.filter .clear-indicator{grid-row:1;grid-column:2;border:none}.filter .search-indicator{grid-row:1;grid-column:3}.filter .btn-search{grid-row:1;grid-column:5}.filter .icon-search{background:url(/assets/img/filter-search.png) no-repeat center;background:var(--lux-filter-icon-search, url(/assets/img/filter-search.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center;width:1rem;width:var(--lux-filter-icon-width, 1rem)}.filter .icon-clear{background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-filter-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center}\n"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"searchValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"searchOnType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"ariaLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3},"arguments":["aria-label"]}]}],"debounce":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"searchValueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":69,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"keyup":[{"__symbolic":"method"}],"onInputValueChange":[{"__symbolic":"method"}],"recreateObservable":[{"__symbolic":"method"}],"freeSubscriptions":[{"__symbolic":"method"}],"searchNow":[{"__symbolic":"method"}],"addEvent":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"InputComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":26,"character":1},"arguments":[{"selector":"lux-input","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":32,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"InputComponent"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":37,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"InputComponent"}}],"template":"<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min?.toString() || undefined\"\n [attr.max]=\"max?.toString() || undefined\"\n [attr.step]=\"step?.toString() || undefined\"\n [attr.pattern]=\"pattern || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols?.toString() || undefined\"\n [attr.rows]=\"rows?.toString() || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix\">\n <span>€</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix\">\n <span>‰</span>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n","styles":[":host{position:relative;display:flex;align-items:stretch;width:20rem}input,textarea{margin:inherit;margin:var(--lux-input-margin, inherit);padding:inherit;padding:var(--lux-input-padding, inherit)}.alert{padding:.2rem 2rem;background:#fe2e2e;color:#fff;font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol,.postfix,.prefix{display:inline-block;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-weight:400;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem;line-height:1.5px;line-height:var(--lux-input-postfix-line-height, 1.5px);font-size:1rem;font-size:var(--lux-input-postfix-font-size, 1rem);height:inherit;height:var(--lux-input-postfix-height, inherit)}.prefix{border-top-right-radius:0;border-bottom-right-radius:0}.postfix{border-top-left-radius:0;border-bottom-left-radius:0}.readonly{border:none}.readonly:focus{border:none;outline:none}\n"]}]}],"members":{"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":46,"character":3},"arguments":["input",{"static":false}]}]}],"textarea":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":47,"character":3},"arguments":["textarea",{"static":false}]}]}],"rows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"cols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"step":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"min":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"max":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"lang":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3}}]}],"inlineErrors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"ariaLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3},"arguments":["aria-label"]}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":97,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"pattern":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"currency":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":126,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":134,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":142,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":150,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":160,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":186,"character":3}}]}],"keyPress":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":187,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"setValueInControl":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"onKeyUp":[{"__symbolic":"method"}],"onChangeValue":[{"__symbolic":"method"}],"onKeyPress":[{"__symbolic":"method"}],"isNumber":[{"__symbolic":"method"}],"isPercentage":[{"__symbolic":"method"}],"isPermillage":[{"__symbolic":"method"}],"checkClassName":[{"__symbolic":"method"}],"checkType":[{"__symbolic":"method"}],"setEmailPatterns":[{"__symbolic":"method"}],"setDatePatterns":[{"__symbolic":"method"}],"setTimePatterns":[{"__symbolic":"method"}],"setPasswordPatterns":[{"__symbolic":"method"}],"setNumberPatterns":[{"__symbolic":"method"}],"setCurrencyPatterns":[{"__symbolic":"method"}],"setPercentagePatterns":[{"__symbolic":"method"}],"setPermillagePatterns":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"PaginationComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"lux-pagination","template":"<div class=\"lux-pagination\" *ngIf=\"showPagination\">\n <ng-container *ngIf=\"!hidePrevious\">\n <a\n luxTooltip\n [content]=\"first\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onFirst()\"\n [ngClass]=\"{\n enabledFirstLast: !hidePrevious\n }\"\n class=\"button-pagination icon arrow-left-end\"\n ></a>\n <a\n luxTooltip\n [content]=\"previous\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onPrevious()\"\n [ngClass]=\"{\n enabledFirstLast: !hidePrevious\n }\"\n class=\"button-pagination icon arrow-left\"\n ></a>\n </ng-container>\n\n <span class=\"ellipsis\" *ngIf=\"displayPreviousEllipsis\">...</span>\n\n <ng-container *ngFor=\"let pageNum of pages\">\n <a\n luxTooltip\n content=\"{{ pageNum + 1 }}\"\n placement=\"top\"\n delay=\"500\"\n [ngClass]=\"{\n disabled: pageNum === paginationInfo.page,\n enabled: pageNum !== paginationInfo.page\n }\"\n class=\"button-pagination\"\n (click)=\"onPage(pageNum)\"\n >{{ pageNum + 1 }}</a\n >\n </ng-container>\n\n <span class=\"ellipsis\" *ngIf=\"displayNextEllipsis\">...</span>\n\n <ng-container *ngIf=\"!lastPage\">\n <a\n luxTooltip\n [content]=\"next\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onNext()\"\n [ngClass]=\"{\n enabledFirstLast: !lastPage\n }\"\n class=\"button-pagination icon arrow-right\"\n ></a>\n <a\n luxTooltip\n [content]=\"last\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onLast()\"\n [ngClass]=\"{\n enabledFirstLast: !lastPage\n }\"\n class=\"button-pagination icon arrow-right-end\"\n ></a>\n </ng-container>\n</div>\n","styles":[".lux-pagination{display:flex;flex-direction:row;margin:2% 0;width:100%;background:white;align-items:center}.disabled{cursor:not-allowed;border:1px solid #325c81;border:var(--lux-pagination-disabled-border, 1px solid #325c81);border-radius:10%;border-radius:var(--lux-pagination-disabled-border-radius, 10%);padding:1%;margin:0 .7%;color:#fff;color:var(--lux-pagination-disabled-color, white);background-color:#325c81;background-color:var(--lux-pagination-disabled-background-color, #325c81);text-decoration:none;pointer-events:none}.enabled{border:1px solid #cfcfcf;border:var(--lux-pagination-enabled-border, 1px solid #cfcfcf);border-radius:10%;border-radius:var(--lux-pagination-enabled-border-radius, 10%);padding:1%;margin:0 .7%;color:#325c81;color:var(--lux-pagination-enabled-color, #325c81);width:-webkit-min-content;width:-moz-min-content;width:min-content;cursor:pointer}.enabledFirstLast{border:1px solid #cfcfcf;border-radius:10%;padding:1%;color:#325c81;margin:0 .7%;width:-webkit-min-content;width:-moz-min-content;width:min-content;cursor:pointer}.ellipsis{margin:0 .5rem;padding:0;color:#325c81;width:-webkit-min-content;width:-moz-min-content;width:min-content}.button-pagination{width:1em;width:var(--lux-pagination-button-width, 1em);height:1.2em;height:var(--lux-pagination-button-height, 1.2em);font-size:80%;font-size:var(--lux-pagination-font-size, 80%);text-align:center}.icon{background-size:1.3em 1.4em;background-position:center;background-repeat:no-repeat}.arrow-right{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");background-position:.4em}.arrow-left{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");transform:rotate(180deg);background-position:.4em}.arrow-right-end{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_3%22 points%3D%2241.8%2C45.7 30.4%2C44.3 50.8%2C24 30.4%2C3.7 41.8%2C2.3 63.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");background-position:.1em}.arrow-left-end{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_3%22 points%3D%2241.8%2C45.7 30.4%2C44.3 50.8%2C24 30.4%2C3.7 41.8%2C2.3 63.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");background-position:.1em;transform:rotate(180deg)}@media only screen and (min-width: 300px) and (max-width: 500px){.arrow-right{background-position:.2em}.arrow-left{background-position:.2em}.arrow-right-end{background-position:0em}.arrow-left-end{background-position:0em}}@media only screen and (min-width: 500px) and (max-width: 850px){.arrow-right{background-position:.3em}.arrow-left{background-position:.3em}.arrow-right-end{background-position:0em}.arrow-left-end{background-position:0em}}@media only screen and (min-width: 900px){.arrow-right{background-position:.2em}.arrow-left{background-position:.2em}.arrow-right-end{background-position:0em}.arrow-left-end{background-position:0em}}\n"]}]}],"members":{"goToPage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":39,"character":3}}]}],"pageSizeChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":40,"character":3}}]}],"lang":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"paginationInfo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"pageSizeChanged":[{"__symbolic":"method"}],"onPage":[{"__symbolic":"method"}],"onFirst":[{"__symbolic":"method"}],"onLast":[{"__symbolic":"method"}],"onNext":[{"__symbolic":"method"}],"onPrevious":[{"__symbolic":"method"}],"syncState":[{"__symbolic":"method"}],"calculatePages":[{"__symbolic":"method"}],"loadLanguage":[{"__symbolic":"method"}]}},"LuxTooltipDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":9,"character":1},"arguments":[{"selector":"[luxTooltip]"}]}],"members":{"luxTooltip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"placement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":25,"character":20},{"__symbolic":"reference","name":"ɵe"}]}],"onMouseEnter":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":29,"character":3},"arguments":["mouseenter"]}]}],"onMouseLeave":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":35,"character":3},"arguments":["mouseleave"]}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":42,"character":3},"arguments":["click"]}]}],"show":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}},"ModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":16,"character":23}]}],"open":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"RadioItem":{"__symbolic":"interface"},"RadiogroupComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"lux-radiogroup","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":29,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"RadiogroupComponent"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":34,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"RadiogroupComponent"}}],"template":"<div class=\"radiogroup\"\n [class.disabled]=\"disabled || readonly\"\n >\n <ng-container *ngFor=\"let item of items; let first=first; let last=last\">\n <div [class.radio-start]=\"first\"\n [class.radio-end]=\"last\"\n class=\"radio-item\"\n [class.selected]=\"item.value === value\"\n (click)=\"setValue($event, item)\"\n >\n <input [id]=\"item.name\"\n type=\"radio\"\n [name]=\"name\"\n [attr.disabled]=\"disabled || null\"\n [attr.readonly]=\"readonly || null\"\n [value]=\"item.value\">\n <label [for]=\"item.name\"\n class=\"unselectable\"\n >{{ item.label }}</label>\n </div>\n</ng-container>\n</div>\n","styles":[".radiogroup{display:flex}.radio-item{border-radius:0;border:1px solid #ccc;padding:0 .5rem;padding:var(--lux-radiogroup-padding, 0rem .5rem)}.radio-item input{display:none}.radio-item label{color:initial;color:var(--lux-radiogroup-color, initial);font-size:initial;font-size:var(--lux-radiogroup-font-size, initial);margin-top:.3rem;margin-bottom:.3rem}.radio-item.selected{background-color:#2e2eac;background-color:var(--lux-radiogroup-selected-background-color, #2e2eac)}.radio-item.selected label{font-size:initial;font-size:var(--lux-radiogroup-font-size, initial);color:#fff;color:var(--lux-radiogroup-selected-color, white)}.radio-start{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.radio-end{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.disabled .radio-item{background-color:#f0f0f0;color:#444}.disabled .selected{font-size:initial;font-size:var(--lux-radiogroup-selected-disabled-font-size, initial);color:#fff;color:var(--lux-radiogroup-selected-disabled-color, white);background-color:#9898ec;background-color:var(--lux-radiogroup-selected-disabled-background-color, #9898ec)}.unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}\n"]}]}],"members":{"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"itemsChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":58,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":75,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"ensureHasUniqueName":[{"__symbolic":"method"}]}},"ModalRef":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ComponentRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"ɵg"}]},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ComponentRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"ɵg"}]},{"__symbolic":"error","message":"Expression form not supported","line":34,"character":29,"module":"./lib/modal/modal-ref"}]}],"close":[{"__symbolic":"method"}],"_dismiss":[{"__symbolic":"method"}],"dismiss":[{"__symbolic":"method"}],"_removeModalElements":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":29,"character":1},"arguments":[{"selector":"lux-geolocation","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":35,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"ɵa"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":40,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"ɵa"}}],"template":"<div class=\"lux-geolocation\" [id]=\"inputId\">\n <input\n #latitude\n class=\"prefix\"\n type=\"number\"\n [id]=\"inputId + '$latitude'\"\n [(ngModel)]=\"latitudeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"\n minLatitude !== undefined && minLatitude !== null\n ? minLatitude.toString()\n : undefined\n \"\n [attr.max]=\"\n maxLatitude !== undefined && maxLatitude !== null\n ? maxLatitude.toString()\n : undefined\n \"\n [attr.step]=\"\n step !== undefined && step !== null ? step.toString() : undefined\n \"\n placeholder=\"lat\"\n [ngClass]=\"className\"\n (focus)=\"markAsTouched()\"\n (keyup)=\"onEventLatitude(latitude.value)\"\n (change)=\"onEventLatitude(latitude.value)\"\n (keypress)=\"onKeyPress($event)\"\n />\n <div class=\"infix symbol\">\n <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue >= 0\">{{\n cardinalPoints[this.lang].north\n }}</span>\n <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue < 0\">{{\n cardinalPoints[this.lang].south\n }}</span>\n <span *ngIf=\"!isValidNumber(latitudeValue)\">{{\n cardinalPoints[this.lang].unknown\n }}</span>\n </div>\n <input\n #longitude\n class=\"infix\"\n type=\"number\"\n [id]=\"inputId + '$longitude'\"\n [(ngModel)]=\"longitudeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"\n minLongitude !== undefined && minLongitude !== null\n ? minLongitude.toString()\n : undefined\n \"\n [attr.max]=\"\n maxLongitude !== undefined && maxLongitude !== null\n ? maxLongitude.toString()\n : undefined\n \"\n [attr.step]=\"\n step !== undefined && step !== null ? step.toString() : undefined\n \"\n placeholder=\"lon\"\n [ngClass]=\"className\"\n (focus)=\"markAsTouched()\"\n (keyup)=\"onEventLongitude(longitude.value)\"\n (change)=\"onEventLongitude(longitude.value)\"\n (keypress)=\"onKeyPress($event)\"\n />\n <div class=\"infix symbol\">\n <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue >= 0\">{{\n cardinalPoints[this.lang].east\n }}</span>\n <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue < 0\">{{\n cardinalPoints[this.lang].west\n }}</span>\n <span *ngIf=\"!isValidNumber(longitudeValue)\">{{\n cardinalPoints[this.lang].unknown\n }}</span>\n </div>\n <button class=\"postfix\" (click)=\"openModalMap(modalMap)\">\n <span>🌐</span>\n </button>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.minLatitude\">\n {{\n userErrors[this.lang].minLatitude.replace(\n '$minLatitude',\n lastErrors.minLatitude.min\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.maxLatitude\">\n {{\n userErrors[this.lang].maxLatitude.replace(\n '$maxLatitude',\n lastErrors.maxLatitude.max\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.minLongitude\">\n {{\n userErrors[this.lang].minLongitude.replace(\n '$minLongitude',\n lastErrors.minLongitude.min\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.maxLongitude\">\n {{\n userErrors[this.lang].maxLongitude.replace(\n '$maxLongitude',\n lastErrors.maxLongitude.max\n )\n }}\n </div>\n</div>\n\n<ng-template #modalMap let-modal>\n <div class=\"lux-modal-header\">\n <h4 class=\"modal-title\" id=\"modal-basic-title\">{{ mapTitle }}</h4>\n <button\n type=\"button\"\n class=\"close\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss('Cross click')\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"lux-modal-body content\">\n <lux-autocomplete\n #searchBar\n *ngIf=\"!disabled && !readonly\"\n [instance]=\"self\"\n [resolveLabelsFunction]=\"getLabels\"\n [populateFunction]=\"getData\"\n (valueChange)=\"\n map.markerPoint = searchBar.value;\n map.center = map.markerPoint\n \"\n ></lux-autocomplete>\n <div class=\"map-container\">\n <lux-map\n #map\n [center]=\"value\"\n [markerPoint]=\"value\"\n [zoom]=\"zoom\"\n [readonly]=\"readonly === true || disabled === true ? true : false\"\n ></lux-map>\n </div>\n </div>\n <div class=\"lux-modal-footer\">\n <button\n *ngIf=\"!disabled && !readonly\"\n type=\"button\"\n class=\"btn btn-cancel\"\n (click)=\"modal.close('cancel')\"\n >\n Cancel\n </button>\n <button\n *ngIf=\"!disabled && !readonly\"\n type=\"button\"\n class=\"btn btn-select\"\n (click)=\"modal.close(map.markerPoint.coordinates)\"\n >\n Select\n </button>\n </div>\n</ng-template>\n","styles":[".lux-geolocation{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:30rem}.alert{padding:.2rem 2rem;background:#fe2e2e;color:#fff;font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol{display:inline-block;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef}.rounded,.postfix,.infix,.prefix{border:1px solid #ced4da;border-radius:.25rem}.prefix{border-top-right-radius:0;border-bottom-right-radius:0}.infix{border-radius:0}.postfix{border-top-left-radius:0;border-bottom-left-radius:0}.btn,.btn-cancel,.btn-select{margin:.2em}.btn-select{background-color:#b4b8f0}.btn-cancel{background-color:#ffced7}.lux-modal-body{padding:0}.map-container{width:90vw;height:45vh}.readonly:focus{outline:none}\n"]}]}],"members":{"latitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":49,"character":3},"arguments":["latitude",{"static":true}]}]}],"longitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":50,"character":3},"arguments":["longitude",{"static":true}]}]}],"minLatitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"maxLatitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":101,"character":3}}]}],"minLongitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"maxLongitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"step":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":107,"character":3}}]}],"zoom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":109,"character":3}}]}],"lang":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":116,"character":3}}]}],"inlineErrors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":117,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":118,"character":3}}]}],"ariaLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":119,"character":3},"arguments":["aria-label"]}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":120,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":122,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":131,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":139,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":167,"character":3}}]}],"keyPress":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":168,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ModalService"},{"__symbolic":"reference","name":"ɵd"}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"setLatitudeInControl":[{"__symbolic":"method"}],"setLongitudeInControl":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"updateLatitude":[{"__symbolic":"method"}],"updateLongitude":[{"__symbolic":"method"}],"updateLatitudeAndLongitude":[{"__symbolic":"method"}],"roundToStepAndUpdateLatitudeAndLongitude":[{"__symbolic":"method"}],"onEventLatitude":[{"__symbolic":"method"}],"onEventLongitude":[{"__symbolic":"method"}],"onKeyPress":[{"__symbolic":"method"}],"checkClassName":[{"__symbolic":"method"}],"openModalMap":[{"__symbolic":"method"}],"getLabels":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}],"setPatterns":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":38,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":38,"character":12}]}],null,null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":37,"character":29},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":39,"character":23},{"__symbolic":"reference","module":"@angular/core","name":"RendererFactory2","line":40,"character":30},{"__symbolic":"reference","name":"ɵc"}]}],"open":[{"__symbolic":"method"}],"_applyWindowOptions":[{"__symbolic":"method"}],"_applyBackgroundOptions":[{"__symbolic":"method"}],"_revertAriaHidden":[{"__symbolic":"method"}],"getContentRef":[{"__symbolic":"method"}],"createFromTemplateRef":[{"__symbolic":"method"}],"_attachBackdrop":[{"__symbolic":"method"}],"_attachWindowComponent":[{"__symbolic":"method"}],"_registerModalRef":[{"__symbolic":"method"}],"_registerWindowCmpt":[{"__symbolic":"method"}],"_setAriaHidden":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{},"statics":{"ɵprov":{}}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":29,"character":28}]}],"searchGeolocation":[{"__symbolic":"method"}],"getLabels":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}],"getFromCache":[{"__symbolic":"method"}],"addToCache":[{"__symbolic":"method"}],"revomeFromCache":[{"__symbolic":"method"}],"getLatestQuery":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":19,"character":23},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":20,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":21,"character":29}]}],"appendComponentToBody":[{"__symbolic":"method"}],"removeComponentFromBody":[{"__symbolic":"method"}],"getTooltipContentRef":[{"__symbolic":"method"}],"createFromTemplateRef":[{"__symbolic":"method"}],"createFromComponent":[{"__symbolic":"method"}],"setStyle":[{"__symbolic":"method"}],"getTooltipElementFromHTMLElemnt":[{"__symbolic":"method"}],"setPosition":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"lux-modal-window","template":"\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\"><ng-content></ng-content></div>\n </div>\n "}]}],"members":{"ariaDescribedBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"ariaLabelledBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"backdrop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"keyboard":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"windowClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"dismissEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":37,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":39,"character":3},"arguments":["class"]}]}],"role":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":42,"character":3},"arguments":["attr.role"]}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":43,"character":3},"arguments":["tabindex"]}]}],"ariamodal":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":44,"character":3},"arguments":["attr.aria-modal"]}]}],"hostAriaLabelledBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":45,"character":3},"arguments":["attr.aria-labelledby"]}]}],"hostAriaDescribedBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":48,"character":3},"arguments":["attr.aria-describedby"]}]}],"backdropClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":51,"character":3},"arguments":["click",["$event.target"]]}]}],"escKey":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":58,"character":3},"arguments":["keyup.esc",["$event"]]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":65,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":65,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":66,"character":31,"context":{"typeName":"HTMLElement"},"module":"./lib/modal/modal-window"}]}]}],"dismiss":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"lux-modal-backdrop","template":""}]}],"members":{"backdropClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":7,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":9,"character":3},"arguments":["class"]}]}],"style":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":10,"character":3},"arguments":["style"]}]}]}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"lux-map","template":"<div [id]=\"mapId\" class=\"map\" (resized)=\"onResize()\"></div>\n","styles":[".map{min-height:100px;height:100%;min-width:160px;width:100%}\n"]}]}],"members":{"mapId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"zoom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"center":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"markerCoordinates":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3}}]}],"markerPoint":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":113,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":134,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵi"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"initMap":[{"__symbolic":"method"}],"addMarkerAtCoordinates":[{"__symbolic":"method"}],"removeMarker":[{"__symbolic":"method"}],"getMarkerCoordinates":[{"__symbolic":"method"}],"onResize":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"load":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"lux-select","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":24,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"ɵj"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":29,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"ɵj"}}],"template":"<div class=\"lux-select\">\n <ul class=\"list\">\n <li *ngFor=\"let item of value; let i = index\">\n <span>{{ item }}</span>\n <button *ngIf=\"!disabled\"\n class=\"remove\"\n (click)=\"remove(i)\"\n [attr.aria-label]=\"'Remove ' + item\"\n >Remove</button>\n </li>\n </ul>\n <div class=\"add-new-item\" *ngIf=\"!disabled\">\n <lux-input\n id=\"{{ id + 'addNew' }}\"\n type=\"string\"\n [placeholder]=\"placeholder\"\n [attr.aria-label]=\"placeholder\"\n [disabled]=\"disabled\"\n [(value)]=\"newEntry\"\n (keyPress)=\"onKeyPress($event)\"\n (valueChange)=\"onChangeNewEntry($event)\"\n >\n </lux-input>\n <div *ngIf=\"canAdd\">\n <button *ngIf=\"isValidNewEntry\" (click)=\"add(newEntry)\">Add</button>\n </div>\n <div class=\"error\">\n {{ error }}\n </div>\n </div>\n</div>\n","styles":[".lux-select{margin-bottom:.5em}.lux-select .list{margin:1em;padding-bottom:.2em;list-style-type:square}.lux-select .list span{margin-bottom:.3em}.remove{margin-left:2em;font-size:.65em;color:#b22222;background:transparent;border:2px solid #BBB}.add-new-item{display:inline-flex;margin-left:2.2em;height:1.6em}.error{margin:.5em 0;color:#b22222}\n"]}]}],"members":{"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":42,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"unique":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"validateItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"onKeyPress":[{"__symbolic":"method"}],"onChangeNewEntry":[{"__symbolic":"method"}]}},"ɵk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"template":"\n <span class=\"lux-tooltip\" style=\"transition: opacity 200ms\">{{context.message}}</span>\n "}]}],"members":{"context":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor"}]}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[luxVoiceRecognition]"}]}],"members":{"language":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":6,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":12,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":12,"character":56}]}],"ngOnInit":[{"__symbolic":"method"}],"microphoneClick":[{"__symbolic":"method"}],"onRecognized":[{"__symbolic":"method"}]}},"ɵm":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":6,"character":26},"arguments":["WindowToken"]},"ɵn":{"__symbolic":"class","members":{}},"ɵo":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵn"},"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"ɵp":{"__symbolic":"error","message":"Lambda not supported","line":34,"character":29,"module":"./lib/window/window.service"},"ɵq":[{"provide":{"__symbolic":"reference","name":"ɵn"},"useClass":{"__symbolic":"reference","name":"ɵo"}},{"provide":{"__symbolic":"reference","name":"ɵm"},"useFactory":{"__symbolic":"reference","name":"ɵp"},"deps":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":51,"character":21}]}],"ɵr":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@angular/core","name":"ViewRef","line":27,"character":21},{"__symbolic":"reference","name":"ComponentRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}}},"origins":{"LuxModule":"./lib/lux.module","DataSource":"./lib/datasource","DataSourceItem":"./lib/datasource","DecoratedDataSource":"./lib/datasource","DecoratedDataSourceItem":"./lib/datasource","AutocompleteComponent":"./lib/autocomplete/autocomplete.component","AutocompleteListComponent":"./lib/autocomplete-list/autocomplete-list.component","LuxBreadcrumbComponent":"./lib/breadcrumb/breadcrumb.component","BreadcrumbItem":"./lib/breadcrumb/breadcrumb.component","CheckboxComponent":"./lib/checkbox/checkbox.component","FilterComponent":"./lib/filter/filter.component","InputComponent":"./lib/input/input.component","PaginationComponent":"./lib/pagination/pagination.component","LuxTooltipDirective":"./lib/tooltip/tooltip.directive","ModalService":"./lib/modal/modal.service","RadioItem":"./lib/radiogroup/radiogroup.component","RadiogroupComponent":"./lib/radiogroup/radiogroup.component","ModalRef":"./lib/modal/modal-ref","ɵa":"./lib/geolocation/geolocation.component","ɵb":"./lib/modal/modal-stack","ɵc":"./lib/modal/modal-config","ɵd":"./lib/geolocation/geolocation.service","ɵe":"./lib/tooltip/tooltip.service","ɵf":"./lib/modal/modal-window","ɵg":"./lib/modal/modal-backdrop","ɵh":"./lib/map/map.component","ɵi":"./lib/geolocation/openlayer-loader.service","ɵj":"./lib/select/select.component","ɵk":"./lib/tooltip/tooltip.component","ɵl":"./lib/voice-recognition/voice-recognition.directive","ɵm":"./lib/window/window.service","ɵn":"./lib/window/window.service","ɵo":"./lib/window/window.service","ɵp":"./lib/window/window.service","ɵq":"./lib/window/window.service","ɵr":"./lib/modal/util"},"importAs":"@metadev/lux"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"LuxModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":27,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AutocompleteComponent"},{"__symbolic":"reference","name":"AutocompleteListComponent"},{"__symbolic":"reference","name":"FilterComponent"},{"__symbolic":"reference","name":"CheckboxComponent"},{"__symbolic":"reference","name":"InputComponent"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LuxTooltipDirective"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"LuxBreadcrumbComponent"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"PaginationComponent"},{"__symbolic":"reference","name":"RadiogroupComponent"},{"__symbolic":"reference","name":"ɵl"}],"entryComponents":[{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵk"}],"providers":[{"__symbolic":"reference","name":"ModalService"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵq"}],"imports":[{"__symbolic":"reference","module":"angular-resize-event","name":"AngularResizedEventModule","line":53,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":54,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":55,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":56,"character":4},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":57,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":58,"character":4}],"exports":[{"__symbolic":"reference","name":"AutocompleteComponent"},{"__symbolic":"reference","name":"AutocompleteListComponent"},{"__symbolic":"reference","name":"FilterComponent"},{"__symbolic":"reference","name":"CheckboxComponent"},{"__symbolic":"reference","name":"InputComponent"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"LuxTooltipDirective"},{"__symbolic":"reference","name":"LuxBreadcrumbComponent"},{"__symbolic":"reference","name":"LuxBreadcrumbComponent"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"PaginationComponent"},{"__symbolic":"reference","name":"RadiogroupComponent"},{"__symbolic":"reference","name":"ɵl"}]}]}],"members":{}},"DataSource":{"__symbolic":"interface"},"DataSourceItem":{"__symbolic":"interface"},"DecoratedDataSource":{"__symbolic":"interface"},"DecoratedDataSourceItem":{"__symbolic":"interface"},"AutocompleteComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":32,"character":1},"arguments":[{"selector":"lux-autocomplete","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":38,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"AutocompleteComponent"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":43,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"AutocompleteComponent"}}],"template":"<div class=\"lux-autocomplete\" (blur)=\"toggleCompletion(false, i0.value)\">\n <div class=\"lux-autocomplete-box\">\n <input\n #i0\n [id]=\"inputId\"\n [(ngModel)]=\"label\"\n [placeholder]=\"placeholder\"\n [attr.disabled]=\"disabled || null\"\n [attr.readonly]=\"readonly || null\"\n (keydown)=\"onKeydown($event, i0.value)\"\n (keypress)=\"onKeypress($event, i0.value)\"\n (keyup)=\"onKeyup($event, i0.value)\"\n (blur)=\"onLostFocus()\"\n (focus)=\"toggleCompletion(true, i0.value)\"\n (click)=\"toggleCompletion(true, i0.value)\"\n (resized)=\"onInputResized()\"\n (window:resize)=\"onInputResized()\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"showCompletion\"\n aria-haspopup=\"true\"\n attr.aria-owns=\"{{ inputId + '_list' }}\"\n [attr.aria-activedescendant]=\"selectedOption\"\n />\n <div *ngIf=\"canAddNewValues\" class=\"icon-suggestions\"></div>\n <div *ngIf=\"showSpinner; else noLoading\" class=\"icon-spinner\"></div>\n <ng-template #noLoading>\n <button\n *ngIf=\"!disabled && i0.value; else dropdown\"\n class=\"icon-clear\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n ></button>\n <ng-template #dropdown>\n <div\n class=\"icon-dropdown\"\n (click)=\"toggleCompletion(!showCompletion, i0.value)\"\n ></div>\n </ng-template>\n </ng-template>\n </div>\n <div\n #completeDiv\n [class.showCompletion]=\"showCompletion\"\n class=\"lux-completion-list\"\n id=\"{{ inputId + '_list' }}\"\n >\n <ul>\n <li\n *ngFor=\"let item of completionList; let index = index\"\n id=\"{{ inputId + '_' + index }}\"\n class=\"lux-completion-item\"\n [class.selected]=\"focusItem && item.key === focusItem.key\"\n (click)=\"complete(item)\"\n [attr.aria-label]=\"item.label\"\n >\n <span>{{ item.labelPrefix }}</span>\n <span class=\"bold\">{{ item.labelMatch }}</span>\n <span>{{ item.labelPostfix }}</span>\n </li>\n </ul>\n </div>\n</div>\n","styles":[".lux-autocomplete .lux-autocomplete-box{display:grid;grid-template-columns:1fr -webkit-max-content;grid-template-columns:1fr max-content}.lux-autocomplete input{padding:.1rem 1.5rem .1rem .5rem;padding:var(--lux-autocomplete-input-padding, .1rem 1.5rem .1rem .5rem);text-overflow:ellipsis;grid-row:1;grid-column-start:1;grid-column-end:3}.lux-autocomplete .icon-suggestions{grid-row:1;grid-column:2;width:1.5rem;border:none;background-color:transparent;background:url(/assets/img/suggestions.svg) no-repeat center;background-size:.5rem .5rem;z-index:1;position:relative;left:-1rem}.lux-autocomplete .icon-clear{grid-row:1;grid-column:2;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);border:none;background-color:transparent;background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-autocomplete-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}.lux-autocomplete .icon-dropdown{grid-row:1;grid-column:2;width:1.5rem;width:var(--lux-autocomplete-icon-width, 1.5rem);height:1.3rem;height:var(--lux-autocomplete-icon-height, 1.3rem);border:none;background-color:transparent;background:url(/assets/img/drop-down-arrow.svg) no-repeat center;background:var(--lux-autocomplete-icon-dropdown, url(/assets/img/drop-down-arrow.svg) no-repeat center);background-size:.5rem .5rem;background-size:var(--lux-autocomplete-icon-bg-size, .5rem .5rem);z-index:1}.lux-autocomplete .icon-spinner{grid-row:1;grid-column:2;width:1.5rem;border:none;background-color:transparent;background:url(/assets/img/spinner.svg) no-repeat center;background-size:1.2rem 1.2rem;z-index:1}.lux-completion-list{visibility:collapse;position:absolute;border:1px solid #ccc;margin:0;padding:0;max-height:10rem;overflow:auto;z-index:2}.lux-completion-list ul{list-style:none;margin:0;padding:0}.showCompletion{visibility:visible}.lux-completion-item{background-color:#fff;color:#000;padding:.1rem .5rem;cursor:pointer}.selected{background-color:#2e2eac;color:#fff}.disabled{background-color:#f0f0f0;color:#444}.disabled .selected{background-color:#9898ec;color:#fff}.bold{font-weight:bold}\n"]}]}],"members":{"i0":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":54,"character":3},"arguments":["i0",{"static":true}]}]}],"completeDiv":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":55,"character":3},"arguments":["completeDiv",{"static":true}]}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":67,"character":3}}]}],"dataSourceChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":68,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":73,"character":3}}]}],"canAddNewValues":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"keepOpenAfterDelete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"dataSource":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"resolveLabelsFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":113,"character":3}}]}],"populateFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":117,"character":3}}]}],"instance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":121,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":123,"character":26}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"completeLabel":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"onInputResized":[{"__symbolic":"method"}],"setSameWidth":[{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method"}],"onKeypress":[{"__symbolic":"method"}],"onKeyup":[{"__symbolic":"method"}],"focusOnNext":[{"__symbolic":"method"}],"focusOnPrevious":[{"__symbolic":"method"}],"onLostFocus":[{"__symbolic":"method"}],"complete":[{"__symbolic":"method"}],"toggleCompletion":[{"__symbolic":"method"}],"ensureItemVisible":[{"__symbolic":"method"}],"syncCustomValue":[{"__symbolic":"method"}],"pickSelectionOrFirstMatch":[{"__symbolic":"method"}],"showCompletionList":[{"__symbolic":"method"}],"spinnerVisibility":[{"__symbolic":"method"}],"hasExternalDataSource":[{"__symbolic":"method"}],"computeCompletionList":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"AutocompleteListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":24,"character":1},"arguments":[{"selector":"lux-autocomplete-list","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":30,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"AutocompleteListComponent"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":35,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"AutocompleteListComponent"}}],"template":"<div [id]=\"inputId\">\n <ul>\n <li *ngFor=\"let label of labels; let index = index\">\n <span>{{ label }}</span>\n <button\n *ngIf=\"!disabled\"\n class=\"remove-item\"\n (click)=\"removeAt(index)\"\n attr.aria-label=\"{{ getDeleteMessage(label) }}\"\n ></button>\n </li>\n </ul>\n <div *ngIf=\"!disabled\" class=\"new-entry\">\n <lux-autocomplete\n #auto\n [dataSource]=\"internalDataSource\"\n [placeholder]=\"placeholder ?? literals[lang].placeholder\"\n [(value)]=\"newEntry\"\n (valueChange)=\"onValueChange()\"\n (keypress)=\"onNewEntryChange($event, auto)\"\n >\n </lux-autocomplete>\n <button\n *ngIf=\"canAdd\"\n class=\"add-item\"\n attr.aria-label=\"addMessage ?? literals[lang].addMessage\"\n (click)=\"addNew(auto)\"\n ></button>\n </div>\n</div>\n","styles":[".new-entry{margin-left:1.5rem;display:grid;grid-template-columns:-webkit-max-content -webkit-max-content;grid-template-columns:max-content max-content}.new-entry lux-autocomplete{grid-column:1;grid-row:1}.new-entry .add-item{grid-column:2;grid-row:1;border:none;background:url(/assets/img/create.png) no-repeat .2rem .2rem;background:var(--lux-autocomplete-list-add-icon, url(/assets/img/create.png) no-repeat .2rem .2rem);background-size:1.1rem;background-size:var(--lux-autocomplete-list-add-icon-size, 1.1rem);height:1.4rem;height:var(--lux-autocomplete-list-add-icon-height, 1.4rem);width:1.4rem;width:var(--lux-autocomplete-list-add-icon-width, 1.4rem)}.remove-item{margin-left:.5rem;border:none;background:url(/assets/img/delete.svg) no-repeat .2rem .1rem;background:var(--lux-autocomplete-list-remove-icon, url(/assets/img/delete.svg) no-repeat .2rem .1rem);height:1.2rem;height:var(--lux-autocomplete-list-remove-icon-height, 1.2rem);width:1.3rem;width:var(--lux-autocomplete-list-remove-icon-width, 1.3rem);position:relative;top:.2rem;top:var(--lux-autocomplete-list-remove-icon-top, .2rem);background-size:1rem 1rem;background-size:var(--lux-autocomplete-list-remove-icon-size, 1rem 1rem)}\n"]}]}],"members":{"auto":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":46,"character":3},"arguments":["auto"]}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"lang":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"dataSource":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":104,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":106,"character":3}}]}],"deleteLabelTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":107,"character":3}}]}],"addMessage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":109,"character":3}}]}],"resolveLabelsFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":111,"character":3}}]}],"populateFunction":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":115,"character":3}}]}],"instance":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":119,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":121,"character":3}}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ensureLabelsForIds":[{"__symbolic":"method"}],"removeAt":[{"__symbolic":"method"}],"onValueChange":[{"__symbolic":"method"}],"onNewEntryChange":[{"__symbolic":"method"}],"populateWith":[{"__symbolic":"method"}],"updateCanAdd":[{"__symbolic":"method"}],"addNew":[{"__symbolic":"method"}],"getDeleteMessage":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"LuxBreadcrumbComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"lux-breadcrumb","template":"<ul class=\"lux-breadcrumb\">\n <li *ngFor=\"let breadcrumb of breadcrumbs; last as isLast; first as isFirst\"\n class=\"lux-breadcrumb-item\">\n <a [class.first]=\"isFirst\" routerLink=\"{{ breadcrumb.url }}\">{{ breadcrumb.label }}</a>\n <div *ngIf=\"!isLast\" class=\"lux-breadcrumb-separator\"></div>\n </li>\n</ul>\n","styles":[".lux-breadcrumb{padding:10px 12px;list-style:none;list-style-type:none}.lux-breadcrumb li{display:inline;font-size:.8em}.lux-breadcrumb li a.first{font-weight:bold}.lux-breadcrumb li+li:before{padding:8px;color:#000}.lux-breadcrumb li a{text-decoration:underline}ol.lux-breadcrumb li a:hover{text-decoration:underline}.lux-breadcrumb a{cursor:hand}.lux-breadcrumb-separator{color:red;position:relative;top:5px;height:16px;padding:0 8px;background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 512 512%22%3E %3Cpath d%3D%22M294.1 256L167 129c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.3 34 0L345 239c9.1 9.1 9.3 23.7.7 33.1L201.1 417c-4.7 4.7-10.9 7-17 7s-12.3-2.3-17-7c-9.4-9.4-9.4-24.6 0-33.9l127-127.1z%22%2F%3E%3C%2Fsvg%3E\");background-repeat:no-repeat;display:inline-block}\n"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":24,"character":29},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":24,"character":59}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"addBreadcrumbs":[{"__symbolic":"method"}],"getUrl":[{"__symbolic":"method"}],"getLabel":[{"__symbolic":"method"}]}},"BreadcrumbItem":{"__symbolic":"interface"},"CheckboxComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":17,"character":1},"arguments":[{"selector":"lux-checkbox","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":23,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"CheckboxComponent"}}],"template":"<div class=\"switch\">\n <div>\n <label *ngIf=\"label\" [for]=\"inputId\">{{ label }}</label>\n </div>\n <div *ngIf=\"!disabled\" class=\"switch-item\" (click)=\"clicked()\">\n <input #ck [name]=\"name\" type=\"checkbox\" [id]=\"inputId\" />\n <div\n class=\"slider round\"\n [class.on]=\"value\"\n [class.disabled]=\"disabled\"\n [tabindex]=\"tabindexValue\"\n (keyup)=\"onKey($event)\"\n ></div>\n </div>\n <div>\n <span class=\"checkbox-label\" *ngIf=\"value\">{{\n literals[lang].yesLabel\n }}</span>\n <span class=\"checkbox-label\" *ngIf=\"!value\">{{\n literals[lang].noLabel\n }}</span>\n </div>\n</div>\n","styles":[".switch{display:flex;flex-flow:row wrap;align-items:center}label{padding-right:1.1rem}.switch-item{padding-right:.5em}.slider.round{border-radius:.7rem;width:3.1rem;height:1.4rem}.slider.round:before{border-radius:50%}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;position:relative;top:-.7rem;background-color:#ccc;transition:.4s}.slider.on{background-color:#2196f3}.slider:before{position:absolute;content:\"\";height:1rem;width:1rem;left:.2rem;bottom:.2rem;background-color:#fff;transition:.4s}.slider.on:before{transform:translate(26px)}input:focus+.slider{box-shadow:0 0 1px #2196f3}\n"]}]}],"members":{"ck":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":34,"character":3},"arguments":["ck",{"static":false}]}]}],"lang":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":52,"character":3}}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":73,"character":3}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":101,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"clicked":[{"__symbolic":"method"}],"onKey":[{"__symbolic":"method"}],"syncModel":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"FilterComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"lux-filter","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":20,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"FilterComponent"}}],"template":"<div class=\"filter\">\n <input\n #i0\n type=\"text\"\n [attr.aria-label]=\"ariaLabel\"\n [placeholder]=\"placeholder\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [value]=\"searchValue\"\n (valueChange)=\"onInputValueChange(i0.value)\"\n (keyup)=\"keyup($event, i0.value)\"\n />\n\n <button\n [class.hide]=\"!searchValue\"\n aria-label=\"Clear\"\n class=\"clear-indicator icon icon-clear\"\n (click)=\"clear()\"\n ></button>\n <i *ngIf=\"1 || searchOnType\" class=\"search-indicator icon icon-search\"></i>\n <button\n class=\"btn-search\"\n *ngIf=\"!searchOnType\"\n [disabled]=\"disabled\"\n (click)=\"search()\"\n >\n Search\n </button>\n</div>\n","styles":[".filter{display:grid;grid-template-columns:auto 1.5rem 1.5rem .5rem auto}.filter input{grid-row:1;grid-column-start:1;grid-column-end:4}.filter .hide{visibility:collapse}.filter .clear-indicator{grid-row:1;grid-column:2;border:none}.filter .search-indicator{grid-row:1;grid-column:3}.filter .btn-search{grid-row:1;grid-column:5}.filter .icon-search{background:url(/assets/img/filter-search.png) no-repeat center;background:var(--lux-filter-icon-search, url(/assets/img/filter-search.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center;width:1rem;width:var(--lux-filter-icon-width, 1rem)}.filter .icon-clear{background:url(/assets/img/filter-clear.png) no-repeat center;background:var(--lux-filter-icon-clear, url(/assets/img/filter-clear.png) no-repeat center);background-size:1rem;background-size:var(--lux-filter-icon-bg-size, 1rem);background-position:center}\n"]}]}],"members":{"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"searchValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"searchOnType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":53,"character":3}}]}],"ariaLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":55,"character":3},"arguments":["aria-label"]}]}],"debounce":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"searchValueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":69,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"keyup":[{"__symbolic":"method"}],"onInputValueChange":[{"__symbolic":"method"}],"recreateObservable":[{"__symbolic":"method"}],"freeSubscriptions":[{"__symbolic":"method"}],"searchNow":[{"__symbolic":"method"}],"addEvent":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"InputComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":26,"character":1},"arguments":[{"selector":"lux-input","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":32,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"InputComponent"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":37,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"InputComponent"}}],"template":"<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix\">\n <span>$</span>\n</div>\n<input\n #input\n *ngIf=\"type !== 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [type]=\"domain\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"min?.toString() || undefined\"\n [attr.max]=\"max?.toString() || undefined\"\n [attr.step]=\"step?.toString() || undefined\"\n [attr.pattern]=\"pattern || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(input.value)\"\n (change)=\"onChangeValue(input.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n/>\n<textarea\n #textarea\n *ngIf=\"type === 'textarea'\"\n placement=\"top\"\n [id]=\"inputId\"\n [attr.value]=\"value\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.cols]=\"cols?.toString() || undefined\"\n [attr.rows]=\"rows?.toString() || undefined\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"className\"\n (keyup)=\"onKeyUp(textarea.value)\"\n (change)=\"onChangeValue(textarea.value)\"\n (keypress)=\"onKeyPress($event)\"\n (blur)=\"onLostFocus()\"\n></textarea>\n<div *ngIf=\"currency && currency === 'EUR'\" class=\"postfix\">\n <span>€</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix\">\n <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix\">\n <span>‰</span>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.email\">{{ userErrors[this.lang].email }}</div>\n <div *ngIf=\"lastErrors.min\">\n {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\n </div>\n <div *ngIf=\"lastErrors.max\">\n {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\n </div>\n</div>\n","styles":[":host{position:relative;display:flex;align-items:stretch;width:20rem}input,textarea{margin:inherit;margin:var(--lux-input-margin, inherit);padding:inherit;padding:var(--lux-input-padding, inherit)}.alert{padding:.2rem 2rem;background:#fe2e2e;color:#fff;font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol,.postfix,.prefix{display:inline-block;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-weight:400;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem;line-height:1.5px;line-height:var(--lux-input-postfix-line-height, 1.5px);font-size:1rem;font-size:var(--lux-input-postfix-font-size, 1rem);height:inherit;height:var(--lux-input-postfix-height, inherit)}.prefix{border-top-right-radius:0;border-bottom-right-radius:0}.postfix{border-top-left-radius:0;border-bottom-left-radius:0}.readonly{border:none}.readonly:focus{border:none;outline:none}\n"]}]}],"members":{"input":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":46,"character":3},"arguments":["input",{"static":false}]}]}],"textarea":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":47,"character":3},"arguments":["textarea",{"static":false}]}]}],"rows":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"cols":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"step":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"min":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"max":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"lang":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3}}]}],"inlineErrors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"ariaLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3},"arguments":["aria-label"]}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":97,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"pattern":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"currency":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":126,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":134,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":142,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":150,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":160,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":186,"character":3}}]}],"keyPress":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":187,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"setValueInControl":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"onLostFocus":[{"__symbolic":"method"}],"onKeyUp":[{"__symbolic":"method"}],"onChangeValue":[{"__symbolic":"method"}],"onKeyPress":[{"__symbolic":"method"}],"isNumber":[{"__symbolic":"method"}],"isPercentage":[{"__symbolic":"method"}],"isPermillage":[{"__symbolic":"method"}],"checkClassName":[{"__symbolic":"method"}],"checkType":[{"__symbolic":"method"}],"setEmailPatterns":[{"__symbolic":"method"}],"setDatePatterns":[{"__symbolic":"method"}],"setTimePatterns":[{"__symbolic":"method"}],"setPasswordPatterns":[{"__symbolic":"method"}],"setNumberPatterns":[{"__symbolic":"method"}],"setCurrencyPatterns":[{"__symbolic":"method"}],"setPercentagePatterns":[{"__symbolic":"method"}],"setPermillagePatterns":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"PaginationComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"lux-pagination","template":"<div class=\"lux-pagination\" *ngIf=\"showPagination\">\n <ng-container *ngIf=\"!hidePrevious\">\n <a\n luxTooltip\n [content]=\"first\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onFirst()\"\n [ngClass]=\"{\n enabledFirstLast: !hidePrevious\n }\"\n class=\"button-pagination icon arrow-left-end\"\n ></a>\n <a\n luxTooltip\n [content]=\"previous\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onPrevious()\"\n [ngClass]=\"{\n enabledFirstLast: !hidePrevious\n }\"\n class=\"button-pagination icon arrow-left\"\n ></a>\n </ng-container>\n\n <span class=\"ellipsis\" *ngIf=\"displayPreviousEllipsis\">...</span>\n\n <ng-container *ngFor=\"let pageNum of pages\">\n <a\n luxTooltip\n content=\"{{ pageNum + 1 }}\"\n placement=\"top\"\n delay=\"500\"\n [ngClass]=\"{\n disabled: pageNum === paginationInfo.page,\n enabled: pageNum !== paginationInfo.page\n }\"\n class=\"button-pagination\"\n (click)=\"onPage(pageNum)\"\n >{{ pageNum + 1 }}</a\n >\n </ng-container>\n\n <span class=\"ellipsis\" *ngIf=\"displayNextEllipsis\">...</span>\n\n <ng-container *ngIf=\"!lastPage\">\n <a\n luxTooltip\n [content]=\"next\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onNext()\"\n [ngClass]=\"{\n enabledFirstLast: !lastPage\n }\"\n class=\"button-pagination icon arrow-right\"\n ></a>\n <a\n luxTooltip\n [content]=\"last\"\n placement=\"top\"\n delay=\"500\"\n (click)=\"onLast()\"\n [ngClass]=\"{\n enabledFirstLast: !lastPage\n }\"\n class=\"button-pagination icon arrow-right-end\"\n ></a>\n </ng-container>\n</div>\n","styles":[".lux-pagination{display:flex;flex-direction:row;margin:2% 0;width:100%;background:white;align-items:center}.disabled{cursor:not-allowed;border:1px solid #325c81;border:var(--lux-pagination-disabled-border, 1px solid #325c81);border-radius:10%;border-radius:var(--lux-pagination-disabled-border-radius, 10%);padding:1%;margin:0 .7%;color:#fff;color:var(--lux-pagination-disabled-color, white);background-color:#325c81;background-color:var(--lux-pagination-disabled-background-color, #325c81);text-decoration:none;pointer-events:none}.enabled{border:1px solid #cfcfcf;border:var(--lux-pagination-enabled-border, 1px solid #cfcfcf);border-radius:10%;border-radius:var(--lux-pagination-enabled-border-radius, 10%);padding:1%;margin:0 .7%;color:#325c81;color:var(--lux-pagination-enabled-color, #325c81);width:-webkit-min-content;width:-moz-min-content;width:min-content;cursor:pointer}.enabledFirstLast{border:1px solid #cfcfcf;border-radius:10%;padding:1%;color:#325c81;margin:0 .7%;width:-webkit-min-content;width:-moz-min-content;width:min-content;cursor:pointer}.ellipsis{margin:0 .5rem;padding:0;color:#325c81;width:-webkit-min-content;width:-moz-min-content;width:min-content}.button-pagination{width:1em;width:var(--lux-pagination-button-width, 1em);height:1.2em;height:var(--lux-pagination-button-height, 1.2em);font-size:80%;font-size:var(--lux-pagination-font-size, 80%);text-align:center}.icon{background-size:1.3em 1.4em;background-position:center;background-repeat:no-repeat}.arrow-right{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");background-position:.4em}.arrow-left{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");transform:rotate(180deg);background-position:.4em}.arrow-right-end{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_3%22 points%3D%2241.8%2C45.7 30.4%2C44.3 50.8%2C24 30.4%2C3.7 41.8%2C2.3 63.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");background-position:.1em}.arrow-left-end{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2268%22 height%3D%2248%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E %3Cg%3E %3Ctitle%3Ebackground%3C%2Ftitle%3E %3Crect fill%3D%22none%22 id%3D%22canvas_background%22 height%3D%22402%22 width%3D%221082%22 y%3D%22-1%22 x%3D%22-1%22%2F%3E %3C%2Fg%3E %3Cg%3E %3Ctitle%3ELayer 1%3C%2Ftitle%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_2%22 points%3D%2221.8%2C45.7 10.4%2C44.3 30.8%2C24 10.4%2C3.7 21.8%2C2.3 43.5%2C24 %22%2F%3E %3Cpolygon fill%3D%22%23325C81%22 id%3D%22svg_3%22 points%3D%2241.8%2C45.7 30.4%2C44.3 50.8%2C24 30.4%2C3.7 41.8%2C2.3 63.5%2C24 %22%2F%3E %3C%2Fg%3E%3C%2Fsvg%3E\");background-position:.1em;transform:rotate(180deg)}@media only screen and (min-width: 300px) and (max-width: 500px){.arrow-right{background-position:.2em}.arrow-left{background-position:.2em}.arrow-right-end{background-position:0em}.arrow-left-end{background-position:0em}}@media only screen and (min-width: 500px) and (max-width: 850px){.arrow-right{background-position:.3em}.arrow-left{background-position:.3em}.arrow-right-end{background-position:0em}.arrow-left-end{background-position:0em}}@media only screen and (min-width: 900px){.arrow-right{background-position:.2em}.arrow-left{background-position:.2em}.arrow-right-end{background-position:0em}.arrow-left-end{background-position:0em}}\n"]}]}],"members":{"goToPage":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":39,"character":3}}]}],"pageSizeChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":40,"character":3}}]}],"lang":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"paginationInfo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"pageSizeChanged":[{"__symbolic":"method"}],"onPage":[{"__symbolic":"method"}],"onFirst":[{"__symbolic":"method"}],"onLast":[{"__symbolic":"method"}],"onNext":[{"__symbolic":"method"}],"onPrevious":[{"__symbolic":"method"}],"syncState":[{"__symbolic":"method"}],"calculatePages":[{"__symbolic":"method"}],"loadLanguage":[{"__symbolic":"method"}]}},"LuxTooltipDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":9,"character":1},"arguments":[{"selector":"[luxTooltip]"}]}],"members":{"luxTooltip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"placement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":25,"character":20},{"__symbolic":"reference","name":"ɵe"}]}],"onMouseEnter":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":29,"character":3},"arguments":["mouseenter"]}]}],"onMouseLeave":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":35,"character":3},"arguments":["mouseleave"]}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":42,"character":3},"arguments":["click"]}]}],"show":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}},"ModalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":16,"character":23}]}],"open":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"RadioItem":{"__symbolic":"interface"},"RadiogroupComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"lux-radiogroup","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":29,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"RadiogroupComponent"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":34,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"RadiogroupComponent"}}],"template":"<div class=\"radiogroup\"\n [class.disabled]=\"disabled || readonly\"\n >\n <ng-container *ngFor=\"let item of items; let first=first; let last=last\">\n <div [class.radio-start]=\"first\"\n [class.radio-end]=\"last\"\n class=\"radio-item\"\n [class.selected]=\"item.value === value\"\n (click)=\"setValue($event, item)\"\n >\n <input [id]=\"item.name\"\n type=\"radio\"\n [name]=\"name\"\n [attr.disabled]=\"disabled || null\"\n [attr.readonly]=\"readonly || null\"\n [value]=\"item.value\">\n <label [for]=\"item.name\"\n class=\"unselectable\"\n >{{ item.label }}</label>\n </div>\n</ng-container>\n</div>\n","styles":[".radiogroup{display:flex}.radio-item{border-radius:0;border:1px solid #ccc;padding:0 .5rem;padding:var(--lux-radiogroup-padding, 0rem .5rem)}.radio-item input{display:none}.radio-item label{color:initial;color:var(--lux-radiogroup-color, initial);font-size:initial;font-size:var(--lux-radiogroup-font-size, initial);margin-top:.3rem;margin-bottom:.3rem}.radio-item.selected{background-color:#2e2eac;background-color:var(--lux-radiogroup-selected-background-color, #2e2eac)}.radio-item.selected label{font-size:initial;font-size:var(--lux-radiogroup-font-size, initial);color:#fff;color:var(--lux-radiogroup-selected-color, white)}.radio-start{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.radio-end{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.disabled .radio-item{background-color:#f0f0f0;color:#444}.disabled .selected{font-size:initial;font-size:var(--lux-radiogroup-selected-disabled-font-size, initial);color:#fff;color:var(--lux-radiogroup-selected-disabled-color, white);background-color:#9898ec;background-color:var(--lux-radiogroup-selected-disabled-background-color, #9898ec)}.unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}\n"]}]}],"members":{"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"items":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"itemsChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":58,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":75,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"ensureHasUniqueName":[{"__symbolic":"method"}]}},"ModalRef":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ComponentRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"ɵg"}]},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ComponentRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"ɵg"}]},{"__symbolic":"error","message":"Expression form not supported","line":34,"character":29,"module":"./lib/modal/modal-ref"}]}],"close":[{"__symbolic":"method"}],"_dismiss":[{"__symbolic":"method"}],"dismiss":[{"__symbolic":"method"}],"_removeModalElements":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":29,"character":1},"arguments":[{"selector":"lux-geolocation","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":35,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"ɵa"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":40,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"ɵa"}}],"template":"<div class=\"lux-geolocation\" [id]=\"inputId\">\n <input\n #latitude\n class=\"prefix\"\n type=\"number\"\n [id]=\"inputId + '$latitude'\"\n [(ngModel)]=\"latitudeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"\n minLatitude !== undefined && minLatitude !== null\n ? minLatitude.toString()\n : undefined\n \"\n [attr.max]=\"\n maxLatitude !== undefined && maxLatitude !== null\n ? maxLatitude.toString()\n : undefined\n \"\n [attr.step]=\"\n step !== undefined && step !== null ? step.toString() : undefined\n \"\n placeholder=\"lat\"\n [ngClass]=\"className\"\n (focus)=\"markAsTouched()\"\n (keyup)=\"onEventLatitude(latitude.value)\"\n (change)=\"onEventLatitude(latitude.value)\"\n (keypress)=\"onKeyPress($event)\"\n />\n <div class=\"infix symbol\">\n <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue >= 0\">{{\n cardinalPoints[this.lang].north\n }}</span>\n <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue < 0\">{{\n cardinalPoints[this.lang].south\n }}</span>\n <span *ngIf=\"!isValidNumber(latitudeValue)\">{{\n cardinalPoints[this.lang].unknown\n }}</span>\n </div>\n <input\n #longitude\n class=\"infix\"\n type=\"number\"\n [id]=\"inputId + '$longitude'\"\n [(ngModel)]=\"longitudeValue\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n [attr.min]=\"\n minLongitude !== undefined && minLongitude !== null\n ? minLongitude.toString()\n : undefined\n \"\n [attr.max]=\"\n maxLongitude !== undefined && maxLongitude !== null\n ? maxLongitude.toString()\n : undefined\n \"\n [attr.step]=\"\n step !== undefined && step !== null ? step.toString() : undefined\n \"\n placeholder=\"lon\"\n [ngClass]=\"className\"\n (focus)=\"markAsTouched()\"\n (keyup)=\"onEventLongitude(longitude.value)\"\n (change)=\"onEventLongitude(longitude.value)\"\n (keypress)=\"onKeyPress($event)\"\n />\n <div class=\"infix symbol\">\n <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue >= 0\">{{\n cardinalPoints[this.lang].east\n }}</span>\n <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue < 0\">{{\n cardinalPoints[this.lang].west\n }}</span>\n <span *ngIf=\"!isValidNumber(longitudeValue)\">{{\n cardinalPoints[this.lang].unknown\n }}</span>\n </div>\n <button class=\"postfix\" (click)=\"openModalMap(modalMap)\">\n <span>🌐</span>\n </button>\n</div>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n <div *ngIf=\"lastErrors.required\">\n {{ userErrors[this.lang].required }}\n </div>\n <div *ngIf=\"lastErrors.minLatitude\">\n {{\n userErrors[this.lang].minLatitude.replace(\n '$minLatitude',\n lastErrors.minLatitude.min\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.maxLatitude\">\n {{\n userErrors[this.lang].maxLatitude.replace(\n '$maxLatitude',\n lastErrors.maxLatitude.max\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.minLongitude\">\n {{\n userErrors[this.lang].minLongitude.replace(\n '$minLongitude',\n lastErrors.minLongitude.min\n )\n }}\n </div>\n <div *ngIf=\"lastErrors.maxLongitude\">\n {{\n userErrors[this.lang].maxLongitude.replace(\n '$maxLongitude',\n lastErrors.maxLongitude.max\n )\n }}\n </div>\n</div>\n\n<ng-template #modalMap let-modal>\n <div class=\"lux-modal-header\">\n <h4 class=\"modal-title\" id=\"modal-basic-title\">{{ mapTitle }}</h4>\n <button\n type=\"button\"\n class=\"close\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss('Cross click')\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"lux-modal-body content\">\n <lux-autocomplete\n #searchBar\n *ngIf=\"!disabled && !readonly\"\n [instance]=\"self\"\n [resolveLabelsFunction]=\"getLabels\"\n [populateFunction]=\"getData\"\n (valueChange)=\"\n map.markerPoint = searchBar.value;\n map.center = map.markerPoint\n \"\n ></lux-autocomplete>\n <div class=\"map-container\">\n <lux-map\n #map\n [center]=\"value\"\n [markerPoint]=\"value\"\n [zoom]=\"zoom\"\n [readonly]=\"readonly === true || disabled === true ? true : false\"\n ></lux-map>\n </div>\n </div>\n <div class=\"lux-modal-footer\">\n <button\n *ngIf=\"!disabled && !readonly\"\n type=\"button\"\n class=\"btn btn-cancel\"\n (click)=\"modal.close('cancel')\"\n >\n Cancel\n </button>\n <button\n *ngIf=\"!disabled && !readonly\"\n type=\"button\"\n class=\"btn btn-select\"\n (click)=\"modal.close(map.markerPoint.coordinates)\"\n >\n Select\n </button>\n </div>\n</ng-template>\n","styles":[".lux-geolocation{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:30rem}.alert{padding:.2rem 2rem;background:#fe2e2e;color:#fff;font-family:Consolas,monospace;width:45%;margin-right:1rem;display:inline-block}.symbol{display:inline-block;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef}.rounded,.postfix,.infix,.prefix{border:1px solid #ced4da;border-radius:.25rem}.prefix{border-top-right-radius:0;border-bottom-right-radius:0}.infix{border-radius:0}.postfix{border-top-left-radius:0;border-bottom-left-radius:0}.btn,.btn-cancel,.btn-select{margin:.2em}.btn-select{background-color:#b4b8f0}.btn-cancel{background-color:#ffced7}.lux-modal-body{padding:0}.map-container{width:90vw;height:45vh}.readonly:focus{outline:none}\n"]}]}],"members":{"latitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":49,"character":3},"arguments":["latitude",{"static":true}]}]}],"longitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":50,"character":3},"arguments":["longitude",{"static":true}]}]}],"minLatitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"maxLatitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":101,"character":3}}]}],"minLongitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"maxLongitude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"step":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":107,"character":3}}]}],"zoom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":109,"character":3}}]}],"lang":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":116,"character":3}}]}],"inlineErrors":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":117,"character":3}}]}],"inputId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":118,"character":3}}]}],"ariaLabel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":119,"character":3},"arguments":["aria-label"]}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":120,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":122,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":131,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":139,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":167,"character":3}}]}],"keyPress":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":168,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ModalService"},{"__symbolic":"reference","name":"ɵd"}]}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"setLatitudeInControl":[{"__symbolic":"method"}],"setLongitudeInControl":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"updateLatitude":[{"__symbolic":"method"}],"updateLongitude":[{"__symbolic":"method"}],"updateLatitudeAndLongitude":[{"__symbolic":"method"}],"roundToStepAndUpdateLatitudeAndLongitude":[{"__symbolic":"method"}],"onEventLatitude":[{"__symbolic":"method"}],"onEventLongitude":[{"__symbolic":"method"}],"onKeyPress":[{"__symbolic":"method"}],"checkClassName":[{"__symbolic":"method"}],"openModalMap":[{"__symbolic":"method"}],"getLabels":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}],"setPatterns":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":38,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":38,"character":12}]}],null,null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":37,"character":29},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":39,"character":23},{"__symbolic":"reference","module":"@angular/core","name":"RendererFactory2","line":40,"character":30},{"__symbolic":"reference","name":"ɵc"}]}],"open":[{"__symbolic":"method"}],"_applyWindowOptions":[{"__symbolic":"method"}],"_applyBackgroundOptions":[{"__symbolic":"method"}],"_revertAriaHidden":[{"__symbolic":"method"}],"getContentRef":[{"__symbolic":"method"}],"createFromTemplateRef":[{"__symbolic":"method"}],"_attachBackdrop":[{"__symbolic":"method"}],"_attachWindowComponent":[{"__symbolic":"method"}],"_registerModalRef":[{"__symbolic":"method"}],"_registerWindowCmpt":[{"__symbolic":"method"}],"_setAriaHidden":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{},"statics":{"ɵprov":{}}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":29,"character":28}]}],"searchGeolocation":[{"__symbolic":"method"}],"getLabels":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}],"getFromCache":[{"__symbolic":"method"}],"addToCache":[{"__symbolic":"method"}],"revomeFromCache":[{"__symbolic":"method"}],"getLatestQuery":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":19,"character":23},{"__symbolic":"reference","module":"@angular/core","name":"ComponentFactoryResolver","line":20,"character":18},{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef","line":21,"character":29}]}],"appendComponentToBody":[{"__symbolic":"method"}],"removeComponentFromBody":[{"__symbolic":"method"}],"getTooltipContentRef":[{"__symbolic":"method"}],"createFromTemplateRef":[{"__symbolic":"method"}],"createFromComponent":[{"__symbolic":"method"}],"setStyle":[{"__symbolic":"method"}],"getTooltipElementFromHTMLElemnt":[{"__symbolic":"method"}],"setPosition":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"lux-modal-window","template":"\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\"><ng-content></ng-content></div>\n </div>\n "}]}],"members":{"ariaDescribedBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"ariaLabelledBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"backdrop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"keyboard":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"windowClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"dismissEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":37,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":39,"character":3},"arguments":["class"]}]}],"role":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":42,"character":3},"arguments":["attr.role"]}]}],"tabindex":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":43,"character":3},"arguments":["tabindex"]}]}],"ariamodal":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":44,"character":3},"arguments":["attr.aria-modal"]}]}],"hostAriaLabelledBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":45,"character":3},"arguments":["attr.aria-labelledby"]}]}],"hostAriaDescribedBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":48,"character":3},"arguments":["attr.aria-describedby"]}]}],"backdropClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":51,"character":3},"arguments":["click",["$event.target"]]}]}],"escKey":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":58,"character":3},"arguments":["keyup.esc",["$event"]]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":65,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":65,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":66,"character":31,"context":{"typeName":"HTMLElement"},"module":"./lib/modal/modal-window"}]}]}],"dismiss":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"lux-modal-backdrop","template":""}]}],"members":{"backdropClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":7,"character":3}}]}],"class":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":9,"character":3},"arguments":["class"]}]}],"style":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":10,"character":3},"arguments":["style"]}]}]}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"lux-map","template":"<div [id]=\"mapId\" class=\"map\" (resized)=\"onResize()\"></div>\n","styles":[".map{min-height:100px;height:100%;min-width:160px;width:100%}\n"]}]}],"members":{"mapId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"zoom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"center":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"markerCoordinates":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3}}]}],"markerPoint":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":113,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":134,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵi"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"initMap":[{"__symbolic":"method"}],"addMarkerAtCoordinates":[{"__symbolic":"method"}],"removeMarker":[{"__symbolic":"method"}],"getMarkerCoordinates":[{"__symbolic":"method"}],"onResize":[{"__symbolic":"method"}]},"statics":{"idCounter":0}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"load":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":18,"character":1},"arguments":[{"selector":"lux-select","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":24,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"ɵj"}},{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALIDATORS","line":29,"character":15},"multi":true,"useExisting":{"__symbolic":"reference","name":"ɵj"}}],"template":"<div class=\"lux-select\">\n <ul class=\"list\">\n <li *ngFor=\"let item of value; let i = index\">\n <span>{{ item }}</span>\n <button *ngIf=\"!disabled\"\n class=\"remove\"\n (click)=\"remove(i)\"\n [attr.aria-label]=\"'Remove ' + item\"\n >Remove</button>\n </li>\n </ul>\n <div class=\"add-new-item\" *ngIf=\"!disabled\">\n <lux-input\n id=\"{{ id + 'addNew' }}\"\n type=\"string\"\n [placeholder]=\"placeholder\"\n [attr.aria-label]=\"placeholder\"\n [disabled]=\"disabled\"\n [(value)]=\"newEntry\"\n (keyPress)=\"onKeyPress($event)\"\n (valueChange)=\"onChangeNewEntry($event)\"\n >\n </lux-input>\n <div *ngIf=\"canAdd\">\n <button *ngIf=\"isValidNewEntry\" (click)=\"add(newEntry)\">Add</button>\n </div>\n <div class=\"error\">\n {{ error }}\n </div>\n </div>\n</div>\n","styles":[".lux-select{margin-bottom:.5em}.lux-select .list{margin:1em;padding-bottom:.2em;list-style-type:square}.lux-select .list span{margin-bottom:.3em}.remove{margin-left:2em;font-size:.65em;color:#b22222;background:transparent;border:2px solid #BBB}.add-new-item{display:inline-flex;margin-left:2.2em;height:1.6em}.error{margin:.5em 0;color:#b22222}\n"]}]}],"members":{"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":42,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"unique":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"validateItem":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"registerOnValidatorChange":[{"__symbolic":"method"}],"validate":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"onKeyPress":[{"__symbolic":"method"}],"onChangeNewEntry":[{"__symbolic":"method"}]}},"ɵk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"template":"\n <span class=\"lux-tooltip\" style=\"transition: opacity 200ms\">{{context.message}}</span>\n "}]}],"members":{"context":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor"}]}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":2,"character":1},"arguments":[{"selector":"[luxVoiceRecognition]"}]}],"members":{"language":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":6,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":12,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":12,"character":56}]}],"ngOnInit":[{"__symbolic":"method"}],"microphoneClick":[{"__symbolic":"method"}],"onRecognized":[{"__symbolic":"method"}]}},"ɵm":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":6,"character":26},"arguments":["WindowToken"]},"ɵn":{"__symbolic":"class","members":{}},"ɵo":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵn"},"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"ɵp":{"__symbolic":"error","message":"Lambda not supported","line":34,"character":29,"module":"./lib/window/window.service"},"ɵq":[{"provide":{"__symbolic":"reference","name":"ɵn"},"useClass":{"__symbolic":"reference","name":"ɵo"}},{"provide":{"__symbolic":"reference","name":"ɵm"},"useFactory":{"__symbolic":"reference","name":"ɵp"},"deps":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":51,"character":21}]}],"ɵr":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@angular/core","name":"ViewRef","line":27,"character":21},{"__symbolic":"reference","name":"ComponentRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]}]}}},"origins":{"LuxModule":"./lib/lux.module","DataSource":"./lib/datasource","DataSourceItem":"./lib/datasource","DecoratedDataSource":"./lib/datasource","DecoratedDataSourceItem":"./lib/datasource","AutocompleteComponent":"./lib/autocomplete/autocomplete.component","AutocompleteListComponent":"./lib/autocomplete-list/autocomplete-list.component","LuxBreadcrumbComponent":"./lib/breadcrumb/breadcrumb.component","BreadcrumbItem":"./lib/breadcrumb/breadcrumb.component","CheckboxComponent":"./lib/checkbox/checkbox.component","FilterComponent":"./lib/filter/filter.component","InputComponent":"./lib/input/input.component","PaginationComponent":"./lib/pagination/pagination.component","LuxTooltipDirective":"./lib/tooltip/tooltip.directive","ModalService":"./lib/modal/modal.service","RadioItem":"./lib/radiogroup/radiogroup.component","RadiogroupComponent":"./lib/radiogroup/radiogroup.component","ModalRef":"./lib/modal/modal-ref","ɵa":"./lib/geolocation/geolocation.component","ɵb":"./lib/modal/modal-stack","ɵc":"./lib/modal/modal-config","ɵd":"./lib/geolocation/geolocation.service","ɵe":"./lib/tooltip/tooltip.service","ɵf":"./lib/modal/modal-window","ɵg":"./lib/modal/modal-backdrop","ɵh":"./lib/map/map.component","ɵi":"./lib/geolocation/openlayer-loader.service","ɵj":"./lib/select/select.component","ɵk":"./lib/tooltip/tooltip.component","ɵl":"./lib/voice-recognition/voice-recognition.directive","ɵm":"./lib/window/window.service","ɵn":"./lib/window/window.service","ɵo":"./lib/window/window.service","ɵp":"./lib/window/window.service","ɵq":"./lib/window/window.service","ɵr":"./lib/modal/util"},"importAs":"@metadev/lux"}
|