{"version":3,"file":"metadev-lux.mjs","sources":["../../../projects/lux/src/lib/helperFns.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.ts","../../../projects/lux/src/lib/autocomplete/autocomplete.component.html","../../../projects/lux/src/lib/lang.ts","../../../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/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/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/modal-dismiss-reasons.ts","../../../projects/lux/src/lib/modal/util.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/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","import {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  inject,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  AbstractControl,\r\n  ControlValueAccessor,\r\n  FormsModule,\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  selector: 'lux-autocomplete',\r\n  templateUrl: './autocomplete.component.html',\r\n  styleUrls: ['./autocomplete.component.scss'],\r\n  imports: [FormsModule],\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, OnDestroy\r\n{\r\n  private cd = inject(ChangeDetectorRef);\r\n  private document = inject(DOCUMENT);\r\n  private appendToContainer: HTMLElement | null = null;\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  /** Append dropdown to body or custom selector. Uses position absolute. */\r\n  @Input() appendTo?: string;\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  // 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    this.handleAppendTo();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.removeDropdownFromContainer();\r\n  }\r\n\r\n  private handleAppendTo(): void {\r\n    if (!this.appendTo) {\r\n      return;\r\n    }\r\n\r\n    const container =\r\n      this.appendTo === 'body'\r\n        ? this.document.body\r\n        : this.document.querySelector(this.appendTo);\r\n\r\n    if (container) {\r\n      this.appendToContainer = container as HTMLElement;\r\n      this.appendToContainer.appendChild(this.completeDiv.nativeElement);\r\n    }\r\n  }\r\n\r\n  private removeDropdownFromContainer(): void {\r\n    if (this.appendToContainer && this.completeDiv) {\r\n      const dropdown = this.completeDiv.nativeElement;\r\n      if (dropdown.parentElement === this.appendToContainer) {\r\n        this.appendToContainer.removeChild(dropdown);\r\n      }\r\n    }\r\n  }\r\n\r\n  private updateDropdownPosition(): void {\r\n    if (!this.appendTo || !this.appendToContainer) {\r\n      return;\r\n    }\r\n\r\n    const inputRect = this.i0.nativeElement.getBoundingClientRect();\r\n    const dropdown = this.completeDiv.nativeElement;\r\n\r\n    let top: number;\r\n    let left: number;\r\n\r\n    if (this.appendToContainer === this.document.body) {\r\n      // For body, use viewport coordinates + scroll\r\n      top = inputRect.bottom + window.scrollY;\r\n      left = inputRect.left + window.scrollX;\r\n    } else {\r\n      // For custom containers, calculate relative position\r\n      const containerRect = this.appendToContainer.getBoundingClientRect();\r\n      top =\r\n        inputRect.bottom -\r\n        containerRect.top +\r\n        this.appendToContainer.scrollTop;\r\n      left =\r\n        inputRect.left - containerRect.left + this.appendToContainer.scrollLeft;\r\n    }\r\n\r\n    dropdown.style.top = `${top}px`;\r\n    dropdown.style.left = `${left}px`;\r\n    dropdown.style.width = `${inputRect.width}px`;\r\n  }\r\n  onInputResized(): void {\r\n    this.setSameWidth();\r\n  }\r\n  private setSameWidth(): void {\r\n    if (this.appendTo) {\r\n      this.updateDropdownPosition();\r\n    } else {\r\n      const width = this.i0.nativeElement.getBoundingClientRect().width;\r\n      this.completeDiv.nativeElement.style.width = `${width}px`;\r\n    }\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      if (this.appendTo) {\r\n        this.updateDropdownPosition();\r\n      }\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)\">\r\n  <div class=\"lux-autocomplete-box\">\r\n    <input\r\n      #i0\r\n      [id]=\"inputId\"\r\n      [(ngModel)]=\"label\"\r\n      [placeholder]=\"placeholder\"\r\n      [attr.disabled]=\"disabled || null\"\r\n      [attr.readonly]=\"readonly || null\"\r\n      (keydown)=\"onKeydown($event, i0.value)\"\r\n      (keypress)=\"onKeypress($event, i0.value)\"\r\n      (keyup)=\"onKeyup($event, i0.value)\"\r\n      (blur)=\"onLostFocus(i0.value)\"\r\n      (focus)=\"toggleCompletion(true, i0.value)\"\r\n      (click)=\"toggleCompletion(true, i0.value)\"\r\n      (resized)=\"onInputResized()\"\r\n      (window:resize)=\"onInputResized()\"\r\n      role=\"combobox\"\r\n      aria-autocomplete=\"list\"\r\n      [attr.aria-expanded]=\"showCompletion\"\r\n      aria-haspopup=\"true\"\r\n      attr.aria-owns=\"{{ inputId + '_list' }}\"\r\n      [attr.aria-activedescendant]=\"selectedOption\"\r\n    />\r\n    @if (canAddNewValues) {\r\n    <div class=\"icon-suggestions\"></div>\r\n    } @if (showSpinner) {\r\n    <div class=\"icon-spinner\"></div>\r\n    } @if (!disabled && i0.value && !showCompletion) {\r\n    <button\r\n      type=\"button\"\r\n      class=\"icon-clear\"\r\n      aria-label=\"Clear\"\r\n      (click)=\"clear()\"\r\n    ></button>\r\n    } @else {\r\n    <div\r\n      class=\"icon-dropdown\"\r\n      (click)=\"toggleCompletion(!showCompletion, i0.value)\"\r\n    ></div>\r\n    }\r\n  </div>\r\n  <div\r\n    #completeDiv\r\n    [class.showCompletion]=\"showCompletion\"\r\n    [class.lux-completion-list-appended]=\"appendTo\"\r\n    class=\"lux-completion-list\"\r\n    id=\"{{ inputId + '_list' }}\"\r\n  >\r\n    <ul>\r\n      @for (item of completionList; track item.key; let index = $index) {\r\n      <li\r\n        id=\"{{ inputId + '_' + index }}\"\r\n        class=\"lux-completion-item\"\r\n        [class.selected]=\"focusItem && item.key === focusItem.key\"\r\n        (click)=\"complete(item)\"\r\n        [attr.aria-label]=\"item.label\"\r\n      >\r\n        <span class=\"preserve-white-space\">{{ item.labelPrefix }}</span>\r\n        <span class=\"preserve-white-space bold\">{{ item.labelMatch }}</span>\r\n        <span class=\"preserve-white-space\">{{ item.labelPostfix }}</span>\r\n      </li>\r\n      }\r\n    </ul>\r\n  </div>\r\n</div>\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  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  selector: 'lux-autocomplete-list',\r\n  templateUrl: './autocomplete-list.component.html',\r\n  styleUrls: ['./autocomplete-list.component.scss'],\r\n  imports: [AutocompleteComponent],\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\">\r\n  <ul>\r\n    @for (label of labels; track label; let index = $index) {\r\n    <li>\r\n      <span>{{ label }}</span>\r\n      @if (!disabled) {\r\n      <button\r\n        class=\"remove-item\"\r\n        (click)=\"removeAt(index)\"\r\n        attr.aria-label=\"{{ getDeleteMessage(label) }}\"\r\n      ></button>\r\n      }\r\n    </li>\r\n    }\r\n  </ul>\r\n  @if (!disabled) {\r\n  <div class=\"new-entry\">\r\n    <lux-autocomplete\r\n      #auto\r\n      [dataSource]=\"internalDataSource\"\r\n      [placeholder]=\"placeholder ?? literals[lang].placeholder\"\r\n      [(value)]=\"newEntry\"\r\n      (valueChange)=\"onValueChange()\"\r\n      (keypress)=\"onNewEntryChange($event, auto)\"\r\n    >\r\n    </lux-autocomplete>\r\n    @if (canAdd) {\r\n    <button\r\n      type=\"button\"\r\n      class=\"add-item\"\r\n      aria-label=\"addMessage ?? literals[lang].addMessage\"\r\n      (click)=\"addNew(auto)\"\r\n    ></button>\r\n    }\r\n  </div>\r\n  }\r\n</div>\r\n","\r\nimport { Component, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport {\r\n  ActivatedRoute,\r\n  ActivatedRouteSnapshot,\r\n  NavigationEnd,\r\n  Router,\r\n  RouterModule\r\n} from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nexport interface BreadcrumbItem {\r\n  label: string;\r\n  url: string;\r\n}\r\n@Component({\r\n  selector: 'lux-breadcrumb',\r\n  imports: [RouterModule],\r\n  templateUrl: './breadcrumb.component.html',\r\n  styleUrls: ['./breadcrumb.component.scss']\r\n})\r\nexport class LuxBreadcrumbComponent implements OnInit, OnDestroy {\r\n  private route = inject(Router);\r\n  private activedRoute = inject(ActivatedRoute);\r\n\r\n  public breadcrumbs: BreadcrumbItem[];\r\n  private subs: Subscription[] = [];\r\n  public imagePath = '../assets/img/arrow-forward.svg';\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\">\r\n  @for (breadcrumb of breadcrumbs; track breadcrumb.url; let isLast = $last; let\r\n  isFirst = $first) {\r\n  <li class=\"lux-breadcrumb-item\">\r\n    <a [class.first]=\"isFirst\" routerLink=\"{{ breadcrumb.url }}\">{{\r\n      breadcrumb.label\r\n    }}</a>\r\n    @if (!isLast) {\r\n    <div class=\"lux-breadcrumb-separator\"></div>\r\n    }\r\n  </li>\r\n  }\r\n</ul>\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  inject,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewChild\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  selector: 'lux-checkbox',\r\n  templateUrl: './checkbox.component.html',\r\n  styleUrls: ['./checkbox.component.scss'],\r\n  imports: [],\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 = false;\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    this.cdr.markForCheck();\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    this.cdr.markForCheck();\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  private cdr = inject(ChangeDetectorRef);\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    setTimeout(() => {\r\n      this.syncModel();\r\n    });\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\">\r\n  <div>\r\n    @if (label) {\r\n    <label [for]=\"inputId\">{{ label }}</label>\r\n    }\r\n  </div>\r\n  @if (!disabled) {\r\n  <div class=\"switch-item\" (click)=\"clicked()\">\r\n    <input #ck [name]=\"name\" type=\"checkbox\" [id]=\"inputId\" />\r\n    <div\r\n      class=\"slider round\"\r\n      [class.on]=\"value\"\r\n      [class.disabled]=\"disabled\"\r\n      [tabindex]=\"tabindexValue\"\r\n      (keyup)=\"onKey($event)\"\r\n    ></div>\r\n  </div>\r\n  }\r\n  <div>\r\n    @if (value) {\r\n    <span class=\"checkbox-label\">{{ literals[lang].yesLabel }}</span>\r\n    } @if (!value) {\r\n    <span class=\"checkbox-label\">{{ literals[lang].noLabel }}</span>\r\n    }\r\n  </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  forwardRef\r\n} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  ControlValueAccessor,\r\n  FormsModule,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  ValidationErrors,\r\n  Validator\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  selector: 'lux-datetime',\r\n  templateUrl: './datetime.component.html',\r\n  styleUrls: ['./datetime.component.scss'],\r\n  imports: [FormsModule, CommonModule],\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\r\n  #dateInput\r\n  class=\"rounded-left prefix\"\r\n  [ngClass]=\"className\"\r\n  type=\"date\"\r\n  [id]=\"inputId + '$date'\"\r\n  [(ngModel)]=\"dateValue\"\r\n  [attr.aria-label]=\"ariaLabel\"\r\n  [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n  [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n  [placeholder]=\"\"\r\n  (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\r\n  (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\r\n  (keypress)=\"onKeyPress($event)\"\r\n  (blur)=\"onLostFocus()\"\r\n/>\r\n<input\r\n  #timeInput\r\n  [class]=\"\r\n    (disabled || readonly || !isClearable()) && localTime ? 'rounded-right' : ''\r\n  \"\r\n  [ngClass]=\"className\"\r\n  type=\"time\"\r\n  [id]=\"inputId + '$time'\"\r\n  [(ngModel)]=\"timeValue\"\r\n  [attr.aria-label]=\"ariaLabel\"\r\n  [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n  [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n  [placeholder]=\"\"\r\n  [step]=\"includeSeconds ? 1 : 60\"\r\n  (keyup)=\"onEventDatetime(dateInput.value, timeInput.value)\"\r\n  (change)=\"onEventDatetime(dateInput.value, timeInput.value)\"\r\n  (keypress)=\"onKeyPress($event)\"\r\n  (blur)=\"onLostFocus()\"\r\n/>\r\n@if (!localTime) {\r\n<div\r\n  [class]=\"\r\n    disabled || readonly || !isClearable()\r\n      ? 'rounded-right postfix symbol'\r\n      : 'postfix symbol'\r\n  \"\r\n  [ngClass]=\"className\"\r\n>\r\n  <span>{{ localTime ? '' : 'UTC' }}</span>\r\n</div>\r\n} @if (!disabled && !readonly && isClearable()) {\r\n<button\r\n  #clearButton\r\n  type=\"button\"\r\n  class=\"rounded-right postfix bordered icon-clear\"\r\n  [id]=\"inputId + '$clear'\"\r\n  (click)=\"clear()\"\r\n  aria-label=\"clear\"\r\n></button>\r\n} @if (inlineErrors && lastErrors && (dirty || touched)) {\r\n<div class=\"alert\">\r\n  @if (lastErrors.required) {\r\n  <div>{{ userErrors[lang].required }}</div>\r\n  } @if (lastErrors.min) {\r\n  <div>{{ userErrors[lang].min.replace('$min', lastErrors.min.min) }}</div>\r\n  } @if (lastErrors.max) {\r\n  <div>{{ userErrors[lang].max.replace('$max', lastErrors.max.max) }}</div>\r\n  }\r\n</div>\r\n}\r\n","\r\nimport {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  forwardRef\r\n} from '@angular/core';\r\nimport {\r\n  ControlValueAccessor,\r\n  FormsModule,\r\n  NG_VALUE_ACCESSOR\r\n} from '@angular/forms';\r\nimport { Observable, Subject, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n/** Filter component to query for objects. */\r\n@Component({\r\n  selector: 'lux-filter',\r\n  templateUrl: './filter.component.html',\r\n  styleUrls: ['./filter.component.scss'],\r\n  imports: [FormsModule],\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\">\r\n  <input\r\n    #i0\r\n    type=\"text\"\r\n    [attr.aria-label]=\"ariaLabel\"\r\n    [placeholder]=\"placeholder\"\r\n    [id]=\"inputId\"\r\n    [disabled]=\"disabled\"\r\n    [value]=\"searchValue\"\r\n    (valueChange)=\"onInputValueChange(i0.value)\"\r\n    (keyup)=\"keyup($event, i0.value)\"\r\n  />\r\n\r\n  <button\r\n    [class.hide]=\"!searchValue\"\r\n    aria-label=\"Clear\"\r\n    class=\"clear-indicator icon icon-clear\"\r\n    type=\"button\"\r\n    (click)=\"clear()\"\r\n  ></button>\r\n  @if (searchOnType) {\r\n  <i class=\"search-indicator icon icon-search\"></i>\r\n  } @if (!searchOnType) {\r\n  <button\r\n    class=\"btn-search\"\r\n    type=\"button\"\r\n    [disabled]=\"disabled\"\r\n    (click)=\"search()\"\r\n  >\r\n    Search\r\n  </button>\r\n  }\r\n</div>\r\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  inject\r\n} from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { OpenLayerLoaderService } from '../geolocation/openlayer-loader.service';\r\n\r\n\r\nimport { GeoPoint } from './geopoint';\r\n\r\n// @dynamic\r\ndeclare const ol: any;\r\n\r\n@Component({\r\n  selector: 'lux-map',\r\n  templateUrl: './map.component.html',\r\n  styleUrls: ['./map.component.scss'],\r\n  imports: []\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() {\r\n    const olLoader = inject(OpenLayerLoaderService);\r\n\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","\r\nimport { Component, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n  imports: [],\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","export enum ModalDismissReasons {\n    BackdropClick,\n    Esc\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","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  HostListener,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  inject\r\n} from '@angular/core';\r\n\r\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\r\nimport { FOCUS, getFocusableBoundaryElements } from './util';\r\n\r\n@Component({\r\n  selector: 'lux-modal-window',\r\n  imports: [],\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 _document = inject(DOCUMENT);\r\n  private _elRef = inject<ElementRef<HTMLElement>>(ElementRef);\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']) backdropClick(event): void {\r\n    const btn: HTMLElement = event.target;\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  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';\r\nimport {\r\n  ApplicationRef,\r\n  ComponentFactoryResolver,\r\n  ComponentRef,\r\n  Injectable,\r\n  Injector,\r\n  RendererFactory2,\r\n  TemplateRef,\r\n  inject\r\n} from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { LuxModalBackdropComponent } from './modal-backdrop';\r\nimport { LuxModalConfig, LuxModalOptions } from './modal-config';\r\nimport { ActiveModal, ModalRef } from './modal-ref';\r\nimport { LuxModalWindowComponent } from './modal-window';\r\nimport { ContentRef, focusTrap, isDefined } from './util';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ModalStack {\r\n  private _applicationRef = inject(ApplicationRef);\r\n  private _document = inject(DOCUMENT);\r\n  private _injector = inject(Injector);\r\n  private _rendererFactory = inject(RendererFactory2);\r\n  private modalConfig = inject(LuxModalConfig);\r\n\r\n  private _activeWindowCmptHasChanged = new Subject();\r\n  private _modalRefs: ModalRef[] = [];\r\n  private _windowCmpts: ComponentRef<LuxModalWindowComponent>[] = [];\r\n  private _ariaHiddenValues: Map<Element, string> = new Map();\r\n  private _backdropAttributes = ['backdropClass'];\r\n  private _windowAttributes = [\r\n    'ariaLabelledBy',\r\n    'backdrop',\r\n    'centered',\r\n    'keyboard',\r\n    'scrollable',\r\n    'size',\r\n    'windowClass'\r\n  ];\r\n\r\n  constructor() {\r\n    this._activeWindowCmptHasChanged.subscribe(() => {\r\n      if (this._windowCmpts.length) {\r\n        const activeWindowCmpt =\r\n          this._windowCmpts[this._windowCmpts.length - 1];\r\n        focusTrap(\r\n          activeWindowCmpt.location.nativeElement,\r\n          this._activeWindowCmptHasChanged\r\n        );\r\n        this._revertAriaHidden();\r\n        this._setAriaHidden(activeWindowCmpt.location.nativeElement);\r\n      }\r\n    });\r\n  }\r\n\r\n  open(\r\n    moduleCFR: ComponentFactoryResolver,\r\n    content: any,\r\n    options: LuxModalOptions\r\n  ): ModalRef {\r\n    const config = Object.assign({}, this.modalConfig, options);\r\n    const containerEl = this._document.body;\r\n    const renderer = this._rendererFactory.createRenderer(null, null);\r\n    const removeBodyClass = (): void => {\r\n      if (!this._modalRefs.length) {\r\n        renderer.removeClass(this._document.body, 'modal-open');\r\n        this._revertAriaHidden();\r\n      }\r\n    };\r\n    const activeModal = new ActiveModal();\r\n    const contentRef = this.getContentRef(moduleCFR, content, activeModal);\r\n    const backdropCmptRef: ComponentRef<LuxModalBackdropComponent> =\r\n      config.backdrop ? this._attachBackdrop(moduleCFR, containerEl) : null;\r\n    const windowCmptRef: ComponentRef<LuxModalWindowComponent> =\r\n      this._attachWindowComponent(moduleCFR, containerEl, contentRef);\r\n    const modalRef: ModalRef = new ModalRef(\r\n      windowCmptRef,\r\n      contentRef,\r\n      backdropCmptRef\r\n    );\r\n    this._registerModalRef(modalRef);\r\n    this._registerWindowCmpt(windowCmptRef);\r\n    modalRef.result.then(removeBodyClass, removeBodyClass);\r\n    activeModal.close = (result: any): void => {\r\n      modalRef.close(result);\r\n    };\r\n    activeModal.dismiss = (reason: any): void => {\r\n      modalRef.dismiss(reason);\r\n    };\r\n\r\n    this._applyWindowOptions(windowCmptRef.instance, config);\r\n    if (this._modalRefs.length === 1) {\r\n      renderer.addClass(this._document.body, 'modal-open');\r\n    }\r\n    if (backdropCmptRef && backdropCmptRef.instance) {\r\n      this._applyBackgroundOptions(backdropCmptRef.instance, config);\r\n      backdropCmptRef.changeDetectorRef.detectChanges();\r\n    }\r\n    windowCmptRef.changeDetectorRef.detectChanges();\r\n\r\n    return modalRef;\r\n  }\r\n\r\n  private _applyWindowOptions(\r\n    windowInstance: LuxModalWindowComponent,\r\n    config: LuxModalOptions\r\n  ): void {\r\n    this._windowAttributes.forEach((optionName: string) => {\r\n      if (isDefined(config[optionName])) {\r\n        windowInstance[optionName] = config[optionName];\r\n      }\r\n    });\r\n  }\r\n\r\n  private _applyBackgroundOptions(\r\n    backgroudInstance: LuxModalBackdropComponent,\r\n    config: LuxModalOptions\r\n  ): void {\r\n    this._backdropAttributes.forEach((optionName: string) => {\r\n      if (isDefined(config[optionName])) {\r\n        backgroudInstance[optionName] = config[optionName];\r\n      }\r\n    });\r\n  }\r\n\r\n  private _revertAriaHidden(): void {\r\n    this._ariaHiddenValues.forEach((value, element) => {\r\n      if (value) {\r\n        element.setAttribute('aria-hidden', value);\r\n      } else {\r\n        element.removeAttribute('aria-hidden');\r\n      }\r\n    });\r\n    this._ariaHiddenValues.clear();\r\n  }\r\n\r\n  private getContentRef(\r\n    moduleCFR: ComponentFactoryResolver,\r\n    content: any,\r\n    activeModal: ActiveModal\r\n  ): ContentRef {\r\n    if (content instanceof TemplateRef) {\r\n      return this.createFromTemplateRef(content, activeModal);\r\n    }\r\n  }\r\n\r\n  private createFromTemplateRef(\r\n    content: TemplateRef<any>,\r\n    activeModal: ActiveModal\r\n  ): ContentRef {\r\n    const context = {\r\n      $implicit: activeModal,\r\n\r\n      close(result): void {\r\n        activeModal.close(result);\r\n      },\r\n\r\n      dismiss(reason): void {\r\n        activeModal.dismiss(reason);\r\n      }\r\n    };\r\n    const viewRef = content.createEmbeddedView(context);\r\n    this._applicationRef.attachView(viewRef);\r\n    return new ContentRef([viewRef.rootNodes], viewRef);\r\n  }\r\n\r\n  private _attachBackdrop(\r\n    moduleCFR: ComponentFactoryResolver,\r\n    containerEl: any\r\n  ): ComponentRef<LuxModalBackdropComponent> {\r\n    const backdropFactory = moduleCFR.resolveComponentFactory(\r\n      LuxModalBackdropComponent\r\n    );\r\n    const backdropCmptRef = backdropFactory.create(this._injector);\r\n    this._applicationRef.attachView(backdropCmptRef.hostView);\r\n    containerEl.appendChild(backdropCmptRef.location.nativeElement);\r\n    return backdropCmptRef;\r\n  }\r\n\r\n  private _attachWindowComponent(\r\n    moduleCFR: ComponentFactoryResolver,\r\n    containerEl: any,\r\n    contentRef: any\r\n  ): ComponentRef<LuxModalWindowComponent> {\r\n    const windowFactory = moduleCFR.resolveComponentFactory(\r\n      LuxModalWindowComponent\r\n    );\r\n    const windowCmptRef = windowFactory.create(\r\n      this._injector,\r\n      contentRef.nodes\r\n    );\r\n    this._applicationRef.attachView(windowCmptRef.hostView);\r\n    containerEl.appendChild(windowCmptRef.location.nativeElement);\r\n    return windowCmptRef;\r\n  }\r\n\r\n  private _registerModalRef(modalRef: ModalRef): void {\r\n    const unregisterModalRef = (): void => {\r\n      const index = this._modalRefs.indexOf(modalRef);\r\n      if (index > -1) {\r\n        this._modalRefs.splice(index, 1);\r\n      }\r\n    };\r\n    this._modalRefs.push(modalRef);\r\n    modalRef.result.then(unregisterModalRef, unregisterModalRef);\r\n  }\r\n\r\n  private _registerWindowCmpt(\r\n    windowCmpt: ComponentRef<LuxModalWindowComponent>\r\n  ): void {\r\n    this._windowCmpts.push(windowCmpt);\r\n    this._activeWindowCmptHasChanged.next(null);\r\n\r\n    windowCmpt.onDestroy(() => {\r\n      const index = this._windowCmpts.indexOf(windowCmpt);\r\n      if (index > -1) {\r\n        this._windowCmpts.splice(index, 1);\r\n        this._activeWindowCmptHasChanged.next(null);\r\n      }\r\n    });\r\n  }\r\n\r\n  private _setAriaHidden(element: Element): void {\r\n    const parent = element.parentElement;\r\n    if (parent && element !== this._document.body) {\r\n      Array.from(parent.children).forEach((sibling) => {\r\n        if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\r\n          this._ariaHiddenValues.set(\r\n            sibling,\r\n            sibling.getAttribute('aria-hidden')\r\n          );\r\n          sibling.setAttribute('aria-hidden', 'true');\r\n        }\r\n      });\r\n      this._setAriaHidden(parent);\r\n    }\r\n  }\r\n}\r\n","import {\r\n  ComponentFactoryResolver,\r\n  Injectable,\r\n  TemplateRef,\r\n  inject\r\n} from '@angular/core';\r\nimport { LuxModalOptions } from './modal-config';\r\nimport { ModalRef } from './modal-ref';\r\nimport { ModalStack } from './modal-stack';\r\n\r\n/**\r\n * A service that it allow open an close modal components\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class ModalService {\r\n  private modalStack = inject(ModalStack);\r\n  private moduleCFR = inject(ComponentFactoryResolver);\r\n\r\n  /**Open a modal component\r\n   * @param content TemplateRef\r\n   */\r\n  open(content: TemplateRef<any>, options: LuxModalOptions = {}): ModalRef {\r\n    return this.modalStack.open(this.moduleCFR, content, options);\r\n  }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Observable, of, Subject } from 'rxjs';\r\nimport {\r\n  debounceTime,\r\n  distinctUntilChanged,\r\n  map,\r\n  switchMap\r\n} from 'rxjs/operators';\r\nimport { DataSource } from '../datasource';\r\nimport { GeoPoint } from '../map/geopoint';\r\n\r\ninterface SearchResult {\r\n  place_id: number;\r\n  lat: number;\r\n  lon: number;\r\n  display_name: string;\r\n  icon: string;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GeolocationService {\r\n  private http = inject(HttpClient);\r\n\r\n  private debouncePeriodMs = 300; // ms\r\n  private cacheSize = 20;\r\n  private lastQueriesWithResults = new Map<string, SearchResult[]>();\r\n  private lastQueriesLru: string[] = [];\r\n  private currentSearch$: Subject<string>;\r\n  private currentQuery$: Observable<SearchResult[]>;\r\n\r\n  constructor() {\r\n    this.currentSearch$ = new Subject<string>();\r\n\r\n    const typed$ = this.currentSearch$\r\n      .asObservable()\r\n      .pipe(distinctUntilChanged());\r\n\r\n    this.currentQuery$ = typed$.pipe(\r\n      debounceTime(this.debouncePeriodMs),\r\n\r\n      switchMap((currentQuery) => {\r\n        const data = this.getFromCache(currentQuery);\r\n        if (data !== undefined) {\r\n          return of(data);\r\n        }\r\n        // Nominatim search documentation:\r\n        // https://nominatim.org/release-docs/develop/api/Search/\r\n        const url =\r\n          'https://nominatim.openstreetmap.org/search?format=json&limit=20&q=' +\r\n          encodeURIComponent(currentQuery);\r\n        const headers = {\r\n          'Content-Type': 'application/json'\r\n        };\r\n        this.addToCache(currentQuery, []);\r\n\r\n        return this.http.get(url, { headers }).pipe(\r\n          map((response) => {\r\n            const searchResults = response as unknown as SearchResult[];\r\n            const uniqueResults = distinct(searchResults);\r\n            return this.addToCache(currentQuery, uniqueResults);\r\n          })\r\n        );\r\n      })\r\n    );\r\n  }\r\n\r\n  searchGeolocation(query: string): Observable<SearchResult[]> {\r\n    this.currentSearch$.next(query);\r\n    return this.currentQuery$;\r\n  }\r\n\r\n  getLabels(\r\n    instance: GeolocationService,\r\n    keys: GeoPoint[]\r\n  ): Observable<DataSource<GeoPoint, string>> {\r\n    const searchResults = instance.lastQueriesWithResults\r\n      .get(instance.getLatestQuery())\r\n      .filter((searchResult) => samePosition(searchResult, keys));\r\n    return of(\r\n      searchResults.map((searchResult) => {\r\n        const key: GeoPoint = {\r\n          type: 'Point',\r\n          coordinates: [searchResult.lon, searchResult.lat]\r\n        };\r\n        return {\r\n          key,\r\n          label: searchResult.display_name\r\n        };\r\n      })\r\n    );\r\n  }\r\n\r\n  getData(\r\n    instance: GeolocationService,\r\n    search: string\r\n  ): Observable<DataSource<GeoPoint, string>> {\r\n    return instance.searchGeolocation(search).pipe(\r\n      map((searchResults) =>\r\n        searchResults.map((searchResult) => {\r\n          const key: GeoPoint = {\r\n            type: 'Point',\r\n            coordinates: [searchResult.lon, searchResult.lat]\r\n          };\r\n          const label = searchResult.display_name;\r\n          return { key, label };\r\n        })\r\n      )\r\n    );\r\n  }\r\n\r\n  // Cache implemementation ---\r\n  private getFromCache(query: string): SearchResult[] {\r\n    if (this.lastQueriesWithResults.has(query)) {\r\n      return this.lastQueriesWithResults.get(query);\r\n    }\r\n    return undefined;\r\n  }\r\n  private addToCache(query: string, data: SearchResult[]): SearchResult[] {\r\n    if (this.lastQueriesWithResults.keys.length >= this.cacheSize) {\r\n      const deletedQuery = this.lastQueriesLru[0];\r\n      this.revomeFromCache(deletedQuery);\r\n    }\r\n    this.lastQueriesWithResults.set(query, data);\r\n    this.lastQueriesLru.push(query);\r\n    return data;\r\n  }\r\n  private revomeFromCache(query: string): void {\r\n    this.lastQueriesWithResults.delete(query);\r\n    const index = this.lastQueriesLru.findIndex((it) => it === query);\r\n    this.lastQueriesLru.splice(index, 1);\r\n  }\r\n  private getLatestQuery(): string | null {\r\n    return this.lastQueriesLru.length\r\n      ? this.lastQueriesLru[this.lastQueriesLru.length - 1]\r\n      : null;\r\n  }\r\n  // End cache implemementation ---\r\n}\r\n\r\nconst samePosition = (\r\n  searchResult: SearchResult,\r\n  keys: GeoPoint[]\r\n): boolean => {\r\n  let found = false;\r\n  keys.forEach((item) => {\r\n    if (\r\n      searchResult.lon === item.coordinates[0] &&\r\n      searchResult.lat === item.coordinates[1]\r\n    ) {\r\n      found = true;\r\n    }\r\n  });\r\n  return found;\r\n};\r\n\r\nconst distinct = (data: SearchResult[]): SearchResult[] => {\r\n  const unique: { [key: string]: number } = {};\r\n  return data.filter((r) => {\r\n    if (unique[r.display_name]) {\r\n      return false;\r\n    }\r\n    unique[r.display_name] = 1;\r\n    return true;\r\n  });\r\n};\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  inject,\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  FormsModule,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  ReactiveFormsModule,\r\n  ValidationErrors\r\n} from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { AutocompleteComponent } from '../autocomplete/autocomplete.component';\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 { MapComponent } from '../map/map.component';\r\nimport { ModalService } from '../modal/modal.service';\r\nimport { GeolocationService } from './geolocation.service';\r\n\r\n@Component({\r\n  selector: 'lux-geolocation',\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    AutocompleteComponent,\r\n    MapComponent\r\n  ],\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  private modalService = inject(ModalService);\r\n  locationService = inject(GeolocationService);\r\n\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  // 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\r\n  #latitude\r\n  class=\"rounded-left prefix\"\r\n  [ngClass]=\"className\"\r\n  type=\"number\"\r\n  [id]=\"inputId + '$latitude'\"\r\n  [(ngModel)]=\"latitudeValue\"\r\n  [attr.aria-label]=\"ariaLabel\"\r\n  [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n  [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n  [attr.min]=\"\r\n    minLatitude !== undefined && minLatitude !== null\r\n      ? minLatitude.toString()\r\n      : undefined\r\n  \"\r\n  [attr.max]=\"\r\n    maxLatitude !== undefined && maxLatitude !== null\r\n      ? maxLatitude.toString()\r\n      : undefined\r\n  \"\r\n  [attr.step]=\"\r\n    step !== undefined && step !== null ? step.toString() : undefined\r\n  \"\r\n  [placeholder]=\"i18n[lang].lat\"\r\n  (keyup)=\"onEventLatitude(latitude.value)\"\r\n  (change)=\"onEventLatitude(latitude.value)\"\r\n  (keypress)=\"onKeyPress($event)\"\r\n  (blur)=\"onLostFocus()\"\r\n/>\r\n<div\r\n  class=\"infix symbol monospace clickable\"\r\n  [ngClass]=\"className\"\r\n  (click)=\"openModalMap(modalMap)\"\r\n>\r\n  @if (isValidNumber(latitudeValue) && latitudeValue >= 0) {\r\n  <span>{{ i18n[lang].cardinalPoints.north }}</span>\r\n  } @if (isValidNumber(latitudeValue) && latitudeValue < 0) {\r\n  <span>{{ i18n[lang].cardinalPoints.south }}</span>\r\n  } @if (!isValidNumber(latitudeValue)) {\r\n  <span>-</span>\r\n  }\r\n</div>\r\n<input\r\n  #longitude\r\n  class=\"prefix\"\r\n  [ngClass]=\"className\"\r\n  type=\"number\"\r\n  [id]=\"inputId + '$longitude'\"\r\n  [(ngModel)]=\"longitudeValue\"\r\n  [attr.aria-label]=\"ariaLabel\"\r\n  [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n  [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n  [attr.min]=\"\r\n    minLongitude !== undefined && minLongitude !== null\r\n      ? minLongitude.toString()\r\n      : undefined\r\n  \"\r\n  [attr.max]=\"\r\n    maxLongitude !== undefined && maxLongitude !== null\r\n      ? maxLongitude.toString()\r\n      : undefined\r\n  \"\r\n  [attr.step]=\"\r\n    step !== undefined && step !== null ? step.toString() : undefined\r\n  \"\r\n  [placeholder]=\"i18n[lang].lon\"\r\n  (keyup)=\"onEventLongitude(longitude.value)\"\r\n  (change)=\"onEventLongitude(longitude.value)\"\r\n  (keypress)=\"onKeyPress($event)\"\r\n  (blur)=\"onLostFocus()\"\r\n/>\r\n<div\r\n  class=\"infix symbol monospace clickable\"\r\n  [ngClass]=\"className\"\r\n  (click)=\"openModalMap(modalMap)\"\r\n>\r\n  @if (isValidNumber(longitudeValue) && longitudeValue >= 0) {\r\n  <span>{{ i18n[lang].cardinalPoints.east }}</span>\r\n  } @if (isValidNumber(longitudeValue) && longitudeValue < 0) {\r\n  <span>{{ i18n[lang].cardinalPoints.west }}</span>\r\n  } @if (!isValidNumber(longitudeValue)) {\r\n  <span>-</span>\r\n  }\r\n</div>\r\n<div\r\n  [class]=\"\r\n    disabled || readonly || !isClearable()\r\n      ? 'clickable rounded-right postfix symbol'\r\n      : 'clickable postfix symbol'\r\n  \"\r\n  [ngClass]=\"className\"\r\n  (click)=\"openModalMap(modalMap)\"\r\n>\r\n  <span class=\"icon-globe\"></span>\r\n</div>\r\n@if (!disabled && !readonly && isClearable()) {\r\n<button\r\n  #clearButton\r\n  class=\"rounded-right postfix bordered icon icon-clear\"\r\n  [id]=\"inputId + '$clear'\"\r\n  type=\"button\"\r\n  (click)=\"clear()\"\r\n  aria-label=\"clear\"\r\n></button>\r\n} @if (inlineErrors && lastErrors && (dirty || touched)) {\r\n<div class=\"alert\">\r\n  @if (lastErrors.required) {\r\n  <div>\r\n    {{ i18n[lang].userErrors.required }}\r\n  </div>\r\n  } @if (lastErrors.minLatitude) {\r\n  <div>\r\n    {{\r\n      i18n[lang].userErrors.minLatitude.replace(\r\n        '$minLatitude',\r\n        lastErrors.minLatitude.min\r\n      )\r\n    }}\r\n  </div>\r\n  } @if (lastErrors.maxLatitude) {\r\n  <div>\r\n    {{\r\n      i18n[lang].userErrors.maxLatitude.replace(\r\n        '$maxLatitude',\r\n        lastErrors.maxLatitude.max\r\n      )\r\n    }}\r\n  </div>\r\n  } @if (lastErrors.minLongitude) {\r\n  <div>\r\n    {{\r\n      i18n[lang].userErrors.minLongitude.replace(\r\n        '$minLongitude',\r\n        lastErrors.minLongitude.min\r\n      )\r\n    }}\r\n  </div>\r\n  } @if (lastErrors.maxLongitude) {\r\n  <div>\r\n    {{\r\n      i18n[lang].userErrors.maxLongitude.replace(\r\n        '$maxLongitude',\r\n        lastErrors.maxLongitude.max\r\n      )\r\n    }}\r\n  </div>\r\n  }\r\n</div>\r\n}\r\n\r\n<ng-template #modalMap let-modal>\r\n  <div class=\"lux-modal-header\">\r\n    <h4 class=\"modal-title default-font\" id=\"modal-basic-title\">\r\n      {{ mapTitle }}\r\n    </h4>\r\n    <button\r\n      type=\"button\"\r\n      class=\"close\"\r\n      aria-label=\"Close\"\r\n      (click)=\"modal.dismiss('Cross click')\"\r\n    >\r\n      <span aria-hidden=\"true\">×</span>\r\n    </button>\r\n  </div>\r\n  <div class=\"lux-modal-body content\">\r\n    @if (!disabled && !readonly) {\r\n    <lux-autocomplete\r\n      #searchBar\r\n      [attr.aria-label]=\"i18n[lang].typeToSearch\"\r\n      [placeholder]=\"i18n[lang].typeToSearch\"\r\n      [instance]=\"self\"\r\n      [resolveLabelsFunction]=\"getLabels\"\r\n      [populateFunction]=\"getData\"\r\n      (valueChange)=\"onSearchLocationChanged(searchBar.value, map)\"\r\n    ></lux-autocomplete>\r\n    }\r\n    <div class=\"map-container\">\r\n      <lux-map\r\n        #map\r\n        [center]=\"value\"\r\n        [markerPoint]=\"value\"\r\n        [zoom]=\"zoom\"\r\n        [readonly]=\"readonly === true || disabled === true ? true : false\"\r\n      ></lux-map>\r\n    </div>\r\n  </div>\r\n  <div class=\"lux-modal-footer\">\r\n    @if (disabled || readonly) {\r\n    <button\r\n      type=\"button\"\r\n      class=\"btn btn-cancel\"\r\n      (click)=\"modal.close('cancel')\"\r\n    >\r\n      {{ i18n[lang].closeAction }}\r\n    </button>\r\n    } @if (!disabled && !readonly) {\r\n    <button\r\n      type=\"button\"\r\n      class=\"btn btn-cancel\"\r\n      (click)=\"modal.close('cancel')\"\r\n    >\r\n      {{ i18n[lang].cancelAction }}\r\n    </button>\r\n    } @if (!disabled && !readonly) {\r\n    <button\r\n      type=\"button\"\r\n      class=\"btn btn-select\"\r\n      (click)=\"modal.close(map.markerPoint.coordinates)\"\r\n    >\r\n      {{ i18n[lang].selectAction }}\r\n    </button>\r\n    }\r\n  </div>\r\n</ng-template>\r\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 { CommonModule } from '@angular/common';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  forwardRef,\r\n  inject\r\n} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  ControlValueAccessor,\r\n  FormsModule,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  ValidationErrors,\r\n  Validator\r\n} from '@angular/forms';\r\nimport {\r\n  hasValue,\r\n  isInitialAndEmpty,\r\n  isValidColor,\r\n  isValidEmail,\r\n  isValidNumber,\r\n  isValidRelativeUrl,\r\n  normalizeDate\r\n} from '../helperFns';\r\nimport { languageDetector } from '../lang';\r\nimport { RegexpService } from './regexp.service';\r\n@Component({\r\n  selector: 'lux-input',\r\n  templateUrl: './input.component.html',\r\n  styleUrls: ['./input.component.scss'],\r\n  imports: [CommonModule, FormsModule],\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  regexpService = inject(RegexpService);\r\n  private cdr = inject(ChangeDetectorRef);\r\n\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 = false;\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    this.cdr.markForCheck();\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  // 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","@if (currency && currency === 'USD') {\r\n<div class=\"prefix rounded-left symbol\" [ngClass]=\"className\">\r\n  <span>$</span>\r\n</div>\r\n} @if (type !== 'textarea') {\r\n<input\r\n  #input\r\n  [class]=\"\r\n    hasPrefix()\r\n      ? hasPostfix()\r\n        ? 'infix'\r\n        : 'postfix rounded-right'\r\n      : hasPostfix()\r\n      ? 'prefix rounded-left'\r\n      : 'rounded'\r\n  \"\r\n  [ngClass]=\"className\"\r\n  placement=\"top\"\r\n  [id]=\"inputId\"\r\n  [type]=\"domain\"\r\n  [attr.value]=\"value\"\r\n  [attr.aria-label]=\"ariaLabel\"\r\n  [disabled]=\"disabled === true\"\r\n  [readonly]=\"readonly === true\"\r\n  [attr.min]=\"min?.toString() || undefined\"\r\n  [attr.max]=\"max?.toString() || undefined\"\r\n  [attr.step]=\"step?.toString() || undefined\"\r\n  [attr.pattern]=\"pattern || undefined\"\r\n  [placeholder]=\"placeholder\"\r\n  (keyup)=\"onKeyUp(input.value)\"\r\n  (change)=\"onChangeValue(input.value)\"\r\n  (keypress)=\"onKeyPress($event)\"\r\n  (blur)=\"onLostFocus()\"\r\n/>\r\n} @if (type === 'textarea') {\r\n<textarea\r\n  #textarea\r\n  class=\"rounded\"\r\n  [ngClass]=\"className\"\r\n  placement=\"top\"\r\n  [id]=\"inputId\"\r\n  [attr.value]=\"value\"\r\n  [attr.aria-label]=\"ariaLabel\"\r\n  [disabled]=\"disabled === true\"\r\n  [readonly]=\"readonly === true\"\r\n  [attr.cols]=\"cols?.toString() || undefined\"\r\n  [attr.rows]=\"rows?.toString() || undefined\"\r\n  [placeholder]=\"placeholder\"\r\n  (keyup)=\"onKeyUp(textarea.value)\"\r\n  (change)=\"onChangeValue(textarea.value)\"\r\n  (keypress)=\"onKeyPress($event)\"\r\n  (blur)=\"onLostFocus()\"\r\n></textarea>\r\n} @if (currency && currency === 'EUR') {\r\n<div class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\r\n  <span>€</span>\r\n</div>\r\n} @if (isPercentage()) {\r\n<div class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\r\n  <span>%</span>\r\n</div>\r\n} @if (isPermillage()) {\r\n<div class=\"postfix rounded-right symbol\" [ngClass]=\"className\">\r\n  <span>‰</span>\r\n</div>\r\n} @if (isUrl() && !!value) {\r\n<div class=\"postfix rounded-right symbol clickable\" [ngClass]=\"className\">\r\n  <a href=\"{{ value }}\" target=\"_blank\">\r\n    <span class=\"icon-external\"></span>\r\n  </a>\r\n</div>\r\n} @if (isColor()) {\r\n<div class=\"postfix rounded-right bordered transparency\" [ngClass]=\"className\">\r\n  <div\r\n    class=\"rounded-right full-space\"\r\n    [ngStyle]=\"{ 'background-color': color }\"\r\n  >\r\n    <input\r\n      #colorpicker\r\n      class=\"minimal-space clickable invisible rounded-right full-space\"\r\n      [id]=\"inputId + '$colorpicker'\"\r\n      type=\"color\"\r\n      [attr.value]=\"value\"\r\n      [attr.disabled]=\"disabled === true ? 'true' : undefined\"\r\n      [attr.readonly]=\"readonly === true ? 'true' : undefined\"\r\n      (change)=\"onColorPicked(colorpicker.value)\"\r\n      (keypress)=\"onKeyPress($event)\"\r\n      (blur)=\"onLostFocus()\"\r\n    />\r\n  </div>\r\n</div>\r\n} @if (inlineErrors && lastErrors && (dirty || touched)) {\r\n<div class=\"alert\">\r\n  @if (lastErrors.required) {\r\n  <div>\r\n    {{ userErrors[this.lang].required }}\r\n  </div>\r\n  } @if (lastErrors.email) {\r\n  <div>{{ userErrors[this.lang].email }}</div>\r\n  } @if (lastErrors.url) {\r\n  <div>{{ userErrors[this.lang].url }}</div>\r\n  } @if (lastErrors.min) {\r\n  <div>\r\n    {{ userErrors[this.lang].min.replace('$min', lastErrors.min.min) }}\r\n  </div>\r\n  } @if (lastErrors.max) {\r\n  <div>\r\n    {{ userErrors[this.lang].max.replace('$max', lastErrors.max.max) }}\r\n  </div>\r\n  }\r\n</div>\r\n}\r\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","\r\nimport { 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  selector: 'lux-tooltip',\r\n  imports: [],\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 {\r\n  ApplicationRef,\r\n  ComponentFactoryResolver,\r\n  ComponentRef,\r\n  ElementRef,\r\n  EmbeddedViewRef,\r\n  Injectable,\r\n  Injector,\r\n  TemplateRef,\r\n  inject\r\n} from '@angular/core';\r\n\r\nimport { Placement, PlacementValue } from './placement';\r\nimport { LuxTooltipContext } from './tooltip-context';\r\nimport { TooltipComponent } from './tooltip.component';\r\nimport { TooltipContentRef } from './tooltop-content';\r\n\r\n@Injectable()\r\nexport class TooltipService {\r\n  private _injector = inject(Injector);\r\n  private _crf = inject(ComponentFactoryResolver);\r\n  private _applicationRef = inject(ApplicationRef);\r\n\r\n  appendComponentToBody(\r\n    content: any,\r\n    elHost: ElementRef,\r\n    placement: PlacementValue\r\n  ): TooltipContentRef {\r\n    const tooltipContentRef = this.getTooltipContentRef(content);\r\n    if (tooltipContentRef) {\r\n      let domElem = (tooltipContentRef.viewRef as EmbeddedViewRef<any>)\r\n        .rootNodes[0];\r\n      document.body.appendChild(domElem);\r\n      if (tooltipContentRef.componentRef) {\r\n        tooltipContentRef.componentRef.changeDetectorRef.detectChanges();\r\n      }\r\n      domElem = this.setStyle(domElem, placement);\r\n      domElem = this.setPosition(domElem, elHost, placement);\r\n      return tooltipContentRef;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  removeComponentFromBody(tooltipContentRef: TooltipContentRef): void {\r\n    this._applicationRef.detachView(tooltipContentRef.viewRef);\r\n    if (tooltipContentRef.componentRef) {\r\n      tooltipContentRef.componentRef.destroy();\r\n    }\r\n  }\r\n\r\n  private getTooltipContentRef(content: any): TooltipContentRef {\r\n    if (!content) {\r\n      // nothing to show\r\n    } else if (content instanceof TemplateRef) {\r\n      return this.createFromTemplateRef(content);\r\n    } else if (typeof content === 'string') {\r\n      return this.createFromComponent(TooltipComponent, { message: content });\r\n    } else {\r\n      return this.createFromComponent(content);\r\n    }\r\n  }\r\n\r\n  private createFromTemplateRef(content: TemplateRef<any>): TooltipContentRef {\r\n    const viewRef = content.createEmbeddedView({});\r\n    this._applicationRef.attachView(viewRef);\r\n    return new TooltipContentRef(viewRef);\r\n  }\r\n\r\n  private createFromComponent(\r\n    component: any,\r\n    context?: LuxTooltipContext\r\n  ): TooltipContentRef {\r\n    const componentRef: ComponentRef<any> = this._crf\r\n      .resolveComponentFactory(component)\r\n      .create(this._injector);\r\n    if (context) {\r\n      componentRef.instance.context = context;\r\n    }\r\n    this._applicationRef.attachView(componentRef.hostView);\r\n    return new TooltipContentRef(componentRef.hostView, componentRef);\r\n  }\r\n\r\n  private setStyle(\r\n    domElem: HTMLElement,\r\n    placement: PlacementValue\r\n  ): HTMLElement {\r\n    domElem.style.position = 'absolute';\r\n    domElem.style.minWidth = 'min-content';\r\n    domElem.style.minHeight = 'min-content';\r\n    const tooltipElement = this.getTooltipElementFromHTMLElemnt(domElem);\r\n    placement =\r\n      placement !== undefined\r\n        ? (placement.toLocaleLowerCase() as PlacementValue)\r\n        : 'top'; // 'Top' is the default value of placement\r\n    tooltipElement.classList.add(`lux-tooltip-${placement}`);\r\n    tooltipElement.classList.add('lux-tooltip-show');\r\n    return domElem;\r\n  }\r\n\r\n  private getTooltipElementFromHTMLElemnt(domElem: HTMLElement): any {\r\n    const elementsArray = Array.from(domElem.classList).filter(\r\n      (className) => className === 'lux-tooltip'\r\n    );\r\n    if (elementsArray.length !== 0) {\r\n      return domElem;\r\n    } else if (domElem.hasChildNodes()) {\r\n      const childrenArray = Array.from(domElem.children).filter(\r\n        (child) =>\r\n          this.getTooltipElementFromHTMLElemnt(child as HTMLElement) !== null\r\n      );\r\n      if (childrenArray.length !== 0) {\r\n        return this.getTooltipElementFromHTMLElemnt(\r\n          childrenArray[0] as HTMLElement\r\n        );\r\n      } else {\r\n        return null;\r\n      }\r\n    } else {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  private setPosition(\r\n    domElem: HTMLElement,\r\n    elHost: ElementRef,\r\n    placement: PlacementValue\r\n  ): HTMLElement {\r\n    const hostPos = elHost.nativeElement.getBoundingClientRect();\r\n    const tooltipPos = domElem.getBoundingClientRect();\r\n    const scrollPos =\r\n      window.pageYOffset ||\r\n      document.documentElement.scrollTop ||\r\n      document.body.scrollTop ||\r\n      0;\r\n    let top = 0;\r\n    let left = 0;\r\n    const offset = 10;\r\n\r\n    switch (placement) {\r\n      case Placement.Bottom:\r\n        top = hostPos.bottom + offset;\r\n        left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n        break;\r\n      case Placement.Left:\r\n        top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n        left = hostPos.left - tooltipPos.width - offset;\r\n        break;\r\n      case Placement.Right:\r\n        top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n        left = hostPos.right + offset;\r\n        break;\r\n      case Placement.Top:\r\n      default:\r\n        top = hostPos.top - tooltipPos.height - offset;\r\n        left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n        break;\r\n    }\r\n    top = Math.max(0, top);\r\n    left = Math.max(0, left);\r\n    domElem.style.top = `${top + scrollPos}px`;\r\n    domElem.style.left = `${left}px`;\r\n    return domElem;\r\n  }\r\n}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  HostListener,\r\n  Input,\r\n  inject\r\n} from '@angular/core';\r\n\r\nimport { PlacementValue } from './placement';\r\nimport { TooltipService } from './tooltip.service';\r\nimport { TooltipContentRef } from './tooltop-content';\r\n\r\n/**\r\n * Tooltip directive\r\n */\r\n@Directive({\r\n  selector: '[luxTooltip]',\r\n  standalone: true,\r\n  providers: [TooltipService]\r\n})\r\nexport class LuxTooltipDirective {\r\n  private elHost = inject(ElementRef);\r\n  private tooltipService = inject(TooltipService);\r\n\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  @HostListener('mouseenter') onMouseEnter(): void {\r\n    if (!this.tooltipRef) {\r\n      // Use luxTooltip if provided, otherwise use content\r\n      const tooltipContent = this.luxTooltip || this.content;\r\n      if (tooltipContent) {\r\n        this.tooltipRef = this.show(\r\n          tooltipContent,\r\n          this.elHost,\r\n          this.placement\r\n        );\r\n      }\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 { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { languageDetector } from '../lang';\r\nimport { LuxTooltipDirective } from '../tooltip/tooltip.directive';\r\nimport { PaginationInfo } from './pagination';\r\n\r\n@Component({\r\n  selector: 'lux-pagination',\r\n  imports: [CommonModule, FormsModule, LuxTooltipDirective],\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","@if (showPagination) {\r\n<div class=\"lux-pagination\">\r\n  @if (!hidePrevious) {\r\n  <a\r\n    luxTooltip\r\n    [content]=\"first\"\r\n    placement=\"top\"\r\n    delay=\"500\"\r\n    (click)=\"onFirst()\"\r\n    [ngClass]=\"{\r\n      enabledFirstLast: !hidePrevious\r\n    }\"\r\n    class=\"button-pagination icon arrow-left-end\"\r\n  ></a>\r\n  <a\r\n    luxTooltip\r\n    [content]=\"previous\"\r\n    placement=\"top\"\r\n    delay=\"500\"\r\n    (click)=\"onPrevious()\"\r\n    [ngClass]=\"{\r\n      enabledFirstLast: !hidePrevious\r\n    }\"\r\n    class=\"button-pagination icon arrow-left\"\r\n  ></a>\r\n  } @if (displayPreviousEllipsis) {\r\n  <span class=\"ellipsis\">...</span>\r\n  } @for (pageNum of pages; track pageNum) {\r\n  <a\r\n    placement=\"top\"\r\n    delay=\"500\"\r\n    [ngClass]=\"{\r\n      disabled: pageNum === paginationInfo.page,\r\n      enabled: pageNum !== paginationInfo.page\r\n    }\"\r\n    class=\"button-pagination\"\r\n    (click)=\"onPage(pageNum)\"\r\n    >{{ pageNum + 1 }}</a\r\n  >\r\n  } @if (displayNextEllipsis) {\r\n  <span class=\"ellipsis\">...</span>\r\n  } @if (!lastPage) {\r\n  <a\r\n    luxTooltip\r\n    [content]=\"next\"\r\n    placement=\"top\"\r\n    delay=\"500\"\r\n    (click)=\"onNext()\"\r\n    [ngClass]=\"{\r\n      enabledFirstLast: !lastPage\r\n    }\"\r\n    class=\"button-pagination icon arrow-right\"\r\n  ></a>\r\n  <a\r\n    luxTooltip\r\n    [content]=\"last\"\r\n    placement=\"top\"\r\n    delay=\"500\"\r\n    (click)=\"onLast()\"\r\n    [ngClass]=\"{\r\n      enabledFirstLast: !lastPage\r\n    }\"\r\n    class=\"button-pagination icon arrow-right-end\"\r\n  ></a>\r\n  }\r\n</div>\r\n}\r\n","\r\nimport {\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  selector: 'lux-radiogroup',\r\n  imports: [],\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\" [class.disabled]=\"disabled || readonly\">\r\n  @for (item of items; track item.value; let first = $first; let last = $last) {\r\n  <div\r\n    [class.radio-start]=\"first\"\r\n    [class.radio-end]=\"last\"\r\n    class=\"radio-item\"\r\n    [class.selected]=\"item.value === value\"\r\n    (click)=\"setValue($event, item)\"\r\n  >\r\n    <input\r\n      [id]=\"item.name\"\r\n      type=\"radio\"\r\n      [name]=\"name\"\r\n      [attr.disabled]=\"disabled || null\"\r\n      [attr.readonly]=\"readonly || null\"\r\n      [value]=\"item.value\"\r\n    />\r\n    <label [for]=\"item.name\" class=\"unselectable\">{{ item.label }}</label>\r\n  </div>\r\n  }\r\n</div>\r\n","\r\nimport {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\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\nimport { InputComponent } from '../input/input.component';\r\n\r\nlet sequencer = 0;\r\n\r\n@Component({\r\n  selector: 'lux-select',\r\n  imports: [InputComponent],\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\">\r\n  <ul class=\"list\">\r\n    @for (item of value; track i; let i = $index) {\r\n    <li>\r\n      <span>{{ item }}</span>\r\n      @if (!disabled) {\r\n      <button\r\n        class=\"remove\"\r\n        type=\"button\"\r\n        (click)=\"remove(i)\"\r\n        [attr.aria-label]=\"'Remove ' + item\"\r\n      >\r\n        Remove\r\n      </button>\r\n      }\r\n    </li>\r\n    }\r\n  </ul>\r\n  @if (!disabled) {\r\n  <div class=\"add-new-item\">\r\n    <lux-input\r\n      id=\"{{ id + 'addNew' }}\"\r\n      type=\"string\"\r\n      [placeholder]=\"placeholder\"\r\n      [attr.aria-label]=\"placeholder\"\r\n      [disabled]=\"disabled\"\r\n      [(value)]=\"newEntry\"\r\n      (keyPress)=\"onKeyPress($event)\"\r\n      (valueChange)=\"onChangeNewEntry($event)\"\r\n    >\r\n    </lux-input>\r\n    @if (canAdd) {\r\n    <div>\r\n      @if (isValidNewEntry) {\r\n      <button type=\"button\" (click)=\"add(newEntry)\">Add</button>\r\n      }\r\n    </div>\r\n    }\r\n    <div class=\"error\">\r\n      {{ error }}\r\n    </div>\r\n  </div>\r\n  }\r\n</div>\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  Input,\r\n  OnInit,\r\n  Renderer2,\r\n  inject\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[luxVoiceRecognition]'\r\n})\r\nexport class VoiceRecognitionDirective implements OnInit {\r\n  private el = inject(ElementRef);\r\n  private renderer = inject(Renderer2);\r\n\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() {\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';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AutocompleteListComponent } from './autocomplete-list/autocomplete-list.component';\r\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\r\nimport { LuxBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\r\nimport { CheckboxComponent } from './checkbox/checkbox.component';\r\nimport { DatetimeComponent } from './datetime/datetime.component';\r\nimport { FilterComponent } from './filter/filter.component';\r\nimport { GeolocationComponent } from './geolocation/geolocation.component';\r\nimport { InputComponent } from './input/input.component';\r\nimport { MapComponent } from './map/map.component';\r\nimport { LuxModalBackdropComponent } from './modal/modal-backdrop';\r\nimport { LuxModalWindowComponent } from './modal/modal-window';\r\nimport { ModalService } from './modal/modal.service';\r\nimport { PaginationComponent } from './pagination/pagination.component';\r\nimport { RadiogroupComponent } from './radiogroup/radiogroup.component';\r\nimport { SelectComponent } from './select/select.component';\r\nimport { TooltipComponent } from './tooltip/tooltip.component';\r\nimport { LuxTooltipDirective } from './tooltip/tooltip.directive';\r\nimport { TooltipService } from './tooltip/tooltip.service';\r\nimport { VoiceRecognitionDirective } from './voice-recognition/voice-recognition.directive';\r\nimport { WINDOW_PROVIDERS } from './window/window.service';\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  providers: [ModalService, TooltipService, WINDOW_PROVIDERS],\r\n  imports: [\r\n    FormsModule,\r\n    FilterComponent,\r\n    GeolocationComponent,\r\n    InputComponent,\r\n    AutocompleteListComponent,\r\n    AutocompleteComponent,\r\n    CheckboxComponent,\r\n    DatetimeComponent,\r\n    LuxBreadcrumbComponent,\r\n    LuxTooltipDirective,\r\n    LuxModalWindowComponent,\r\n    LuxModalBackdropComponent,\r\n    MapComponent,\r\n    PaginationComponent,\r\n    RadiogroupComponent,\r\n    HttpClientModule,\r\n    ReactiveFormsModule,\r\n    RouterModule,\r\n    SelectComponent,\r\n    CommonModule,\r\n    TooltipComponent,\r\n    VoiceRecognitionDirective\r\n  ],\r\n  exports: [\r\n    AutocompleteComponent,\r\n    AutocompleteListComponent,\r\n    FilterComponent,\r\n    CheckboxComponent,\r\n    DatetimeComponent,\r\n    InputComponent,\r\n    GeolocationComponent,\r\n    LuxTooltipDirective,\r\n    MapComponent,\r\n    SelectComponent,\r\n    PaginationComponent,\r\n    RadiogroupComponent,\r\n    VoiceRecognitionDirective\r\n  ]\r\n})\r\nexport class LuxModule {}\r\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","i1","i2"],"mappings":"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"}