{"version":3,"file":"ngx-danisoft-utils.mjs","sources":["../../../projects/ngx-danisoft-utils/src/lib/interfaces/utils-spinner-config.ts","../../../projects/ngx-danisoft-utils/src/lib/enums/utils-spinner.enum.ts","../../../projects/ngx-danisoft-utils/src/lib/services/utils-spinner.service.ts","../../../projects/ngx-danisoft-utils/src/lib/pipes/utils-safe-html.pipe.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-spinner/utils-spinner.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-spinner/utils-spinner.component.html","../../../projects/ngx-danisoft-utils/src/lib/modules/utils-spinner.module.ts","../../../projects/ngx-danisoft-utils/src/lib/services/utils-pagination.service.ts","../../../projects/ngx-danisoft-utils/src/lib/pipes/utlils-paginate.pipe.ts","../../../projects/ngx-danisoft-utils/src/lib/directives/utils-pagination.directive.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-pagination/utils-pagination.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-pagination/utils-pagination.component.html","../../../projects/ngx-danisoft-utils/src/lib/modules/utils-pagination.module.ts","../../../projects/ngx-danisoft-utils/src/lib/pipes/utils-highlight.pipe.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-autocomplete/utils-autocomplete.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-autocomplete/utils-autocomplete.component.html","../../../projects/ngx-danisoft-utils/src/lib/modules/utils-autocomplete.module.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-toastr/portal/portal.ts","../../../projects/ngx-danisoft-utils/src/lib/interfaces/toast-ref.ts","../../../projects/ngx-danisoft-utils/src/lib/interfaces/toastr-interface.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-toastr/portal/dom-portal-host.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-toastr/overlay/overlay-ref.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-toastr/overlay/overlay-container.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-toastr/overlay/overlay.ts","../../../projects/ngx-danisoft-utils/src/lib/services/utils-toastr.service.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-toastr/utils-toastr.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-toastr/utils-toastr.component.html","../../../projects/ngx-danisoft-utils/src/lib/modules/utils-toastr.module.ts","../../../projects/ngx-danisoft-utils/src/lib/directives/utils-native-element-injector.directive.ts","../../../projects/ngx-danisoft-utils/src/lib/pipes/utils.truncate.pipe.ts","../../../projects/ngx-danisoft-utils/src/lib/components/ngx-danisoft-utils/ngx-danisoft-utils.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/ngx-danisoft-utils/ngx-danisoft-utils.component.html","../../../projects/ngx-danisoft-utils/src/lib/enums/country-iso.enum.ts","../../../projects/ngx-danisoft-utils/src/lib/data/country-code.ts","../../../projects/ngx-danisoft-utils/src/lib/enums/search-country-field.enum.ts","../../../projects/ngx-danisoft-utils/src/lib/validator/ngx-intl-tel-input.validator.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-intl-tel-input/utils-intl-tel-input.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-intl-tel-input/utils-intl-tel-input.component.html","../../../projects/ngx-danisoft-utils/src/lib/utils/keyboard-util.ts","../../../projects/ngx-danisoft-utils/src/lib/pipes/utils-keys.pipe.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-otp-input/utils-otp-input.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-otp-input/utils-otp-input.component.html","../../../projects/ngx-danisoft-utils/src/lib/services/ngx-danisoft-utils.service.ts","../../../projects/ngx-danisoft-utils/src/lib/pipes/utils-customCurrency.pipe.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-ui-table-sorter/utils-ui-table-sorter.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-ui-table-sorter/utils-ui-table-sorter.component.html","../../../projects/ngx-danisoft-utils/src/lib/modules/ngx-danisoft-utils.module.ts","../../../projects/ngx-danisoft-utils/src/lib/helpers/helpers.ts","../../../projects/ngx-danisoft-utils/src/lib/interfaces/dropzone.interface.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-dropzone-preview/utils-dropzone-remove-badge/utils-dropzone-remove-badge.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-dropzone-preview/utils-dropzone-remove-badge/utils-dropzone-remove-badge.component.html","../../../projects/ngx-danisoft-utils/src/lib/components/utils-dropzone-preview/utils-dropzone-preview.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-dropzone-preview/utils-dropzone-preview.component.html","../../../projects/ngx-danisoft-utils/src/lib/components/utils-dropzone-preview/utils-dropzone-image-preview/utils-dropzone-image-preview.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-dropzone-preview/utils-dropzone-image-preview/utils-dropzone-image-preview.component.html","../../../projects/ngx-danisoft-utils/src/lib/services/utils-dropzone.service.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-dropzone/utils-dropzone.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-dropzone/utils-dropzone.component.html","../../../projects/ngx-danisoft-utils/src/lib/directives/utils-dropzone-label.directive.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-dropzone-preview/utils-dropzone-video-preview/utils-dropzone-video-preview.component.ts","../../../projects/ngx-danisoft-utils/src/lib/components/utils-dropzone-preview/utils-dropzone-video-preview/utils-dropzone-video-preview.component.html","../../../projects/ngx-danisoft-utils/src/lib/modules/utils-dropzone.module.ts","../../../projects/ngx-danisoft-utils/src/lib/services/utils-storage.service.ts","../../../projects/ngx-danisoft-utils/src/lib/services/utils-local-storage.service.ts","../../../projects/ngx-danisoft-utils/src/lib/services/utils-session-torage.service.ts","../../../projects/ngx-danisoft-utils/src/lib/services/utils-http-client.service.ts","../../../projects/ngx-danisoft-utils/src/lib/directives/utils-toast.directive.ts","../../../projects/ngx-danisoft-utils/src/lib/enums/phone-number-format.enum.ts","../../../projects/ngx-danisoft-utils/src/lib/models/opt-config.model.ts","../../../projects/ngx-danisoft-utils/src/public-api.ts","../../../projects/ngx-danisoft-utils/src/ngx-danisoft-utils.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface UtilsSpinnerConfig {\n  type?: string;\n}\n\nexport const UTILS_SPINNER_CONFIG = new InjectionToken<UtilsSpinnerConfig>(\n  'UTILS_SPINNER_CONFIG'\n);\n","export const LOADERS = {\n  'ball-8bits': 16,\n  'ball-atom': 4,\n  'ball-beat': 3,\n  'ball-circus': 5,\n  'ball-climbing-dot': 4,\n  'ball-clip-rotate': 1,\n  'ball-clip-rotate-multiple': 2,\n  'ball-clip-rotate-pulse': 2,\n  'ball-elastic-dots': 5,\n  'ball-fall': 3,\n  'ball-fussion': 4,\n  'ball-grid-beat': 9,\n  'ball-grid-pulse': 9,\n  'ball-newton-cradle': 4,\n  'ball-pulse': 3,\n  'ball-pulse-rise': 5,\n  'ball-pulse-sync': 3,\n  'ball-rotate': 1,\n  'ball-running-dots': 5,\n  'ball-scale': 1,\n  'ball-scale-multiple': 3,\n  'ball-scale-pulse': 2,\n  'ball-scale-ripple': 1,\n  'ball-scale-ripple-multiple': 3,\n  'ball-spin': 8,\n  'ball-spin-clockwise': 8,\n  'ball-spin-clockwise-fade': 8,\n  'ball-spin-clockwise-fade-rotating': 8,\n  'ball-spin-fade': 8,\n  'ball-spin-fade-rotating': 8,\n  'ball-spin-rotate': 2,\n  'ball-square-clockwise-spin': 8,\n  'ball-square-spin': 8,\n  'ball-triangle-path': 3,\n  'ball-zig-zag': 2,\n  'ball-zig-zag-deflect': 2,\n  cog: 1,\n  'cube-transition': 2,\n  fire: 3,\n  'line-scale': 5,\n  'line-scale-party': 5,\n  'line-scale-pulse-out': 5,\n  'line-scale-pulse-out-rapid': 5,\n  'line-spin-clockwise-fade': 8,\n  'line-spin-clockwise-fade-rotating': 8,\n  'line-spin-fade': 8,\n  'line-spin-fade-rotating': 8,\n  pacman: 6,\n  'square-jelly-box': 2,\n  'square-loader': 1,\n  'square-spin': 1,\n  timer: 1,\n  'triangle-skew-spin': 1,\n};\n\nexport const DEFAULTS = {\n  BD_COLOR: 'rgba(51,51,51,0.8)',\n  SPINNER_COLOR: '#fff',\n  Z_INDEX: 99999,\n};\n\nexport const PRIMARY_SPINNER = 'primary';\n\nexport type Size = 'default' | 'small' | 'medium' | 'large';\n\nexport interface Spinner {\n  bdColor?: string;\n  size?: Size;\n  color?: string;\n  type?: string;\n  fullScreen?: boolean;\n  zIndex?: number;\n  template?: string;\n  showSpinner?: boolean;\n}\n\nexport class UtilSpinner {\n  name!: string;\n  bdColor!: string;\n  size!: Size;\n  color!: string;\n  type!: string;\n  class!: string;\n  divCount!: number;\n  divArray!: Array<number>;\n  fullScreen!: boolean;\n  show!: boolean;\n  zIndex!: number;\n  template?: string;\n  showSpinner!: boolean;\n\n  constructor(init?: Partial<UtilSpinner>) {\n    Object.assign(this, init);\n  }\n\n  static create(init?: Partial<UtilSpinner>): UtilSpinner {\n    if (init?.type == null || init.type.length === 0) {\n      console.warn(`[ngx-spinner]: Property \"type\" is missed. Please, provide animation type to <ngx-spinner> component\n        and ensure css is added to angular.json file`);\n    }\n    return new UtilSpinner(init);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport {\n  PRIMARY_SPINNER,\n  Spinner,\n  UtilSpinner,\n} from '../enums/utils-spinner.enum';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UtilsSpinnerService {\n  /**\n   * Spinner observable\n   *\n   * @memberof UtilsSpinnerService\n   */\n  // private spinnerObservable = new ReplaySubject<NgxSpinner>(1);\n  public spinnerObservable = new BehaviorSubject<UtilSpinner>(null);\n  /**\n   * Creates an instance of UtilsSpinnerService.\n   * @memberof UtilsSpinnerService\n   */\n  constructor() {}\n  /**\n   * Get subscription of desired spinner\n   * @memberof UtilsSpinnerService\n   **/\n  getSpinner(name: string): Observable<UtilSpinner> {\n    return this.spinnerObservable\n      .asObservable()\n      .pipe(filter((x: UtilSpinner) => x && x.name === name));\n  }\n  /**\n   * To show spinner\n   *\n   * @memberof UtilsSpinnerService\n   */\n  show(name: string = PRIMARY_SPINNER, spinner?: Spinner) {\n    return new Promise((resolve, _reject) => {\n      setTimeout(() => {\n        if (spinner && Object.keys(spinner).length) {\n          spinner['name'] = name;\n          this.spinnerObservable.next(\n            new UtilSpinner({ ...spinner, show: true })\n          );\n          resolve(true);\n        } else {\n          this.spinnerObservable.next(new UtilSpinner({ name, show: true }));\n          resolve(true);\n        }\n      }, 10);\n    });\n  }\n  /**\n   * To hide spinner\n   *\n   * @memberof UtilsSpinnerService\n   */\n  hide(name: string = PRIMARY_SPINNER, debounce: number = 10) {\n    return new Promise((resolve, _reject) => {\n      setTimeout(() => {\n        this.spinnerObservable.next(new UtilSpinner({ name, show: false }));\n        resolve(true);\n      }, debounce);\n    });\n  }\n}\n","import { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'safeHtml',\n})\nexport class UtilsSafeHtmlPipe implements PipeTransform {\n  constructor(private _sanitizer: DomSanitizer) {}\n\n  transform(v: string): SafeHtml | any {\n    if (v) {\n      return this._sanitizer.bypassSecurityTrustHtml(v);\n    }\n  }\n}\n","import {\n  Component,\n  OnDestroy,\n  Input,\n  OnInit,\n  OnChanges,\n  SimpleChange,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  HostListener,\n  ViewChild,\n  ElementRef,\n  Optional,\n  Inject,\n  Injectable,\n} from '@angular/core';\nimport { from, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n  trigger,\n  state,\n  style,\n  transition,\n  animate,\n} from '@angular/animations';\nimport {\n  UtilsSpinnerConfig,\n  UTILS_SPINNER_CONFIG,\n} from '../../interfaces/utils-spinner-config';\nimport {\n  Size,\n  DEFAULTS,\n  PRIMARY_SPINNER,\n  LOADERS,\n  UtilSpinner,\n} from '../../enums/utils-spinner.enum';\nimport { UtilsSpinnerService } from '../../services/utils-spinner.service';\n\n@Component({\n  selector: 'utils-spinner',\n  templateUrl: './utils-spinner.component.html',\n  styleUrls: [\n    './utils-spinner.component.scss',\n    '../../assets/css/animations/ball-8bits.css',\n    '../../assets/css/animations/ball-atom.css',\n    '../../assets/css/animations/ball-beat.css',\n    '../../assets/css/animations/ball-circus.css',\n    '../../assets/css/animations/ball-climbing-dot.css',\n    '../../assets/css/animations/ball-clip-rotate-multiple.css',\n    '../../assets/css/animations/ball-clip-rotate-pulse.css',\n    '../../assets/css/animations/ball-clip-rotate.css',\n    '../../assets/css/animations/ball-elastic-dots.css',\n    '../../assets/css/animations/ball-fall.css',\n    '../../assets/css/animations/ball-fussion.css',\n    '../../assets/css/animations/ball-grid-beat.css',\n    '../../assets/css/animations/ball-grid-pulse.css',\n    '../../assets/css/animations/ball-newton-cradle.css',\n    '../../assets/css/animations/ball-pulse-rise.css',\n    '../../assets/css/animations/ball-pulse-sync.css',\n    '../../assets/css/animations/ball-pulse.css',\n    '../../assets/css/animations/ball-rotate.css',\n    '../../assets/css/animations/ball-running-dots.css',\n    '../../assets/css/animations/ball-scale-multiple.css',\n    '../../assets/css/animations/ball-scale-pulse.css',\n    '../../assets/css/animations/ball-scale-ripple-multiple.css',\n    '../../assets/css/animations/ball-scale-ripple.css',\n    '../../assets/css/animations/ball-scale.css',\n    '../../assets/css/animations/ball-spin-clockwise-fade-rotating.css',\n    '../../assets/css/animations/ball-spin-clockwise-fade.css',\n    '../../assets/css/animations/ball-spin-clockwise.css',\n    '../../assets/css/animations/ball-spin-fade-rotating.css',\n    '../../assets/css/animations/ball-spin-fade.css',\n    '../../assets/css/animations/ball-spin-rotate.css',\n    '../../assets/css/animations/ball-spin.css',\n    '../../assets/css/animations/ball-square-clockwise-spin.css',\n    '../../assets/css/animations/ball-square-spin.css',\n    '../../assets/css/animations/ball-triangle-path.css',\n    '../../assets/css/animations/ball-zig-zag-deflect.css',\n    '../../assets/css/animations/ball-zig-zag.css',\n    '../../assets/css/animations/cog.css',\n    '../../assets/css/animations/cube-transition.css',\n    '../../assets/css/animations/fire.css',\n    '../../assets/css/animations/line-scale-party.css',\n    '../../assets/css/animations/line-scale-pulse-out-rapid.css',\n    '../../assets/css/animations/line-scale-pulse-out.css',\n    '../../assets/css/animations/line-scale.css',\n    '../../assets/css/animations/line-spin-clockwise-fade-rotating.css',\n    '../../assets/css/animations/line-spin-clockwise-fade.css',\n    '../../assets/css/animations/line-spin-fade-rotating.css',\n    '../../assets/css/animations/line-spin-fade.css',\n    '../../assets/css/animations/pacman.css',\n    '../../assets/css/animations/square-jelly-box.css',\n    '../../assets/css/animations/square-loader.css',\n    '../../assets/css/animations/square-spin.css',\n    '../../assets/css/animations/timer.css',\n    '../../assets/css/animations/triangle-skew-spin.css',\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('fadeIn', [\n      state('in', style({ opacity: 1 })),\n      transition(':enter', [style({ opacity: 0 }), animate(300)]),\n      transition(':leave', animate(200, style({ opacity: 0 }))),\n    ]),\n  ],\n})\nexport class UtilsSpinnerComponent implements OnDestroy, OnInit, OnChanges {\n  /**\n   * To set backdrop color\n   * Only supports RGBA color format\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() bdColor: string;\n  /**\n   * To set spinner size\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() size: Size;\n  /**\n   * To set spinner color(DEFAULTS.SPINNER_COLOR)\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() color: string;\n  /**\n   * To set type of spinner\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() type: string;\n  /**\n   * To toggle fullscreen mode\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() fullScreen: boolean;\n  /**\n   * Spinner name\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() name: string;\n  /**\n   * z-index value\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() zIndex: number;\n  /**\n   * Custom template for spinner/loader\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() template?: string;\n  /**\n   * Show/Hide the spinner\n   *\n   * @type {boolean}\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() showSpinner: boolean;\n\n  /**\n   * To enable/disable animation\n   *\n   * @type {boolean}\n   * @memberof NgxSpinnerComponent\n   */\n  @Input() disableAnimation: boolean = false;\n  /**\n   * Spinner Object\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  spinner: UtilSpinner = new UtilSpinner();\n  /**\n   * Array for spinner's div\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  divArray: Array<number>;\n  /**\n   * Counter for div\n   *\n   * @memberof NgxSpinnerComponent\n   *\n   */\n  divCount: number;\n  /**\n   * Show spinner\n   *\n   * @memberof NgxSpinnerComponent\n   **/\n  show: boolean;\n  /**\n   * Unsubscribe from spinner's observable\n   *\n   * @memberof NgxSpinnerComponent\n   **/\n  ngUnsubscribe: Subject<void> = new Subject();\n  /**\n   * Element Reference\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  @ViewChild('overlay') spinnerDOM: { nativeElement: any };\n\n  @HostListener('document:keydown', ['$event'])\n  handleKeyboardEvent(event: KeyboardEvent) {\n    if (this.spinnerDOM && this.spinnerDOM.nativeElement) {\n      if (\n        this.fullScreen ||\n        (!this.fullScreen && this.isSpinnerZone(event.target))\n      ) {\n        event.returnValue = false;\n        event.preventDefault();\n      }\n    }\n  }\n\n  /**\n   * Creates an instance of NgxSpinnerComponent.\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  constructor(\n    private spinnerService: UtilsSpinnerService,\n    private changeDetector: ChangeDetectorRef,\n    private elementRef: ElementRef,\n    @Optional()\n    @Inject(UTILS_SPINNER_CONFIG)\n    private globalConfig: UtilsSpinnerConfig\n  ) {\n    this.bdColor = DEFAULTS.BD_COLOR;\n    this.zIndex = DEFAULTS.Z_INDEX;\n    this.color = DEFAULTS.SPINNER_COLOR;\n    this.size = 'large';\n    this.fullScreen = true;\n    this.name = PRIMARY_SPINNER;\n    this.template = null;\n    this.showSpinner = false;\n\n    this.divArray = [];\n    this.divCount = 0;\n    this.show = false;\n  }\n\n  initObservable() {\n    this.spinnerService\n      .getSpinner(this.name)\n      .pipe(takeUntil(this.ngUnsubscribe))\n      .subscribe((spinner: UtilSpinner) => {\n        this.setDefaultOptions();\n        Object.assign(this.spinner, spinner);\n        if (spinner.show) {\n          this.onInputChange();\n        }\n        this.changeDetector.detectChanges();\n      });\n  }\n\n  /**\n   * Initialization method\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  ngOnInit() {\n    this.setDefaultOptions();\n    this.initObservable();\n  }\n\n  /**\n   * To check event triggers inside the Spinner Zone\n   *\n   * @param {*} element\n   * @returns {boolean}\n   * @memberof NgxSpinnerComponent\n   */\n  isSpinnerZone(element: any): boolean {\n    if (element === this.elementRef.nativeElement.parentElement) {\n      return true;\n    }\n    return element.parentNode && this.isSpinnerZone(element.parentNode);\n  }\n\n  /**\n   * To set default ngx-spinner options\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  setDefaultOptions = () => {\n    const { type } = this.globalConfig ?? {};\n    this.spinner = UtilSpinner.create({\n      name: this.name,\n      bdColor: this.bdColor,\n      size: this.size,\n      color: this.color,\n      type: this.type ?? type,\n      fullScreen: this.fullScreen,\n      divArray: this.divArray,\n      divCount: this.divCount,\n      show: this.show,\n      zIndex: this.zIndex,\n      template: this.template,\n      showSpinner: this.showSpinner,\n    });\n  };\n  /**\n   * On changes event for input variables\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n    for (const propName in changes) {\n      if (propName) {\n        const changedProp = changes[propName];\n        if (changedProp.isFirstChange()) {\n          return;\n        } else if (\n          typeof changedProp.currentValue !== 'undefined' &&\n          changedProp.currentValue !== changedProp.previousValue\n        ) {\n          if (changedProp.currentValue !== '') {\n            this.spinner[propName] = changedProp.currentValue;\n            if (propName === 'showSpinner') {\n              if (changedProp.currentValue) {\n                this.spinnerService.show(this.spinner.name, this.spinner);\n              } else {\n                this.spinnerService.hide(this.spinner.name);\n              }\n            }\n\n            if (propName === 'name') {\n              this.initObservable();\n            }\n          }\n        }\n      }\n    }\n  }\n  /**\n   * To get class for spinner\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  getClass(type: string, size: Size): string {\n    let divCount = LOADERS[type];\n    this.spinner.divCount = divCount;\n    this.spinner.divArray = Array(this.spinner.divCount)\n      .fill(0)\n      .map((_, i) => i);\n    let sizeClass = '';\n    switch (size.toLowerCase()) {\n      case 'small':\n        sizeClass = 'la-sm';\n        break;\n      case 'medium':\n        sizeClass = 'la-2x';\n        break;\n      case 'large':\n        sizeClass = 'la-3x';\n        break;\n      default:\n        break;\n    }\n    return 'la-' + type + ' ' + sizeClass;\n  }\n  /**\n   * Check if input variables have changed\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  onInputChange() {\n    this.spinner.class = this.getClass(this.spinner.type, this.spinner.size);\n  }\n  /**\n   * Component destroy event\n   *\n   * @memberof NgxSpinnerComponent\n   */\n  ngOnDestroy() {\n    this.ngUnsubscribe.next();\n    this.ngUnsubscribe.complete();\n  }\n}\n","<div [@.disabled]=\"disableAnimation\" [@fadeIn]=\"'in'\" *ngIf=\"spinner.show\" class=\"ngx-spinner-overlay\"\n  [style.background-color]=\"spinner.bdColor\" [style.z-index]=\"spinner.zIndex\"\n  [style.position]=\"spinner.fullScreen ? 'fixed' : 'absolute'\" #overlay>\n  <div *ngIf=\"!template\" [class]=\"spinner.class\" [style.color]=\"spinner.color\">\n    <div *ngFor=\"let index of spinner.divArray\"></div>\n  </div>\n  <div *ngIf=\"template\" [innerHTML]=\"template | safeHtml\"></div>\n  <div class=\"loading-text\" [style.z-index]=\"spinner.zIndex\">\n    <ng-content></ng-content>\n  </div>\n</div>","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UtilsSpinnerComponent } from '../components/utils-spinner/utils-spinner.component';\nimport { UtilsSafeHtmlPipe } from '../pipes/utils-safe-html.pipe';\nimport {\n  UtilsSpinnerConfig,\n  UTILS_SPINNER_CONFIG,\n} from '../interfaces/utils-spinner-config';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [UtilsSpinnerComponent, UtilsSafeHtmlPipe],\n  exports: [UtilsSpinnerComponent],\n})\nexport class UtilsSpinnerModule {\n  static forRoot(\n    config?: UtilsSpinnerConfig\n  ): ModuleWithProviders<UtilsSpinnerModule> {\n    return {\n      ngModule: UtilsSpinnerModule,\n      providers: [{ provide: UTILS_SPINNER_CONFIG, useValue: config }],\n    };\n  }\n}\n","import { EventEmitter } from '@angular/core';\nimport { UtilsPaginationInstance } from '../interfaces/pagination-instance';\n\nexport class UtilsPaginationService {\n  public change: EventEmitter<string> = new EventEmitter<string>();\n\n  private instances: { [id: string]: UtilsPaginationInstance } = {};\n  private DEFAULT_ID = 'DEFAULT_PAGINATION_ID';\n\n  public defaultId(): string {\n    return this.DEFAULT_ID;\n  }\n\n  /**\n   * Register a UtilsPaginationInstance with this service. Returns a\n   * boolean value signifying whether the instance is new or\n   * updated (true = new or updated, false = unchanged).\n   */\n  public register(instance: UtilsPaginationInstance): boolean {\n    if (instance.id == null) {\n      instance.id = this.DEFAULT_ID;\n    }\n\n    if (!this.instances[instance.id]) {\n      this.instances[instance.id] = instance;\n      return true;\n    } else {\n      return this.updateInstance(instance);\n    }\n  }\n\n  /**\n   * Check each property of the instance and update any that have changed. Return\n   * true if any changes were made, else return false.\n   */\n  private updateInstance(instance: UtilsPaginationInstance): boolean {\n    let changed = false;\n    for (let prop in this.instances[instance.id]) {\n      if (instance[prop] !== this.instances[instance.id][prop]) {\n        this.instances[instance.id][prop] = instance[prop];\n        changed = true;\n      }\n    }\n    return changed;\n  }\n\n  /**\n   * Returns the current page number.\n   */\n  public getCurrentPage(id: string): number {\n    if (this.instances[id]) {\n      return this.instances[id].currentPage;\n    }\n    return 1;\n  }\n\n  /**\n   * Sets the current page number.\n   */\n  public setCurrentPage(id: string, page: number) {\n    if (this.instances[id]) {\n      let instance = this.instances[id];\n      let maxPage = Math.ceil(instance.totalItems / instance.itemsPerPage);\n      if (page <= maxPage && 1 <= page) {\n        this.instances[id].currentPage = page;\n        this.change.emit(id);\n      }\n    }\n  }\n\n  /**\n   * Sets the value of instance.totalItems\n   */\n  public setTotalItems(id: string, totalItems: number) {\n    if (this.instances[id] && 0 <= totalItems) {\n      this.instances[id].totalItems = totalItems;\n      this.change.emit(id);\n    }\n  }\n\n  /**\n   * Sets the value of instance.itemsPerPage.\n   */\n  public setItemsPerPage(id: string, itemsPerPage: number) {\n    if (this.instances[id]) {\n      this.instances[id].itemsPerPage = itemsPerPage;\n      this.change.emit(id);\n    }\n  }\n\n  /**\n   * Returns a clone of the pagination instance object matching the id. If no\n   * id specified, returns the instance corresponding to the default id.\n   */\n  public getInstance(id: string = this.DEFAULT_ID): UtilsPaginationInstance {\n    if (this.instances[id]) {\n      return this.clone(this.instances[id]);\n    }\n    return {} as UtilsPaginationInstance;\n  }\n\n  /**\n   * Perform a shallow clone of an object.\n   */\n  private clone(obj: any): any {\n    var target = {};\n    for (var i in obj) {\n      if (obj.hasOwnProperty(i)) {\n        target[i] = obj[i];\n      }\n    }\n    return target;\n  }\n}\n","import { Pipe } from '@angular/core';\nimport { UtilsPaginationInstance } from '../interfaces/pagination-instance';\nimport { UtilsPaginationService } from '../services/utils-pagination.service';\n\nconst LARGE_NUMBER = Number.MAX_SAFE_INTEGER;\n\nexport type Collection<T> = T[] | ReadonlyArray<T>;\n\nexport interface PaginatePipeArgs {\n  id?: string;\n  itemsPerPage?: string | number;\n  currentPage?: string | number;\n  totalItems?: string | number;\n}\n\nexport interface PipeState {\n  collection: ArrayLike<any>;\n  size: number;\n  start: number;\n  end: number;\n  slice: ArrayLike<any>;\n}\n\n@Pipe({\n  name: 'paginate',\n  pure: false,\n})\nexport class UtilsPaginatePipe {\n  // store the values from the last time the pipe was invoked\n  private state: { [id: string]: PipeState } = {};\n\n  constructor(private service: UtilsPaginationService) {}\n\n  public transform<T, U extends Collection<T>>(\n    collection: U,\n    args: PaginatePipeArgs\n  ): U {\n    // When an observable is passed through the AsyncPipe, it will output\n    // `null` until the subscription resolves. In this case, we want to\n    // use the cached data from the `state` object to prevent the NgFor\n    // from flashing empty until the real values arrive.\n    if (!(collection instanceof Array)) {\n      let _id = args.id || this.service.defaultId();\n      if (this.state[_id]) {\n        return this.state[_id].slice as U;\n      } else {\n        return collection;\n      }\n    }\n\n    let serverSideMode =\n      args.totalItems && args.totalItems !== collection.length;\n    let instance = this.createInstance(collection, args);\n    let id = instance.id;\n    let start, end;\n    let perPage = instance.itemsPerPage;\n\n    let emitChange = this.service.register(instance);\n\n    if (!serverSideMode && collection instanceof Array) {\n      perPage = +perPage || LARGE_NUMBER;\n      start = (instance.currentPage - 1) * perPage;\n      end = start + perPage;\n\n      let isIdentical = this.stateIsIdentical(id, collection, start, end);\n      if (isIdentical) {\n        return this.state[id].slice as U;\n      } else {\n        let slice = collection.slice(start, end);\n        this.saveState(id, collection, slice, start, end);\n        this.service.change.emit(id);\n        return slice as U;\n      }\n    } else {\n      if (emitChange) {\n        this.service.change.emit(id);\n      }\n\n      // save the state for server-side collection to avoid null\n      // flash as new data loads.\n      this.saveState(id, collection, collection, start, end);\n\n      return collection;\n    }\n  }\n\n  /**\n   * Create an UtilsPaginationInstance object, using defaults for any optional properties not supplied.\n   */\n  private createInstance(\n    collection: readonly any[],\n    config: PaginatePipeArgs\n  ): UtilsPaginationInstance {\n    this.checkConfig(config);\n\n    return {\n      id: config.id != null ? config.id : this.service.defaultId(),\n      itemsPerPage: +config.itemsPerPage || 0,\n      currentPage: +config.currentPage || 1,\n      totalItems: +config.totalItems || collection.length,\n    };\n  }\n\n  /**\n   * Ensure the argument passed to the filter contains the required properties.\n   */\n  private checkConfig(config: PaginatePipeArgs): void {\n    const required = ['itemsPerPage', 'currentPage'];\n\n    const missing = required.filter((prop) => !(prop in config));\n    if (0 < missing.length) {\n      throw new Error(\n        `PaginatePipe: Argument is missing the following required properties: ${missing.join(\n          ', '\n        )}`\n      );\n    }\n  }\n\n  /**\n   * To avoid returning a brand new array each time the pipe is run, we store the state of the sliced\n   * array for a given id. This means that the next time the pipe is run on this collection & id, we just\n   * need to check that the collection, start and end points are all identical, and if so, return the\n   * last sliced array.\n   */\n  private saveState(\n    id: string,\n    collection: ArrayLike<any>,\n    slice: ArrayLike<any>,\n    start: number,\n    end: number\n  ) {\n    this.state[id] = {\n      collection,\n      size: collection.length,\n      slice,\n      start,\n      end,\n    };\n  }\n\n  /**\n   * For a given id, returns true if the collection, size, start and end values are identical.\n   */\n  private stateIsIdentical(\n    id: string,\n    collection: ArrayLike<any>,\n    start: number,\n    end: number\n  ): boolean {\n    let state = this.state[id];\n    if (!state) {\n      return false;\n    }\n    let isMetaDataIdentical =\n      state.size === collection.length &&\n      state.start === start &&\n      state.end === end;\n\n    if (!isMetaDataIdentical) {\n      return false;\n    }\n\n    return (state.slice as Array<any>).every(\n      (element, index) => element === collection[start + index]\n    );\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  Input,\n  Output,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { UtilsPaginationInstance } from '../interfaces/pagination-instance';\nimport { UtilsPaginationService } from '../services/utils-pagination.service';\n\nexport interface Page {\n  label: string;\n  value: any;\n}\n\n/**\n * This directive is what powers all pagination controls components, including the default one.\n * It exposes an API which is hooked up to the UtilsPaginationService to keep the PaginatePipe in sync\n * with the pagination controls.\n */\n@Directive({\n  selector: 'pagination-template,[pagination-template]',\n  exportAs: 'paginationApi',\n})\nexport class UtilsPaginationControlsDirective {\n  @Input() id: string;\n  @Input() maxSize: number = 7;\n  @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n  @Output() pageBoundsCorrection: EventEmitter<number> =\n    new EventEmitter<number>();\n  pages: Page[] = [];\n\n  private changeSub: Subscription;\n\n  constructor(\n    private service: UtilsPaginationService,\n    private changeDetectorRef: ChangeDetectorRef\n  ) {\n    this.changeSub = this.service.change.subscribe((id) => {\n      if (this.id === id) {\n        this.updatePageLinks();\n        this.changeDetectorRef.markForCheck();\n        this.changeDetectorRef.detectChanges();\n      }\n    });\n  }\n\n  ngOnInit() {\n    if (this.id === undefined) {\n      this.id = this.service.defaultId();\n    }\n    this.updatePageLinks();\n  }\n\n  ngOnChanges(changes: any) {\n    this.updatePageLinks();\n  }\n\n  ngOnDestroy() {\n    this.changeSub.unsubscribe();\n  }\n\n  /**\n   * Go to the previous page\n   */\n  previous() {\n    this.checkValidId();\n    this.setCurrent(this.getCurrent() - 1);\n  }\n\n  /**\n   * Go to the next page\n   */\n  next() {\n    this.checkValidId();\n    this.setCurrent(this.getCurrent() + 1);\n  }\n\n  /**\n   * Returns true if current page is first page\n   */\n  isFirstPage(): boolean {\n    return this.getCurrent() === 1;\n  }\n\n  /**\n   * Returns true if current page is last page\n   */\n  isLastPage(): boolean {\n    return this.getLastPage() === this.getCurrent();\n  }\n\n  /**\n   * Set the current page number.\n   */\n  setCurrent(page: number) {\n    this.pageChange.emit(page);\n  }\n\n  /**\n   * Get the current page number.\n   */\n  getCurrent(): number {\n    return this.service.getCurrentPage(this.id);\n  }\n\n  /**\n   * Returns the last page number\n   */\n  getLastPage(): number {\n    let inst = this.service.getInstance(this.id);\n    if (inst.totalItems < 1) {\n      // when there are 0 or fewer (an error case) items, there are no \"pages\" as such,\n      // but it makes sense to consider a single, empty page as the last page.\n      return 1;\n    }\n    return Math.ceil(inst.totalItems / inst.itemsPerPage);\n  }\n\n  getTotalItems(): number {\n    return this.service.getInstance(this.id).totalItems;\n  }\n\n  private checkValidId() {\n    if (this.service.getInstance(this.id).id == null) {\n      console.warn(\n        `PaginationControlsDirective: the specified id \"${this.id}\" does not match any registered UtilsPaginationInstance`\n      );\n    }\n  }\n\n  /**\n   * Updates the page links and checks that the current page is valid. Should run whenever the\n   * UtilsPaginationService.change stream emits a value matching the current ID, or when any of the\n   * input values changes.\n   */\n  private updatePageLinks() {\n    let inst = this.service.getInstance(this.id);\n    const correctedCurrentPage = this.outOfBoundCorrection(inst);\n\n    if (correctedCurrentPage !== inst.currentPage) {\n      setTimeout(() => {\n        this.pageBoundsCorrection.emit(correctedCurrentPage);\n        this.pages = this.createPageArray(\n          inst.currentPage,\n          inst.itemsPerPage,\n          inst.totalItems,\n          this.maxSize\n        );\n      });\n    } else {\n      this.pages = this.createPageArray(\n        inst.currentPage,\n        inst.itemsPerPage,\n        inst.totalItems,\n        this.maxSize\n      );\n    }\n  }\n\n  /**\n   * Checks that the instance.currentPage property is within bounds for the current page range.\n   * If not, return a correct value for currentPage, or the current value if OK.\n   */\n  private outOfBoundCorrection(instance: UtilsPaginationInstance): number {\n    const totalPages = Math.ceil(instance.totalItems / instance.itemsPerPage);\n    if (totalPages < instance.currentPage && 0 < totalPages) {\n      return totalPages;\n    } else if (instance.currentPage < 1) {\n      return 1;\n    }\n\n    return instance.currentPage;\n  }\n\n  /**\n   * Returns an array of Page objects to use in the pagination controls.\n   */\n  private createPageArray(\n    currentPage: number,\n    itemsPerPage: number,\n    totalItems: number,\n    paginationRange: number\n  ): Page[] {\n    // paginationRange could be a string if passed from attribute, so cast to number.\n    paginationRange = +paginationRange;\n    let pages = [];\n\n    // Return 1 as default page number\n    // Make sense to show 1 instead of empty when there are no items\n    const totalPages = Math.max(Math.ceil(totalItems / itemsPerPage), 1);\n    const halfWay = Math.ceil(paginationRange / 2);\n\n    const isStart = currentPage <= halfWay;\n    const isEnd = totalPages - halfWay < currentPage;\n    const isMiddle = !isStart && !isEnd;\n\n    let ellipsesNeeded = paginationRange < totalPages;\n    let i = 1;\n\n    while (i <= totalPages && i <= paginationRange) {\n      let label;\n      let pageNumber = this.calculatePageNumber(\n        i,\n        currentPage,\n        paginationRange,\n        totalPages\n      );\n      let openingEllipsesNeeded = i === 2 && (isMiddle || isEnd);\n      let closingEllipsesNeeded =\n        i === paginationRange - 1 && (isMiddle || isStart);\n      if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {\n        label = '...';\n      } else {\n        label = pageNumber;\n      }\n      pages.push({\n        label: label,\n        value: pageNumber,\n      });\n      i++;\n    }\n    return pages;\n  }\n\n  /**\n   * Given the position in the sequence of pagination links [i],\n   * figure out what page number corresponds to that position.\n   */\n  private calculatePageNumber(\n    i: number,\n    currentPage: number,\n    paginationRange: number,\n    totalPages: number\n  ) {\n    let halfWay = Math.ceil(paginationRange / 2);\n    if (i === paginationRange) {\n      return totalPages;\n    } else if (i === 1) {\n      return i;\n    } else if (paginationRange < totalPages) {\n      if (totalPages - halfWay < currentPage) {\n        return totalPages - paginationRange + i;\n      } else if (halfWay < currentPage) {\n        return currentPage - halfWay + i;\n      } else {\n        return i;\n      }\n    } else {\n      return i;\n    }\n  }\n}\n","import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n} from '@angular/core';\n\nfunction coerceToBoolean(input: string | boolean): boolean {\n  return !!input && input !== 'false';\n}\n\n/**\n * The default pagination controls component. Actually just a default implementation of a custom template.\n */\n@Component({\n  selector: 'utils-pagination',\n  templateUrl: './utils-pagination.component.html',\n  styleUrls: ['./utils-pagination.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class UtilsPaginationComponent {\n  @Input() id: string;\n  @Input() maxSize: number = 7;\n  @Input()\n  get directionLinks(): boolean {\n    return this._directionLinks;\n  }\n  set directionLinks(value: boolean) {\n    this._directionLinks = coerceToBoolean(value);\n  }\n  @Input()\n  get autoHide(): boolean {\n    return this._autoHide;\n  }\n  set autoHide(value: boolean) {\n    this._autoHide = coerceToBoolean(value);\n  }\n  @Input()\n  get responsive(): boolean {\n    return this._responsive;\n  }\n  set responsive(value: boolean) {\n    this._responsive = coerceToBoolean(value);\n  }\n  @Input() previousLabel: string = 'Previous';\n  @Input() nextLabel: string = 'Next';\n  @Input() screenReaderPaginationLabel: string = 'Pagination';\n  @Input() screenReaderPageLabel: string = 'page';\n  @Input() screenReaderCurrentLabel: string = `You're on page`;\n  @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n  @Output() pageBoundsCorrection: EventEmitter<number> =\n    new EventEmitter<number>();\n\n  private _directionLinks: boolean = true;\n  private _autoHide: boolean = false;\n  private _responsive: boolean = false;\n\n  trackByIndex(index: number) {\n    return index;\n  }\n}\n","<pagination-template #p=\"paginationApi\" [id]=\"id\" [maxSize]=\"maxSize\" (pageChange)=\"pageChange.emit($event)\"\n  (pageBoundsCorrection)=\"pageBoundsCorrection.emit($event)\">\n  <nav role=\"navigation\" [attr.aria-label]=\"screenReaderPaginationLabel\">\n    <ul class=\"ngx-pagination\" [class.responsive]=\"responsive\" *ngIf=\"!(autoHide && p.pages.length <= 1)\">\n\n      <li class=\"pagination-previous\" [class.disabled]=\"p.isFirstPage()\" *ngIf=\"directionLinks\">\n        <a tabindex=\"0\" *ngIf=\"1 < p.getCurrent()\" (keyup.enter)=\"p.previous()\" (click)=\"p.previous()\">\n          {{ previousLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\n        </a>\n        <span *ngIf=\"p.isFirstPage()\" aria-disabled=\"true\">\n          {{ previousLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\n        </span>\n      </li>\n\n      <li class=\"small-screen\">\n        {{ p.getCurrent() }} / {{ p.getLastPage() }}\n      </li>\n\n      <li [class.current]=\"p.getCurrent() === page.value\" [class.ellipsis]=\"page.label === '...'\"\n        *ngFor=\"let page of p.pages; trackBy: trackByIndex\">\n        <a tabindex=\"0\" (keyup.enter)=\"p.setCurrent(page.value)\" (click)=\"p.setCurrent(page.value)\"\n          *ngIf=\"p.getCurrent() !== page.value\">\n          <span class=\"show-for-sr\">{{ screenReaderPageLabel }} </span>\n          <span>{{ (page.label === '...') ? page.label : (page.label | number:'') }}</span>\n        </a>\n        <ng-container *ngIf=\"p.getCurrent() === page.value\">\n          <span aria-live=\"polite\">\n            <span class=\"show-for-sr\">{{ screenReaderCurrentLabel }} </span>\n            <span>{{ (page.label === '...') ? page.label : (page.label | number:'') }}</span>\n          </span>\n        </ng-container>\n      </li>\n\n      <li class=\"pagination-next\" [class.disabled]=\"p.isLastPage()\" *ngIf=\"directionLinks\">\n        <a tabindex=\"0\" *ngIf=\"!p.isLastPage()\" (keyup.enter)=\"p.next()\" (click)=\"p.next()\">\n          {{ nextLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\n        </a>\n        <span *ngIf=\"p.isLastPage()\" aria-disabled=\"true\">\n          {{ nextLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\n        </span>\n      </li>\n\n    </ul>\n  </nav>\n</pagination-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UtilsPaginatePipe } from '../pipes/utlils-paginate.pipe';\nimport { UtilsPaginationService } from '../services/utils-pagination.service';\nimport { UtilsPaginationComponent } from '../components/utils-pagination/utils-pagination.component';\nimport { UtilsPaginationControlsDirective } from '../directives/utils-pagination.directive';\n\nexport { UtilsPaginationInstance } from '../interfaces/pagination-instance';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [\n    UtilsPaginatePipe,\n    UtilsPaginationComponent,\n    UtilsPaginatePipe,\n    UtilsPaginationControlsDirective,\n  ],\n  providers: [UtilsPaginationService],\n  exports: [\n    UtilsPaginatePipe,\n    UtilsPaginationComponent,\n    UtilsPaginatePipe,\n    UtilsPaginationControlsDirective,\n  ],\n})\nexport class UtilsPaginationModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'highlight',\n})\nexport class UtilsHighlightPipe implements PipeTransform {\n  transform(text: any, search: any, searchKeyword?: any): any {\n    let pattern = search.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n    pattern = pattern\n      .split(' ')\n      .filter((t) => {\n        return t.length > 0;\n      })\n      .join('|');\n    const regex = new RegExp(pattern, 'gi');\n\n    if (!search) {\n      return text;\n    }\n\n    if (searchKeyword) {\n      const name = text[searchKeyword].replace(\n        regex,\n        (match) => `<b>${match}</b>`\n      );\n      // copy original object\n      const textCopied = { ...text };\n      // set bold value into searchKeyword of copied object\n      textCopied[searchKeyword] = name;\n      return textCopied;\n    } else {\n      return search ? text.replace(regex, (match) => `<b>${match}</b>`) : text;\n    }\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Keyboard events\n */\nconst isArrowUp = (keyCode) => keyCode === 38;\nconst isArrowDown = (keyCode) => keyCode === 40;\nconst isArrowUpDown = (keyCode) => isArrowUp(keyCode) || isArrowDown(keyCode);\nconst isEnter = (keyCode) => keyCode === 13;\nconst isBackspace = (keyCode) => keyCode === 8;\nconst isDelete = (keyCode) => keyCode === 46;\nconst isESC = (keyCode) => keyCode === 27;\nconst isTab = (keyCode) => keyCode === 9;\n\n@Component({\n  selector: 'utils-autocomplete',\n  templateUrl: './utils-autocomplete.component.html',\n  styleUrls: ['./utils-autocomplete.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => UtilsAutocompleteComponent),\n      multi: true,\n    },\n  ],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '(document:click)': 'handleClick($event)',\n    class: 'ng-autocomplete',\n  },\n})\nexport class UtilsAutocompleteComponent\n  implements OnInit, OnChanges, AfterViewInit, ControlValueAccessor\n{\n  @ViewChild('searchInput') searchInput: ElementRef; // input element\n  @ViewChild('filteredListElement') filteredListElement: ElementRef; // element of items\n  @ViewChild('historyListElement') historyListElement: ElementRef; // element of history items\n\n  inputKeyUp$: Observable<any>;\n  inputKeyDown$: Observable<any>;\n\n  public query = ''; // search query\n  public filteredList = []; // list of items\n  public historyList = []; // list of history items\n  public isHistoryListVisible = true;\n  public elementRef;\n  public selectedIdx = -1;\n  public toHighlight = '';\n  public notFound = false;\n  public isFocused = false;\n  public isOpen = false;\n  public isScrollToEnd = false;\n  public overlay = false;\n  private manualOpen = undefined;\n  private manualClose = undefined;\n\n  // @Inputs\n  /**\n   * Data of items list.\n   * It can be array of strings or array of objects.\n   */\n  @Input() public data = [];\n  @Input() public searchKeyword: string; // keyword to filter the list\n  @Input() public placeholder = '';\n  @Input() public heading = '';\n  @Input() public initialValue: any;\n  @Input() cssClass = 'autocomplete-default';\n  @Input() cssTemplateClass = '';\n  @Input() cssItemClass = '';\n  /**\n   * History identifier of history list\n   * When valid history identifier is given, then component stores selected item to local storage of user's browser.\n   * If it is null then history is hidden.\n   * History list is visible if at least one history item is stored.\n   */\n  @Input() public historyIdentifier: string;\n  /**\n   * Heading text of history list.\n   * If it is null then history heading is hidden.\n   */\n  @Input() public historyHeading = 'Recently selected';\n  @Input() public historyListMaxNumber = 15; // maximum number of items in the history list.\n  @Input() public notFoundText = 'Not found'; // set custom text when filter returns empty result\n  @Input() public isLoading: boolean; // loading mask\n  @Input() public debounceTime: number; // delay time while typing\n  @Input() public disabled: boolean; // input disable/enable\n  /**\n   * The minimum number of characters the user must type before a search is performed.\n   */\n  @Input() public minQueryLength = 1;\n\n  /**\n   * Focus first item in the list\n   */\n  @Input() public focusFirst = false;\n\n  /**\n   * Custom filter function\n   */\n  @Input() public customFilter: (items: any[], query: string) => any[];\n\n  /**\n   * Custom result render function\n   * @param value - selected value to be rendered inside input field\n   */\n  @Input() public selectedValueRender: (value: any) => string;\n\n  // @Output events\n  /** Event that is emitted whenever an item from the list is selected. */\n  @Output() selected = new EventEmitter<any>();\n\n  /** Event that is emitted whenever an input is changed. */\n  @Output() inputChanged = new EventEmitter<any>();\n\n  /** Event that is emitted whenever an input is focused. */\n  @Output() readonly inputFocused: EventEmitter<void> =\n    new EventEmitter<void>();\n\n  /** Event that is emitted whenever an input loses focus. */\n  @Output() readonly inputBlurred: EventEmitter<void> =\n    new EventEmitter<void>();\n\n  /** Event that is emitted whenever an input is cleared. */\n  @Output() readonly inputCleared: EventEmitter<void> =\n    new EventEmitter<void>();\n\n  /** Event that is emitted when the autocomplete panel is opened. */\n  @Output() readonly opened: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Event that is emitted when the autocomplete panel is closed. */\n  @Output() readonly closed: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Event that is emitted when scrolled to the end of items. */\n  @Output() readonly scrolledToEnd: EventEmitter<void> =\n    new EventEmitter<void>();\n\n  // Custom templates\n  @Input() itemTemplate: TemplateRef<any>;\n  @Input() notFoundTemplate: TemplateRef<any>;\n  @ContentChild(TemplateRef) customTemplate!: TemplateRef<any>;\n\n  /**\n   * Propagates new value when model changes\n   */\n  propagateChange: any = () => {};\n  /**\n   * Propagates new value when model bur\n   */\n  propagateBlur: any = () => {};\n\n  onTouched: any = () => {};\n\n  /**\n   * Writes a new value from the form model into the view,\n   * Updates model\n   */\n  writeValue(value: any = '') {\n    this.query =\n      this.selectedValueRender !== undefined\n        ? this.selectedValueRender(value)\n        : this.defaultWriteValue(value);\n  }\n\n  private defaultWriteValue(value: any) {\n    return value && !this.isTypeString(value)\n      ? value[this.searchKeyword]\n      : value;\n  }\n\n  /**\n   * Registers a handler that is called when something in the view has changed\n   */\n  registerOnChange(fn) {\n    this.propagateChange = fn;\n  }\n  /**\n   * Registers a handler that is called when something in the view has blur\n   */\n\n  registerOnBlur(fn) {\n    this.propagateBlur = fn;\n  }\n\n  /**\n   * Registers a handler specifically for when a control receives a touch event\n   */\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Event that is called when the value of an input element is changed\n   */\n  onChange(event) {\n    this.propagateChange(event.target.value);\n  }\n\n  onBlur(event) {\n    this.inputBlurred.emit(event.target.value);\n  }\n\n  constructor(elementRef: ElementRef, private renderer: Renderer2) {\n    this.elementRef = elementRef;\n  }\n\n  /**\n   * Event that is called when the control status changes to or from DISABLED\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  ngOnInit(): void {}\n\n  ngAfterViewInit() {\n    this.initEventStream();\n    this.handleScroll();\n  }\n\n  /**\n   * Set initial value\n   * @param value\n   */\n  public setInitialValue(value: any) {\n    if (this.initialValue) {\n      this.select(value);\n    }\n  }\n\n  /**\n   * Update search results\n   */\n  ngOnChanges(changes: SimpleChanges | any): void {\n    this.setInitialValue(this.initialValue);\n    if (changes && changes.data && Array.isArray(changes.data.currentValue)) {\n      this.handleItemsChange();\n      if (!changes.data.firstChange && this.isFocused) {\n        this.handleOpen();\n      }\n    }\n  }\n\n  /**\n   * Items change\n   */\n  public handleItemsChange() {\n    this.isScrollToEnd = false;\n    if (!this.isOpen) {\n      return;\n    }\n\n    this.filteredList = this.data;\n    this.notFound = !this.filteredList || this.filteredList.length === 0;\n\n    // Filter list when updating data and panel is open\n    if (this.isOpen) {\n      this.filterList();\n    }\n  }\n\n  /**\n   * Filter data\n   */\n  public filterList() {\n    this.selectedIdx = -1;\n    this.initSearchHistory();\n    if (this.query != null && this.data) {\n      this.toHighlight = this.query;\n      this.filteredList =\n        this.customFilter !== undefined\n          ? this.customFilter([...this.data], this.query)\n          : this.defaultFilterFunction();\n      // If [focusFirst]=\"true\" automatically focus the first match\n      if (this.filteredList.length > 0 && this.focusFirst) {\n        this.selectedIdx = 0;\n      }\n    } else {\n      this.notFound = false;\n    }\n  }\n\n  /**\n   * Default filter function, used unless customFilter is provided\n   */\n  public defaultFilterFunction(): any[] {\n    return this.data.filter((item: any) => {\n      if (typeof item === 'string') {\n        // string logic, check equality of strings\n        return item.toLowerCase().indexOf(this.query.toLowerCase()) > -1;\n      } else if (typeof item === 'object' && item instanceof Object) {\n        // object logic, check property equality\n        return item[this.searchKeyword]\n          ? item[this.searchKeyword]\n              .toLowerCase()\n              .indexOf(this.query.toLowerCase()) > -1\n          : '';\n      }\n      return [];\n    });\n  }\n\n  /**\n   * Check if item is a string in the list.\n   * @param item\n   */\n  isTypeString(item) {\n    return typeof item === 'string';\n  }\n\n  /**\n   * Select item in the list.\n   * @param item\n   */\n  public select(item) {\n    this.query = !this.isTypeString(item) ? item[this.searchKeyword] : item;\n    this.isOpen = true;\n    this.overlay = false;\n    this.selected.emit(item);\n    this.propagateChange(item);\n\n    if (this.initialValue) {\n      // check if history already exists in localStorage and then update\n      const history = window.localStorage.getItem(`${this.historyIdentifier}`);\n      if (history) {\n        let existingHistory = JSON.parse(\n          localStorage[`${this.historyIdentifier}`]\n        );\n        if (!(existingHistory instanceof Array)) existingHistory = [];\n\n        // check if selected item exists in existingHistory\n        if (\n          !existingHistory.some((existingItem) =>\n            !this.isTypeString(existingItem)\n              ? existingItem[this.searchKeyword] == item[this.searchKeyword]\n              : existingItem == item\n          )\n        ) {\n          existingHistory.unshift(item);\n          localStorage.setItem(\n            `${this.historyIdentifier}`,\n            JSON.stringify(existingHistory)\n          );\n\n          // check if items don't exceed max allowed number\n          if (existingHistory.length >= this.historyListMaxNumber) {\n            existingHistory.splice(existingHistory.length - 1, 1);\n            localStorage.setItem(\n              `${this.historyIdentifier}`,\n              JSON.stringify(existingHistory)\n            );\n          }\n        } else {\n          // if selected item exists in existingHistory swap to top in array\n          if (!this.isTypeString(item)) {\n            // object logic\n            const copiedExistingHistory = existingHistory.slice(); // copy original existingHistory array\n            const selectedIndex = copiedExistingHistory\n              .map((el) => el[this.searchKeyword])\n              .indexOf(item[this.searchKeyword]);\n            copiedExistingHistory.splice(selectedIndex, 1);\n            copiedExistingHistory.splice(0, 0, item);\n            localStorage.setItem(\n              `${this.historyIdentifier}`,\n              JSON.stringify(copiedExistingHistory)\n            );\n          } else {\n            // string logic\n            const copiedExistingHistory = existingHistory.slice(); // copy original existingHistory array\n            copiedExistingHistory.splice(\n              copiedExistingHistory.indexOf(item),\n              1\n            );\n            copiedExistingHistory.splice(0, 0, item);\n            localStorage.setItem(\n              `${this.historyIdentifier}`,\n              JSON.stringify(copiedExistingHistory)\n            );\n          }\n        }\n      } else {\n        this.saveHistory(item);\n      }\n    } else {\n      this.saveHistory(item);\n    }\n    this.handleClose();\n  }\n\n  /**\n   * Document click\n   * @param e event\n   */\n  public handleClick(e) {\n    let clickedComponent = e.target;\n    let inside = false;\n    do {\n      if (clickedComponent === this.elementRef.nativeElement) {\n        inside = true;\n        if (this.filteredList.length) {\n          this.handleOpen();\n        }\n      }\n      clickedComponent = clickedComponent.parentNode;\n    } while (clickedComponent);\n    if (!inside) {\n      this.handleClose();\n    }\n  }\n\n  /**\n   * Handle body overlay\n   */\n  handleOverlay() {\n    this.overlay = false;\n  }\n\n  /**\n   * Scroll items\n   */\n  public handleScroll() {\n    this.renderer.listen(\n      this.filteredListElement.nativeElement,\n      'scroll',\n      () => {\n        this.scrollToEnd();\n      }\n    );\n  }\n\n  /**\n   * Define panel state\n   */\n  setPanelState(event) {\n    if (event) {\n      event.stopPropagation();\n    }\n    // If controls are untouched\n    if (\n      typeof this.manualOpen === 'undefined' &&\n      typeof this.manualClose === 'undefined'\n    ) {\n      this.isOpen = false;\n      this.handleOpen();\n    }\n\n    // If one of the controls is untouched and other is deactivated\n    if (\n      (typeof this.manualOpen === 'undefined' && this.manualClose === false) ||\n      (typeof this.manualClose === 'undefined' && this.manualOpen === false)\n    ) {\n      this.isOpen = false;\n      this.handleOpen();\n    }\n\n    // if controls are touched but both are deactivated\n    if (this.manualOpen === false && this.manualClose === false) {\n      this.isOpen = false;\n      this.handleOpen();\n    }\n\n    // if open control is touched and activated\n    if (this.manualOpen) {\n      this.isOpen = false;\n      this.handleOpen();\n      this.manualOpen = false;\n    }\n\n    // if close control is touched and activated\n    if (this.manualClose) {\n      this.isOpen = true;\n      this.handleClose();\n      this.manualClose = false;\n    }\n  }\n\n  /**\n   * Manual controls\n   */\n  open() {\n    this.manualOpen = true;\n    this.isOpen = false;\n    this.handleOpen();\n  }\n\n  close() {\n    this.manualClose = true;\n    this.isOpen = true;\n    this.handleClose();\n  }\n\n  focus() {\n    this.handleFocus(event);\n  }\n\n  blur() {\n    this.handleClose(); // Remove the 'event' parameter\n  }\n\n  clear() {\n    this.remove(event);\n  }\n\n  /**\n   * Remove search query\n   */\n  public remove(e) {\n    e.stopPropagation();\n    this.query = '';\n    this.inputCleared.emit();\n    this.propagateChange(this.query);\n    this.setPanelState(e);\n\n    if (this.data && !this.data.length) {\n      this.notFound = false;\n    }\n  }\n\n  /**\n   * Initialize historyList search\n   */\n  initSearchHistory() {\n    this.isHistoryListVisible = false;\n    if (this.historyIdentifier && !this.query) {\n      const history = window.localStorage.getItem(`${this.historyIdentifier}`);\n      if (history) {\n        this.isHistoryListVisible = true;\n        this.filteredList = [];\n        this.historyList = history ? JSON.parse(history) : [];\n      } else {\n        this.isHistoryListVisible = false;\n      }\n    } else {\n      this.isHistoryListVisible = false;\n    }\n  }\n\n  handleOpen() {\n    if (this.isOpen || (this.isOpen && !this.isLoading)) {\n      return;\n    }\n    // If data exists\n    if (this.data && this.data.length) {\n      this.isOpen = true;\n      this.overlay = true;\n      this.filterList();\n      this.opened.emit();\n    }\n  }\n\n  handleClose() {\n    if (!this.isOpen) {\n      this.isFocused = false;\n      return;\n    }\n    this.isOpen = false;\n    this.overlay = false;\n    this.filteredList = [];\n    this.selectedIdx = -1;\n    this.notFound = false;\n    this.isHistoryListVisible = false;\n    this.isFocused = false;\n    this.closed.emit();\n  }\n\n  handleFocus(e) {\n    this.searchInput.nativeElement.focus();\n    if (this.isFocused) {\n      return;\n    }\n    this.inputFocused.emit(e);\n    // if data exists then open\n    if (this.data && this.data.length) {\n      this.setPanelState(e);\n    }\n    this.isFocused = true;\n  }\n\n  handleBlur(e) {\n    this.inputBlurred.emit(e);\n    //this.onTouched(e);\n    //this.isFocused = false;\n    //this.handleClose();\n  }\n\n  scrollToEnd(): void {\n    if (this.isScrollToEnd) {\n      return;\n    }\n\n    const scrollTop = this.filteredListElement.nativeElement.scrollTop;\n    const scrollHeight = this.filteredListElement.nativeElement.scrollHeight;\n    const elementHeight = this.filteredListElement.nativeElement.clientHeight;\n    const atBottom =\n      elementHeight != 0 &&\n      Math.abs(scrollHeight - elementHeight - scrollTop) < 1;\n\n    if (atBottom) {\n      this.scrolledToEnd.emit();\n      this.isScrollToEnd = true;\n    }\n  }\n\n  /**\n   * Initialize keyboard events\n   */\n  initEventStream() {\n    this.inputKeyUp$ = fromEvent(this.searchInput.nativeElement, 'keyup').pipe(\n      map((e: any) => e)\n    );\n\n    this.inputKeyDown$ = fromEvent(\n      this.searchInput.nativeElement,\n      'keydown'\n    ).pipe(map((e: any) => e));\n\n    this.listenEventStream();\n  }\n\n  /**\n   * Listen keyboard events\n   */\n  listenEventStream() {\n    // key up event\n    this.inputKeyUp$\n      .pipe(\n        filter(\n          (e) =>\n            !isArrowUpDown(e.keyCode) &&\n            !isEnter(e.keyCode) &&\n            !isESC(e.keyCode) &&\n            !isTab(e.keyCode)\n        ),\n        debounceTime(this.debounceTime)\n      )\n      .subscribe((e) => {\n        this.onKeyUp(e);\n      });\n\n    // cursor up & down\n    this.inputKeyDown$\n      .pipe(filter((e) => isArrowUpDown(e.keyCode)))\n      .subscribe((e) => {\n        e.preventDefault();\n        this.onFocusItem(e);\n      });\n\n    // enter keyup\n    this.inputKeyUp$.pipe(filter((e) => isEnter(e.keyCode))).subscribe((e) => {\n      //this.onHandleEnter();\n    });\n\n    // enter keydown\n    this.inputKeyDown$\n      .pipe(filter((e) => isEnter(e.keyCode)))\n      .subscribe((e) => {\n        this.onHandleEnter();\n      });\n\n    // ESC\n    this.inputKeyUp$\n      .pipe(filter((e) => isESC(e.keyCode), debounceTime(100)))\n      .subscribe((e) => {\n        this.onEsc();\n      });\n\n    // TAB\n    this.inputKeyDown$.pipe(filter((e) => isTab(e.keyCode))).subscribe((e) => {\n      this.onTab();\n    });\n\n    // delete\n    this.inputKeyDown$\n      .pipe(filter((e) => isBackspace(e.keyCode) || isDelete(e.keyCode)))\n      .subscribe((e) => {\n        this.onDelete();\n      });\n  }\n\n  /**\n   * on keyup == when input changed\n   * @param e event\n   */\n  onKeyUp(e) {\n    this.notFound = false; // search results are unknown while typing\n    // if input is empty\n    if (!this.query) {\n      this.notFound = false;\n      this.inputChanged.emit(e.target.value);\n      this.inputCleared.emit();\n      this.setPanelState(e);\n    }\n    // note that '' can be a valid query\n    if (!this.query && this.query !== '') {\n      return;\n    }\n    // if query >= to minQueryLength\n    if (this.query.length >= this.minQueryLength) {\n      this.inputChanged.emit(e.target.value);\n      this.filterList();\n\n      // If no results found\n      if (!this.filteredList.length && !this.isLoading) {\n        this.notFoundText ? (this.notFound = true) : (this.notFound = false);\n      }\n\n      if (this.data && !this.data.length) {\n        this.isOpen = true;\n      }\n    }\n  }\n\n  /**\n   * Keyboard arrow top and arrow bottom\n   * @param e event\n   */\n  onFocusItem(e) {\n    // move arrow up and down on filteredList or historyList\n    if (!this.historyList.length || !this.isHistoryListVisible) {\n      // filteredList\n      const totalNumItem = this.filteredList.length;\n      if (e.key === 'ArrowDown') {\n        let sum = this.selectedIdx;\n        sum = this.selectedIdx === null ? 0 : sum + 1;\n        this.selectedIdx = (totalNumItem + sum) % totalNumItem;\n        this.scrollToFocusedItem(this.selectedIdx);\n      } else if (e.key === 'ArrowUp') {\n        if (this.selectedIdx == -1) {\n          this.selectedIdx = 0;\n        }\n        this.selectedIdx = (totalNumItem + this.selectedIdx - 1) % totalNumItem;\n        this.scrollToFocusedItem(this.selectedIdx);\n      }\n    } else {\n      // historyList\n      const totalNumItem = this.historyList.length;\n      if (e.key === 'ArrowDown') {\n        let sum = this.selectedIdx;\n        sum = this.selectedIdx === null ? 0 : sum + 1;\n        this.selectedIdx = (totalNumItem + sum) % totalNumItem;\n        this.scrollToFocusedItem(this.selectedIdx);\n      } else if (e.key === 'ArrowUp') {\n        if (this.selectedIdx == -1) {\n          this.selectedIdx = 0;\n        }\n        this.selectedIdx = (totalNumItem + this.selectedIdx - 1) % totalNumItem;\n        this.scrollToFocusedItem(this.selectedIdx);\n      }\n    }\n  }\n\n  /**\n   * Scroll to focused item\n   * * @param index\n   */\n  scrollToFocusedItem(index) {\n    let listElement = null;\n    // Define list element\n    if (!this.historyList.length || !this.isHistoryListVisible) {\n      // filteredList element\n      listElement = this.filteredListElement.nativeElement;\n    } else {\n      // historyList element\n      listElement = this.historyListElement.nativeElement;\n    }\n\n    const items = Array.prototype.slice\n      .call(listElement.childNodes)\n      .filter((node: any) => {\n        if (node.nodeType === 1) {\n          // if node is element\n          return node.className.includes('item');\n        } else {\n          return false;\n        }\n      });\n\n    if (!items.length) {\n      return;\n    }\n\n    const listHeight = listElement.offsetHeight;\n    const itemHeight = items[index].offsetHeight;\n    const visibleTop = listElement.scrollTop;\n    const visibleBottom = listElement.scrollTop + listHeight - itemHeight;\n    const targetPosition = items[index].offsetTop;\n\n    if (targetPosition < visibleTop) {\n      listElement.scrollTop = targetPosition;\n    }\n\n    if (targetPosition > visibleBottom) {\n      listElement.scrollTop = targetPosition - listHeight + itemHeight;\n    }\n  }\n\n  /**\n   * Select item on enter click\n   */\n  onHandleEnter() {\n    // click enter to choose item from filteredList or historyList\n    if (this.selectedIdx > -1) {\n      if (!this.historyList.length || !this.isHistoryListVisible) {\n        // filteredList\n        this.query = !this.isTypeString(this.filteredList[this.selectedIdx])\n          ? this.filteredList[this.selectedIdx][this.searchKeyword]\n          : this.filteredList[this.selectedIdx];\n\n        this.saveHistory(this.filteredList[this.selectedIdx]);\n        this.select(this.filteredList[this.selectedIdx]);\n      } else {\n        // historyList\n        this.query = !this.isTypeString(this.historyList[this.selectedIdx])\n          ? this.historyList[this.selectedIdx][this.searchKeyword]\n          : this.historyList[this.selectedIdx];\n        this.saveHistory(this.historyList[this.selectedIdx]);\n        this.select(this.historyList[this.selectedIdx]);\n      }\n    }\n    this.isHistoryListVisible = false;\n    this.handleClose();\n  }\n\n  /**\n   * Esc click\n   */\n  onEsc() {\n    this.searchInput.nativeElement.blur();\n    this.handleClose();\n  }\n\n  /**\n   * Tab click\n   */\n  onTab() {\n    this.searchInput.nativeElement.blur();\n    this.handleClose();\n  }\n\n  /**\n   * Delete click\n   */\n  onDelete() {\n    this.isOpen = true;\n  }\n\n  /**\n   * Select item to save in localStorage\n   * @param selected\n   */\n  saveHistory(selected) {\n    if (this.historyIdentifier) {\n      // check if selected item exists in historyList\n      if (\n        !this.historyList.some((item) =>\n          !this.isTypeString(item)\n            ? item[this.searchKeyword] == selected[this.searchKeyword]\n            : item == selected\n        )\n      ) {\n        this.saveHistoryToLocalStorage([selected, ...this.historyList]);\n\n        // check if items don't exceed max allowed number\n        if (this.historyList.length >= this.historyListMaxNumber) {\n          this.historyList.splice(this.historyList.length - 1, 1);\n          this.saveHistoryToLocalStorage([selected, ...this.historyList]);\n        }\n      } else {\n        // if selected item exists in historyList swap to top in array\n        if (!this.isTypeString(selected)) {\n          // object logic\n          const copiedHistoryList = this.historyList.slice(); // copy original historyList array\n          const selectedIndex = copiedHistoryList\n            .map((item) => item[this.searchKeyword])\n            .indexOf(selected[this.searchKeyword]);\n          copiedHistoryList.splice(selectedIndex, 1);\n          copiedHistoryList.splice(0, 0, selected);\n          this.saveHistoryToLocalStorage([...copiedHistoryList]);\n        } else {\n          // string logic\n          const copiedHistoryList = this.historyList.slice(); // copy original historyList array\n          copiedHistoryList.splice(this.historyList.indexOf(selected), 1);\n          copiedHistoryList.splice(0, 0, selected);\n          this.saveHistoryToLocalStorage([...copiedHistoryList]);\n        }\n      }\n    }\n  }\n\n  /**\n   * Save item in localStorage\n   * @param selected\n   */\n  saveHistoryToLocalStorage(selected) {\n    window.localStorage.setItem(\n      `${this.historyIdentifier}`,\n      JSON.stringify(selected)\n    );\n  }\n\n  /**\n   * Remove item from localStorage\n   * @param index\n   * @param e event\n   */\n  removeHistoryItem(index, e) {\n    e.stopPropagation();\n    this.historyList = this.historyList.filter((v, i) => i !== index);\n    this.saveHistoryToLocalStorage(this.historyList);\n    if (this.historyList.length == 0) {\n      window.localStorage.removeItem(`${this.historyIdentifier}`);\n      this.filterList();\n    }\n  }\n\n  /**\n   * Reset localStorage\n   * @param e event\n   */\n  resetHistoryList(e) {\n    e.stopPropagation();\n    this.historyList = [];\n    window.localStorage.removeItem(`${this.historyIdentifier}`);\n    this.filterList();\n  }\n}\n","<div class=\"autocomplete-container\" aria-owns=\"suggestions suggestions-history\" [attr.aria-expanded]=\"isOpen\"\n  [ngClass]=\"{ 'active': isOpen}\">\n  <div class=\"input-container\">\n    <input #searchInput type=\"text\" attr.aria-label=\"{{placeholder}}\" aria-autocomplete=\"list\" role=\"combobox\"\n      placeholder={{placeholder}} [(ngModel)]=query (input)=\"onChange($event)\" (focus)=handleFocus($event)\n      (blur)=\"onBlur($event)\" [disabled]=\"disabled\" autocomplete=\"off\" [ngClass]=\"cssClass\">\n    <!--  (blur)=onTouched($event) (blur)=handleBlur($event)  -->\n    <div [ngClass]=\"{ 'xx': notFound, 'x': !notFound}\" *ngIf=\"query && !isLoading && !disabled\"\n      (click)=\"remove($event)\">\n      <i class=\"material-icons\" aria-label=\"Close\">close</i>\n    </div>\n    <!--Loading mask-->\n    <div class=\"sk-fading-circle\" *ngIf=\"isLoading\">\n      <div class=\"sk-circle1 sk-circle\"></div>\n      <div class=\"sk-circle2 sk-circle\"></div>\n      <div class=\"sk-circle3 sk-circle\"></div>\n      <div class=\"sk-circle4 sk-circle\"></div>\n      <div class=\"sk-circle5 sk-circle\"></div>\n      <div class=\"sk-circle6 sk-circle\"></div>\n      <div class=\"sk-circle7 sk-circle\"></div>\n      <div class=\"sk-circle8 sk-circle\"></div>\n      <div class=\"sk-circle9 sk-circle\"></div>\n      <div class=\"sk-circle10 sk-circle\"></div>\n      <div class=\"sk-circle11 sk-circle\"></div>\n      <div class=\"sk-circle12 sk-circle\"></div>\n    </div>\n  </div>\n\n  <!--FilteredList items-->\n  <div class=\"suggestions-container {{cssTemplateClass}}\" id=\"suggestions\" role=\"listbox\"\n    [ngClass]=\"{'is-hidden': isHistoryListVisible, 'is-visible': !isHistoryListVisible}\">\n    <!--FilteredList heading-->\n    <div class=\"heading\" *ngIf=\"filteredList.length > 0 && heading\">\n      <div class=\"text\">{{heading}}</div>\n    </div>\n\n    <ul #filteredListElement>\n      <li *ngFor=\"let item of filteredList; let idx = index\" class=\"item\">\n        <!--string logic-->\n        <div [ngClass]=\"cssItemClass\" [class.complete-selected]=\"idx === selectedIdx\" *ngIf='isTypeString(item)'\n          (click)=\"select(item)\">\n          <ng-container *ngTemplateOutlet=\"itemTemplate;  context: { $implicit: item | highlight: toHighlight }\">\n          </ng-container>\n        </div>\n        <!--object logic-->\n        <div [ngClass]=\"cssItemClass\" [class.complete-selected]=\"idx === selectedIdx\" *ngIf='!isTypeString(item)'\n          (click)=\"select(item)\">\n          <ng-container\n            *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item | highlight: toHighlight : searchKeyword }\">\n          </ng-container>\n        </div>\n      </li>\n    </ul>\n  </div>\n\n  <!--HistoryList items-->\n  <div class=\"suggestions-container {{cssTemplateClass}}\" id=\"suggestions-history\" role=\"listbox\"\n    [ngClass]=\"{'is-hidden': !isHistoryListVisible, 'is-visible': isHistoryListVisible}\">\n    <!--HistoryList heading-->\n    <div class=\"heading\" *ngIf=\"historyList.length > 0 && historyHeading\">\n      <div class=\"text\">{{historyHeading}}</div>\n      <div [ngClass]=\"{ 'xx': notFound, 'x': !notFound}\" (click)=\"resetHistoryList($event)\">\n        <i class=\"material-icons\" aria-label=\"Delete\">delete</i>\n      </div>\n    </div>\n\n    <ul #historyListElement>\n      <li *ngFor=\"let item of historyList; let idx = index\" class=\"item\">\n        <!--string logic-->\n        <div [ngClass]=\"cssItemClass\" [class.complete-selected]=\"idx === selectedIdx\" *ngIf='isTypeString(item)'\n          (click)=\"select(item)\">\n          <ng-container *ngTemplateOutlet=\"itemTemplate;  context: { $implicit: item }\">\n          </ng-container>\n        </div>\n        <!--object logic-->\n        <div [ngClass]=\"cssItemClass\" [class.complete-selected]=\"idx === selectedIdx\" *ngIf='!isTypeString(item)'\n          (click)=\"select(item)\">\n          <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\">\n          </ng-container>\n        </div>\n        <div [ngClass]=\"{ 'xx': notFound, 'x': !notFound}\" (click)=\"removeHistoryItem(idx, $event)\">\n          <i class=\"material-icons\" aria-label=\"Close\">close</i>\n        </div>\n      </li>\n    </ul>\n  </div>\n\n  <!--Not found-->\n  <div [ngClass]=\"cssTemplateClass\" class=\"not-found\" *ngIf=\"isLoading ? !isLoading && notFound : notFound\">\n    <ng-container *ngTemplateOutlet=\"notFoundTemplate;  context: { $implicit: notFoundText  }\">\n    </ng-container>\n  </div>\n</div>\n<div class=\"autocomplete-overlay\" *ngIf=\"overlay\" (click)=\"handleOverlay()\"></div>","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { UtilsAutocompleteComponent } from '../components/utils-autocomplete/utils-autocomplete.component';\nimport { UtilsHighlightPipe } from '../pipes/utils-highlight.pipe';\n\n@NgModule({\n  imports: [CommonModule, FormsModule, ReactiveFormsModule],\n  declarations: [UtilsAutocompleteComponent, UtilsHighlightPipe],\n  exports: [UtilsAutocompleteComponent, UtilsHighlightPipe],\n})\nexport class UtilsAutocompleteModule {}\n","import {\n  ComponentRef,\n  Injector,\n  ViewContainerRef\n} from '@angular/core';\n\nexport interface ComponentType<T> {\n  // eslint-disable-next-line @typescript-eslint/prefer-function-type\n  new (...args: any[]): T;\n}\n\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nexport class ComponentPortal<T> {\n  private _attachedHost?: BasePortalHost;\n  /** The type of the component that will be instantiated for attachment. */\n  component: ComponentType<T>;\n\n  /**\n   * [Optional] Where the attached component should live in Angular's *logical* component tree.\n   * This is different from where the component *renders*, which is determined by the PortalHost.\n   * The origin necessary when the host is outside of the Angular application context.\n   */\n  viewContainerRef!: ViewContainerRef;\n\n  /** Injector used for the instantiation of the component. */\n  injector: Injector;\n\n  constructor(component: ComponentType<T>, injector: Injector) {\n    this.component = component;\n    this.injector = injector;\n  }\n\n  /** Attach this portal to a host. */\n  attach(host: BasePortalHost, newestOnTop: boolean): ComponentRef<any> {\n    this._attachedHost = host;\n    return host.attach(this, newestOnTop);\n  }\n\n  /** Detach this portal from its host */\n  detach() {\n    const host = this._attachedHost;\n    if (host) {\n      this._attachedHost = undefined;\n      return host.detach();\n    }\n  }\n\n  /** Whether this portal is attached to a host. */\n  get isAttached(): boolean {\n    return this._attachedHost != null;\n  }\n\n  /**\n   * Sets the PortalHost reference without performing `attach()`. This is used directly by\n   * the PortalHost when it is performing an `attach()` or `detach()`.\n   */\n  setAttachedHost(host?: BasePortalHost) {\n    this._attachedHost = host;\n  }\n}\n\n/**\n * Partial implementation of PortalHost that only deals with attaching a\n * ComponentPortal\n */\nexport abstract class BasePortalHost {\n  /** The portal currently attached to the host. */\n  private _attachedPortal?: ComponentPortal<any>;\n\n  /** A function that will permanently dispose this host. */\n  private _disposeFn?: () => void;\n\n  attach(portal: ComponentPortal<any>, newestOnTop: boolean) {\n    this._attachedPortal = portal;\n    return this.attachComponentPortal(portal, newestOnTop);\n  }\n\n  abstract attachComponentPortal<T>(portal: ComponentPortal<T>, newestOnTop: boolean): ComponentRef<T>;\n\n  detach() {\n    if (this._attachedPortal) {\n      this._attachedPortal.setAttachedHost();\n    }\n\n    this._attachedPortal = undefined;\n    if (this._disposeFn) {\n      this._disposeFn();\n      this._disposeFn = undefined;\n    }\n  }\n\n  setDisposeFn(fn: () => void) {\n    this._disposeFn = fn;\n  }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { OverlayRef } from '../components/utils-toastr/overlay/overlay-ref';\n\n/**\n * Reference to a toast opened via the Toastr service.\n */\nexport class ToastRef<T> {\n  /** The instance of component opened into the toast. */\n  componentInstance!: T;\n\n  /** Count of duplicates of this toast */\n  private duplicatesCount = 0;\n\n  /** Subject for notifying the user that the toast has finished closing. */\n  private _afterClosed = new Subject<void>();\n  /** triggered when toast is activated */\n  private _activate = new Subject<void>();\n  /** notifies the toast that it should close before the timeout */\n  private _manualClose = new Subject<void>();\n  /** notifies the toast that it should reset the timeouts */\n  private _resetTimeout = new Subject<void>();\n  /** notifies the toast that it should count a duplicate toast */\n  private _countDuplicate = new Subject<number>();\n\n  constructor(private _overlayRef: OverlayRef) {}\n\n  manualClose() {\n    this._manualClose.next();\n    this._manualClose.complete();\n  }\n\n  manualClosed(): Observable<any> {\n    return this._manualClose.asObservable();\n  }\n\n  timeoutReset(): Observable<any> {\n    return this._resetTimeout.asObservable();\n  }\n\n  countDuplicate(): Observable<number> {\n    return this._countDuplicate.asObservable();\n  }\n\n  /**\n   * Close the toast.\n   */\n  close(): void {\n    this._overlayRef.detach();\n    this._afterClosed.next();\n    this._manualClose.next();\n    this._afterClosed.complete();\n    this._manualClose.complete();\n    this._activate.complete();\n    this._resetTimeout.complete();\n    this._countDuplicate.complete();\n  }\n\n  /** Gets an observable that is notified when the toast is finished closing. */\n  afterClosed(): Observable<any> {\n    return this._afterClosed.asObservable();\n  }\n\n  isInactive() {\n    return this._activate.isStopped;\n  }\n\n  activate() {\n    this._activate.next();\n    this._activate.complete();\n  }\n\n  /** Gets an observable that is notified when the toast has started opening. */\n  afterActivate(): Observable<any> {\n    return this._activate.asObservable();\n  }\n\n  /** Reset the toast timouts and count duplicates */\n  onDuplicate(resetTimeout: boolean, countDuplicate: boolean) {\n    if (resetTimeout) {\n      this._resetTimeout.next();\n    }\n    if (countDuplicate) {\n      this._countDuplicate.next(++this.duplicatesCount);\n    }\n  }\n}\nexport const DEFAULT_STYLES = `\n.toast-center-center {\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n}\n.toast-top-center {\n  top: 0;\n  right: 0;\n  width: 100%;\n}\n.toast-bottom-center {\n  bottom: 0;\n  right: 0;\n  width: 100%;\n}\n.toast-top-full-width {\n  top: 0;\n  right: 0;\n  width: 100%;\n}\n.toast-bottom-full-width {\n  bottom: 0;\n  right: 0;\n  width: 100%;\n}\n.toast-top-left {\n  top: 12px;\n  left: 12px;\n}\n.toast-top-right {\n  top: 12px;\n  right: 12px;\n}\n.toast-bottom-right {\n  right: 12px;\n  bottom: 12px;\n}\n.toast-bottom-left {\n  bottom: 12px;\n  left: 12px;\n}\n\n/* toast styles */\n.toast-title {\n  font-weight: bold;\n}\n.toast-message {\n  word-wrap: break-word;\n}\n.toast-message a,\n.toast-message label {\n  color: #ffffff;\n}\n.toast-message a:hover {\n  color: #cccccc;\n  text-decoration: none;\n}\n.toast-close-button {\n  position: relative;\n  right: -0.3em;\n  top: -0.3em;\n  float: right;\n  font-size: 20px;\n  font-weight: bold;\n  color: #ffffff;\n  text-shadow: 0 1px 0 #ffffff;\n  /* opacity: 0.8; */\n}\n.toast-close-button:hover,\n.toast-close-button:focus {\n  color: #000000;\n  text-decoration: none;\n  cursor: pointer;\n  opacity: 0.4;\n}\nbutton.toast-close-button {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n}\n.toast-container {\n  pointer-events: none;\n  position: fixed;\n  z-index: 999999;\n}\n.toast-container * {\n  box-sizing: border-box;\n}\n.toast-container .ngx-toastr {\n  position: relative;\n  overflow: hidden;\n  margin: 0 0 6px;\n  padding: 15px 15px 15px 50px;\n  width: 300px;\n  border-radius: 3px 3px 3px 3px;\n  background-position: 15px center;\n  background-repeat: no-repeat;\n  background-size: 24px;\n  box-shadow: 0 0 12px #999999;\n  color: #ffffff;\n}\n.toast-container .ngx-toastr:hover {\n  box-shadow: 0 0 12px #000000;\n  opacity: 1;\n  cursor: pointer;\n}\n.toast-info {\n  background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgMTEwYzIzLjE5NiAwIDQyIDE4LjgwNCA0MiA0MnMtMTguODA0IDQyLTQyIDQyLTQyLTE4LjgwNC00Mi00MiAxOC44MDQtNDIgNDItNDJ6bTU2IDI1NGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC04OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMnYtNjRoLTEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDY0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTAwaDEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjR6Jy8+PC9zdmc+\");\n}\n.toast-error {\n  background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTEyMS42IDMxMy4xYzQuNyA0LjcgNC43IDEyLjMgMCAxN0wzMzggMzc3LjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwyNTYgMzEybC02NS4xIDY1LjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwxMzQuNCAzMzhjLTQuNy00LjctNC43LTEyLjMgMC0xN2w2NS42LTY1LTY1LjYtNjUuMWMtNC43LTQuNy00LjctMTIuMyAwLTE3bDM5LjYtMzkuNmM0LjctNC43IDEyLjMtNC43IDE3IDBsNjUgNjUuNyA2NS4xLTY1LjZjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDM5LjYgMzkuNmM0LjcgNC43IDQuNyAxMi4zIDAgMTdMMzEyIDI1Nmw2NS42IDY1LjF6Jy8+PC9zdmc+\");\n}\n.toast-success {\n  background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1MTIgNTEyJyB3aWR0aD0nNTEyJyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTE3My44OTggNDM5LjQwNGwtMTY2LjQtMTY2LjRjLTkuOTk3LTkuOTk3LTkuOTk3LTI2LjIwNiAwLTM2LjIwNGwzNi4yMDMtMzYuMjA0YzkuOTk3LTkuOTk4IDI2LjIwNy05Ljk5OCAzNi4yMDQgMEwxOTIgMzEyLjY5IDQzMi4wOTUgNzIuNTk2YzkuOTk3LTkuOTk3IDI2LjIwNy05Ljk5NyAzNi4yMDQgMGwzNi4yMDMgMzYuMjA0YzkuOTk3IDkuOTk3IDkuOTk3IDI2LjIwNiAwIDM2LjIwNGwtMjk0LjQgMjk0LjQwMWMtOS45OTggOS45OTctMjYuMjA3IDkuOTk3LTM2LjIwNC0uMDAxeicvPjwvc3ZnPg==\");\n}\n.toast-warning {\n  background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA1NzYgNTEyJyB3aWR0aD0nNTc2JyBoZWlnaHQ9JzUxMic+PHBhdGggZmlsbD0ncmdiKDI1NSwyNTUsMjU1KScgZD0nTTU2OS41MTcgNDQwLjAxM0M1ODcuOTc1IDQ3Mi4wMDcgNTY0LjgwNiA1MTIgNTI3Ljk0IDUxMkg0OC4wNTRjLTM2LjkzNyAwLTU5Ljk5OS00MC4wNTUtNDEuNTc3LTcxLjk4N0wyNDYuNDIzIDIzLjk4NWMxOC40NjctMzIuMDA5IDY0LjcyLTMxLjk1MSA4My4xNTQgMGwyMzkuOTQgNDE2LjAyOHpNMjg4IDM1NGMtMjUuNDA1IDAtNDYgMjAuNTk1LTQ2IDQ2czIwLjU5NSA0NiA0NiA0NiA0Ni0yMC41OTUgNDYtNDYtMjAuNTk1LTQ2LTQ2LTQ2em0tNDMuNjczLTE2NS4zNDZsNy40MTggMTM2Yy4zNDcgNi4zNjQgNS42MDkgMTEuMzQ2IDExLjk4MiAxMS4zNDZoNDguNTQ2YzYuMzczIDAgMTEuNjM1LTQuOTgyIDExLjk4Mi0xMS4zNDZsNy40MTgtMTM2Yy4zNzUtNi44NzQtNS4wOTgtMTIuNjU0LTExLjk4Mi0xMi42NTRoLTYzLjM4M2MtNi44ODQgMC0xMi4zNTYgNS43OC0xMS45ODEgMTIuNjU0eicvPjwvc3ZnPg==\");\n}\n.toast-container.toast-top-center .ngx-toastr,\n.toast-container.toast-bottom-center .ngx-toastr {\n  width: 300px;\n  margin-left: auto;\n  margin-right: auto;\n}\n.toast-container.toast-top-full-width .ngx-toastr,\n.toast-container.toast-bottom-full-width .ngx-toastr {\n  width: 96%;\n  margin-left: auto;\n  margin-right: auto;\n}\n.ngx-toastr {\n  background-color: #030303;\n  pointer-events: auto;\n}\n.toast-success {\n  background-color: #51a351;\n}\n.toast-error {\n  background-color: #bd362f;\n}\n.toast-info {\n  background-color: #2f96b4;\n}\n.toast-warning {\n  background-color: #f89406;\n}\n.toast-progress {\n  position: absolute;\n  left: 0;\n  bottom: 0;\n  height: 4px;\n  background-color: #000000;\n  opacity: 0.4;\n}\n\n@media all and (max-width: 240px) {\n  .toast-container .ngx-toastr.div {\n    padding: 8px 8px 8px 50px;\n    width: 11em;\n  }\n  .toast-container .toast-close-button {\n    right: -0.2em;\n    top: -0.2em;\n  }\n}\n@media all and (min-width: 241px) and (max-width: 480px) {\n  .toast-container .ngx-toastr.div {\n    padding: 8px 8px 8px 50px;\n    width: 18em;\n  }\n  .toast-container .toast-close-button {\n    right: -0.2em;\n    top: -0.2em;\n  }\n}\n@media all and (min-width: 481px) and (max-width: 768px) {\n  .toast-container .ngx-toastr.div {\n    padding: 15px 15px 15px 50px;\n    width: 25em;\n  }\n}\n  `;\n","import { ComponentRef, InjectionToken } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { ComponentType } from '../components/utils-toastr/portal/portal';\nimport { ToastRef } from './toast-ref';\n\nexport type ProgressAnimationType = 'increasing' | 'decreasing';\n\n/**\n * Configuration for an individual toast.\n */\nexport interface IndividualConfig {\n  /**\n   * disable both timeOut and extendedTimeOut\n   * default: false\n   */\n  disableTimeOut: boolean | 'timeOut' | 'extendedTimeOut';\n  /**\n   * toast time to live in milliseconds\n   * default: 5000\n   */\n  timeOut: number;\n  /**\n   * toast show close button\n   * default: false\n   */\n  closeButton: boolean;\n  /**\n   * time to close after a user hovers over toast\n   * default: 1000\n   */\n  extendedTimeOut: number;\n  /**\n   * show toast progress bar\n   * default: false\n   */\n  progressBar: boolean;\n\n  /**\n   * changes toast progress bar animation\n   * default: decreasing\n   */\n  progressAnimation: ProgressAnimationType;\n\n  /**\n   * render html in toast message (possibly unsafe)\n   * default: false\n   */\n  enableHtml: boolean;\n  /**\n   * css class on toast component\n   * default: ngx-toastr\n   */\n  toastClass: string;\n  /**\n   * css class on toast container\n   * default: toast-top-right\n   */\n  positionClass: string;\n  /**\n   * css class on toast title\n   * default: toast-title\n   */\n  titleClass: string;\n  /**\n   * css class on toast message\n   * default: toast-message\n   */\n  messageClass: string;\n  /**\n   * animation easing on toast\n   * default: ease-in\n   */\n  easing: string;\n  /**\n   * animation ease time on toast\n   * default: 300\n   */\n  easeTime: string | number;\n  /**\n   * clicking on toast dismisses it\n   * default: true\n   */\n  tapToDismiss: boolean;\n  /**\n   * Angular toast component to be shown\n   * default: Toast\n   */\n  toastComponent?: ComponentType<any>;\n  /**\n   * Helps show toast from a websocket or from event outside Angular\n   * default: false\n   */\n  onActivateTick: boolean;\n  /**\n   * New toast placement\n   * default: true\n   */\n  newestOnTop: boolean;\n\n  /**\n   * payload to pass to the toastComponent\n   * default: null\n   */\n  payload: any;\n}\n\nexport interface ToastrIconClasses {\n  error: string;\n  info: string;\n  success: string;\n  warning: string;\n  [key: string]: string;\n}\n\n/**\n * Global Toast configuration\n * Includes all IndividualConfig\n */\nexport interface GlobalConfig extends IndividualConfig {\n  /**\n   * max toasts opened. Toasts will be queued\n   * Zero is unlimited\n   * default: 0\n   */\n  maxOpened: number;\n  /**\n   * dismiss current toast when max is reached\n   * default: false\n   */\n  autoDismiss: boolean;\n  iconClasses: Partial<ToastrIconClasses>;\n  /**\n   * block duplicate messages\n   * default: false\n   */\n  preventDuplicates: boolean;\n  /**\n   * display the number of duplicate messages\n   * default: false\n   */\n  countDuplicates: boolean;\n  /**\n   * Reset toast timeout when there's a duplicate (preventDuplicates needs to be set to true)\n   * default: false\n   */\n  resetTimeoutOnDuplicate: boolean;\n  /**\n   * consider the title of a toast when checking if duplicate\n   * default: false\n   */\n  includeTitleDuplicates: boolean;\n}\n\n/**\n * Everything a toast needs to launch\n */\nexport class ToastPackage {\n  private _onTap = new Subject<void>();\n  private _onAction = new Subject<any>();\n\n  constructor(\n    public toastId: number,\n    public config: IndividualConfig,\n    public message: string | null | undefined,\n    public title: string | undefined,\n    public toastType: string,\n    public toastRef: ToastRef<any>\n  ) {\n    this.toastRef.afterClosed().subscribe(() => {\n      this._onAction.complete();\n      this._onTap.complete();\n    });\n  }\n\n  /** Fired on click */\n  triggerTap(): void {\n    this._onTap.next();\n    if (this.config.tapToDismiss) {\n      this._onTap.complete();\n    }\n  }\n\n  onTap(): Observable<void> {\n    return this._onTap.asObservable();\n  }\n\n  /** available for use in custom toast */\n  triggerAction(action?: any): void {\n    this._onAction.next(action);\n  }\n\n  onAction(): Observable<void> {\n    return this._onAction.asObservable();\n  }\n}\n\n/* eslint-disable @typescript-eslint/no-empty-interface */\n/** @deprecated use GlobalConfig */\nexport interface GlobalToastrConfig extends GlobalConfig {}\n/** @deprecated use IndividualConfig */\nexport interface IndividualToastrConfig extends IndividualConfig {}\n/** @deprecated use IndividualConfig */\nexport interface ToastrConfig extends IndividualConfig {}\n\nexport const DefaultNoComponentGlobalConfig: GlobalConfig = {\n  maxOpened: 0,\n  autoDismiss: false,\n  newestOnTop: true,\n  preventDuplicates: false,\n  countDuplicates: false,\n  resetTimeoutOnDuplicate: false,\n  includeTitleDuplicates: false,\n\n  iconClasses: {\n    error: 'toast-error',\n    info: 'toast-info',\n    success: 'toast-success',\n    warning: 'toast-warning',\n  },\n\n  // Individual\n  closeButton: false,\n  disableTimeOut: false,\n  timeOut: 5000,\n  extendedTimeOut: 1000,\n  enableHtml: false,\n  progressBar: false,\n  toastClass: 'ngx-toastr',\n  positionClass: 'toast-top-right',\n  titleClass: 'toast-title',\n  messageClass: 'toast-message',\n  easing: 'ease-in',\n  easeTime: 300,\n  tapToDismiss: true,\n  onActivateTick: false,\n  progressAnimation: 'decreasing',\n\n  payload: null,\n};\n\nexport interface ToastToken {\n  default: GlobalConfig;\n  config: Partial<GlobalConfig>;\n}\n\nexport const TOAST_CONFIG = new InjectionToken<ToastToken>('ToastConfig');\n\nexport interface ActiveToast<C> {\n  /** Your Toast ID. Use this to close it individually */\n  toastId: number;\n  /** the title of your toast. Stored to prevent duplicates */\n  title: string;\n  /** the message of your toast. Stored to prevent duplicates */\n  message: string;\n  /** a reference to the component see portal.ts */\n  portal: ComponentRef<C>;\n  /** a reference to your toast */\n  toastRef: ToastRef<C>;\n  /** triggered when toast is active */\n  onShown: Observable<void>;\n  /** triggered when toast is destroyed */\n  onHidden: Observable<void>;\n  /** triggered on toast click */\n  onTap: Observable<void>;\n  /** available for your use in custom toast */\n  onAction: Observable<any>;\n}\n","import {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  EmbeddedViewRef,\n} from '@angular/core';\nimport { BasePortalHost, ComponentPortal } from './portal';\n\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nexport class DomPortalHost extends BasePortalHost {\n  constructor(\n    private _hostDomElement: Element,\n    private _componentFactoryResolver: ComponentFactoryResolver,\n    private _appRef: ApplicationRef,\n  ) {\n    super();\n  }\n\n  /**\n   * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n   * @param portal Portal to be attached\n   */\n  attachComponentPortal<T>(\n    portal: ComponentPortal<T>,\n    newestOnTop: boolean,\n  ): ComponentRef<T> {\n    const componentFactory = this._componentFactoryResolver.resolveComponentFactory(\n      portal.component,\n    );\n    let componentRef: ComponentRef<T>;\n\n    // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n    // for the component (in terms of Angular's component tree, not rendering).\n    // When the ViewContainerRef is missing, we use the factory to create the component directly\n    // and then manually attach the ChangeDetector for that component to the application (which\n    // happens automatically when using a ViewContainer).\n    componentRef = componentFactory.create(portal.injector);\n\n    // When creating a component outside of a ViewContainer, we need to manually register\n    // its ChangeDetector with the application. This API is unfortunately not yet published\n    // in Angular core. The change detector must also be deregistered when the component\n    // is destroyed to prevent memory leaks.\n    this._appRef.attachView(componentRef.hostView);\n\n    this.setDisposeFn(() => {\n      this._appRef.detachView(componentRef.hostView);\n      componentRef.destroy();\n    });\n\n    // At this point the component has been instantiated, so we move it to the location in the DOM\n    // where we want it to be rendered.\n    if (newestOnTop) {\n      this._hostDomElement.insertBefore(\n        this._getComponentRootNode(componentRef),\n        this._hostDomElement.firstChild,\n      );\n    } else {\n      this._hostDomElement.appendChild(\n        this._getComponentRootNode(componentRef),\n      );\n    }\n\n    return componentRef;\n  }\n\n  /** Gets the root HTMLElement for an instantiated component. */\n  private _getComponentRootNode(componentRef: ComponentRef<any>): HTMLElement {\n    return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n  }\n}\n","import { ComponentRef } from '@angular/core';\nimport { BasePortalHost, ComponentPortal } from '../portal/portal';\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nexport class OverlayRef {\n  constructor(private _portalHost: BasePortalHost) {}\n\n  attach(\n    portal: ComponentPortal<any>,\n    newestOnTop: boolean = true,\n  ): ComponentRef<any> {\n    return this._portalHost.attach(portal, newestOnTop);\n  }\n\n  /**\n   * Detaches an overlay from a portal.\n   * @returns Resolves when the overlay has been detached.\n   */\n  detach() {\n    return this._portalHost.detach();\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\n\n/** Container inside which all toasts will render. */\n@Injectable({ providedIn: 'root' })\nexport class OverlayContainer implements OnDestroy {\n  protected _containerElement!: HTMLElement;\n\n  constructor(@Inject(DOCUMENT) protected _document: any) {}\n\n  ngOnDestroy() {\n    if (this._containerElement && this._containerElement.parentNode) {\n      this._containerElement.parentNode.removeChild(this._containerElement);\n    }\n  }\n\n  /**\n   * This method returns the overlay container element. It will lazily\n   * create the element the first time  it is called to facilitate using\n   * the container in non-browser environments.\n   * @returns the container element\n   */\n  getContainerElement(): HTMLElement {\n    if (!this._containerElement) {\n      this._createContainer();\n    }\n    return this._containerElement;\n  }\n\n  /**\n   * Create the overlay container element, which is simply a div\n   * with the 'cdk-overlay-container' class on the document body\n   * and 'aria-live=\"polite\"'\n   */\n  protected _createContainer(): void {\n    const container = this._document.createElement('div');\n    container.classList.add('overlay-container');\n    container.setAttribute('aria-live','polite');\n    this._document.body.appendChild(container);\n    this._containerElement = container;\n  }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  Inject,\n  Injectable,\n} from '@angular/core';\nimport { UtilsToastContainerDirective } from '../../../directives/utils-toast.directive';\nimport { DEFAULT_STYLES } from '../../../interfaces/toast-ref';\n\nimport { DomPortalHost } from '../portal/dom-portal-host';\nimport { OverlayContainer } from './overlay-container';\nimport { OverlayRef } from './overlay-ref';\n\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one.\n */\n@Injectable({ providedIn: 'root' })\nexport class Overlay {\n  // Namespace panes by overlay container\n  private _paneElements: Map<\n    UtilsToastContainerDirective,\n    Record<string, HTMLElement>\n  > = new Map();\n\n  constructor(\n    private _overlayContainer: OverlayContainer,\n    private _componentFactoryResolver: ComponentFactoryResolver,\n    private _appRef: ApplicationRef,\n    @Inject(DOCUMENT) private _document: any\n  ) {}\n  /**\n   * Creates an overlay.\n   * @returns A reference to the created overlay.\n   */\n  create(\n    positionClass?: string,\n    overlayContainer?: UtilsToastContainerDirective\n  ): OverlayRef {\n    // get existing pane if possible\n    return this._createOverlayRef(\n      this.getPaneElement(positionClass, overlayContainer)\n    );\n  }\n\n  getPaneElement(\n    positionClass: string = '',\n    overlayContainer?: UtilsToastContainerDirective\n  ): HTMLElement {\n    if (\n      !this._paneElements.get(overlayContainer as UtilsToastContainerDirective)\n    ) {\n      this._paneElements.set(\n        overlayContainer as UtilsToastContainerDirective,\n        {}\n      );\n    }\n\n    if (\n      !this._paneElements.get(\n        overlayContainer as UtilsToastContainerDirective\n      )![positionClass]\n    ) {\n      this._paneElements.get(overlayContainer as UtilsToastContainerDirective)![\n        positionClass\n      ] = this._createPaneElement(positionClass, overlayContainer);\n    }\n\n    return this._paneElements.get(\n      overlayContainer as UtilsToastContainerDirective\n    )![positionClass];\n  }\n\n  /**\n   * Creates the DOM element for an overlay and appends it to the overlay container.\n   * @returns Newly-created pane element\n   */\n  private _createPaneElement(\n    positionClass: string,\n    overlayContainer?: UtilsToastContainerDirective\n  ): HTMLElement {\n    const pane = this._document.createElement('div');\n    //agragamiento de estilos\n    const style = document.createElement('style');\n    style.innerHTML = DEFAULT_STYLES;\n\n    pane.id = 'toast-container';\n    pane.classList.add(positionClass);\n    pane.classList.add('toast-container');\n\n    if (!overlayContainer) {\n      this._overlayContainer.getContainerElement().appendChild(pane);\n      pane.appendChild(style);\n    } else {\n      overlayContainer.getContainerElement().appendChild(pane);\n    }\n    return pane;\n  }\n\n  /**\n   * Create a DomPortalHost into which the overlay content can be loaded.\n   * @param pane The DOM element to turn into a portal host.\n   * @returns A portal host for the given DOM element.\n   */\n  private _createPortalHost(pane: HTMLElement): DomPortalHost {\n    return new DomPortalHost(\n      pane,\n      this._componentFactoryResolver,\n      this._appRef\n    );\n  }\n\n  /**\n   * Creates an OverlayRef for an overlay in the given DOM element.\n   * @param pane DOM element for the overlay\n   */\n  private _createOverlayRef(pane: HTMLElement): OverlayRef {\n    return new OverlayRef(this._createPortalHost(pane));\n  }\n}\n","import {\n  ComponentRef,\n  Inject,\n  Injectable,\n  Injector,\n  NgZone,\n  SecurityContext,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { Observable } from 'rxjs';\nimport { Overlay } from '../components/utils-toastr/overlay/overlay';\nimport { ComponentPortal } from '../components/utils-toastr/portal/portal';\nimport { UtilsToastContainerDirective } from '../directives/utils-toast.directive';\nimport { ToastRef } from '../interfaces/toast-ref';\nimport {\n  ActiveToast,\n  GlobalConfig,\n  IndividualConfig,\n  ToastPackage,\n  ToastToken,\n  TOAST_CONFIG,\n} from '../interfaces/toastr-interface';\n\n@Injectable({ providedIn: 'root' })\nexport class UtilsToastrService {\n  toastrConfig: GlobalConfig;\n  currentlyActive = 0;\n  toasts: ActiveToast<any>[] = [];\n  overlayContainer?: UtilsToastContainerDirective;\n  previousToastMessage: string | undefined;\n  private index = 0;\n\n  constructor(\n    @Inject(TOAST_CONFIG) token: ToastToken,\n    private overlay: Overlay,\n    private _injector: Injector,\n    private sanitizer: DomSanitizer,\n    private ngZone: NgZone\n  ) {\n    this.toastrConfig = {\n      ...token.default,\n      ...token.config,\n    };\n    if (token.config.iconClasses) {\n      this.toastrConfig.iconClasses = {\n        ...token.default.iconClasses,\n        ...token.config.iconClasses,\n      };\n    }\n  }\n  /** show toast */\n  show(\n    message?: string,\n    title?: string,\n    override: Partial<IndividualConfig> = {},\n    type = ''\n  ) {\n    return this._preBuildNotification(\n      type,\n      message,\n      title,\n      this.applyConfig(override)\n    );\n  }\n  /** show successful toast */\n  success(\n    message?: string,\n    title?: string,\n    override: Partial<IndividualConfig> = {}\n  ) {\n    const type = this.toastrConfig.iconClasses.success || '';\n    return this._preBuildNotification(\n      type,\n      message,\n      title,\n      this.applyConfig(override)\n    );\n  }\n  /** show error toast */\n  error(\n    message?: string,\n    title?: string,\n    override: Partial<IndividualConfig> = {}\n  ) {\n    const type = this.toastrConfig.iconClasses.error || '';\n    return this._preBuildNotification(\n      type,\n      message,\n      title,\n      this.applyConfig(override)\n    );\n  }\n  /** show info toast */\n  info(\n    message?: string,\n    title?: string,\n    override: Partial<IndividualConfig> = {}\n  ) {\n    const type = this.toastrConfig.iconClasses.info || '';\n    return this._preBuildNotification(\n      type,\n      message,\n      title,\n      this.applyConfig(override)\n    );\n  }\n  /** show warning toast */\n  warning(\n    message?: string,\n    title?: string,\n    override: Partial<IndividualConfig> = {}\n  ) {\n    const type = this.toastrConfig.iconClasses.warning || '';\n    return this._preBuildNotification(\n      type,\n      message,\n      title,\n      this.applyConfig(override)\n    );\n  }\n  /**\n   * Remove all or a single toast by id\n   */\n  clear(toastId?: number) {\n    // Call every toastRef manualClose function\n    for (const toast of this.toasts) {\n      if (toastId !== undefined) {\n        if (toast.toastId === toastId) {\n          toast.toastRef.manualClose();\n          return;\n        }\n      } else {\n        toast.toastRef.manualClose();\n      }\n    }\n  }\n  /**\n   * Remove and destroy a single toast by id\n   */\n  remove(toastId: number) {\n    const found = this._findToast(toastId);\n    if (!found) {\n      return false;\n    }\n    found.activeToast.toastRef.close();\n    this.toasts.splice(found.index, 1);\n    this.currentlyActive = this.currentlyActive - 1;\n    if (!this.toastrConfig.maxOpened || !this.toasts.length) {\n      return false;\n    }\n    if (\n      this.currentlyActive < this.toastrConfig.maxOpened &&\n      this.toasts[this.currentlyActive]\n    ) {\n      const p = this.toasts[this.currentlyActive].toastRef;\n      if (!p.isInactive()) {\n        this.currentlyActive = this.currentlyActive + 1;\n        p.activate();\n      }\n    }\n    return true;\n  }\n\n  /**\n   * Determines if toast message is already shown\n   */\n  findDuplicate(\n    title = '',\n    message = '',\n    resetOnDuplicate: boolean,\n    countDuplicates: boolean\n  ) {\n    const { includeTitleDuplicates } = this.toastrConfig;\n\n    for (const toast of this.toasts) {\n      const hasDuplicateTitle = includeTitleDuplicates && toast.title === title;\n      if (\n        (!includeTitleDuplicates || hasDuplicateTitle) &&\n        toast.message === message\n      ) {\n        toast.toastRef.onDuplicate(resetOnDuplicate, countDuplicates);\n        return toast;\n      }\n    }\n\n    return null;\n  }\n\n  /** create a clone of global config and apply individual settings */\n  private applyConfig(override: Partial<IndividualConfig> = {}): GlobalConfig {\n    return { ...this.toastrConfig, ...override };\n  }\n\n  /**\n   * Find toast object by id\n   */\n  private _findToast(\n    toastId: number\n  ): { index: number; activeToast: ActiveToast<any> } | null {\n    for (let i = 0; i < this.toasts.length; i++) {\n      if (this.toasts[i].toastId === toastId) {\n        return { index: i, activeToast: this.toasts[i] };\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Determines the need to run inside angular's zone then builds the toast\n   */\n  private _preBuildNotification(\n    toastType: string,\n    message: string | undefined,\n    title: string | undefined,\n    config: GlobalConfig\n  ): ActiveToast<any> | null {\n    if (config.onActivateTick) {\n      return this.ngZone.run(() =>\n        this._buildNotification(toastType, message, title, config)\n      );\n    }\n    return this._buildNotification(toastType, message, title, config);\n  }\n\n  /**\n   * Creates and attaches toast data to component\n   * returns the active toast, or in case preventDuplicates is enabled the original/non-duplicate active toast.\n   */\n  private _buildNotification(\n    toastType: string,\n    message: string | undefined,\n    title: string | undefined,\n    config: GlobalConfig\n  ): ActiveToast<any> | null {\n    if (!config.toastComponent) {\n      throw new Error('toastComponent required');\n    }\n    // max opened and auto dismiss = true\n    // if timeout = 0 resetting it would result in setting this.hideTime = Date.now(). Hence, we only want to reset timeout if there is\n    // a timeout at all\n    const duplicate = this.findDuplicate(\n      title,\n      message,\n      this.toastrConfig.resetTimeoutOnDuplicate && config.timeOut > 0,\n      this.toastrConfig.countDuplicates\n    );\n    if (\n      ((this.toastrConfig.includeTitleDuplicates && title) || message) &&\n      this.toastrConfig.preventDuplicates &&\n      duplicate !== null\n    ) {\n      return duplicate;\n    }\n\n    this.previousToastMessage = message;\n    let keepInactive = false;\n    if (\n      this.toastrConfig.maxOpened &&\n      this.currentlyActive >= this.toastrConfig.maxOpened\n    ) {\n      keepInactive = true;\n      if (this.toastrConfig.autoDismiss) {\n        this.clear(this.toasts[0].toastId);\n      }\n    }\n\n    const overlayRef = this.overlay.create(\n      config.positionClass,\n      this.overlayContainer\n    );\n    this.index = this.index + 1;\n    let sanitizedMessage: string | undefined | null = message;\n    if (message && config.enableHtml) {\n      sanitizedMessage = this.sanitizer.sanitize(SecurityContext.HTML, message);\n    }\n\n    const toastRef = new ToastRef(overlayRef);\n    const toastPackage = new ToastPackage(\n      this.index,\n      config,\n      sanitizedMessage,\n      title,\n      toastType,\n      toastRef\n    );\n\n    /** New injector that contains an instance of `ToastPackage`. */\n    const providers = [{ provide: ToastPackage, useValue: toastPackage }];\n    const toastInjector = Injector.create({\n      providers,\n      parent: this._injector,\n    });\n\n    const component = new ComponentPortal(config.toastComponent, toastInjector);\n    const portal = overlayRef.attach(component, config.newestOnTop);\n    toastRef.componentInstance = portal.instance;\n    const ins: ActiveToast<any> = {\n      toastId: this.index,\n      title: title || '',\n      message: message || '',\n      toastRef,\n      onShown: toastRef.afterActivate(),\n      onHidden: toastRef.afterClosed(),\n      onTap: toastPackage.onTap(),\n      onAction: toastPackage.onAction(),\n      portal,\n    };\n\n    if (!keepInactive) {\n      this.currentlyActive = this.currentlyActive + 1;\n      setTimeout(() => {\n        ins.toastRef.activate();\n      });\n    }\n\n    this.toasts.push(ins);\n    return ins;\n  }\n}\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nimport {\n  Component,\n  HostBinding,\n  HostListener,\n  NgZone,\n  OnDestroy,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport {\n  IndividualConfig,\n  ToastPackage,\n} from '../../interfaces/toastr-interface';\nimport { UtilsToastrService } from '../../services/utils-toastr.service';\n\n@Component({\n  selector: '[toast-component]',\n  templateUrl: './utils-toastr.component.html',\n  styleUrls: ['./utils-toastr.component.scss'],\n  animations: [\n    trigger('flyInOut', [\n      state('inactive', style({ opacity: 0 })),\n      state('active', style({ opacity: 1 })),\n      state('removed', style({ opacity: 0 })),\n      transition(\n        'inactive => active',\n        animate('{{ easeTime }}ms {{ easing }}')\n      ),\n      transition('active => removed', animate('{{ easeTime }}ms {{ easing }}')),\n    ]),\n  ],\n  preserveWhitespaces: false,\n})\nexport class UtilsToastr implements OnDestroy {\n  message?: string | null;\n  title?: string;\n  options: IndividualConfig;\n  duplicatesCount!: number;\n  originalTimeout: number;\n  /** width of progress bar */\n  width = -1;\n  /** a combination of toast type and options.toastClass */\n  @HostBinding('class') toastClasses = '';\n  /** controls animation */\n  @HostBinding('@flyInOut')\n  state = {\n    value: 'inactive',\n    params: {\n      easeTime: this.toastPackage.config.easeTime,\n      easing: 'ease-in',\n    },\n  };\n\n  /** hides component when waiting to be displayed */\n  @HostBinding('style.display')\n  get displayStyle(): string | undefined {\n    if (this.state.value === 'inactive') {\n      return 'none';\n    }\n\n    return '';\n  }\n\n  private timeout: any;\n  private intervalId: any;\n  private hideTime!: number;\n  private sub: Subscription;\n  private sub1: Subscription;\n  private sub2: Subscription;\n  private sub3: Subscription;\n\n  constructor(\n    protected toastrService: UtilsToastrService,\n    public toastPackage: ToastPackage,\n    protected ngZone?: NgZone\n  ) {\n    this.message = toastPackage.message;\n    this.title = toastPackage.title;\n    this.options = toastPackage.config;\n    this.originalTimeout = toastPackage.config.timeOut;\n    this.toastClasses = `${toastPackage.toastType} ${toastPackage.config.toastClass}`;\n    this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n      this.activateToast();\n    });\n    this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n      this.remove();\n    });\n    this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n      this.resetTimeout();\n    });\n    this.sub3 = toastPackage.toastRef.countDuplicate().subscribe((count) => {\n      this.duplicatesCount = count;\n    });\n  }\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n    this.sub1.unsubscribe();\n    this.sub2.unsubscribe();\n    this.sub3.unsubscribe();\n    clearInterval(this.intervalId);\n    clearTimeout(this.timeout);\n  }\n  /**\n   * activates toast and sets timeout\n   */\n  activateToast() {\n    this.state = { ...this.state, value: 'active' };\n    if (\n      !(\n        this.options.disableTimeOut === true ||\n        this.options.disableTimeOut === 'timeOut'\n      ) &&\n      this.options.timeOut\n    ) {\n      this.outsideTimeout(() => this.remove(), this.options.timeOut);\n      this.hideTime = new Date().getTime() + this.options.timeOut;\n      if (this.options.progressBar) {\n        this.outsideInterval(() => this.updateProgress(), 10);\n      }\n    }\n  }\n  /**\n   * updates progress bar width\n   */\n  updateProgress() {\n    if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n      return;\n    }\n    const now = new Date().getTime();\n    const remaining = this.hideTime - now;\n    this.width = (remaining / this.options.timeOut) * 100;\n    if (this.options.progressAnimation === 'increasing') {\n      this.width = 100 - this.width;\n    }\n    if (this.width <= 0) {\n      this.width = 0;\n    }\n    if (this.width >= 100) {\n      this.width = 100;\n    }\n  }\n\n  resetTimeout() {\n    clearTimeout(this.timeout);\n    clearInterval(this.intervalId);\n    this.state = { ...this.state, value: 'active' };\n\n    this.outsideTimeout(() => this.remove(), this.originalTimeout);\n    this.options.timeOut = this.originalTimeout;\n    this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n    this.width = -1;\n    if (this.options.progressBar) {\n      this.outsideInterval(() => this.updateProgress(), 10);\n    }\n  }\n\n  /**\n   * tells toastrService to remove this toast after animation time\n   */\n  remove() {\n    if (this.state.value === 'removed') {\n      return;\n    }\n    clearTimeout(this.timeout);\n    this.state = { ...this.state, value: 'removed' };\n    this.outsideTimeout(\n      () => this.toastrService.remove(this.toastPackage.toastId),\n      +this.toastPackage.config.easeTime\n    );\n  }\n  @HostListener('click')\n  tapToast() {\n    if (this.state.value === 'removed') {\n      return;\n    }\n    this.toastPackage.triggerTap();\n    if (this.options.tapToDismiss) {\n      this.remove();\n    }\n  }\n  @HostListener('mouseenter')\n  stickAround() {\n    if (this.state.value === 'removed') {\n      return;\n    }\n\n    if (this.options.disableTimeOut !== 'extendedTimeOut') {\n      clearTimeout(this.timeout);\n      this.options.timeOut = 0;\n      this.hideTime = 0;\n\n      // disable progressBar\n      clearInterval(this.intervalId);\n      this.width = 0;\n    }\n  }\n  @HostListener('mouseleave')\n  delayedHideToast() {\n    if (\n      this.options.disableTimeOut === true ||\n      this.options.disableTimeOut === 'extendedTimeOut' ||\n      this.options.extendedTimeOut === 0 ||\n      this.state.value === 'removed'\n    ) {\n      return;\n    }\n    this.outsideTimeout(() => this.remove(), this.options.extendedTimeOut);\n    this.options.timeOut = this.options.extendedTimeOut;\n    this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n    this.width = -1;\n    if (this.options.progressBar) {\n      this.outsideInterval(() => this.updateProgress(), 10);\n    }\n  }\n\n  outsideTimeout(func: () => any, timeout: number) {\n    if (this.ngZone) {\n      this.ngZone.runOutsideAngular(\n        () =>\n          (this.timeout = setTimeout(\n            () => this.runInsideAngular(func),\n            timeout\n          ))\n      );\n    } else {\n      this.timeout = setTimeout(() => func(), timeout);\n    }\n  }\n\n  outsideInterval(func: () => any, timeout: number) {\n    if (this.ngZone) {\n      this.ngZone.runOutsideAngular(\n        () =>\n          (this.intervalId = setInterval(\n            () => this.runInsideAngular(func),\n            timeout\n          ))\n      );\n    } else {\n      this.intervalId = setInterval(() => func(), timeout);\n    }\n  }\n\n  private runInsideAngular(func: () => any) {\n    if (this.ngZone) {\n      this.ngZone.run(() => func());\n    } else {\n      func();\n    }\n  }\n}\n","<button *ngIf=\"options.closeButton\" (click)=\"remove()\" type=\"button\" class=\"toast-close-button\" aria-label=\"Close\">\n  <span aria-hidden=\"true\">&times;</span>\n</button>\n<div *ngIf=\"title\" [class]=\"options.titleClass\" [attr.aria-label]=\"title\">\n  {{ title }} <ng-container *ngIf=\"duplicatesCount\">[{{ duplicatesCount + 1 }}]</ng-container>\n</div>\n<div *ngIf=\"message && options.enableHtml\" role=\"alert\" [class]=\"options.messageClass\" [innerHTML]=\"message\">\n</div>\n<div *ngIf=\"message && !options.enableHtml\" role=\"alert\" [class]=\"options.messageClass\" [attr.aria-label]=\"message\">\n  {{ message }}\n</div>\n<div *ngIf=\"options.progressBar\">\n  <div class=\"toast-progress\" [style.width]=\"width + '%'\"></div>\n</div>","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { UtilsToastr } from '../components/utils-toastr/utils-toastr.component';\nimport {\n  DefaultNoComponentGlobalConfig,\n  GlobalConfig,\n  TOAST_CONFIG,\n} from '../interfaces/toastr-interface';\n\nexport const DefaultGlobalConfig: GlobalConfig = {\n  ...DefaultNoComponentGlobalConfig,\n  toastComponent: UtilsToastr,\n};\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [UtilsToastr],\n  exports: [UtilsToastr],\n})\nexport class UtilsToastrModule {\n  static forRoot(\n    config: Partial<GlobalConfig> = {}\n  ): ModuleWithProviders<UtilsToastrModule> {\n    return {\n      ngModule: UtilsToastrModule,\n      providers: [\n        {\n          provide: TOAST_CONFIG,\n          useValue: {\n            default: DefaultGlobalConfig,\n            config,\n          },\n        },\n      ],\n    };\n  }\n}\n\n@NgModule({\n  imports: [CommonModule],\n})\nexport class ToastrComponentlessModule {\n  static forRoot(\n    config: Partial<GlobalConfig> = {}\n  ): ModuleWithProviders<UtilsToastrModule> {\n    return {\n      ngModule: UtilsToastrModule,\n      providers: [\n        {\n          provide: TOAST_CONFIG,\n          useValue: {\n            default: DefaultNoComponentGlobalConfig,\n            config,\n          },\n        },\n      ],\n    };\n  }\n}\n","import { Directive, ElementRef, OnInit } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n/*\n\"Property 'nativeElement' does not exist on type 'FormControl'\".\n'NativeElementInjectorDirective' injects nativeElement to each control,\nso we can access it from inside validator for example.\nMore about this approach and reasons for this:\nhttps://github.com/angular/angular/issues/18025\nhttps://stackoverflow.com/a/54075119/1617590\n*/\n@Directive({\n  // tslint:disable-next-line: directive-selector\n  selector: '[ngModel], [formControl], [formControlName]',\n})\nexport class UtilsNativeElementInjectorDirective implements OnInit {\n  constructor(\n    private controlDir: NgControl,\n    private host: ElementRef<HTMLFormElement>\n  ) {}\n  ngOnInit() {\n    if (this.controlDir.control) {\n      // @ts-ignore\n      this.controlDir.control['nativeElement'] = this.host.nativeElement;\n    }\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'truncate',\n})\nexport class UtilsTruncatePipe implements PipeTransform {\n  transform(value: string, args: any[]): string {\n    const limit = args.length > 0 ? parseInt(args[0], 10) : 20;\n    const trail = args.length > 1 ? args[1] : '...';\n    return value.length > limit ? value.substring(0, limit) + trail : value;\n  }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'lib-ngx-danisoft-utils',\n  templateUrl: './ngx-danisoft-utils.component.html',\n  styleUrls: ['./ngx-danisoft-utils.component.scss'],\n  providers: [],\n})\nexport class NgxDanisoftUtilsComponent {}\n","","export enum CountryISO {\n\tAfghanistan = 'af',\n\tAlbania = 'al',\n\tAlgeria = 'dz',\n\tAmericanSamoa = 'as',\n\tAndorra = 'ad',\n\tAngola = 'ao',\n\tAnguilla = 'ai',\n\tAntiguaAndBarbuda = 'ag',\n\tArgentina = 'ar',\n\tArmenia = 'am',\n\tAruba = 'aw',\n\tAustralia = 'au',\n\tAustria = 'at',\n\tAzerbaijan = 'az',\n\tBahamas = 'bs',\n\tBahrain = 'bh',\n\tBangladesh = 'bd',\n\tBarbados = 'bb',\n\tBelarus = 'by',\n\tBelgium = 'be',\n\tBelize = 'bz',\n\tBenin = 'bj',\n\tBermuda = 'bm',\n\tBhutan = 'bt',\n\tBolivia = 'bo',\n\tBosniaAndHerzegovina = 'ba',\n\tBotswana = 'bw',\n\tBrazil = 'br',\n\tBritishIndianOceanTerritory = 'io',\n\tBritishVirginIslands = 'vg',\n\tBrunei = 'bn',\n\tBulgaria = 'bg',\n\tBurkinaFaso = 'bf',\n\tBurundi = 'bi',\n\tCambodia = 'kh',\n\tCameroon = 'cm',\n\tCanada = 'ca',\n\tCapeVerde = 'cv',\n\tCaribbeanNetherlands = 'bq',\n\tCaymanIslands = 'ky',\n\tCentralAfricanRepublic = 'cf',\n\tChad = 'td',\n\tChile = 'cl',\n\tChina = 'cn',\n\tChristmasIsland = 'cx',\n\tCocos = 'cc',\n\tColombia = 'co',\n\tComoros = 'km',\n\tCongoDRCJamhuriYaKidemokrasiaYaKongo = 'cd',\n\tCongoRepublicCongoBrazzaville = 'cg',\n\tCookIslands = 'ck',\n\tCostaRica = 'cr',\n\tCôteDIvoire = 'ci',\n\tCroatia = 'hr',\n\tCuba = 'cu',\n\tCuraçao = 'cw',\n\tCyprus = 'cy',\n\tCzechRepublic = 'cz',\n\tDenmark = 'dk',\n\tDjibouti = 'dj',\n\tDominica = 'dm',\n\tDominicanRepublic = 'do',\n\tEcuador = 'ec',\n\tEgypt = 'eg',\n\tElSalvador = 'sv',\n\tEquatorialGuinea = 'gq',\n\tEritrea = 'er',\n\tEstonia = 'ee',\n\tEthiopia = 'et',\n\tFalklandIslands = 'fk',\n\tFaroeIslands = 'fo',\n\tFiji = 'fj',\n\tFinland = 'fi',\n\tFrance = 'fr',\n\tFrenchGuiana = 'gf',\n\tFrenchPolynesia = 'pf',\n\tGabon = 'ga',\n\tGambia = 'gm',\n\tGeorgia = 'ge',\n\tGermany = 'de',\n\tGhana = 'gh',\n\tGibraltar = 'gi',\n\tGreece = 'gr',\n\tGreenland = 'gl',\n\tGrenada = 'gd',\n\tGuadeloupe = 'gp',\n\tGuam = 'gu',\n\tGuatemala = 'gt',\n\tGuernsey = 'gg',\n\tGuinea = 'gn',\n\tGuineaBissau = 'gw',\n\tGuyana = 'gy',\n\tHaiti = 'ht',\n\tHonduras = 'hn',\n\tHongKong = 'hk',\n\tHungary = 'hu',\n\tIceland = 'is',\n\tIndia = 'in',\n\tIndonesia = 'id',\n\tIran = 'ir',\n\tIraq = 'iq',\n\tIreland = 'ie',\n\tIsleOfMan = 'im',\n\tIsrael = 'il',\n\tItaly = 'it',\n\tJamaica = 'jm',\n\tJapan = 'jp',\n\tJersey = 'je',\n\tJordan = 'jo',\n\tKazakhstan = 'kz',\n\tKenya = 'ke',\n\tKiribati = 'ki',\n\tKosovo = 'xk',\n\tKuwait = 'kw',\n\tKyrgyzstan = 'kg',\n\tLaos = 'la',\n\tLatvia = 'lv',\n\tLebanon = 'lb',\n\tLesotho = 'ls',\n\tLiberia = 'lr',\n\tLibya = 'ly',\n\tLiechtenstein = 'li',\n\tLithuania = 'lt',\n\tLuxembourg = 'lu',\n\tMacau = 'mo',\n\tMacedonia = 'mk',\n\tMadagascar = 'mg',\n\tMalawi = 'mw',\n\tMalaysia = 'my',\n\tMaldives = 'mv',\n\tMali = 'ml',\n\tMalta = 'mt',\n\tMarshallIslands = 'mh',\n\tMartinique = 'mq',\n\tMauritania = 'mr',\n\tMauritius = 'mu',\n\tMayotte = 'yt',\n\tMexico = 'mx',\n\tMicronesia = 'fm',\n\tMoldova = 'md',\n\tMonaco = 'mc',\n\tMongolia = 'mn',\n\tMontenegro = 'me',\n\tMontserrat = 'ms',\n\tMorocco = 'ma',\n\tMozambique = 'mz',\n\tMyanmar = 'mm',\n\tNamibia = 'na',\n\tNauru = 'nr',\n\tNepal = 'np',\n\tNetherlands = 'nl',\n\tNewCaledonia = 'nc',\n\tNewZealand = 'nz',\n\tNicaragua = 'ni',\n\tNiger = 'ne',\n\tNigeria = 'ng',\n\tNiue = 'nu',\n\tNorfolkIsland = 'nf',\n\tNorthKorea = 'kp',\n\tNorthernMarianaIslands = 'mp',\n\tNorway = 'no',\n\tOman = 'om',\n\tPakistan = 'pk',\n\tPalau = 'pw',\n\tPalestine = 'ps',\n\tPanama = 'pa',\n\tPapuaNewGuinea = 'pg',\n\tParaguay = 'py',\n\tPeru = 'pe',\n\tPhilippines = 'ph',\n\tPoland = 'pl',\n\tPortugal = 'pt',\n\tPuertoRico = 'pr',\n\tQatar = 'qa',\n\tRéunion = 're',\n\tRomania = 'ro',\n\tRussia = 'ru',\n\tRwanda = 'rw',\n\tSaintBarthélemy = 'bl',\n\tSaintHelena = 'sh',\n\tSaintKittsAndNevis = 'kn',\n\tSaintLucia = 'lc',\n\tSaintMartin = 'mf',\n\tSaintPierreAndMiquelon = 'pm',\n\tSaintVincentAndTheGrenadines = 'vc',\n\tSamoa = 'ws',\n\tSanMarino = 'sm',\n\tSãoToméAndPríncipe = 'st',\n\tSaudiArabia = 'sa',\n\tSenegal = 'sn',\n\tSerbia = 'rs',\n\tSeychelles = 'sc',\n\tSierraLeone = 'sl',\n\tSingapore = 'sg',\n\tSintMaarten = 'sx',\n\tSlovakia = 'sk',\n\tSlovenia = 'si',\n\tSolomonIslands = 'sb',\n\tSomalia = 'so',\n\tSouthAfrica = 'za',\n\tSouthKorea = 'kr',\n\tSouthSudan = 'ss',\n\tSpain = 'es',\n\tSriLanka = 'lk',\n\tSudan = 'sd',\n\tSuriname = 'sr',\n\tSvalbardAndJanMayen = 'sj',\n\tSwaziland = 'sz',\n\tSweden = 'se',\n\tSwitzerland = 'ch',\n\tSyria = 'sy',\n\tTaiwan = 'tw',\n\tTajikistan = 'tj',\n\tTanzania = 'tz',\n\tThailand = 'th',\n\tTimorLeste = 'tl',\n\tTogo = 'tg',\n\tTokelau = 'tk',\n\tTonga = 'to',\n\tTrinidadAndTobago = 'tt',\n\tTunisia = 'tn',\n\tTurkey = 'tr',\n\tTurkmenistan = 'tm',\n\tTurksAndCaicosIslands = 'tc',\n\tTuvalu = 'tv',\n\tUSVirginIslands = 'vi',\n\tUganda = 'ug',\n\tUkraine = 'ua',\n\tUnitedArabEmirates = 'ae',\n\tUnitedKingdom = 'gb',\n\tUnitedStates = 'us',\n\tUruguay = 'uy',\n\tUzbekistan = 'uz',\n\tVanuatu = 'vu',\n\tVaticanCity = 'va',\n\tVenezuela = 've',\n\tVietnam = 'vn',\n\tWallisAndFutuna = 'wf',\n\tWesternSahara = 'eh',\n\tYemen = 'ye',\n\tZambia = 'zm',\n\tZimbabwe = 'zw',\n\tÅlandIslands = 'ax',\n}\n","import { Injectable } from \"@angular/core\";\nimport { CountryISO } from '../enums/country-iso.enum';\n\n@Injectable()\nexport class CountryCode {\n\tpublic allCountries = [\n\t\t[\n\t\t\t'Afghanistan (‫افغانستان‬‎)',\n\t\t\tCountryISO.Afghanistan,\n\t\t\t'93'\n\t\t],\n\t\t[\n\t\t\t'Albania (Shqipëri)',\n\t\t\tCountryISO.Albania,\n\t\t\t'355'\n\t\t],\n\t\t[\n\t\t\t'Algeria (‫الجزائر‬‎)',\n\t\t\tCountryISO.Algeria,\n\t\t\t'213'\n\t\t],\n\t\t[\n\t\t\t'American Samoa',\n\t\t\t'as',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'684',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Andorra',\n\t\t\tCountryISO.Andorra,\n\t\t\t'376'\n\t\t],\n\t\t[\n\t\t\t'Angola',\n\t\t\tCountryISO.Angola,\n\t\t\t'244'\n\t\t],\n\t\t[\n\t\t\t'Anguilla',\n\t\t\t'ai',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'264',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Antigua and Barbuda',\n\t\t\t'ag',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'268',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Argentina',\n\t\t\tCountryISO.Argentina,\n\t\t\t'54'\n\t\t],\n\t\t[\n\t\t\t'Armenia (Հայաստան)',\n\t\t\tCountryISO.Armenia,\n\t\t\t'374'\n\t\t],\n\t\t[\n\t\t\t'Aruba',\n\t\t\tCountryISO.Aruba,\n\t\t\t'297'\n\t\t],\n\t\t[\n\t\t\t'Australia',\n\t\t\tCountryISO.Australia,\n\t\t\t'61',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Austria (Österreich)',\n\t\t\tCountryISO.Austria,\n\t\t\t'43'\n\t\t],\n\t\t[\n\t\t\t'Azerbaijan (Azərbaycan)',\n\t\t\tCountryISO.Azerbaijan,\n\t\t\t'994'\n\t\t],\n\t\t[\n\t\t\t'Bahamas',\n\t\t\t'bs',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'242',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Bahrain (‫البحرين‬‎)',\n\t\t\tCountryISO.Bahrain,\n\t\t\t'973'\n\t\t],\n\t\t[\n\t\t\t'Bangladesh (বাংলাদেশ)',\n\t\t\tCountryISO.Bangladesh,\n\t\t\t'880'\n\t\t],\n\t\t[\n\t\t\t'Barbados',\n\t\t\t'bb',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'246',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Belarus (Беларусь)',\n\t\t\tCountryISO.Belarus,\n\t\t\t'375'\n\t\t],\n\t\t[\n\t\t\t'Belgium (België)',\n\t\t\tCountryISO.Belgium,\n\t\t\t'32'\n\t\t],\n\t\t[\n\t\t\t'Belize',\n\t\t\tCountryISO.Belize,\n\t\t\t'501'\n\t\t],\n\t\t[\n\t\t\t'Benin (Bénin)',\n\t\t\tCountryISO.Benin,\n\t\t\t'229'\n\t\t],\n\t\t[\n\t\t\t'Bermuda',\n\t\t\t'bm',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'441',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Bhutan (འབྲུག)',\n\t\t\tCountryISO.Bhutan,\n\t\t\t'975'\n\t\t],\n\t\t[\n\t\t\t'Bolivia',\n\t\t\tCountryISO.Bolivia,\n\t\t\t'591'\n\t\t],\n\t\t[\n\t\t\t'Bosnia and Herzegovina (Босна и Херцеговина)',\n\t\t\tCountryISO.BosniaAndHerzegovina,\n\t\t\t'387'\n\t\t],\n\t\t[\n\t\t\t'Botswana',\n\t\t\tCountryISO.Botswana,\n\t\t\t'267'\n\t\t],\n\t\t[\n\t\t\t'Brazil (Brasil)',\n\t\t\tCountryISO.Brazil,\n\t\t\t'55'\n\t\t],\n\t\t[\n\t\t\t'British Indian Ocean Territory',\n\t\t\tCountryISO.BritishIndianOceanTerritory,\n\t\t\t'246'\n\t\t],\n\t\t[\n\t\t\t'British Virgin Islands',\n\t\t\t'vg',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'284',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Brunei',\n\t\t\tCountryISO.Brunei,\n\t\t\t'673'\n\t\t],\n\t\t[\n\t\t\t'Bulgaria (България)',\n\t\t\tCountryISO.Bulgaria,\n\t\t\t'359'\n\t\t],\n\t\t[\n\t\t\t'Burkina Faso',\n\t\t\tCountryISO.BurkinaFaso,\n\t\t\t'226'\n\t\t],\n\t\t[\n\t\t\t'Burundi (Uburundi)',\n\t\t\tCountryISO.Burundi,\n\t\t\t'257'\n\t\t],\n\t\t[\n\t\t\t'Cambodia (កម្ពុជា)',\n\t\t\tCountryISO.Cambodia,\n\t\t\t'855'\n\t\t],\n\t\t[\n\t\t\t'Cameroon (Cameroun)',\n\t\t\tCountryISO.Cameroon,\n\t\t\t'237'\n\t\t],\n\t\t[\n\t\t\t'Canada',\n\t\t\tCountryISO.Canada,\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'204', '226', '236', '249', '250', '289', '306', '343', '365', '387', '403', '416',\n\t\t\t\t'418', '431', '437', '438', '450', '506', '514', '519', '548', '579', '581', '587',\n\t\t\t\t'604', '613', '639', '647', '672', '705', '709', '742', '778', '780', '782', '807',\n\t\t\t\t'819', '825', '867', '873', '902', '905'\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Cape Verde (Kabu Verdi)',\n\t\t\tCountryISO.CapeVerde,\n\t\t\t'238'\n\t\t],\n\t\t[\n\t\t\t'Caribbean Netherlands',\n\t\t\tCountryISO.CaribbeanNetherlands,\n\t\t\t'599',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Cayman Islands',\n\t\t\t'ky',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'345',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Central African Republic (République centrafricaine)',\n\t\t\tCountryISO.CentralAfricanRepublic,\n\t\t\t'236'\n\t\t],\n\t\t[\n\t\t\t'Chad (Tchad)',\n\t\t\tCountryISO.Chad,\n\t\t\t'235'\n\t\t],\n\t\t[\n\t\t\t'Chile',\n\t\t\tCountryISO.Chile,\n\t\t\t'56'\n\t\t],\n\t\t[\n\t\t\t'China (中国)',\n\t\t\tCountryISO.China,\n\t\t\t'86'\n\t\t],\n\t\t[\n\t\t\t'Christmas Island',\n\t\t\tCountryISO.ChristmasIsland,\n\t\t\t'61',\n\t\t\t2\n\t\t],\n\t\t[\n\t\t\t'Cocos (Keeling) Islands',\n\t\t\tCountryISO.Cocos,\n\t\t\t'61',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Colombia',\n\t\t\tCountryISO.Colombia,\n\t\t\t'57'\n\t\t],\n\t\t[\n\t\t\t'Comoros (‫جزر القمر‬‎)',\n\t\t\tCountryISO.Comoros,\n\t\t\t'269'\n\t\t],\n\t\t[\n\t\t\t'Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)',\n\t\t\tCountryISO.CongoDRCJamhuriYaKidemokrasiaYaKongo,\n\t\t\t'243'\n\t\t],\n\t\t[\n\t\t\t'Congo (Republic) (Congo-Brazzaville)',\n\t\t\tCountryISO.CongoRepublicCongoBrazzaville,\n\t\t\t'242'\n\t\t],\n\t\t[\n\t\t\t'Cook Islands',\n\t\t\tCountryISO.CookIslands,\n\t\t\t'682'\n\t\t],\n\t\t[\n\t\t\t'Costa Rica',\n\t\t\tCountryISO.CostaRica,\n\t\t\t'506'\n\t\t],\n\t\t[\n\t\t\t'Côte d’Ivoire',\n\t\t\tCountryISO.CôteDIvoire,\n\t\t\t'225'\n\t\t],\n\t\t[\n\t\t\t'Croatia (Hrvatska)',\n\t\t\tCountryISO.Croatia,\n\t\t\t'385'\n\t\t],\n\t\t[\n\t\t\t'Cuba',\n\t\t\tCountryISO.Cuba,\n\t\t\t'53'\n\t\t],\n\t\t[\n\t\t\t'Curaçao',\n\t\t\tCountryISO.Curaçao,\n\t\t\t'599',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Cyprus (Κύπρος)',\n\t\t\tCountryISO.Cyprus,\n\t\t\t'357'\n\t\t],\n\t\t[\n\t\t\t'Czech Republic (Česká republika)',\n\t\t\tCountryISO.CzechRepublic,\n\t\t\t'420'\n\t\t],\n\t\t[\n\t\t\t'Denmark (Danmark)',\n\t\t\tCountryISO.Denmark,\n\t\t\t'45'\n\t\t],\n\t\t[\n\t\t\t'Djibouti',\n\t\t\tCountryISO.Djibouti,\n\t\t\t'253'\n\t\t],\n\t\t[\n\t\t\t'Dominica',\n\t\t\tCountryISO.Dominica,\n\t\t\t'1767'\n\t\t],\n\t\t[\n\t\t\t'Dominican Republic (República Dominicana)',\n\t\t\tCountryISO.DominicanRepublic,\n\t\t\t'1',\n\t\t\t2,\n\t\t\t['809', '829', '849']\n\t\t],\n\t\t[\n\t\t\t'Ecuador',\n\t\t\tCountryISO.Ecuador,\n\t\t\t'593'\n\t\t],\n\t\t[\n\t\t\t'Egypt (‫مصر‬‎)',\n\t\t\tCountryISO.Egypt,\n\t\t\t'20'\n\t\t],\n\t\t[\n\t\t\t'El Salvador',\n\t\t\tCountryISO.ElSalvador,\n\t\t\t'503'\n\t\t],\n\t\t[\n\t\t\t'Equatorial Guinea (Guinea Ecuatorial)',\n\t\t\tCountryISO.EquatorialGuinea,\n\t\t\t'240'\n\t\t],\n\t\t[\n\t\t\t'Eritrea',\n\t\t\tCountryISO.Eritrea,\n\t\t\t'291'\n\t\t],\n\t\t[\n\t\t\t'Estonia (Eesti)',\n\t\t\tCountryISO.Estonia,\n\t\t\t'372'\n\t\t],\n\t\t[\n\t\t\t'Ethiopia',\n\t\t\tCountryISO.Ethiopia,\n\t\t\t'251'\n\t\t],\n\t\t[\n\t\t\t'Falkland Islands (Islas Malvinas)',\n\t\t\tCountryISO.FalklandIslands,\n\t\t\t'500'\n\t\t],\n\t\t[\n\t\t\t'Faroe Islands (Føroyar)',\n\t\t\tCountryISO.FaroeIslands,\n\t\t\t'298'\n\t\t],\n\t\t[\n\t\t\t'Fiji',\n\t\t\tCountryISO.Fiji,\n\t\t\t'679'\n\t\t],\n\t\t[\n\t\t\t'Finland (Suomi)',\n\t\t\tCountryISO.Finland,\n\t\t\t'358',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'France',\n\t\t\tCountryISO.France,\n\t\t\t'33'\n\t\t],\n\t\t[\n\t\t\t'French Guiana (Guyane française)',\n\t\t\tCountryISO.FrenchGuiana,\n\t\t\t'594'\n\t\t],\n\t\t[\n\t\t\t'French Polynesia (Polynésie française)',\n\t\t\tCountryISO.FrenchPolynesia,\n\t\t\t'689'\n\t\t],\n\t\t[\n\t\t\t'Gabon',\n\t\t\tCountryISO.Gabon,\n\t\t\t'241'\n\t\t],\n\t\t[\n\t\t\t'Gambia',\n\t\t\tCountryISO.Gambia,\n\t\t\t'220'\n\t\t],\n\t\t[\n\t\t\t'Georgia (საქართველო)',\n\t\t\tCountryISO.Georgia,\n\t\t\t'995'\n\t\t],\n\t\t[\n\t\t\t'Germany (Deutschland)',\n\t\t\tCountryISO.Germany,\n\t\t\t'49'\n\t\t],\n\t\t[\n\t\t\t'Ghana (Gaana)',\n\t\t\tCountryISO.Ghana,\n\t\t\t'233'\n\t\t],\n\t\t[\n\t\t\t'Gibraltar',\n\t\t\tCountryISO.Gibraltar,\n\t\t\t'350'\n\t\t],\n\t\t[\n\t\t\t'Greece (Ελλάδα)',\n\t\t\tCountryISO.Greece,\n\t\t\t'30'\n\t\t],\n\t\t[\n\t\t\t'Greenland (Kalaallit Nunaat)',\n\t\t\tCountryISO.Greenland,\n\t\t\t'299'\n\t\t],\n\t\t[\n\t\t\t'Grenada',\n\t\t\tCountryISO.Grenada,\n\t\t\t'1473'\n\t\t],\n\t\t[\n\t\t\t'Guadeloupe',\n\t\t\tCountryISO.Guadeloupe,\n\t\t\t'590',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Guam',\n\t\t\t'gu',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'671',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Guatemala',\n\t\t\tCountryISO.Guatemala,\n\t\t\t'502'\n\t\t],\n\t\t[\n\t\t\t'Guernsey',\n\t\t\tCountryISO.Guernsey,\n\t\t\t'44',\n\t\t\t1,\n\t\t\t[1481]\n\t\t],\n\t\t[\n\t\t\t'Guinea (Guinée)',\n\t\t\tCountryISO.Guinea,\n\t\t\t'224'\n\t\t],\n\t\t[\n\t\t\t'Guinea-Bissau (Guiné Bissau)',\n\t\t\tCountryISO.GuineaBissau,\n\t\t\t'245'\n\t\t],\n\t\t[\n\t\t\t'Guyana',\n\t\t\tCountryISO.Guyana,\n\t\t\t'592'\n\t\t],\n\t\t[\n\t\t\t'Haiti',\n\t\t\tCountryISO.Haiti,\n\t\t\t'509'\n\t\t],\n\t\t[\n\t\t\t'Honduras',\n\t\t\tCountryISO.Honduras,\n\t\t\t'504'\n\t\t],\n\t\t[\n\t\t\t'Hong Kong (香港)',\n\t\t\tCountryISO.HongKong,\n\t\t\t'852'\n\t\t],\n\t\t[\n\t\t\t'Hungary (Magyarország)',\n\t\t\tCountryISO.Hungary,\n\t\t\t'36'\n\t\t],\n\t\t[\n\t\t\t'Iceland (Ísland)',\n\t\t\tCountryISO.Iceland,\n\t\t\t'354'\n\t\t],\n\t\t[\n\t\t\t'India (भारत)',\n\t\t\tCountryISO.India,\n\t\t\t'91'\n\t\t],\n\t\t[\n\t\t\t'Indonesia',\n\t\t\tCountryISO.Indonesia,\n\t\t\t'62'\n\t\t],\n\t\t[\n\t\t\t'Iran (‫ایران‬‎)',\n\t\t\tCountryISO.Iran,\n\t\t\t'98'\n\t\t],\n\t\t[\n\t\t\t'Iraq (‫العراق‬‎)',\n\t\t\tCountryISO.Iraq,\n\t\t\t'964'\n\t\t],\n\t\t[\n\t\t\t'Ireland',\n\t\t\tCountryISO.Ireland,\n\t\t\t'353'\n\t\t],\n\t\t[\n\t\t\t'Isle of Man',\n\t\t\tCountryISO.IsleOfMan,\n\t\t\t'44',\n\t\t\t2,\n\t\t\t[1624]\n\t\t],\n\t\t[\n\t\t\t'Israel (‫ישראל‬‎)',\n\t\t\tCountryISO.Israel,\n\t\t\t'972'\n\t\t],\n\t\t[\n\t\t\t'Italy (Italia)',\n\t\t\tCountryISO.Italy,\n\t\t\t'39',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Jamaica',\n\t\t\t'jm',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'876',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Japan (日本)',\n\t\t\tCountryISO.Japan,\n\t\t\t'81'\n\t\t],\n\t\t[\n\t\t\t'Jersey',\n\t\t\tCountryISO.Jersey,\n\t\t\t'44',\n\t\t\t3,\n\t\t\t[1534]\n\t\t],\n\t\t[\n\t\t\t'Jordan (‫الأردن‬‎)',\n\t\t\tCountryISO.Jordan,\n\t\t\t'962'\n\t\t],\n\t\t[\n\t\t\t'Kazakhstan (Казахстан)',\n\t\t\tCountryISO.Kazakhstan,\n\t\t\t'7',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Kenya',\n\t\t\tCountryISO.Kenya,\n\t\t\t'254'\n\t\t],\n\t\t[\n\t\t\t'Kiribati',\n\t\t\tCountryISO.Kiribati,\n\t\t\t'686'\n\t\t],\n\t\t[\n\t\t\t'Kosovo',\n\t\t\tCountryISO.Kosovo,\n\t\t\t'383'\n\t\t],\n\t\t[\n\t\t\t'Kuwait (‫الكويت‬‎)',\n\t\t\tCountryISO.Kuwait,\n\t\t\t'965'\n\t\t],\n\t\t[\n\t\t\t'Kyrgyzstan (Кыргызстан)',\n\t\t\tCountryISO.Kyrgyzstan,\n\t\t\t'996'\n\t\t],\n\t\t[\n\t\t\t'Laos (ລາວ)',\n\t\t\tCountryISO.Laos,\n\t\t\t'856'\n\t\t],\n\t\t[\n\t\t\t'Latvia (Latvija)',\n\t\t\tCountryISO.Latvia,\n\t\t\t'371'\n\t\t],\n\t\t[\n\t\t\t'Lebanon (‫لبنان‬‎)',\n\t\t\tCountryISO.Lebanon,\n\t\t\t'961'\n\t\t],\n\t\t[\n\t\t\t'Lesotho',\n\t\t\tCountryISO.Lesotho,\n\t\t\t'266'\n\t\t],\n\t\t[\n\t\t\t'Liberia',\n\t\t\tCountryISO.Liberia,\n\t\t\t'231'\n\t\t],\n\t\t[\n\t\t\t'Libya (‫ليبيا‬‎)',\n\t\t\tCountryISO.Libya,\n\t\t\t'218'\n\t\t],\n\t\t[\n\t\t\t'Liechtenstein',\n\t\t\tCountryISO.Liechtenstein,\n\t\t\t'423'\n\t\t],\n\t\t[\n\t\t\t'Lithuania (Lietuva)',\n\t\t\tCountryISO.Lithuania,\n\t\t\t'370'\n\t\t],\n\t\t[\n\t\t\t'Luxembourg',\n\t\t\tCountryISO.Luxembourg,\n\t\t\t'352'\n\t\t],\n\t\t[\n\t\t\t'Macau (澳門)',\n\t\t\tCountryISO.Macau,\n\t\t\t'853'\n\t\t],\n\t\t[\n\t\t\t'Macedonia (FYROM) (Македонија)',\n\t\t\tCountryISO.Macedonia,\n\t\t\t'389'\n\t\t],\n\t\t[\n\t\t\t'Madagascar (Madagasikara)',\n\t\t\tCountryISO.Madagascar,\n\t\t\t'261'\n\t\t],\n\t\t[\n\t\t\t'Malawi',\n\t\t\tCountryISO.Malawi,\n\t\t\t'265'\n\t\t],\n\t\t[\n\t\t\t'Malaysia',\n\t\t\tCountryISO.Malaysia,\n\t\t\t'60'\n\t\t],\n\t\t[\n\t\t\t'Maldives',\n\t\t\tCountryISO.Maldives,\n\t\t\t'960'\n\t\t],\n\t\t[\n\t\t\t'Mali',\n\t\t\tCountryISO.Mali,\n\t\t\t'223'\n\t\t],\n\t\t[\n\t\t\t'Malta',\n\t\t\tCountryISO.Malta,\n\t\t\t'356'\n\t\t],\n\t\t[\n\t\t\t'Marshall Islands',\n\t\t\tCountryISO.MarshallIslands,\n\t\t\t'692'\n\t\t],\n\t\t[\n\t\t\t'Martinique',\n\t\t\tCountryISO.Martinique,\n\t\t\t'596'\n\t\t],\n\t\t[\n\t\t\t'Mauritania (‫موريتانيا‬‎)',\n\t\t\tCountryISO.Mauritania,\n\t\t\t'222'\n\t\t],\n\t\t[\n\t\t\t'Mauritius (Moris)',\n\t\t\tCountryISO.Mauritius,\n\t\t\t'230'\n\t\t],\n\t\t[\n\t\t\t'Mayotte',\n\t\t\tCountryISO.Mayotte,\n\t\t\t'262',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Mexico (México)',\n\t\t\tCountryISO.Mexico,\n\t\t\t'52'\n\t\t],\n\t\t[\n\t\t\t'Micronesia',\n\t\t\tCountryISO.Micronesia,\n\t\t\t'691'\n\t\t],\n\t\t[\n\t\t\t'Moldova (Republica Moldova)',\n\t\t\tCountryISO.Moldova,\n\t\t\t'373'\n\t\t],\n\t\t[\n\t\t\t'Monaco',\n\t\t\tCountryISO.Monaco,\n\t\t\t'377'\n\t\t],\n\t\t[\n\t\t\t'Mongolia (Монгол)',\n\t\t\tCountryISO.Mongolia,\n\t\t\t'976'\n\t\t],\n\t\t[\n\t\t\t'Montenegro (Crna Gora)',\n\t\t\tCountryISO.Montenegro,\n\t\t\t'382'\n\t\t],\n\t\t[\n\t\t\t'Montserrat',\n\t\t\t'ms',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'664',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Morocco (‫المغرب‬‎)',\n\t\t\tCountryISO.Morocco,\n\t\t\t'212',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Mozambique (Moçambique)',\n\t\t\tCountryISO.Mozambique,\n\t\t\t'258'\n\t\t],\n\t\t[\n\t\t\t'Myanmar (Burma) (မြန်မာ)',\n\t\t\tCountryISO.Myanmar,\n\t\t\t'95'\n\t\t],\n\t\t[\n\t\t\t'Namibia (Namibië)',\n\t\t\tCountryISO.Namibia,\n\t\t\t'264'\n\t\t],\n\t\t[\n\t\t\t'Nauru',\n\t\t\tCountryISO.Nauru,\n\t\t\t'674'\n\t\t],\n\t\t[\n\t\t\t'Nepal (नेपाल)',\n\t\t\tCountryISO.Nepal,\n\t\t\t'977'\n\t\t],\n\t\t[\n\t\t\t'Netherlands (Nederland)',\n\t\t\tCountryISO.Netherlands,\n\t\t\t'31'\n\t\t],\n\t\t[\n\t\t\t'New Caledonia (Nouvelle-Calédonie)',\n\t\t\tCountryISO.NewCaledonia,\n\t\t\t'687'\n\t\t],\n\t\t[\n\t\t\t'New Zealand',\n\t\t\tCountryISO.NewZealand,\n\t\t\t'64'\n\t\t],\n\t\t[\n\t\t\t'Nicaragua',\n\t\t\tCountryISO.Nicaragua,\n\t\t\t'505'\n\t\t],\n\t\t[\n\t\t\t'Niger (Nijar)',\n\t\t\tCountryISO.Niger,\n\t\t\t'227'\n\t\t],\n\t\t[\n\t\t\t'Nigeria',\n\t\t\tCountryISO.Nigeria,\n\t\t\t'234'\n\t\t],\n\t\t[\n\t\t\t'Niue',\n\t\t\tCountryISO.Niue,\n\t\t\t'683'\n\t\t],\n\t\t[\n\t\t\t'Norfolk Island',\n\t\t\tCountryISO.NorfolkIsland,\n\t\t\t'672'\n\t\t],\n\t\t[\n\t\t\t'North Korea (조선 민주주의 인민 공화국)',\n\t\t\tCountryISO.NorthKorea,\n\t\t\t'850'\n\t\t],\n\t\t[\n\t\t\t'Northern Mariana Islands',\n\t\t\tCountryISO.NorthernMarianaIslands,\n\t\t\t'1670'\n\t\t],\n\t\t[\n\t\t\t'Norway (Norge)',\n\t\t\tCountryISO.Norway,\n\t\t\t'47',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Oman (‫عُمان‬‎)',\n\t\t\tCountryISO.Oman,\n\t\t\t'968'\n\t\t],\n\t\t[\n\t\t\t'Pakistan (‫پاکستان‬‎)',\n\t\t\tCountryISO.Pakistan,\n\t\t\t'92'\n\t\t],\n\t\t[\n\t\t\t'Palau',\n\t\t\tCountryISO.Palau,\n\t\t\t'680'\n\t\t],\n\t\t[\n\t\t\t'Palestine (‫فلسطين‬‎)',\n\t\t\tCountryISO.Palestine,\n\t\t\t'970'\n\t\t],\n\t\t[\n\t\t\t'Panama (Panamá)',\n\t\t\tCountryISO.Panama,\n\t\t\t'507'\n\t\t],\n\t\t[\n\t\t\t'Papua New Guinea',\n\t\t\tCountryISO.PapuaNewGuinea,\n\t\t\t'675'\n\t\t],\n\t\t[\n\t\t\t'Paraguay',\n\t\t\tCountryISO.Paraguay,\n\t\t\t'595'\n\t\t],\n\t\t[\n\t\t\t'Peru (Perú)',\n\t\t\tCountryISO.Peru,\n\t\t\t'51'\n\t\t],\n\t\t[\n\t\t\t'Philippines',\n\t\t\tCountryISO.Philippines,\n\t\t\t'63'\n\t\t],\n\t\t[\n\t\t\t'Poland (Polska)',\n\t\t\tCountryISO.Poland,\n\t\t\t'48'\n\t\t],\n\t\t[\n\t\t\t'Portugal',\n\t\t\tCountryISO.Portugal,\n\t\t\t'351'\n\t\t],\n\t\t[\n\t\t\t'Puerto Rico',\n\t\t\tCountryISO.PuertoRico,\n\t\t\t'1',\n\t\t\t3,\n\t\t\t['787', '939']\n\t\t],\n\t\t[\n\t\t\t'Qatar (‫قطر‬‎)',\n\t\t\tCountryISO.Qatar,\n\t\t\t'974'\n\t\t],\n\t\t[\n\t\t\t'Réunion (La Réunion)',\n\t\t\tCountryISO.Réunion,\n\t\t\t'262',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Romania (România)',\n\t\t\tCountryISO.Romania,\n\t\t\t'40'\n\t\t],\n\t\t[\n\t\t\t'Russia (Россия)',\n\t\t\tCountryISO.Russia,\n\t\t\t'7',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Rwanda',\n\t\t\tCountryISO.Rwanda,\n\t\t\t'250'\n\t\t],\n\t\t[\n\t\t\t'Saint Barthélemy (Saint-Barthélemy)',\n\t\t\tCountryISO.SaintBarthélemy,\n\t\t\t'590',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Saint Helena',\n\t\t\tCountryISO.SaintHelena,\n\t\t\t'290'\n\t\t],\n\t\t[\n\t\t\t'Saint Kitts and Nevis',\n\t\t\tCountryISO.SaintKittsAndNevis,\n\t\t\t'1869'\n\t\t],\n\t\t[\n\t\t\t'Saint Lucia',\n\t\t\t'lc',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'758',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Saint Martin (Saint-Martin (partie française))',\n\t\t\tCountryISO.SaintMartin,\n\t\t\t'590',\n\t\t\t2\n\t\t],\n\t\t[\n\t\t\t'Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)',\n\t\t\tCountryISO.SaintPierreAndMiquelon,\n\t\t\t'508'\n\t\t],\n\t\t[\n\t\t\t'Saint Vincent and the Grenadines',\n\t\t\t'vc',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'784',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Samoa',\n\t\t\tCountryISO.Samoa,\n\t\t\t'685'\n\t\t],\n\t\t[\n\t\t\t'San Marino',\n\t\t\tCountryISO.SanMarino,\n\t\t\t'378'\n\t\t],\n\t\t[\n\t\t\t'São Tomé and Príncipe (São Tomé e Príncipe)',\n\t\t\tCountryISO.SãoToméAndPríncipe,\n\t\t\t'239'\n\t\t],\n\t\t[\n\t\t\t'Saudi Arabia (‫المملكة العربية السعودية‬‎)',\n\t\t\tCountryISO.SaudiArabia,\n\t\t\t'966'\n\t\t],\n\t\t[\n\t\t\t'Senegal (Sénégal)',\n\t\t\tCountryISO.Senegal,\n\t\t\t'221'\n\t\t],\n\t\t[\n\t\t\t'Serbia (Србија)',\n\t\t\tCountryISO.Serbia,\n\t\t\t'381'\n\t\t],\n\t\t[\n\t\t\t'Seychelles',\n\t\t\tCountryISO.Seychelles,\n\t\t\t'248'\n\t\t],\n\t\t[\n\t\t\t'Sierra Leone',\n\t\t\tCountryISO.SierraLeone,\n\t\t\t'232'\n\t\t],\n\t\t[\n\t\t\t'Singapore',\n\t\t\tCountryISO.Singapore,\n\t\t\t'65'\n\t\t],\n\t\t[\n\t\t\t'Sint Maarten',\n\t\t\t'sx',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'721',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Slovakia (Slovensko)',\n\t\t\tCountryISO.Slovakia,\n\t\t\t'421'\n\t\t],\n\t\t[\n\t\t\t'Slovenia (Slovenija)',\n\t\t\tCountryISO.Slovenia,\n\t\t\t'386'\n\t\t],\n\t\t[\n\t\t\t'Solomon Islands',\n\t\t\tCountryISO.SolomonIslands,\n\t\t\t'677'\n\t\t],\n\t\t[\n\t\t\t'Somalia (Soomaaliya)',\n\t\t\tCountryISO.Somalia,\n\t\t\t'252'\n\t\t],\n\t\t[\n\t\t\t'South Africa',\n\t\t\tCountryISO.SouthAfrica,\n\t\t\t'27'\n\t\t],\n\t\t[\n\t\t\t'South Korea (대한민국)',\n\t\t\tCountryISO.SouthKorea,\n\t\t\t'82'\n\t\t],\n\t\t[\n\t\t\t'South Sudan (‫جنوب السودان‬‎)',\n\t\t\tCountryISO.SouthSudan,\n\t\t\t'211'\n\t\t],\n\t\t[\n\t\t\t'Spain (España)',\n\t\t\tCountryISO.Spain,\n\t\t\t'34'\n\t\t],\n\t\t[\n\t\t\t'Sri Lanka (ශ්‍රී ලංකාව)',\n\t\t\tCountryISO.SriLanka,\n\t\t\t'94'\n\t\t],\n\t\t[\n\t\t\t'Sudan (‫السودان‬‎)',\n\t\t\tCountryISO.Sudan,\n\t\t\t'249'\n\t\t],\n\t\t[\n\t\t\t'Suriname',\n\t\t\tCountryISO.Suriname,\n\t\t\t'597'\n\t\t],\n\t\t[\n\t\t\t'Svalbard and Jan Mayen',\n\t\t\tCountryISO.SvalbardAndJanMayen,\n\t\t\t'47',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Swaziland',\n\t\t\tCountryISO.Swaziland,\n\t\t\t'268'\n\t\t],\n\t\t[\n\t\t\t'Sweden (Sverige)',\n\t\t\tCountryISO.Sweden,\n\t\t\t'46'\n\t\t],\n\t\t[\n\t\t\t'Switzerland (Schweiz)',\n\t\t\tCountryISO.Switzerland,\n\t\t\t'41'\n\t\t],\n\t\t[\n\t\t\t'Syria (‫سوريا‬‎)',\n\t\t\tCountryISO.Syria,\n\t\t\t'963'\n\t\t],\n\t\t[\n\t\t\t'Taiwan (台灣)',\n\t\t\tCountryISO.Taiwan,\n\t\t\t'886'\n\t\t],\n\t\t[\n\t\t\t'Tajikistan',\n\t\t\tCountryISO.Tajikistan,\n\t\t\t'992'\n\t\t],\n\t\t[\n\t\t\t'Tanzania',\n\t\t\tCountryISO.Tanzania,\n\t\t\t'255'\n\t\t],\n\t\t[\n\t\t\t'Thailand (ไทย)',\n\t\t\tCountryISO.Thailand,\n\t\t\t'66'\n\t\t],\n\t\t[\n\t\t\t'Timor-Leste',\n\t\t\tCountryISO.TimorLeste,\n\t\t\t'670'\n\t\t],\n\t\t[\n\t\t\t'Togo',\n\t\t\tCountryISO.Togo,\n\t\t\t'228'\n\t\t],\n\t\t[\n\t\t\t'Tokelau',\n\t\t\tCountryISO.Tokelau,\n\t\t\t'690'\n\t\t],\n\t\t[\n\t\t\t'Tonga',\n\t\t\tCountryISO.Tonga,\n\t\t\t'676'\n\t\t],\n\t\t[\n\t\t\t'Trinidad and Tobago',\n\t\t\t'tt',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'868',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Tunisia (‫تونس‬‎)',\n\t\t\tCountryISO.Tunisia,\n\t\t\t'216'\n\t\t],\n\t\t[\n\t\t\t'Turkey (Türkiye)',\n\t\t\tCountryISO.Turkey,\n\t\t\t'90'\n\t\t],\n\t\t[\n\t\t\t'Turkmenistan',\n\t\t\tCountryISO.Turkmenistan,\n\t\t\t'993'\n\t\t],\n\t\t[\n\t\t\t'Turks and Caicos Islands',\n\t\t\tCountryISO.TurksAndCaicosIslands,\n\t\t\t'1649'\n\t\t],\n\t\t[\n\t\t\t'Tuvalu',\n\t\t\tCountryISO.Tuvalu,\n\t\t\t'688'\n\t\t],\n\t\t[\n\t\t\t'U.S. Virgin Islands',\n\t\t\t'vi',\n\t\t\t'1',\n\t\t\t1,\n\t\t\t[\n\t\t\t\t'340',\n\t\t\t]\n\t\t],\n\t\t[\n\t\t\t'Uganda',\n\t\t\tCountryISO.Uganda,\n\t\t\t'256'\n\t\t],\n\t\t[\n\t\t\t'Ukraine (Україна)',\n\t\t\tCountryISO.Ukraine,\n\t\t\t'380'\n\t\t],\n\t\t[\n\t\t\t'United Arab Emirates (‫الإمارات العربية المتحدة‬‎)',\n\t\t\tCountryISO.UnitedArabEmirates,\n\t\t\t'971'\n\t\t],\n\t\t[\n\t\t\t'United Kingdom',\n\t\t\tCountryISO.UnitedKingdom,\n\t\t\t'44',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'United States',\n\t\t\tCountryISO.UnitedStates,\n\t\t\t'1',\n\t\t\t0\n\t\t],\n\t\t[\n\t\t\t'Uruguay',\n\t\t\tCountryISO.Uruguay,\n\t\t\t'598'\n\t\t],\n\t\t[\n\t\t\t'Uzbekistan (Oʻzbekiston)',\n\t\t\tCountryISO.Uzbekistan,\n\t\t\t'998'\n\t\t],\n\t\t[\n\t\t\t'Vanuatu',\n\t\t\tCountryISO.Vanuatu,\n\t\t\t'678'\n\t\t],\n\t\t[\n\t\t\t'Vatican City (Città del Vaticano)',\n\t\t\tCountryISO.VaticanCity,\n\t\t\t'39',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Venezuela',\n\t\t\tCountryISO.Venezuela,\n\t\t\t'58'\n\t\t],\n\t\t[\n\t\t\t'Vietnam (Việt Nam)',\n\t\t\tCountryISO.Vietnam,\n\t\t\t'84'\n\t\t],\n\t\t[\n\t\t\t'Wallis and Futuna',\n\t\t\tCountryISO.WallisAndFutuna,\n\t\t\t'681'\n\t\t],\n\t\t[\n\t\t\t'Western Sahara (‫الصحراء الغربية‬‎)',\n\t\t\tCountryISO.WesternSahara,\n\t\t\t'212',\n\t\t\t1\n\t\t],\n\t\t[\n\t\t\t'Yemen (‫اليمن‬‎)',\n\t\t\tCountryISO.Yemen,\n\t\t\t'967'\n\t\t],\n\t\t[\n\t\t\t'Zambia',\n\t\t\tCountryISO.Zambia,\n\t\t\t'260'\n\t\t],\n\t\t[\n\t\t\t'Zimbabwe',\n\t\t\tCountryISO.Zimbabwe,\n\t\t\t'263'\n\t\t],\n\t\t[\n\t\t\t'Åland Islands',\n\t\t\tCountryISO.ÅlandIslands,\n\t\t\t'358',\n\t\t\t1\n\t\t]\n\t];\n}","export enum SearchCountryField {\n\tDialCode = 'dialCode',\n\tIso2 = 'iso2',\n\tName = 'name',\n\tAll = 'all'\n}\n","import * as lpn from 'google-libphonenumber';\n\n/*\nWe use \"control: any\" instead of \"control: FormControl\" to silence:\n\"Property 'nativeElement' does not exist on type 'FormControl'\".\nThis happens because I've expanded control with nativeElement via\n'NativeElementInjectorDirective' to get an access to the element.\nMore about this approach and reasons for this:\nhttps://github.com/angular/angular/issues/18025\nhttps://stackoverflow.com/a/54075119/1617590\n*/\nexport const phoneNumberValidator = (control: any) => {\n  if (!control.value) {\n    return true;\n  }\n  // Find <input> inside injected nativeElement and get its \"id\".\n  const el: HTMLElement = control.nativeElement as HTMLElement;\n  const inputBox: HTMLInputElement | any = el\n    ? el.querySelector('input[type=\"tel\"]')\n    : undefined;\n  if (inputBox) {\n    const id = inputBox.id;\n    const isCheckValidation = inputBox.getAttribute('validation');\n    if (isCheckValidation === 'true') {\n      const isRequired = control.errors && control.errors.required === true;\n      const error = { validatePhoneNumber: { valid: false } };\n\n      inputBox.setCustomValidity('Invalid field.');\n\n      let number: lpn.PhoneNumber;\n\n      try {\n        number = lpn.PhoneNumberUtil.getInstance().parse(\n          control.value.number,\n          control.value.countryCode\n        );\n      } catch (e) {\n        if (isRequired) {\n          return error;\n        } else {\n          inputBox.setCustomValidity('');\n        }\n      }\n\n      if (control.value) {\n        // @ts-ignore\n        if (!number) {\n          return error;\n        } else {\n          if (\n            !lpn.PhoneNumberUtil.getInstance().isValidNumberForRegion(\n              number,\n              control.value.countryCode\n            )\n          ) {\n            return error;\n          } else {\n            inputBox.setCustomValidity('');\n          }\n        }\n      }\n    } else if (isCheckValidation === 'false') {\n      inputBox.setCustomValidity('');\n\n      control.clearValidators();\n    }\n  }\n  return true;\n};\n","import * as lpn from 'google-libphonenumber';\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\n\nimport { setTheme } from 'ngx-bootstrap/utils';\nimport { CountryCode } from '../../data/country-code';\nimport { CountryISO } from '../../enums/country-iso.enum';\nimport { SearchCountryField } from '../../enums/search-country-field.enum';\nimport { ChangeData } from '../../interfaces/change-data';\nimport { Country } from '../../models/country.model';\nimport { phoneNumberValidator } from '../../validator/ngx-intl-tel-input.validator';\nimport { PhoneNumberFormat } from '../../enums/phone-number-format.enum';\n\n@Component({\n  selector: 'utils-intl-tel-input',\n  templateUrl: './utils-intl-tel-input.component.html',\n  styleUrls: [\n    '../../assets/css/bootstrap-dropdown.css',\n    '../../assets/css/intlTelInput.css',\n    './utils-intl-tel-input.component.scss',\n  ],\n  providers: [\n    CountryCode,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      // tslint:disable-next-line:no-forward-ref\n      useExisting: forwardRef(() => UtilsIntlTelInputComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useValue: phoneNumberValidator,\n      multi: true,\n    },\n  ],\n})\nexport class UtilsIntlTelInputComponent implements OnInit, OnChanges {\n  @Input() value: string | undefined = '';\n  @Input() preferredCountries: Array<string> = [];\n  @Input() enablePlaceholder = true;\n  @Input() customPlaceholder: string = '';\n  @Input() numberFormat: lpn.PhoneNumberFormat | PhoneNumberFormat =\n    lpn.PhoneNumberFormat.INTERNATIONAL;\n  @Input() cssClass = 'search-default';\n  @Input() onlyCountries: Array<string> = [];\n  @Input() enableAutoCountrySelect = true;\n  @Input() searchCountryFlag = false;\n  @Input() searchCountryField: SearchCountryField[] = [SearchCountryField.All];\n  @Input() searchCountryPlaceholder = 'Search Country';\n  @Input() maxLength: number = 0;\n  @Input() selectFirstCountry = true;\n  @Input() selectedCountryISO!: CountryISO;\n  @Input() phoneValidation = true;\n  @Input() inputId = 'phone';\n  @Input() separateDialCode = false;\n  separateDialCodeClass: string = '';\n\n  @Output() readonly countryChange = new EventEmitter<Country>();\n\n  selectedCountry: Country = {\n    areaCodes: undefined,\n    dialCode: '',\n    htmlId: '',\n    flagClass: '',\n    iso2: '',\n    name: '',\n    placeHolder: '',\n    priority: 0,\n  };\n\n  phoneNumber: string | undefined = '';\n  allCountries: Array<Country> = [];\n  preferredCountriesInDropDown: Array<Country> = [];\n  // Has to be 'any' to prevent a need to install @types/google-libphonenumber by the package user...\n  phoneUtil: any = lpn.PhoneNumberUtil.getInstance();\n  disabled = false;\n  errors: Array<any> = ['Phone number is required.'];\n  countrySearchText = '';\n\n  @ViewChild('countryList') countryList!: ElementRef;\n\n  onTouched = () => {};\n  propagateChange = (_: ChangeData) => {};\n\n  constructor(private countryCodeData: CountryCode) {\n    // If this is not set, ngx-bootstrap will try to use the bs3 CSS (which is not what we've embedded) and will\n    // Add the wrong classes and such\n    setTheme('bs4');\n  }\n\n  ngOnInit() {\n    this.init();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const selectedISO = changes['selectedCountryISO'];\n    if (\n      this.allCountries &&\n      selectedISO &&\n      selectedISO.currentValue !== selectedISO.previousValue\n    ) {\n      this.updateSelectedCountry();\n    }\n    if (changes['preferredCountries']) {\n      this.updatePreferredCountries();\n    }\n    this.checkSeparateDialCodeStyle();\n  }\n\n  /*\n\t\tThis is a wrapper method to avoid calling this.ngOnInit() in writeValue().\n\t\tRef: http://codelyzer.com/rules/no-life-cycle-call/\n\t*/\n  init() {\n    this.fetchCountryData();\n    if (this.preferredCountries.length) {\n      this.updatePreferredCountries();\n    }\n    if (this.onlyCountries.length) {\n      this.allCountries = this.allCountries.filter((c) =>\n        this.onlyCountries.includes(c.iso2)\n      );\n    }\n    if (this.selectFirstCountry) {\n      if (this.preferredCountriesInDropDown.length) {\n        this.setSelectedCountry(this.preferredCountriesInDropDown[0]);\n      } else {\n        this.setSelectedCountry(this.allCountries[0]);\n      }\n    }\n    this.updateSelectedCountry();\n    this.checkSeparateDialCodeStyle();\n  }\n\n  setSelectedCountry(country: Country) {\n    this.selectedCountry = country;\n    this.countryChange.emit(country);\n  }\n\n  /**\n   * Search country based on country name, iso2, dialCode or all of them.\n   */\n  public searchCountry() {\n    if (!this.countrySearchText) {\n      this.countryList.nativeElement\n        .querySelector('.iti__country-list li')\n        .scrollIntoView({\n          behavior: 'smooth',\n          block: 'nearest',\n          inline: 'nearest',\n        });\n      return;\n    }\n    const countrySearchTextLower = this.countrySearchText.toLowerCase();\n    // @ts-ignore\n    const country = this.allCountries.filter((c) => {\n      if (this.searchCountryField.indexOf(SearchCountryField.All) > -1) {\n        // Search in all fields\n        if (c.iso2.toLowerCase().startsWith(countrySearchTextLower)) {\n          return c;\n        }\n        if (c.name.toLowerCase().startsWith(countrySearchTextLower)) {\n          return c;\n        }\n        if (c.dialCode.startsWith(this.countrySearchText)) {\n          return c;\n        }\n      } else {\n        // Or search by specific SearchCountryField(s)\n        if (this.searchCountryField.indexOf(SearchCountryField.Iso2) > -1) {\n          if (c.iso2.toLowerCase().startsWith(countrySearchTextLower)) {\n            return c;\n          }\n        }\n        if (this.searchCountryField.indexOf(SearchCountryField.Name) > -1) {\n          if (c.name.toLowerCase().startsWith(countrySearchTextLower)) {\n            return c;\n          }\n        }\n        if (this.searchCountryField.indexOf(SearchCountryField.DialCode) > -1) {\n          if (c.dialCode.startsWith(this.countrySearchText)) {\n            return c;\n          }\n        }\n      }\n    });\n\n    if (country.length > 0) {\n      const el = this.countryList.nativeElement.querySelector(\n        '#' + country[0].htmlId\n      );\n      if (el) {\n        el.scrollIntoView({\n          behavior: 'smooth',\n          block: 'nearest',\n          inline: 'nearest',\n        });\n      }\n    }\n\n    this.checkSeparateDialCodeStyle();\n  }\n\n  public onPhoneNumberChange(): void {\n    let countryCode: string | undefined;\n    // Handle the case where the user sets the value programatically based on a persisted ChangeData obj.\n    if (this.phoneNumber && typeof this.phoneNumber === 'object') {\n      const numberObj: ChangeData = this.phoneNumber;\n      this.phoneNumber = numberObj.number;\n      countryCode = numberObj.countryCode;\n    }\n\n    this.value = this.phoneNumber;\n    countryCode = countryCode || this.selectedCountry.iso2;\n    // @ts-ignore\n    const number = this.getParsedNumber(this.phoneNumber, countryCode);\n\n    // auto select country based on the extension (and areaCode if needed) (e.g select Canada if number starts with +1 416)\n    if (this.enableAutoCountrySelect) {\n      countryCode =\n        number && number.getCountryCode()\n          ? // @ts-ignore\n            this.getCountryIsoCode(number.getCountryCode(), number)\n          : this.selectedCountry.iso2;\n      if (countryCode && countryCode !== this.selectedCountry.iso2) {\n        const newCountry = this.allCountries\n          .sort((a, b) => {\n            return a.priority - b.priority;\n          })\n          .find((c) => c.iso2 === countryCode);\n        if (newCountry) {\n          this.selectedCountry = newCountry;\n        }\n      }\n    }\n    countryCode = countryCode ? countryCode : this.selectedCountry.iso2;\n\n    this.checkSeparateDialCodeStyle();\n\n    if (!this.value) {\n      // Reason: avoid https://stackoverflow.com/a/54358133/1617590\n      // tslint:disable-next-line: no-null-keyword\n      // @ts-ignore\n      this.propagateChange(null);\n    } else {\n      const intlNo = number\n        ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.INTERNATIONAL)\n        : '';\n\n      // parse phoneNumber if separate dial code is needed\n      if (this.separateDialCode && intlNo) {\n        this.value = this.removeDialCode(intlNo);\n      }\n\n      this.propagateChange({\n        number: this.value,\n        internationalNumber: intlNo,\n        nationalNumber: number\n          ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.NATIONAL)\n          : '',\n        e164Number: number\n          ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.E164)\n          : '',\n        countryCode: countryCode.toUpperCase(),\n        dialCode: '+' + this.selectedCountry.dialCode,\n      });\n    }\n  }\n\n  public onCountrySelect(country: Country, el: { focus: () => void }): void {\n    this.setSelectedCountry(country);\n\n    this.checkSeparateDialCodeStyle();\n\n    if (this.phoneNumber && this.phoneNumber.length > 0) {\n      this.value = this.phoneNumber;\n      const number = this.getParsedNumber(\n        this.phoneNumber,\n        this.selectedCountry.iso2\n      );\n      const intlNo = number\n        ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.INTERNATIONAL)\n        : '';\n      // parse phoneNumber if separate dial code is needed\n      if (this.separateDialCode && intlNo) {\n        this.value = this.removeDialCode(intlNo);\n      }\n\n      this.propagateChange({\n        number: this.value,\n        internationalNumber: intlNo,\n        nationalNumber: number\n          ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.NATIONAL)\n          : '',\n        e164Number: number\n          ? this.phoneUtil.format(number, lpn.PhoneNumberFormat.E164)\n          : '',\n        countryCode: this.selectedCountry.iso2.toUpperCase(),\n        dialCode: '+' + this.selectedCountry.dialCode,\n      });\n    } else {\n      // Reason: avoid https://stackoverflow.com/a/54358133/1617590\n      // tslint:disable-next-line: no-null-keyword\n      // @ts-ignore\n      this.propagateChange(null);\n    }\n\n    el.focus();\n  }\n\n  public onInputKeyPress(event: KeyboardEvent): void {\n    const allowedChars = /[0-9\\+\\-\\(\\)\\ ]/;\n    const allowedCtrlChars = /[axcv]/; // Allows copy-pasting\n    const allowedOtherKeys = [\n      'ArrowLeft',\n      'ArrowUp',\n      'ArrowRight',\n      'ArrowDown',\n      'Home',\n      'End',\n      'Insert',\n      'Delete',\n      'Backspace',\n    ];\n\n    if (\n      !allowedChars.test(event.key) &&\n      !(event.ctrlKey && allowedCtrlChars.test(event.key)) &&\n      !allowedOtherKeys.includes(event.key)\n    ) {\n      event.preventDefault();\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(fn: any) {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  writeValue(obj: any): void {\n    if (obj === undefined) {\n      this.init();\n    }\n    this.phoneNumber = obj;\n    setTimeout(() => {\n      this.onPhoneNumberChange();\n    }, 1);\n  }\n\n  resolvePlaceholder(): string {\n    let placeholder = '';\n    if (this.customPlaceholder) {\n      placeholder = this.customPlaceholder;\n    } else if (this.selectedCountry.placeHolder) {\n      placeholder = this.selectedCountry.placeHolder;\n      if (this.separateDialCode) {\n        placeholder = this.removeDialCode(placeholder);\n      }\n    }\n    return placeholder;\n  }\n\n  /* --------------------------------- Helpers -------------------------------- */\n  /**\n   * Returns parse PhoneNumber object.\n   * @param phoneNumber string\n   * @param countryCode string\n   */\n  private getParsedNumber(\n    phoneNumber: string,\n    countryCode: string\n  ): lpn.PhoneNumber {\n    let number: lpn.PhoneNumber;\n    try {\n      number = this.phoneUtil.parse(phoneNumber, countryCode.toUpperCase());\n    } catch (e) {}\n    // @ts-ignore\n    return number;\n  }\n\n  /**\n   * Adjusts input alignment based on the dial code presentation style.\n   */\n  private checkSeparateDialCodeStyle() {\n    if (this.separateDialCode && this.selectedCountry) {\n      const cntryCd = this.selectedCountry.dialCode;\n      this.separateDialCodeClass =\n        'separate-dial-code iti-sdc-' + (cntryCd.length + 1);\n    } else {\n      this.separateDialCodeClass = '';\n    }\n  }\n\n  /**\n   * Cleans dialcode from phone number string.\n   * @param phoneNumber string\n   */\n  private removeDialCode(phoneNumber: string): string {\n    const number = this.getParsedNumber(phoneNumber, this.selectedCountry.iso2);\n    phoneNumber = this.phoneUtil.format(\n      number,\n      lpn.PhoneNumberFormat[this.numberFormat]\n    );\n    if (phoneNumber.startsWith('+') && this.separateDialCode) {\n      phoneNumber = phoneNumber.substr(phoneNumber.indexOf(' ') + 1);\n    }\n    return phoneNumber;\n  }\n\n  /**\n   * Sifts through all countries and returns iso code of the primary country\n   * based on the number provided.\n   * @param countryCode country code in number format\n   * @param number PhoneNumber object\n   */\n  private getCountryIsoCode(\n    countryCode: number,\n    number: lpn.PhoneNumber\n  ): string | undefined {\n    // Will use this to match area code from the first numbers\n    // @ts-ignore\n    const rawNumber = number['values_']['2'].toString();\n    // List of all countries with countryCode (can be more than one. e.x. US, CA, DO, PR all have +1 countryCode)\n    const countries = this.allCountries.filter(\n      (c) => c.dialCode === countryCode.toString()\n    );\n    // Main country is the country, which has no areaCodes specified in country-code.ts file.\n    const mainCountry = countries.find((c) => c.areaCodes === undefined);\n    // Secondary countries are all countries, which have areaCodes specified in country-code.ts file.\n    const secondaryCountries = countries.filter(\n      (c) => c.areaCodes !== undefined\n    );\n    let matchedCountry = mainCountry ? mainCountry.iso2 : undefined;\n\n    /*\n\t\t\tIterate over each secondary country and check if nationalNumber starts with any of areaCodes available.\n\t\t\tIf no matches found, fallback to the main country.\n\t\t*/\n    secondaryCountries.forEach((country) => {\n      // @ts-ignore\n      country.areaCodes.forEach((areaCode) => {\n        if (rawNumber.startsWith(areaCode)) {\n          matchedCountry = country.iso2;\n        }\n      });\n    });\n\n    return matchedCountry;\n  }\n\n  /**\n   * Gets formatted example phone number from phoneUtil.\n   * @param countryCode string\n   */\n  protected getPhoneNumberPlaceHolder(countryCode: string): string {\n    try {\n      return this.phoneUtil.format(\n        this.phoneUtil.getExampleNumber(countryCode),\n        lpn.PhoneNumberFormat[this.numberFormat]\n      );\n    } catch (e) {\n      // @ts-ignore\n      return e;\n    }\n  }\n\n  /**\n   * Clearing the list to avoid duplicates (https://github.com/webcat12345/ngx-intl-tel-input/issues/248)\n   */\n  protected fetchCountryData(): void {\n    this.allCountries = [];\n\n    this.countryCodeData.allCountries.forEach((c) => {\n      const country: Country = {\n        name: c[0].toString(),\n        iso2: c[1].toString(),\n        dialCode: c[2].toString(),\n        priority: +c[3] || 0,\n        areaCodes: (c[4] as string[]) || undefined,\n        htmlId: `iti-0__item-${c[1].toString()}`,\n        flagClass: `iti__${c[1].toString().toLocaleLowerCase()}`,\n        placeHolder: '',\n      };\n\n      if (this.enablePlaceholder) {\n        country.placeHolder = this.getPhoneNumberPlaceHolder(\n          country.iso2.toUpperCase()\n        );\n      }\n\n      this.allCountries.push(country);\n    });\n  }\n\n  /**\n   * Populates preferredCountriesInDropDown with prefferred countries.\n   */\n  private updatePreferredCountries() {\n    if (this.preferredCountries.length) {\n      this.preferredCountriesInDropDown = [];\n      this.preferredCountries.forEach((iso2) => {\n        const preferredCountry = this.allCountries.filter((c) => {\n          return c.iso2 === iso2;\n        });\n\n        this.preferredCountriesInDropDown.push(preferredCountry[0]);\n      });\n    }\n  }\n\n  /**\n   * Updates selectedCountry.\n   */\n  private updateSelectedCountry() {\n    if (this.selectedCountryISO) {\n      // @ts-ignore\n      this.selectedCountry = this.allCountries.find((c) => {\n        return c.iso2.toLowerCase() === this.selectedCountryISO.toLowerCase();\n      });\n      if (this.selectedCountry) {\n        if (this.phoneNumber) {\n          this.onPhoneNumberChange();\n        } else {\n          // Reason: avoid https://stackoverflow.com/a/54358133/1617590\n          // tslint:disable-next-line: no-null-keyword\n          // @ts-ignore\n          this.propagateChange(null);\n        }\n      }\n    }\n  }\n}\n","<p>utils-intl-tel-input works!</p>\n","export class KeyboardUtil{\n\n    static ifBackspaceOrDelete(event:KeyboardEvent){\n        return this.ifKey(event,'Backspace;Delete;Del');\n    }\n    static ifRightArrow(event:KeyboardEvent){\n        return this.ifKey(event,'ArrowRight;Right')\n    }\n    static ifLeftArrow(event:KeyboardEvent){\n        return this.ifKey(event,'ArrowLeft;Left')\n    }\n    static ifSpacebar(event:KeyboardEvent){\n        return this.ifKey(event,'Spacebar; ')//don't remove the space after ; as this will check for space key\n    }\n    static  ifKey(event:KeyboardEvent, keys:string):boolean{\n        let keysToCheck=keys.split(';');\n        return keysToCheck.some(k=> k ===event.key);\n    }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'keys',\n})\nexport class UtilsKeysPipe implements PipeTransform {\n  transform(value: any): string[] {\n    return Object.keys(value);\n  }\n}\n","import {\n  Component,\n  OnInit,\n  Input,\n  Output,\n  EventEmitter,\n  AfterViewInit,\n} from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { UtilsOtpInputConfig } from '../../models/opt-config.model';\nimport { UtilsKeysPipe } from '../../pipes/utils-keys.pipe';\nimport { KeyboardUtil } from '../../utils/keyboard-util';\n@Component({\n  // tslint:disable-next-line: component-selector\n  selector: 'utils-otp-input',\n  templateUrl: './utils-otp-input.component.html',\n  styleUrls: ['./utils-otp-input.component.scss'],\n})\nexport class UtilsOtpInputComponent implements OnInit, AfterViewInit {\n  @Input() config: UtilsOtpInputConfig = { length: 4 };\n  // tslint:disable-next-line: no-output-on-prefix\n  @Output() onInputChange = new EventEmitter<string>();\n  @Input() formCtrl: FormControl;\n  otpForm: FormGroup;\n  currentVal: string;\n  inputControls: FormControl[] = new Array(this.config.length);\n  componentKey =\n    Math.random().toString(36).substring(2) + new Date().getTime().toString(36);\n  get inputType() {\n    return this.config?.isPasswordInput\n      ? 'password'\n      : this.config?.allowNumbersOnly\n      ? 'tel'\n      : 'text';\n  }\n  constructor(private keysPipe: UtilsKeysPipe) {}\n\n  ngOnInit() {\n    this.otpForm = new FormGroup({});\n    for (let index = 0; index < this.config.length; index++) {\n      this.otpForm.addControl(this.getControlName(index), new FormControl());\n    }\n    this.otpForm.valueChanges.subscribe((v: object) => {\n      this.keysPipe.transform(this.otpForm.controls).forEach((k) => {\n        var val = this.otpForm.controls[k].value;\n        if (val && val.length > 1) {\n          if (val.length >= this.config.length) {\n            this.setValue(val);\n          } else {\n            this.rebuildValue();\n          }\n        }\n      });\n    });\n  }\n\n  ngAfterViewInit(): void {\n    if (!this.config.disableAutoFocus) {\n      const containerItem = document.getElementById(`c_${this.componentKey}`);\n      if (containerItem) {\n        const ele: any = containerItem.getElementsByClassName('otp-input')[0];\n        if (ele && ele.focus) {\n          ele.focus();\n        }\n      }\n    }\n  }\n  private getControlName(idx) {\n    return `ctrl_${idx}`;\n  }\n\n  onKeyDown($event: any, inputIdx: any) {\n    if (KeyboardUtil.ifSpacebar($event)) {\n      $event.preventDefault();\n      return false;\n    }\n    return true;\n  }\n  onInput($event) {\n    let newVal = this.currentVal\n      ? `${this.currentVal}${$event.target.value}`\n      : $event.target.value;\n    if (this.config.allowNumbersOnly && !this.validateNumber(newVal)) {\n      $event.target.value = '';\n      $event.stopPropagation();\n      $event.preventDefault();\n      return;\n    }\n  }\n\n  onKeyUp($event, inputIdx) {\n    const nextInputId = this.appendKey(`otp_${inputIdx + 1}`);\n    const prevInputId = this.appendKey(`otp_${inputIdx - 1}`);\n    if (KeyboardUtil.ifRightArrow($event)) {\n      $event.preventDefault();\n      this.setSelected(nextInputId);\n      return;\n    }\n    if (KeyboardUtil.ifLeftArrow($event)) {\n      $event.preventDefault();\n      this.setSelected(prevInputId);\n      return;\n    }\n    if (KeyboardUtil.ifBackspaceOrDelete($event) && !$event.target.value) {\n      this.setSelected(prevInputId);\n      this.rebuildValue();\n      return;\n    }\n\n    if (!$event.target.value) {\n      return;\n    }\n\n    if (this.ifValidKeyCode($event)) {\n      this.setSelected(nextInputId);\n    }\n    this.rebuildValue();\n  }\n\n  validateNumber(val) {\n    return val && /^\\d*\\.?\\d*$/.test(val);\n  }\n\n  appendKey(id) {\n    return `${id}_${this.componentKey}`;\n  }\n\n  setSelected(eleId) {\n    this.focusTo(eleId);\n    const ele: any = document.getElementById(eleId);\n    if (ele && ele.setSelectionRange) {\n      setTimeout(() => {\n        ele.setSelectionRange(0, 1);\n      }, 0);\n    }\n  }\n\n  ifValidKeyCode(event) {\n    const inp = event.key;\n    const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\n    return (\n      isMobile ||\n      /[a-zA-Z0-9-_]/.test(inp) ||\n      (this.config.allowKeyCodes &&\n        this.config.allowKeyCodes.includes(event.keyCode))\n    );\n  }\n\n  focusTo(eleId) {\n    const ele: any = document.getElementById(eleId);\n    if (ele) {\n      ele.focus();\n    }\n  }\n\n  // method to set component value\n  setValue(value: any) {\n    if (this.config.allowNumbersOnly && isNaN(value)) {\n      return;\n    }\n    this.otpForm.reset();\n    if (!value) {\n      this.rebuildValue();\n      return;\n    }\n    value = value.toString().replace(/\\s/g, ''); // remove whitespace\n    Array.from(value).forEach((c, idx) => {\n      if (this.otpForm.get(this.getControlName(idx))) {\n        this.otpForm.get(this.getControlName(idx)).setValue(c);\n      }\n    });\n    if (!this.config.disableAutoFocus) {\n      const containerItem = document.getElementById(`c_${this.componentKey}`);\n      var indexOfElementToFocus =\n        value.length < this.config.length\n          ? value.length\n          : this.config.length - 1;\n      let ele: any =\n        containerItem.getElementsByClassName('otp-input')[\n          indexOfElementToFocus\n        ];\n      if (ele && ele.focus) {\n        ele.focus();\n      }\n    }\n    this.rebuildValue();\n  }\n\n  rebuildValue() {\n    let val = '';\n    this.keysPipe.transform(this.otpForm.controls).forEach((k) => {\n      if (this.otpForm.controls[k].value) {\n        let ctrlVal = this.otpForm.controls[k].value;\n        let isLengthExceed = ctrlVal.length > 1;\n        let isCaseTransformEnabled =\n          !this.config.allowNumbersOnly &&\n          this.config.letterCase &&\n          (this.config.letterCase.toLocaleLowerCase() == 'upper' ||\n            this.config.letterCase.toLocaleLowerCase() == 'lower');\n        ctrlVal = ctrlVal[0];\n        let transformedVal = isCaseTransformEnabled\n          ? this.config.letterCase.toLocaleLowerCase() == 'upper'\n            ? ctrlVal.toUpperCase()\n            : ctrlVal.toLowerCase()\n          : ctrlVal;\n        if (isCaseTransformEnabled && transformedVal == ctrlVal) {\n          isCaseTransformEnabled = false;\n        } else {\n          ctrlVal = transformedVal;\n        }\n        val += ctrlVal;\n        if (isLengthExceed || isCaseTransformEnabled) {\n          this.otpForm.controls[k].setValue(ctrlVal);\n        }\n      }\n    });\n    if (this.formCtrl?.setValue) {\n      this.formCtrl.setValue(val);\n    }\n    this.onInputChange.emit(val);\n    this.currentVal = val;\n  }\n\n  handlePaste(e) {\n    // Get pasted data via clipboard API\n    let clipboardData = e.clipboardData || window['clipboardData'];\n    if (clipboardData) {\n      var pastedData = clipboardData.getData('Text');\n    }\n    // Stop data actually being pasted into div\n    e.stopPropagation();\n    e.preventDefault();\n    if (\n      !pastedData ||\n      (this.config.allowNumbersOnly && !this.validateNumber(pastedData))\n    ) {\n      return;\n    }\n    this.setValue(pastedData);\n  }\n}\n","<div class=\"ng-otp-input-wrapper wrapper {{config.containerClass}}\" id=\"c_{{componentKey}}\" *ngIf=\"otpForm?.controls\"\n  [ngStyle]=\"config.containerStyles\">\n  <input (paste)=\"handlePaste($event)\" [pattern]=\"config.allowNumbersOnly ? '\\\\d*' : ''\" [type]=\"inputType\"\n    [placeholder]=\"config?.placeholder || ''\" [ngStyle]=\"config.inputStyles\" class=\"otp-input {{config.inputClass}}\"\n    autocomplete=\"one-time-code\" *ngFor=\"let item of otpForm?.controls | keys;let i=index\"\n    [formControl]=\"otpForm.controls[item]\" #inp id=\"otp_{{i}}_{{componentKey}}\" (keyup)=\"onKeyUp($event,i)\"\n    (input)=\"onInput($event)\" (keydown)=\"onKeyDown($event,i)\">\n</div>","import { Injectable } from '@angular/core';\n\nimport * as moment from 'moment/moment';\nimport 'moment/locale/es';\nimport Swal from 'sweetalert2';\nimport * as FileSaver from 'file-saver';\nimport * as XLSX from 'xlsx';\n\nimport { Observable, fromEvent, map } from 'rxjs';\nimport { Options, ParsedQuery } from '../interfaces/service.interface';\nimport {\n  genericComboConfig,\n  genericCombo,\n} from '../interfaces/generic.interface';\nimport { HttpClient } from '@angular/common/http';\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgxDanisoftUtilsService {\n  constructor(private http: HttpClient) {}\n  /**\n   *\n   * @param url\n   * @param filename\n   * @returns\n   * @description\n   * Descarga un archivo desde una URL.\n   * @example\n   * ```typescript\n   * downloadFile('https://www.example.com/file.pdf', 'file.pdf');\n   * ```\n   */\n  public downloadFile(url: string, filename: string) {\n    return this.http\n      .get(url, { responseType: 'blob' })\n      .toPromise()\n      .then((blob: any) => {\n        const link = document.createElement('a');\n        link.href = window.URL.createObjectURL(blob);\n        link.download = filename;\n        link.click();\n        window.URL.revokeObjectURL(link.href);\n      })\n      .catch((err) => console.error('Error downloading file', err));\n  }\n  /**\n   *\n   * @param obj\n   * @returns\n   * @description\n   * Recorre un objeto y elimina los espacios en blanco de las cadenas de texto.\n   */\n\n  public trimObjectStrings<T>(obj: T): T {\n    const trimmedObj: any = {};\n\n    for (const key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        const value = (obj as any)[key];\n        if (typeof value === 'string') {\n          trimmedObj[key] = value.trim();\n        } else {\n          trimmedObj[key] = value;\n        }\n      }\n    }\n    return trimmedObj as T;\n  }\n\n  /**\n   *\n   * @param element\n   * @param numParse\n   * @returns\n   * @description\n   * Copia el contenido de un elemento HTML al portapapeles.\n   * @example\n   * ```typescript\n   * <div id=\"copyable\" #copyable>\n   *  <!-- Aquí va tu contenido HTML que deseas copiar -->\n   * <p>Contenido a copiar</p>\n   * </div>\n   * <button (click)=\"copyToClipboard(copyable)\">Copiar al portapapeles</button>\n   * ```\n   */\n\n  public copyToClipboard(element: HTMLElement, numParse: boolean = true) {\n    if (numParse) {\n      // Crear una expresión regular para encontrar los valores que cumplen el patrón\n      const regex =\n        /\\$\\d{1,3}(?:,\\d{3})*(?:\\.\\d{2})?|\\d{1,3}(?:,\\d{3})*(?:\\.\\d{2})?/g;\n      // Reemplazar solo las partes numéricas que coinciden con el patrón\n      element.innerHTML = element.innerHTML.replace(regex, function (match) {\n        // Remover comas y puntos en la parte numérica\n        return match.replace(/,/g, '').replace(/\\./g, ',');\n      });\n    }\n    let html = element.outerHTML;\n\n    navigator.clipboard\n      .writeText(html)\n      .then(() => {\n        this.successAlert('Contenido copiado al portapapeles');\n      })\n      .catch((err) => {\n        this.errorAlert('Error al copiar al portapapeles');\n        console.error('Error al copiar al portapapeles: ', err);\n      });\n  }\n\n  /**\n * @description\n * Convierte un elemento HTML a un archivo Excel y lo descarga.\n * @param element El elemento HTML a convertir.\n * @param isStyles Indica si se deben incluir los estilos del documento en el archivo Excel.\n * @param numParse Indica si se deben parsear los números en el contenido del elemento.\n * @returns void\n * @example\n * ```typescript\n * <div id=\"exportable\" #exportable>\n  <!-- Aquí va tu contenido HTML que deseas exportar -->\n  <table>\n    <thead>\n      <tr>\n        <th>Header 1</th>\n        <th>Header 2</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr>\n        <td>Data 1</td>\n        <td>Data 2</td>\n      </tr>\n    </tbody>\n  </table>\n</div>\n<button (click)=\"toHTMLaExcel(exportable)\">Exportar a Excel</button>\n  * ```\n  */\n  public toHTMLaExcel(\n    element: HTMLElement,\n    isStyles = true,\n    numParse: boolean = true\n  ) {\n    if (numParse) {\n      // Crear una expresión regular para encontrar los valores que cumplen el patrón\n      const regex =\n        /\\$\\d{1,3}(?:,\\d{3})*(?:\\.\\d{2})?|\\d{1,3}(?:,\\d{3})*(?:\\.\\d{2})?/g;\n      // Reemplazar solo las partes numéricas que coinciden con el patrón\n      element.innerHTML = element.innerHTML.replace(regex, function (match) {\n        // Remover comas y puntos en la parte numérica\n        return match.replace(/,/g, '').replace(/\\./g, ',');\n      });\n    }\n\n    // Obtén el HTML del elemento\n    const html = element.outerHTML;\n\n    // Si se requieren estilos, agrega los estilos del documento al HTML\n    let styledHtml = html;\n    if (isStyles) {\n      const styles = this.getAllCSSRules();\n      styledHtml = `<style>${styles}</style>${html}`;\n    }\n    const contenidoExcel = `\n      <html xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns=\"http://www.w3.org/TR/REC-html40\">\n      <head>\n        <meta charset=\"UTF-8\">\n        <!--[if gte mso 9]><xml>\n        <x:ExcelWorkbook>\n          <x:ExcelWorksheets>\n            <x:ExcelWorksheet>\n              <x:Name>Sheet1</x:Name>\n              <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions>\n            </x:ExcelWorksheet>\n          </x:ExcelWorksheets>\n        </x:ExcelWorkbook>\n        </xml><![endif]-->\n      </head>\n      <body>\n        ${styledHtml}\n      </body>\n      </html>`;\n\n    // Crea un blob con el contenido HTML\n    const blob = new Blob([contenidoExcel], {\n      type: 'application/vnd.ms-excel;charset=utf-8;',\n    });\n\n    // Descarga el archivo Excel\n    const link = document.createElement('a');\n    link.href = URL.createObjectURL(blob);\n    link.download = `export_${Date.now()}.xls`;\n    document.body.appendChild(link);\n    link.click();\n    document.body.removeChild(link);\n  }\n\n  private getAllCSSRules(): string {\n    let css = '';\n    for (const sheet of Array.from(document.styleSheets) as CSSStyleSheet[]) {\n      try {\n        for (const rule of Array.from(sheet.cssRules)) {\n          css += rule.cssText;\n        }\n      } catch (e) {\n        console.error('Error reading CSS rules from stylesheet:', e);\n      }\n    }\n    return css;\n  }\n\n  /**\n   *\n   * @param objCombo\n   * @returns\n   * @description\n   * Obtiene un arreglo de objetos con los años desde el año mínimo hasta el año actual.\n   * @example\n   * ```typescript\n   * getComboYear({ minYear: 1988, incrementYear: 0, order: 'ASC' });\n   * ```\n   */\n\n  public getComboYear(objCombo: genericComboConfig): genericCombo[] {\n    const currentYear = new Date().getFullYear();\n    const minYear = objCombo.minYear ?? 1988;\n    const incrementYear = objCombo.incrementYear ?? 0;\n    const years = [];\n\n    if (objCombo.order === 'DESC') {\n      for (let i = currentYear + incrementYear; i >= minYear; i--) {\n        years.push({ id: i.toString(), name: i.toString() });\n      }\n    } else {\n      for (let i = minYear; i <= currentYear + incrementYear; i++) {\n        years.push({ id: i.toString(), name: i.toString() });\n      }\n    }\n\n    return years;\n  }\n\n  /**\n   *\n   * @param current\n   * @param num\n   * @returns\n   * @description\n   * Obtiene el nombre del día de la semana de una fecha.\n   * @example\n   * ```typescript\n   * weekLabel(new Date(), 0);\n   * ```\n   *\n   */\n\n  public weekLabel(current: Date, num: number = 0): string {\n    moment.locale('es');\n    current.setDate(current.getDate() + num);\n    return moment(current).format('dddd');\n  }\n  /**\n   *\n   * @param date\n   * @returns\n   * @description\n   * Obtiene el nombre del mes de una fecha.\n   * @example\n   * ```typescript\n   * monthLabel(new Date());\n   * ```\n   *\n   */\n  public validarFechaMenorActual(date: string) {\n    var x = new Date();\n    var fecha: any = date.split('-');\n    x.setFullYear(fecha[2], fecha[1] - 1, fecha[0]);\n    var today = new Date();\n\n    if (x >= today) return false;\n    else return true;\n  }\n  /**\n   *\n   * @param date\n   * @param dateMin\n   * @param dateMax\n   * @returns\n   * @description\n   * Valida si una fecha se encuentra dentro de un rango de fechas.\n   * @example\n   * ```typescript\n   * validarFechaRange('2021-08-01', '2021-08-01', '2021-08-31');\n   * ```\n   */\n  public validarFechaRange(date: string, dateMin: string, dateMax: string) {\n    var x = new Date(date);\n    x.setDate(x.getDate() + 1);\n    console.log('X:', x.getTime());\n    var min = new Date(dateMin);\n    min.setDate(min.getDate() + 1);\n    console.log('MIN:', min.getTime());\n    var max = new Date(dateMax);\n    max.setDate(max.getDate() + 1);\n    console.log('MAX:', max.getTime());\n    if (x.getTime() >= min.getTime() && x.getTime() <= max.getTime()) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  /**\n   *\n   * @param file\n   * @returns\n   * @description\n   * Convierte un archivo a base64.\n   * @example\n   * ```typescript\n   * convertFileToBase64(file);\n   * ```\n   *\n   */\n  public convertFileToBase64(file: File): Promise<string> {\n    return new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.readAsDataURL(file);\n      reader.onload = () => resolve(reader.result as string);\n      reader.onerror = (error) => reject(error);\n    });\n  }\n\n  /**\n   *\n   * @param file\n   * @returns\n   * @description\n   * Obtiene la extensión de un archivo.\n   * @example\n   * ```typescript\n   * getExtensionFile(file);\n   * ```\n   */\n  public getExtensionFile(file: File): string {\n    return file.name.split('.').pop() || '';\n  }\n\n  /**\n   *\n   * @param base64\n   * @returns\n   * @description\n   * Obtiene el tamaño de un archivo en base64.\n   * @example\n   * ```typescript\n   * getFileSizeBase64(base64);\n   * ```\n   */\n  public getFileSizeBase64(base64: string): number {\n    return Math.round((base64.length * 3) / 4);\n  }\n\n  /**\n   *\n   * @param base64\n   * @returns\n   * @description\n   * Valida si una cadena de texto es base64.\n   * @example\n   * ```typescript\n   * isBase64(base64);\n   * ```\n   */\n  public isBase64(base64: string): boolean {\n    return base64.includes('data:');\n  }\n  /**\n   *\n   * @param base64\n   * @param fileName\n   * @returns\n   * @description\n   * Convierte una cadena de texto base64 a un archivo.\n   * @example\n   * ```typescript\n   * convertBase64ToFile(base64, 'file.pdf');\n   * ```\n   */\n  public convertBase64ToFile(base64: string, fileName: string): File {\n    const arr = base64.split(',');\n    const mime = arr[0].match(/:(.*?);/)![1];\n    const bstr = atob(arr[1]);\n    let n = bstr.length;\n    const u8arr = new Uint8Array(n);\n    while (n--) {\n      u8arr[n] = bstr.charCodeAt(n);\n    }\n    return new File([u8arr], fileName, { type: mime });\n  }\n\n  /**\n   *\n   * @param file\n   * @param extensions\n   * @returns\n   * @description\n   * Valida si la extensión de un archivo es válida.\n   * @example\n   * ```typescript\n   * validateExtensionFile(file, ['jpg', 'jpeg', 'png', 'pdf', 'gif']);\n   * ```\n   */\n  public validateExtensionFile(\n    file: File,\n    extensions: string[] = ['jpg', 'jpeg', 'png', 'pdf', 'gif']\n  ): boolean {\n    const extension = this.getExtensionFile(file);\n    return extensions.includes(extension);\n  }\n  /**\n   *\n   * @param message\n   * @param title\n   * @param type\n   * @returns\n   * @description\n   * Muestra una alerta de error.\n   * @example\n   * ```typescript\n   * errorAlert('Error al guardar el registro');\n   * ```\n   */\n  public errorAlert(\n    message: string,\n    title: string = 'Error',\n    type: any = 'warning'\n  ) {\n    Swal.fire(title, message, type);\n  }\n  /**\n   *\n   * @param message\n   * @param title\n   * @param type\n   * @returns\n   * @description\n   * Muestra una alerta de éxito.\n   * @example\n   * ```typescript\n   * successAlert('Registro guardado correctamente');\n   * ```\n   */\n  public successAlert(\n    message: string,\n    title: string = 'success',\n    type: any = 'success'\n  ) {\n    Swal.fire(title, message, type);\n  }\n  /**\n   * @description\n   * Convierte un objeto JSON a un archivo Excel y lo descarga.\n   * @param json El objeto JSON a convertir.\n   * @param excelFileName El nombre del archivo Excel a descargar.\n   * @param bookType El tipo de archivo Excel a descargar.\n   * @returns void\n   * @example\n   * ```typescript\n   * exportAsExcelFile(json, 'file', 'xlsx');\n   * ```\n   */\n  public exportAsExcelFile(\n    json: any[],\n    excelFileName: string,\n    bookType?: XLSX.BookType | undefined | null\n  ): void {\n    const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);\n\n    const Sheets = {\n      Hoja1: worksheet,\n    };\n\n    const SheetNames = ['Hoja1'];\n\n    const workbook: XLSX.WorkBook = {\n      Sheets: Sheets,\n      SheetNames: SheetNames,\n    };\n\n    if (bookType === undefined || bookType === null) {\n      bookType = 'xlsx';\n    }\n\n    const EXCEL_EXTENSION = '.' + bookType;\n    const excelBuffer: any = XLSX.write(workbook, {\n      bookType: bookType,\n      type: 'array',\n    });\n    this.saveAsExcelFile(excelBuffer, excelFileName, EXCEL_EXTENSION);\n  }\n\n  private saveAsExcelFile(\n    buffer: any,\n    fileName: string,\n    EXCEL_EXTENSION: string\n  ): void {\n    const data: Blob = new Blob([buffer], {\n      type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8',\n    });\n    FileSaver.saveAs(\n      data,\n      fileName + '_export_' + new Date().getTime() + EXCEL_EXTENSION\n    );\n  }\n  /**\n   *\n   * @param id\n   * @param btn\n   * @returns\n   * @description\n   * Copia el contenido de un elemento HTML al portapapeles.\n   * @example\n   * ```typescript\n   * <div id=\"copyable\" #copyable>\n   * <!-- Aquí va tu contenido HTML que deseas copiar -->\n   * <p>Contenido a copiar</p>\n   * </div>\n   * <button (click)=\"copyToClipboard_(copyable)\">Copiar al portapapeles</button>\n   * ```\n   */\n  public copyToClipboard_(id: string, btn: string) {\n    let inputBtn = document.getElementById(btn);\n    let aux: any = document.createElement('div');\n    aux.setAttribute('contentEditable', true);\n    aux.innerHTML = document.getElementById(id)!.innerHTML;\n    aux.setAttribute('onfocus', \"document.execCommand('selectAll',false,null)\");\n    document.body.appendChild(aux);\n    aux.focus();\n    document.execCommand('copy');\n\n    document.body.removeChild(aux);\n    inputBtn?.focus();\n    this.successAlert('Copiado al portapapeles');\n  }\n\n  private fileCnvert(content: string, type: string = 'application/pdf'): Blob {\n    const byteArray = new Uint8Array(\n      atob(content)\n        .split('')\n        .map((char) => char.charCodeAt(0))\n    );\n\n    return new Blob([byteArray], { type: type });\n  }\n  /**\n   *\n   * @param content\n   * @param type\n   * @param open\n   * @returns\n   * @description\n   * Abre el contenido de un archivo en una nueva pestaña.\n   * @example\n   * ```typescript\n   * openContentBlob('base64', 'application/pdf', true);\n   * ```\n   */\n  public openContentBlob(\n    content: string,\n    type: string = 'application/pdf',\n    open: boolean = true\n  ): string | void {\n    const file: Blob = this.fileCnvert(content, type);\n    const fileURL = window.URL.createObjectURL(file);\n\n    if (open) {\n      window.open(fileURL, '_blank');\n      // window.location.href = fileURL;\n    } else {\n      return fileURL;\n    }\n  }\n  /**\n   *\n   * @param blob\n   * @returns\n   * @description\n   * Convierte un archivo Blob a base64.\n   * @example\n   * ```typescript\n   * toBase64(blob);\n   * ```\n   */\n  public toBase64(blob: Blob): Observable<string> {\n    const reader = new FileReader();\n    reader.readAsDataURL(blob);\n    return fromEvent(reader, 'load').pipe(\n      map(() => (reader.result as string).split(',')[1])\n    );\n  }\n\n  _options: Options = {\n    parseNull: true,\n    parseUndefined: true,\n    parseBoolean: true,\n    parseNumber: true,\n  };\n  /**\n   *\n   * @param target\n   * @param options\n   * @returns\n   * @description\n   * Parsea un objeto o cadena de texto a un objeto JSON.\n   * @example\n   * ```typescript\n   * parse('{\"name\": \"John\", \"age\": \"30\"}');\n   * ```\n   */\n  public parse = (\n    target: ParsedQuery,\n    options: Options = this._options\n  ): ParsedQuery => {\n    switch (typeof target) {\n      case 'string':\n        if (target === '') {\n          return '';\n        } else if (options.parseNull && target === 'null') {\n          return null;\n        } else if (options.parseUndefined && target === 'undefined') {\n          return undefined;\n        } else if (\n          options.parseBoolean &&\n          (target === 'true' || target === 'false')\n        ) {\n          return target === 'true';\n        } else if (options.parseNumber && !isNaN(Number(target))) {\n          return Number(target);\n        } else {\n          return target;\n        }\n      case 'object':\n        if (Array.isArray(target)) {\n          return target.map((x) => this.parse(x, options));\n        } else {\n          const obj = target;\n          Object.keys(obj).map(\n            (key) => (obj[key] = this.parse(target[key], options))\n          );\n          return obj;\n        }\n      default:\n        return target;\n    }\n  };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'customCurrency',\n})\nexport class UtilsCustomCurrencyPipe implements PipeTransform {\n  transform(\n    value: any,\n    currencyCode: string = 'USD',\n    symbolDisplay: 'code' | 'symbol' | 'narrowSymbol' = 'symbol',\n    digitsInfo: string = '1.1-2',\n    locale: string = 'en-US'\n  ): string | null {\n    const formattedValue = new Intl.NumberFormat(locale, {\n      style: 'currency',\n      currency: currencyCode,\n      minimumFractionDigits: 1,\n      maximumFractionDigits: 2,\n    }).format(value);\n\n    // Insert a space between the symbol and the value\n    return formattedValue.replace(/(\\D+)(\\d)/, '$1 $2');\n  }\n}\n","import {\n  Component,\n  Input,\n  OnChanges,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport {\n  DownloadType,\n  LenguageTable,\n  TableSorter,\n} from '../../interfaces/ui-table.interface';\nimport { NgxDanisoftUtilsService } from '../../services/ngx-danisoft-utils.service';\nimport { UtilsSpinnerService } from '../../services/utils-spinner.service';\n\n@Component({\n  selector: 'utils-ui-table-sorter',\n  templateUrl: './utils-ui-table-sorter.component.html',\n  styleUrls: ['./utils-ui-table-sorter.component.scss'],\n})\nexport class UtilsUiTableSorterComponent implements OnInit, OnChanges {\n  constructor(\n    private utilitiesservice: NgxDanisoftUtilsService,\n    private spinner: UtilsSpinnerService\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    //vaciamos los filtros\n    this.tableConfig.columns.forEach((column: any) => {\n      column.filter = '';\n    });\n  }\n  @Input() darkMode: boolean = false;\n  @Input() dataFilter: any[] = [];\n  @Input() tableConfig: TableSorter = {\n    data: [],\n    dataFilter: [],\n    pageOfItems: [],\n    textDownload: 'Download',\n    formatDownload: 'xlsx',\n    classDownload: 'btn btn-primary',\n    iconDownload: 'fa fa-download',\n    downloadOption: false,\n    downloadText: 'Download',\n    isPaginate: true,\n    isFilter: true,\n    sorting: true,\n    buttonsDownload: true,\n    buttonsInitial: true,\n    pageSize: 8,\n    cssClass: '',\n    buttons: [],\n    columns: [\n      {\n        title: '',\n        class: '',\n        name: '',\n        filter: '',\n        checkColumn: false,\n        format: {\n          type: 'text',\n          format: '',\n        },\n      },\n    ],\n    columnSelector: false,\n    lenguage: 'es',\n    sticky: true,\n  };\n\n  lenguagetable: LenguageTable = {\n    buttonName: '',\n    buttonSelected: '',\n    buttonFilter: '',\n    buttonAll: '',\n    nextLabel: '',\n    previousLabel: '',\n    colunSelector: '',\n    til_1: '',\n    til_2: '',\n    til_3: '',\n    til_4: '',\n    options: '',\n  };\n\n  sortProperty: string = this.tableConfig.columns[0].name || '';\n  sortOrder = -1;\n\n  page: number = 1;\n  p: number = 1;\n  totalPage: number = 0;\n  _ItemsPage: number = 0;\n\n  checkColumnsAuto: boolean = true;\n  checkColumnsOption: boolean = true;\n  downloadOption: boolean = false;\n\n  public get ItemsPage(): number {\n    this.totalPage = this.tableConfig.data.length;\n    let count = this.tableConfig.pageSize || 8 * this.page;\n    if (count > this.totalPage) {\n      return this.tableConfig.pageSize - Math.abs(this.totalPage - count);\n    } else {\n      return this.tableConfig.pageSize;\n    }\n  }\n\n  ngOnInit(): void {\n    this.sortOrder = -1;\n    this.tableConfig.pageOfItems = this.tableConfig.data;\n    this._ItemsPage = this.ItemsPage;\n    if (this.tableConfig.lenguage === 'en') {\n      this.lenguagetable.buttonName = 'Download Data';\n      this.lenguagetable.buttonSelected = 'Download Selection';\n      this.lenguagetable.buttonFilter = 'Download Filter';\n      this.lenguagetable.buttonAll = 'Download all';\n      this.lenguagetable.nextLabel = 'Next';\n      this.lenguagetable.previousLabel = 'Previous';\n      this.lenguagetable.colunSelector = 'Select Column';\n      this.lenguagetable.til_1 = 'showing';\n      this.lenguagetable.til_2 = 'of';\n      this.lenguagetable.til_3 = 'on';\n      this.lenguagetable.til_4 = 'page';\n      this.lenguagetable.options = 'OPTIONS';\n    } else {\n      this.lenguagetable.buttonName = 'Descargar Datos';\n      this.lenguagetable.buttonSelected = 'Descargar Selección';\n      this.lenguagetable.buttonFilter = 'Descargar Filtro';\n      this.lenguagetable.buttonAll = 'Descargar Todo';\n      this.lenguagetable.nextLabel = 'Siguiente';\n      this.lenguagetable.previousLabel = 'Anterior';\n      this.lenguagetable.colunSelector = 'Seleccionar Columna';\n      this.lenguagetable.til_1 = 'mostrando';\n      this.lenguagetable.til_2 = 'de';\n      this.lenguagetable.til_3 = 'en';\n      this.lenguagetable.til_4 = 'página';\n      this.lenguagetable.options = 'OPCIONES';\n    }\n  }\n  download(type: DownloadType = 'all') {\n    this.spinner.show();\n\n    let _dataDownload: any[] = [];\n\n    if (type === 'all') {\n      _dataDownload = this.tableConfig.dataFilter;\n    } else if (type === 'filter') {\n      let _dataFilter: any[] = this.tableConfig.data;\n      _dataFilter.forEach((item: any) => {\n        let _item: any = {};\n        this.tableConfig.columns.forEach((column: any) => {\n          if (column.checkColumn) {\n            _item[column.name] = item[column.name];\n          }\n        });\n        _dataDownload.push(_item);\n      });\n    } else {\n      //recorremos la data en las columnas que esten seleccionadas\n      this.tableConfig.pageOfItems.forEach((item: any) => {\n        let _item: any = {};\n        this.tableConfig.columns.forEach((column: any) => {\n          if (column.checkColumn) {\n            _item[column.name] = item[column.name];\n          }\n        });\n        _dataDownload.push(_item);\n      });\n    }\n    this.utilitiesservice.exportAsExcelFile(\n      _dataDownload,\n      this.tableConfig.textDownload || 'download',\n      this.tableConfig.formatDownload || 'xlsx'\n    );\n    this.spinner.hide();\n  }\n\n  sortBy(property: string) {\n    this.sortOrder = property === this.sortProperty ? this.sortOrder * -1 : 1;\n    this.sortProperty = property;\n    this.tableConfig.data = [\n      ...this.tableConfig.data.sort((a: any, b: any) => {\n        // sort comparison function\n        let result = 0;\n        if (a[property] < b[property]) {\n          result = -1;\n        }\n        if (a[property] > b[property]) {\n          result = 1;\n        }\n        return result * this.sortOrder;\n      }),\n    ];\n  }\n\n  sortIcon(property: string) {\n    if (property === this.sortProperty) {\n      return this.sortOrder === 1 ? '☝️' : '👇';\n    }\n    return '';\n  }\n  // Método para filtrar las columnas\n  filterByColumns<T>() {\n    // Restablecer los datos de la tabla a su estado original sin filtrar\n    this.tableConfig.data = this.tableConfig.dataFilter;\n\n    // Crear una copia de los datos para trabajar con ellos sin mutar el original\n    let _data: T[] = this.tableConfig.dataFilter.slice();\n\n    // Filtrar las columnas que tienen algún valor en el filtro\n    let _filterEmpty = this.tableConfig.columns.filter(\n      (column: any) => column.filter && column.filter.trim() !== ''\n    );\n\n    // Si no hay filtros aplicados, devolver los datos originales\n    if (_filterEmpty.length === 0) {\n      this.tableConfig.data = this.tableConfig.dataFilter;\n    } else {\n      // Recorrer cada columna con un filtro aplicado\n      this.tableConfig.columns.forEach((column: any) => {\n        if (column.filter && column.filter.trim() !== '') {\n          let filterValue = column.filter.trim().toLowerCase();\n\n          // Aplicar el filtro a los datos\n          _data = _data.filter((item: T) => {\n            let itemValue = item[column.name].toString().toLowerCase();\n            return this.applyFilter(itemValue, filterValue);\n          });\n        }\n      });\n\n      // Actualizar los datos de la tabla con los datos filtrados\n      this.tableConfig.data = _data;\n    }\n\n    // Reiniciar la paginación\n    this.page = 1;\n    this.p = 1;\n  }\n\n  // Método para aplicar el filtro a un valor de ítem\n  applyFilter(itemValue: string, filterValue: string): boolean {\n    // Definición de expresiones regulares para distintos tipos de filtrado\n    const regex = {\n      regex: /^\\/((?:\\\\\\/|[^\\/])+)\\/([migyu]{0,5})?$/, // regex para detectar expresiones regulares\n      child: /tablesorter-childRow/, // clase para las filas hijas de la tabla\n      filtered: /filtered/, // clase para las filas filtradas (ocultas)\n      type: /undefined|number/, // tipos a verificar\n      exact: /(^[\\\"\\'=]+)|([\\\"\\'=]+$)/g, // coincidencia exacta (permitir '==')\n      operators: /[<>=]=?/g, // operadores de comparación\n      query: '(q|query)', // reemplazar consultas de filtro\n      wild01: /\\?/g, // comodín de coincidencia 0 o 1\n      wild0More: /\\*/g, // comodín de coincidencia 0 o más\n      quote: /\\\"/g, // comillas\n      isNeg1: /(>=?\\s*-\\d)/, // verificar negativos 1\n      isNeg2: /(<=?\\s*\\d)/, // verificar negativos 2\n    };\n\n    let exactMatch = false;\n\n    // Detectar si el término de búsqueda está entre comillas dobles\n    if (regex.exact.test(filterValue)) {\n      exactMatch = true;\n      filterValue = filterValue.replace(regex.exact, '');\n    }\n\n    // Si es una coincidencia exacta\n    if (exactMatch) {\n      return itemValue === filterValue;\n    }\n\n    // Detectar si el filtro contiene un operador de comparación (>, <, >=, <=, ==)\n    if (regex.operators.test(filterValue)) {\n      let operatorMatch = filterValue.match(regex.operators);\n      if (operatorMatch) {\n        let operator = operatorMatch[0];\n        let value = filterValue.split(operator)[1].trim();\n\n        // Convertir el valor del filtro a número o fecha\n        let itemNumber = parseFloat(itemValue);\n        let filterNumber = parseFloat(value);\n        let itemDate = new Date(itemValue);\n        let filterDate = new Date(value);\n\n        // Verificar si los valores son numéricos antes de comparar\n        if (!isNaN(itemNumber) && !isNaN(filterNumber)) {\n          switch (operator) {\n            case '>':\n              return itemNumber > filterNumber;\n            case '<':\n              return itemNumber < filterNumber;\n            case '>=':\n              return itemNumber >= filterNumber;\n            case '<=':\n              return itemNumber <= filterNumber;\n            case '==':\n              return itemNumber == filterNumber;\n          }\n        }\n\n        // Verificar si los valores son fechas válidas antes de comparar\n        if (!isNaN(itemDate.getTime()) && !isNaN(filterDate.getTime())) {\n          switch (operator) {\n            case '>':\n              return itemDate > filterDate;\n            case '<':\n              return itemDate < filterDate;\n            case '>=':\n              return itemDate >= filterDate;\n            case '<=':\n              return itemDate <= filterDate;\n            case '==':\n              return itemDate.getTime() === filterDate.getTime();\n          }\n        }\n      }\n    }\n\n    // Filtro de comodines\n    let wildcard = filterValue\n      .replace(regex.wild01, '.')\n      .replace(regex.wild0More, '.*');\n    let wildcardRegex = new RegExp(wildcard, 'i');\n    return wildcardRegex.test(itemValue);\n  }\n  // Método para filtrar las columnas old\n  filterByColumns_old<T>() {\n    // Inicialmente, restablecemos los datos de la tabla a su estado original sin filtrar.\n    this.tableConfig.data = this.tableConfig.dataFilter;\n\n    // Creamos una copia de los datos para trabajar con ellos sin mutar el original.\n    let _data: T[] = this.tableConfig.dataFilter.slice();\n\n    // Filtramos las columnas que tienen algún valor en el filtro.\n    let _filterEmpty = this.tableConfig.columns.filter(\n      (column: any) => column.filter && column.filter.trim() !== ''\n    );\n\n    // Si no hay filtros aplicados, devolvemos los datos originales.\n    if (_filterEmpty.length === 0) {\n      this.tableConfig.data = this.tableConfig.dataFilter;\n    } else {\n      // Recorremos cada columna con un filtro aplicado.\n      this.tableConfig.columns.forEach((column: any) => {\n        if (column.filter && column.filter.trim() !== '') {\n          let filterValue = column.filter.trim().toLowerCase();\n\n          // Detectamos si el filtro contiene un operador de comparación (>, <, >=, <=, =).\n          let filterOperatorMatch = filterValue.match(/(>=|<=|>|<|=)/);\n          if (filterOperatorMatch) {\n            let operator = filterOperatorMatch[0];\n            let value = filterValue.split(operator)[1].trim();\n\n            // Convertimos el valor filtrado y los valores de la columna a números si es posible\n            if (!isNaN(parseFloat(value))) {\n              let filterNumber = parseFloat(value);\n              _data = _data.filter((item: T) => {\n                let itemValue = parseFloat(item[column.name]);\n\n                if (isNaN(itemValue)) return false; // Si el valor del ítem no es un número, no lo incluimos\n                switch (operator) {\n                  case '>':\n                    return itemValue > filterNumber;\n                  case '<':\n                    return itemValue < filterNumber;\n                  case '>=':\n                    return itemValue >= filterNumber;\n                  case '<=':\n                    return itemValue <= filterNumber;\n                  case '=':\n                    return itemValue === filterNumber;\n                  default:\n                    return false;\n                }\n              });\n            } else if (!isNaN(Date.parse(value))) {\n              // Si el valor del filtro es una fecha\n              let filterDate = Date.parse(value);\n              _data = _data.filter((item: T) => {\n                let itemDate = Date.parse(item[column.name]);\n                if (isNaN(itemDate)) return false; // Si el valor del ítem no es una fecha, no lo incluimos\n                switch (operator) {\n                  case '>':\n                    return itemDate > filterDate;\n                  case '<':\n                    return itemDate < filterDate;\n                  case '>=':\n                    return itemDate >= filterDate;\n                  case '<=':\n                    return itemDate <= filterDate;\n                  case '=':\n                    return itemDate === filterDate;\n                  default:\n                    return false;\n                }\n              });\n            }\n          } else {\n            // Filtro de cadena.\n            let filterWords = filterValue.split(' ');\n            _data = _data.filter((item: T) => {\n              return filterWords.some((word) =>\n                item[column.name].toString().toLowerCase().includes(word)\n              );\n            });\n          }\n        }\n      });\n\n      // Actualizamos los datos de la tabla con los datos filtrados.\n      this.tableConfig.data = _data;\n    }\n\n    // Reiniciamos la paginación.\n    this.page = 1;\n    this.p = 1;\n  }\n\n  selectColumnsAuto(value: boolean) {\n    if (value === true) {\n      this.tableConfig.columns.map((column: any) => {\n        return (column.checkColumn = true);\n      });\n      this.checkColumnsOption = true;\n    }\n  }\n\n  pageChanged(p: number) {\n    this.p = p;\n    this.page = p;\n  }\n  downloadOptionClick() {\n    this.downloadOption = !this.downloadOption;\n  }\n\n  // Función para manejar cambios en los inputs\n  onInputChange(item: any, column: any, value: any) {\n    item[column.name] = value;\n    //console.log('value::', value);\n    //console.log(item);\n  }\n}\n","<div class=\"row\">\n  <div class=\"col-12\" *ngIf=\"tableConfig.data.length > 0 && tableConfig.buttonsDownload == true\">\n    <!-- Example split danger button -->\n    <div class=\"text-right\" style=\"width: 100%;\">\n      <div class=\"btn-group btn-download\">\n        <button type=\"button\" class=\"{{tableConfig.classDownload}}\" (click)=\"download()\">\n          <i class=\"{{tableConfig.iconDownload}}\"></i>\n          <ng-container *ngIf=\"tableConfig.downloadOption === false\">\n            {{tableConfig.downloadText}}\n          </ng-container>\n          <ng-container *ngIf=\"tableConfig.downloadOption === true\">\n            {{lenguagetable.buttonName}}\n          </ng-container>\n        </button>\n        <ng-container *ngIf=\"tableConfig.downloadOption\">\n          <button type=\"button\" class=\"btn btn-primary dropdown-toggle\" (click)=\"downloadOptionClick()\">\n            <i class=\"fas fa-chevron-down\"></i>\n          </button>\n          <ul *ngIf=\"downloadOption\" class=\"dropdown-menu show\"\n            style=\"position: absolute; inset: 0px auto auto 0px; margin: 0px; transform: translate(5px, 40px);\"\n            data-popper-placement=\"bottom-start\">\n            <li class=\"pointer\" *ngIf=\"tableConfig.columnSelector == true\">\n              <a class=\"dropdown-item\" (click)=\"download('selection')\">\n                <i class=\"fa fa-file-archive-o fas fa-file-archive\"></i>\n                {{lenguagetable.buttonSelected}}\n              </a>\n            </li>\n            <li>\n              <hr class=\"dropdown-divider\">\n            </li>\n            <li class=\"pointer\" *ngIf=\"tableConfig.isFilter == true\">\n              <a class=\"dropdown-item\" (click)=\"download('filter')\">\n                <i class=\"fa fa-file-archive-o fas fa-file-archive\"></i>\n                {{lenguagetable.buttonFilter}}\n              </a>\n            </li>\n            <li class=\"pointer\">\n              <a class=\"dropdown-item\" (click)=\"download()\">\n                <i class=\"fa fa-file-archive-o fas fa-file-archive\"></i>\n                {{lenguagetable.buttonAll}}\n              </a>\n            </li>\n          </ul>\n        </ng-container>\n      </div>\n    </div>\n  </div>\n  <div *ngIf=\"tableConfig.columnSelector\" class=\"col-12 columnSelectorWrapper\">\n    <input id=\"colSelect1\" type=\"checkbox\" class=\"hidden\">\n    <label class=\"btn btn-outline-primary\" for=\"colSelect1\">\n      <i class=\"fa fa-th\"></i>\n      {{lenguagetable.colunSelector}}\n    </label>\n    <div id=\"columnSelector\" class=\"columnSelector\">\n      <label>\n        <input type=\"checkbox\" data-column=\"auto\" class=\"checked\" [(ngModel)]=\"checkColumnsAuto\"\n          (ngModelChange)=\"selectColumnsAuto($event)\">\n        Auto:\n      </label>\n      <div class=\"columnSelectorScroll\">\n        <label [ngClass]=\"{'disabled': checkColumnsAuto}\" *ngFor=\"let column of tableConfig.columns; let i = index\">\n          <input type=\"checkbox\" attr.data-column=\"{{i}}\" class=\"checked\" [disabled]=\"checkColumnsAuto\"\n            [(ngModel)]=\"column.checkColumn\">\n          {{column.title}}\n        </label>\n        <label [ngClass]=\"{'disabled': checkColumnsAuto}\">\n          <input type=\"checkbox\" data-column=\"auto\" class=\"checked\" [(ngModel)]=\"checkColumnsOption\"\n            [disabled]=\"checkColumnsAuto\">\n          OPTION\n        </label>\n      </div>\n    </div>\n  </div>\n  <div class=\"overflowing_table\" [ngClass]=\"{'sticky-table': tableConfig.sticky}\">\n    <div *ngIf=\"tableConfig.caption != undefined\" class=\"pagination_info\">\n      <h4 class=\"mb-0 caption-table\">{{tableConfig.caption}}</h4>\n    </div>\n    <div *ngIf=\"tableConfig.isPaginate\" class=\"pagination_info\">\n      {{lenguagetable.til_1}}\n      <b><i>{{ItemsPage}}</i></b>\n      {{lenguagetable.til_2}}\n      <b><i>{{totalPage}}</i></b>\n      {{lenguagetable.til_3}} {{lenguagetable.til_4}}\n      <b><i>{{p}}</i></b>\n    </div>\n    <div [ngClass]=\"{'table-container': tableConfig.sticky}\">\n      <table\n        class=\"table table-striped table-bordered master-hand centerText tablesorter tablesorter-blue {{tableConfig.cssClass}}\">\n        <thead [ngClass]=\"{'sticky-thead': tableConfig.sticky}\">\n          <tr class=\"invoice_header\">\n            <th [ngClass]=\"{'hidden': !checkColumnsOption}\" class=\"text-center th th-buton\"\n              *ngIf=\"tableConfig.buttons.length > 0 && tableConfig?.fillForm === undefined && tableConfig?.buttonsInitial === true\">\n              {{lenguagetable.options}}\n            </th>\n            <th *ngFor=\"let column of tableConfig.columns; let i = index\" attr.data-column=\"{{i}}\"\n              [ngClass]=\"{'hidden': !column.checkColumn}\"\n              (click)=\"tableConfig.sorting === true ? sortBy(column.name) : ''\"\n              class=\"th tablesorter-header tablesorter-headerUnSorted {{column.class}}\" tabindex=\"0\" scope=\"col\"\n              role=\"columnheader\" aria-disabled=\"false\" unselectable=\"on\" aria-sort=\"none\"\n              attr.aria-label=\"{{column.name}}\" style=\"user-select: none;\">\n              <div class=\"tablesorter-wrapper\" style=\"position:relative;height:100%;width:100%\">\n                <div class=\"tablesorter-header-inner\">{{column.title}} {{tableConfig.sorting === true ?\n                  sortIcon(column.name) : ''}}</div>\n              </div>\n            </th>\n            <th [ngClass]=\"{'hidden': !checkColumnsOption}\" class=\"text-center th th-buton\"\n              *ngIf=\"tableConfig.buttons.length > 0 && tableConfig?.fillForm === undefined && tableConfig?.buttonsInitial === false\">\n              {{lenguagetable.options}}\n            </th>\n          </tr>\n          <tr *ngIf=\"tableConfig.isFilter\" role=\"search\" class=\"tablesorter-filter-row tablesorter-ignoreRow\">\n            <td [ngClass]=\"{'hidden': !checkColumnsOption}\"\n              *ngIf=\"tableConfig.buttons.length > 0 && tableConfig?.fillForm === undefined && tableConfig?.buttonsInitial === true\">\n            </td>\n            <td [ngClass]=\"{'hidden': !column.checkColumn}\" attr.data-column=\"{{i}}\"\n              *ngFor=\"let column of tableConfig.columns; let i = index\">\n              <input type=\"search\" [(ngModel)]=\"column.filter\" (ngModelChange)=\"filterByColumns($event)\" placeholder=\"\"\n                class=\"tablesorter-filter\" attr.data-column=\"{{i}}\" aria-label=\"Filter\">\n            </td>\n            <td [ngClass]=\"{'hidden': !checkColumnsOption}\"\n              *ngIf=\"tableConfig.buttons.length > 0 && tableConfig?.fillForm === undefined && tableConfig?.buttonsInitial === false\">\n            </td>\n          </tr>\n        </thead>\n        <tbody *ngIf=\"tableConfig.isPaginate\">\n          <tr [ngClass]=\"{'pointer': tableConfig.fillForm}\"\n            (click)=\"tableConfig.fillForm ? tableConfig?.fillForm(item) : ''\"\n            *ngFor=\"let item of tableConfig.data | paginate: { itemsPerPage: _ItemsPage, currentPage: p }\">\n            <td [ngClass]=\"{'hidden': !checkColumnsOption}\" class=\"text-center\"\n              *ngIf=\"tableConfig.buttons.length > 0 && tableConfig?.fillForm === undefined && tableConfig?.buttonsInitial === true\">\n              <button *ngFor=\"let button of tableConfig.buttons\" type=\"button\" class=\"btn btn-xs btn-{{button.type}}\"\n                [ngClass]=\"{'full-width': button.text}\" attr.title=\"{{button.title}}\" (click)=\"button?.onclick(item)\">\n                <ng-container *ngIf=\"!button.text; else textTemplate\">\n                  <span class=\"{{button.icon}}\" *ngIf=\"button.icon\"></span>\n                  <span class=\"fa fa-bars\" *ngIf=\"!button.icon\"></span>\n                </ng-container>\n                <ng-template #textTemplate>\n                  {{button.text}}\n                </ng-template>\n              </button>\n            </td>\n            <td\n              [ngStyle]=\"column.conditionalStyle ? column.conditionalStyle(item[column.name], column.format?.type) : {}\"\n              [ngClass]=\"{'hidden': !column.checkColumn}\" class=\"{{item.classTd ? item.classTd : column.classItems}}\"\n              *ngFor=\"let column of tableConfig.columns\"\n              [ngClass]=\"column.conditionalClassTD ? column.conditionalClassTD(item[column.name], column.format?.type) : ''\">\n              <ng-container *ngIf=\"!column.inputType?.enabled\">\n                <span *ngIf=\"column.link === undefined\"\n                  [ngClass]=\"column.conditionalClass ? column.conditionalClass(item[column.name], column.format?.type) : ''\">\n                  <ng-container [ngSwitch]=\"column.format?.type\">\n                    <ng-container *ngSwitchCase=\"'date'\">{{item[column.name] | date:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'number'\">{{item[column.name] | number:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'currency'\">{{item[column.name] | customCurrency:\n                      column.format?.format:'symbol':'1.1-2'}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'percent'\">{{item[column.name] | percent:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchDefault>{{item[column.name]}}</ng-container>\n                  </ng-container>\n                </span>\n                <span *ngIf=\"column.link?.isLink == true\" (click)=\"column.link?.onclick(item)\"\n                  attr.title=\"{{column.link?.title}}\" class=\"clickable\"\n                  [ngClass]=\"column.conditionalClass ? column.conditionalClass(item[column.name], column.format?.type) : ''\">\n                  <ng-container [ngSwitch]=\"column.format?.type\">\n                    <ng-container *ngSwitchCase=\"'date'\">{{item[column.name] | date:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'number'\">{{item[column.name] | number:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'currency'\">{{item[column.name] | customCurrency:\n                      column.format?.format:'symbol':'1.1-2'}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'percent'\">{{item[column.name] | percent:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchDefault>{{item[column.name]}}</ng-container>\n                  </ng-container>\n                </span>\n              </ng-container>\n              <ng-container *ngIf=\"column.inputType?.enabled\">\n                <input *ngIf=\"column.inputType.type === 'text'\" type=\"text\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'number'\" type=\"number\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'date'\" type=\"date\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'email'\" type=\"email\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'password'\" type=\"password\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'tel'\" type=\"tel\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'checkbox'\" type=\"checkbox\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\" class=\"custom-checkbox\" />\n              </ng-container>\n            </td>\n            <td [ngClass]=\"{'hidden': !checkColumnsOption}\" class=\"text-center t-option\"\n              *ngIf=\"tableConfig.buttons.length > 0 && tableConfig?.fillForm === undefined && tableConfig?.buttonsInitial === false\">\n              <button *ngFor=\"let button of tableConfig.buttons\" type=\"button\" class=\"btn btn-xs btn-{{button.type}}\"\n                [ngClass]=\"{'full-width': button.text}\" attr.title=\"{{button.title}}\" (click)=\"button?.onclick(item)\">\n                <ng-container *ngIf=\"!button.text; else textTemplate\">\n                  <span class=\"{{button.icon}}\" *ngIf=\"button.icon\"></span>\n                  <span class=\"fa fa-bars\" *ngIf=\"!button.icon\"></span>\n                </ng-container>\n                <ng-template #textTemplate>\n                  {{button.text}}\n                </ng-template>\n              </button>\n            </td>\n          </tr>\n          <tr *ngIf=\"tableConfig.data.length == 0\">\n            <td attr.colspan=\"{{tableConfig.columns.length}}\" class=\"text-center\">\n              <span class=\"text-muted {{darkMode === true ? '' : 'text-black'}}\">{{lenguagetable.tr_info}}</span>\n            </td>\n          </tr>\n        </tbody>\n        <tbody *ngIf=\"!tableConfig.isPaginate\">\n          <tr [ngClass]=\"{'pointer': tableConfig.fillForm}\"\n            (click)=\"tableConfig.fillForm ? tableConfig?.fillForm(item) : ''\" *ngFor=\"let item of tableConfig.data\">\n            <td [ngClass]=\"{'hidden': !checkColumnsOption}\" class=\"text-center t-option\"\n              *ngIf=\"tableConfig.buttons.length > 0 && tableConfig?.fillForm === undefined && tableConfig?.buttonsInitial === true\">\n              <button *ngFor=\"let button of tableConfig.buttons\" type=\"button\" class=\"btn btn-xs btn-{{button.type}}\"\n                [ngClass]=\"{'full-width': button.text}\" attr.title=\"{{button.title}}\" (click)=\"button?.onclick(item)\">\n                <ng-container *ngIf=\"!button.text; else textTemplate\">\n                  <span class=\"{{button.icon}}\" *ngIf=\"button.icon\"></span>\n                  <span class=\"fa fa-bars\" *ngIf=\"!button.icon\"></span>\n                </ng-container>\n                <ng-template #textTemplate>\n                  {{button.text}}\n                </ng-template>\n              </button>\n            </td>\n            <td\n              [ngStyle]=\"column.conditionalStyle ? column.conditionalStyle(item[column.name], column.format?.type) : {}\"\n              [ngClass]=\"{'hidden': !column.checkColumn}\" class=\"{{item.classTd ? item.classTd : column.classItems}}\"\n              *ngFor=\"let column of tableConfig.columns\"\n              [ngClass]=\"column.conditionalClassTD ? column.conditionalClassTD(item[column.name], column.format?.type) : ''\">\n              <ng-container *ngIf=\"!column.inputType?.enabled\">\n                <span *ngIf=\"column.link === undefined\"\n                  [ngClass]=\"column.conditionalClass ? column.conditionalClass(item[column.name], column.format?.type) : ''\">\n                  <ng-container [ngSwitch]=\"column.format?.type\">\n                    <ng-container *ngSwitchCase=\"'date'\">{{item[column.name] | date:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'number'\">{{item[column.name] | number:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'currency'\">{{item[column.name] | customCurrency:\n                      column.format?.format:'symbol':'1.1-2'}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'percent'\">{{item[column.name] | percent:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchDefault>{{item[column.name]}}</ng-container>\n                  </ng-container>\n                </span>\n                <span *ngIf=\"column.link?.isLink == true\" (click)=\"column.link?.onclick(item)\"\n                  attr.title=\"{{column.link?.title}}\" class=\"{{darkMode === true ? 'clickable-white' : 'clickable'}}\"\n                  [ngClass]=\"column.conditionalClass ? column.conditionalClass(item[column.name], column.format?.type) : ''\">\n                  <ng-container [ngSwitch]=\"column.format?.type\">\n                    <ng-container *ngSwitchCase=\"'date'\">{{item[column.name] | date:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'number'\">{{item[column.name] | number:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'currency'\">{{item[column.name] | customCurrency:\n                      column.format?.format:'symbol':'1.1-2'}}</ng-container>\n                    <ng-container *ngSwitchCase=\"'percent'\">{{item[column.name] | percent:\n                      column.format?.format}}</ng-container>\n                    <ng-container *ngSwitchDefault>{{item[column.name]}}</ng-container>\n                  </ng-container>\n                </span>\n              </ng-container>\n              <ng-container *ngIf=\"column.inputType?.enabled\">\n                <input *ngIf=\"column.inputType.type === 'text'\" type=\"text\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'number'\" type=\"number\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'date'\" type=\"date\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'email'\" type=\"email\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'password'\" type=\"password\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'tel'\" type=\"tel\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\"\n                  class=\"form-control valInput {{column.inputType?.class}}\" />\n                <input *ngIf=\"column.inputType.type === 'checkbox'\" type=\"checkbox\" [(ngModel)]=\"item[column.name]\"\n                  (ngModelChange)=\"onInputChange(item, column, $event)\" class=\"custom-checkbox\" />\n              </ng-container>\n            </td>\n            <td [ngClass]=\"{'hidden': !checkColumnsOption}\" class=\"text-center t-option\"\n              *ngIf=\"tableConfig.buttons.length > 0 && tableConfig?.fillForm === undefined && tableConfig?.buttonsInitial === false\">\n\n              <button *ngFor=\"let button of tableConfig.buttons\" type=\"button\" class=\"btn btn-xs btn-{{button.type}}\"\n                [ngClass]=\"{'full-width': button.text}\" attr.title=\"{{button.title}}\" (click)=\"button?.onclick(item)\">\n                <ng-container *ngIf=\"!button.text; else textTemplate\">\n                  <span class=\"{{button.icon}}\" *ngIf=\"button.icon\"></span>\n                  <span class=\"fa fa-bars\" *ngIf=\"!button.icon\"></span>\n                </ng-container>\n                <ng-template #textTemplate>\n                  {{button.text}}\n                </ng-template>\n              </button>\n            </td>\n          </tr>\n          <tr *ngIf=\"tableConfig.data.length == 0\">\n            <td attr.colspan=\"{{tableConfig.columns.length}}\" class=\"text-center\">\n              <span class=\"text-muted {{darkMode === true ? '' : 'text-black'}}\">{{lenguagetable.tr_info}}</span>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n    <div class=\"text-right\" *ngIf=\"tableConfig.isPaginate\">\n      <utils-pagination [responsive]=\"true\" (pageChange)=\"pageChanged($event)\"\n        [previousLabel]=\"lenguagetable.previousLabel\" [nextLabel]=\"lenguagetable.nextLabel\">\n      </utils-pagination>\n    </div>\n  </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\n\nimport { UtilsSpinnerModule } from './utils-spinner.module';\nimport { UtilsPaginationModule } from './utils-pagination.module';\nimport { UtilsAutocompleteModule } from './utils-autocomplete.module';\nimport { UtilsToastrModule } from './utils-toastr.module';\n\nimport { UtilsNativeElementInjectorDirective } from '../directives/utils-native-element-injector.directive';\n\nimport { UtilsHighlightPipe } from '../pipes/utils-highlight.pipe';\nimport { UtilsTruncatePipe } from '../pipes/utils.truncate.pipe';\nimport { UtilsPaginatePipe } from '../pipes/utlils-paginate.pipe';\n\nimport { NgxDanisoftUtilsComponent } from '../components/ngx-danisoft-utils/ngx-danisoft-utils.component';\nimport { UtilsIntlTelInputComponent } from '../components/utils-intl-tel-input/utils-intl-tel-input.component';\nimport { UtilsSpinnerComponent } from '../components/utils-spinner/utils-spinner.component';\nimport { UtilsPaginationComponent } from '../components/utils-pagination/utils-pagination.component';\nimport { UtilsAutocompleteComponent } from '../components/utils-autocomplete/utils-autocomplete.component';\nimport { UtilsToastr } from '../components/utils-toastr/utils-toastr.component';\nimport { UtilsOtpInputComponent } from '../components/utils-otp-input/utils-otp-input.component';\nimport { UtilsKeysPipe } from '../pipes/utils-keys.pipe';\nimport { UtilsUiTableSorterComponent } from '../components/utils-ui-table-sorter/utils-ui-table-sorter.component';\nimport { UtilsCustomCurrencyPipe } from '../pipes/utils-customCurrency.pipe';\nimport { HttpClientModule } from '@angular/common/http';\n\nexport const dropdownModuleForRoot: ModuleWithProviders<BsDropdownModule> =\n  BsDropdownModule.forRoot();\n\nexport const utilstoastrmoduleForRoot: ModuleWithProviders<UtilsToastrModule> =\n  UtilsToastrModule.forRoot();\n\n@NgModule({\n  declarations: [\n    NgxDanisoftUtilsComponent,\n    UtilsIntlTelInputComponent,\n    UtilsUiTableSorterComponent,\n    UtilsNativeElementInjectorDirective,\n    UtilsTruncatePipe,\n    UtilsOtpInputComponent,\n    UtilsKeysPipe,\n    UtilsCustomCurrencyPipe,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    HttpClientModule,\n    dropdownModuleForRoot,\n    UtilsSpinnerModule,\n    UtilsPaginationModule,\n    UtilsAutocompleteModule,\n    utilstoastrmoduleForRoot,\n  ],\n  exports: [\n    NgxDanisoftUtilsComponent,\n    UtilsIntlTelInputComponent,\n    UtilsSpinnerComponent,\n    UtilsUiTableSorterComponent,\n    UtilsNativeElementInjectorDirective,\n    UtilsPaginatePipe,\n    UtilsPaginationComponent,\n    UtilsPaginatePipe,\n    UtilsTruncatePipe,\n    UtilsAutocompleteComponent,\n    UtilsHighlightPipe,\n    UtilsToastr,\n    UtilsOtpInputComponent,\n    UtilsCustomCurrencyPipe,\n  ],\n  providers: [UtilsKeysPipe],\n})\nexport class NgxDanisoftUtilsModule {}\n","\n/**\n * Coerces a data-bound value (typically a string) to a boolean.\n * Taken from https://github.com/angular/components/blob/master/src/cdk/coercion/boolean-property.ts\n */\nexport function coerceBooleanProperty(value: any): boolean\n{\n\treturn value != null && `${value}` !== 'false';\n}\n\n/**\n * Whether the provided value is considered a number.\n * Taken from https://github.com/angular/components/blob/master/src/cdk/coercion/number-property.ts\n */\nexport function coerceNumberProperty(value: any): number\n{\n\t// parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n\t// and other non-number values as NaN, where Number just uses 0) but it considers the string\n\t// '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n\treturn (!isNaN(parseFloat(value as any)) && !isNaN(Number(value))) ? Number(value) : null;\n}\n","import { UtilsDropzoneComponent } from \"../components/utils-dropzone/utils-dropzone.component\";\n\nexport enum KEY_CODE {\n  BACKSPACE = 8,\n  DELETE = 46,\n}\nexport interface UtilsDropzoneChangeEvent {\n  source: UtilsDropzoneComponent;\n  addedFiles: File[];\n  rejectedFiles: RejectedFile[];\n}\n\n\nexport interface FileSelectResult {\n  /** The added files, emitted in the filesAdded event. */\n  addedFiles: File[];\n\n  /** The rejected files, emitted in the filesRejected event. */\n  rejectedFiles: RejectedFile[];\n}\n\nexport interface RejectedFile extends File {\n  /** The reason the file was rejected. */\n  reason?: RejectReason;\n}\n\nexport type RejectReason = 'type' | 'size' | 'no_multiple';\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'utils-dropzone-remove-badge',\n  templateUrl: './utils-dropzone-remove-badge.component.html',\n  styleUrls: ['./utils-dropzone-remove-badge.component.scss'],\n})\nexport class UtilsDropzoneRemoveBadgeComponent {}\n","<svg>\n  <line x1=\"0\" y1=\"0\" x2=\"10\" y2=\"10\" />\n  <line x1=\"0\" y1=\"10\" x2=\"10\" y2=\"0\" />\n</svg>","import { Component, Input, Output, EventEmitter, HostBinding, HostListener } from '@angular/core';\nimport { SafeStyle, DomSanitizer } from '@angular/platform-browser';\nimport { coerceBooleanProperty } from '../../helpers/helpers';\nimport { KEY_CODE } from '../../interfaces/dropzone.interface';\n\n@Component({\n  selector: 'utils-dropzone-preview',\n  templateUrl: './utils-dropzone-preview.component.html',\n  styleUrls: ['./utils-dropzone-preview.component.scss'],\n})\nexport class UtilsDropzonePreviewComponent {\n  constructor(protected sanitizer: DomSanitizer) {}\n\n  protected _file: File;\n\n  /** The file to preview. */\n  @Input()\n  set file(value: File) {\n    this._file = value;\n  }\n  get file(): File {\n    return this._file;\n  }\n\n  /** Allow the user to remove files. */\n  @Input()\n  get removable(): boolean {\n    return this._removable;\n  }\n  set removable(value: boolean) {\n    this._removable = coerceBooleanProperty(value);\n  }\n  protected _removable = false;\n\n  /** Emitted when the element should be removed. */\n  @Output() readonly removed = new EventEmitter<File>();\n\n  @HostListener('keyup', ['$event'])\n  keyEvent(event: KeyboardEvent) {\n    switch (event.keyCode) {\n      case KEY_CODE.BACKSPACE:\n      case KEY_CODE.DELETE:\n        this.remove();\n        break;\n      default:\n        break;\n    }\n  }\n\n  /** We use the HostBinding to pass these common styles to child components. */\n  @HostBinding('style')\n  get hostStyle(): SafeStyle {\n    const styles = `\n\t\t\tdisplay: flex;\n\t\t\theight: 140px;\n\t\t\tmin-height: 140px;\n\t\t\tmin-width: 180px;\n\t\t\tmax-width: 180px;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t\tpadding: 0 20px;\n\t\t\tmargin: 10px;\n\t\t\tborder-radius: 5px;\n\t\t\tposition: relative;\n\t\t`;\n\n    return this.sanitizer.bypassSecurityTrustStyle(styles);\n  }\n\n  /** Make the preview item focusable using the tab key. */\n  @HostBinding('tabindex') tabIndex = 0;\n\n  /** Remove method to be used from the template. */\n  _remove(event) {\n    event.stopPropagation();\n    this.remove();\n  }\n\n  /** Remove the preview item (use from component code). */\n  remove() {\n    if (this._removable) {\n      this.removed.next(this.file);\n    }\n  }\n\n  protected async readFile(): Promise<string | ArrayBuffer> {\n    return new Promise<string | ArrayBuffer>((resolve, reject) => {\n      const reader = new FileReader();\n\n      reader.onload = (e) => {\n        resolve((e.target as FileReader).result);\n      };\n\n      reader.onerror = (e) => {\n        console.error(`FileReader failed on file ${this.file.name}.`);\n        reject(e);\n      };\n\n      if (!this.file) {\n        return reject(\n          'No file to read. Please provide a file using the [file] Input property.'\n        );\n      }\n\n      reader.readAsDataURL(this.file);\n    });\n  }\n}\n","<ng-content select=\"utils-dropzone-label\"></ng-content>\n<utils-dropzone-remove-badge *ngIf=\"removable\" (click)=\"_remove($event)\">\n</utils-dropzone-remove-badge>","import { Component, OnInit, HostBinding, Input } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { UtilsDropzonePreviewComponent } from '../utils-dropzone-preview.component';\n\n@Component({\n  selector: 'utils-dropzone-image-preview',\n  templateUrl: './utils-dropzone-image-preview.component.html',\n  styleUrls: ['./utils-dropzone-image-preview.component.scss'],\n  providers: [\n    {\n      provide: UtilsDropzonePreviewComponent,\n      useExisting: UtilsDropzoneImagePreviewComponent,\n    },\n  ],\n})\nexport class UtilsDropzoneImagePreviewComponent\n  extends UtilsDropzonePreviewComponent\n  implements OnInit\n{\n  constructor(sanitizer: DomSanitizer) {\n    super(sanitizer);\n  }\n\n  /** The file to preview. */\n  @Input()\n  override set file(value: File) {\n    this._file = value;\n    this.renderImage();\n  }\n  override get file(): File {\n    return this._file;\n  }\n\n  /** The image data source. */\n  defaultImgLoading =\n    'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0ibWFyZ2luOiBhdXRvOyBiYWNrZ3JvdW5kOiByZ2IoMjQxLCAyNDIsIDI0Mykgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDAlOyBkaXNwbGF5OiBibG9jazsgc2hhcGUtcmVuZGVyaW5nOiBhdXRvOyIgd2lkdGg9IjIyNHB4IiBoZWlnaHQ9IjIyNHB4IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPgo8Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSIxNCIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2U9IiM4NWEyYjYiIHN0cm9rZS1kYXNoYXJyYXk9IjIxLjk5MTE0ODU3NTEyODU1MiAyMS45OTExNDg1NzUxMjg1NTIiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CiAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGR1cj0iMS4xNjI3OTA2OTc2NzQ0MTg0cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iMCA1MCA1MDszNjAgNTAgNTAiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KPC9jaXJjbGU+CjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjEwIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZT0iI2JiY2VkZCIgc3Ryb2tlLWRhc2hhcnJheT0iMTUuNzA3OTYzMjY3OTQ4OTY2IDE1LjcwNzk2MzI2Nzk0ODk2NiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjE1LjcwNzk2MzI2Nzk0ODk2NiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj4KICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InJvdGF0ZSIgZHVyPSIxLjE2Mjc5MDY5NzY3NDQxODRzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIwIDUwIDUwOy0zNjAgNTAgNTAiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KPC9jaXJjbGU+CjwhLS0gW2xkaW9dIGdlbmVyYXRlZCBieSBodHRwczovL2xvYWRpbmcuaW8vIC0tPjwvc3ZnPg==';\n  imageSrc: any = this.sanitizer.bypassSecurityTrustUrl(this.defaultImgLoading);\n\n  ngOnInit() {\n    this.renderImage();\n  }\n\n  private renderImage() {\n    this.readFile()\n      .then((img) => setTimeout(() => (this.imageSrc = img)))\n      .catch((err) => console.error(err));\n  }\n}\n","<img [src]=\"imageSrc\" />\n<ng-content select=\"utils-dropzone-label\"></ng-content>\n<utils-dropzone-remove-badge *ngIf=\"removable\" (click)=\"_remove($event)\">\n</utils-dropzone-remove-badge>","import { Injectable } from \"@angular/core\";\nimport { FileSelectResult, RejectedFile, RejectReason } from \"../interfaces/dropzone.interface\";\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UtilsDropzoneService {\n  parseFileList(\n    files: FileList,\n    accept: string,\n    maxFileSize: number,\n    multiple: boolean\n  ): FileSelectResult {\n    const addedFiles: File[] = [];\n    const rejectedFiles: RejectedFile[] = [];\n\n    for (let i = 0; i < files.length; i++) {\n      const file = files.item(i);\n\n      if (!this.isAccepted(file, accept)) {\n        this.rejectFile(rejectedFiles, file, 'type');\n        continue;\n      }\n\n      if (maxFileSize && file.size > maxFileSize) {\n        this.rejectFile(rejectedFiles, file, 'size');\n        continue;\n      }\n\n      if (!multiple && addedFiles.length >= 1) {\n        this.rejectFile(rejectedFiles, file, 'no_multiple');\n        continue;\n      }\n\n      addedFiles.push(file);\n    }\n\n    const result: FileSelectResult = {\n      addedFiles,\n      rejectedFiles,\n    };\n\n    return result;\n  }\n\n  private isAccepted(file: File, accept: string): boolean {\n    if (accept === '*') {\n      return true;\n    }\n\n    const acceptFiletypes = accept\n      .split(',')\n      .map((it) => it.toLowerCase().trim());\n    const filetype = file.type.toLowerCase();\n    const filename = file.name.toLowerCase();\n\n    const matchedFileType = acceptFiletypes.find((acceptFiletype) => {\n      // check for wildcard mimetype (e.g. image/*)\n      if (acceptFiletype.endsWith('/*')) {\n        return filetype.split('/')[0] === acceptFiletype.split('/')[0];\n      }\n\n      // check for file extension (e.g. .csv)\n      if (acceptFiletype.startsWith('.')) {\n        return filename.endsWith(acceptFiletype);\n      }\n\n      // check for exact mimetype match (e.g. image/jpeg)\n      return acceptFiletype == filetype;\n    });\n\n    return !!matchedFileType;\n  }\n\n  private rejectFile(\n    rejectedFiles: RejectedFile[],\n    file: File,\n    reason: RejectReason\n  ) {\n    const rejectedFile = file as RejectedFile;\n    rejectedFile.reason = reason;\n\n    rejectedFiles.push(rejectedFile);\n  }\n}\n","import { Component, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, QueryList, Self, ViewChild } from \"@angular/core\";\nimport { UtilsDropzoneService } from \"../../services/utils-dropzone.service\";\nimport { UtilsDropzoneChangeEvent } from \"../../interfaces/dropzone.interface\";\nimport { UtilsDropzonePreviewComponent } from \"../utils-dropzone-preview/utils-dropzone-preview.component\";\nimport { coerceBooleanProperty, coerceNumberProperty } from \"../../helpers/helpers\";\n\n@Component({\n  selector: 'utils-dropzone, [utils-dropzone]',\n  templateUrl: './utils-dropzone.component.html',\n  styleUrls: ['./utils-dropzone.component.scss'],\n  providers: [UtilsDropzoneService],\n})\nexport class UtilsDropzoneComponent {\n  constructor(@Self() private service: UtilsDropzoneService) {}\n\n  /** A list of the content-projected preview children. */\n  @ContentChildren(UtilsDropzonePreviewComponent, { descendants: true })\n  _previewChildren: QueryList<UtilsDropzonePreviewComponent>;\n\n  get _hasPreviews(): boolean {\n    return !!this._previewChildren.length;\n  }\n\n  /** A template reference to the native file input element. */\n  @ViewChild('fileInput', { static: true }) _fileInput: ElementRef;\n\n  /** Emitted when any files were added or rejected. */\n  @Output() readonly change = new EventEmitter<UtilsDropzoneChangeEvent>();\n\n  /** Set the accepted file types. Defaults to '*'. */\n  @Input() accept = '*';\n\n  /** Disable any user interaction with the component. */\n  @Input()\n  @HostBinding('class.utils-dz-disabled')\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n\n    if (this._isHovered) {\n      this._isHovered = false;\n    }\n  }\n  private _disabled = false;\n\n  /** Allow the selection of multiple files. */\n  @Input()\n  get multiple(): boolean {\n    return this._multiple;\n  }\n  set multiple(value: boolean) {\n    this._multiple = coerceBooleanProperty(value);\n  }\n  private _multiple = true;\n\n  /** Set the maximum size a single file may have. */\n  @Input()\n  get maxFileSize(): number {\n    return this._maxFileSize;\n  }\n  set maxFileSize(value: number) {\n    this._maxFileSize = coerceNumberProperty(value);\n  }\n  private _maxFileSize: number = undefined;\n\n  /** Allow the dropzone container to expand vertically. */\n  @Input()\n  @HostBinding('class.expandable')\n  get expandable(): boolean {\n    return this._expandable;\n  }\n  set expandable(value: boolean) {\n    this._expandable = coerceBooleanProperty(value);\n  }\n  private _expandable: boolean = false;\n\n  /** Open the file selector on click. */\n  @Input()\n  @HostBinding('class.unclickable')\n  get disableClick(): boolean {\n    return this._disableClick;\n  }\n  set disableClick(value: boolean) {\n    this._disableClick = coerceBooleanProperty(value);\n  }\n  private _disableClick = false;\n\n  /** Allow dropping directories. */\n  @Input()\n  get processDirectoryDrop(): boolean {\n    return this._processDirectoryDrop;\n  }\n  set processDirectoryDrop(value: boolean) {\n    this._processDirectoryDrop = coerceBooleanProperty(value);\n  }\n  private _processDirectoryDrop = false;\n\n  /** Expose the id, aria-label, aria-labelledby and aria-describedby of the native file input for proper accessibility. */\n  @Input() id: string;\n  @Input('aria-label') ariaLabel: string;\n  @Input('aria-labelledby') ariaLabelledby: string;\n  @Input('aria-describedby') ariaDescribedBy: string;\n\n  @HostBinding('class.utils-dz-hovered')\n  _isHovered = false;\n\n  /** Show the native OS file explorer to select files. */\n  @HostListener('click')\n  _onClick() {\n    if (!this.disableClick) {\n      this.showFileSelector();\n    }\n  }\n\n  @HostListener('dragover', ['$event'])\n  _onDragOver(event) {\n    if (this.disabled) {\n      return;\n    }\n\n    this.preventDefault(event);\n    this._isHovered = true;\n  }\n\n  @HostListener('dragleave')\n  _onDragLeave() {\n    this._isHovered = false;\n  }\n\n  @HostListener('drop', ['$event'])\n  _onDrop(event) {\n    if (this.disabled) {\n      return;\n    }\n\n    this.preventDefault(event);\n    this._isHovered = false;\n\n    // if processDirectoryDrop is not enabled or webkitGetAsEntry is not supported we handle the drop as usual\n    if (\n      !this.processDirectoryDrop ||\n      !DataTransferItem.prototype.webkitGetAsEntry\n    ) {\n      this.handleFileDrop(event.dataTransfer.files);\n\n      // if processDirectoryDrop is enabled and webkitGetAsEntry is supported we can extract files from a dropped directory\n    } else {\n      const droppedItems: DataTransferItem[] = event.dataTransfer.items;\n\n      if (droppedItems.length > 0) {\n        const droppedFiles: File[] = [];\n        const droppedDirectories = [];\n\n        // seperate dropped files from dropped directories for easier handling\n        for (let i = 0; i < droppedItems.length; i++) {\n          const entry = droppedItems[i].webkitGetAsEntry();\n          if (entry.isFile) {\n            droppedFiles.push(event.dataTransfer.files[i]);\n          } else if (entry.isDirectory) {\n            droppedDirectories.push(entry);\n          }\n        }\n\n        // create a DataTransfer\n        const droppedFilesList = new DataTransfer();\n        droppedFiles.forEach((droppedFile) => {\n          droppedFilesList.items.add(droppedFile);\n        });\n\n        // if no directory is dropped we are done and can call handleFileDrop\n        if (!droppedDirectories.length && droppedFilesList.items.length) {\n          this.handleFileDrop(droppedFilesList.files);\n        }\n\n        // if directories are dropped we extract the files from these directories one-by-one and add it to droppedFilesList\n        if (droppedDirectories.length) {\n          const extractFilesFromDirectoryCalls = [];\n\n          for (const droppedDirectory of droppedDirectories) {\n            extractFilesFromDirectoryCalls.push(\n              this.extractFilesFromDirectory(droppedDirectory)\n            );\n          }\n\n          // wait for all directories to be proccessed to add the extracted files afterwards\n          Promise.all(extractFilesFromDirectoryCalls).then(\n            (allExtractedFiles: any[]) => {\n              allExtractedFiles\n                .reduce((a, b) => [...a, ...b])\n                .forEach((extractedFile: File) => {\n                  droppedFilesList.items.add(extractedFile);\n                });\n\n              this.handleFileDrop(droppedFilesList.files);\n            }\n          );\n        }\n      }\n    }\n  }\n\n  private extractFilesFromDirectory(directory) {\n    async function getFileFromFileEntry(fileEntry) {\n      try {\n        return await new Promise((resolve, reject) =>\n          fileEntry.file(resolve, reject)\n        );\n      } catch (err) {\n        console.log('Error converting a fileEntry to a File: ', err);\n      }\n      return true;\n    }\n\n    return new Promise((resolve, reject) => {\n      const files: File[] = [];\n\n      const dirReader = directory.createReader();\n\n      // we need this to be a recursion because of this issue: https://bugs.chromium.org/p/chromium/issues/detail?id=514087\n      const readEntries = () => {\n        dirReader.readEntries(async (dirItems) => {\n          if (!dirItems.length) {\n            resolve(files);\n          } else {\n            const fileEntries = dirItems.filter((dirItem) => dirItem.isFile);\n\n            for (const fileEntry of fileEntries) {\n              const file: any = await getFileFromFileEntry(fileEntry);\n              files.push(file);\n            }\n\n            readEntries();\n          }\n        });\n      };\n      readEntries();\n    });\n  }\n\n  showFileSelector() {\n    if (!this.disabled) {\n      (this._fileInput.nativeElement as HTMLInputElement).click();\n    }\n  }\n\n  _onFilesSelected(event) {\n    const files: FileList = event.target.files;\n    this.handleFileDrop(files);\n\n    // Reset the native file input element to allow selecting the same file again\n    this._fileInput.nativeElement.value = '';\n\n    // fix(#32): Prevent the default event behaviour which caused the change event to emit twice.\n    this.preventDefault(event);\n  }\n\n  private handleFileDrop(files: FileList) {\n    const result = this.service.parseFileList(\n      files,\n      this.accept,\n      this.maxFileSize,\n      this.multiple\n    );\n\n    this.change.next({\n      addedFiles: result.addedFiles,\n      rejectedFiles: result.rejectedFiles,\n      source: this,\n    });\n  }\n\n  private preventDefault(event: DragEvent) {\n    event.preventDefault();\n    event.stopPropagation();\n  }\n}\n","<input #fileInput type=\"file\" [id]=\"id\" [multiple]=\"multiple\" [accept]=\"accept\" [disabled]=\"disabled\"\n  (change)=\"_onFilesSelected($event)\" [attr.aria-label]=\"ariaLabel\" [attr.aria-labelledby]=\"ariaLabelledby\"\n  [attr.aria-describedby]=\"ariaDescribedBy\">\n<ng-content select=\"utils-dropzone-label\" *ngIf=\"!_hasPreviews\"></ng-content>\n<ng-content select=\"utils-dropzone-preview\"></ng-content>\n<ng-content></ng-content>","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: 'utils-dropzone-label'\n})\nexport class UtilsDropzoneLabelDirective { }\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { UtilsDropzonePreviewComponent } from '../utils-dropzone-preview.component';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n@Component({\n  selector: 'utils-dropzone-video-preview',\n  templateUrl: './utils-dropzone-video-preview.component.html',\n  styleUrls: ['./utils-dropzone-video-preview.component.scss'],\n  providers: [\n    {\n      provide: UtilsDropzonePreviewComponent,\n      useExisting: UtilsDropzoneVideoPreviewComponent,\n    },\n  ],\n})\nexport class UtilsDropzoneVideoPreviewComponent\n  extends UtilsDropzonePreviewComponent\n  implements OnInit, OnDestroy\n{\n  constructor(sanitizer: DomSanitizer) {\n    super(sanitizer);\n  }\n\n  /** The video data source. */\n  sanitizedVideoSrc: SafeUrl;\n\n  private videoSrc: string;\n\n  ngOnInit() {\n    if (!this.file) {\n      console.error(\n        'No file to read. Please provide a file using the [file] Input property.'\n      );\n      return;\n    }\n\n    /**\n     * We sanitize the URL here to enable the preview.\n     * Please note that this could cause security issues!\n     **/\n    this.videoSrc = URL.createObjectURL(this.file);\n    this.sanitizedVideoSrc = this.sanitizer.bypassSecurityTrustUrl(\n      this.videoSrc\n    );\n  }\n\n  ngOnDestroy() {\n    URL.revokeObjectURL(this.videoSrc);\n  }\n}\n","<video *ngIf=\"sanitizedVideoSrc\" controls (click)=\"$event.stopPropagation()\">\n  <source [src]=\"sanitizedVideoSrc\" />\n</video>\n<ng-content select=\"utils-dropzone-label\"></ng-content>\n<utils-dropzone-remove-badge *ngIf=\"removable\" (click)=\"_remove($event)\">\n</utils-dropzone-remove-badge>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UtilsDropzoneImagePreviewComponent } from '../components/utils-dropzone-preview/utils-dropzone-image-preview/utils-dropzone-image-preview.component';\nimport { UtilsDropzoneComponent } from '../components/utils-dropzone/utils-dropzone.component';\nimport { UtilsDropzoneLabelDirective } from '../directives/utils-dropzone-label.directive';\nimport { UtilsDropzonePreviewComponent } from '../components/utils-dropzone-preview/utils-dropzone-preview.component';\nimport { UtilsDropzoneVideoPreviewComponent } from '../components/utils-dropzone-preview/utils-dropzone-video-preview/utils-dropzone-video-preview.component';\nimport { UtilsDropzoneRemoveBadgeComponent } from '../components/utils-dropzone-preview/utils-dropzone-remove-badge/utils-dropzone-remove-badge.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [\n    UtilsDropzoneComponent,\n    UtilsDropzoneLabelDirective,\n    UtilsDropzonePreviewComponent,\n    UtilsDropzoneImagePreviewComponent,\n    UtilsDropzoneRemoveBadgeComponent,\n    UtilsDropzoneVideoPreviewComponent,\n  ],\n  exports: [\n    UtilsDropzoneComponent,\n    UtilsDropzoneLabelDirective,\n    UtilsDropzonePreviewComponent,\n    UtilsDropzoneImagePreviewComponent,\n    UtilsDropzoneRemoveBadgeComponent,\n    UtilsDropzoneVideoPreviewComponent,\n  ],\n})\nexport class UtilsDropzoneModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UtilsStorageService {\n  private api: Storage;\n\n  constructor(api: Storage) {\n    this.api = api;\n  }\n\n  get length(): number {\n    return this.api.length;\n  }\n\n  /**\n   * Guarda un valor en el almacenamiento.\n   * Si _isArray es true, el valor se guarda como un JSON string.\n   * Si _isArray es false, el valor se guarda como está.\n   */\n  setItem(key: string, value: any, _isArray: boolean = true): void {\n    const data = _isArray ? JSON.stringify(value) : value;\n    this.api.setItem(key, data);\n  }\n\n  /**\n   * Obtiene un valor del almacenamiento por su clave.\n   * Intenta parsear el valor obtenido como JSON. Si falla, retorna el valor original.\n   */\n  getItem<T = any>(key: string): T | null {\n    const data = this.api.getItem(key);\n    if (data !== null) {\n      try {\n        return JSON.parse(data);\n      } catch {\n        return data as any;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Limpia todos los datos del almacenamiento.\n   */\n  clear(): void {\n    this.api.clear();\n  }\n\n  /**\n   * Obtiene la clave en la posición dada.\n   */\n  key(index: number): string | null {\n    return this.api.key(index);\n  }\n\n  /**\n   * Elimina un elemento del almacenamiento por su clave.\n   */\n  removeItem(key: string): void {\n    this.api.removeItem(key);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { UtilsStorageService } from './utils-storage.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UtilsLocalStorageService extends UtilsStorageService {\n  constructor() {\n    super(window.localStorage);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { UtilsStorageService } from './utils-storage.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UtilsSessionStorageService extends UtilsStorageService {\n  constructor() {\n    super(window.sessionStorage);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  HttpClient,\n  HttpContext,\n  HttpEvent,\n  HttpHeaders,\n  HttpParams,\n  HttpResponse,\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UtilsHttpClientService {\n  constructor(private _http: HttpClient) {}\n  get(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<Blob>;\n\n  get(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<string>;\n\n  get(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<ArrayBuffer>>;\n  get(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<Blob>>;\n\n  get(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<string>>;\n\n  get(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<Object>>;\n\n  get<T>(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<T>>;\n\n  get(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<ArrayBuffer>>;\n\n  get(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<Blob>>;\n\n  get(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<string>>;\n\n  get(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<Object>>;\n\n  get<T>(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<T>>;\n\n  get(\n    url: string,\n    options?: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<Object>;\n\n  get<T>(\n    url: string,\n    options?: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<T>;\n\n  // Implementación del método GET\n  get(url: string, options: any): Observable<any> {\n    return this._http.get(url, options);\n  }\n\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n    }\n  ): Observable<ArrayBuffer>;\n\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<Blob>;\n\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<string>;\n\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<ArrayBuffer>>;\n\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<Blob>>;\n\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<string>>;\n\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<Object>>;\n\n  post<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<T>>;\n\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<ArrayBuffer>>;\n\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<Blob>>;\n\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<string>>;\n\n  post(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<Object>>;\n\n  post<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<T>>;\n\n  post(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<Object>;\n\n  post<T>(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<T>;\n\n  // Implementación del método POST\n  post(url: string, body: any | null, options: any): Observable<any> {\n    return this._http.post(url, body, options);\n  }\n\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<Blob>;\n\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<string>;\n\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<ArrayBuffer>>;\n\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<Blob>>;\n\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<string>>;\n\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<Object>>;\n\n  put<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<T>>;\n\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<ArrayBuffer>>;\n\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<Blob>>;\n\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<string>>;\n\n  put(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<Object>>;\n\n  put<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<T>>;\n\n  put(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<Object>;\n\n  put<T>(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<T>;\n\n  // Implementación del método PUT\n  put(url: string, body: any | null, options: any): Observable<any> {\n    return this._http.put(url, body, options);\n  }\n\n  delete(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<ArrayBuffer>;\n\n  delete(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<Blob>;\n\n  delete(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<string>;\n\n  delete(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<HttpEvent<ArrayBuffer>>;\n\n  delete(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<HttpEvent<Blob>>;\n\n  delete(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<HttpEvent<string>>;\n\n  delete(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<HttpEvent<Object>>;\n\n  delete<T>(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | (string | number | boolean)[];\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<HttpEvent<T>>;\n\n  delete(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<HttpResponse<ArrayBuffer>>;\n\n  delete(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<HttpResponse<Blob>>;\n\n  delete(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<HttpResponse<string>>;\n\n  delete(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<HttpResponse<Object>>;\n\n  delete<T>(\n    url: string,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<HttpResponse<T>>;\n\n  delete(\n    url: string,\n    options?: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<Object>;\n\n  delete<T>(\n    url: string,\n    options?: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n      body?: any | null;\n    }\n  ): Observable<T>;\n\n  // Implementación del método DELETE\n  delete(url: string, options: any): Observable<any> {\n    return this._http.delete(url, options);\n  }\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n    }\n  ): Observable<ArrayBuffer>;\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<Blob>;\n\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<string>;\n\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<ArrayBuffer>>;\n\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<Blob>>;\n\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<string>>;\n\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<Object>>;\n\n  patch<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'events';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpEvent<T>>;\n\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'arraybuffer';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<ArrayBuffer>>;\n\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'blob';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<Blob>>;\n\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType: 'text';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<string>>;\n\n  patch(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<Object>>;\n\n  patch<T>(\n    url: string,\n    body: any | null,\n    options: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      observe: 'response';\n      context?: HttpContext;\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<HttpResponse<T>>;\n\n  patch(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<Object>;\n\n  patch<T>(\n    url: string,\n    body: any | null,\n    options?: {\n      headers?:\n        | HttpHeaders\n        | {\n            [header: string]: string | string[];\n          };\n      context?: HttpContext;\n      observe?: 'body';\n      params?:\n        | HttpParams\n        | {\n            [param: string]:\n              | string\n              | number\n              | boolean\n              | ReadonlyArray<string | number | boolean>;\n          };\n      reportProgress?: boolean;\n      responseType?: 'json';\n      withCredentials?: boolean;\n    }\n  ): Observable<T>;\n\n  // Implementación del método PATCH\n  patch(url: string, body: any | null, options: any): Observable<any> {\n    return this._http.patch(url, body, options);\n  }\n}\n","import { Directive, ElementRef, NgModule } from '@angular/core';\n\n@Directive({\n  selector: '[toastContainer]',\n  exportAs: 'toastContainer',\n})\nexport class UtilsToastContainerDirective {\n  constructor(private el: ElementRef) {}\n  getContainerElement(): HTMLElement {\n    return this.el.nativeElement;\n  }\n}\n\n@NgModule({\n  declarations: [UtilsToastContainerDirective],\n  exports: [UtilsToastContainerDirective],\n})\nexport class ToastContainerModule {}\n","export enum PhoneNumberFormat {\n  International = 'INTERNATIONAL',\n  National = 'NATIONAL',\n}\n","export class UtilsOtpInputConfig {\n  inputStyles?: { [key: string]: any };\n  containerStyles?: { [key: string]: any };\n  /**\n   * @deprecated Don't use as this will be removed in upcoming versions\n   */\n  allowKeyCodes?: string[];\n  length: number;\n  allowNumbersOnly?: boolean;\n  inputClass?: string;\n  containerClass?: string;\n  isPasswordInput?: boolean;\n  disableAutoFocus?: boolean;\n  placeholder?: string;\n  letterCase?: 'Upper' | 'Lower';\n}\n","/*\n * Public API Surface of ngx-danisoft-utils\n */\n\n//modules\nexport * from './lib/modules/ngx-danisoft-utils.module';\nexport * from './lib/modules/utils-spinner.module';\nexport * from './lib/modules/utils-pagination.module';\nexport * from './lib/modules/utils-autocomplete.module';\nexport * from './lib/modules/utils-toastr.module';\nexport * from './lib/modules/utils-dropzone.module';\n\n\n//services\nexport * from './lib/services/ngx-danisoft-utils.service';\nexport * from './lib/services/utils-spinner.service';\nexport * from './lib/services/utils-toastr.service';\nexport * from './lib/services/utils-storage.service';\nexport * from './lib/services/utils-local-storage.service';\nexport * from './lib/services/utils-session-torage.service';\nexport * from './lib/services/utils-http-client.service';\nexport * from './lib/services/utils-dropzone.service';\n\n\n//pipes\nexport * from './lib/pipes/utils-safe-html.pipe';\nexport * from './lib/pipes/utlils-paginate.pipe';\nexport * from './lib/pipes/utils.truncate.pipe';\nexport * from './lib/pipes/utils-highlight.pipe';\nexport * from './lib/pipes/utils-customCurrency.pipe';\n\n//components\nexport * from './lib/components/ngx-danisoft-utils/ngx-danisoft-utils.component';\nexport * from './lib/components/utils-intl-tel-input/utils-intl-tel-input.component';\nexport * from './lib/components/utils-spinner/utils-spinner.component';\nexport * from './lib/components/utils-pagination/utils-pagination.component';\nexport * from './lib/components/utils-autocomplete/utils-autocomplete.component';\nexport * from './lib/components/utils-toastr/utils-toastr.component';\nexport * from './lib/components/utils-otp-input/utils-otp-input.component';\nexport * from './lib/components/utils-ui-table-sorter/utils-ui-table-sorter.component';\n\nexport * from './lib/components/utils-dropzone/utils-dropzone.component';\nexport * from './lib/components/utils-dropzone-preview/utils-dropzone-preview.component';\nexport * from './lib/components/utils-dropzone-preview/utils-dropzone-image-preview/utils-dropzone-image-preview.component';\nexport * from './lib/components/utils-dropzone-preview/utils-dropzone-video-preview/utils-dropzone-video-preview.component';\nexport * from './lib/components/utils-dropzone-preview/utils-dropzone-remove-badge/utils-dropzone-remove-badge.component';\n\n\n\n//directives\nexport * from './lib/directives/utils-native-element-injector.directive';\nexport * from './lib/directives/utils-pagination.directive';\nexport * from './lib/directives/utils-toast.directive';\nexport * from './lib/directives/utils-dropzone-label.directive';\n\n\n//enums\nexport * from './lib/enums/country-iso.enum';\nexport * from './lib/enums/search-country-field.enum';\nexport * from './lib/enums/phone-number-format.enum';\nexport * from './lib/enums/utils-spinner.enum';\n\n//interfaces\nexport * from './lib/interfaces/change-data';\nexport * from './lib/interfaces/service.interface';\nexport * from './lib/interfaces/utils-spinner-config';\nexport * from './lib/interfaces/pagination-instance';\nexport * from './lib/interfaces/toastr-interface';\nexport * from './lib/interfaces/toast-ref';\nexport * from './lib/interfaces/ui-table.interface';\n\n//data\nexport * from './lib/data/country-code';\n\n//models\nexport * from './lib/models/country.model';\nexport * from './lib/models/opt-config.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3.UtilsSafeHtmlPipe","i1.UtilsPaginationService","i1","i2.UtilsPaginationControlsDirective","i3.UtilsHighlightPipe","i1.Overlay","i1.UtilsToastrService","i2.ToastPackage","i1.CountryCode","i1.UtilsKeysPipe","i3","i4.UtilsNativeElementInjectorDirective","map","i1.NgxDanisoftUtilsService","i2.UtilsSpinnerService","i5.UtilsPaginationComponent","i6.UtilsNativeElementInjectorDirective","i7.UtilsPaginatePipe","i8.UtilsCustomCurrencyPipe","i3.UtilsDropzoneRemoveBadgeComponent","i1.UtilsDropzoneService"],"mappings":"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"}