{"version":3,"file":"metadev-lux.mjs","sources":["../../../projects/lux/src/lib/helperFns.ts","../../../projects/lux/src/lib/lang.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.html","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.ts","../../../projects/lux/src/lib/autocomplete-list/autocomplete-list.component.html","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/lux/src/lib/breadcrumb/breadcrumb.component.html","../../../projects/lux/src/lib/checkbox/checkbox.component.ts","../../../projects/lux/src/lib/checkbox/checkbox.component.html","../../../projects/lux/src/lib/datetime/datetime.component.ts","../../../projects/lux/src/lib/datetime/datetime.component.html","../../../projects/lux/src/lib/filter/filter.component.ts","../../../projects/lux/src/lib/filter/filter.component.html","../../../projects/lux/src/lib/modal/modal-backdrop.ts","../../../projects/lux/src/lib/modal/modal-config.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-stack.ts","../../../projects/lux/src/lib/modal/modal.service.ts","../../../projects/lux/src/lib/geolocation/geolocation.service.ts","../../../projects/lux/src/lib/geolocation/openlayer-loader.service.ts","../../../projects/lux/src/lib/map/map.component.ts","../../../projects/lux/src/lib/map/map.component.html","../../../projects/lux/src/lib/geolocation/geolocation.component.ts","../../../projects/lux/src/lib/geolocation/geolocation.component.html","../../../projects/lux/src/lib/input/regexp.service.ts","../../../projects/lux/src/lib/input/input.component.ts","../../../projects/lux/src/lib/input/input.component.html","../../../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/pagination/pagination.component.ts","../../../projects/lux/src/lib/pagination/pagination.component.html","../../../projects/lux/src/lib/radiogroup/radiogroup.component.ts","../../../projects/lux/src/lib/radiogroup/radiogroup.component.html","../../../projects/lux/src/lib/select/select.component.ts","../../../projects/lux/src/lib/select/select.component.html","../../../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":["/* eslint-disable no-useless-escape */\r\n// 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\nexport const isValidUrl = (value: string): boolean => {\r\n  const pattern =\r\n    // eslint-disable-next-line max-len\r\n    /^((([a-z]+?:\\/\\/)?(((([a-z0-9]([a-z0-9-]*[a-z0-9])*)\\.)+[a-z]{2,})|((([0-9]{1,3}\\.){3}[0-9]{1,3}))|(localhost))(\\:[0-9]+)?))?((\\/[a-zA-Z0-9\\-_+=~.,:;%]+)*\\/?)((\\?|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+(((&|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+)*))?(#[a-zA-Z0-9\\-_+~.,:;%]+(=[a-zA-Z0-9\\*\\-_+~.,:;%]+)?)?$/;\r\n  return pattern.test(value);\r\n};\r\n\r\nexport const isValidRelativeUrl = (value: string): boolean => {\r\n  const pattern =\r\n    // eslint-disable-next-line max-len\r\n    /^((([a-z]+?:\\/\\/)?(((([a-z0-9]([a-z0-9-]*[a-z0-9])*)\\.)+[a-z]{2,})|((([0-9]{1,3}\\.){3}[0-9]{1,3}))|(localhost))(\\:[0-9]+)?)|([a-zA-Z0-9\\-_+=~.,:;%]+))?((\\/[a-zA-Z0-9\\-_+=~.,:;%]+)*\\/?)((\\?|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+(((&|;)[a-zA-Z0-9\\-_+~.,:;%]+=[a-zA-Z0-9\\-_+~.,:;%]+)*))?(#[a-zA-Z0-9\\-_+~.,:;%]+(=[a-zA-Z0-9\\*\\-_+~.,:;%]+)?)?$/;\r\n  return pattern.test(value);\r\n};\r\n\r\nexport const isValidColor = (value: string): boolean => {\r\n  value = String(value).toLowerCase();\r\n  // valid values for CSS color property, yet not valid colors by themselves\r\n  if (\r\n    value === 'currentcolor' ||\r\n    value === 'inherit' ||\r\n    value === 'initial' ||\r\n    value === 'revert' ||\r\n    value === 'unset'\r\n  ) {\r\n    return false;\r\n  }\r\n  return CSS.supports('color', value);\r\n};\r\n\r\n// date functions\r\n\r\nexport const isValidDate = (date: Date): boolean =>\r\n  exists(date) ? !isNaN(date.getTime()) : false;\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\nexport const addTimezoneOffset = (date: Date): Date => {\r\n  if (!isValidDate(date)) {\r\n    return date;\r\n  } else {\r\n    return new Date(date.getTime() - date.getTimezoneOffset() * 60000);\r\n  }\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","/** 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 {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  ControlValueAccessor,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  ValidationErrors,\r\n  Validator\r\n} from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\nimport { debounceTime, first, map } from 'rxjs/operators';\r\nimport {\r\n  DataSource,\r\n  DataSourceItem,\r\n  DecoratedDataSource,\r\n  DecoratedDataSourceItem\r\n} from '../datasource';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\n\r\nexport const LOST_FOCUS_TIME_WINDOW_MS = 200; // ms\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-autocomplete',\r\n  templateUrl: './autocomplete.component.html',\r\n  styleUrls: ['./autocomplete.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      multi: true,\r\n      useExisting: forwardRef(() => AutocompleteComponent)\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      multi: true,\r\n      useExisting: forwardRef(() => AutocompleteComponent)\r\n    }\r\n  ]\r\n})\r\nexport class AutocompleteComponent\r\n  implements ControlValueAccessor, Validator, OnInit, AfterViewInit\r\n{\r\n  static idCounter = 0;\r\n\r\n  @ViewChild('i0', { static: true }) i0: ElementRef;\r\n  @ViewChild('completeDiv', { static: true }) completeDiv: ElementRef;\r\n\r\n  private _dataSource: DataSource<any, string>;\r\n  private _placeholder: string;\r\n  private _value: any;\r\n  private lostFocusHandled = true;\r\n  private t0 = 0;\r\n\r\n  showSpinner = false;\r\n  touched = false;\r\n  completionList: DecoratedDataSource = [];\r\n  showCompletion = false;\r\n  focusItem: DataSourceItem<any, string>;\r\n\r\n  @Output() valueChange = new EventEmitter<any>();\r\n  @Output() dataSourceChange = new EventEmitter<DataSource<any, string>>();\r\n\r\n  @Input() public inputId: string;\r\n  @Input() public disabled: boolean | null = null;\r\n  @Input() public readonly: boolean | null = null;\r\n  @Input() label = '';\r\n  /** If canAddNewValues, user can type items not present in the data-source. */\r\n  @Input() canAddNewValues = false;\r\n  /** After cleaning the selection should the completion list remain open or closed:\r\n   *  false: (default) close on filters, to clean a filter and select all.\r\n   *  true: keep open (when the action most likely is to pick another one).\r\n   */\r\n  @Input() keepOpenAfterDelete = false;\r\n\r\n  @Input()\r\n  get value(): any {\r\n    return this._value;\r\n  }\r\n  set value(v: any) {\r\n    const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n    this._value = v;\r\n    this.onChange(v);\r\n    this.completeLabel();\r\n    if (!initialAndEmpty) {\r\n      this.valueChange.emit(v);\r\n    }\r\n  }\r\n  @Input()\r\n  get dataSource(): DataSource<any, string> {\r\n    return this._dataSource;\r\n  }\r\n  set dataSource(v: DataSource<any, string>) {\r\n    this._dataSource = v;\r\n    this.dataSourceChange.emit(v);\r\n  }\r\n  @Input() required = false;\r\n\r\n  @Input()\r\n  set placeholder(v: string) {\r\n    this._placeholder = v;\r\n  }\r\n  get placeholder(): string {\r\n    return this._placeholder ? this._placeholder : '';\r\n  }\r\n\r\n  @Input() resolveLabelsFunction?: (\r\n    instance: any,\r\n    keys: any[]\r\n  ) => Observable<DataSource<any, string>> = undefined;\r\n  @Input() populateFunction?: (\r\n    instance: any,\r\n    search: string\r\n  ) => Observable<DataSource<any, string>> = undefined;\r\n  @Input() instance: any;\r\n\r\n  constructor(private cd: ChangeDetectorRef) {}\r\n\r\n  // ControlValueAccessor Interface\r\n  onChange = (value): void => {};\r\n  onTouched = (): void => {};\r\n\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n  markAsTouched(): void {\r\n    if (!this.touched && !this.disabled) {\r\n      this.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n\r\n  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n  // End ControlValueAccessor Interface\r\n\r\n  // Validator interface\r\n  registerOnValidatorChange(): void {}\r\n\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    const value = control.value;\r\n    if (\r\n      this.required &&\r\n      (value === '' || value === null || value === undefined)\r\n    ) {\r\n      return { required: { value, reason: 'Required field.' } };\r\n    }\r\n    return null;\r\n  }\r\n  // End of Validator interface\r\n\r\n  clear(): void {\r\n    this.value = null;\r\n    this.toggleCompletion(this.keepOpenAfterDelete, '');\r\n  }\r\n\r\n  private completeLabel(): void {\r\n    if (this.value) {\r\n      if (this.dataSource) {\r\n        this.label = findLabelForId(this.dataSource, this.value) || '';\r\n      } else if (this.instance && this.resolveLabelsFunction) {\r\n        this.resolveLabelsFunction(this.instance, [this.value])\r\n          .pipe(debounceTime(1), first())\r\n          .subscribe((data) => {\r\n            this.label = findLabelForId(data, this.value) || '';\r\n          });\r\n      }\r\n    } else {\r\n      this.label = '';\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.inputId = this.inputId\r\n      ? this.inputId\r\n      : `autocompletelist${AutocompleteComponent.idCounter++}`;\r\n    this.completeLabel();\r\n  }\r\n  ngAfterViewInit(): void {\r\n    this.setSameWidth();\r\n  }\r\n  onInputResized(): void {\r\n    this.setSameWidth();\r\n  }\r\n  private setSameWidth(): void {\r\n    const width = this.i0.nativeElement.getBoundingClientRect().width;\r\n    this.completeDiv.nativeElement.style.width = `${width}px`;\r\n  }\r\n\r\n  onKeydown(event: KeyboardEvent, label: string): void {\r\n    switch (event.key) {\r\n      case 'Tab':\r\n        if (label) {\r\n          this.pickSelectionOrFirstMatch(label);\r\n        }\r\n        this.showCompletion = false;\r\n        break;\r\n    }\r\n    this.markAsTouched();\r\n  }\r\n  onKeypress(event: KeyboardEvent, label: string): void {\r\n    switch (event.key) {\r\n      case 'Intro':\r\n      case 'Enter':\r\n        this.pickSelectionOrFirstMatch(label);\r\n        event.preventDefault();\r\n        break;\r\n    }\r\n    this.markAsTouched();\r\n  }\r\n  onKeyup(event: KeyboardEvent, label: string): void {\r\n    switch (event.key) {\r\n      case 'PageDown':\r\n        this.focusOnNext(5);\r\n        event.preventDefault();\r\n        break;\r\n      case 'ArrowDown':\r\n        this.focusOnNext(1);\r\n        event.preventDefault();\r\n        break;\r\n      case 'PageUp':\r\n        this.focusOnPrevious(5);\r\n        event.preventDefault();\r\n        break;\r\n      case 'ArrowUp':\r\n        this.focusOnPrevious(1);\r\n        event.preventDefault();\r\n        break;\r\n      case 'Escape':\r\n        this.complete(null);\r\n        event.preventDefault();\r\n        break;\r\n      case 'Intro':\r\n      case 'Enter':\r\n        event.preventDefault();\r\n        break;\r\n      default:\r\n        this.showCompletionList(label);\r\n      // event.preventDefault();\r\n    }\r\n    this.markAsTouched();\r\n  }\r\n  private focusOnNext(offset: number): void {\r\n    const list = this.completionList || [];\r\n    const index = list.findIndex(\r\n      (it) => this.focusItem && it.key === this.focusItem.key\r\n    );\r\n    const indexNext =\r\n      index !== -1 && list.length > index + offset\r\n        ? index + offset\r\n        : list.length - 1;\r\n    const next = list[indexNext];\r\n    this.focusItem = next;\r\n    this.ensureItemVisible(index);\r\n  }\r\n  private focusOnPrevious(offset: number): void {\r\n    const list = this.completionList || [];\r\n    const index = list.findIndex(\r\n      (it) => this.focusItem && it.key === this.focusItem.key\r\n    );\r\n    const indexPrevious = index !== -1 && index > offset ? index - offset : 0;\r\n    const next = list[indexPrevious];\r\n    this.focusItem = next;\r\n    this.ensureItemVisible(index);\r\n  }\r\n  onLostFocus(label: string): void {\r\n    this.lostFocusHandled = false;\r\n    this.t0 = performance.now();\r\n    // console.log('Init LostFocus');\r\n    setTimeout(() => {\r\n      // needs to postpone actions some milliseconds to verify if\r\n      // lost focus was followed by a list selection -> then cancel\r\n      // if not -> make side effect\r\n      if (!this.lostFocusHandled) {\r\n        // console.log(\r\n        //   'Lost focus 2',\r\n        //   this.lostFocusHandled,\r\n        //   'SIDE EFFECT',\r\n        //   performance.now() - this.t0,\r\n        //   'label:',\r\n        //   label\r\n        // );\r\n        if (label && this.label !== label) {\r\n          this.pickSelectionOrFirstMatch(label);\r\n        } else {\r\n          this.lostFocusHandled = true;\r\n        }\r\n        this.toggleCompletion(false, label);\r\n      } else {\r\n        // do nothing (list selection took place)\r\n        // console.log(\r\n        //   'onlost focus 2',\r\n        //   this.lostFocusHandled,\r\n        //   'nothing',\r\n        //   performance.now() - this.t0\r\n        // );\r\n      }\r\n    }, LOST_FOCUS_TIME_WINDOW_MS);\r\n  }\r\n  complete(item: DataSourceItem<Record<string, unknown>, string>): void {\r\n    if (!this.lostFocusHandled) {\r\n      this.lostFocusHandled = true; // prevent a previous lostFocus to trigger a side effect\r\n      const ellapsed = performance.now() - this.t0;\r\n      if (ellapsed > LOST_FOCUS_TIME_WINDOW_MS) {\r\n        console.warn(\r\n          'complete. lostfocus->click timeout of ',\r\n          LOST_FOCUS_TIME_WINDOW_MS,\r\n          'ms exceed: ',\r\n          performance.now() - this.t0,\r\n          ' ms'\r\n        );\r\n      }\r\n      // console.log(\r\n      //   'complete. set to true. CANCELED side effect',\r\n      //   performance.now() - this.t0\r\n      // );\r\n    }\r\n    if (item !== null) {\r\n      this.value = item.key;\r\n      this.label = item.label;\r\n    } else {\r\n      this.value = null;\r\n      this.label = '';\r\n    }\r\n    this.toggleCompletion(false, null);\r\n    this.markAsTouched();\r\n  }\r\n  toggleCompletion(show: boolean, label: string): void {\r\n    if (show && !this.disabled) {\r\n      this.i0.nativeElement.focus();\r\n      this.showCompletionList(label);\r\n    } else {\r\n      this.showCompletion = false;\r\n      if (this.canAddNewValues) {\r\n        this.syncCustomValue(this.label);\r\n        return;\r\n      }\r\n    }\r\n    this.cd.markForCheck();\r\n  }\r\n\r\n  get selectedOption(): string {\r\n    const index = this.completionList.findIndex(\r\n      (i) => i.key === this.focusItem.key\r\n    );\r\n    if (index === -1 || !this.focusItem) {\r\n      return null;\r\n    }\r\n    return `${this.inputId}_${index}`;\r\n  }\r\n\r\n  private ensureItemVisible(index: number): void {\r\n    const target = this.completeDiv.nativeElement.querySelectorAll('li')[index];\r\n    if (target) {\r\n      target.scrollIntoView({ block: 'center' });\r\n    }\r\n  }\r\n  private syncCustomValue(text: string): void {\r\n    this.value = text;\r\n    this.label = text;\r\n  }\r\n  /** Pick selection based on text filtering (ingnores drowdown state) */\r\n  private pickSelectionOrFirstMatch(text: string): void {\r\n    if (this.canAddNewValues) {\r\n      this.syncCustomValue(text);\r\n      return;\r\n    }\r\n    const focusIndex = this.completionList.findIndex(\r\n      (it) => this.focusItem && it.key === this.focusItem.key\r\n    );\r\n    if (\r\n      this.showCompletion &&\r\n      focusIndex > 0 &&\r\n      this.focusItem &&\r\n      this.focusItem.label\r\n    ) {\r\n      if (text === this.focusItem.label && this.focusItem.key === this.value) {\r\n        // do nothing if value does not change & close dropdow\r\n        this.showCompletion = false;\r\n        return;\r\n      }\r\n      // complete selected using selected item on drowdown\r\n      this.complete(this.focusItem);\r\n      return;\r\n    }\r\n    const source = (text || '').trim();\r\n    if (!source) {\r\n      this.showCompletion = false;\r\n      // select null value\r\n      if (this.value !== null) {\r\n        this.value = null;\r\n      }\r\n      return;\r\n    }\r\n    this.completionList = [];\r\n    this.computeCompletionList(source).subscribe((suggestions) => {\r\n      const candidate =\r\n        suggestions && suggestions.length > 0 ? suggestions[0] : null;\r\n      this.complete(candidate);\r\n    });\r\n  }\r\n  public showCompletionList(text: string): void {\r\n    this.setSameWidth();\r\n    const useSpinner = this.hasExternalDataSource();\r\n    this.spinnerVisibility(useSpinner, true);\r\n    setTimeout(() => {\r\n      // for spinner to be shown\r\n      this.computeCompletionList(text).subscribe({\r\n        next: (cl) => {\r\n          this.completionList = cl;\r\n          this.focusItem = selectElement(this.completionList, text);\r\n          this.showCompletion = true;\r\n          this.spinnerVisibility(useSpinner, false);\r\n        },\r\n        error: () => {\r\n          this.spinnerVisibility(useSpinner, false);\r\n        },\r\n        complete: () => {\r\n          this.spinnerVisibility(useSpinner, false);\r\n        }\r\n      });\r\n    }, 1);\r\n  }\r\n\r\n  private spinnerVisibility(useSpinner: boolean, value: boolean): void {\r\n    if (useSpinner) {\r\n      this.showSpinner = value;\r\n    }\r\n  }\r\n  private hasExternalDataSource(): boolean {\r\n    return !this.dataSource && !!this.instance && !!this.populateFunction;\r\n  }\r\n  private computeCompletionList(text: string): Observable<DecoratedDataSource> {\r\n    const searchText = (text || '').toLowerCase();\r\n    if (this.dataSource) {\r\n      const ds = (this.dataSource || [])\r\n        .filter((it) => ignoreAccentsInclude(it.label, searchText))\r\n        .sort((a, b) => a.label.localeCompare(b.label));\r\n      return of(decorateDataSource(ds, searchText));\r\n    } else if (this.instance && this.populateFunction) {\r\n      return this.populateFunction(this.instance, searchText).pipe(\r\n        debounceTime(1),\r\n        first(),\r\n        map((ds) => {\r\n          const dsFiltered = ds\r\n            .filter((it) => ignoreAccentsInclude(it.label, searchText))\r\n            .sort((a, b) => a.label.localeCompare(b.label));\r\n          return decorateDataSource(dsFiltered, searchText);\r\n        })\r\n      );\r\n    } else {\r\n      return of([]);\r\n    }\r\n  }\r\n}\r\n\r\n/** Returns true if text includes substring. No accents considered. Ignorecase */\r\nconst ignoreAccentsInclude = (text: string, substring: string): boolean => {\r\n  text = normalizedString(text).toLowerCase();\r\n  substring = normalizedString(substring).toLowerCase();\r\n  return text.includes(substring);\r\n};\r\n\r\n/** Returns a normalized string with no accents: used for comparison */\r\nconst normalizedString = (a: string): string =>\r\n  (a || '').normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n\r\nconst decorateDataSource = (\r\n  dataSource: DataSource<any, string>,\r\n  subString: string\r\n): DecoratedDataSource => dataSource.map((it) => decorateItem(it, subString));\r\n\r\nconst decorateItem = (\r\n  item: DataSourceItem<any, string>,\r\n  tx: string\r\n): DecoratedDataSourceItem => {\r\n  const index = normalizedString(item.label)\r\n    .toLowerCase()\r\n    .indexOf(normalizedString(tx).toLowerCase());\r\n  const labelPrefix = index === -1 ? item.label : item.label.substr(0, index);\r\n  const labelMatch = index === -1 ? '' : item.label.substr(index, tx.length);\r\n  const labelPostfix = index === -1 ? '' : item.label.substr(index + tx.length);\r\n  const newItem: DecoratedDataSourceItem = {\r\n    ...item,\r\n    labelPrefix,\r\n    labelMatch,\r\n    labelPostfix\r\n  };\r\n  return newItem;\r\n};\r\n\r\nconst findLabelForId = (data: DataSource<any, string>, id: any): string => {\r\n  const found = data.find((it) => it.key === id);\r\n  return found ? found.label : null;\r\n};\r\n\r\nexport const selectElement = (\r\n  completionList: DecoratedDataSource,\r\n  label: string\r\n): DataSourceItem<any, string> => {\r\n  label = (label || '').toLowerCase();\r\n  if (!completionList || completionList.length === 0) {\r\n    return null;\r\n  }\r\n  if (completionList.length === 1) {\r\n    return completionList[0];\r\n  }\r\n  const found = completionList.find((it) => it.label.toLowerCase() === label);\r\n  return found || completionList[0];\r\n};\r\n","<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(i0.value)\"\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 && !showCompletion; else dropdown\"\n        type=\"button\"\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 class=\"preserve-white-space\">{{ item.labelPrefix }}</span>\n        <span class=\"preserve-white-space bold\">{{ item.labelMatch }}</span>\n        <span class=\"preserve-white-space\">{{ item.labelPostfix }}</span>\n      </li>\n    </ul>\n  </div>\n</div>\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  forwardRef,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  ControlValueAccessor,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  ValidationErrors,\r\n  Validator\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { first } from 'rxjs/operators';\r\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\r\nimport { DataSource } from '../datasource';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\n\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-autocomplete-list',\r\n  templateUrl: './autocomplete-list.component.html',\r\n  styleUrls: ['./autocomplete-list.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      multi: true,\r\n      useExisting: forwardRef(() => AutocompleteListComponent)\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      multi: true,\r\n      useExisting: forwardRef(() => AutocompleteListComponent)\r\n    }\r\n  ]\r\n})\r\nexport class AutocompleteListComponent\r\n  implements ControlValueAccessor, Validator, OnInit\r\n{\r\n  static idCounter = 0;\r\n\r\n  @ViewChild('auto') auto!: AutocompleteListComponent;\r\n\r\n  literals = {\r\n    en: {\r\n      placeholder: 'new item',\r\n      deleteLabelTemplate: 'Delete <<label>>',\r\n      addMessage: 'Add'\r\n    },\r\n    es: {\r\n      placeholder: 'nuevo elemento',\r\n      deleteLabelTemplate: 'Eliminar <<label>>',\r\n      addMessage: 'Añadir'\r\n    }\r\n  };\r\n\r\n  public internalDataSource: DataSource<any, string> = [];\r\n  private autoPopulate = false;\r\n\r\n  private _value: any[] = [];\r\n  @Input()\r\n  set value(val: any[]) {\r\n    if (val === this._value) {\r\n      return;\r\n    }\r\n    const initialAndEmpty = isInitialAndEmpty(this._value, val);\r\n    this._value = val;\r\n    this.ensureLabelsForIds();\r\n    this.populateWith('');\r\n    this.onChange(this._value);\r\n    if (!initialAndEmpty) {\r\n      this.valueChange.emit(this._value);\r\n    }\r\n  }\r\n  get value(): any[] {\r\n    return this._value;\r\n  }\r\n  labels: string[] = [];\r\n  newEntry: any;\r\n  canAdd = false;\r\n  touched = false;\r\n\r\n  private _lang = languageDetector();\r\n  @Input()\r\n  get lang(): string {\r\n    return this._lang;\r\n  }\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  }\r\n\r\n  @Input() inputId: string;\r\n  @Input() dataSource: DataSource<any, any> = [];\r\n  @Input() placeholder?: string;\r\n  @Input() disabled = false;\r\n  @Input() deleteLabelTemplate?: string;\r\n  @Input() addMessage?: string;\r\n  @Input() required = false;\r\n\r\n  @Input() resolveLabelsFunction?: (\r\n    instance: any,\r\n    ids: any[]\r\n  ) => Observable<DataSource<any, string>> = undefined;\r\n  @Input() populateFunction?: (\r\n    instance: any,\r\n    search: string\r\n  ) => Observable<DataSource<any, string>> = undefined;\r\n  @Input() instance: any;\r\n\r\n  @Output() valueChange = new EventEmitter<any[]>();\r\n\r\n  // ControlValueAccessor Interface\r\n  onChange = (value): void => {};\r\n  onTouched = (): void => {};\r\n\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n  markAsTouched(): void {\r\n    if (!this.touched && !this.disabled) {\r\n      this.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n  // End ControlValueAccessor Interface\r\n\r\n  // Validator interface\r\n  registerOnValidatorChange(): void {}\r\n\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    const value = control.value;\r\n    if (\r\n      this.required &&\r\n      (value === '' || value === null || value === undefined)\r\n    ) {\r\n      return { required: { value, reason: 'Required field.' } };\r\n    }\r\n    return null;\r\n  }\r\n  // End of Validator interface\r\n\r\n  ngOnInit(): void {\r\n    this.inputId = this.inputId\r\n      ? this.inputId\r\n      : `autocompletelist${AutocompleteListComponent.idCounter++}`;\r\n    this.autoPopulate =\r\n      !!this.resolveLabelsFunction && !!this.populateFunction && this.instance;\r\n    this.ensureLabelsForIds();\r\n  }\r\n  ensureLabelsForIds(): void {\r\n    if (this.autoPopulate && this.resolveLabelsFunction) {\r\n      this.resolveLabelsFunction(this.instance, this._value)\r\n        .pipe(first())\r\n        .subscribe((data) => {\r\n          const res: string[] = [];\r\n          (this._value || []).map((id) => {\r\n            const found = data.find((it) => it.key === id);\r\n            if (found) {\r\n              res.push(found.label);\r\n            } else {\r\n              res.push('(unset)');\r\n            }\r\n          });\r\n          this.labels = res;\r\n        });\r\n    } else if (this.dataSource) {\r\n      const res: string[] = [];\r\n      (this._value || []).map((id) => {\r\n        const found = this.dataSource.find((it) => it.key === id);\r\n        if (found) {\r\n          res.push(found.label);\r\n        } else {\r\n          res.push('(unset)');\r\n        }\r\n      });\r\n      this.labels = res;\r\n    } else {\r\n      this.labels = this._value.map((it) => (it ? it.toString() : '(unset)'));\r\n    }\r\n  }\r\n  removeAt(index: number): void {\r\n    if (this._value.length > index) {\r\n      const key = this._value.splice(index, 1)[0];\r\n      const label = this.labels.splice(index, 1)[0];\r\n      this.internalDataSource.push({ key, label });\r\n    }\r\n    this.markAsTouched();\r\n  }\r\n  onValueChange(): void {\r\n    this.updateCanAdd();\r\n  }\r\n  onNewEntryChange(event: KeyboardEvent, auto: AutocompleteComponent): void {\r\n    if (event.key === 'Enter' && !!auto.value) {\r\n      this.addNew(auto);\r\n    } else if (event.key === 'Delete' || event.key === 'Backspace') {\r\n      // todo\r\n    } else {\r\n      this.populateWith(auto.label + event.key);\r\n    }\r\n    this.updateCanAdd();\r\n  }\r\n  populateWith(searchText: string): void {\r\n    if (this.autoPopulate && this.populateFunction && this.instance) {\r\n      this.populateFunction(this.instance, searchText)\r\n        .pipe(first())\r\n        .subscribe((data) => {\r\n          this.internalDataSource = data.filter(\r\n            (it) => !(this._value || []).includes(it.key)\r\n          );\r\n        });\r\n    } else if (this.dataSource) {\r\n      this.internalDataSource = this.dataSource.filter(\r\n        (it) => !(this._value || []).includes(it.key)\r\n      );\r\n    }\r\n  }\r\n  updateCanAdd(): void {\r\n    this.canAdd =\r\n      !this.disabled &&\r\n      this.auto &&\r\n      !!this.auto.value && // has value\r\n      !this.value.find((it) => it === this.auto.value); // not already in\r\n  }\r\n\r\n  addNew(auto: AutocompleteComponent): void {\r\n    this.value.push(auto.value);\r\n    this.ensureLabelsForIds();\r\n    this.newEntry = '';\r\n    this.internalDataSource = this.internalDataSource.filter(\r\n      (it) => !this._value.includes(it.key)\r\n    );\r\n    this.markAsTouched();\r\n  }\r\n\r\n  getDeleteMessage(label: string): string {\r\n    return (\r\n      this.deleteLabelTemplate ?? this.literals[this.lang].deleteLabelTemplate\r\n    ).replace('<<label>>', label);\r\n  }\r\n}\r\n","<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      type=\"button\"\n      class=\"add-item\"\n      aria-label=\"addMessage ?? literals[lang].addMessage\"\n      (click)=\"addNew(auto)\"\n    ></button>\n  </div>\n</div>\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport {\r\n  Router,\r\n  NavigationEnd,\r\n  ActivatedRoute,\r\n  ActivatedRouteSnapshot\r\n} from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\nimport { Subscription } from 'rxjs';\r\n\r\nexport interface BreadcrumbItem {\r\n  label: string;\r\n  url: string;\r\n}\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-breadcrumb',\r\n  templateUrl: './breadcrumb.component.html',\r\n  styleUrls: ['./breadcrumb.component.scss']\r\n})\r\nexport class LuxBreadcrumbComponent implements OnInit, OnDestroy {\r\n  public breadcrumbs: BreadcrumbItem[];\r\n  private subs: Subscription[] = [];\r\n  public imagePath = '../assets/img/arrow-forward.svg';\r\n\r\n  constructor(private route: Router, private activedRoute: ActivatedRoute) {}\r\n\r\n  ngOnInit(): void {\r\n    this.subs.push(\r\n      this.route.events\r\n        .pipe(filter((event) => event instanceof NavigationEnd))\r\n        .subscribe((_) => {\r\n          this.breadcrumbs = [];\r\n          this.addBreadcrumbs(this.activedRoute.snapshot.root, true, null);\r\n        })\r\n    );\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subs.forEach((s) => s.unsubscribe());\r\n    this.subs = [];\r\n  }\r\n\r\n  private addBreadcrumbs(\r\n    activedRouteSnapshot: ActivatedRouteSnapshot,\r\n    isRoot: boolean,\r\n    urlPrefix: string\r\n  ): void {\r\n    const routeConfig = activedRouteSnapshot.routeConfig;\r\n    let url = urlPrefix || '';\r\n    url += routeConfig ? '/' + this.getUrl(activedRouteSnapshot) : '';\r\n    const label = routeConfig\r\n      ? this.getLabel(activedRouteSnapshot)\r\n      : isRoot\r\n      ? 'Home'\r\n      : '';\r\n    if (label && url !== '/') {\r\n      const breadcrumb = { label, url };\r\n      this.breadcrumbs.push(breadcrumb);\r\n    }\r\n    if (activedRouteSnapshot.children.length) {\r\n      this.addBreadcrumbs(activedRouteSnapshot.children[0], false, url);\r\n    }\r\n  }\r\n\r\n  private getUrl(activedRouteSnapshot: ActivatedRouteSnapshot): string {\r\n    if (!activedRouteSnapshot.url[0]) {\r\n      return '';\r\n    }\r\n    const id = activedRouteSnapshot.params.id;\r\n    return id\r\n      ? `${activedRouteSnapshot.url[0]}/${id}`\r\n      : activedRouteSnapshot.routeConfig.path || '';\r\n  }\r\n\r\n  private getLabel(activedRouteSnapshot: ActivatedRouteSnapshot): string {\r\n    const routeConfig = activedRouteSnapshot.routeConfig;\r\n    if (!routeConfig) {\r\n      return null;\r\n    }\r\n    if (activedRouteSnapshot.data && activedRouteSnapshot.data.title) {\r\n      const data = activedRouteSnapshot.data;\r\n      if (data.objectTitle) {\r\n        return `${data.title} ${data.objectTitle}`;\r\n      } else {\r\n        return data.title;\r\n      }\r\n    }\r\n    return activedRouteSnapshot.params.id || routeConfig.path;\r\n  }\r\n}\r\n","<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","import {\r\n  Component,\r\n  Input,\r\n  EventEmitter,\r\n  Output,\r\n  OnInit,\r\n  forwardRef,\r\n  ViewChild,\r\n  ElementRef,\r\n  AfterViewInit\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\n\r\nconst KEY_SPACE = ' ';\r\n\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-checkbox',\r\n  templateUrl: './checkbox.component.html',\r\n  styleUrls: ['./checkbox.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      multi: true,\r\n      useExisting: forwardRef(() => CheckboxComponent)\r\n    }\r\n  ]\r\n})\r\nexport class CheckboxComponent\r\n  implements ControlValueAccessor, OnInit, AfterViewInit\r\n{\r\n  static idCounter = 0;\r\n\r\n  @ViewChild('ck', { static: false }) ck: ElementRef;\r\n\r\n  private _lang = languageDetector();\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  }\r\n  get lang(): string {\r\n    return this._lang;\r\n  }\r\n  private internalValue: boolean;\r\n  @Input()\r\n  get value(): boolean {\r\n    return this.internalValue;\r\n  }\r\n  set value(v: boolean) {\r\n    if (this.internalValue === v) {\r\n      return;\r\n    }\r\n    const initialAndEmpty = isInitialAndEmpty(this.internalValue, v);\r\n    this.internalValue = v;\r\n    this.syncModel();\r\n    this.onChange(v);\r\n    if (!initialAndEmpty) {\r\n      this.valueChange.emit(v);\r\n    }\r\n  }\r\n\r\n  get tabindexValue(): string {\r\n    return this.disabled ? null : '0';\r\n  }\r\n\r\n  @Input() label: string = null;\r\n  @Input() name: string = null;\r\n  private _disabled = false;\r\n  @Input()\r\n  get disabled(): boolean {\r\n    return this._disabled;\r\n  }\r\n  set disabled(v: boolean) {\r\n    if (v === this._disabled) {\r\n      return;\r\n    }\r\n    this._disabled = v;\r\n    this.syncModel();\r\n  }\r\n  @Input() inputId: string;\r\n\r\n  literals = {\r\n    en: {\r\n      yesLabel: 'Yes',\r\n      noLabel: 'No'\r\n    },\r\n    es: {\r\n      yesLabel: 'Sí',\r\n      noLabel: 'No'\r\n    }\r\n  };\r\n  touched = false;\r\n\r\n  @Output() valueChange = new EventEmitter<boolean>();\r\n\r\n  constructor() {}\r\n\r\n  // ControlValueAccessor Interface\r\n  onChange = (value): void => {};\r\n  onTouched = (): void => {};\r\n  writeValue(value: any): void {\r\n    this.value = !!value;\r\n  }\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n  markAsTouched(): void {\r\n    if (!this.touched) {\r\n      this.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n  // End ControlValueAccessor Interface\r\n\r\n  ngOnInit(): void {\r\n    this.inputId = this.inputId\r\n      ? this.inputId\r\n      : `${this.name || 'checkbox'}$${CheckboxComponent.idCounter++}`;\r\n  }\r\n  ngAfterViewInit(): void {\r\n    this.syncModel();\r\n  }\r\n\r\n  clicked(): void {\r\n    if (!this.disabled) {\r\n      this.value = !this.internalValue;\r\n      this.markAsTouched();\r\n    }\r\n  }\r\n  onKey(event: KeyboardEvent): void {\r\n    if (event.key === KEY_SPACE && !this.disabled) {\r\n      this.value = !this.internalValue;\r\n      this.markAsTouched();\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  private syncModel(): void {\r\n    if (this.ck) {\r\n      this.ck.nativeElement.checked = this.internalValue;\r\n    }\r\n  }\r\n}\r\n","<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","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  OnInit,\r\n  ElementRef,\r\n  ViewChild,\r\n  forwardRef\r\n} from '@angular/core';\r\nimport {\r\n  NG_VALUE_ACCESSOR,\r\n  ControlValueAccessor,\r\n  AbstractControl,\r\n  ValidationErrors,\r\n  Validator,\r\n  NG_VALIDATORS\r\n} from '@angular/forms';\r\nimport {\r\n  addTimezoneOffset,\r\n  hasValue,\r\n  isInitialAndEmpty,\r\n  isValidDate\r\n} from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-datetime',\r\n  templateUrl: './datetime.component.html',\r\n  styleUrls: ['./datetime.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      multi: true,\r\n      useExisting: forwardRef(() => DatetimeComponent)\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      multi: true,\r\n      useExisting: forwardRef(() => DatetimeComponent)\r\n    }\r\n  ]\r\n})\r\nexport class DatetimeComponent\r\n  implements OnInit, ControlValueAccessor, Validator\r\n{\r\n  static idCounter = 0;\r\n\r\n  @ViewChild('dateInput', { static: true }) dateInput: ElementRef;\r\n  @ViewChild('timeInput', { static: true }) timeInput: ElementRef;\r\n\r\n  touched = false;\r\n  dirty = false;\r\n  lastErrors: ValidationErrors | null = null;\r\n\r\n  private _disabled: string | boolean;\r\n  private _required: boolean;\r\n  private _value: string;\r\n\r\n  public dateValue?: string = undefined;\r\n  public timeValue?: string = undefined;\r\n\r\n  public userErrors = {\r\n    en: {\r\n      required: 'Required field.',\r\n      min: 'Minimum value is $min.',\r\n      max: 'Maximum value is $max.'\r\n    },\r\n    es: {\r\n      required: 'El campo es obligatorio.',\r\n      min: 'El valor mínimo es $min.',\r\n      max: 'El valor máximo es $max.'\r\n    }\r\n  };\r\n\r\n  @Input()\r\n  public min?: string = '1900-01-01T00:00:00Z';\r\n  @Input()\r\n  public max?: string = '2100-01-01T00:00:00Z';\r\n  @Input()\r\n  public includeSeconds: boolean = true;\r\n  @Input()\r\n  public localTime: boolean = true;\r\n\r\n  get className(): string {\r\n    return this.checkClassName();\r\n  }\r\n\r\n  @Input() lang = languageDetector();\r\n  @Input() public inlineErrors = false;\r\n  @Input() public inputId: string;\r\n  @Input('aria-label') public ariaLabel: string;\r\n  @Input() public readonly: boolean | null = null;\r\n\r\n  @Input()\r\n  set disabled(v: string | boolean) {\r\n    v = typeof v === 'string' && v !== 'false' ? true : v;\r\n    this._disabled = v;\r\n  }\r\n  get disabled(): string | boolean {\r\n    return this._disabled;\r\n  }\r\n\r\n  @Input()\r\n  set required(v: boolean) {\r\n    this._required = v;\r\n  }\r\n  get required(): boolean {\r\n    return this._required;\r\n  }\r\n\r\n  @Input()\r\n  set value(v: string) {\r\n    if (v === this._value) {\r\n      return; // prevent events when there is no changes\r\n    }\r\n    const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n    const datetime = new Date(v);\r\n    if (!v) {\r\n      this._value = null;\r\n      this.setDateInControl(null);\r\n      this.setTimeInControl(null);\r\n    } else if (!isValidDate(datetime)) {\r\n      this._value = v;\r\n      // we don't set value in control if the value is not valid\r\n      // if we do, the content of the control changes and can erase what the user is typing\r\n    } else {\r\n      this._value = datetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n      this.setValueInControl(datetime);\r\n    }\r\n    this.onChange(v);\r\n    if (!initialAndEmpty) {\r\n      this.valueChange.emit(v);\r\n    }\r\n  }\r\n  get value(): string {\r\n    return this._value;\r\n  }\r\n\r\n  @Output() valueChange = new EventEmitter<any>();\r\n  @Output() keyPress = new EventEmitter<KeyboardEvent>();\r\n\r\n  onChange = (_value): void => {};\r\n  onTouched = (): void => {};\r\n\r\n  constructor() {}\r\n\r\n  // ControlValueAccessor Interface implementation\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n\r\n  markAsTouched(): void {\r\n    if (!this.touched) {\r\n      this.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n\r\n  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n  // End of ControlValueAccessor Interface implementation\r\n\r\n  private setDateInControl(date: string): void {\r\n    // this.dateInput.nativeElement.value = date;\r\n    this.dateValue = date;\r\n  }\r\n  private setTimeInControl(time: string): void {\r\n    // this.timeInput.nativeElement.value = time;\r\n    this.timeValue = time;\r\n  }\r\n  private setValueInControl(datetime: Date): void {\r\n    const offsetDatetime = this.localTime\r\n      ? addTimezoneOffset(datetime)\r\n      : datetime;\r\n    const offsetDatetimeString = offsetDatetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n    this.setDateInControl(offsetDatetimeString.slice(0, 10)); // YYYY-MM-DD\r\n    if (this.includeSeconds) {\r\n      this.setTimeInControl(offsetDatetimeString.slice(11, 19)); // hh:mm:ss\r\n    } else {\r\n      this.setTimeInControl(offsetDatetimeString.slice(11, 16)); // hh:mm\r\n    }\r\n  }\r\n  clear(): void {\r\n    this.setDateInControl(null);\r\n    this.setTimeInControl(null);\r\n    this.value = null;\r\n  }\r\n  isClearable(): boolean {\r\n    return hasValue(this.value);\r\n  }\r\n\r\n  // Validator interface\r\n  registerOnValidatorChange(): void {}\r\n\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    const value = control.value;\r\n    let result: ValidationErrors | null = null;\r\n\r\n    if (\r\n      this.required &&\r\n      !hasValue(value) &&\r\n      !hasValue(this.dateValue) &&\r\n      !hasValue(this.timeValue)\r\n    ) {\r\n      result = result || {};\r\n      result.required = { value, reason: 'Required field.' };\r\n    }\r\n    if (!hasValue(this.dateValue) && hasValue(this.timeValue)) {\r\n      result = result || {};\r\n      result.existsDate = {\r\n        value,\r\n        reason: 'Date not specified.'\r\n      };\r\n    }\r\n    if (hasValue(this.dateValue) && !hasValue(this.timeValue)) {\r\n      result = result || {};\r\n      result.existsTime = {\r\n        value,\r\n        reason: 'Time not specified.'\r\n      };\r\n    }\r\n    if (\r\n      hasValue(this.min) &&\r\n      hasValue(value) &&\r\n      hasValue(this.dateValue) &&\r\n      hasValue(this.timeValue) &&\r\n      String(value).localeCompare(this.min) === -1\r\n    ) {\r\n      result = result || {};\r\n      result.min = {\r\n        value,\r\n        min: this.min,\r\n        reason: `Value is lower than minimum value: ${this.min}.`\r\n      };\r\n    }\r\n    if (\r\n      hasValue(this.max) &&\r\n      hasValue(value) &&\r\n      hasValue(this.dateValue) &&\r\n      hasValue(this.timeValue) &&\r\n      String(value).localeCompare(this.max) !== -1\r\n    ) {\r\n      result = result || {};\r\n      result.max = {\r\n        value,\r\n        max: this.max,\r\n        reason: `Value is greater than than maximum value: ${this.max}.`\r\n      };\r\n    }\r\n    this.lastErrors = result;\r\n    return result;\r\n  }\r\n  // End of Validator interface\r\n\r\n  ngOnInit(): void {\r\n    this.inputId = this.inputId\r\n      ? this.inputId\r\n      : `datetime$${DatetimeComponent.idCounter++}`;\r\n    this.setPatterns();\r\n  }\r\n\r\n  onLostFocus(): void {\r\n    this.markAsTouched();\r\n  }\r\n  onKeyPress(event: KeyboardEvent): void {\r\n    this.keyPress.emit(event);\r\n  }\r\n\r\n  onEventDatetime(newDate: string, newTime: string): void {\r\n    if (this.disabled || this.readonly) {\r\n      return;\r\n    }\r\n    if (!newDate || !newTime) {\r\n      this.value = null;\r\n    } else {\r\n      const newValue = `${newDate}T${newTime}`;\r\n      const datetime = new Date(newValue);\r\n      if (isValidDate(datetime)) {\r\n        let datetimeString;\r\n        if (this.localTime) {\r\n          datetimeString = datetime.toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n        } else {\r\n          datetimeString = addTimezoneOffset(datetime).toISOString(); // YYYY-MM-DDThh:mm:ss.SSSZ\r\n        }\r\n        if (this.includeSeconds) {\r\n          this.value = datetimeString.slice(0, 19) + 'Z'; // YYYY-MM-DDThh:mm:ssZ\r\n        } else {\r\n          this.value = datetimeString.slice(0, 16) + 'Z'; // YYYY-MM-DDThh:mmZ\r\n        }\r\n      } else {\r\n        this.value = newValue;\r\n      }\r\n    }\r\n  }\r\n\r\n  checkClassName(): string {\r\n    return this.disabled\r\n      ? this.readonly\r\n        ? 'disabled readonly'\r\n        : 'disabled'\r\n      : this.readonly\r\n      ? 'readonly'\r\n      : '';\r\n  }\r\n\r\n  setPatterns(): void {\r\n    this.min = this.min || '1900-01-01';\r\n    this.max = this.max || '2100-01-01';\r\n  }\r\n}\r\n","<input\n  #dateInput\n  class=\"rounded-left prefix\"\n  [ngClass]=\"className\"\n  type=\"date\"\n  [id]=\"inputId + '$date'\"\n  [(ngModel)]=\"dateValue\"\n  [attr.aria-label]=\"ariaLabel\"\n  [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n  [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n  [placeholder]=\"\"\n  (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n  (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n  (keypress)=\"onKeyPress($event)\"\n  (blur)=\"onLostFocus()\"\n/>\n<input\n  #timeInput\n  [class]=\"(disabled || readonly || !isClearable()) && localTime ? 'rounded-right' : ''\"\n  [ngClass]=\"className\"\n  type=\"time\"\n  [id]=\"inputId + '$time'\"\n  [(ngModel)]=\"timeValue\"\n  [attr.aria-label]=\"ariaLabel\"\n  [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n  [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n  [placeholder]=\"\"\n  [step]=\"includeSeconds ? 1 : 60\"\n  (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n  (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\n  (keypress)=\"onKeyPress($event)\"\n  (blur)=\"onLostFocus()\"\n/>\n<ng-container\n  *ngIf=\"!localTime\"\n>\n  <div\n    [class]=\"disabled || readonly || !isClearable() ? 'rounded-right postfix symbol' : 'postfix symbol'\"\n    [ngClass]=\"className\"\n  >\n    <span>{{ localTime ? '' : 'UTC' }}</span>\n  </div>\n</ng-container>\n<button\n  #clearButton\n  *ngIf=\"!disabled && !readonly && isClearable()\"\n  type=\"button\"\n  class=\"rounded-right postfix bordered icon-clear\"\n  [id]=\"inputId + '$clear'\"\n  (click)=\"clear()\"\n  aria-label=\"clear\"\n></button>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n  <div *ngIf=\"lastErrors.required\">\n    {{ userErrors[lang].required }}\n  </div>\n  <div *ngIf=\"lastErrors.min\">\n    {{ userErrors[lang].min.replace('$min', lastErrors.min.min) }}\n  </div>\n  <div *ngIf=\"lastErrors.max\">\n    {{ userErrors[lang].max.replace('$max', lastErrors.max.max) }}\n  </div>\n</div>\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  OnDestroy,\r\n  OnInit,\r\n  forwardRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n/** Filter component to query for objects. */\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-filter',\r\n  templateUrl: './filter.component.html',\r\n  styleUrls: ['./filter.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      multi: true,\r\n      useExisting: forwardRef(() => FilterComponent)\r\n    }\r\n  ]\r\n})\r\nexport class FilterComponent\r\n  implements ControlValueAccessor, OnInit, OnDestroy\r\n{\r\n  static idCounter = 0;\r\n\r\n  private touched = false;\r\n  private _searchValue = '';\r\n\r\n  @Input() disabled = false;\r\n  /** id for the input. If left blank, it is autogenerated */\r\n  @Input() inputId: string;\r\n  /** Placeholder default text. */\r\n  @Input() placeholder = '';\r\n  /** Search value introduced by the user. */\r\n  @Input()\r\n  get searchValue(): string {\r\n    return this._searchValue;\r\n  }\r\n  set searchValue(v: string) {\r\n    v = (v || '').toString();\r\n    if (v === this._searchValue) {\r\n      return;\r\n    }\r\n    this.onChange(v);\r\n    this._searchValue = v;\r\n  }\r\n  /** Search on type: (default true) Auto-search when user types in. */\r\n  @Input() searchOnType = true;\r\n  /** Custom aria label in case of not using a label */\r\n  @Input('aria-label') ariaLabel: string;\r\n\r\n  private debounceValue = 300; // 300 ms\r\n  /** Debounce time in milliseconds. (defaults to 300 ms) */\r\n  @Input()\r\n  set debounce(val: number) {\r\n    this.debounceValue = val;\r\n    this.recreateObservable();\r\n  }\r\n  get debounce(): number {\r\n    return this.debounceValue;\r\n  }\r\n\r\n  /** Search value changed by user. */\r\n  @Output() searchValueChange = new EventEmitter<string>();\r\n\r\n  searchValue$: Observable<string>;\r\n\r\n  private subject = new Subject<string>();\r\n  private sub: Subscription;\r\n\r\n  constructor() {\r\n    this.recreateObservable();\r\n  }\r\n\r\n  // ControlValueAccessor Interface\r\n  onChange = (value): void => {};\r\n  onTouched = (): void => {};\r\n  writeValue(value: any): void {\r\n    this.searchValue = (value || '').toString();\r\n  }\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n  markAsTouched(): void {\r\n    if (!this.touched) {\r\n      this.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n  // End ControlValueAccessor Interface\r\n\r\n  ngOnInit(): void {\r\n    this.inputId = this.inputId\r\n      ? this.inputId\r\n      : `filter$${FilterComponent.idCounter++}`;\r\n  }\r\n  ngOnDestroy(): void {\r\n    this.freeSubscriptions();\r\n  }\r\n  clear(): void {\r\n    this.searchValue = '';\r\n    this.search();\r\n  }\r\n  search(): void {\r\n    this.searchValueChange.emit(this.searchValue);\r\n  }\r\n  keyup(event: KeyboardEvent, newValue: string): void {\r\n    this.markAsTouched();\r\n    this.searchValue = newValue;\r\n    if (event.key === 'Enter') {\r\n      this.searchNow(this.searchValue);\r\n    }\r\n    if (this.searchOnType) {\r\n      this.addEvent();\r\n    }\r\n  }\r\n  onInputValueChange(newValue: string): void {\r\n    this.markAsTouched();\r\n    this.searchValue = newValue;\r\n  }\r\n\r\n  private recreateObservable(): void {\r\n    this.searchValue$ = this.subject\r\n      .asObservable()\r\n      .pipe(debounceTime(this.debounce));\r\n\r\n    this.freeSubscriptions();\r\n    this.sub = this.searchValue$.subscribe((value) => {\r\n      this.searchValueChange.emit(value);\r\n    });\r\n  }\r\n  private freeSubscriptions(): void {\r\n    if (this.sub) {\r\n      this.sub.unsubscribe();\r\n      this.sub = null;\r\n    }\r\n  }\r\n  private searchNow(value: string): void {\r\n    this.searchValueChange.emit(value);\r\n  }\r\n  private addEvent(): void {\r\n    this.subject.next(this.searchValue);\r\n  }\r\n}\r\n","<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    type=\"button\"\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    type=\"button\"\n    [disabled]=\"disabled\"\n    (click)=\"search()\"\n  >\n    Search\n  </button>\n</div>\n","import { Component, Input, HostBinding } from '@angular/core';\r\n\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-modal-backdrop',\r\n  template: ''\r\n})\r\nexport class LuxModalBackdropComponent {\r\n  @Input() backdropClass: string;\r\n\r\n  @HostBinding('class') class = 'modal-backdrop fade show';\r\n  @HostBinding('style') style = 'z-index: 1050';\r\n}\r\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 { 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 { ComponentRef, ViewRef } from '@angular/core';\nimport { Observable, fromEvent } 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\n      filter((e) => e.which === Key.Tab),\n\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';\r\nimport {\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  HostBinding,\r\n  HostListener\r\n} from '@angular/core';\r\n\r\nimport { getFocusableBoundaryElements, FOCUS } from './util';\r\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\r\n\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-modal-window',\r\n  template: `\r\n    <div class=\"modal-dialog\" role=\"document\">\r\n      <div class=\"modal-content\"><ng-content></ng-content></div>\r\n    </div>\r\n  `\r\n})\r\nexport class LuxModalWindowComponent\r\n  implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n  private _elWithFocus: Element; // element that is focused prior to modal opening\r\n\r\n  @Input() ariaDescribedBy: string;\r\n  @Input() ariaLabelledBy: string;\r\n  @Input() backdrop: boolean | string = false;\r\n  @Input() keyboard = true;\r\n  @Input() windowClass: string;\r\n\r\n  @Output() dismissEvent = new EventEmitter();\r\n\r\n  @HostBinding('class') get class(): string {\r\n    return `modal ${this.windowClass || ''}`;\r\n  }\r\n  @HostBinding('attr.role') role = 'dialog';\r\n  @HostBinding('tabindex') tabindex = '-1';\r\n  @HostBinding('attr.aria-modal') ariamodal = true;\r\n  @HostBinding('attr.aria-labelledby') get hostAriaLabelledBy(): string {\r\n    return this.ariaLabelledBy;\r\n  }\r\n  @HostBinding('attr.aria-describedby') get hostAriaDescribedBy(): string {\r\n    return this.ariaDescribedBy;\r\n  }\r\n  @HostListener('click', ['$event.target']) backdropClick(\r\n    btn: HTMLElement\r\n  ): void {\r\n    if (this.backdrop === true && this._elRef.nativeElement === btn) {\r\n      this.dismiss(ModalDismissReasons.BackdropClick);\r\n    }\r\n  }\r\n  @HostListener('keyup.esc', ['$event']) escKey(event): void {\r\n    if (this.keyboard && !event.defaultPrevented) {\r\n      this.dismiss(ModalDismissReasons.Esc);\r\n    }\r\n  }\r\n\r\n  constructor(\r\n    @Inject(DOCUMENT) private _document: any,\r\n    private _elRef: ElementRef<HTMLElement>\r\n  ) {}\r\n\r\n  dismiss(reason): void {\r\n    this.dismissEvent.emit(reason);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this._elWithFocus = this._document.activeElement;\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (!this._elRef.nativeElement.contains(document.activeElement)) {\r\n      const firstFocusable = getFocusableBoundaryElements(\r\n        this._elRef.nativeElement\r\n      )[0];\r\n\r\n      const elementToFocus = firstFocusable || this._elRef.nativeElement;\r\n      elementToFocus.focus();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    const body = this._document.body;\r\n    const elWithFocus = this._elWithFocus;\r\n\r\n    let elementToFocus;\r\n    if (elWithFocus && elWithFocus[FOCUS] && body.contains(elWithFocus)) {\r\n      elementToFocus = elWithFocus;\r\n    } else {\r\n      elementToFocus = body;\r\n    }\r\n    elementToFocus.focus();\r\n    this._elWithFocus = null;\r\n  }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\nimport {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Inject,\n  Injectable,\n  Injector,\n  RendererFactory2,\n  TemplateRef\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { LuxModalBackdropComponent } from './modal-backdrop';\nimport { LuxModalConfig, LuxModalOptions } from './modal-config';\nimport { ActiveModal, ModalRef } from './modal-ref';\nimport { LuxModalWindowComponent } from './modal-window';\nimport { ContentRef, focusTrap, isDefined } from './util';\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\n      close(result): void {\n        activeModal.close(result);\n      },\n\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(null);\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(null);\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 { 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","/* eslint-disable no-self-assign */\r\n\r\nimport {\r\n  AfterViewInit,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output\r\n} from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { OpenLayerLoaderService } from '../geolocation/openlayer-loader.service';\r\n\r\nimport { GeoPoint } from './geopoint';\r\n\r\n// @dynamic\r\ndeclare const ol: any;\r\n\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-map',\r\n  templateUrl: './map.component.html',\r\n  styleUrls: ['./map.component.scss']\r\n})\r\nexport class MapComponent implements OnInit, AfterViewInit {\r\n  static idCounter = 0;\r\n\r\n  private loaded$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n\r\n  private _map: any;\r\n\r\n  @Input() mapId;\r\n\r\n  _zoom: number;\r\n  @Input()\r\n  set zoom(zoom: number) {\r\n    if (!isNaN(zoom)) {\r\n      this._zoom = zoom;\r\n      if (this._map) {\r\n        this._map.getView().setZoom(zoom);\r\n      }\r\n    }\r\n  }\r\n  get zoom(): number {\r\n    return this._zoom;\r\n  }\r\n\r\n  _center: GeoPoint;\r\n  @Input()\r\n  set center(center: GeoPoint) {\r\n    if (center && center.coordinates && center.coordinates.length === 2) {\r\n      this._center = center;\r\n      if (this._map) {\r\n        this._map.getView().setCenter(ol.proj.fromLonLat(center.coordinates));\r\n      }\r\n    }\r\n  }\r\n  get center(): GeoPoint {\r\n    return this._center;\r\n  }\r\n\r\n  _readonly: boolean;\r\n  @Input()\r\n  set readonly(readonly: boolean) {\r\n    if (!readonly) {\r\n      if (this._map) {\r\n        this._map.on('click', (args: any) => {\r\n          // args.coordinate is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\r\n          const coordinates = ol.proj.toLonLat(args.coordinate);\r\n          // alternatively: const lonLat = ol.proj.transform(args.coordinate,'EPSG:3857','EPSG:4326');\r\n          this.addMarkerAtCoordinates(coordinates);\r\n        });\r\n        this._map.on('pointermove', (event: any) => {\r\n          const pixel = this._map.getEventPixel(event.originalEvent);\r\n          const hit = this._map.hasFeatureAtPixel(pixel);\r\n          this._map.getViewport().style.cursor = hit ? 'move' : 'grab';\r\n        });\r\n      }\r\n    } else {\r\n      if (this._map) {\r\n        this._map.on('click', (args: any) => {});\r\n        this._map.on('pointermove', (event: any) => {});\r\n        this._map.getViewport().style.cursor = 'grab';\r\n      }\r\n    }\r\n    this._readonly = readonly;\r\n    // reset marker coordinates so marker interactions can be created or recreated accordingly\r\n    // to the changes to readonly\r\n    this.markerCoordinates = this.markerCoordinates;\r\n  }\r\n  get readonly(): boolean {\r\n    return this._readonly;\r\n  }\r\n\r\n  private _marker: any;\r\n  private _markerInteraction: any;\r\n  private _markerCoordinates: number[];\r\n  @Input()\r\n  private set markerCoordinates(markerCoordinates: number[]) {\r\n    if (markerCoordinates && markerCoordinates.length === 2) {\r\n      this._markerCoordinates = markerCoordinates;\r\n      if (this._map) {\r\n        this.addMarkerAtCoordinates(markerCoordinates);\r\n      }\r\n    } else {\r\n      this._markerCoordinates = undefined;\r\n      if (this._map) {\r\n        this.removeMarker();\r\n      }\r\n    }\r\n  }\r\n  private get markerCoordinates(): number[] {\r\n    return this._markerCoordinates;\r\n  }\r\n  @Input()\r\n  set markerPoint(markerPoint: GeoPoint) {\r\n    if (\r\n      !markerPoint ||\r\n      !(markerPoint.coordinates && markerPoint.coordinates.length === 2)\r\n    ) {\r\n      this.markerCoordinates = undefined;\r\n    } else {\r\n      this.markerCoordinates = [\r\n        +markerPoint.coordinates[0],\r\n        +markerPoint.coordinates[1]\r\n      ];\r\n    }\r\n    this.valueChange.emit(markerPoint);\r\n  }\r\n  get markerPoint(): GeoPoint {\r\n    return {\r\n      type: 'Point',\r\n      coordinates: this.markerCoordinates\r\n    };\r\n  }\r\n  @Output() valueChange = new EventEmitter<GeoPoint>();\r\n\r\n  private _markerSource: any;\r\n  private _markerStyle: any;\r\n\r\n  constructor(olLoader: OpenLayerLoaderService) {\r\n    olLoader.load().subscribe((_) => {\r\n      // Initialize\r\n      this._markerSource = new ol.source.Vector();\r\n      this._markerStyle = new ol.style.Style({\r\n        image: new ol.style.Icon({\r\n          anchor: [0.5, 1],\r\n          scale: 0.25,\r\n          src: '/assets/img/marker.png'\r\n        })\r\n      });\r\n      this.loaded$.next(true);\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.mapId = this.mapId ? this.mapId : 'map' + MapComponent.idCounter++;\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.loaded$.subscribe((loaded) => {\r\n      if (loaded) {\r\n        this.initMap();\r\n      }\r\n    });\r\n  }\r\n  private initMap(): void {\r\n    this._map = new ol.Map({\r\n      target: this.mapId,\r\n      controls: ol.control.defaults({ attribution: false }),\r\n      layers: [\r\n        new ol.layer.Tile({\r\n          source: new ol.source.OSM()\r\n        }),\r\n        new ol.layer.Vector({\r\n          source: this._markerSource,\r\n          style: this._markerStyle\r\n        })\r\n      ],\r\n      view: new ol.View({\r\n        center: ol.proj.fromLonLat(\r\n          this.center !== undefined ? this.center.coordinates : [0, 0]\r\n        ),\r\n        zoom: this.zoom\r\n      })\r\n    });\r\n\r\n    if (this.center === undefined || this.center === null) {\r\n      // if the center is not set, we set its default value\r\n      if ('geolocation' in navigator) {\r\n        navigator.geolocation.getCurrentPosition(\r\n          (position) => {\r\n            this.center = {\r\n              type: 'Point',\r\n              coordinates: [position.coords.longitude, position.coords.latitude]\r\n            };\r\n          },\r\n          (error) => {\r\n            this.center = {\r\n              type: 'Point',\r\n              coordinates: [0, 0]\r\n            };\r\n          }\r\n        );\r\n      } else {\r\n        this.center = {\r\n          type: 'Point',\r\n          coordinates: [0, 0]\r\n        };\r\n      }\r\n    } else {\r\n      // the center needs the map to be properly set, so if it was set before the map was initialized,\r\n      // we set the center again to perform necessary adjustements\r\n      this.center = this.center;\r\n    }\r\n\r\n    if (this.zoom === undefined || this.zoom === null) {\r\n      // if the zoom is not set, we set its default value\r\n      this.zoom = 18;\r\n    } else {\r\n      // the zoom needs the map to be properly set, so if it was set before the map was initialized,\r\n      // we set the zoom again to perform necessary adjustements\r\n      this.zoom = this.zoom;\r\n    }\r\n\r\n    if (this.readonly === undefined || this.readonly === null) {\r\n      // if readonly is not set, we set its default value\r\n      this.readonly = false;\r\n    } else {\r\n      // readonly needs the map to be properly set, so if it was set before the map was initialized,\r\n      // we set readonly again to perform necessary adjustements\r\n      this.readonly = this.readonly;\r\n    }\r\n\r\n    if (\r\n      this.markerCoordinates !== undefined &&\r\n      this.markerCoordinates !== null\r\n    ) {\r\n      // the marker coordinates need the map to be properly set, so if they were set before the map was initialized,\r\n      // we set the marker coordinates again to perform necessary adjustements\r\n      this.markerCoordinates = this.markerCoordinates;\r\n    }\r\n  }\r\n\r\n  private addMarkerAtCoordinates(coordinates: number[]): void {\r\n    if (coordinates && coordinates.length === 2) {\r\n      if (this._marker !== undefined) {\r\n        this.removeMarker();\r\n      }\r\n      this._marker = new ol.Feature({\r\n        geometry: new ol.geom.Point(\r\n          // [lon, lat] is in EPSG:4326 (degrees), we transform it into EPSG:3857 (meters)\r\n          ol.proj.transform(coordinates, 'EPSG:4326', 'EPSG:3857')\r\n        )\r\n      });\r\n      this._markerSource.addFeature(this._marker);\r\n      this._markerCoordinates = this.getMarkerCoordinates();\r\n\r\n      if (!this.readonly) {\r\n        const dragInteraction = new ol.interaction.Modify({\r\n          features: new ol.Collection([this._marker]),\r\n          style: this._markerStyle,\r\n          pixelTolerance: 50,\r\n          hitDetection: true\r\n        });\r\n        this._markerInteraction = dragInteraction;\r\n        this._map.addInteraction(dragInteraction);\r\n      }\r\n\r\n      this._marker.on(\r\n        'change',\r\n        () => {\r\n          this._markerCoordinates = this.getMarkerCoordinates();\r\n        },\r\n        this._marker\r\n      );\r\n    }\r\n  }\r\n\r\n  private removeMarker(): void {\r\n    if (this._marker !== undefined) {\r\n      this._markerSource.removeFeature(this._marker);\r\n      this._marker = undefined;\r\n    }\r\n    if (this._markerInteraction !== undefined) {\r\n      this._map.getInteractions().pop();\r\n      this._markerInteraction = undefined;\r\n    }\r\n  }\r\n\r\n  private getMarkerCoordinates(): number[] | null {\r\n    if (this._marker === undefined || this._marker == null) {\r\n      return this._marker;\r\n    }\r\n    const coordinates = this._marker.getGeometry().getCoordinates();\r\n    // coordinates is in EPSG:3857 (meters), we transform it into EPSG:4326 (degrees)\r\n    return ol.proj.transform(coordinates, 'EPSG:3857', 'EPSG:4326');\r\n  }\r\n\r\n  onResize(): void {\r\n    if (this._map) {\r\n      this._map.updateSize();\r\n    }\r\n  }\r\n}\r\n","<div [id]=\"mapId\" class=\"map\" (resized)=\"onResize()\"></div>\n","import {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  TemplateRef,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  ValidationErrors\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { DataSource } from '../datasource';\r\nimport {\r\n  exists,\r\n  hasValue,\r\n  isInitialAndEmpty,\r\n  isValidNumber,\r\n  roundToMultipleOf\r\n} from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\nimport { GeoPoint } from '../map/geopoint';\r\nimport { ModalService } from '../modal/modal.service';\r\nimport { GeolocationService } from './geolocation.service';\r\n\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-geolocation',\r\n  templateUrl: './geolocation.component.html',\r\n  styleUrls: ['./geolocation.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      multi: true,\r\n      useExisting: forwardRef(() => GeolocationComponent)\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      multi: true,\r\n      useExisting: forwardRef(() => GeolocationComponent)\r\n    }\r\n  ]\r\n})\r\nexport class GeolocationComponent implements OnInit {\r\n  static idCounter = 0;\r\n\r\n  @ViewChild('latitude', { static: true }) latitude: ElementRef;\r\n  @ViewChild('longitude', { static: true }) longitude: ElementRef;\r\n  @ViewChild('map', { static: false }) map?: ElementRef;\r\n\r\n  touched = false;\r\n  dirty = false;\r\n  lastErrors: ValidationErrors | null = null;\r\n\r\n  private _disabled: string | boolean;\r\n  private _required: boolean;\r\n  private _value: any;\r\n\r\n  latitudeValue?: number = undefined;\r\n  longitudeValue?: number = undefined;\r\n\r\n  isValidNumber = isValidNumber;\r\n\r\n  i18n = {\r\n    en: {\r\n      lat: 'latitude',\r\n      lon: 'longitude',\r\n      selectLocation: 'Select location',\r\n      location: 'Location',\r\n      selectAction: 'Select',\r\n      cancelAction: 'Cancel',\r\n      closeAction: 'Close',\r\n      typeToSearch: 'type to search',\r\n      cardinalPoints: {\r\n        north: 'N',\r\n        south: 'S',\r\n        east: 'E',\r\n        west: 'W'\r\n      },\r\n      userErrors: {\r\n        required: 'Required field.',\r\n        minLatitude: 'Minimum latitude is $minLatitude.',\r\n        maxLatitude: 'Maximum latitude is $maxLatitude.',\r\n        minLongitude: 'Minimum longitude is $minLongitude.',\r\n        maxLongitude: 'Maximum longitude is $maxLongitude.'\r\n      }\r\n    },\r\n    es: {\r\n      lat: 'latitud',\r\n      lon: 'longitud',\r\n      selectLocation: 'Seleccione ubicación',\r\n      location: 'Ubicación',\r\n      selectAction: 'Seleccionar',\r\n      cancelAction: 'Cancelar',\r\n      closeAction: 'Cerrar',\r\n      typeToSearch: 'escribe para buscar',\r\n      cardinalPoints: {\r\n        north: 'N',\r\n        south: 'S',\r\n        east: 'E',\r\n        west: 'O'\r\n      },\r\n      userErrors: {\r\n        required: 'El campo es obligatorio.',\r\n        minLatitude: 'La latitud mínima es $minLatitude.',\r\n        maxLatitude: 'La latitud máxima es $maxLatitude.',\r\n        minLongitude: 'La longitud mínima es $minLongitude.',\r\n        maxLongitude: 'La longitud máxima es $maxLongitude.'\r\n      }\r\n    }\r\n  };\r\n\r\n  @Input()\r\n  public minLatitude: number;\r\n  @Input()\r\n  public maxLatitude: number;\r\n  @Input()\r\n  public minLongitude: number;\r\n  @Input()\r\n  public maxLongitude: number;\r\n  @Input()\r\n  public step: number;\r\n  @Input()\r\n  public zoom: number;\r\n\r\n  get className(): string {\r\n    return this.checkClassName();\r\n  }\r\n\r\n  @Input() lang = languageDetector();\r\n  @Input() public inlineErrors = false;\r\n  @Input() public inputId: string;\r\n  @Input('aria-label') public ariaLabel: string;\r\n  @Input() public readonly: boolean | null = null;\r\n\r\n  @Input()\r\n  set disabled(v: string | boolean) {\r\n    v = typeof v === 'string' && v !== 'false' ? true : v;\r\n    this._disabled = v;\r\n  }\r\n  get disabled(): string | boolean {\r\n    return this._disabled;\r\n  }\r\n\r\n  @Input()\r\n  set required(v: boolean) {\r\n    this._required = v;\r\n  }\r\n  get required(): boolean {\r\n    return this._required;\r\n  }\r\n\r\n  @Input()\r\n  set value(v: GeoPoint) {\r\n    if (v === this._value) {\r\n      return; // prevent events when there is no changes\r\n    }\r\n    const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n    if (\r\n      v &&\r\n      v.coordinates &&\r\n      v.coordinates.length === 2 &&\r\n      exists(v.coordinates[0] && exists(v.coordinates[1]))\r\n    ) {\r\n      this._value = v;\r\n      this.setLatitudeInControl(v.coordinates[1]);\r\n      this.setLongitudeInControl(v.coordinates[0]);\r\n    } else if (!v) {\r\n      this._value = null;\r\n      this.setLatitudeInControl(null);\r\n      this.setLongitudeInControl(null);\r\n    } else {\r\n      this._value = v;\r\n      // we don't set value in control if the value is not valid\r\n      // if we do, the content of the control changes and can erase what the user is typing\r\n    }\r\n    this.onChange(v);\r\n    if (!initialAndEmpty) {\r\n      this.valueChange.emit(v);\r\n    }\r\n  }\r\n  get value(): GeoPoint {\r\n    return this._value;\r\n  }\r\n\r\n  @Output() valueChange = new EventEmitter<GeoPoint>();\r\n  @Output() keyPress = new EventEmitter<KeyboardEvent>();\r\n\r\n  onChange = (value: any): void => {};\r\n  onTouched = (): void => {};\r\n\r\n  constructor(\r\n    private modalService: ModalService,\r\n    public locationService: GeolocationService\r\n  ) {}\r\n\r\n  // ControlValueAccessor Interface implementation\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n\r\n  markAsTouched(): void {\r\n    if (!this.touched) {\r\n      this.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n\r\n  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n  // End of ControlValueAccessor Interface implementation\r\n\r\n  private setLatitudeInControl(latitude: number): void {\r\n    // this.latitude.nativeElement.value = latitude;\r\n    this.latitudeValue = latitude;\r\n  }\r\n  private setLongitudeInControl(longitude: number): void {\r\n    // this.longitude.nativeElement.value = longitude;\r\n    this.longitudeValue = longitude;\r\n  }\r\n  clear(): void {\r\n    this.setLatitudeInControl(null);\r\n    this.setLongitudeInControl(null);\r\n    this.value = null;\r\n  }\r\n  isClearable(): boolean {\r\n    return (\r\n      isValidNumber(this.latitudeValue) || isValidNumber(this.longitudeValue)\r\n    );\r\n  }\r\n\r\n  // Validator interface\r\n  registerOnValidatorChange(): void {}\r\n\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    const value = control.value;\r\n    let result: ValidationErrors | null = null;\r\n\r\n    if (\r\n      this.required &&\r\n      !hasValue(value) &&\r\n      !exists(this.latitudeValue) &&\r\n      !exists(this.longitudeValue)\r\n    ) {\r\n      result = result || {};\r\n      result.required = { value, reason: 'Required field.' };\r\n    }\r\n    if (!exists(this.latitudeValue) && exists(this.longitudeValue)) {\r\n      result = result || {};\r\n      result.existsLatitude = {\r\n        value,\r\n        reason: 'Latitude not specified.'\r\n      };\r\n    }\r\n    if (exists(this.latitudeValue) && !exists(this.longitudeValue)) {\r\n      result = result || {};\r\n      result.existsLongitude = {\r\n        value,\r\n        reason: 'Longitude not specified.'\r\n      };\r\n    }\r\n    if (exists(this.minLatitude) && this.latitudeValue < this.minLatitude) {\r\n      result = result || {};\r\n      result.minLatitude = {\r\n        value,\r\n        min: this.minLatitude,\r\n        reason: `Latitude is lower than minimum value: ${this.minLatitude}.`\r\n      };\r\n    }\r\n    if (exists(this.maxLatitude) && this.latitudeValue > this.maxLatitude) {\r\n      result = result || {};\r\n      result.maxLatitude = {\r\n        value,\r\n        max: this.maxLatitude,\r\n        reason: `Latitude is higher than maximum value: ${this.maxLatitude}.`\r\n      };\r\n    }\r\n    if (exists(this.minLongitude) && this.longitudeValue < this.minLongitude) {\r\n      result = result || {};\r\n      result.minLongitude = {\r\n        value,\r\n        min: this.minLongitude,\r\n        reason: `Longitude is lower than minimum value: ${this.minLongitude}.`\r\n      };\r\n    }\r\n    if (exists(this.maxLongitude) && this.longitudeValue > this.maxLongitude) {\r\n      result = result || {};\r\n      result.maxLongitude = {\r\n        value,\r\n        max: this.maxLongitude,\r\n        reason: `Longitude is higher than maximum value: ${this.maxLongitude}.`\r\n      };\r\n    }\r\n    this.lastErrors = result;\r\n    return result;\r\n  }\r\n  // End of Validator interface\r\n\r\n  ngOnInit(): void {\r\n    this.inputId = this.inputId\r\n      ? this.inputId\r\n      : `geolocation$${GeolocationComponent.idCounter++}`;\r\n    this.setPatterns();\r\n  }\r\n\r\n  roundToStepAndUpdateLatitudeAndLongitude(\r\n    newLatitudeAndLongitude: number[]\r\n  ): void {\r\n    const newLatitude = roundToMultipleOf(\r\n      newLatitudeAndLongitude[1],\r\n      this.step\r\n    );\r\n    const newLongitude = roundToMultipleOf(\r\n      newLatitudeAndLongitude[0],\r\n      this.step\r\n    );\r\n    if (this.disabled || this.readonly) {\r\n      return;\r\n    }\r\n    if (!exists(newLatitudeAndLongitude)) {\r\n      this.value = null;\r\n    }\r\n    this.value = {\r\n      type: 'Point',\r\n      coordinates: [newLongitude, newLatitude]\r\n    };\r\n  }\r\n\r\n  onLostFocus(): void {\r\n    this.markAsTouched();\r\n  }\r\n  onEventLatitude(newLatitude: string): void {\r\n    if (this.disabled || this.readonly) {\r\n      return;\r\n    }\r\n    const newLatitudeValue = isValidNumber(newLatitude) ? +newLatitude : null;\r\n    if (\r\n      !(exists(this.value) && exists(this.value.coordinates[0])) &&\r\n      !exists(newLatitudeValue)\r\n    ) {\r\n      this.value = null;\r\n    } else {\r\n      this.value = {\r\n        type: 'Point',\r\n        coordinates: [\r\n          this.value ? this.value.coordinates[0] : undefined,\r\n          newLatitudeValue\r\n        ]\r\n      };\r\n    }\r\n    this.markAsTouched();\r\n  }\r\n  onEventLongitude(newLongitude: string): void {\r\n    if (this.disabled || this.readonly) {\r\n      return;\r\n    }\r\n    const newLongitudeValue = isValidNumber(newLongitude)\r\n      ? +newLongitude\r\n      : null;\r\n    if (\r\n      !exists(newLongitudeValue) &&\r\n      !(exists(this.value) && exists(this._value.coordinates[1]))\r\n    ) {\r\n      this.value = null;\r\n    } else {\r\n      this.value = {\r\n        type: 'Point',\r\n        coordinates: [\r\n          newLongitudeValue,\r\n          this.value ? this.value.coordinates[1] : undefined\r\n        ]\r\n      };\r\n    }\r\n    this.markAsTouched();\r\n  }\r\n  onKeyPress(event: KeyboardEvent): void {\r\n    this.keyPress.emit(event);\r\n  }\r\n\r\n  checkClassName(): string {\r\n    return this.disabled\r\n      ? this.readonly\r\n        ? 'disabled readonly'\r\n        : 'disabled'\r\n      : this.readonly\r\n      ? 'readonly'\r\n      : '';\r\n  }\r\n\r\n  openModalMap(modal: TemplateRef<any>): void {\r\n    this.modalService.open(modal).result.then(\r\n      (result) => {\r\n        if (result !== 'cancel') {\r\n          this.roundToStepAndUpdateLatitudeAndLongitude(result);\r\n        }\r\n      },\r\n      (_) => {}\r\n    );\r\n  }\r\n\r\n  onSearchLocationChanged(newValue: GeoPoint, map: any): void {\r\n    map.markerPoint = newValue;\r\n    map.center = map.markerPoint;\r\n  }\r\n\r\n  get mapTitle(): string {\r\n    return this._disabled || !!this.readonly\r\n      ? this.i18n[this.lang].location\r\n      : this.i18n[this.lang].selectLocation;\r\n  }\r\n\r\n  get self(): GeolocationComponent {\r\n    return this;\r\n  }\r\n\r\n  getLabels(\r\n    instance: GeolocationComponent,\r\n    keys: GeoPoint[]\r\n  ): Observable<DataSource<GeoPoint, string>> {\r\n    return instance.locationService.getLabels(instance.locationService, keys);\r\n  }\r\n\r\n  getData(\r\n    instance: GeolocationComponent,\r\n    search: string\r\n  ): Observable<DataSource<GeoPoint, string>> {\r\n    return instance.locationService.getData(instance.locationService, search);\r\n  }\r\n\r\n  setPatterns(): void {\r\n    this.step = this.step || 0.00001; // 0.00001 degrees = 1.11 meters\r\n    this.zoom = this.zoom || 18; // (360/2^18) degrees ~ 0.00137 degrees ~ 153 meters\r\n    this.minLatitude = this.minLatitude || -90;\r\n    this.maxLatitude = this.maxLatitude || +90;\r\n    this.minLongitude = this.minLongitude || -180;\r\n    this.maxLongitude = this.maxLongitude || +180;\r\n  }\r\n}\r\n","<input\n  #latitude\n  class=\"rounded-left prefix\"\n  [ngClass]=\"className\"\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]=\"i18n[lang].lat\"\n  (keyup)=\"onEventLatitude(latitude.value)\"\n  (change)=\"onEventLatitude(latitude.value)\"\n  (keypress)=\"onKeyPress($event)\"\n  (blur)=\"onLostFocus()\"\n/>\n<div\n  class=\"infix symbol monospace clickable\"\n  [ngClass]=\"className\"\n  (click)=\"openModalMap(modalMap)\">\n  <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue >= 0\">{{\n    i18n[lang].cardinalPoints.north\n  }}</span>\n  <span *ngIf=\"isValidNumber(latitudeValue) && latitudeValue < 0\">{{\n    i18n[lang].cardinalPoints.south\n  }}</span>\n  <span *ngIf=\"!isValidNumber(latitudeValue)\">-</span>\n</div>\n<input\n  #longitude\n  class=\"prefix\"\n  [ngClass]=\"className\"\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]=\"i18n[lang].lon\"\n  (keyup)=\"onEventLongitude(longitude.value)\"\n  (change)=\"onEventLongitude(longitude.value)\"\n  (keypress)=\"onKeyPress($event)\"\n  (blur)=\"onLostFocus()\"\n/>\n<div\n  class=\"infix symbol monospace clickable\"\n  [ngClass]=\"className\"\n  (click)=\"openModalMap(modalMap)\"\n>\n  <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue >= 0\">{{\n    i18n[lang].cardinalPoints.east\n  }}</span>\n  <span *ngIf=\"isValidNumber(longitudeValue) && longitudeValue < 0\">{{\n    i18n[lang].cardinalPoints.west\n  }}</span>\n  <span *ngIf=\"!isValidNumber(longitudeValue)\">-</span>\n</div>\n<div\n  [class]=\"\n    disabled || readonly || !isClearable()\n      ? 'clickable rounded-right postfix symbol'\n      : 'clickable postfix symbol'\n  \"\n  [ngClass]=\"className\"\n  (click)=\"openModalMap(modalMap)\"\n>\n  <span class=\"icon-globe\"></span>\n</div>\n<button\n  #clearButton\n  *ngIf=\"!disabled && !readonly && isClearable()\"\n  class=\"rounded-right postfix bordered icon icon-clear\"\n  [id]=\"inputId + '$clear'\"\n  type=\"button\"\n  (click)=\"clear()\"\n  aria-label=\"clear\"\n></button>\n\n<div *ngIf=\"inlineErrors && lastErrors && (dirty || touched)\" class=\"alert\">\n  <div *ngIf=\"lastErrors.required\">\n    {{ i18n[lang].userErrors.required }}\n  </div>\n  <div *ngIf=\"lastErrors.minLatitude\">\n    {{\n      i18n[lang].userErrors.minLatitude.replace(\n        '$minLatitude',\n        lastErrors.minLatitude.min\n      )\n    }}\n  </div>\n  <div *ngIf=\"lastErrors.maxLatitude\">\n    {{\n      i18n[lang].userErrors.maxLatitude.replace(\n        '$maxLatitude',\n        lastErrors.maxLatitude.max\n      )\n    }}\n  </div>\n  <div *ngIf=\"lastErrors.minLongitude\">\n    {{\n      i18n[lang].userErrors.minLongitude.replace(\n        '$minLongitude',\n        lastErrors.minLongitude.min\n      )\n    }}\n  </div>\n  <div *ngIf=\"lastErrors.maxLongitude\">\n    {{\n      i18n[lang].userErrors.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 default-font\" 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      [attr.aria-label]=\"i18n[lang].typeToSearch\"\n      [placeholder]=\"i18n[lang].typeToSearch\"\n      *ngIf=\"!disabled && !readonly\"\n      [instance]=\"self\"\n      [resolveLabelsFunction]=\"getLabels\"\n      [populateFunction]=\"getData\"\n      (valueChange)=\"onSearchLocationChanged(searchBar.value, map)\"\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      {{ i18n[lang].closeAction }}\n    </button>\n    <button\n      *ngIf=\"!disabled && !readonly\"\n      type=\"button\"\n      class=\"btn btn-cancel\"\n      (click)=\"modal.close('cancel')\"\n    >\n      {{ i18n[lang].cancelAction }}\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      {{ i18n[lang].selectAction }}\n    </button>\n  </div>\n</ng-template>\n","import { Injectable } from '@angular/core';\n\n/**\n * A service that holds the functionality for advanced handling of regular expressions\n */\n@Injectable({ providedIn: 'root' })\nexport class RegexpService {\n  constructor() {}\n\n  private removeOuterRoundBrackets(regularExpressionString: string): string {\n    while (\n      regularExpressionString[0] === '(' &&\n      regularExpressionString[regularExpressionString.length - 1] === ')'\n    ) {\n      regularExpressionString = regularExpressionString.slice(\n        1,\n        regularExpressionString.length - 1\n      );\n    }\n    return regularExpressionString;\n  }\n\n  private isQuantifier(quantifier: string): boolean {\n    switch (quantifier) {\n      case '{':\n      case '?':\n      case '+':\n      case '*':\n        return true;\n    }\n    return false;\n  }\n\n  private parseMinimalAmountOfQuantifier(quantifier: string): number {\n    switch (quantifier[0]) {\n      case '?':\n      case '*':\n        return 0;\n      case '+':\n        return 1;\n      case '{':\n        for (let index = 1; index < quantifier.length; ++index) {\n          if (quantifier[index] < '0' || quantifier[index] > '9') {\n            return Number(quantifier.slice(1, index));\n          }\n        }\n    }\n    return 0;\n  }\n\n  private sliceRegexByOr(regularExpressionString: string): string[] {\n    const result = [];\n    let slicedRegex = '';\n    let lastSliceIndex = 0;\n    let roundBracketCount = 0;\n    let squareBracketCount = 0;\n    let curlyBracketCount = 0;\n    let index = 0;\n    for (; index < regularExpressionString.length; ++index) {\n      switch (regularExpressionString[index]) {\n        case '\\\\':\n          // escape sequence; skip the next character\n          ++index;\n          break;\n        case '(':\n          roundBracketCount += 1;\n          break;\n        case ')':\n          roundBracketCount -= 1;\n          break;\n        case '[':\n          squareBracketCount += 1;\n          break;\n        case ']':\n          squareBracketCount -= 1;\n          break;\n        case '{':\n          curlyBracketCount += 1;\n          break;\n        case '}':\n          curlyBracketCount -= 1;\n          break;\n        case '|':\n          if (\n            roundBracketCount === 0 &&\n            squareBracketCount === 0 &&\n            curlyBracketCount === 0\n          ) {\n            slicedRegex = this.removeOuterRoundBrackets(\n              regularExpressionString.slice(lastSliceIndex, index)\n            );\n            result.push(slicedRegex);\n            lastSliceIndex = index + 1;\n          }\n          break;\n      }\n    }\n    slicedRegex = this.removeOuterRoundBrackets(\n      regularExpressionString.slice(lastSliceIndex, index)\n    );\n    result.push(slicedRegex);\n    return result;\n  }\n\n  private sliceRegexByThen(regularExpressionString: string): string[][] {\n    // the actual result\n    const resultStart = [];\n    // the remainder of the regex in each case\n    const resultRemainder = [];\n    let roundBracketCount = 0;\n    let squareBracketCount = 0;\n    let curlyBracketCount = 0;\n    for (let index = 0; index < regularExpressionString.length; ++index) {\n      switch (regularExpressionString[index]) {\n        case '\\\\':\n          // escape sequence; skip the next character\n          ++index;\n          break;\n        case '(':\n          roundBracketCount += 1;\n          break;\n        case ')':\n          roundBracketCount -= 1;\n          break;\n        case '[':\n          squareBracketCount += 1;\n          break;\n        case ']':\n          squareBracketCount -= 1;\n          break;\n        case '{':\n          curlyBracketCount += 1;\n          break;\n        case '}':\n          curlyBracketCount -= 1;\n          break;\n      }\n      if (\n        roundBracketCount === 0 &&\n        squareBracketCount === 0 &&\n        curlyBracketCount === 0\n      ) {\n        if (!this.isQuantifier(regularExpressionString[index + 1])) {\n          resultStart.push(regularExpressionString.slice(0, index + 1));\n          resultRemainder.push(regularExpressionString.slice(index + 1));\n        } else {\n          // let minimalAmountOfRepeats = parseMinimalAmountOfQuantifier(regularExpressionString.slice(index + 1));\n          // TODO\n        }\n      }\n    }\n    return [resultStart, resultRemainder];\n  }\n\n  suggestion(beginning: string, regularExpressionString: string): string {\n    if (new RegExp(regularExpressionString).test(beginning)) {\n      // TODO: RETURN AN EMPTY STRING\n      return 'YA ES IGUAL, NO HAY MÁS QUE SUGERIR';\n    }\n    const regexOptions = this.sliceRegexByOr(regularExpressionString);\n    if (regexOptions.length > 1) {\n      for (\n        let regexOptionIndex = 0;\n        regexOptionIndex < regexOptions.length;\n        ++regexOptionIndex\n      ) {\n        const regexParts = this.sliceRegexByThen(\n          regexOptions[regexOptionIndex]\n        );\n        const regexPartsStarts = regexParts[0];\n        const regexPartsRemainders = regexParts[1];\n        // for each option, test if the first part of the regex matches\n        // if it doesn't, continue\n        // if it does, keep checking until what part it matches\n        if (!new RegExp(regexPartsStarts[0]).test(beginning)) {\n          // if there are no more options\n          if (regexOptionIndex === regexOptions.length - 1) {\n            // we return the first option, but we could return any option\n\n            // TODO: RETURN ANY TEXT THAT MATCHES regexOptions[0]\n            return regexOptions[0];\n          }\n        } else {\n          for (\n            let regexPartIndex = 1;\n            regexPartIndex < regexPartsStarts.length;\n            ++regexPartIndex\n          ) {\n            if (!new RegExp(regexPartsStarts[regexPartIndex]).test(beginning)) {\n              // TODO: RETURN ANY TEXT THAT MATCHES regexPartsRemainders[regexPartIndex - 1]\n              return regexPartsRemainders[regexPartIndex - 1];\n            }\n          }\n        }\n      }\n    } else if (regexOptions.length === 1) {\n      const regexParts = this.sliceRegexByThen(regexOptions[0]);\n      const regexPartsStarts = regexParts[0];\n      const regexPartsRemainders = regexParts[1];\n      if (!new RegExp(regexPartsStarts[0]).test(beginning)) {\n        // TODO: RETURN ANY TEXT THAT MATCHES regularExpressionString\n        return regularExpressionString;\n      } else {\n        for (\n          let regexPartIndex = 1;\n          regexPartIndex < regexPartsStarts.length;\n          ++regexPartIndex\n        ) {\n          if (!new RegExp(regexPartsStarts[regexPartIndex]).test(beginning)) {\n            // TODO: RETURN ANY TEXT THAT MATCHES regexPartsRemainders[regexPartIndex - 1]\n            return regexPartsRemainders[regexPartIndex - 1];\n          }\n        }\n      }\n    }\n    // TODO: RETURN AN EMPTY STRING\n    return 'NO DEBERÍA SER POSIBLE';\n  }\n}\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  OnInit,\r\n  ElementRef,\r\n  ViewChild,\r\n  forwardRef\r\n} from '@angular/core';\r\nimport {\r\n  NG_VALUE_ACCESSOR,\r\n  ControlValueAccessor,\r\n  AbstractControl,\r\n  ValidationErrors,\r\n  Validator,\r\n  NG_VALIDATORS\r\n} from '@angular/forms';\r\nimport {\r\n  hasValue,\r\n  isInitialAndEmpty,\r\n  isValidEmail,\r\n  isValidNumber,\r\n  isValidRelativeUrl,\r\n  isValidColor,\r\n  normalizeDate\r\n} from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\nimport { RegexpService } from './regexp.service';\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-input',\r\n  templateUrl: './input.component.html',\r\n  styleUrls: ['./input.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      multi: true,\r\n      useExisting: forwardRef(() => InputComponent)\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      multi: true,\r\n      useExisting: forwardRef(() => InputComponent)\r\n    }\r\n  ]\r\n})\r\nexport class InputComponent implements OnInit, ControlValueAccessor, Validator {\r\n  static idCounter = 0;\r\n\r\n  @ViewChild('input', { static: false }) input: ElementRef;\r\n  @ViewChild('textarea', { static: false }) textarea: ElementRef;\r\n  @ViewChild('colorpicker', { static: false }) colorpicker: ElementRef;\r\n\r\n  touched = false;\r\n  dirty = false;\r\n  lastErrors: ValidationErrors | null = null;\r\n\r\n  private _disabled: string | boolean;\r\n  private _value: any = '';\r\n  private _type: string;\r\n  private _placeholder: string;\r\n  private _pattern?: string = undefined;\r\n  private _regexp?: RegExp = undefined;\r\n  private _currency: string;\r\n  private _required: boolean;\r\n\r\n  public userErrors = {\r\n    en: {\r\n      required: 'Required field.',\r\n      min: 'Minimum value is $min.',\r\n      max: 'Maximum value is $max.',\r\n      email: 'Format should match example@example.com.',\r\n      url: 'Format should match https://example.com.',\r\n      color: 'Format should match #XXXXXX.'\r\n    },\r\n    es: {\r\n      required: 'El campo es obligatorio.',\r\n      min: 'El valor mínimo es $min.',\r\n      max: 'El valor máximo es $max.',\r\n      email: 'El campo debe tener un formato como ejemplo@ejemplo.com.',\r\n      url: 'El campo debe tener un formato como https://ejemplo.com.',\r\n      color: 'El campo debe tener un formato como #XXXXXX.'\r\n    }\r\n  };\r\n\r\n  public domain: string;\r\n  @Input()\r\n  public rows?: number | string;\r\n  @Input()\r\n  public cols?: number | string;\r\n  @Input()\r\n  public step?: number;\r\n  @Input()\r\n  public min?: number | string;\r\n  @Input()\r\n  public max?: number | string;\r\n\r\n  get className(): string {\r\n    return this.checkClassName();\r\n  }\r\n\r\n  get color(): string {\r\n    return this.checkColor();\r\n  }\r\n\r\n  @Input() lang = languageDetector();\r\n  @Input() public inlineErrors = false;\r\n  @Input() public inputId: string;\r\n  @Input('aria-label') public ariaLabel: string;\r\n  @Input() public readonly: boolean | null = null;\r\n\r\n  @Input()\r\n  set disabled(v: string | boolean) {\r\n    v = typeof v === 'string' ? true : v;\r\n    this._disabled = v;\r\n  }\r\n  get disabled(): string | boolean {\r\n    return this._disabled;\r\n  }\r\n\r\n  @Input()\r\n  set pattern(p: string | undefined) {\r\n    this._pattern = p;\r\n    if (p === undefined) {\r\n      this._regexp = undefined;\r\n    } else {\r\n      try {\r\n        this._regexp = new RegExp(p);\r\n      } catch (e) {\r\n        this._pattern = undefined;\r\n        this._regexp = undefined;\r\n      }\r\n    }\r\n  }\r\n  get pattern(): string | undefined {\r\n    return this._pattern;\r\n  }\r\n\r\n  @Input()\r\n  set currency(v: string) {\r\n    this._currency = v.toUpperCase();\r\n  }\r\n  get currency(): string {\r\n    return this._currency;\r\n  }\r\n\r\n  @Input()\r\n  set placeholder(v: string) {\r\n    this._placeholder = v;\r\n  }\r\n  get placeholder(): string {\r\n    return this._placeholder ? this._placeholder : '';\r\n  }\r\n\r\n  @Input()\r\n  set required(v: boolean) {\r\n    this._required = v;\r\n  }\r\n  get required(): boolean {\r\n    return this._required;\r\n  }\r\n\r\n  @Input()\r\n  set type(v: string) {\r\n    this._type = v.toLowerCase();\r\n    this.domain = v.toLowerCase();\r\n    this.checkType(v);\r\n  }\r\n  get type(): string {\r\n    return this._type ? this._type : 'text';\r\n  }\r\n\r\n  @Input()\r\n  set value(v: any) {\r\n    v = v === undefined ? null : v;\r\n    if (v === this._value) {\r\n      return; // prevent events when there is no changes\r\n    }\r\n    const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n    if (this.type === 'date') {\r\n      v = normalizeDate(v);\r\n    }\r\n\r\n    this._value = v;\r\n    this.onChange(v);\r\n    if (!initialAndEmpty) {\r\n      this.valueChange.emit(v);\r\n    }\r\n  }\r\n  get value(): any {\r\n    if (this.isPercentage() || this.isPermillage() || this.isNumber()) {\r\n      const numVal = parseFloat(this._value);\r\n      if (!Number.isNaN(numVal)) {\r\n        return numVal;\r\n      }\r\n    }\r\n    return this._value;\r\n  }\r\n  @Output() valueChange = new EventEmitter<any>();\r\n  @Output() keyPress = new EventEmitter<KeyboardEvent>();\r\n\r\n  onChange = (value): void => {};\r\n  onTouched = (): void => {};\r\n\r\n  constructor(public regexpService: RegexpService) {}\r\n\r\n  // ControlValueAccessor Interface implementation\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n    this.setValueInControl(value);\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n\r\n  markAsTouched(): void {\r\n    if (!this.touched) {\r\n      this.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n\r\n  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n  // End of ControlValueAccessor Interface implementation\r\n\r\n  private setValueInControl(v: any): void {\r\n    if (this.domain === 'date') {\r\n      v = normalizeDate(v);\r\n    }\r\n    if (this.input) {\r\n      this.input.nativeElement.value = v;\r\n    }\r\n    if (this.textarea) {\r\n      this.textarea.nativeElement.value = v;\r\n    }\r\n  }\r\n\r\n  // Validator interface\r\n  registerOnValidatorChange(): void {}\r\n\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    const value = control.value;\r\n    let result: ValidationErrors | null = null;\r\n\r\n    if (this.required && !hasValue(value)) {\r\n      result = result || {};\r\n      result.required = { value, reason: 'Required field.' };\r\n    }\r\n    if (this._regexp && hasValue(value) && !this._regexp.test(value)) {\r\n      result = result || {};\r\n      result.pattern = {\r\n        value,\r\n        reason: `Value must follow the pattern: ${this._pattern}`\r\n      };\r\n    }\r\n    if (this.type === 'email' && hasValue(value) && !isValidEmail(value)) {\r\n      result = result || {};\r\n      result.email = { value, reason: 'Invalid email.' };\r\n    }\r\n    if (this.type === 'url' && hasValue(value) && !isValidRelativeUrl(value)) {\r\n      result = result || {};\r\n      result.url = { value, reason: 'Invalid URL.' };\r\n    }\r\n    if (this.type === 'color' && hasValue(value) && !isValidColor(value)) {\r\n      result = result || {};\r\n      result.color = { value, reason: 'Invalid color.' };\r\n    }\r\n    if (this.type === 'number' && hasValue(value) && !isValidNumber(value)) {\r\n      result = result || {};\r\n      result.numeric = { value, reason: 'Invalid number.' };\r\n    }\r\n    if (\r\n      this.type === 'date' ||\r\n      this.type === 'time' ||\r\n      this.type === 'timestamp'\r\n    ) {\r\n      if (\r\n        typeof this.min === 'string' &&\r\n        hasValue(value) &&\r\n        String(value).localeCompare(this.min) === -1\r\n      ) {\r\n        result = result || {};\r\n        result.min = {\r\n          value,\r\n          min: this.min,\r\n          reason: `Value is lower than minimum value: ${this.min}.`\r\n        };\r\n      }\r\n      if (\r\n        typeof this.max === 'string' &&\r\n        hasValue(value) &&\r\n        String(value).localeCompare(this.max) !== -1\r\n      ) {\r\n        result = result || {};\r\n        result.max = {\r\n          value,\r\n          max: this.max,\r\n          reason: `Value is greater than than maximum value: ${this.max}.`\r\n        };\r\n      }\r\n    }\r\n\r\n    if (\r\n      this.type === 'percentage' ||\r\n      this.type === 'permillage' ||\r\n      this.type === 'number' ||\r\n      this.type === 'currency'\r\n    ) {\r\n      if (hasValue(this.min) && hasValue(value) && value < +this.min) {\r\n        result = result || {};\r\n        result.min = {\r\n          value,\r\n          min: this.min,\r\n          reason: `Value is lower than minimum value: ${this.min}.`\r\n        };\r\n      }\r\n      if (hasValue(this.max) && hasValue(value) && value > +this.max) {\r\n        result = result || {};\r\n        result.max = {\r\n          value,\r\n          max: this.max,\r\n          reason: `Value is greater than than maximum value: ${this.max}.`\r\n        };\r\n      }\r\n    }\r\n    this.lastErrors = result;\r\n    return result;\r\n  }\r\n  // End of Validator interface\r\n\r\n  ngOnInit(): void {\r\n    this.inputId = this.inputId\r\n      ? this.inputId\r\n      : `${this.type}$${InputComponent.idCounter++}`;\r\n  }\r\n  onLostFocus(): void {\r\n    this.markAsTouched();\r\n  }\r\n  onKeyUp(newValue: string): void {\r\n    this.value = newValue;\r\n  }\r\n  onChangeValue(newValue: string): void {\r\n    this.value = newValue;\r\n    if (this.isColor()) {\r\n      this.colorpicker.nativeElement.value = undefined;\r\n    }\r\n    this.markAsTouched();\r\n  }\r\n  onKeyPress(event: KeyboardEvent): void {\r\n    this.keyPress.emit(event);\r\n  }\r\n  onColorPicked(newValue: string): void {\r\n    this.onChangeValue(newValue);\r\n    this.setValueInControl(newValue);\r\n  }\r\n\r\n  isUrl(): boolean {\r\n    return this.type === 'url';\r\n  }\r\n  isColor(): boolean {\r\n    return this.type === 'color';\r\n  }\r\n  isNumber(): boolean {\r\n    return this.type === 'number';\r\n  }\r\n  isPercentage(): boolean {\r\n    return this.type === 'percentage';\r\n  }\r\n  isPermillage(): boolean {\r\n    return this.type === 'permillage';\r\n  }\r\n  hasPrefix(): boolean {\r\n    return this.currency === 'USD';\r\n  }\r\n  hasPostfix(): boolean {\r\n    return (\r\n      this.currency === 'EUR' ||\r\n      this.isPercentage() ||\r\n      this.isPermillage() ||\r\n      (this.isUrl() && !!this.value) ||\r\n      this.isColor()\r\n    );\r\n  }\r\n\r\n  checkClassName(): string {\r\n    return this.disabled\r\n      ? this.readonly\r\n        ? 'disabled readonly'\r\n        : 'disabled'\r\n      : this.readonly\r\n      ? 'readonly'\r\n      : '';\r\n  }\r\n\r\n  checkColor(): string {\r\n    return this.type === 'color' && isValidColor(this.value)\r\n      ? this.value\r\n      : 'initial';\r\n  }\r\n\r\n  checkType(type: string): void {\r\n    switch (type) {\r\n      case 'email':\r\n        this.setEmailPatterns();\r\n        break;\r\n      case 'url':\r\n        this.setUrlPatterns();\r\n        break;\r\n      case 'color':\r\n        this.setColorPatterns();\r\n        break;\r\n      case 'date':\r\n        this.setDatePatterns();\r\n        break;\r\n      case 'time':\r\n        this.setTimePatterns();\r\n        break;\r\n      case 'password':\r\n        this.setPasswordPatterns();\r\n        break;\r\n      case 'number':\r\n        this.setNumberPatterns();\r\n        break;\r\n      case 'currency':\r\n        this.setCurrencyPatterns();\r\n        break;\r\n      case 'percentage':\r\n        this.setPercentagePatterns();\r\n        break;\r\n      case 'permillage':\r\n        this.setPermillagePatterns();\r\n        break;\r\n      default:\r\n        break;\r\n    }\r\n  }\r\n\r\n  setEmailPatterns(): void {}\r\n\r\n  setUrlPatterns(): void {}\r\n\r\n  setColorPatterns(): void {\r\n    this.domain = 'text';\r\n  }\r\n\r\n  setDatePatterns(): void {\r\n    this.min = this.min || '1900-01-01';\r\n    this.max = this.max || '2100-01-01';\r\n  }\r\n\r\n  setTimePatterns(): void {}\r\n\r\n  setPasswordPatterns(): void {}\r\n\r\n  setNumberPatterns(): void {\r\n    this.domain = 'number';\r\n    this.placeholder = '0';\r\n  }\r\n\r\n  setCurrencyPatterns(): void {\r\n    this.domain = 'number';\r\n    this.step = this.step || 0.1;\r\n    this.min = this.min || 0.0;\r\n    this.max = this.max || 10000.0;\r\n    this.value = 0.0;\r\n  }\r\n\r\n  setPercentagePatterns(): void {\r\n    this.domain = 'number';\r\n    this.step = this.step || 0.01;\r\n    this.min = this.min || 0.0;\r\n    this.max = this.max || 100.0;\r\n    this.placeholder = '0.00';\r\n  }\r\n\r\n  setPermillagePatterns(): void {\r\n    this.domain = 'number';\r\n    this.step = this.step || 0.01;\r\n    this.min = this.min || 0.0;\r\n    this.max = this.max || 1000.0;\r\n    this.placeholder = '0.00';\r\n  }\r\n}\r\n","<div *ngIf=\"currency && currency === 'USD'\" class=\"prefix rounded-left symbol\" [ngClass]=\"className\">\n  <span>$</span>\n</div>\n<input\n  #input\n  *ngIf=\"type !== 'textarea'\"\n  [class]=\"hasPrefix() ? (hasPostfix() ? 'infix' : 'postfix rounded-right') : (hasPostfix() ? 'prefix rounded-left' : 'rounded')\"\n  [ngClass]=\"className\"\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  (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  class=\"rounded\"\n  [ngClass]=\"className\"\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  (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 rounded-right symbol\" [ngClass]=\"className\">\n  <span>€</span>\n</div>\n<div *ngIf=\"isPercentage()\" class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\n  <span>%</span>\n</div>\n<div *ngIf=\"isPermillage()\" class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\n  <span>‰</span>\n</div>\n<div *ngIf=\"isUrl() && !!value\" class=\"postfix rounded-right symbol clickable\" [ngClass]=\"className\">\n  <a href=\"{{ value }}\" target=\"_blank\">\n    <span class=\"icon-external\"></span>\n  </a>\n</div>\n<div *ngIf=\"isColor()\" class=\"postfix rounded-right bordered transparency\" [ngClass]=\"className\">\n  <div class=\"rounded-right full-space\" [ngStyle]=\"{'background-color': color}\">\n    <input\n      #colorpicker\n      class=\"minimal-space clickable invisible rounded-right full-space\"\n      [id]=\"inputId + '$colorpicker'\"\n      type=\"color\"\n      [attr.value]=\"value\"\n      [attr.disabled]=\"disabled === true ? 'true' : undefined\"\n      [attr.readonly]=\"readonly === true ? 'true' : undefined\"\n      (change)=\"onColorPicked(colorpicker.value)\"\n      (keypress)=\"onKeyPress($event)\"\n      (blur)=\"onLostFocus()\"\n    />\n  </div>\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.url\">{{ userErrors[this.lang].url }}</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","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';\r\nimport { LuxTooltipContext } from './tooltip-context';\r\n\r\n/**\r\n * Default Tooltip Component\r\n */\r\n@Component({\r\n  standalone: false,\r\n  template: `\r\n    <span class=\"lux-tooltip\" style=\"transition: opacity 200ms\">{{\r\n      context.message\r\n    }}</span>\r\n  `\r\n})\r\nexport class TooltipComponent {\r\n  @Input() context: LuxTooltipContext;\r\n\r\n  constructor() {}\r\n}\r\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';\r\n\r\nimport { TooltipService } from './tooltip.service';\r\nimport { PlacementValue } from './placement';\r\nimport { TooltipContentRef } from './tooltop-content';\r\n\r\n/**\r\n * Tooltip directive\r\n */\r\n@Directive({\r\n  standalone: false,\r\n  selector: '[luxTooltip]'\r\n})\r\nexport class LuxTooltipDirective {\r\n  /** Tooltip title */\r\n  @Input() luxTooltip: any;\r\n\r\n  /** Component, TemplateRef or String */\r\n  @Input() content: any;\r\n\r\n  /** Placement */\r\n  @Input() placement: PlacementValue;\r\n\r\n  tooltipRef: TooltipContentRef;\r\n\r\n  constructor(\r\n    private elHost: ElementRef,\r\n    private tooltipService: TooltipService\r\n  ) {}\r\n\r\n  @HostListener('mouseenter') onMouseEnter(): void {\r\n    if (!this.tooltipRef) {\r\n      this.tooltipRef = this.show(this.content, this.elHost, this.placement);\r\n    }\r\n  }\r\n\r\n  @HostListener('mouseleave') onMouseLeave(): void {\r\n    if (this.tooltipRef) {\r\n      this.remove(this.tooltipRef);\r\n      this.tooltipRef = null;\r\n    }\r\n  }\r\n\r\n  @HostListener('click') onClick(): void {\r\n    if (this.tooltipRef) {\r\n      this.remove(this.tooltipRef);\r\n      this.tooltipRef = null;\r\n    }\r\n  }\r\n\r\n  show(\r\n    component: any,\r\n    elHost: ElementRef,\r\n    placement: PlacementValue\r\n  ): TooltipContentRef {\r\n    return this.tooltipService.appendComponentToBody(\r\n      component,\r\n      elHost,\r\n      placement\r\n    );\r\n  }\r\n\r\n  remove(tooltipRef: TooltipContentRef): void {\r\n    this.tooltipService.removeComponentFromBody(tooltipRef);\r\n  }\r\n}\r\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  standalone: false,\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","<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      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","import {\r\n  Component,\r\n  EventEmitter,\r\n  forwardRef,\r\n  Input,\r\n  Output\r\n} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  ControlValueAccessor,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  ValidationErrors,\r\n  Validator\r\n} from '@angular/forms';\r\nimport { isInitialAndEmpty } from '../helperFns';\r\n\r\nexport interface RadioItem {\r\n  name?: string;\r\n  label: string;\r\n  value: any;\r\n}\r\n\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-radiogroup',\r\n  templateUrl: './radiogroup.component.html',\r\n  styleUrls: ['./radiogroup.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      multi: true,\r\n      useExisting: forwardRef(() => RadiogroupComponent)\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      multi: true,\r\n      useExisting: forwardRef(() => RadiogroupComponent)\r\n    }\r\n  ]\r\n})\r\nexport class RadiogroupComponent implements ControlValueAccessor, Validator {\r\n  private touched = false;\r\n\r\n  @Input() name = 'radiogroup1';\r\n  @Input() public disabled: boolean | null = false;\r\n  @Input() public readonly: boolean | null = false;\r\n  @Input() public required: boolean | null = false;\r\n\r\n  @Input()\r\n  set items(col: RadioItem[]) {\r\n    this._items = (col || []).map((it, index) =>\r\n      this.ensureHasUniqueName(it, index)\r\n    );\r\n    this.itemsChange.emit(col);\r\n  }\r\n  get items(): RadioItem[] {\r\n    return this._items;\r\n  }\r\n  @Output() itemsChange = new EventEmitter<RadioItem[]>();\r\n\r\n  @Input()\r\n  set value(v: any) {\r\n    if (v === this._value) {\r\n      return;\r\n    }\r\n    const initialAndEmpty = isInitialAndEmpty(this._value, v);\r\n    this._value = v;\r\n    this.onChange(v);\r\n    if (!initialAndEmpty) {\r\n      this.valueChange.emit(v);\r\n    }\r\n  }\r\n  get value(): any {\r\n    return this._value;\r\n  }\r\n  @Output() valueChange = new EventEmitter<any>();\r\n\r\n  private _value: any = undefined;\r\n  private _items: RadioItem[] = [];\r\n\r\n  constructor() {}\r\n\r\n  // ControlValueAccessor Interface\r\n  onChange = (value): void => {};\r\n  onTouched = (): void => {};\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n  markAsTouched(): void {\r\n    if (!this.touched) {\r\n      this.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n  // End ControlValueAccessor Interface\r\n\r\n  // Validator interface\r\n  registerOnValidatorChange(): void {}\r\n\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    const value = control.value;\r\n    if (\r\n      this.required &&\r\n      (value === '' || value === null || value === undefined)\r\n    ) {\r\n      return { required: { value, reason: 'Required field.' } };\r\n    }\r\n    return null;\r\n  }\r\n  // End of Validator interface\r\n\r\n  setValue(event: MouseEvent, item: RadioItem): void {\r\n    if (!this.disabled && !this.readonly) {\r\n      this.value = item.value;\r\n      this.markAsTouched();\r\n    }\r\n    event.preventDefault();\r\n  }\r\n  ensureHasUniqueName(item: RadioItem, index: number): RadioItem {\r\n    if (!item.name) {\r\n      item.name = `${this.name}_${index}`;\r\n    }\r\n    return item;\r\n  }\r\n}\r\n","<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","import {\r\n  Component,\r\n  Input,\r\n  EventEmitter,\r\n  Output,\r\n  forwardRef\r\n} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  ControlValueAccessor,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  ValidationErrors,\r\n  Validator\r\n} from '@angular/forms';\r\n\r\nlet sequencer = 0;\r\n\r\n@Component({\r\n  standalone: false,\r\n  selector: 'lux-select',\r\n  templateUrl: './select.component.html',\r\n  styleUrls: ['./select.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      multi: true,\r\n      useExisting: forwardRef(() => SelectComponent)\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      multi: true,\r\n      useExisting: forwardRef(() => SelectComponent)\r\n    }\r\n  ]\r\n})\r\nexport class SelectComponent implements ControlValueAccessor, Validator {\r\n  @Input() id = 'stringList' + sequencer++;\r\n  @Input() disabled = false;\r\n  @Input() required = false;\r\n  /** Allow multiple elements */\r\n  @Input() multiple = true;\r\n  @Input() value: string[] = [];\r\n  @Output() valueChange = new EventEmitter<string[]>();\r\n  @Input() placeholder = 'Add new';\r\n  /** If set, check there is no duplicates in the data. */\r\n  @Input() unique = true;\r\n  /** Validation function for new items. Returns error or null if valid */\r\n  @Input() validateItem: (item: string) => string = (_) => null;\r\n\r\n  newEntry = '';\r\n  error = null;\r\n  isValidNewEntry = false;\r\n\r\n  private touched = false;\r\n\r\n  constructor() {}\r\n\r\n  // ControlValueAccessor Interface\r\n  onChange = (value): void => {};\r\n  onTouched = (): void => {};\r\n  writeValue(value: any): void {\r\n    this.value = value;\r\n  }\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n  markAsTouched(): void {\r\n    if (!this.touched) {\r\n      this.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n  // End ControlValueAccessor Interface\r\n\r\n  // Validator interface\r\n  registerOnValidatorChange(): void {}\r\n\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    const value = control.value;\r\n    if (\r\n      this.required &&\r\n      (value === '' || value === null || value === undefined)\r\n    ) {\r\n      return { required: { value, reason: 'Required field.' } };\r\n    }\r\n    return null;\r\n  }\r\n  // End of Validator interface\r\n\r\n  get canAdd(): boolean {\r\n    return this.multiple || this.value.length === 0;\r\n  }\r\n  add(val: string): void {\r\n    this.value.push(val);\r\n    this.newEntry = '';\r\n    this.markAsTouched();\r\n    this.valueChange.emit(this.value);\r\n  }\r\n  remove(index: number): void {\r\n    if (this.value.length > index) {\r\n      this.value.splice(index, 1);\r\n      this.markAsTouched();\r\n      this.valueChange.emit(this.value);\r\n    }\r\n  }\r\n  onKeyPress(event: KeyboardEvent): void {\r\n    if (event.key === 'Enter' && !this.error && this.newEntry !== '') {\r\n      // Add on pressing Enter/Return\r\n      this.markAsTouched();\r\n      this.add(this.newEntry);\r\n    }\r\n  }\r\n  onChangeNewEntry(newValue: string): void {\r\n    this.markAsTouched();\r\n    if (!newValue) {\r\n      this.isValidNewEntry = false;\r\n      this.error = null;\r\n      return;\r\n    }\r\n    if (this.unique) {\r\n      const found = (this.value || []).find((it) => it === newValue);\r\n      this.isValidNewEntry = !found;\r\n      this.error = found\r\n        ? `Value '${newValue}' is already in. Cannot add duplicates.`\r\n        : null;\r\n      if (!this.isValidNewEntry) {\r\n        return;\r\n      }\r\n    }\r\n    this.error = this.validateItem(newValue);\r\n    this.isValidNewEntry = !this.error;\r\n  }\r\n}\r\n","<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            type=\"button\"\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\" type=\"button\" (click)=\"add(newEntry)\">Add</button>\n    </div>\n    <div class=\"error\">\n      {{ error }}\n    </div>\n  </div>\n</div>\n","import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n  standalone: false,\r\n  selector: '[luxVoiceRecognition]'\r\n})\r\nexport class VoiceRecognitionDirective implements OnInit {\r\n  @Input() language: string;\r\n  // See API at: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition\r\n  private recognition: any;\r\n  private isRecognizing = false;\r\n  private mic: any;\r\n\r\n  constructor(private el: ElementRef, private renderer: Renderer2) {\r\n    const speechRecognition = (window as any).webkitSpeechRecognition;\r\n    if (speechRecognition) {\r\n      this.recognition = new speechRecognition();\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.recognition) {\r\n      // API is available\r\n      this.recognition.lang = this.language || window.navigator.language;\r\n      this.recognition.interimResults = false;\r\n      this.recognition.maxAlternatives = 1;\r\n\r\n      // Add mic icon\r\n      this.mic = document.createElement('div');\r\n      this.mic.setAttribute('class', 'lux-microphone');\r\n\r\n      const parent = this.el.nativeElement.parentElement;\r\n      parent.appendChild(this.mic);\r\n\r\n      // Add event handlers\r\n      this.mic.onclick = (): void => this.microphoneClick();\r\n      this.recognition.onresult = (event): void => this.onRecognized(event);\r\n    }\r\n  }\r\n\r\n  microphoneClick(): void {\r\n    if (this.isRecognizing) {\r\n      // stop\r\n      this.isRecognizing = false;\r\n      this.renderer.removeClass(this.mic, 'lux-recording');\r\n      this.recognition.abort();\r\n    } else {\r\n      // start\r\n      this.el.nativeElement.value = getRecordingMessage(this.language);\r\n      this.isRecognizing = true;\r\n      this.renderer.addClass(this.mic, 'lux-recording');\r\n      this.recognition.start();\r\n    }\r\n  }\r\n  onRecognized(event: any): void {\r\n    const recognizedText = event.results[0][0].transcript;\r\n    this.isRecognizing = false;\r\n    this.el.nativeElement.value = recognizedText;\r\n    this.renderer.removeClass(this.mic, 'lux-recording');\r\n  }\r\n}\r\n\r\nconst getRecordingMessage = (lang: string): string => {\r\n  switch (lang.toLowerCase()) {\r\n    case 'es':\r\n    case 'es-es':\r\n      return 'Grabando...';\r\n    case 'en':\r\n    case 'en-uk':\r\n    case 'en-us':\r\n    default:\r\n      return 'Recording...';\r\n  }\r\n};\r\n","import { isPlatformBrowser } from '@angular/common';\r\n\r\nimport {\r\n  ClassProvider,\r\n  FactoryProvider,\r\n  InjectionToken,\r\n  PLATFORM_ID\r\n} from '@angular/core';\r\n\r\n/* Create a new injection token for injecting the window into a component. */\r\nexport const WINDOW = new InjectionToken('WindowToken');\r\n\r\n/* Define abstract class for obtaining reference to the global window object. */\r\nexport abstract class WindowRef {\r\n  get nativeWindow(): Window | object {\r\n    throw new Error('Not implemented.');\r\n  }\r\n}\r\n\r\n/* Define class that implements the abstract class and returns the native window object. */\r\nexport class BrowserWindowRef extends WindowRef {\r\n  constructor() {\r\n    super();\r\n  }\r\n\r\n  get nativeWindow(): Window | object {\r\n    return window;\r\n  }\r\n}\r\n\r\n/* Create an factory function that returns the native window object. */\r\nexport const windowFactory = (\r\n  browserWindowRef: BrowserWindowRef,\r\n  platformId: object\r\n): Window | object => {\r\n  if (isPlatformBrowser(platformId)) {\r\n    return browserWindowRef.nativeWindow;\r\n  }\r\n  return new Object();\r\n};\r\n\r\n/* Create a injectable provider for the WindowRef token that uses the BrowserWindowRef class. */\r\nconst browserWindowProvider: ClassProvider = {\r\n  provide: WindowRef,\r\n  useClass: BrowserWindowRef\r\n};\r\n\r\n/* Create an injectable provider that uses the windowFactory function for returning the native window object. */\r\nconst windowProvider: FactoryProvider = {\r\n  provide: WINDOW,\r\n  useFactory: windowFactory,\r\n  deps: [WindowRef, PLATFORM_ID]\r\n};\r\n\r\n/* Create an array of providers. */\r\nexport const WINDOW_PROVIDERS = [browserWindowProvider, windowProvider];\r\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { AutocompleteListComponent } from './autocomplete-list/autocomplete-list.component';\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\nimport { LuxBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { DatetimeComponent } from './datetime/datetime.component';\nimport { FilterComponent } from './filter/filter.component';\nimport { GeolocationComponent } from './geolocation/geolocation.component';\nimport { InputComponent } from './input/input.component';\nimport { MapComponent } from './map/map.component';\nimport { LuxModalBackdropComponent } from './modal/modal-backdrop';\nimport { LuxModalWindowComponent } from './modal/modal-window';\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 { LuxTooltipDirective } from './tooltip/tooltip.directive';\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    DatetimeComponent,\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  providers: [ModalService, TooltipService, WINDOW_PROVIDERS],\n  imports: [\n    FormsModule,\n    HttpClientModule,\n    ReactiveFormsModule,\n    RouterModule,\n    CommonModule\n  ],\n  exports: [\n    AutocompleteComponent,\n    AutocompleteListComponent,\n    FilterComponent,\n    CheckboxComponent,\n    DatetimeComponent,\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 { AutocompleteListComponent } from './lib/autocomplete-list/autocomplete-list.component';\nexport { AutocompleteComponent } from './lib/autocomplete/autocomplete.component';\nexport {\n  BreadcrumbItem,\n  LuxBreadcrumbComponent\n} from './lib/breadcrumb/breadcrumb.component';\nexport { CheckboxComponent } from './lib/checkbox/checkbox.component';\nexport {\n  DataSource,\n  DataSourceItem,\n  DecoratedDataSource,\n  DecoratedDataSourceItem\n} from './lib/datasource';\nexport { DatetimeComponent } from './lib/datetime/datetime.component';\nexport { FilterComponent } from './lib/filter/filter.component';\nexport { GeolocationComponent } from './lib/geolocation/geolocation.component';\nexport { InputComponent } from './lib/input/input.component';\nexport { LuxModule } from './lib/lux.module';\nexport { MapComponent } from './lib/map/map.component';\nexport { ModalRef } from './lib/modal/modal-ref';\nexport { ModalService } from './lib/modal/modal.service';\nexport { PaginationComponent } from './lib/pagination/pagination.component';\nexport {\n  RadiogroupComponent,\n  RadioItem\n} from './lib/radiogroup/radiogroup.component';\nexport { SelectComponent } from './lib/select/select.component';\nexport { LuxTooltipDirective } from './lib/tooltip/tooltip.directive';\nexport { VoiceRecognitionDirective } from './lib/voice-recognition/voice-recognition.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i0_1","i2","i1","i2.AutocompleteComponent","i1.LuxModalConfig","i1.ModalStack","i1.OpenLayerLoaderService","i1.ModalService","i2.GeolocationService","i3","i4","i5.AutocompleteComponent","i6.MapComponent","i1.RegexpService","i1.TooltipService","i2.LuxTooltipDirective","i2.InputComponent"],"mappings":"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"}