{"version":3,"file":"hxui-angular.mjs","sources":["../../../projects/hx-ui/src/lib/accordion/accordion.body.ts","../../../projects/hx-ui/src/lib/accordion/accordion.component.ts","../../../projects/hx-ui/src/lib/accordion/accordion.container.component.ts","../../../projects/hx-ui/src/lib/accordion/accordion.header.component.ts","../../../projects/hx-ui/src/lib/accordion/accordion.module.ts","../../../projects/hx-ui/src/lib/auto-grow/auto-grow.directive.ts","../../../projects/hx-ui/src/lib/auto-grow/auto-grow.module.ts","../../../projects/hx-ui/src/lib/utils/trigger.class.ts","../../../projects/hx-ui/src/lib/utils/triggers.ts","../../../projects/hx-ui/src/lib/component-loader/content-ref.class.ts","../../../projects/hx-ui/src/lib/component-loader/component-loader.class.ts","../../../projects/hx-ui/src/lib/positioning/ng-positioning.ts","../../../projects/hx-ui/src/lib/positioning/positioning.service.ts","../../../projects/hx-ui/src/lib/component-loader/component-loader.factory.ts","../../../projects/hx-ui/src/lib/component-loader/hx-component-ref.class.ts","../../../projects/hx-ui/src/lib/date-range-picker/date-range-picker.model.ts","../../../projects/hx-ui/src/lib/text-input/text-input.directive.ts","../../../projects/hx-ui/src/lib/datepicker/datepicker.config.ts","../../../projects/hx-ui/src/lib/tabs/tab.directive.ts","../../../projects/hx-ui/src/lib/tabs/tabset.config.ts","../../../projects/hx-ui/src/lib/tabs/ng-transclude.directive.ts","../../../projects/hx-ui/src/lib/tabs/tabset.component.ts","../../../projects/hx-ui/src/lib/datepicker/datepicker-interval.component.ts","../../../projects/hx-ui/src/lib/datepicker/datepicker-interval.component.html","../../../projects/hx-ui/src/lib/enums.ts","../../../projects/hx-ui/src/lib/datepicker/datepicker.model.ts","../../../projects/hx-ui/src/lib/datepicker/datepicker.component.ts","../../../projects/hx-ui/src/lib/datepicker/datepicker.component.html","../../../projects/hx-ui/src/lib/datepicker/datepicker-form.component.ts","../../../projects/hx-ui/src/lib/datepicker/datepicker-form.component.html","../../../projects/hx-ui/src/lib/date-range-picker/date-range-picker-custom/date-range-picker-custom.component.ts","../../../projects/hx-ui/src/lib/date-range-picker/date-range-picker-custom/date-range-picker-custom.component.html","../../../projects/hx-ui/src/lib/date-range-picker/interval-option-model.ts","../../../projects/hx-ui/src/lib/date-range-picker/date-range-picker-interval/date-range-picker-interval.component.ts","../../../projects/hx-ui/src/lib/date-range-picker/date-range-picker-interval/date-range-picker-interval.component.html","../../../projects/hx-ui/src/lib/dropdown/dropdown-menu.directive.ts","../../../projects/hx-ui/src/lib/dropdown/dropdown.config.ts","../../../projects/hx-ui/src/lib/dropdown/dropdown.directive.ts","../../../projects/hx-ui/src/lib/date-range-picker/date-range-picker.config.ts","../../../projects/hx-ui/src/lib/dropdown/dropdown-toggle.directive.ts","../../../projects/hx-ui/src/lib/date-range-picker/date-range-picker.component.ts","../../../projects/hx-ui/src/lib/date-range-picker/date-range-picker.component.html","../../../projects/hx-ui/src/lib/tabs/tab-heading.directive.ts","../../../projects/hx-ui/src/lib/tabs/tabs.module.ts","../../../projects/hx-ui/src/lib/text-input/text-input.module.ts","../../../projects/hx-ui/src/lib/datepicker/datepicker.module.ts","../../../projects/hx-ui/src/lib/dropdown/dropdown-item.directive.ts","../../../projects/hx-ui/src/lib/dropdown/dropdown.module.ts","../../../projects/hx-ui/src/lib/date-range-picker/date-range-picker.module.ts","../../../projects/hx-ui/src/lib/dialog/dialog-overlay.ref.ts","../../../projects/hx-ui/src/lib/dialog/dialog.service.ts","../../../projects/hx-ui/src/lib/dialog/dialog.module.ts","../../../projects/hx-ui/src/lib/empty-state/empty-state.config.ts","../../../projects/hx-ui/src/lib/empty-state/empty-state.component.ts","../../../projects/hx-ui/src/lib/empty-state/empty-state.component.html","../../../projects/hx-ui/src/lib/empty-state/empty-state.module.ts","../../../projects/hx-ui/src/lib/filters/filters-type.enum.ts","../../../projects/hx-ui/src/lib/filters/filters-collapsed.component.ts","../../../projects/hx-ui/src/lib/filters/filters-collapsed.component.html","../../../projects/hx-ui/src/lib/filters/filters.config.ts","../../../projects/hx-ui/src/lib/filters/filters.model.ts","../../../projects/hx-ui/src/lib/filters/filters.component.ts","../../../projects/hx-ui/src/lib/filters/filters.component.html","../../../projects/hx-ui/src/lib/filters/filters.module.ts","../../../projects/hx-ui/src/lib/inspector/inspector-size.enum.ts","../../../projects/hx-ui/src/lib/inspector/inspector-location.enum.ts","../../../projects/hx-ui/src/lib/inspector/inspector.component.ts","../../../projects/hx-ui/src/lib/inspector/inspector.component.html","../../../projects/hx-ui/src/lib/inspector/inspector-overlay.ref.ts","../../../projects/hx-ui/src/lib/inspector/inspector.service.ts","../../../projects/hx-ui/src/lib/inspector/inspector.module.ts","../../../projects/hx-ui/src/lib/line-clamp/line-clamp.component.ts","../../../projects/hx-ui/src/lib/line-clamp/line-clamp.module.ts","../../../projects/hx-ui/src/lib/loaders/loaders.component.ts","../../../projects/hx-ui/src/lib/loaders/loaders.component.html","../../../projects/hx-ui/src/lib/loaders/loaders.module.ts","../../../projects/hx-ui/src/lib/modal/modal.annotation.ts","../../../projects/hx-ui/src/lib/modal/modal-backdrop.component.ts","../../../projects/hx-ui/src/lib/modal/modal.service.ts","../../../projects/hx-ui/src/lib/modal/modal-placeholder.component.ts","../../../projects/hx-ui/src/lib/modal/modal.module.ts","../../../projects/hx-ui/src/lib/pagination/pagination.config.ts","../../../projects/hx-ui/src/lib/pagination/pager.component.ts","../../../projects/hx-ui/src/lib/pagination/pagination.component.ts","../../../projects/hx-ui/src/lib/pagination/pagination.module.ts","../../../projects/hx-ui/src/lib/tooltip/tooltip-content.component.ts","../../../projects/hx-ui/src/lib/tooltip/tooltip-dynamic-content.directive.ts","../../../projects/hx-ui/src/lib/tooltip/tooltip.config.ts","../../../projects/hx-ui/src/lib/tooltip/tooltip.directive.ts","../../../projects/hx-ui/src/lib/tooltip/tooltip.module.ts","../../../projects/hx-ui/src/lib/utils/pipes/simple-search.pipe.ts","../../../projects/hx-ui/src/lib/tabular/tabular-content.service.ts","../../../projects/hx-ui/src/lib/tabular/tabular-column.interface.ts","../../../projects/hx-ui/src/lib/tabular/tabular-sort-by.service.ts","../../../projects/hx-ui/src/lib/tabular/tabular-config.interface.ts","../../../projects/hx-ui/src/lib/tabular/actions-config.interface.ts","../../../projects/hx-ui/src/lib/tabular/tabular-size.enum.ts","../../../projects/hx-ui/src/lib/tabular/tabular.config.ts","../../../projects/hx-ui/src/lib/tabular/tabular-theme.enum.ts","../../../projects/hx-ui/src/lib/tabular/tabular.component.ts","../../../projects/hx-ui/src/lib/tabular/tabular.component.html","../../../projects/hx-ui/src/lib/tabular/tabular.module.ts","../../../projects/hx-ui/src/lib/utils/util.ts","../../../projects/hx-ui/src/lib/time-picker/hxa-time.ts","../../../projects/hx-ui/src/lib/time-picker/hxa-time-adapter.ts","../../../projects/hx-ui/src/lib/time-picker/timepicker-config.ts","../../../projects/hx-ui/src/lib/time-picker/timepicker-i18n.ts","../../../projects/hx-ui/src/lib/time-picker/timepicker.ts","../../../projects/hx-ui/src/lib/time-picker/timepicker.module.ts","../../../projects/hx-ui/src/lib/toastr/hxa-toastr.component.ts","../../../projects/hx-ui/src/lib/toastr/hxa-toastr.module.ts","../../../projects/hx-ui/src/lib/typeahead/latin-map.ts","../../../projects/hx-ui/src/lib/typeahead/typeahead-utils.ts","../../../projects/hx-ui/src/lib/typeahead/typeahead-container.component.ts","../../../projects/hx-ui/src/lib/typeahead/typeahead-match.class.ts","../../../projects/hx-ui/src/lib/typeahead/typeahead.directive.ts","../../../projects/hx-ui/src/lib/typeahead/typeahead-highlight.component.ts","../../../projects/hx-ui/src/lib/typeahead/typeahead.module.ts","../../../projects/hx-ui/src/lib/utils/services/online-status.service.ts","../../../projects/hx-ui/src/lib/hx-ui.module.ts","../../../projects/hx-ui/src/lib/positioning/positioning.options.ts","../../../projects/hx-ui/src/lib/tabular/tabular-column.model.ts","../../../projects/hx-ui/src/lib/typeahead/typeahead-options.class.ts","../../../projects/hx-ui/src/lib/utils/decorators.ts","../../../projects/hx-ui/src/lib/utils/facade/browser.ts","../../../projects/hx-ui/src/lib/utils/linked-list.class.ts","../../../projects/hx-ui/src/lib/utils/utils.class.ts","../../../projects/hx-ui/src/public_api.ts","../../../projects/hx-ui/src/hxui-angular.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'hx-accordion-body, hxa-accordion-body',\r\n  template: `<ng-content></ng-content>`\r\n})\r\nexport class AccordionBodyComponent {}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'hx-accordion, hxa-accordion',\r\n  template: `\r\n    <div class=\"hxui-reset\">\r\n      <ul class=\"hx-accordion\" [ngClass]=\"cssClass\">\r\n        <ng-content></ng-content>\r\n      </ul>\r\n    </div>\r\n  `\r\n})\r\nexport class AccordionComponent {\r\n  @Input() cssClass?: string = null;\r\n}\r\n","import {\r\n  animate,\r\n  state,\r\n  style,\r\n  transition,\r\n  trigger\r\n} from '@angular/animations';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output\r\n} from '@angular/core';\r\n\r\n/**\r\n * TODO: !BREAKING! align accordion markup for accessibility,\r\n * consider using attribute selector\r\n * @see {@link https://www.w3.org/TR/wai-aria-practices/#accordion}\r\n * @see {@link https://medium.com/javascript-everyday/when-to-use-an-attribute-selector-for-angular-components-7e788ba1bfe7}\r\n */\r\n@Component({\r\n  selector: 'hx-accordion-container, hxa-accordion-container',\r\n  template: `\r\n    <li\r\n      class=\"hx-accordion-container\"\r\n      [class.is-active]=\"expanded && !disabled\"\r\n    >\r\n      <a\r\n        class=\"hx-accordion-header\"\r\n        [class.is-disabled]=\"!empty && disabled\"\r\n        (click)=\"toggle()\"\r\n      >\r\n        <div class=\"header-title\">\r\n          <ng-content\r\n            select=\"hx-accordion-header, hxa-accordion-header\"\r\n          ></ng-content>\r\n        </div>\r\n        <div class=\"header-icon\" *ngIf=\"empty\">\r\n          <i class=\"hx-icon icon-angle-down\" *ngIf=\"!expanded || disabled\"></i>\r\n          <i class=\"hx-icon icon-angle-up\" *ngIf=\"expanded && !disabled\"></i>\r\n        </div>\r\n      </a>\r\n      <div\r\n        class=\"hx-accordion-body\"\r\n        [@slideIn]=\"expanded && !disabled\"\r\n        *ngIf=\"expanded && !disabled\"\r\n      >\r\n        <div class=\"hx-accordion-body-wrapper\">\r\n          <ng-content\r\n            select=\"hx-accordion-body, hxa-accordion-body\"\r\n          ></ng-content>\r\n        </div>\r\n      </div>\r\n    </li>\r\n  `,\r\n  styleUrls: ['./accordian.container.scss'],\r\n  animations: [\r\n    trigger('slideIn', [\r\n      state('*', style({ 'overflow-y': 'hidden' })),\r\n      state('void', style({ 'overflow-y': 'hidden' })),\r\n      transition('* => void', [\r\n        style({ height: '*' }),\r\n        animate('0.25s ease-out', style({ height: 0, opacity: 0 }))\r\n      ]),\r\n      transition('void => *', [\r\n        style({ height: '0' }),\r\n        animate('0.25s ease-out', style({ height: '*', opacity: 1 }))\r\n      ])\r\n    ])\r\n  ]\r\n})\r\nexport class AccordionContainerComponent {\r\n  @Input() expanded = true;\r\n  @Input() index: number = null;\r\n  @Input() disabled = false;\r\n  @Input() empty = true;\r\n  @Output() headerClick: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n  constructor(private _changeDetectionRef: ChangeDetectorRef) {}\r\n\r\n  public toggle(): void {\r\n    if (this.index !== null) {\r\n      this.headerClick.emit(this.index);\r\n    }\r\n    this.expanded = !this.expanded;\r\n    this._changeDetectionRef.markForCheck();\r\n  }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'hx-accordion-header, hxa-accordion-header',\r\n  template: `<ng-content></ng-content>`\r\n})\r\nexport class AccordionHeaderComponent {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { AccordionBodyComponent } from './accordion.body';\r\nimport { AccordionComponent } from './accordion.component';\r\nimport { AccordionContainerComponent } from './accordion.container.component';\r\nimport { AccordionHeaderComponent } from './accordion.header.component';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [\r\n    AccordionComponent,\r\n    AccordionContainerComponent,\r\n    AccordionHeaderComponent,\r\n    AccordionBodyComponent\r\n  ],\r\n  exports: [\r\n    AccordionComponent,\r\n    AccordionContainerComponent,\r\n    AccordionHeaderComponent,\r\n    AccordionBodyComponent\r\n  ]\r\n})\r\nexport class AccordionModule {}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  HostListener,\r\n  AfterViewInit\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: 'textarea[autogrow]'\r\n})\r\nexport class AutoGrowDirective\r\n  implements AfterViewInit {\r\n\r\n  @HostListener('input', ['$event.target'])\r\n  public onInput() {\r\n    this.resize();\r\n  }\r\n\r\n  constructor(public element: ElementRef) {}\r\n\r\n  public ngAfterViewInit() {\r\n    const style = this.element.nativeElement.style;\r\n    style.overflow = 'hidden';\r\n    style.height = 'auto';\r\n  }\r\n\r\n  public resize() {\r\n    const el = this.element.nativeElement;\r\n\r\n    if (el.style.height === el.scrollHeight + 'px') {\r\n      return;\r\n    }\r\n\r\n    el.style.overflow = 'hidden';\r\n    el.style.height = 'auto';\r\n    el.style.height = `${el.scrollHeight}px`;\r\n  }\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { AutoGrowDirective } from './auto-grow.directive';\r\n\r\n@NgModule({\r\n  declarations: [AutoGrowDirective],\r\n  exports: [AutoGrowDirective]\r\n})\r\nexport class AutoGrowModule {\r\n  public static forRoot(): ModuleWithProviders<AutoGrowModule> {\r\n    return {\r\n      ngModule: AutoGrowModule,\r\n      providers: []\r\n    };\r\n  }\r\n}\r\n","/**\r\n * @copyright Valor Software\r\n * @copyright Angular ng-bootstrap team\r\n */\r\n\r\nexport class Trigger {\r\n  public open: string;\r\n  public close?: string;\r\n\r\n  public constructor(open: string, close?: string) {\r\n    this.open = open;\r\n    this.close = close || open;\r\n  }\r\n\r\n  public isManual(): boolean { return this.open === 'manual' || this.close === 'manual'; }\r\n}\r\n","\r\nimport { Renderer2 } from '@angular/core';\r\nimport { Trigger } from './trigger.class';\r\n\r\nconst DEFAULT_ALIASES = {\r\n  hover: ['mouseenter', 'mouseleave'],\r\n  focus: ['focusin', 'focusout']\r\n};\r\n\r\nexport function parseTriggers(triggers: string, aliases: any = DEFAULT_ALIASES): Trigger[] {\r\n  const trimmedTriggers = (triggers || '').trim();\r\n\r\n  if (trimmedTriggers.length === 0) {\r\n    return [];\r\n  }\r\n\r\n  const parsedTriggers = trimmedTriggers.split(/\\s+/)\r\n    .map((trigger: string) => trigger.split(':'))\r\n    .map((triggerPair: string[]) => {\r\n      const alias = aliases[triggerPair[0]] || triggerPair;\r\n      return new Trigger(alias[0], alias[1]);\r\n    });\r\n\r\n  const manualTriggers = parsedTriggers\r\n    .filter((triggerPair: Trigger) => triggerPair.isManual());\r\n\r\n  if (manualTriggers.length > 1) {\r\n    throw new Error('Triggers parse error: only one manual trigger is allowed');\r\n  }\r\n\r\n  if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\r\n    throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\r\n  }\r\n\r\n  return parsedTriggers;\r\n}\r\n\r\nexport function listenToTriggers(renderer: Renderer2, target: any, triggers: any,\r\n                                 showFn: (event: any) => boolean | void, hideFn: (event: any) => boolean | void, toggleFn: (event: any) => boolean | void): Function {\r\n  const parsedTriggers = parseTriggers(triggers);\r\n  const listeners: any[] = [];\r\n\r\n  if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\r\n    return Function.prototype;\r\n  }\r\n\r\n  parsedTriggers.forEach((trigger: Trigger) => {\r\n    if (trigger.open === trigger.close) {\r\n      listeners.push(renderer.listen(target, trigger.open, toggleFn));\r\n      return;\r\n    }\r\n\r\n    listeners.push(\r\n      renderer.listen(target, <any>trigger.open, showFn),\r\n      renderer.listen(target, <any>trigger.close, hideFn));\r\n  });\r\n\r\n  return () => { listeners.forEach((unsubscribeFn: Function) => <any>unsubscribeFn()); };\r\n}\r\n","\r\nimport { ComponentRef, ViewRef } from '@angular/core';\r\n\r\nexport class ContentRef {\r\n  public nodes: any[];\r\n  public viewRef?: ViewRef;\r\n  public componentRef?: ComponentRef<any>;\r\n\r\n  public constructor( nodes: any[],  viewRef?: ViewRef,  componentRef?: ComponentRef<any>) {\r\n    this.nodes = nodes;\r\n    this.viewRef = viewRef;\r\n    this.componentRef = componentRef;\r\n  }\r\n}\r\n","// todo: add delay support\r\n// todo: merge events onShow, onShown, etc...\r\n// todo: add global positioning configuration?\r\nimport {\r\n  ComponentFactory,\r\n  ComponentFactoryResolver,\r\n  ComponentRef,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Injector,\r\n  NgZone,\r\n  Provider,\r\n  ReflectiveInjector,\r\n  Renderer2,\r\n  TemplateRef,\r\n  Type,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport { PositioningOptions } from '../positioning/positioning.options';\r\nimport { PositioningService } from '../positioning/positioning.service';\r\nimport { listenToTriggers } from '../utils/triggers';\r\nimport { ContentRef } from './content-ref.class';\r\n\r\nexport interface ListenOptions {\r\n  target?: ElementRef;\r\n  triggers?: string;\r\n  show?: any;\r\n  hide?: any;\r\n  toggle?: any;\r\n}\r\n\r\nexport class ComponentLoader<T> {\r\n  public onBeforeShow: EventEmitter<any> = new EventEmitter();\r\n  public onShown: EventEmitter<any> = new EventEmitter();\r\n  public onBeforeHide: EventEmitter<any> = new EventEmitter();\r\n  public onHidden: EventEmitter<any> = new EventEmitter();\r\n\r\n  public instance: T;\r\n  public _componentRef: ComponentRef<T>;\r\n\r\n  private _providers: Provider[] = [];\r\n  private _componentFactory: ComponentFactory<T>;\r\n  private _elementRef: ElementRef;\r\n  private _zoneSubscription: any;\r\n  private _contentRef: ContentRef;\r\n  private _viewContainerRef: ViewContainerRef;\r\n  private _injector: Injector;\r\n  private _renderer: Renderer2;\r\n  private _ngZone: NgZone;\r\n  private _componentFactoryResolver: ComponentFactoryResolver;\r\n  private _posService: PositioningService;\r\n\r\n  // eslint-disable-next-line @typescript-eslint/ban-types\r\n  private _unregisterListenersFn: Function;\r\n\r\n  public get isShown(): boolean {\r\n    return !!this._componentRef;\r\n  }\r\n\r\n  /**\r\n   * Placement of a component. Accepts: \"top\", \"bottom\", \"left\", \"right\"\r\n   */\r\n  private attachment: string;\r\n\r\n  /**\r\n   * A selector specifying the element the popover should be appended to.\r\n   * Currently only supports \"body\".\r\n   */\r\n  private container: string | ElementRef | any;\r\n\r\n  /**\r\n   * Specifies events that should trigger. Supports a space separated list of\r\n   * event names.\r\n   */\r\n  private triggers: string;\r\n\r\n  /**\r\n   * Do not use this directly, it should be instanced via\r\n   * `ComponentLoadFactory.attach`\r\n   * @internal\r\n   * @param _viewContainerRef\r\n   * @param _elementRef\r\n   * @param _injector\r\n   * @param _renderer\r\n   * @param _componentFactoryResolver\r\n   * @param _ngZone\r\n   * @param _posService\r\n   */\r\n  // eslint-disable-next-line\r\n  public constructor(\r\n    _viewContainerRef: ViewContainerRef,\r\n    _renderer: Renderer2,\r\n    _elementRef: ElementRef,\r\n    _injector: Injector,\r\n    _componentFactoryResolver: ComponentFactoryResolver,\r\n    _ngZone: NgZone,\r\n    _posService: PositioningService\r\n  ) {\r\n    this._ngZone = _ngZone;\r\n    this._injector = _injector;\r\n    this._renderer = _renderer;\r\n    this._elementRef = _elementRef;\r\n    this._posService = _posService;\r\n    this._viewContainerRef = _viewContainerRef;\r\n    this._componentFactoryResolver = _componentFactoryResolver;\r\n  }\r\n\r\n  public attach(compType: Type<T>): ComponentLoader<T> {\r\n    this._componentFactory =\r\n      this._componentFactoryResolver.resolveComponentFactory<T>(compType);\r\n    return this;\r\n  }\r\n\r\n  // todo: add behaviour: to target element, `body`, custom element\r\n  public to(container?: string): ComponentLoader<T> {\r\n    this.container = container || this.container;\r\n    return this;\r\n  }\r\n\r\n  public position(opts?: PositioningOptions): ComponentLoader<T> {\r\n    this.attachment = opts.attachment || this.attachment;\r\n    this._elementRef = (opts.target as ElementRef) || this._elementRef;\r\n    return this;\r\n  }\r\n\r\n  public provide(provider: Provider): ComponentLoader<T> {\r\n    this._providers.push(provider);\r\n    return this;\r\n  }\r\n\r\n  public show(\r\n    opts: { content?: string | TemplateRef<any>; [key: string]: any } = {}\r\n  ): ComponentRef<T> {\r\n    this._subscribePositioning();\r\n\r\n    if (!this._componentRef) {\r\n      this.onBeforeShow.emit();\r\n      this._contentRef = this._getContentRef(opts.content);\r\n      const injector = ReflectiveInjector.resolveAndCreate(\r\n        this._providers,\r\n        this._injector\r\n      );\r\n      this._componentRef = this._viewContainerRef.createComponent(\r\n        this._componentFactory,\r\n        0,\r\n        injector,\r\n        this._contentRef.nodes\r\n      );\r\n      this.instance = this._componentRef.instance;\r\n\r\n      Object.assign(this._componentRef.instance, opts);\r\n\r\n      if (this.container === 'body' && typeof document !== 'undefined') {\r\n        document\r\n          .querySelector(this.container as string)\r\n          .appendChild(this._componentRef.location.nativeElement);\r\n      }\r\n\r\n      // we need to manually invoke change detection since events registered\r\n      // via\r\n      // Renderer::listen() are not picked up by change detection with the\r\n      // OnPush strategy\r\n      this._componentRef.changeDetectorRef.markForCheck();\r\n      this.onShown.emit(this._componentRef.instance);\r\n    }\r\n    return this._componentRef;\r\n  }\r\n\r\n  public hide(): ComponentLoader<T> {\r\n    if (this._componentRef) {\r\n      this.onBeforeHide.emit(this._componentRef.instance);\r\n      this._viewContainerRef.remove(\r\n        this._viewContainerRef.indexOf(this._componentRef.hostView)\r\n      );\r\n      this._componentRef = null;\r\n\r\n      if (this._contentRef.viewRef) {\r\n        this._viewContainerRef.remove(\r\n          this._viewContainerRef.indexOf(this._contentRef.viewRef)\r\n        );\r\n        this._contentRef = null;\r\n      }\r\n\r\n      this._componentRef = null;\r\n      this.onHidden.emit();\r\n    }\r\n    return this;\r\n  }\r\n\r\n  public toggle(): void {\r\n    if (this.isShown) {\r\n      this.hide();\r\n      return;\r\n    }\r\n\r\n    this.show();\r\n  }\r\n\r\n  public dispose(): void {\r\n    if (this.isShown) {\r\n      this.hide();\r\n    }\r\n\r\n    this._unsubscribePositioning();\r\n\r\n    if (this._unregisterListenersFn) {\r\n      this._unregisterListenersFn();\r\n    }\r\n  }\r\n\r\n  public listen(listenOpts: ListenOptions): ComponentLoader<T> {\r\n    this.triggers = listenOpts.triggers || this.triggers;\r\n\r\n    listenOpts.target = listenOpts.target || this._elementRef;\r\n    listenOpts.show = listenOpts.show || (() => this.show());\r\n    listenOpts.hide = listenOpts.hide || (() => this.hide());\r\n    listenOpts.toggle =\r\n      listenOpts.toggle ||\r\n      (() => (this.isShown ? listenOpts.hide() : listenOpts.show()));\r\n\r\n    this._unregisterListenersFn = listenToTriggers(\r\n      this._renderer,\r\n      listenOpts.target.nativeElement,\r\n      this.triggers,\r\n      listenOpts.show,\r\n      listenOpts.hide,\r\n      listenOpts.toggle\r\n    );\r\n\r\n    return this;\r\n  }\r\n\r\n  private _subscribePositioning(): void {\r\n    if (this._zoneSubscription || !this.attachment) {\r\n      return;\r\n    }\r\n\r\n    this._zoneSubscription = this._ngZone.onStable.subscribe(() => {\r\n      if (!this._componentRef) {\r\n        return;\r\n      }\r\n      this._posService.position({\r\n        element: this._componentRef.location,\r\n        target: this._elementRef,\r\n        attachment: this.attachment,\r\n        appendToBody: this.container === 'body'\r\n      });\r\n    });\r\n  }\r\n\r\n  private _unsubscribePositioning(): void {\r\n    if (!this._zoneSubscription) {\r\n      return;\r\n    }\r\n    this._zoneSubscription.unsubscribe();\r\n    this._zoneSubscription = null;\r\n  }\r\n\r\n  private _getContentRef(content: string | TemplateRef<any>): ContentRef {\r\n    if (!content) {\r\n      return new ContentRef([]);\r\n    }\r\n\r\n    if (content instanceof TemplateRef) {\r\n      const viewRef =\r\n        this._viewContainerRef.createEmbeddedView<TemplateRef<T>>(content);\r\n      return new ContentRef([viewRef.rootNodes], viewRef);\r\n    }\r\n\r\n    return new ContentRef([[this._renderer.createText(`${content}`)]]);\r\n  }\r\n}\r\n","/**\r\n * @copyright Valor Software\r\n * @copyright Angular ng-bootstrap team\r\n */\r\n\r\n// previous version:\r\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\r\n\r\nexport class Positioning {\r\n  public position(element: HTMLElement, round = true): Record<string, number> {\r\n    let elPosition: Record<string, number>;\r\n    let parentOffset: Record<string, number> = {\r\n      width: 0,\r\n      height: 0,\r\n      top: 0,\r\n      bottom: 0,\r\n      left: 0,\r\n      right: 0\r\n    };\r\n\r\n    if (this.getStyle(element, 'position') === 'fixed') {\r\n      const tempPos = element.getBoundingClientRect() as unknown;\r\n      elPosition = tempPos as Record<string, number>;\r\n    } else {\r\n      const offsetParentEl = this.offsetParent(element);\r\n\r\n      elPosition = this.offset(element, false);\r\n\r\n      if (offsetParentEl !== document.documentElement) {\r\n        parentOffset = this.offset(offsetParentEl, false);\r\n      }\r\n\r\n      parentOffset.top += offsetParentEl.clientTop;\r\n      parentOffset.left += offsetParentEl.clientLeft;\r\n    }\r\n\r\n    elPosition.top -= parentOffset.top;\r\n    elPosition.bottom -= parentOffset.top;\r\n    elPosition.left -= parentOffset.left;\r\n    elPosition.right -= parentOffset.left;\r\n\r\n    if (round) {\r\n      elPosition.top = Math.round(elPosition.top);\r\n      elPosition.bottom = Math.round(elPosition.bottom);\r\n      elPosition.left = Math.round(elPosition.left);\r\n      elPosition.right = Math.round(elPosition.right);\r\n    }\r\n\r\n    return elPosition;\r\n  }\r\n\r\n  public offset(element: HTMLElement, round = true): Record<string, number> {\r\n    const elBcr = element.getBoundingClientRect();\r\n    const viewportOffset = {\r\n      top: window.pageYOffset - document.documentElement.clientTop,\r\n      left: window.pageXOffset - document.documentElement.clientLeft\r\n    };\r\n\r\n    const elOffset = {\r\n      height: elBcr.height || element.offsetHeight,\r\n      width: elBcr.width || element.offsetWidth,\r\n      top: elBcr.top + viewportOffset.top,\r\n      bottom: elBcr.bottom + viewportOffset.top,\r\n      left: elBcr.left + viewportOffset.left,\r\n      right: elBcr.right + viewportOffset.left\r\n    };\r\n\r\n    if (round) {\r\n      elOffset.height = Math.round(elOffset.height);\r\n      elOffset.width = Math.round(elOffset.width);\r\n      elOffset.top = Math.round(elOffset.top);\r\n      elOffset.bottom = Math.round(elOffset.bottom);\r\n      elOffset.left = Math.round(elOffset.left);\r\n      elOffset.right = Math.round(elOffset.right);\r\n    }\r\n\r\n    return elOffset;\r\n  }\r\n\r\n  public positionElements(\r\n    hostElement: HTMLElement,\r\n    targetElement: HTMLElement,\r\n    placement: string,\r\n    appendToBody?: boolean\r\n  ): Record<string, number> {\r\n    const hostElPosition = appendToBody\r\n      ? this.offset(hostElement, false)\r\n      : this.position(hostElement, false);\r\n    const shiftWidth: any = {\r\n      left: hostElPosition.left,\r\n      center:\r\n        hostElPosition.left +\r\n        hostElPosition.width / 2 -\r\n        targetElement.offsetWidth / 2,\r\n      right: hostElPosition.left + hostElPosition.width\r\n    };\r\n    const shiftHeight: any = {\r\n      top: hostElPosition.top,\r\n      center:\r\n        hostElPosition.top +\r\n        hostElPosition.height / 2 -\r\n        targetElement.offsetHeight / 2,\r\n      bottom: hostElPosition.top + hostElPosition.height\r\n    };\r\n    const targetElBCR = targetElement.getBoundingClientRect();\r\n    const placementPrimary = placement.split(' ')[0] || 'top';\r\n    const placementSecondary = placement.split(' ')[1] || 'center';\r\n\r\n    const targetElPosition: Record<string, number> = {\r\n      height: targetElBCR.height || targetElement.offsetHeight,\r\n      width: targetElBCR.width || targetElement.offsetWidth,\r\n      top: 0,\r\n      bottom: targetElBCR.height || targetElement.offsetHeight,\r\n      left: 0,\r\n      right: targetElBCR.width || targetElement.offsetWidth\r\n    };\r\n\r\n    switch (placementPrimary) {\r\n      case 'top':\r\n        targetElPosition.top = hostElPosition.top - targetElement.offsetHeight;\r\n        targetElPosition.bottom +=\r\n          hostElPosition.top - targetElement.offsetHeight;\r\n        targetElPosition.left = shiftWidth[placementSecondary];\r\n        targetElPosition.right += shiftWidth[placementSecondary];\r\n        break;\r\n      case 'bottom':\r\n        targetElPosition.top = shiftHeight[placementPrimary];\r\n        targetElPosition.bottom += shiftHeight[placementPrimary];\r\n        targetElPosition.left = shiftWidth[placementSecondary];\r\n        targetElPosition.right += shiftWidth[placementSecondary];\r\n        break;\r\n      case 'left':\r\n        targetElPosition.top = shiftHeight[placementSecondary];\r\n        targetElPosition.bottom += shiftHeight[placementSecondary];\r\n        targetElPosition.left = hostElPosition.left - targetElement.offsetWidth;\r\n        targetElPosition.right +=\r\n          hostElPosition.left - targetElement.offsetWidth;\r\n        break;\r\n      case 'right':\r\n        targetElPosition.top = shiftHeight[placementSecondary];\r\n        targetElPosition.bottom += shiftHeight[placementSecondary];\r\n        targetElPosition.left = shiftWidth[placementPrimary];\r\n        targetElPosition.right += shiftWidth[placementPrimary];\r\n        break;\r\n    }\r\n\r\n    targetElPosition.top = Math.round(targetElPosition.top);\r\n    targetElPosition.bottom = Math.round(targetElPosition.bottom);\r\n    targetElPosition.left = Math.round(targetElPosition.left);\r\n    targetElPosition.right = Math.round(targetElPosition.right);\r\n\r\n    return targetElPosition;\r\n  }\r\n\r\n  private getStyle(element: HTMLElement, prop: string): string {\r\n    return (window.getComputedStyle(element) as any)[prop];\r\n  }\r\n\r\n  private isStaticPositioned(element: HTMLElement): boolean {\r\n    return (this.getStyle(element, 'position') || 'static') === 'static';\r\n  }\r\n\r\n  private offsetParent(element: HTMLElement): HTMLElement {\r\n    let offsetParentEl =\r\n      <HTMLElement>element.offsetParent || document.documentElement;\r\n\r\n    while (\r\n      offsetParentEl &&\r\n      offsetParentEl !== document.documentElement &&\r\n      this.isStaticPositioned(offsetParentEl)\r\n    ) {\r\n      offsetParentEl = <HTMLElement>offsetParentEl.offsetParent;\r\n    }\r\n\r\n    return offsetParentEl || document.documentElement;\r\n  }\r\n}\r\n\r\nconst positionService = new Positioning();\r\n\r\nexport function positionElements(\r\n  hostElement: HTMLElement,\r\n  targetElement: HTMLElement,\r\n  placement: string,\r\n  appendToBody?: boolean\r\n): void {\r\n  const pos = positionService.positionElements(\r\n    hostElement,\r\n    targetElement,\r\n    placement,\r\n    appendToBody\r\n  );\r\n\r\n  targetElement.style.top = `${pos.top}px`;\r\n  targetElement.style.left = `${pos.left}px`;\r\n}\r\n","import { Injectable, ElementRef } from '@angular/core';\r\nimport { positionElements } from './ng-positioning';\r\nimport {PositioningOptions} from './positioning.options';\r\n\r\n\r\n@Injectable()\r\nexport class PositioningService {\r\n  public position(options: PositioningOptions): void {\r\n    const {element, target, attachment, appendToBody} = options;\r\n    positionElements(\r\n      this._getHtmlElement(target),\r\n      this._getHtmlElement(element),\r\n      <any>attachment,\r\n      appendToBody);\r\n  }\r\n\r\n  public isElementBelowTheFold(element: HTMLElement): boolean {\r\n    const rect = element.getBoundingClientRect();\r\n    return ((rect.top + rect.height) > document.body.clientHeight) ;\r\n  }\r\n\r\n  private _getHtmlElement(element: any): HTMLElement {\r\n    // it means that we got a selector\r\n    if (typeof element === 'string') {\r\n      return document.querySelector(element) as HTMLElement;\r\n    }\r\n\r\n    if (element instanceof ElementRef) {\r\n      return element.nativeElement;\r\n    }\r\n\r\n    return element as HTMLElement;\r\n  }\r\n}\r\n","import {\r\n  Injectable, NgZone, ViewContainerRef, ComponentFactoryResolver, Injector,\r\n  Renderer2, ElementRef\r\n} from '@angular/core';\r\nimport { ComponentLoader } from './component-loader.class';\r\nimport { PositioningService } from '../positioning/positioning.service';\r\n\r\n@Injectable()\r\nexport class ComponentLoaderFactory {\r\n  private _componentFactoryResolver: ComponentFactoryResolver;\r\n  private _ngZone: NgZone;\r\n  private _injector: Injector;\r\n  private _posService: PositioningService;\r\n\r\n  public constructor(componentFactoryResolver: ComponentFactoryResolver, ngZone: NgZone,\r\n                     injector: Injector, posService: PositioningService) {\r\n    this._ngZone = ngZone;\r\n    this._injector = injector;\r\n    this._posService = posService;\r\n    this._componentFactoryResolver = componentFactoryResolver;\r\n  }\r\n\r\n  public createLoader<T>(_elementRef: ElementRef, _viewContainerRef: ViewContainerRef, _renderer: Renderer2): ComponentLoader<T> {\r\n    return new ComponentLoader<T>(_viewContainerRef, _renderer, _elementRef,\r\n      this._injector, this._componentFactoryResolver, this._ngZone, this._posService);\r\n  }\r\n}\r\n","import { TemplateRef, ViewContainerRef } from '@angular/core';\r\n\r\nexport class HxComponentRef<T> {\r\n  templateRef: TemplateRef<T>;\r\n  viewContainer: ViewContainerRef;\r\n}\r\n","export enum DisplayMode {\r\n  showTab = 1,\r\n  showCustomOnly,\r\n  showIntervalOnly\r\n}\r\n\r\nexport interface DateRange {\r\n  fromDate: Date;\r\n  toDate: Date;\r\n}\r\n\r\n//expanded when more tabs be added\r\nexport enum DateSelectionType {\r\n  interval,\r\n  custom\r\n}\r\n","import {Directive, HostListener, ElementRef, HostBinding} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[hxaTextInput]'\r\n})\r\nexport class TextInputDirective {\r\n\r\n  @HostBinding('class.has-label-placeholder') isPlaceholder: boolean;\r\n  @HostBinding('class.has-label-floating') isLabel: boolean;\r\n\r\n  constructor(private el: ElementRef) {\r\n    this.styleLabel();\r\n  }\r\n\r\n  @HostListener('focus')\r\n  onFocus() {\r\n    this.styleLabelAsFloating();\r\n  }\r\n\r\n  @HostListener('blur')\r\n  onBlur() {\r\n    this.styleLabel();\r\n  }\r\n\r\n  styleLabel(floatingLabel?: boolean) {\r\n    // If the element is empty, style the label like a placeholder otherwise float the label above the input\r\n    if (!floatingLabel && this.el.nativeElement.value.trim().length === 0 && this.el.nativeElement.placeholder.trim().length === 0 )  {\r\n      this.styleLabelAsPlaceholder();\r\n    } else {\r\n      this.styleLabelAsFloating();\r\n    }\r\n  }\r\n\r\n  styleLabelAsPlaceholder() {\r\n    this.isPlaceholder = true;\r\n    this.isLabel = false;\r\n  }\r\n\r\n  styleLabelAsFloating() {\r\n    this.isPlaceholder = false;\r\n    this.isLabel = true;\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/** Default values provider for calendar */\r\n@Injectable()\r\nexport class DatepickerConfig {\r\n  /** dropdown overlay placement */\r\n  public placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\r\n  /** delay in ms before showing the calendar after show is called */\r\n  public showDelay = 0;\r\n  /** delay in ms before hiding the calendar after hide is called */\r\n  public hideDelay = 0;\r\n}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  TemplateRef,\r\n} from '@angular/core';\r\nimport { TabsetComponent } from './tabset.component';\r\n\r\n// eslint-disable-next-line @angular-eslint/directive-selector\r\n@Directive({ selector: 'hx-tab, [hx-tab]' })\r\nexport class TabDirective implements OnDestroy {\r\n  /** tab header text */\r\n  @Input() heading: string;\r\n  /** tab id */\r\n  @Input() id: string;\r\n  /** if true tab can not be activated */\r\n  @Input() disabled: boolean;\r\n  /** if true tab can be removable, additional button will appear */\r\n  @Input() removable: boolean;\r\n  /** if set, will be added to the tab's class atribute */\r\n  @Input() customClass: string;\r\n\r\n  @Input()\r\n  get active(): boolean {\r\n    return this._active;\r\n  }\r\n\r\n  set active(active: boolean) {\r\n    if ((this.disabled && active) || !active) {\r\n      if (!active) {\r\n        this._active = active;\r\n      }\r\n\r\n      this.deselect.emit(this);\r\n      return;\r\n    }\r\n\r\n    this._active = active;\r\n    this.select.emit(this);\r\n  }\r\n\r\n  /** tab active state toggle */\r\n  @HostBinding('class.is-active')\r\n  get _() {\r\n    return !!this._active;\r\n  }\r\n\r\n  /** fired when tab became active, $event:Tab equals to selected instance of Tab component */\r\n  // TODO: change output name\r\n  // eslint-disable-next-line @angular-eslint/no-output-native\r\n  @Output() public select: EventEmitter<TabDirective> = new EventEmitter();\r\n  /** fired when tab became inactive, $event:Tab equals to deselected instance of Tab component */\r\n  @Output() public deselect: EventEmitter<TabDirective> = new EventEmitter();\r\n  /** fired before tab will be removed, $event:Tab equals to instance of removed tab */\r\n  @Output() public removed: EventEmitter<TabDirective> = new EventEmitter();\r\n\r\n  @HostBinding('class.hx-tab-pane') addClasn = true;\r\n\r\n  headingRef: TemplateRef<any>;\r\n  tabset: TabsetComponent;\r\n  protected _active: boolean;\r\n\r\n  // TODO: refactor so that ref to parent 'TabsetComponent' is removed, causing circular refs\r\n  constructor(tabset: TabsetComponent, public elementRef: ElementRef) {\r\n    this.tabset = tabset;\r\n    this.tabset.addTab(this);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.tabset.removeTab(this, { reselect: false, emit: false });\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class TabsetConfig {\r\n  /** provides default navigation context class */\r\n  public type: 'tabs' | 'pills' = 'tabs';\r\n}\r\n","import {\r\n  Directive, Input, TemplateRef, ViewContainerRef\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[ngTransclude]'\r\n})\r\nexport class NgTranscludeDirective {\r\n  public viewRef: ViewContainerRef;\r\n\r\n  protected _viewRef: ViewContainerRef;\r\n  protected _ngTransclude: TemplateRef<any>;\r\n\r\n  @Input()\r\n  public set ngTransclude(templateRef: TemplateRef<any>) {\r\n    this._ngTransclude = templateRef;\r\n    if (templateRef) {\r\n      this.viewRef.createEmbeddedView(templateRef);\r\n    }\r\n  }\r\n\r\n  public get ngTransclude(): TemplateRef<any> {\r\n    return this._ngTransclude;\r\n  }\r\n\r\n  public constructor(viewRef: ViewContainerRef) {\r\n    this.viewRef = viewRef;\r\n  }\r\n}\r\n","import {\r\n  AfterContentInit,\r\n  Component,\r\n  ContentChildren,\r\n  forwardRef,\r\n  Input,\r\n  OnDestroy,\r\n  QueryList,\r\n} from '@angular/core';\r\nimport { TabDirective } from './tab.directive';\r\nimport { TabsetConfig } from './tabset.config';\r\n\r\n@Component({\r\n  selector: 'hx-tabset',\r\n  host: {\r\n    class: 'hx-tab-container',\r\n  },\r\n  template: `\r\n    <ul\r\n      class=\"hx-nav hx-nav-{{ type }}\"\r\n      [ngStyle]=\"{\r\n        position: getStickyHeaderPosition(),\r\n        'top.rem': stickyHeaderOffset\r\n      }\"\r\n      [class.is-vertical]=\"vertical\"\r\n      [class.is-justified]=\"justified\"\r\n      [class.has-info]=\"hasInfo\"\r\n    >\r\n      <li\r\n        *ngFor=\"let tab of tabs\"\r\n        [ngClass]=\"['hx-nav-item', tab.customClass || '']\"\r\n        [class.is-active]=\"!!tab?.active\"\r\n        [class.is-disabled]=\"!!tab?.disabled\"\r\n        [class.is-button]=\"tag === 'button'\"\r\n      >\r\n        <button\r\n          *ngIf=\"tag === 'button'\"\r\n          class=\"hx-nav-link\"\r\n          [class.is-active]=\"!!tab?.active\"\r\n          [class.is-disabled]=\"!!tab?.disabled\"\r\n          [attr.disabled]=\"!!tab?.disabled ? '' : null\"\r\n          (click)=\"selectTab(tab)\"\r\n        >\r\n          <span [ngTransclude]=\"tab.headingRef\">{{ tab.heading }}</span>\r\n          <span *ngIf=\"tab.removable\">\r\n            <span\r\n              (click)=\"removeTab(tab)\"\r\n              class=\"icon close-outline is-small\"\r\n            ></span>\r\n          </span>\r\n        </button>\r\n        <a\r\n          *ngIf=\"tag === 'link'\"\r\n          class=\"hx-nav-link\"\r\n          [class.is-active]=\"!!tab?.active\"\r\n          [class.is-disabled]=\"!!tab?.disabled\"\r\n          [attr.disabled]=\"!!tab?.disabled ? '' : null\"\r\n          (click)=\"selectTab(tab)\"\r\n        >\r\n          <span [ngTransclude]=\"tab.headingRef\">{{ tab.heading }}</span>\r\n          <span *ngIf=\"tab.removable\">\r\n            <span\r\n              (click)=\"removeTab(tab)\"\r\n              class=\"icon close-outline is-small\"\r\n            ></span>\r\n          </span>\r\n        </a>\r\n      </li>\r\n    </ul>\r\n    <div class=\"hx-tab-content {{ contentCustomClass }}\">\r\n      <ng-content></ng-content>\r\n    </div>\r\n  `,\r\n  styles: [\r\n    `\r\n      :host,\r\n      ul.hx-nav {\r\n        background-color: inherit;\r\n      }\r\n\r\n      button.hx-nav-link {\r\n        border-width: 0;\r\n        border-bottom-width: 1px;\r\n        border-color: transparent;\r\n        background-color: transparent;\r\n        line-height: 1.5;\r\n        cursor: pointer;\r\n      }\r\n\r\n      :where(.is-justified) .is-button.hx-nav-item {\r\n        display: flex;\r\n      }\r\n\r\n      :where(.is-justified .is-button) button.hx-nav-link {\r\n        display: flex;\r\n      }\r\n    `,\r\n  ],\r\n})\r\nexport class TabsetComponent implements OnDestroy, AfterContentInit {\r\n  /** if true tabs will be placed vertically */\r\n  @Input() vertical = false;\r\n\r\n  /** if true tabs fill the container and have a consistent width */\r\n  @Input() justified = false;\r\n\r\n  @Input() hasInfo = false;\r\n\r\n  /** navigation context class: 'tabs' or 'pills' */\r\n  @Input()\r\n  get type(): string {\r\n    return this._type;\r\n  }\r\n  set type(value: string) {\r\n    this._type = value;\r\n  }\r\n\r\n  @Input() contentCustomClass: string;\r\n  @Input() stickyHeader = false;\r\n  @Input() stickyHeaderOffset = 0;\r\n\r\n  @Input() tag: 'link' | 'button' = 'link';\r\n\r\n  @Input()\r\n  changeFn = async () => true;\r\n\r\n  @ContentChildren(forwardRef(() => TabDirective))\r\n  private _tabList: QueryList<TabDirective>;\r\n\r\n  tabs: TabDirective[] = [];\r\n\r\n  protected isDestroyed: boolean;\r\n  protected _type: string;\r\n\r\n  constructor(config: TabsetConfig) {\r\n    Object.assign(this, config);\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    // get all active tabs\r\n    const activeTabs = this._tabList.filter(tab => tab.active);\r\n\r\n    // if there is no active tab set, activate the first\r\n    if (activeTabs.length === 0) {\r\n      this._selectTab(this._tabList.last);\r\n    }\r\n  }\r\n\r\n  private _selectTab(tab: TabDirective) {\r\n    // deactivate all tabs\r\n    this._tabList.toArray().forEach(tab => (tab.active = false));\r\n\r\n    // activate the tab the user has clicked on.\r\n    tab.active = true;\r\n  }\r\n\r\n  selectTab(tab: TabDirective) {\r\n    this.changeFn().then(res => !!res && this._selectTab(tab));\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.isDestroyed = true;\r\n  }\r\n\r\n  addTab(tab: TabDirective): void {\r\n    this.tabs.push(tab);\r\n    tab.active = this.tabs.length === 1 && tab.active !== false;\r\n  }\r\n\r\n  removeTab(tab: TabDirective, options = { reselect: true, emit: true }): void {\r\n    const index = this.tabs.indexOf(tab);\r\n    if (index === -1 || this.isDestroyed) {\r\n      return;\r\n    }\r\n    // Select a new tab if the tab to be removed is selected and not destroyed\r\n    if (options.reselect && tab.active && this.hasAvailableTabs(index)) {\r\n      const newActiveIndex = this.getClosestTabIndex(index);\r\n      this.tabs[newActiveIndex].active = true;\r\n    }\r\n    if (options.emit) {\r\n      tab.removed.emit(tab);\r\n    }\r\n    this.tabs.splice(index, 1);\r\n    if (tab.elementRef.nativeElement && tab.elementRef.nativeElement.remove) {\r\n      tab.elementRef.nativeElement.remove();\r\n    }\r\n  }\r\n\r\n  getStickyHeaderPosition(): string {\r\n    return this.stickyHeader ? 'sticky' : 'relative';\r\n  }\r\n\r\n  protected getClosestTabIndex(index: number): number {\r\n    const tabsLength = this.tabs.length;\r\n    if (!tabsLength) {\r\n      return -1;\r\n    }\r\n\r\n    for (let step = 1; step <= tabsLength; step += 1) {\r\n      const prevIndex = index - step;\r\n      const nextIndex = index + step;\r\n      if (this.tabs[prevIndex] && !this.tabs[prevIndex].disabled) {\r\n        return prevIndex;\r\n      }\r\n      if (this.tabs[nextIndex] && !this.tabs[nextIndex].disabled) {\r\n        return nextIndex;\r\n      }\r\n    }\r\n    return -1;\r\n  }\r\n\r\n  protected hasAvailableTabs(index: number): boolean {\r\n    const tabsLength = this.tabs.length;\r\n    if (!tabsLength) {\r\n      return false;\r\n    }\r\n\r\n    for (let i = 0; i < tabsLength; i += 1) {\r\n      if (!this.tabs[i].disabled && i !== index) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n} from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { Subscription } from 'rxjs';\r\nimport { DatePickerInterval } from './datepicker.model';\r\n\r\n@Component({\r\n  selector: 'hxa-datepicker-interval',\r\n  templateUrl: './datepicker-interval.component.html',\r\n  styleUrls: ['./datepicker-interval.component.scss'],\r\n  host: {\r\n    class: 'hx-card hxa-datepicker-interval',\r\n  },\r\n})\r\nexport class DatepickerIntervalComponent implements OnInit, OnDestroy {\r\n  durationOptions = ['day', 'week', 'month', 'year'];\r\n  duration = 'days';\r\n  increment = 0;\r\n  text: moment.Moment;\r\n  dateLabel: string;\r\n  public _dueDatestring: string;\r\n\r\n  private value$: Subscription = new Subscription();\r\n  form: FormGroup;\r\n\r\n  @Input()\r\n  selectedDate: Date;\r\n\r\n  @Input()\r\n  selectedInterval: DatePickerInterval;\r\n\r\n  @Output()\r\n  update = new EventEmitter<DatePickerInterval & { date: Date }>();\r\n\r\n  @Output()\r\n  cancel = new EventEmitter<void>();\r\n\r\n  constructor(private _fb: FormBuilder) {}\r\n\r\n  ngOnInit(): void {\r\n    // date selected from interval\r\n    if (\r\n      this.selectedInterval &&\r\n      this.selectedInterval.isSelectedFromInterval &&\r\n      this.selectedInterval.interval\r\n    ) {\r\n      const intervalArr = this.selectedInterval.interval.split(' ');\r\n\r\n      if (intervalArr && intervalArr.length > 1) {\r\n        this.increment = parseInt(intervalArr[0], 10);\r\n        this.duration = this.normaliseDurationString(intervalArr[1]);\r\n      }\r\n\r\n      // date is typed or calendar picker\r\n    } else if (this.selectedDate) {\r\n      const selected = moment(this.selectedDate);\r\n      const today = moment().startOf('day');\r\n      const duration = 'days';\r\n\r\n      const daysBetween: number = selected.diff(today, duration);\r\n\r\n      if (daysBetween && daysBetween > 0) {\r\n        this.increment = daysBetween;\r\n        this.duration = duration;\r\n      }\r\n    }\r\n\r\n    this.onSelectoptions(this.increment, this.duration);\r\n\r\n    this.form = this._fb.group({\r\n      number: [this.increment, Validators.min(0)],\r\n      duration: [this.duration],\r\n    });\r\n\r\n    this.onValueChanges();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.value$.unsubscribe();\r\n  }\r\n\r\n  onValueChanges(): void {\r\n    this.value$ = this.form.valueChanges.subscribe(val => {\r\n      this.onSelectoptions(val.number, val.duration);\r\n    });\r\n  }\r\n\r\n  /** on cancel of interval form */\r\n  onCancel(): void {\r\n    this.cancel.emit();\r\n  }\r\n\r\n  onSelectoptions(numberValue: number, durationValue: string): void {\r\n    this.text = moment().add(\r\n      numberValue as moment.DurationInputArg1,\r\n      durationValue as moment.DurationInputArg2\r\n    );\r\n    this.dateLabel = this.text.format('ddd DD/MM/YYYY');\r\n    this._dueDatestring = this.text.format('YYYY-MM-DD');\r\n  }\r\n\r\n  /** on submission of interval form */\r\n  onChoose($event: SubmitEvent) {\r\n    $event.preventDefault();\r\n    // check form is valid\r\n    if (this.form.valid) {\r\n      const intervalSubmitted =\r\n        this.form.value.number.toString() +\r\n        ' ' +\r\n        this.normaliseDurationString(this.form.value.duration, 'optional');\r\n\r\n      const dateSubmitted = new Date(this._dueDatestring);\r\n\r\n      const result = {\r\n        interval: intervalSubmitted,\r\n        isSelectedFromInterval: true,\r\n        date: dateSubmitted,\r\n      };\r\n\r\n      // emit result\r\n      this.update.emit(result);\r\n    }\r\n  }\r\n\r\n  /** normalise duration string */\r\n  normaliseDurationString(\r\n    duration: string,\r\n    output: 'singular' | 'plural' | 'optional' = 'plural'\r\n  ): string {\r\n    const singular = this.durationOptions;\r\n    const plural = singular.map(val => val + 's');\r\n    const optional = singular.map(val => val + '(s)');\r\n\r\n    const current = currentFormat(duration);\r\n\r\n    let result = [`${output}`][0] || 'days';\r\n\r\n    if (output === 'singular') {\r\n      result = toSingular(duration);\r\n    } else if (output === 'plural') {\r\n      result = toPlural(duration);\r\n    } else if (output === 'optional') {\r\n      result = toOptional(duration);\r\n    }\r\n\r\n    return result;\r\n\r\n    function currentFormat(str: string): string | undefined {\r\n      if (singular.includes(str)) {\r\n        return 'singular';\r\n      } else if (plural.includes(str)) {\r\n        return 'plural';\r\n      } else if (optional.includes(str)) {\r\n        return 'optional';\r\n      } else {\r\n        return undefined;\r\n      }\r\n    }\r\n\r\n    function toSingular(str: string): string {\r\n      let result = singular[0];\r\n      if (current === 'singular') {\r\n        result = str;\r\n      } else if (current === 'plural') {\r\n        result = str.replace('s', '');\r\n      } else if (current === 'optional') {\r\n        result = str.replace('(s)', '');\r\n      }\r\n      return result;\r\n    }\r\n\r\n    function toPlural(str: string): string {\r\n      let result = plural[0];\r\n      if (current === 'singular') {\r\n        result = str + 's';\r\n      } else if (current === 'plural') {\r\n        result = str;\r\n      } else if (current === 'optional') {\r\n        result = str.replace('(s)', 's');\r\n      }\r\n      return result;\r\n    }\r\n\r\n    function toOptional(str: string): string {\r\n      let result = optional[0];\r\n      if (current === 'singular') {\r\n        result = str + '(s)';\r\n      } else if (current === 'plural') {\r\n        result = str.replace('s', '(s)');\r\n      } else if (current === 'optional') {\r\n        result = str;\r\n      }\r\n      return result;\r\n    }\r\n  }\r\n}\r\n","<form [formGroup]=\"form\" (ngSubmit)=\"onChoose($event)\">\r\n  <section class=\"hxa-datepicker-interval__content\">\r\n    <fieldset class=\"hxa-datepicker-interval__inputs\">\r\n      <input\r\n        type=\"number\"\r\n        id=\"numberText\"\r\n        class=\"hx-input\"\r\n        formControlName=\"number\"\r\n        min=\"0\"\r\n      />\r\n\r\n      <select id=\"durationText\" class=\"hx-input\" formControlName=\"duration\">\r\n        <option *ngFor=\"let opt of durationOptions\" [value]=\"opt + 's'\">\r\n          {{ opt + '(s)' }}\r\n        </option>\r\n      </select>\r\n\r\n      <span>from today</span>\r\n    </fieldset>\r\n\r\n    <div class=\"hxa-datepicker-interval__output\">\r\n      <span>will be </span>\r\n      <span class=\"is-text-weight-bolder\">{{ dateLabel }}</span>\r\n    </div>\r\n  </section>\r\n\r\n  <section class=\"hxa-datepicker-interval__footer\">\r\n    <button class=\"hx-button\" (click)=\"onCancel()\">Cancel</button>\r\n    <button type=\"submit\" class=\"hx-button is-primary\">Select</button>\r\n  </section>\r\n</form>\r\n","export enum Context {\r\n  None,\r\n  Success,\r\n  Warning,\r\n  Danger,\r\n  Info,\r\n  White\r\n}\r\n\r\n\r\nexport enum Size {\r\n  Default,\r\n  Small,\r\n  Large\r\n}\r\n\r\nexport enum Visibility {\r\n  Hidden,\r\n  Visible\r\n}\r\n\r\nexport enum TextFieldTypes {\r\n  Email = 'email',\r\n  Text = 'text',\r\n  Password = 'password',\r\n  Number = 'number'\r\n}\r\n","export enum DatepickerViewModeEnum {\r\n  Days,\r\n  Months,\r\n  Years\r\n}\r\n\r\nexport interface DatePickerInterval {\r\n  interval: string;\r\n  isSelectedFromInterval: boolean;\r\n}\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Input,\r\n  OnChanges,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Visibility } from '../enums';\r\nimport { DatepickerViewModeEnum } from './datepicker.model';\r\n\r\n@Component({\r\n  selector: 'hxa-datepicker',\r\n  templateUrl: './datepicker.component.html',\r\n  styleUrls: ['./datepicker.component.scss']\r\n})\r\nexport class DatepickerComponent implements OnInit, OnChanges {\r\n  @HostBinding('class')\r\n  get classes() {\r\n    return 'hxui-reset hx-card hxa-datepicker-calendar';\r\n  }\r\n\r\n  @Input()\r\n  selectedDate: Date;\r\n\r\n  @Input()\r\n  validators: Array<(date: Date) => boolean>;\r\n\r\n  @Output()\r\n  update = new EventEmitter<Date>();\r\n\r\n  viewMode$ = new BehaviorSubject<DatepickerViewModeEnum>(\r\n    DatepickerViewModeEnum.Days\r\n  );\r\n  DatepickerViewModeEnum = DatepickerViewModeEnum;\r\n  visibilityEnum = Visibility;\r\n  visibility: Visibility = Visibility.Hidden;\r\n  viewDate: Date;\r\n  days: Array<Date> = new Array<Date>();\r\n  week: Array<string> = [\r\n    'Monday',\r\n    'Tuesday',\r\n    'Wednesday',\r\n    'Thursday',\r\n    'Friday',\r\n    'Saturday',\r\n    'Sunday'\r\n  ];\r\n  months: Array<string> = [\r\n    'Jan',\r\n    'Feb',\r\n    'Mar',\r\n    'Apr',\r\n    'May',\r\n    'Jun',\r\n    'Jul',\r\n    'Aug',\r\n    'Sep',\r\n    'Oct',\r\n    'Nov',\r\n    'Dec'\r\n  ];\r\n  years: Array<number> = new Array<number>();\r\n  private presentDate: Date;\r\n  private cellCount = 41;\r\n  private yearCellCount = 20;\r\n\r\n  ngOnInit(): void {\r\n    const date: Date = this.selectedDate ? this.selectedDate : new Date();\r\n    this.presentDate = new Date(\r\n      date.getFullYear(),\r\n      date.getMonth(),\r\n      date.getDate()\r\n    );\r\n    this.viewDate =\r\n      this.viewDate || new Date(date.getFullYear(), date.getMonth());\r\n    this.renderCalendar();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // update view date\r\n    if (changes.selectedDate && changes.selectedDate.currentValue) {\r\n      this.viewDate = new Date(\r\n        this.selectedDate.getFullYear(),\r\n        this.selectedDate.getMonth()\r\n      );\r\n    }\r\n  }\r\n\r\n  /** update and emit selected date  */\r\n  public setSelectedDate(date: Date): void {\r\n    if (!this.isInvalidDay(date)) {\r\n      this.selectedDate = date;\r\n      this.update.emit(date);\r\n    }\r\n  }\r\n\r\n  // Populates the days array with the current month, and completes the view with partial dates from sibling months\r\n  public renderCalendar(): void {\r\n    for (let i = 0; i <= this.cellCount; i++) {\r\n      // date will be set to the first day of the month set in this.viewDate\r\n      const date: Date = new Date(\r\n        this.viewDate.getFullYear(),\r\n        this.viewDate.getMonth()\r\n      );\r\n      // Shifts the week to start from Monday, rather than Sunday, this causes the index to start at 1\r\n      const dayOffset = date.getDay() === 0 ? 7 : date.getDay();\r\n      this.days[i] = new Date(date.setDate(2 - dayOffset + i));\r\n    }\r\n  }\r\n\r\n  public next() {\r\n    if (this.viewMode$.value === DatepickerViewModeEnum.Days) {\r\n      this.nextMonth();\r\n    } else if (this.viewMode$.value === DatepickerViewModeEnum.Years) {\r\n      this.nextYear();\r\n    }\r\n  }\r\n\r\n  public previous() {\r\n    if (this.viewMode$.value === DatepickerViewModeEnum.Days) {\r\n      this.previousMonth();\r\n    } else if (this.viewMode$.value === DatepickerViewModeEnum.Years) {\r\n      this.previousYear();\r\n    }\r\n  }\r\n\r\n  public previousMonth(): void {\r\n    this.viewDate = new Date(\r\n      this.viewDate.getFullYear(),\r\n      this.viewDate.getMonth() - 1\r\n    );\r\n    this.renderCalendar();\r\n  }\r\n\r\n  public nextMonth(): void {\r\n    this.viewDate = new Date(\r\n      this.viewDate.getFullYear(),\r\n      this.viewDate.getMonth() + 1\r\n    );\r\n    this.renderCalendar();\r\n  }\r\n\r\n  public isCurrentMonth(inputDate: Date): boolean {\r\n    return inputDate.getMonth() === this.viewDate.getMonth();\r\n  }\r\n\r\n  public isCurrentDay(inputDate: Date): boolean {\r\n    return inputDate.getTime() === this.presentDate.getTime();\r\n  }\r\n\r\n  public isSelectedDay(inputDate: Date): boolean {\r\n    if (this.selectedDate) {\r\n      return inputDate.getTime() === this.selectedDate.getTime();\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  public isInvalidDay(inputDate: Date): boolean {\r\n    return this.validators\r\n      .map(fn => fn(inputDate))\r\n      .reduce((prev, next) => prev || next, false);\r\n  }\r\n\r\n  public isCurrentYear(year: number): boolean {\r\n    return year === this.presentDate.getFullYear();\r\n  }\r\n\r\n  public isSelectedYear(year: number): boolean {\r\n    return year === this.viewDate.getFullYear();\r\n  }\r\n\r\n  public isInvalidYear(year: number): boolean {\r\n    const newDate = new Date(\r\n      new Date(this.viewDate.getTime()).setFullYear(year)\r\n    );\r\n    return this.validators\r\n      .map(fn => fn(newDate))\r\n      .reduce((prev, next) => prev || next, false);\r\n  }\r\n\r\n  public isCurrentMonthByIndex(month: number): boolean {\r\n    return month === this.presentDate.getMonth();\r\n  }\r\n\r\n  public isSelectedMonthByIndex(month: number): boolean {\r\n    return month === this.viewDate.getMonth();\r\n  }\r\n\r\n  public isInvalidMonthByIndex(month: number): boolean {\r\n    const newDate = new Date(new Date(this.viewDate.getTime()).setMonth(month));\r\n    return this.validators\r\n      .map(fn => fn(newDate))\r\n      .reduce((prev, next) => prev || next, false);\r\n  }\r\n\r\n  public previousYear(): void {\r\n    this.getYearCollection(this.years[0] - this.yearCellCount);\r\n  }\r\n\r\n  public nextYear(): void {\r\n    this.getYearCollection(this.years[0] + this.yearCellCount);\r\n  }\r\n\r\n  public setYear(year) {\r\n    if (!this.isInvalidYear(year)) {\r\n      this.viewDate.setFullYear(year);\r\n      this.renderCalendar();\r\n      this.toggleYear();\r\n    }\r\n  }\r\n\r\n  public setMonth(month) {\r\n    if (!this.isInvalidMonthByIndex(month)) {\r\n      this.viewDate.setMonth(month);\r\n      this.renderCalendar();\r\n      this.viewMode$.next(DatepickerViewModeEnum.Days);\r\n    }\r\n  }\r\n\r\n  public toggleYear() {\r\n    this.viewMode$.next(\r\n      this.viewMode$.value === DatepickerViewModeEnum.Years\r\n        ? DatepickerViewModeEnum.Months\r\n        : DatepickerViewModeEnum.Years\r\n    );\r\n    if (this.viewMode$.value === DatepickerViewModeEnum.Years) {\r\n      this.getYearCollection();\r\n    }\r\n  }\r\n\r\n  private getYearCollection(startFrom = null) {\r\n    const yearsBeforeActive = 7;\r\n    const activeYear = startFrom\r\n      ? startFrom\r\n      : this.viewDate.getFullYear() - yearsBeforeActive;\r\n    this.years = [];\r\n    for (let i = 0; i < this.yearCellCount; i++) {\r\n      this.years.push(activeYear + i);\r\n    }\r\n  }\r\n}\r\n","<ng-container *ngIf=\"{ viewMode$ : viewMode$ | async } as observables\">\r\n  <div class=\"hx-card-header hxa-datepicker-calendar__header\">\r\n    <div class=\"hxa-datepicker-calendar__month\">\r\n      <button\r\n        class=\"hxa-datepicker-calendar__icon hx-button is-transparent is-large\"\r\n        *ngIf=\"observables.viewMode$ !== DatepickerViewModeEnum.Months\"\r\n        title=\"Previous Month\"\r\n        (click)=\"previous()\"\r\n      >\r\n        <span class=\"hx-icon-control\">\r\n          <i class=\"hx-icon icon-angle-left is-medium\"></i>\r\n        </span>\r\n      </button>\r\n      <div class=\"hxa-datepicker-calendar__month-title\">\r\n        <button\r\n          class=\"hx-button is-flat is-info is-large\"\r\n          (click)=\"toggleYear()\"\r\n        >\r\n          {{ (observables.viewMode$ === DatepickerViewModeEnum.Years) ? years[0]\r\n          + ' - ' + years[years.length-1] : viewDate?.toLocaleString(\"en-au\", {\r\n          month: \"long\", year: \"numeric\"}) }}\r\n        </button>\r\n      </div>\r\n      <button\r\n        class=\"hxa-datepicker-calendar__icon hx-button is-transparent is-large\"\r\n        *ngIf=\"observables.viewMode$ !== DatepickerViewModeEnum.Months\"\r\n        title=\"Next Month\"\r\n        (click)=\"next()\"\r\n      >\r\n        <span class=\"hx-icon-control\">\r\n          <i class=\"hx-icon icon-angle-right is-medium\"></i>\r\n        </span>\r\n      </button>\r\n    </div>\r\n    <div\r\n      class=\"hxa-datepicker-calendar__week\"\r\n      *ngIf=\"observables.viewMode$ === DatepickerViewModeEnum.Days\"\r\n    >\r\n      <div\r\n        class=\"hxa-datepicker-calendar__weekday\"\r\n        *ngFor=\"let weekday of week\"\r\n      >\r\n        {{weekday | slice:0:3}}\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div class=\"hxa-datepicker-calendar__contents\">\r\n    <ng-container *ngIf=\"observables.viewMode$ === DatepickerViewModeEnum.Days\">\r\n      <button\r\n        class=\"hxa-datepicker-calendar__day hx-button is-transparent\"\r\n        *ngFor=\"let day of days\"\r\n        [ngClass]=\"{\r\n          'hxa-datepicker-calendar__day-siblingmonth': !isCurrentMonth(day),\r\n          'hxa-datepicker-calendar__day-currentday': isCurrentDay(day),\r\n          'hxa-datepicker-calendar__day-selectedday': isSelectedDay(day),\r\n          'hxa-datepicker-calendar__day-invalidday': isInvalidDay(day)\r\n        }\"\r\n        (click)=\"setSelectedDate(day)\"\r\n      >\r\n        {{day.getDate()}}\r\n      </button>\r\n    </ng-container>\r\n\r\n    <ng-container\r\n      *ngIf=\"observables.viewMode$ === DatepickerViewModeEnum.Months\"\r\n    >\r\n      <button\r\n        class=\"hxa-datepicker-calendar__months hx-button is-transparent\"\r\n        *ngFor=\"let month of months; let indexOfMth=index;\"\r\n        [ngClass]=\"{\r\n          'hxa-datepicker-calendar__day-currentday': isCurrentMonthByIndex(indexOfMth),\r\n          'hxa-datepicker-calendar__day-selectedday': isSelectedMonthByIndex(indexOfMth),\r\n          'hxa-datepicker-calendar__day-invalidday': isInvalidMonthByIndex(indexOfMth)\r\n        }\"\r\n        (click)=\"setMonth(indexOfMth)\"\r\n      >\r\n        {{ month }}\r\n      </button>\r\n    </ng-container>\r\n\r\n    <ng-container\r\n      *ngIf=\"observables.viewMode$ === DatepickerViewModeEnum.Years\"\r\n    >\r\n      <button\r\n        *ngFor=\"let year of years\"\r\n        class=\"hxa-datepicker-calendar__year hx-button is-transparent\"\r\n        [ngClass]=\"{\r\n          'hxa-datepicker-calendar__day-currentday': isCurrentYear(year),\r\n          'hxa-datepicker-calendar__day-selectedday': isSelectedYear(year),\r\n          'hxa-datepicker-calendar__day-invalidday': isInvalidYear(year)\r\n        }\"\r\n        (click)=\"setYear(year)\"\r\n      >\r\n        {{ year }}\r\n      </button>\r\n    </ng-container>\r\n  </div>\r\n</ng-container>\r\n","import {\r\n  FlexibleConnectedPositionStrategy,\r\n  HorizontalConnectionPos,\r\n  OriginConnectionPosition,\r\n  Overlay,\r\n  OverlayConnectionPosition,\r\n  OverlayRef,\r\n  VerticalConnectionPos,\r\n} from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  DoCheck,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostListener,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  ControlValueAccessor,\r\n  FormGroupDirective,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  Validator,\r\n} from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TextInputDirective } from '../text-input/text-input.directive';\r\nimport { DatepickerConfig } from './datepicker.config';\r\nimport { DatePickerInterval } from './datepicker.model';\r\n\r\n@Component({\r\n  selector: 'hxa-datepicker-input',\r\n  templateUrl: './datepicker-form.component.html',\r\n  styleUrls: ['./datepicker-form.component.scss'],\r\n  host: {\r\n    class: 'hx-input-group hxa-datepicker',\r\n  },\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DatepickerFormComponent),\r\n      multi: true,\r\n    },\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: forwardRef(() => DatepickerFormComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class DatepickerFormComponent\r\n  implements OnInit, ControlValueAccessor, Validator, OnDestroy, DoCheck\r\n{\r\n  /** for controlling input label positioning */\r\n  @ViewChild(TextInputDirective, { static: true })\r\n  datePickerFormInput: TextInputDirective;\r\n\r\n  /** for managing form input state */\r\n  @ViewChild('datePickerForm', { static: true })\r\n  datePickerForm: FormGroupDirective;\r\n\r\n  @ViewChild('menuRef', { read: TemplateRef })\r\n  private _menuRef: TemplateRef<unknown>;\r\n\r\n  @ViewChild('originRef', { read: ElementRef })\r\n  private _originRef: ElementRef;\r\n\r\n  public _overlayRef: OverlayRef | null;\r\n  private _portal: TemplatePortal;\r\n  private readonly _destroyed = new Subject();\r\n  isOpen = false;\r\n  isInputFocus = false;\r\n\r\n  /** The timeout ID of any current timer set to show the calendar */\r\n  private _showTimeoutId: number;\r\n\r\n  /** The timeout ID of any current timer set to hide the calendar */\r\n  private _hideTimeoutId: number;\r\n\r\n  activeTabIndex = 0;\r\n\r\n  selectedInterval: DatePickerInterval;\r\n  date: Date = null;\r\n  presentDate: Date;\r\n  isValid: boolean;\r\n  dateValidators = new Array<(date: Date) => boolean>();\r\n  private onChanged = new Array<(value: Date) => void>();\r\n  private onTouched = new Array<() => void>();\r\n\r\n  private validateDateRange: (date: Date) => boolean;\r\n\r\n  /** Adds the disabled html attribute to the components input element */\r\n  @Input()\r\n  disabled = false;\r\n\r\n  /** Adds the readonly html attribute to the components input element. */\r\n  @Input()\r\n  readonly = false;\r\n\r\n  /**\r\n   * Adds the required html attribute to the components input element\r\n   * and a required asterisk on the input label.\r\n   */\r\n  @Input()\r\n  required = false;\r\n\r\n  /** Initializes the component with a value of the present date. */\r\n  @Input()\r\n  defaultToPresentDate = true;\r\n\r\n  /**\r\n   * Setting to false will disallow the user from selecting dates\r\n   * before the present date\r\n   */\r\n  @Input()\r\n  allowPreviousDates = true;\r\n\r\n  /**\r\n   * Setting to false will disallow the user from selecting dates\r\n   * after the present date.\r\n   */\r\n  @Input()\r\n  allowFutureDates = true;\r\n\r\n  /**\r\n   * A JavaScript Date object formatting string, formats the display\r\n   * of components current value.\r\n   */\r\n  @Input()\r\n  dateFormat = 'dd/MM/y';\r\n\r\n  /**\r\n   * This attribute specifies the placeholder value of the components\r\n   * input element.\r\n   */\r\n  @Input()\r\n  placeholder = 'Date';\r\n\r\n  /** This attribute specifies the text value of input helper. */\r\n  @Input()\r\n  helpText = 'Please select a valid date';\r\n\r\n  /** Specifies visibility of input help text */\r\n  @Input()\r\n  helpTextVisible = false;\r\n\r\n  /** Warning state of input */\r\n  @Input()\r\n  isWarning = false;\r\n\r\n  /** Danger state of input */\r\n  @Input()\r\n  isDanger = false;\r\n\r\n  /** This attribute specifies the font icon name. */\r\n  @Input()\r\n  icon = 'hx-icon icon-calendar-outline';\r\n\r\n  /** This attribute specifies the icon placement. */\r\n  @Input()\r\n  iconPlacement = 'right';\r\n\r\n  /** Specifies the position the datepicker opens against the input element */\r\n  @Input()\r\n  placement: 'top' | 'bottom' | 'left' | 'right' = this._config.placement;\r\n\r\n  /** delay in ms before showing the calendar after show is called */\r\n  @Input()\r\n  showDelay = this._config.showDelay;\r\n\r\n  /** delay in ms before hiding the calendar after hide is called */\r\n  @Input()\r\n  hideDelay = this._config.hideDelay;\r\n\r\n  /** Specifies the inclusive beginning date for allowed date values */\r\n  @Input()\r\n  from = '';\r\n\r\n  /** Specifies the inclusive end date for allowed date values */\r\n  @Input()\r\n  to = '';\r\n\r\n  /** Enables interval selection */\r\n  @Input()\r\n  interval = false;\r\n\r\n  @Input()\r\n  dueDateInterval = '0 day(s)';\r\n\r\n  /** Mask pattern for date picker text input */\r\n  @Input()\r\n  maskPattern = '00/00/0000';\r\n\r\n  /** Emits a Date is selected from the Datepicker or a valid date string is entered into input field */\r\n  @Output()\r\n  dateChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\r\n  /** Emits a boolean if date picker input field is in focus */\r\n  @Output()\r\n  inputFocus: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  constructor(\r\n    private _viewContainerRef: ViewContainerRef,\r\n    public overlay: Overlay,\r\n    private _config: DatepickerConfig,\r\n    private _cd: ChangeDetectorRef\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    // if interval is not allowed, go to 'specific date' tab\r\n    if (!this.interval) {\r\n      this.activeTabIndex = 1;\r\n      this.selectedInterval = {\r\n        interval: this.dueDateInterval,\r\n        isSelectedFromInterval: false,\r\n      };\r\n    } else {\r\n      this.selectedInterval = {\r\n        interval: this.dueDateInterval,\r\n        isSelectedFromInterval: true,\r\n      };\r\n    }\r\n\r\n    const date: Date = new Date();\r\n    this.presentDate = new Date(\r\n      date.getFullYear(),\r\n      date.getMonth(),\r\n      date.getDate()\r\n    );\r\n\r\n    if (this.defaultToPresentDate) {\r\n      setTimeout(() => {\r\n        this.setDate(this.presentDate);\r\n      });\r\n    }\r\n\r\n    // Close to the minimum and maxium possible dates, but still normalisable\r\n    // http://ecma-international.org/ecma-262/5.1/#sec-15.9.1.1\r\n    const from = this.parseDate(this.from) || new Date(-8630000000000000);\r\n    const to = this.parseDate(this.to) || new Date(8630000000000000);\r\n\r\n    if (!!this.from || !!this.to) {\r\n      this.validateDateRange = this.createDateRangeValidator(from, to);\r\n      this.dateValidators.push(this.validateDateRange.bind(this));\r\n    }\r\n\r\n    if (!this.allowPreviousDates) {\r\n      this.dateValidators.push(this.validateIsNotBeforeDate.bind(this));\r\n    }\r\n    if (!this.allowFutureDates) {\r\n      this.dateValidators.push(this.validateIsNotAfterDate.bind(this));\r\n    }\r\n  }\r\n\r\n  ngDoCheck(): void {\r\n    const from = this.parseDate(this.from) || new Date(-8630000000000000);\r\n    const to = this.parseDate(this.to) || new Date(8630000000000000);\r\n\r\n    if (!!this.from || !!this.to) {\r\n      this.validateDateRange = this.createDateRangeValidator(from, to);\r\n      this.dateValidators = [this.validateDateRange.bind(this)];\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    // dispose the overlay ref and subscriptions\r\n    if (this._overlayRef) {\r\n      this._overlayRef.dispose();\r\n      this._overlayRef = null;\r\n    }\r\n\r\n    this._destroyed.next(true);\r\n    this._destroyed.complete();\r\n  }\r\n\r\n  /** Listen to keyboard events to trigger changes to overlay state */\r\n  @HostListener('document:keydown', ['$event'])\r\n  onKeydown($event: KeyboardEvent) {\r\n    if ($event.key === 'Escape' && this.isOpen) {\r\n      this._hide();\r\n    }\r\n  }\r\n\r\n  setDate(date: Date): void {\r\n    this.date = date;\r\n    this.propogateChange(date);\r\n    this.dateChange.emit(date);\r\n    this._updateLabelStyle();\r\n  }\r\n\r\n  onDateSelection($event: Date): void {\r\n    this._hide();\r\n    this.selectedInterval['isSelectedFromInterval'] = false;\r\n    this.setDate($event);\r\n  }\r\n\r\n  onIntervalSelection($event: DatePickerInterval & { date: Date }): void {\r\n    this._hide();\r\n    const { date, ...rest } = $event;\r\n    this.selectedInterval = rest;\r\n    this.setDate(date);\r\n  }\r\n\r\n  onChange($event: Event): void {\r\n    const inputDate = ($event.target as HTMLInputElement).value;\r\n    const date: Date = this.parseDate(inputDate);\r\n\r\n    if (inputDate === '' || date === null) {\r\n      this.setDate(null);\r\n    } else if (date) {\r\n      this.setDate(date);\r\n    } else {\r\n      this.propogateChange(inputDate);\r\n    }\r\n  }\r\n\r\n  onFocused($event: FocusEvent): void {\r\n    this.isInputFocus = true;\r\n    this.propogateTouched();\r\n    this.inputFocus.emit();\r\n  }\r\n\r\n  onBlur($event: FocusEvent): void {\r\n    this.isInputFocus = false;\r\n  }\r\n\r\n  onButtonClick($event: Event): void {\r\n    if (this.isOpen) {\r\n      this._hide();\r\n    } else {\r\n      this._show();\r\n    }\r\n  }\r\n\r\n  onIntervalCancel($event: Event): void {\r\n    this._hide();\r\n  }\r\n\r\n  onKeydownTab($event: Event): void {\r\n    this.onChange($event);\r\n    this._hide();\r\n    this.propogateTouched();\r\n  }\r\n\r\n  onKeydownSpace($event: Event): void {\r\n    this._show();\r\n  }\r\n\r\n  onTabSelect(index: number): void {\r\n    if (!index) {\r\n      return;\r\n    }\r\n\r\n    if (index === 0) {\r\n      this.activeTabIndex = 0;\r\n    } else {\r\n      this.activeTabIndex = 1;\r\n    }\r\n  }\r\n\r\n  parseDate(inputDate: string | Date): Date {\r\n    if (typeof inputDate === 'string') {\r\n      // eslint-disable-next-line no-useless-escape\r\n      const dateArray = (inputDate as string).split(/[.,\\/ -]/);\r\n\r\n      if (dateArray.length === 3 && dateArray[2].length !== 0) {\r\n        const allowedFormats = [\r\n          'DD/MM/YYYY',\r\n          'D/M/YY',\r\n          'DD/MM/YY',\r\n          'DD-MM-YYYY',\r\n          'D-M-YY',\r\n          'DD-MM-YY',\r\n          'DD.MM.YYYY',\r\n          'D.M.YY',\r\n          'DD.MM.YY',\r\n        ];\r\n        const momentDate = moment(inputDate, allowedFormats, true);\r\n\r\n        if (momentDate.isValid()) {\r\n          return momentDate.toDate();\r\n        }\r\n      }\r\n      return null;\r\n    } else {\r\n      return <Date>inputDate;\r\n    }\r\n  }\r\n  validateIsNotBeforeDate(date: Date): boolean {\r\n    const normalisedDate = new Date(\r\n      date.getFullYear(),\r\n      date.getMonth(),\r\n      date.getDate()\r\n    );\r\n    return normalisedDate.getTime() < this.presentDate.getTime();\r\n  }\r\n\r\n  validateIsNotAfterDate(date: Date): boolean {\r\n    const normalisedDate = new Date(\r\n      date.getFullYear(),\r\n      date.getMonth(),\r\n      date.getDate()\r\n    );\r\n    return normalisedDate.getTime() > this.presentDate.getTime();\r\n  }\r\n\r\n  createDateRangeValidator(from: Date, to: Date): (date: Date) => boolean {\r\n    const normalisedFromDate = new Date(\r\n      from.getFullYear(),\r\n      from.getMonth(),\r\n      from.getDate()\r\n    );\r\n    const normalisedToDate = new Date(\r\n      to.getFullYear(),\r\n      to.getMonth(),\r\n      to.getDate()\r\n    );\r\n\r\n    return (date: Date) => {\r\n      if (date instanceof Date) {\r\n        const normalisedDate = new Date(\r\n          date.getFullYear(),\r\n          date.getMonth(),\r\n          date.getDate()\r\n        );\r\n        return !(\r\n          normalisedFromDate.getTime() <= normalisedDate.getTime() &&\r\n          normalisedDate.getTime() <= normalisedToDate.getTime()\r\n        );\r\n      } else {\r\n        return false;\r\n      }\r\n    };\r\n  }\r\n\r\n  writeValue(value: Date): void {\r\n    if (value !== this.date && value !== undefined) {\r\n      if (value && this.date && value.valueOf() === this.date.valueOf()) {\r\n        return;\r\n      }\r\n      this.setDate(value);\r\n    }\r\n  }\r\n\r\n  registerOnChange(fn: (value: Date) => void): void {\r\n    this.onChanged.push(fn);\r\n  }\r\n\r\n  registerOnTouched(fn: () => void): void {\r\n    this.onTouched.push(fn);\r\n  }\r\n\r\n  propogateTouched(): void {\r\n    this.onTouched.forEach(fn => fn());\r\n  }\r\n\r\n  propogateChange = value => {\r\n    this.onChanged.forEach(fn => fn(value));\r\n  };\r\n\r\n  validate(control: AbstractControl): { [key: string]: any } {\r\n    const date = Date.parse(control.value);\r\n\r\n    if (\r\n      !this.required &&\r\n      (control.value === null || control.value === undefined)\r\n    ) {\r\n      this.isValid = true;\r\n      return null;\r\n    }\r\n\r\n    if (isNaN(date)) {\r\n      this.isValid = false;\r\n      return {\r\n        dateParseError: {\r\n          valid: false,\r\n        },\r\n      };\r\n    }\r\n\r\n    if (!this.allowPreviousDates && this.validateIsNotBeforeDate(this.date)) {\r\n      this.isValid = false;\r\n      return {\r\n        previousDateError: {\r\n          valid: false,\r\n        },\r\n      };\r\n    }\r\n\r\n    if (!this.allowFutureDates && this.validateIsNotAfterDate(this.date)) {\r\n      this.isValid = false;\r\n      return {\r\n        futureDateError: {\r\n          valid: false,\r\n        },\r\n      };\r\n    }\r\n\r\n    if (this.validateDateRange && this.validateDateRange(this.date)) {\r\n      this.isValid = false;\r\n      return {\r\n        dateRangeError: {\r\n          valid: false,\r\n        },\r\n      };\r\n    }\r\n\r\n    if (this.required && !this.date) {\r\n      this.isValid = false;\r\n      return {\r\n        dateRequiredError: {\r\n          valid: false,\r\n        },\r\n      };\r\n    }\r\n\r\n    this.isValid = true;\r\n    return null;\r\n  }\r\n\r\n  /** open overlay */\r\n  private _show(delay: number = this.showDelay) {\r\n    if (this.disabled || this.isOpen) {\r\n      return;\r\n    }\r\n\r\n    const overlayRef = this._createOverlay();\r\n\r\n    this._detach();\r\n    overlayRef.attach(this._portal);\r\n\r\n    // Cancel the delayed hide if it is scheduled\r\n    if (this._hideTimeoutId) {\r\n      clearTimeout(this._hideTimeoutId);\r\n    }\r\n    this._showTimeoutId = window.setTimeout(() => {\r\n      this.isOpen = true;\r\n\r\n      // Schedule for change detection incase the tooltip is used within a\r\n      // component with OnPush change detection\r\n      this._cd.markForCheck();\r\n    }, delay);\r\n  }\r\n\r\n  /** close overlay */\r\n  private _hide(delay: number = this.hideDelay) {\r\n    this._detach();\r\n\r\n    // Cancel the delayed show if it is scheduled\r\n    if (this._showTimeoutId) {\r\n      clearTimeout(this._showTimeoutId);\r\n    }\r\n\r\n    this._hideTimeoutId = window.setTimeout(() => {\r\n      this.isOpen = false;\r\n\r\n      this._destroyed.next(true);\r\n    }, delay);\r\n  }\r\n\r\n  private _createOverlay(): OverlayRef {\r\n    if (this._overlayRef) {\r\n      return this._overlayRef;\r\n    }\r\n\r\n    this._portal = new TemplatePortal(this._menuRef, this._viewContainerRef);\r\n\r\n    const positionStrategy = this.overlay\r\n      .position()\r\n      .flexibleConnectedTo(this._originRef)\r\n      .withTransformOriginOn('.hxa-datepicker__control')\r\n      .withFlexibleDimensions(false);\r\n\r\n    this._overlayRef = this.overlay.create({\r\n      positionStrategy: positionStrategy,\r\n      panelClass: ['hxui-reset', 'hxa-datepicker__overlay'],\r\n      hasBackdrop: true,\r\n      backdropClass: 'cdk-overlay-transparent-backdrop',\r\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n    });\r\n\r\n    this._updatePosition();\r\n\r\n    this._overlayRef\r\n      .detachments()\r\n      .pipe(takeUntil(this._destroyed))\r\n      .subscribe(() => this._detach());\r\n\r\n    this._overlayRef.backdropClick().subscribe(() => this._hide());\r\n\r\n    const position = this._overlayRef.getConfig()\r\n      .positionStrategy as FlexibleConnectedPositionStrategy;\r\n    position.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(pos => {\r\n      if (pos.connectionPair.originX === 'start') {\r\n        this.placement = 'left';\r\n      } else if (pos.connectionPair.originX === 'end') {\r\n        this.placement = 'right';\r\n      }\r\n    });\r\n\r\n    return this._overlayRef;\r\n  }\r\n\r\n  private _updatePosition() {\r\n    const position = this._overlayRef!.getConfig()\r\n      .positionStrategy as FlexibleConnectedPositionStrategy;\r\n    const origin = this._getOrigin();\r\n    const overlay = this._getOverlayPosition();\r\n\r\n    position.withPositions([\r\n      { ...origin.main, ...overlay.main },\r\n      { ...origin.fallback, ...overlay.fallback },\r\n    ]);\r\n  }\r\n\r\n  /**\r\n   * Returns the origin position and a fallback position based on the user's position preference.\r\n   * The fallback position is the inverse of the origin (e.g. `'bottom' -> 'top'`).\r\n   */\r\n  private _getOrigin(): {\r\n    main: OriginConnectionPosition;\r\n    fallback: OriginConnectionPosition;\r\n  } {\r\n    const placement = this.placement;\r\n    let originPlacement: OriginConnectionPosition;\r\n\r\n    if (placement === 'top' || placement === 'bottom') {\r\n      originPlacement = {\r\n        originX: 'start',\r\n        originY: placement === 'top' ? 'top' : 'bottom',\r\n      };\r\n    } else if (placement === 'left') {\r\n      originPlacement = { originX: 'start', originY: 'center' };\r\n    } else if (placement === 'right') {\r\n      originPlacement = { originX: 'end', originY: 'center' };\r\n    } else {\r\n      console.error('Position error', placement);\r\n    }\r\n\r\n    const { x, y } = this._invertPosition(\r\n      originPlacement.originX,\r\n      originPlacement.originY\r\n    );\r\n\r\n    return {\r\n      main: originPlacement,\r\n      fallback: { originX: x, originY: y },\r\n    };\r\n  }\r\n\r\n  /** Returns the overlay position and a fallback position based on the user's preference */\r\n  private _getOverlayPosition(): {\r\n    main: OverlayConnectionPosition;\r\n    fallback: OverlayConnectionPosition;\r\n  } {\r\n    const placement = this.placement;\r\n    let overlayPlacement: OverlayConnectionPosition;\r\n\r\n    if (placement === 'top') {\r\n      overlayPlacement = { overlayX: 'start', overlayY: 'bottom' };\r\n    } else if (placement === 'bottom') {\r\n      overlayPlacement = { overlayX: 'start', overlayY: 'top' };\r\n    } else if (placement === 'left') {\r\n      overlayPlacement = { overlayX: 'end', overlayY: 'center' };\r\n    } else if (placement === 'right') {\r\n      overlayPlacement = { overlayX: 'start', overlayY: 'center' };\r\n    } else {\r\n      console.error('Could not find a position', placement);\r\n    }\r\n\r\n    const { x, y } = this._invertPosition(\r\n      overlayPlacement.overlayX,\r\n      overlayPlacement.overlayY\r\n    );\r\n\r\n    return {\r\n      main: overlayPlacement,\r\n      fallback: { overlayX: x, overlayY: y },\r\n    };\r\n  }\r\n\r\n  private _invertPosition(\r\n    x: HorizontalConnectionPos,\r\n    y: VerticalConnectionPos\r\n  ) {\r\n    if (this.placement === 'top' || this.placement === 'bottom') {\r\n      if (y === 'top') {\r\n        y = 'bottom';\r\n      } else if (y === 'bottom') {\r\n        y = 'top';\r\n      }\r\n    } else {\r\n      if (x === 'end') {\r\n        x = 'start';\r\n      } else if (x === 'start') {\r\n        x = 'end';\r\n      }\r\n    }\r\n\r\n    return { x, y };\r\n  }\r\n\r\n  private _detach() {\r\n    if (this._overlayRef && this._overlayRef.hasAttached()) {\r\n      this._overlayRef.detach();\r\n    }\r\n  }\r\n\r\n  // only applicable if hxaInputDirective is present\r\n  private _updateLabelStyle() {\r\n    if (this.datePickerFormInput) {\r\n      this.datePickerFormInput.styleLabel(true);\r\n    }\r\n  }\r\n}\r\n","<!-- INPUT -->\r\n<button\r\n  class=\"hxa-datepicker__button left\"\r\n  (click)=\"onButtonClick($event)\"\r\n  *ngIf=\"iconPlacement === 'left'\"\r\n  tabindex=\"-1\"\r\n>\r\n  <i class=\"{{ icon }}\"></i>\r\n</button>\r\n<div\r\n  class=\"hx-input-control hxa-datepicker__control\"\r\n  [class.is-danger]=\"(!isValid && datePickerForm.touched) || isDanger\"\r\n  [class.is-help-visible]=\"helpTextVisible\"\r\n  [class.is-warning]=\"isWarning && isValid && datePickerForm.touched\"\r\n>\r\n  <input\r\n    class=\"hx-input\"\r\n    type=\"text\"\r\n    #originRef\r\n    #datePickerForm=\"ngModel\"\r\n    hxaTextInput\r\n    [required]=\"required ? true : null\"\r\n    [disabled]=\"disabled\"\r\n    [readonly]=\"readonly ? true : null\"\r\n    [ngModel]=\"date | date: dateFormat\"\r\n    (change)=\"onChange($event)\"\r\n    (focus)=\"onFocused($event)\"\r\n    (blur)=\"onBlur($event)\"\r\n    (keydown.Tab)=\"onKeydownTab($event)\"\r\n    (keydown.Space)=\"onKeydownSpace($event)\"\r\n    [mask]=\"maskPattern\"\r\n    [clearIfNotMatch]=\"false\"\r\n  />\r\n  <label class=\"hx-label\" *ngIf=\"placeholder\">\r\n    {{ placeholder }} <ng-container *ngIf=\"required\">*</ng-container>\r\n  </label>\r\n  <div class=\"hx-help\">{{ helpText }}</div>\r\n</div>\r\n<button\r\n  class=\"hxa-datepicker__button right\"\r\n  (click)=\"onButtonClick($event)\"\r\n  *ngIf=\"iconPlacement === 'right'\"\r\n  tabindex=\"-1\"\r\n>\r\n  <i class=\"{{ icon }}\"></i>\r\n</button>\r\n\r\n<!-- OVERLAY -->\r\n<ng-template #menuRef>\r\n  <div role=\"dialog\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\r\n    <hx-tabset\r\n      class=\"hxa-tabset hx-bg-white\"\r\n      [class.is-tablist-hidden]=\"!interval\"\r\n      [justified]=\"true\"\r\n      contentCustomClass=\"pa-0\"\r\n    >\r\n      <hx-tab\r\n        heading=\"FROM TODAY\"\r\n        (select)=\"onTabSelect(0)\"\r\n        [active]=\"activeTabIndex === 0\"\r\n      >\r\n        <hxa-datepicker-interval\r\n          [selectedDate]=\"date\"\r\n          [selectedInterval]=\"selectedInterval\"\r\n          (update)=\"onIntervalSelection($event)\"\r\n          (cancel)=\"onIntervalCancel($event)\"\r\n        ></hxa-datepicker-interval>\r\n      </hx-tab>\r\n      <hx-tab\r\n        heading=\"SPECIFIC DATE\"\r\n        (select)=\"onTabSelect(1)\"\r\n        [active]=\"activeTabIndex === 1\"\r\n      >\r\n        <hxa-datepicker\r\n          [selectedDate]=\"date\"\r\n          [validators]=\"dateValidators\"\r\n          (update)=\"onDateSelection($event)\"\r\n        ></hxa-datepicker>\r\n      </hx-tab>\r\n    </hx-tabset>\r\n  </div>\r\n</ng-template>\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  DoCheck,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output\r\n} from '@angular/core';\r\nimport { DateSelectionType } from '../date-range-picker.model';\r\n\r\n@Component({\r\n  selector: 'hxa-date-range-picker-custom',\r\n  templateUrl: './date-range-picker-custom.component.html',\r\n  styleUrls: ['./date-range-picker-custom.component.scss']\r\n})\r\nexport class DateRangePickerCustomComponent implements OnInit, DoCheck {\r\n  @Input() currentFromDate: Date;\r\n  @Input() currentToDate: Date;\r\n  @Input() dateFormat: string;\r\n  @Output() newSelectedCustomDate = new EventEmitter<Date[]>();\r\n  @Output() closeDropdown = new EventEmitter<boolean>();\r\n\r\n  constructor(private ref: ChangeDetectorRef, private datePipe: DatePipe) {}\r\n\r\n  DateSelectionType = DateSelectionType;\r\n  newFromDate: Date;\r\n  newToDate: Date;\r\n\r\n  boundaryForFromDate: string;\r\n  boundaryForToDate: string;\r\n\r\n  ngOnInit() {\r\n    if (this.currentFromDate) {\r\n      this.newFromDate = this.currentFromDate;\r\n    } else {\r\n      this.newFromDate = new Date();\r\n    }\r\n    if (this.currentToDate) {\r\n      this.newToDate = this.currentToDate;\r\n    } else {\r\n      this.newToDate = new Date();\r\n    }\r\n    this.boundaryForToDate = this.datePipe.transform(\r\n      this.newFromDate,\r\n      'dd/MM/yyyy'\r\n    );\r\n    this.boundaryForFromDate = this.datePipe.transform(\r\n      this.newToDate,\r\n      'dd/MM/yyyy'\r\n    );\r\n    this.ref.markForCheck();\r\n  }\r\n\r\n  ngDoCheck(): void {\r\n    this.boundaryForToDate = this.datePipe.transform(\r\n      this.newFromDate,\r\n      'dd/MM/yyyy'\r\n    );\r\n    this.boundaryForFromDate = this.datePipe.transform(\r\n      this.newToDate,\r\n      'dd/MM/yyyy'\r\n    );\r\n  }\r\n\r\n  onCancel() {\r\n    this.closeDropdown.emit(true);\r\n  }\r\n\r\n  onSelected() {\r\n    // do nothing against failed basic validation\r\n    if (\r\n      this.newFromDate == null ||\r\n      this.newToDate == null ||\r\n      this.newFromDate > this.newToDate ||\r\n      this.newToDate < this.newFromDate\r\n    )\r\n      return null;\r\n\r\n    this.newSelectedCustomDate.emit([this.newFromDate, this.newToDate]);\r\n    this.closeDropdown.emit(true);\r\n  }\r\n}\r\n","<div class=\"px-4 pt-3\">\r\n  <hxa-datepicker-input\r\n    placement=\"bottom\"\r\n    [(ngModel)]=\"newFromDate\"\r\n    placeholder=\"From\"\r\n    [defaultToPresentDate]=\"false\"\r\n    [dateFormat]=\"dateFormat\"\r\n    [to]=\"boundaryForFromDate\"\r\n  ></hxa-datepicker-input>\r\n</div>\r\n<div class=\"px-4 py-3\">\r\n  <hxa-datepicker-input\r\n    placement=\"bottom\"\r\n    [(ngModel)]=\"newToDate\"\r\n    placeholder=\"To\"\r\n    [defaultToPresentDate]=\"false\"\r\n    [dateFormat]=\"dateFormat\"\r\n    [from]=\"boundaryForToDate\"\r\n  ></hxa-datepicker-input>\r\n</div>\r\n<div class=\"hx-date-range-picker-interval-footer pa-3\">\r\n  <div class=\"hx-columns\">\r\n    <div class=\"hx-column\">\r\n      <button id=\"custom_cancel\" class=\"hx-button\" (click)=\"onCancel()\">\r\n        Cancel\r\n      </button>\r\n    </div>\r\n    <div class=\"hx-column is-text-right\">\r\n      <button\r\n        id=\"custom_select\"\r\n        class=\"hx-button is-primary\"\r\n        (click)=\"onSelected()\"\r\n      >\r\n        Select\r\n      </button>\r\n    </div>\r\n  </div>\r\n</div>\r\n","export class IntervalItem {\r\n  displayName: string;\r\n  unit: string;\r\n  count: number;\r\n  id: string;\r\n\r\n  constructor(DisplayName: string, Unit: string, Count: number, ID: string) {\r\n    this.displayName = DisplayName;\r\n    this.unit = Unit;\r\n    this.count = Count;\r\n    this.id = ID\r\n  }\r\n}\r\n\r\n//Available options to for interval, can be expanded if needed\r\nexport const fullIntervalList: IntervalItem[] = [\r\n  new IntervalItem('Today', 'day', 0, 'today'),\r\n  new IntervalItem('Yesterdy', 'day', -1, 'yesterday'),\r\n  new IntervalItem('Tomorrow', 'day', 1, 'tomorrow'),\r\n  new IntervalItem('Last Year', 'year', -1, 'lastyear'),\r\n  new IntervalItem('Next Year', 'year', 1, 'nextyear'),\r\n  new IntervalItem('Last 6 Months', 'month', -6, 'last6month'),\r\n  new IntervalItem('Next 6 Months', 'month', 6, 'next6months'),\r\n  new IntervalItem('Last 3 Months', 'month', -3, 'last3months'),\r\n  new IntervalItem('Next 3 Months', 'month', 3, 'next3months'),\r\n  new IntervalItem('Last Month', 'month', -1, 'lastmonth'),\r\n  new IntervalItem('Next Month', 'month', 1, 'nextmonth'),\r\n  new IntervalItem('Last Week', 'day', -1 * 7, 'lastweek'),\r\n  new IntervalItem('Next Week', 'day', 1 * 7, 'nextweek'),\r\n  new IntervalItem('Last Fortnight', 'day', -1 * 14, 'lastfortnight'),\r\n  new IntervalItem('Next Fortnight', 'day', 1 * 14, 'nextfortnight')\r\n]\r\n","import {\r\n  AfterViewInit,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output\r\n} from '@angular/core';\r\nimport { IntervalItem } from '../interval-option-model';\r\n\r\n@Component({\r\n  selector: 'hxa-date-range-picker-interval',\r\n  templateUrl: './date-range-picker-interval.component.html',\r\n  styleUrls: ['./date-range-picker-interval.component.scss']\r\n})\r\nexport class DateRangePickerIntervalComponent implements AfterViewInit {\r\n  @Input() intervalOptionList: IntervalItem[];\r\n  @Input() currentSelectedInterval: IntervalItem;\r\n  @Output() newSelectedInterval = new EventEmitter<IntervalItem>();\r\n  @Output() closeDropdown = new EventEmitter<boolean>();\r\n\r\n  ngAfterViewInit() {\r\n    if (this.currentSelectedInterval) {\r\n      const element = document.getElementById(this.currentSelectedInterval.id);\r\n      element.classList.add('label-selected');\r\n    }\r\n  }\r\n\r\n  sendSelection(selectedItem: IntervalItem) {\r\n    this.newSelectedInterval.emit(selectedItem);\r\n    this.closeDropdown.emit(true);\r\n  }\r\n\r\n  mouseHover(e) {\r\n    if (this.currentSelectedInterval) {\r\n      const element = document.getElementById(this.currentSelectedInterval.id);\r\n      element.classList.remove('label-selected');\r\n    }\r\n  }\r\n}\r\n","<div class=\"dropdown-menu\" (mouseenter)=\"mouseHover($event)\">\r\n  <a class=\"hx-dropdown-item\" *ngFor=\"let intervalItem of intervalOptionList\" (click)=\"sendSelection(intervalItem)\"\r\n    id=\"{{intervalItem.id}}\">\r\n    {{intervalItem.displayName}}\r\n  </a>\r\n</div>\r\n","import {\r\n  Directive, ElementRef, HostBinding, Input, OnInit, Renderer2, TemplateRef,\r\n} from '@angular/core';\r\n\r\n\r\n@Directive({\r\n  selector: '[hxDropdownMenu],[hxaDropdownMenu]',\r\n  exportAs: 'hx-dropdown-menu'\r\n})\r\nexport class DropdownMenuDirective implements OnInit {\r\n\r\n  public templateRef: TemplateRef<any>;\r\n\r\n  constructor(_templateRef: TemplateRef<any>) {\r\n    this.templateRef = _templateRef;\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/** Default dropdown configuration */\r\n@Injectable()\r\nexport class DropdownConfig {\r\n  /** default dropdown auto closing behavior */\r\n  autoClose = true;\r\n  /** delay in ms before showing the dropdown after show is called */\r\n  public showDelay = 0;\r\n  /** delay in ms before hiding the dropdown after hide is called */\r\n  public hideDelay = 0;\r\n}\r\n","import {\r\n  FlexibleConnectedPositionStrategy,\r\n  HorizontalConnectionPos,\r\n  OriginConnectionPosition,\r\n  Overlay,\r\n  OverlayConnectionPosition,\r\n  OverlayRef,\r\n  VerticalConnectionPos\r\n} from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n  ContentChild,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  Renderer2,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { DropdownMenuDirective } from './dropdown-menu.directive';\r\nimport { DropdownConfig } from './dropdown.config';\r\n\r\n@Directive({\r\n  selector: '[hxaDropdown],[hxDropdown]',\r\n  exportAs: 'hx-dropdown, hxa-dropdown'\r\n})\r\nexport class DropdownDirective implements OnDestroy {\r\n  @ContentChild(DropdownMenuDirective) menu: DropdownMenuDirective;\r\n\r\n  _overlayRef: OverlayRef | null;\r\n  private _portal: TemplatePortal;\r\n  private readonly _destroyed = new Subject();\r\n  public isOpen = false;\r\n\r\n  @Input()\r\n  placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\r\n\r\n  private _autoClose = this._config.autoClose;\r\n  @Input()\r\n  set autoClose(value: boolean) {\r\n    this._autoClose = value;\r\n  }\r\n\r\n  get autoClose(): boolean {\r\n    return this._autoClose;\r\n  }\r\n\r\n  @Output() isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  @Output() onShown: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  @Output() onHidden: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  @Input()\r\n  isDisabled = false;\r\n\r\n  @Input()\r\n  showDelay = this._config.showDelay;\r\n\r\n  @Input()\r\n  hideDelay = this._config.hideDelay;\r\n\r\n  @Input()\r\n  maxWidthRelativeTo: string;\r\n\r\n  @Input()\r\n  minWidthRelativeTo: string;\r\n\r\n  @Input()\r\n  offsetY = 0;\r\n\r\n  @Input()\r\n  offsetX = 0;\r\n\r\n  @Input()\r\n  createClipPathMask = false;\r\n\r\n  constructor(\r\n    private _elementRef: ElementRef,\r\n    private _viewContainerRef: ViewContainerRef,\r\n    public overlay: Overlay,\r\n    public _config: DropdownConfig,\r\n    private renderer: Renderer2\r\n  ) {}\r\n\r\n  ngOnDestroy(): void {\r\n    if (this._overlayRef) {\r\n      this._overlayRef.dispose();\r\n      this._overlayRef = null;\r\n    }\r\n    this._destroyed.next(true);\r\n    this._destroyed.complete();\r\n  }\r\n\r\n  /**\r\n   * Toggles an element’s popover. This is considered a “manual” triggering of\r\n   * the popover.\r\n   */\r\n  toggle(value?: boolean): void {\r\n    if (this.isOpen || value === false) {\r\n      return this.hide();\r\n    }\r\n\r\n    return this.show();\r\n  }\r\n\r\n  show(delay: number = this.showDelay) {\r\n    if (this.isDisabled || this.isOpen) {\r\n      return;\r\n    }\r\n\r\n    const overlayRef = this._createOverlay();\r\n    this._detach();\r\n    overlayRef.attach(this._portal);\r\n\r\n    if (this.createClipPathMask) {\r\n      this._addClipPathMaskStyles();\r\n    }\r\n\r\n    this._setWidthsRelativeTo(overlayRef);\r\n    this.isOpen = true;\r\n    this.isOpenChange.emit(this.isOpen);\r\n    this.onShown.emit();\r\n  }\r\n\r\n  hide(delay: number = this.hideDelay) {\r\n    this._detach();\r\n    this.isOpen = false;\r\n    this.isOpenChange.emit(this.isOpen);\r\n    this.onHidden.emit();\r\n  }\r\n\r\n  private _createOverlay(): OverlayRef {\r\n    if (this._overlayRef) {\r\n      return this._overlayRef;\r\n    }\r\n\r\n    this._portal = new TemplatePortal(\r\n      this.menu.templateRef,\r\n      this._viewContainerRef\r\n    );\r\n\r\n    const positionStrategy = this.overlay\r\n      .position()\r\n      .flexibleConnectedTo(this._elementRef)\r\n      .withFlexibleDimensions(false)\r\n      .withDefaultOffsetX(this.offsetX)\r\n      .withDefaultOffsetY(this.offsetY)\r\n      .withPositions([\r\n        { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'top' }\r\n      ])\r\n      .withTransformOriginOn('.hxa-dropdown-control');\r\n\r\n    this._overlayRef = this.overlay.create({\r\n      positionStrategy: positionStrategy,\r\n      panelClass: [\r\n        'hxui-reset',\r\n        'hxa-dropdown-panel',\r\n        'is-open',\r\n        this.minWidthRelativeTo ? 'is-fluid-min-width' : 'not-fuild-min-width'\r\n      ],\r\n      hasBackdrop: true,\r\n      backdropClass: 'cdk-overlay-transparent-backdrop'\r\n    });\r\n\r\n    this._updatePosition();\r\n\r\n    this._overlayRef\r\n      .detachments()\r\n      .pipe(takeUntil(this._destroyed))\r\n      .subscribe(() => this._detach());\r\n\r\n    this._overlayRef.backdropClick().subscribe(() => this.hide());\r\n\r\n    const position = this._overlayRef.getConfig()\r\n      .positionStrategy as FlexibleConnectedPositionStrategy;\r\n    position.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(pos => {\r\n      if (pos.connectionPair.originX === 'start') {\r\n        this.placement = 'left';\r\n      } else if (pos.connectionPair.originX === 'end') {\r\n        this.placement = 'right';\r\n      } else if (pos.connectionPair.originY === 'top') {\r\n        this.placement = 'top';\r\n      } else if (pos.connectionPair.originY === 'bottom') {\r\n        this.placement = 'bottom';\r\n      }\r\n    });\r\n\r\n    return this._overlayRef;\r\n  }\r\n\r\n  private _detach() {\r\n    if (this._overlayRef && this._overlayRef.hasAttached()) {\r\n      this._overlayRef.detach();\r\n    }\r\n  }\r\n\r\n  private _setWidthsRelativeTo(overlayRef: OverlayRef) {\r\n    if (this.maxWidthRelativeTo && this.minWidthRelativeTo) {\r\n      const elem: Element = document.getElementById(this.maxWidthRelativeTo);\r\n      overlayRef.updateSize({\r\n        minWidth: elem.clientWidth,\r\n        maxWidth: elem.clientWidth\r\n      });\r\n    } else if (this.maxWidthRelativeTo) {\r\n      const elem: Element = document.getElementById(this.maxWidthRelativeTo);\r\n      overlayRef.updateSize({ maxWidth: elem.clientWidth });\r\n    } else if (this.minWidthRelativeTo) {\r\n      const elem: Element = document.getElementById(this.minWidthRelativeTo);\r\n      overlayRef.updateSize({ minWidth: elem.clientWidth });\r\n    }\r\n  }\r\n\r\n  private _updatePosition() {\r\n    const position = this._overlayRef!.getConfig()\r\n      .positionStrategy as FlexibleConnectedPositionStrategy;\r\n    const origin = this._getOrigin();\r\n    const overlay = this._getOverlayPosition();\r\n\r\n    position.withPositions([\r\n      { ...origin.main, ...overlay.main },\r\n      { ...origin.fallback, ...overlay.fallback }\r\n    ]);\r\n  }\r\n\r\n  /**\r\n   * Returns the origin position and a fallback position based on the user's position preference.\r\n   * The fallback position is the inverse of the origin (e.g. `'bottom' -> 'top'`).\r\n   */\r\n  private _getOrigin(): {\r\n    main: OriginConnectionPosition;\r\n    fallback: OriginConnectionPosition;\r\n  } {\r\n    const placement = this.placement;\r\n    let originPlacement: OriginConnectionPosition;\r\n\r\n    if (placement === 'top' || placement === 'bottom') {\r\n      originPlacement = {\r\n        originX: 'start',\r\n        originY: placement === 'top' ? 'top' : 'bottom'\r\n      };\r\n    } else if (placement === 'left') {\r\n      originPlacement = { originX: 'start', originY: 'center' };\r\n    } else if (placement === 'right') {\r\n      originPlacement = { originX: 'end', originY: 'center' };\r\n    } else {\r\n      console.error('Position error', placement);\r\n    }\r\n\r\n    const { x, y } = this._invertPosition(\r\n      originPlacement.originX,\r\n      originPlacement.originY\r\n    );\r\n\r\n    return {\r\n      main: originPlacement,\r\n      fallback: { originX: x, originY: y }\r\n    };\r\n  }\r\n\r\n  /** Returns the overlay position and a fallback position based on the user's preference */\r\n  private _getOverlayPosition(): {\r\n    main: OverlayConnectionPosition;\r\n    fallback: OverlayConnectionPosition;\r\n  } {\r\n    const placement = this.placement;\r\n    let overlayPlacement: OverlayConnectionPosition;\r\n\r\n    if (placement === 'top') {\r\n      overlayPlacement = { overlayX: 'start', overlayY: 'bottom' };\r\n    } else if (placement === 'bottom') {\r\n      overlayPlacement = { overlayX: 'start', overlayY: 'top' };\r\n    } else if (placement === 'left') {\r\n      overlayPlacement = { overlayX: 'end', overlayY: 'center' };\r\n    } else if (placement === 'right') {\r\n      overlayPlacement = { overlayX: 'start', overlayY: 'center' };\r\n    } else {\r\n      console.error('Could not find a position', placement);\r\n    }\r\n\r\n    const { x, y } = this._invertPosition(\r\n      overlayPlacement.overlayX,\r\n      overlayPlacement.overlayY\r\n    );\r\n\r\n    return {\r\n      main: overlayPlacement,\r\n      fallback: { overlayX: x, overlayY: y }\r\n    };\r\n  }\r\n\r\n  private _invertPosition(\r\n    x: HorizontalConnectionPos,\r\n    y: VerticalConnectionPos\r\n  ) {\r\n    if (this.placement === 'top' || this.placement === 'bottom') {\r\n      if (y === 'top') {\r\n        y = 'bottom';\r\n      } else if (y === 'bottom') {\r\n        y = 'top';\r\n      }\r\n    } else {\r\n      if (x === 'end') {\r\n        x = 'start';\r\n      } else if (x === 'start') {\r\n        x = 'end';\r\n      }\r\n    }\r\n\r\n    return { x, y };\r\n  }\r\n\r\n  // Create a clip path mask in the backdrop. The mask is a rectangle, the size of the viewcontainer\r\n  // This enables the user to interact with the contents of the viewcontainer without closing the dropdown\r\n  private _addClipPathMaskStyles() {\r\n    const HTMLEl = this._overlayRef.backdropElement;\r\n    const viewRefNativeEl = this._viewContainerRef.element.nativeElement;\r\n    const elRect = viewRefNativeEl.getBoundingClientRect();\r\n    if (elRect) {\r\n      const clipPathStyle = `polygon(0% 0%, 0% 100%, ${elRect.left}px 100%, ${elRect.left}px ${elRect.top}px, ${elRect.right}px ${elRect.top}px, ${elRect.right}px ${elRect.bottom}px, ${elRect.left}px ${elRect.bottom}px, ${elRect.left}px 100%, 100% 100%, 100% 0%)`;\r\n      this.renderer.setStyle(HTMLEl, 'clip-path', clipPathStyle);\r\n    }\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/** Default values provider for calendar */\r\n@Injectable()\r\nexport class DateRangePickerConfig {\r\n  /** calendar placement, supported positions: 'top', 'bottom', 'left', 'right' */\r\n  public placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\r\n  /** delay in ms before showing the calendar after show is called */\r\n  public showDelay = 0;\r\n  /** delay in ms before hiding the calendar after hide is called */\r\n  public hideDelay = 0;\r\n  public tabSelected: string;\r\n  public selectedDueDateInterval: string = undefined;\r\n}\r\n","import {\r\n  Directive, ElementRef, EventEmitter, HostBinding, HostListener, OnDestroy, Output, Renderer2\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport {DropdownDirective} from './dropdown.directive';\r\n\r\n\r\n@Directive({\r\n  selector: '[hxDropdownToggle],[hxaDropdownToggle]',\r\n  exportAs: 'hx-dropdown-toggle'\r\n})\r\nexport class DropdownToggleDirective implements OnDestroy {\r\n\r\n\r\n  isOpenChange = new EventEmitter<boolean>();\r\n\r\n\r\n  @HostBinding('attr.disabled')\r\n  isDisabled: boolean;\r\n\r\n  @HostBinding('class.is-active')\r\n  isOpen: boolean;\r\n\r\n  @HostListener('click', ['$event'])\r\n  onClick(event): void {\r\n    this.dropdown.show();\r\n  }\r\n\r\n\r\n  @HostListener('keyup.esc')\r\n  onEsc(): void {\r\n    this.dropdown.hide();\r\n  }\r\n\r\n  constructor(public elementRef: ElementRef,\r\n              private dropdown: DropdownDirective) {\r\n  }\r\n\r\n  ngOnDestroy() {}\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { DropdownDirective } from '../dropdown/dropdown.directive';\r\nimport { DateRangePickerConfig } from './date-range-picker.config';\r\nimport {\r\n  DateRange,\r\n  DateSelectionType,\r\n  DisplayMode\r\n} from './date-range-picker.model';\r\nimport { fullIntervalList, IntervalItem } from './interval-option-model';\r\n\r\n@Component({\r\n  selector: 'hxa-date-range-picker',\r\n  templateUrl: './date-range-picker.component.html',\r\n  styleUrls: ['./date-range-picker.component.scss']\r\n})\r\nexport class DateRangePickerComponent implements OnInit {\r\n  @ViewChild('dropdown', { static: true }) dropdown: DropdownDirective;\r\n\r\n  /** Specifies interval options displayed under interval selection tab. */\r\n  @Input() intervalOptions: string[];\r\n\r\n  /** This attribute specifies the placeholder value of the components input element. */\r\n  @Input() placeholder = 'Date';\r\n\r\n  /** Adds the disabled html attribute to the components dropdown element. */\r\n  @Input() disabled = false;\r\n\r\n  /**\r\n   * Indicates that dropdown will be closed on item or document\r\n   * click, and after pressing ESC.\r\n   */\r\n  @Input() autoClose = true;\r\n\r\n  /** Specifies the position the datepicker opens against the input element */\r\n  @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\r\n\r\n  /** Specifies how tab(s) will be displayed. */\r\n  @Input() displayMode: DisplayMode = DisplayMode.showTab;\r\n\r\n  /**\r\n   * A JavaScript Date object formatting string, formats the display\r\n   * of components current value.\r\n   */\r\n  @Input() dateFormat = 'dd/MM/yyyy';\r\n\r\n  @Input() defaultDateRange: DateRange = {\r\n    fromDate: new Date(),\r\n    toDate: new Date()\r\n  };\r\n\r\n  /** Specifies whether caret down icon is displayed to right of input */\r\n  @Input() showCaretDown = true;\r\n\r\n  /**\r\n   * Emits a Date Range Object containing fromDate and toDate\r\n   * selected from the DateRangePicker.\r\n   */\r\n  @Output() onDateRangeSelected = new EventEmitter<DateRange>();\r\n\r\n  constructor(\r\n    private datePipe: DatePipe,\r\n    private dateRangePickerConfig: DateRangePickerConfig\r\n  ) {}\r\n\r\n  // import to DateSElectionType into the instance of this class\r\n  DateSelectionType = DateSelectionType;\r\n  currentTab: DateSelectionType = DateSelectionType.interval;\r\n  fromDate: Date = new Date();\r\n  toDate: Date = new Date();\r\n  _displayRange: string;\r\n\r\n  showIntervalOnly: boolean;\r\n  showCustomOnly: boolean;\r\n  showTab: boolean;\r\n\r\n  selectedInterval = new IntervalItem('Today', 'day', 0, 'today');\r\n\r\n  intervalList: IntervalItem[];\r\n\r\n  ngOnInit() {\r\n    this.setInitialDateRange();\r\n    this.showTab = this.displayMode === DisplayMode.showTab;\r\n    this.showIntervalOnly = this.displayMode === DisplayMode.showIntervalOnly;\r\n    this.showCustomOnly = this.displayMode === DisplayMode.showCustomOnly;\r\n    this.generateIntervalOptionItems(this.intervalOptions || []);\r\n  }\r\n\r\n  setInitialDateRange() {\r\n    this.defaultDateRange = this.defaultDateRange || {\r\n      fromDate: new Date(),\r\n      toDate: new Date()\r\n    };\r\n    this.dateFormat = this.dateFormat || 'dd/MM/yyyy';\r\n    this.fromDate = this.defaultDateRange.fromDate;\r\n    this.toDate = this.defaultDateRange.toDate;\r\n    this._displayRange = this.createDateRange();\r\n  }\r\n\r\n  resetDateRange() {\r\n    this.fromDate = new Date();\r\n    this.toDate = new Date();\r\n    this._displayRange = this.createDateRange();\r\n  }\r\n\r\n  generateIntervalOptionItems(itemList: string[]) {\r\n    this.intervalList = fullIntervalList.filter(item =>\r\n      itemList.includes(item.displayName)\r\n    );\r\n  }\r\n\r\n  hide(closeDropdown: boolean) {\r\n    if (closeDropdown) {\r\n      this.dropdown.hide();\r\n    }\r\n  }\r\n\r\n  toggle() {\r\n    this.dropdown.toggle();\r\n  }\r\n\r\n  onCustomDateSelection(newCustomDate: Date[]) {\r\n    // do not update range if undefined, null[], from > to\r\n    if (\r\n      !newCustomDate ||\r\n      newCustomDate[0] == null ||\r\n      newCustomDate[1] == null ||\r\n      newCustomDate[0] > newCustomDate[1]\r\n    ) {\r\n      return null;\r\n    }\r\n\r\n    this.fromDate = newCustomDate[0];\r\n    this.toDate = newCustomDate[1];\r\n    this._displayRange = this.createDateRange();\r\n    this.onDateRangeSelected.emit(<DateRange>{\r\n      fromDate: this.fromDate,\r\n      toDate: this.toDate\r\n    });\r\n    this.currentTab = DateSelectionType.custom;\r\n    this.selectedInterval = null;\r\n  }\r\n\r\n  onIntervalSelection(selectedItem: IntervalItem) {\r\n    if (selectedItem) {\r\n      this.selectedInterval = selectedItem;\r\n      const today: Date = new Date();\r\n      let calculatedDate: Date;\r\n      if (selectedItem.unit === 'day') {\r\n        calculatedDate = new Date(\r\n          today.getFullYear(),\r\n          today.getMonth(),\r\n          today.getDate() + selectedItem.count\r\n        );\r\n      } else if (selectedItem.unit === 'month') {\r\n        calculatedDate = new Date(\r\n          today.getFullYear(),\r\n          today.getMonth() + selectedItem.count,\r\n          today.getDate()\r\n        );\r\n      } else if (selectedItem.unit === 'year') {\r\n        calculatedDate = new Date(\r\n          today.getFullYear() + selectedItem.count,\r\n          today.getMonth(),\r\n          today.getDate()\r\n        );\r\n      }\r\n\r\n      if (calculatedDate >= today) {\r\n        this.fromDate = today;\r\n        this.toDate = calculatedDate;\r\n      } else {\r\n        this.fromDate = calculatedDate;\r\n        this.toDate = today;\r\n      }\r\n      this._displayRange = this.createDateRange();\r\n\r\n      this.onDateRangeSelected.emit(<DateRange>{\r\n        fromDate: this.fromDate,\r\n        toDate: this.toDate\r\n      });\r\n      this.currentTab = DateSelectionType.interval;\r\n    }\r\n  }\r\n\r\n  createDateRange(): string {\r\n    const fromDateStr = this.datePipe.transform(this.fromDate, this.dateFormat);\r\n    const toDateStr = this.datePipe.transform(this.toDate, this.dateFormat);\r\n    if (fromDateStr === toDateStr) {\r\n      return fromDateStr;\r\n    }\r\n    return `${fromDateStr} - ${toDateStr}`;\r\n  }\r\n}\r\n","<div\r\n  class=\"hx-dropdown\"\r\n  hxDropdown\r\n  #dropdown=\"hx-dropdown\"\r\n  [autoClose]=\"autoClose\"\r\n  [isDisabled]=\"disabled\"\r\n  [placement]=\"placement\"\r\n>\r\n  <button class=\"hx-button\" hxDropdownToggle type=\"button\">\r\n    <span>\r\n      <span class=\"is-text-weight-light\" *ngIf=\"!!placeholder\">\r\n        {{ placeholder }}: \r\n      </span>\r\n      <span class=\"is-text-weight-bolder\">{{ _displayRange }}</span>\r\n    </span>\r\n    <span class=\"hx-icon-control\" *ngIf=\"showCaretDown\">\r\n      <i class=\"icon icon-caret-down\"></i>\r\n    </span>\r\n  </button>\r\n  <div \r\n    class=\"hx-dropdown-menu dropdown-menu-wider py-0 px-0\" \r\n    *hxDropdownMenu\r\n  >\r\n    <div class=\"hxa-tabs\" *ngIf=\"showTab\">\r\n      <hx-tabset [justified]=\"true\" contentCustomClass=\"pa-0\">\r\n        <hx-tab\r\n          heading=\"INTERVAL\"\r\n          [active]=\"currentTab === DateSelectionType.interval\"\r\n        >\r\n          <hxa-date-range-picker-interval\r\n            [intervalOptionList]=\"intervalList\"\r\n            [currentSelectedInterval]=\"selectedInterval\"\r\n            (newSelectedInterval)=\"onIntervalSelection($event)\"\r\n            (closeDropdown)=\"hide($event)\"\r\n          ></hxa-date-range-picker-interval>\r\n        </hx-tab>\r\n        <hx-tab\r\n          heading=\"CUSTOM\"\r\n          [active]=\"currentTab === DateSelectionType.custom\"\r\n        >\r\n          <hxa-date-range-picker-custom\r\n            [currentFromDate]=\"fromDate\"\r\n            [currentToDate]=\"toDate\"\r\n            [dateFormat]=\"dateFormat\"\r\n            (newSelectedCustomDate)=\"onCustomDateSelection($event)\"\r\n            (closeDropdown)=\"hide($event)\"\r\n          ></hxa-date-range-picker-custom>\r\n        </hx-tab>\r\n      </hx-tabset>\r\n    </div>\r\n    <div \r\n      *ngIf=\"!showTab && showIntervalOnly\" \r\n      class=\"internal-custom-tab pa-0\"\r\n    >\r\n      <hxa-date-range-picker-interval\r\n        [intervalOptionList]=\"intervalList\"\r\n        [currentSelectedInterval]=\"selectedInterval\"\r\n        (newSelectedInterval)=\"onIntervalSelection($event)\"\r\n        (closeDropdown)=\"hide($event)\"\r\n      ></hxa-date-range-picker-interval>\r\n    </div>\r\n    <div\r\n      *ngIf=\"!showTab && showCustomOnly\"\r\n      class=\"internal-custom-tab px-0 pb-0\"\r\n    >\r\n      <hxa-date-range-picker-custom\r\n        [currentFromDate]=\"fromDate\"\r\n        [currentToDate]=\"toDate\"\r\n        [dateFormat]=\"dateFormat\"\r\n        (newSelectedCustomDate)=\"onCustomDateSelection($event)\"\r\n        (closeDropdown)=\"hide($event)\"\r\n      ></hxa-date-range-picker-custom>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\nimport { TabDirective } from './tab.directive';\r\n\r\n/** Should be used to mark <template> element as a template for tab heading */\r\n@Directive({selector: '[hxTabHeading]'})\r\nexport class TabHeadingDirective {\r\n  public templateRef: TemplateRef<any>;\r\n\r\n  public constructor(templateRef: TemplateRef<any>, tab: TabDirective) {\r\n    tab.headingRef = templateRef;\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\n\r\nimport { NgTranscludeDirective } from './ng-transclude.directive';\r\nimport { TabHeadingDirective } from './tab-heading.directive';\r\nimport { TabDirective } from './tab.directive';\r\nimport { TabsetComponent } from './tabset.component';\r\nimport { TabsetConfig } from './tabset.config';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [NgTranscludeDirective, TabDirective, TabsetComponent, TabHeadingDirective],\r\n  exports: [TabDirective, TabsetComponent, TabHeadingDirective, NgTranscludeDirective]\r\n})\r\nexport class TabsModule {\r\n  public static forRoot(): ModuleWithProviders<TabsModule> {\r\n    return {\r\n      ngModule: TabsModule,\r\n      providers: [TabsetConfig]\r\n    };\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TextInputDirective } from './text-input.directive';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [TextInputDirective],\r\n  exports: [TextInputDirective]\r\n})\r\nexport class TextInputModule {}\r\n","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { TabsModule } from '../tabs/tabs.module';\r\nimport { TextInputModule } from '../text-input/text-input.module';\r\nimport { DatepickerFormComponent } from './datepicker-form.component';\r\nimport { DatepickerIntervalComponent } from './datepicker-interval.component';\r\nimport { DatepickerComponent } from './datepicker.component';\r\nimport { DatepickerConfig } from './datepicker.config';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    TabsModule,\r\n    NgxMaskModule,\r\n    TextInputModule,\r\n    OverlayModule,\r\n    A11yModule,\r\n  ],\r\n  declarations: [\r\n    DatepickerComponent,\r\n    DatepickerFormComponent,\r\n    DatepickerIntervalComponent,\r\n  ],\r\n  exports: [DatepickerFormComponent],\r\n})\r\nexport class DatepickerModule {\r\n  public static forRoot(): ModuleWithProviders<DatepickerModule> {\r\n    return { ngModule: DatepickerModule, providers: [DatepickerConfig] };\r\n  }\r\n}\r\n","import {Directive, ElementRef, EventEmitter, HostListener, TemplateRef} from '@angular/core';\r\nimport {DropdownDirective} from './dropdown.directive';\r\n\r\n@Directive({\r\n  selector: '[hxDropdownItem],[hxaDropdownItem]'\r\n})\r\nexport class DropdownItemDirective {\r\n\r\n  @HostListener('click', ['$event'])\r\n  onClick(event): void {\r\n    if (this.dropdown.autoClose) {\r\n      this.dropdown.hide();\r\n    }\r\n  }\r\n\r\n  constructor(public elementRef: ElementRef,\r\n              private dropdown: DropdownDirective) {\r\n  }\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { DropdownMenuDirective } from './dropdown-menu.directive';\r\nimport { DropdownToggleDirective } from './dropdown-toggle.directive';\r\nimport { DropdownConfig } from './dropdown.config';\r\nimport { DropdownDirective } from './dropdown.directive';\r\nimport {DropdownItemDirective} from './dropdown-item.directive';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    DropdownMenuDirective,\r\n    DropdownToggleDirective,\r\n    DropdownDirective,\r\n    DropdownItemDirective\r\n  ],\r\n  exports: [\r\n    DropdownMenuDirective,\r\n    DropdownToggleDirective,\r\n    DropdownDirective,\r\n    DropdownItemDirective\r\n  ]\r\n})\r\nexport class DropdownModule {\r\n  public static forRoot(config?: any): ModuleWithProviders<DropdownModule> {\r\n    return {\r\n      ngModule: DropdownModule, providers: [\r\n        {provide: DropdownConfig, useValue: config ? config : {autoClose: true}}\r\n      ]\r\n    };\r\n  };\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { DatepickerModule } from '../datepicker/datepicker.module';\r\nimport { DropdownModule } from '../dropdown/dropdown.module';\r\nimport { TabsModule } from '../tabs/tabs.module';\r\nimport { DateRangePickerCustomComponent } from './date-range-picker-custom/date-range-picker-custom.component';\r\nimport { DateRangePickerIntervalComponent } from './date-range-picker-interval/date-range-picker-interval.component';\r\nimport { DateRangePickerComponent } from './date-range-picker.component';\r\nimport { DateRangePickerConfig } from './date-range-picker.config';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    TabsModule,\r\n    DatepickerModule,\r\n    DropdownModule\r\n  ],\r\n  declarations: [\r\n    DateRangePickerComponent,\r\n    DateRangePickerIntervalComponent,\r\n    DateRangePickerCustomComponent\r\n  ],\r\n  exports: [DateRangePickerComponent]\r\n})\r\nexport class DateRangePickerModule {\r\n  public static forRoot(): ModuleWithProviders<DateRangePickerModule> {\r\n    return {\r\n      ngModule: DateRangePickerModule,\r\n      providers: [DateRangePickerConfig]\r\n    };\r\n  }\r\n}\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport {Injectable} from \"@angular/core\";\r\n\r\nexport class DialogOverlayRef {\r\n\r\n  constructor(private overlayRef: OverlayRef) { }\r\n\r\n  close(): void {\r\n    this.overlayRef.dispose();\r\n  }\r\n}\r\n","import {ComponentRef, Inject, Injectable, Injector, Optional} from '@angular/core';\r\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\r\nimport {DialogOverlayRef} from './dialog-overlay.ref';\r\nimport {ComponentPortal, PortalInjector} from '@angular/cdk/portal';\r\nimport {FocusTrapFactory} from '@angular/cdk/a11y';\r\nimport {DOCUMENT} from '@angular/common';\r\n\r\ninterface DialogConfig {\r\n  panelClass?: string;\r\n  hasBackdrop?: boolean;\r\n  backdropClass?: string;\r\n  backdropClickable?: boolean;\r\n}\r\n\r\nconst DEFAULT_CONFIG: DialogConfig = {\r\n  hasBackdrop: true,\r\n  backdropClass: 'dark-backdrop',\r\n  panelClass: 'hx-modal-panel',\r\n  backdropClickable: true\r\n};\r\n\r\n@Injectable()\r\nexport class DialogService {\r\n\r\n  private focusTrap;\r\n  private componentNativeElement;\r\n\r\n  constructor(\r\n    private injector: Injector,\r\n    private overlay: Overlay,\r\n    private focusTrapFactory: FocusTrapFactory\r\n  ) {}\r\n\r\n\r\n  /**\r\n   * Create component dynamically\r\n   */\r\n  open(component: any, config: DialogConfig = {}, parameters?: Object): DialogOverlayRef {\r\n\r\n    // Override default configuration\r\n    const dialogConfig = { ...DEFAULT_CONFIG, ...config };\r\n\r\n    // Returns an OverlayRef (which is a PortalHost)\r\n    const overlayRef = this.createOverlay(dialogConfig);\r\n\r\n    const dialogRef = new DialogOverlayRef(overlayRef);\r\n\r\n    // Create ComponentPortal that can be attached to a PortalHost\r\n    // and then attach ComponentPortal to PortalHost\r\n    const containerRef = this.attachDialogContainer(component, overlayRef, dialogConfig, dialogRef);\r\n\r\n    // pass the @Input parameters to the instance\r\n    Object.assign(containerRef.instance, parameters);\r\n\r\n    // Subscribe to a stream that emits when the backdrop was clicked\r\n    if (dialogConfig.backdropClickable) {\r\n      overlayRef.backdropClick().subscribe(_ => dialogRef.close());\r\n    }\r\n\r\n    // create and manage focus trap\r\n    this.componentNativeElement = containerRef.location.nativeElement;\r\n    this.trapFocus();\r\n\r\n    return dialogRef;\r\n  }\r\n\r\n  private createOverlay(config: DialogConfig) {\r\n    // Returns an OverlayConfig\r\n    const overlayConfig = this.getOverlayConfig(config);\r\n\r\n    // Returns an OverlayRef\r\n    return this.overlay.create(overlayConfig);\r\n  }\r\n\r\n\r\n  private getOverlayConfig(config: DialogConfig): OverlayConfig {\r\n    const positionStrategy = this.overlay.position()\r\n      .global()\r\n      .centerHorizontally()\r\n      .centerVertically();\r\n\r\n    const overlayConfig = new OverlayConfig({\r\n      hasBackdrop: config.hasBackdrop,\r\n      backdropClass: config.backdropClass,\r\n      panelClass: config.panelClass,\r\n      scrollStrategy: this.overlay.scrollStrategies.block(),\r\n      positionStrategy\r\n    });\r\n\r\n    return overlayConfig;\r\n  }\r\n\r\n  private createInjector(dialogRef: DialogOverlayRef): PortalInjector {\r\n    // Instantiate new WeakMap for our custom injection tokens\r\n    const injectionTokens = new WeakMap();\r\n\r\n    // Set custom injection tokens\r\n    injectionTokens.set(DialogOverlayRef, dialogRef);\r\n\r\n    // Instantiate new PortalInjector\r\n    return new PortalInjector(this.injector, injectionTokens);\r\n  }\r\n\r\n  private attachDialogContainer(component: any, overlayRef: OverlayRef, config: DialogConfig, dialogRef: DialogOverlayRef) {\r\n    const injector = this.createInjector(dialogRef);\r\n\r\n    const containerPortal = new ComponentPortal(component, null, injector);\r\n    const containerRef: ComponentRef<any> = overlayRef.attach(containerPortal);\r\n\r\n    return containerRef;\r\n  }\r\n\r\n  private trapFocus() {\r\n    this.focusTrap = this.focusTrapFactory.create(this.componentNativeElement);\r\n    this.focusTrap.focusInitialElementWhenReady();\r\n  }\r\n\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { DialogService } from './dialog.service';\r\n\r\n@NgModule({})\r\nexport class DialogModule {\r\n  public static forRoot(): ModuleWithProviders<DialogModule> {\r\n    return {\r\n      ngModule: DialogModule,\r\n      providers: [DialogService]\r\n    };\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Size} from '../enums';\r\n\r\n\r\n/** Default empty state configuration */\r\n@Injectable()\r\nexport class EmptyStateConfig {\r\n  size = Size.Default;\r\n}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {IEmptyStateAction} from './empty-state-action.interface';\r\nimport {EmptyStateConfig} from './empty-state.config';\r\n\r\n@Component({\r\n  selector: 'hxa-empty-state',\r\n  templateUrl: './empty-state.component.html',\r\n  styles: [\r\n    ':host { min-height: 12rem; width:100%; display:flex; flex-direction: column; flex:1;}',\r\n    ':host .emptyState { display:flex; flex-direction: column; justify-content: center; align-items: center; flex:1; margin: 1rem 0; }',\r\n    ':host .emptyState__icon { height:3.5rem; width:3.5rem; font-size:64px; margin: 1rem; }',\r\n    ':host .emptyState__msg { margin: 1rem; }',\r\n    ':host .emptyState__actions{ margin: 1.5rem 1rem ; }',\r\n    ':host .emptyState__actions::ng-deep .hx-button { margin: 0 .5rem; }'\r\n  ]\r\n})\r\nexport class EmptyStateComponent implements OnInit {\r\n\r\n  @Input() icon: string;\r\n  @Input() msg: string;\r\n  @Input() actions: IEmptyStateAction[] = [];\r\n\r\n  constructor(private config: EmptyStateConfig) { }\r\n\r\n  ngOnInit() {}\r\n\r\n  /**\r\n   * Calls the parsed callback with optional arguments\r\n   * @param event\r\n   * @param cb\r\n   */\r\n  executeCallback(event: any, cb: any[]) {\r\n    if (cb.length) {\r\n      if (cb.length === 1) { // if callback has no arguments\r\n        cb[0]();\r\n      } else { // if callback has 1 or more arguments\r\n        const args: any[] = [];\r\n        for (let i = 1; i < cb.length; i++) {\r\n          args.push(cb[i]);\r\n        }\r\n        cb[0].apply(this, args);\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n}\r\n","<div class=\"hxui-reset emptyState\">\r\n  <i class=\"hx-icon is-lightest emptyState__icon\" [ngClass]=\"icon\"></i>\r\n  <div class=\"emptySate__msg is-lighter\">{{msg}}</div>\r\n  <div class=\"emptyState__actions hx-flex\">\r\n    <button *ngFor=\"let action of actions\"\r\n            class=\"hx-button is-small\"\r\n            [attr.id]=\"action.id\"\r\n            [ngClass]=\"action.css\"\r\n            (click)='executeCallback($event,action.callback)'>{{action.label}}</button>\r\n    <ng-content></ng-content>\r\n  </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { EmptyStateComponent } from './empty-state.component';\r\nimport { EmptyStateConfig } from './empty-state.config';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [EmptyStateComponent],\r\n  exports: [EmptyStateComponent]\r\n})\r\nexport class EmptyStateModule {\r\n  public static forRoot(): ModuleWithProviders<EmptyStateModule> {\r\n    return {\r\n      ngModule: EmptyStateModule,\r\n      providers: [EmptyStateConfig]\r\n    };\r\n  }\r\n}\r\n","export enum FilterType {\r\n  SingleSelect,\r\n  Search,\r\n  MultiSelect,\r\n  DateRange\r\n}\r\n","import {\r\n  animate,\r\n  state,\r\n  style,\r\n  transition,\r\n  trigger,\r\n} from '@angular/animations';\r\nimport {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  QueryList,\r\n  ViewChild,\r\n  ViewChildren,\r\n} from '@angular/core';\r\nimport { DateRange } from '../date-range-picker/date-range-picker.model';\r\nimport { DropdownDirective } from '../dropdown/dropdown.directive';\r\nimport { IFilterOption } from './filters-config.interface';\r\nimport { FilterType } from './filters-type.enum';\r\nimport { FiltersModel } from './filters.model';\r\n\r\ntype PaneType = 'left' | 'right';\r\n\r\n@Component({\r\n  selector: 'hxa-filters-collapsed',\r\n  templateUrl: './filters-collapsed.component.html',\r\n  styleUrls: ['./filters.component.scss', './filters-collapsed.component.scss'],\r\n  animations: [\r\n    trigger('slide', [\r\n      state('left', style({ transform: 'translateX(0)' })),\r\n      state('right', style({ transform: 'translateX(-100%)' })),\r\n      transition('* => *', animate(200)),\r\n    ]),\r\n  ],\r\n})\r\nexport class FiltersCollapsedComponent {\r\n  @ViewChild('dropdown', { static: true }) dropdown: DropdownDirective;\r\n  @ViewChildren('dateRangePicker') dateRangePickers: QueryList<any>;\r\n\r\n  FilterType = FilterType;\r\n  activePane: PaneType = 'left';\r\n  selectedFilter: FiltersModel;\r\n\r\n  @Input() data: FiltersModel[] = [];\r\n\r\n  @Output() onFilter = new EventEmitter();\r\n  @Output() onSearchFilter = new EventEmitter();\r\n  @Output() onDateRangePickerFilter = new EventEmitter();\r\n  @Output() onBack = new EventEmitter();\r\n\r\n  getIntervalOptions(options: IFilterOption[]) {\r\n    const intervalOption: string[] = [];\r\n    if (options) {\r\n      for (let i = 0; i < options.length; i++) {\r\n        intervalOption.push(options[i].label);\r\n      }\r\n    }\r\n    return intervalOption;\r\n  }\r\n\r\n  clearSearch(filter: FiltersModel) {\r\n    filter.value = '';\r\n    this.onSearchFilter.emit({ filter: filter, value: filter.value });\r\n  }\r\n\r\n  changeFilterSelection(filter: FiltersModel) {\r\n    this.selectedFilter = filter;\r\n    this.activePane = 'right';\r\n  }\r\n\r\n  selectFilterOption(option: IFilterOption, goBack = true) {\r\n    this.onFilter.emit({ filter: this.selectedFilter, option: option });\r\n    if (goBack) {\r\n      this.back();\r\n    }\r\n  }\r\n\r\n  searchFilter(filter: FiltersModel) {\r\n    this.onSearchFilter.emit({ filter: filter });\r\n  }\r\n\r\n  back() {\r\n    this.activePane = 'left';\r\n    this.onBack.emit({ filter: this.selectedFilter });\r\n  }\r\n\r\n  onSlideDone($event) {\r\n    if ($event.toState === 'left') {\r\n      this.selectedFilter = null;\r\n    }\r\n  }\r\n\r\n  totalActiveFilters(): number {\r\n    let count = 0;\r\n    this.data.forEach((filter: FiltersModel, index: number) => {\r\n      if (\r\n        filter.type === FilterType.SingleSelect ||\r\n        (filter.type === FilterType.MultiSelect &&\r\n          filter.selected.length !== 0 &&\r\n          filter.selected.length < filter.options.length - 1) ||\r\n        (filter.type === FilterType.Search && filter.value) ||\r\n        (filter.type === FilterType.DateRange && filter.sourceValue)\r\n      ) {\r\n        count++;\r\n      }\r\n    });\r\n    return count;\r\n  }\r\n\r\n  getFilterLabel() {\r\n    const plural = this.totalActiveFilters() > 1 ? 'filters' : 'filter';\r\n    return this.totalActiveFilters() > 0\r\n      ? this.totalActiveFilters() + ` ${plural} applied`\r\n      : `Filters`;\r\n  }\r\n\r\n  onDateRangeFilterChange(filter: FiltersModel, dateRange: DateRange) {\r\n    this.onDateRangePickerFilter.emit({ filter, dateRange });\r\n  }\r\n\r\n  /**\r\n   * Used for track by and boost performance\r\n   */\r\n  trackByFn(index, action) {\r\n    return index;\r\n  }\r\n}\r\n","<div\r\n  class=\"hx-dropdown ml-1 collapsedFilter\"\r\n  #dropdown=\"hx-dropdown\"\r\n  hxaDropdown\r\n  [autoClose]=\"false\"\r\n>\r\n  <button\r\n    id=\"collapsedFilterTrigger\"\r\n    type=\"button\"\r\n    class=\"hx-button hx-button-dropdown\"\r\n    hxaDropdownToggle\r\n  >\r\n    <span>{{ getFilterLabel() }}</span>\r\n    <span class=\"hx-icon-control\"><i class=\"icon icon-caret-down\"></i></span>\r\n  </button>\r\n\r\n  <div\r\n    class=\"hx-dropdown-menu has-limited-width collapsedFilter__menu panes\"\r\n    *hxaDropdownMenu\r\n  >\r\n    <ul\r\n      class=\"panes__inner\"\r\n      [@slide]=\"activePane\"\r\n      (@slide.done)=\"onSlideDone($event)\"\r\n    >\r\n      <!-- SUMMARY -->\r\n      <li id=\"filterSelections\" class=\"panes__item\">\r\n        <ng-container\r\n          *ngFor=\"\r\n            let filter of data;\r\n            trackBy: trackByFn;\r\n            let lastItem = last;\r\n            index as idx\r\n          \"\r\n        >\r\n          <!-- SINGLE-/MULTI- SELECT -->\r\n          <ng-container\r\n            *ngIf=\"(filter.type === FilterType.SingleSelect || filter.type === FilterType.MultiSelect) && !filter?.hidden\"\r\n          >\r\n            <button\r\n              [id]=\"filter?.id + '-trigger'\"\r\n              (click)=\"changeFilterSelection(filter)\"\r\n              title=\"{{filter.getSelectedLabel()}}\"\r\n              class=\"filter__item collapsedFilter__summaryItem\"\r\n              [class.is-disabled]=\"filter?.disabled\"\r\n            >\r\n              <div class=\"filter__itemLabel\">\r\n                <span class=\"is-text-weight-light\"\r\n                  >{{filter?.label}}:&nbsp;</span\r\n                >\r\n                <span class=\"is-text-weight-bolder\"\r\n                  >{{filter?.getSelectedLabel()}}</span\r\n                >\r\n              </div>\r\n\r\n              <span\r\n                class=\"hx-icon-control filter__itemIcon collapsedFilter__action\"\r\n                aria-hidden=\"true\"\r\n              >\r\n                <i class=\"hx-icon icon-angle-right\"></i>\r\n              </span>\r\n            </button>\r\n          </ng-container>\r\n\r\n          <!-- SEARCH -->\r\n          <ng-container\r\n            *ngIf=\"filter.type === FilterType.Search && !filter?.hidden\"\r\n          >\r\n            <div\r\n              [id]=\"filter.id\"\r\n              class=\"hx-input-group collapsedFilter__search\"\r\n            >\r\n              <i class=\"hx-icon icon-search mt-1\"></i>\r\n              <div class=\"hx-input-control my-0\">\r\n                <input\r\n                  class=\"hx-input\"\r\n                  type=\"search\"\r\n                  (input)=\"searchFilter(filter)\"\r\n                  [(ngModel)]=\"filter.value\"\r\n                  [placeholder]=\"filter.label\"\r\n                  [disabled]=\"filter?.disabled\"\r\n                />\r\n                <label class=\"hx-label\"></label>\r\n                <div class=\"hx-help\"></div>\r\n              </div>\r\n              <div class=\"hx-input-actions\" *ngIf=\"filter.value\">\r\n                <div class=\"hx-button-group\">\r\n                  <button\r\n                    class=\"hx-button is-flat\"\r\n                    (click)=\"clearSearch(filter)\"\r\n                  >\r\n                    <span class=\"hx-icon-control\"\r\n                      ><i class=\"icon icon-close-empty\"></i\r\n                    ></span>\r\n                  </button>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </ng-container>\r\n\r\n          <!-- DATE-RANGE -->\r\n          <ng-container *ngIf=\"filter.type === FilterType.DateRange\">\r\n            <div\r\n              [id]=\"filter?.id + '-trigger'\"\r\n              title=\"{{filter.selected?.label}}\"\r\n              class=\"collapsedFilter__dateRange\"\r\n            >\r\n              <hxa-date-range-picker\r\n                [dateFormat]=\"filter.dateRangePickerDisplayDateFormat\"\r\n                [displayMode]=\"filter.dateRangePickerDisplayMode\"\r\n                [intervalOptions]=\"getIntervalOptions(filter.options)\"\r\n                [defaultDateRange]=\"filter.sourceValue\"\r\n                [id]=\"filter?.id + '-dateRangePicker'\"\r\n                [showCaretDown]=\"true\"\r\n                [placeholder]=\"filter.label\"\r\n                (onDateRangeSelected)=\"onDateRangeFilterChange(filter,$event)\"\r\n                #dateRangePicker\r\n              ></hxa-date-range-picker>\r\n            </div>\r\n          </ng-container>\r\n        </ng-container>\r\n      </li>\r\n\r\n      <!-- DETAIL -->\r\n      <li id=\"filterOptions\" class=\"panes__item\">\r\n        <button\r\n          id=\"paneBack\"\r\n          class=\"filter__item collapsedFilter__detailHeader\"\r\n          (click)=\"back()\"\r\n        >\r\n          <span\r\n            class=\"hx-icon-control filter__itemIcon collapsedFilter__action\"\r\n            aria-hidden=\"true\"\r\n          >\r\n            <i class=\"hx-icon icon-angle-left\"></i>\r\n          </span>\r\n          <span class=\"is-screen-reader-only\">Back</span>\r\n\r\n          <div class=\"filter__itemLabel\">\r\n            <span class=\"is-text-weight-light\"\r\n              >{{selectedFilter?.label}}:&nbsp;</span\r\n            >\r\n            <span class=\"is-text-weight-bolder\"\r\n              >{{selectedFilter?.getSelectedLabel()}}</span\r\n            >\r\n          </div>\r\n        </button>\r\n\r\n        <ul\r\n          [id]=\"selectedFilter?.id + '-options'\"\r\n          class=\"hx-list-group options\"\r\n        >\r\n          <li\r\n            class=\"options__item\"\r\n            role=\"none\"\r\n            *ngFor=\"\r\n              let option of selectedFilter?.options;\r\n              trackBy: trackByFn;\r\n              let i = index\r\n            \"\r\n          >\r\n            <!-- SINGLE-SELECT -->\r\n            <ng-container\r\n              *ngIf=\"selectedFilter?.type === FilterType.SingleSelect\"\r\n            >\r\n              <button\r\n                hxaDropdownItem\r\n                (click)=\"selectFilterOption(option)\"\r\n                title=\"{{option?.label}}\"\r\n                class=\"is-text-ellipsed filter__item\"\r\n                [class.selected]=\"option.selected\"\r\n              >\r\n                <span\r\n                  class=\"hx-icon-control filter__itemIcon\"\r\n                  *ngIf=\"option?.icon\"\r\n                  aria-hidden=\"true\"\r\n                >\r\n                  <i class=\"{{ option?.icon }}\"></i>\r\n                </span>\r\n                <span class=\"filter__itemLabel\"> {{ option?.label }} </span>\r\n              </button>\r\n            </ng-container>\r\n\r\n            <!-- MULTI-SELECT -->\r\n            <ng-container\r\n              *ngIf=\"selectedFilter?.type === FilterType.MultiSelect\"\r\n            >\r\n              <label\r\n                class=\"is-text-ellipsed filter__item--multi\"\r\n                title=\"{{ option?.label }}\"\r\n                [class.is-perforated]=\"i === 0\"\r\n                [class.selected]=\"option.selected && i > 0\"\r\n                [class.is-select-all]=\"i === 0\"\r\n                [for]=\"selectedFilter?.id + '-checkbox-' + i\"\r\n              >\r\n                <input\r\n                  [name]=\"selectedFilter?.id + '-checkbox-' + i\"\r\n                  type=\"checkbox\"\r\n                  [id]=\"selectedFilter?.id + '-checkbox-' + i\"\r\n                  (change)=\"selectFilterOption(option, false)\"\r\n                  [class.indeterminate]=\"\r\n                      option?.value === selectedFilter?.selectAllValue &&\r\n                      selectedFilter?.selectAllState.indeterminate\r\n                    \"\r\n                  [checked]=\"option.selected\"\r\n                />\r\n                <span\r\n                  class=\"hx-icon-control filter__itemIcon\"\r\n                  *ngIf=\"option?.icon\"\r\n                  aria-hidden=\"true\"\r\n                >\r\n                  <i class=\"{{ option?.icon }}\"></i>\r\n                </span>\r\n                <span\r\n                  class=\"filter__itemLabel\"\r\n                  [class.is-text-weight-boldest]=\"i === 0\"\r\n                >\r\n                  {{ option?.label }}\r\n                </span>\r\n              </label>\r\n            </ng-container>\r\n          </li>\r\n        </ul>\r\n      </li>\r\n    </ul>\r\n  </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\n\r\n/** Default filters configuration */\r\n@Injectable()\r\nexport class FiltersConfig {\r\n    debounce = 800;\r\n}\r\n","import * as _ from 'lodash';\r\nimport { DisplayMode } from '../date-range-picker/date-range-picker.model';\r\nimport { IFilterOption, IFiltersConfig } from './filters-config.interface';\r\nimport { FilterType } from './filters-type.enum';\r\n\r\nexport class FiltersModel implements IFiltersConfig {\r\n  id: string;\r\n  type: FilterType;\r\n  label: string;\r\n  options?: IFilterOption[];\r\n  value?: string;\r\n  /**\r\n   * value from source component without type parse\r\n   */\r\n  sourceValue?: any;\r\n  callback: any;\r\n  selected: IFilterOption[] = [];\r\n  defaultIndex = [0];\r\n  charLimit = 2;\r\n  dateRangePickerDisplayMode?: DisplayMode = DisplayMode.showCustomOnly;\r\n  dateRangePickerDisplayDateFormat?: string = 'dd/MM/yyyy';\r\n  width: number;\r\n  disabled = false;\r\n  hidden = false;\r\n  isLoading = false;\r\n  selectAllState = {\r\n    all: false,\r\n    indeterminate: false,\r\n    none: true\r\n  };\r\n  selectAllValue = 'Select all';\r\n\r\n  constructor(data?: IFiltersConfig) {\r\n    Object.assign(this, data);\r\n    if (this.type === FilterType.MultiSelect) {\r\n      this.addSelectAll();\r\n      this.setMultiSelectOptions();\r\n    } else if (this.type !== FilterType.Search) {\r\n      this.setSingleSelectOption();\r\n    }\r\n    this.isIconised();\r\n  }\r\n\r\n  /*\r\n   * Adds a select all option for multiselect filter types\r\n   */\r\n  addSelectAll() {\r\n    this.options.unshift({\r\n      label: 'Select all',\r\n      value: this.selectAllValue,\r\n      selected: false\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Set single select option\r\n   */\r\n  setSingleSelectOption(option?: IFilterOption) {\r\n    if (option) {\r\n      if (this.selected.length) {\r\n        this.selected[0].selected = false;\r\n      }\r\n      this.selected = [option];\r\n      option.selected = true;\r\n    } else {\r\n      // set preselected option\r\n      if (this.options.length && this.selected.length === 0) {\r\n        this.selected = [\r\n          this.options.find(opt => {\r\n            return opt.selected;\r\n          })\r\n        ];\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set multi select options\r\n   */\r\n  setMultiSelectOptions(option?: IFilterOption) {\r\n    if (option) {\r\n      this.selected = [];\r\n      if (option.value !== this.selectAllValue) {\r\n        this.options.forEach((opt, i) => {\r\n          if (opt.value !== this.selectAllValue) {\r\n            if (opt.selected) {\r\n              this.selected.push(opt);\r\n            }\r\n          }\r\n        });\r\n      } else {\r\n        this.options.forEach((opt, i) => {\r\n          if (opt.value !== this.selectAllValue) {\r\n            opt.selected = option.selected;\r\n            if (option.selected) {\r\n              this.selected.push(opt);\r\n            }\r\n          }\r\n        });\r\n      }\r\n    } else {\r\n      // set preselected options and select all\r\n      if (this.options.length && this.selected.length === 0) {\r\n        this.options.forEach((opt, i) => {\r\n          if (opt.selected) {\r\n            this.selected.push(opt);\r\n          }\r\n        });\r\n      }\r\n    }\r\n\r\n    this.setSelectAllState();\r\n  }\r\n\r\n  setSelectAllState() {\r\n    const reducer = (accumulator, option) =>\r\n      option.selected && option.value !== this.selectAllValue\r\n        ? accumulator + 1\r\n        : accumulator;\r\n    const count = this.options.reduce(reducer, 0);\r\n    this.selectAllState.all = count === this.options.length - 1;\r\n    this.selectAllState.indeterminate =\r\n      count > 0 && count < this.options.length - 1;\r\n    this.selectAllState.none = count === 0;\r\n    this.options[0].selected =\r\n      this.selectAllState.all && !this.selectAllState.indeterminate;\r\n  }\r\n\r\n  setDefaultOption() {\r\n    if (this.options.length) {\r\n      if (this.type === FilterType.SingleSelect) {\r\n        this.selected[0].selected = false;\r\n        this.selected[0] = this.options[this.defaultIndex[0]];\r\n        this.selected[0].selected = true;\r\n      } else if (this.type === FilterType.MultiSelect) {\r\n        this.selected = [];\r\n        this.options.forEach((opt, i) => {\r\n          opt.selected = false;\r\n        });\r\n        this.defaultIndex.forEach((di, i) => {\r\n          this.options[di].selected = true;\r\n          this.selected.push(this.options[di]);\r\n        });\r\n        this.setSelectAllState();\r\n      } else {\r\n        this.selected[0].selected = false;\r\n        this.selected[0] = this.options[this.defaultIndex[0]];\r\n        this.selected[0].selected = true;\r\n      }\r\n    }\r\n  }\r\n\r\n  setSelectAll() {\r\n    this.selected = [];\r\n    this.options.forEach((opt, i) => {\r\n      opt.selected = true;\r\n      if (opt.value !== this.selectAllValue) {\r\n        this.selected.push(opt);\r\n      }\r\n    });\r\n  }\r\n\r\n  isDefaultOptionActive() {\r\n    if (this.type === FilterType.SingleSelect) {\r\n      return this.selected[0] === this.options[this.defaultIndex[0]];\r\n    } else if (this.type === FilterType.MultiSelect) {\r\n      const selectedIndexes = [];\r\n      this.options.forEach((opt, i) => {\r\n        if (opt.selected && opt.value !== this.selectAllValue) {\r\n          selectedIndexes.push(i);\r\n        }\r\n      });\r\n      return _.isEqual(selectedIndexes, this.defaultIndex);\r\n    } else if (this.type === FilterType.Search) {\r\n      return this.value === '' || this.value === undefined;\r\n    } else if (this.type === FilterType.DateRange) {\r\n      return this.value === '' || this.value === undefined;\r\n    }\r\n  }\r\n\r\n  isIconised() {\r\n    if (this.options) {\r\n      const hasIcons = this.options.find(option => {\r\n        return typeof option.icon !== 'undefined' && option.icon !== '';\r\n      });\r\n      return typeof hasIcons !== 'undefined';\r\n    }\r\n    return false;\r\n  }\r\n\r\n  getSelectedLabel() {\r\n    if (this.selected.length === 1) {\r\n      return this.selected[0].label;\r\n    } else if (this.selected.length) {\r\n      return this.selected.length + ' selected';\r\n    } else {\r\n      return 'All';\r\n    }\r\n  }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n  Component,\r\n  DoCheck,\r\n  ElementRef,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  QueryList,\r\n  ViewChild,\r\n  ViewChildren,\r\n} from '@angular/core';\r\nimport * as _ from 'lodash';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { DateRange } from '../date-range-picker/date-range-picker.model';\r\nimport { IFilterOption, IFiltersConfig } from './filters-config.interface';\r\nimport { FilterType } from './filters-type.enum';\r\nimport { FiltersConfig } from './filters.config';\r\nimport { FiltersModel } from './filters.model';\r\n\r\n@Component({\r\n  selector: 'hxa-filters',\r\n  templateUrl: './filters.component.html',\r\n  styleUrls: ['./filters.component.scss'],\r\n})\r\nexport class FiltersComponent implements OnInit, DoCheck, OnDestroy {\r\n  @ViewChild('carousel', { static: true }) private carousel: ElementRef;\r\n  @ViewChildren('dateRangePicker') dateRangePickers: QueryList<any>;\r\n\r\n  FilterType = FilterType;\r\n  data: FiltersModel[] = [];\r\n  onFilterOptionChanged$ = new Subject<FiltersModel>();\r\n  searchFilter$: Subject<FiltersModel> = new Subject<FiltersModel>();\r\n  subscriptions: Subscription = new Subscription();\r\n\r\n  private _filters: IFiltersConfig[] = [];\r\n  private _oldFilters: IFiltersConfig[] = [];\r\n  private _collapsed = false;\r\n\r\n  @Input() customMask: string;\r\n\r\n  @Input()\r\n  get collapsed(): boolean {\r\n    return this._collapsed;\r\n  }\r\n\r\n  set collapsed(value: boolean) {\r\n    this._collapsed = value;\r\n  }\r\n\r\n  @Input()\r\n  get filters(): IFiltersConfig[] {\r\n    return this._filters;\r\n  }\r\n\r\n  set filters(value: IFiltersConfig[]) {\r\n    this._filters = value;\r\n    this.setData();\r\n  }\r\n\r\n  constructor(private conf: FiltersConfig, private datePipe: DatePipe) {\r\n    Object.assign(this, conf);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.subscriptions.add(\r\n      this.searchFilter$\r\n        .pipe(debounceTime(this.conf.debounce))\r\n        .subscribe(x => this.onFilterOptionChanged$.next(x))\r\n    );\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.subscriptions.unsubscribe();\r\n  }\r\n\r\n  ngDoCheck() {\r\n    if (!_.isEqual(this._filters, this._oldFilters)) {\r\n      this._oldFilters = _.cloneDeep(this._filters);\r\n      this.setData();\r\n    }\r\n  }\r\n\r\n  getIntervalOptions(options: IFilterOption[]) {\r\n    const intervalOption: string[] = [];\r\n    if (options) {\r\n      for (let i = 0; i < options.length; i++) {\r\n        intervalOption.push(options[i].label);\r\n      }\r\n    }\r\n    return intervalOption;\r\n  }\r\n\r\n  resetFilters(silent = false) {\r\n    for (const filter of this.data) {\r\n      if (\r\n        filter.type === FilterType.SingleSelect ||\r\n        filter.type === FilterType.MultiSelect\r\n      ) {\r\n        filter.setDefaultOption();\r\n        if (!silent) {\r\n          this.onFilterOptionChanged$.next(filter);\r\n        }\r\n      } else if (filter.type === FilterType.Search) {\r\n        this.clearSearch(filter, silent);\r\n      } else if (filter.type === FilterType.DateRange) {\r\n        this.setDefaultDate(filter);\r\n      }\r\n    }\r\n  }\r\n\r\n  clearSearch(filter: FiltersModel, silent = false) {\r\n    filter.value = '';\r\n    if (!silent) {\r\n      this.onFilterOptionChanged$.next(filter);\r\n    }\r\n  }\r\n\r\n  setDefaultDate(filter: FiltersModel) {\r\n    filter.value = '';\r\n    filter.sourceValue = undefined;\r\n    if (!this._collapsed) {\r\n      for (let i = 0; i < this.dateRangePickers.toArray().length; i++) {\r\n        this.dateRangePickers.toArray()[i].resetDateRange();\r\n      }\r\n    }\r\n    this.onFilterOptionChanged$.next(filter);\r\n  }\r\n\r\n  /**\r\n   * Called when filter option is selected\r\n   */\r\n  onFilterOptionSelected(filter: FiltersModel, option: IFilterOption) {\r\n    option.selected = !option.selected;\r\n    if (filter.type === FilterType.MultiSelect) {\r\n      filter.setMultiSelectOptions(option);\r\n    } else if (filter.type !== FilterType.Search) {\r\n      filter.setSingleSelectOption(option);\r\n    }\r\n    this.onFilterOptionChanged$.next(filter);\r\n  }\r\n\r\n  /**\r\n   * Called when character is typed in the search filter type\r\n   */\r\n  onSearchFilterChange(filter: FiltersModel) {\r\n    if (filter.value.length === 0 || filter.value.length >= filter.charLimit) {\r\n      this.searchFilter$.next(filter);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Called when selection is made in the date range filter type\r\n   */\r\n  onDateRangeFilterChange(filter: FiltersModel, dateRange: DateRange) {\r\n    const dateRangeValue =\r\n      this.datePipe.transform(\r\n        dateRange.fromDate,\r\n        filter.dateRangePickerDisplayDateFormat\r\n      ) +\r\n      ' - ' +\r\n      this.datePipe.transform(\r\n        dateRange.toDate,\r\n        filter.dateRangePickerDisplayDateFormat\r\n      );\r\n    filter.value = dateRangeValue;\r\n    filter.sourceValue = dateRange;\r\n    this.searchFilter$.next(filter);\r\n  }\r\n\r\n  onCollapsedFilter($event) {\r\n    this.onFilterOptionSelected($event.filter, $event.option);\r\n  }\r\n\r\n  onCollapsedSearch($event) {\r\n    this.onSearchFilterChange($event.filter);\r\n  }\r\n\r\n  onCollapsedDateRangePicker($event) {\r\n    this.onDateRangeFilterChange($event.filter, $event.dateRange);\r\n  }\r\n\r\n  onCollapsedFilterBack($event) {\r\n    this.onMultiSelectHidden($event.filter);\r\n  }\r\n\r\n  onMultiSelectHidden(filter: FiltersModel) {\r\n    if (filter.selected.length === 0) {\r\n      filter.setSelectAll();\r\n      this.onFilterOptionChanged$.next(filter);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Used for track by and boost performance\r\n   */\r\n  trackByFn(index, action) {\r\n    return index;\r\n  }\r\n\r\n  /**\r\n   * Convert filter config objects to Filter Models\r\n   */\r\n  setData() {\r\n    this.data = [];\r\n    if (this._filters) {\r\n      this._filters.forEach((filter: IFiltersConfig, index) => {\r\n        this.data.push(new FiltersModel(_.cloneDeep(filter)));\r\n      });\r\n    }\r\n  }\r\n}\r\n","<div class=\"hx-flex hx-flex-align-center\">\r\n  <i class=\"hx-icon icon-filter-outline mx-1\"></i>\r\n\r\n  <!-- COLLAPSED STATE -->\r\n  <hxa-filters-collapsed\r\n    (onFilter)=\"onCollapsedFilter($event)\"\r\n    (onBack)=\"onCollapsedFilterBack($event)\"\r\n    (onSearchFilter)=\"onCollapsedSearch($event)\"\r\n    (onDateRangePickerFilter)=\"onCollapsedDateRangePicker($event)\"\r\n    [data]=\"data\"\r\n    *ngIf=\"collapsed\"\r\n  ></hxa-filters-collapsed>\r\n\r\n  <!-- EXPANDED STATE -->\r\n  <ng-container *ngIf=\"!collapsed\">\r\n    <ng-container\r\n      *ngFor=\"let filter of data; trackBy: trackByFn; let lastItem = last\"\r\n    >\r\n      <!-- SINGLE-SELECT -->\r\n      <div\r\n        [id]=\"filter?.id\"\r\n        class=\"hx-dropdown mx-1 expandedFilter\"\r\n        hxaDropdown\r\n        [minWidthRelativeTo]=\"filter?.id + '-trigger'\"\r\n        *ngIf=\"filter?.type === FilterType.SingleSelect && !filter?.hidden\"\r\n      >\r\n        <button\r\n          [id]=\"filter?.id + '-trigger'\"\r\n          class=\"hx-button hx-button-dropdown expandedFilter__button\"\r\n          [class.is-loading]=\"filter?.isLoading\"\r\n          [class.is-disabled]=\"filter?.disabled\"\r\n          hxaDropdownToggle\r\n        >\r\n          <span class=\"is-text-weight-light\">{{ filter?.label }}:&nbsp;</span>\r\n          <span class=\"hx-icon-control\" *ngIf=\"(filter?.selected)[0]?.icon\"\r\n            ><i class=\"{{ (filter?.selected)[0]?.icon }} mr-1\"></i\r\n          ></span>\r\n          <span\r\n            class=\"is-text-weight-bolder is-text-ellipsed\"\r\n            title=\"{{ filter?.getSelectedLabel() }}\"\r\n            >{{ filter?.getSelectedLabel() }}</span\r\n          >\r\n          <span class=\"hx-icon-control\">\r\n            <i class=\"hx-icon icon-caret-down\"></i>\r\n          </span>\r\n        </button>\r\n\r\n        <div\r\n          [id]=\"filter?.id + '-options'\"\r\n          class=\"hx-dropdown-menu has-limited-width has-limited-height expandedFilter__menu\"\r\n          [class.hx-dropdown-icon]=\"filter.isIconised()\"\r\n          *hxaDropdownMenu\r\n        >\r\n          <button\r\n            hxaDropdownItem\r\n            *ngFor=\"let option of filter?.options; trackBy: trackByFn\"\r\n            (click)=\"onFilterOptionSelected(filter, option)\"\r\n            class=\"is-text-ellipsed filter__item\"\r\n            [class.selected]=\"option.selected\"\r\n            title=\"{{ option?.label }}\"\r\n          >\r\n            <span\r\n              class=\"hx-icon-control filter__itemIcon\"\r\n              *ngIf=\"option?.icon\"\r\n              aria-hidden=\"true\"\r\n            >\r\n              <i class=\"{{ option?.icon }}\"></i>\r\n            </span>\r\n            <span class=\"filter__itemLabel\"> {{ option?.label }} </span>\r\n          </button>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- MULTI-SELECT -->\r\n      <div\r\n        [id]=\"filter?.id\"\r\n        class=\"hx-dropdown mx-1 expandedFilter\"\r\n        hxaDropdown\r\n        [minWidthRelativeTo]=\"filter?.id + '-trigger'\"\r\n        *ngIf=\"filter?.type === FilterType.MultiSelect && !filter?.hidden\"\r\n        (onHidden)=\"onMultiSelectHidden(filter)\"\r\n      >\r\n        <button\r\n          [id]=\"filter?.id + '-trigger'\"\r\n          class=\"hx-button hx-button-dropdown expandedFilter__button\"\r\n          [class.is-loading]=\"filter?.isLoading\"\r\n          [class.is-disabled]=\"filter?.disabled\"\r\n          hxaDropdownToggle\r\n        >\r\n          <span class=\"is-text-weight-light\">{{ filter?.label }}:&nbsp;</span>\r\n          <span\r\n            class=\"is-text-weight-bolder is-text-ellipsed\"\r\n            title=\"{{ filter?.getSelectedLabel() }}\"\r\n          >\r\n            {{ filter?.getSelectedLabel() }}\r\n          </span>\r\n          <span class=\"hx-icon-control\">\r\n            <i class=\"hx-icon icon-caret-down\"></i>\r\n          </span>\r\n        </button>\r\n\r\n        <div\r\n          [id]=\"filter?.id + '-options'\"\r\n          class=\"hx-dropdown-menu has-limited-width has-limited-height expandedFilter__menu\"\r\n          *hxaDropdownMenu\r\n        >\r\n          <label\r\n            *ngFor=\"\r\n              let option of filter?.options;\r\n              trackBy: trackByFn;\r\n              let i = index\r\n            \"\r\n            class=\"is-text-ellipsed filter__item--multi\"\r\n            title=\"{{ option?.label }}\"\r\n            [class.is-perforated]=\"i === 0\"\r\n            [class.selected]=\"option.selected && i > 0\"\r\n            [class.is-select-all]=\"i === 0\"\r\n            [for]=\"filter?.id + '-checkbox-' + i\"\r\n          >\r\n            <input\r\n              [name]=\"filter?.id + '-checkbox-' + i\"\r\n              type=\"checkbox\"\r\n              [id]=\"filter?.id + '-checkbox-' + i\"\r\n              (change)=\"onFilterOptionSelected(filter, option)\"\r\n              [class.indeterminate]=\"\r\n                  option?.value === filter?.selectAllValue &&\r\n                  filter?.selectAllState.indeterminate\r\n                \"\r\n              [checked]=\"option.selected\"\r\n            />\r\n            <span\r\n              class=\"hx-icon-control filter__itemIcon\"\r\n              *ngIf=\"option?.icon\"\r\n              aria-hidden=\"true\"\r\n            >\r\n              <i class=\"{{ option?.icon }}\"></i>\r\n            </span>\r\n            <span\r\n              class=\"filter__itemLabel\"\r\n              [class.is-text-weight-boldest]=\"i === 0\"\r\n            >\r\n              {{ option?.label }}\r\n            </span>\r\n          </label>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- SEARCH -->\r\n      <div\r\n        [id]=\"filter.id\"\r\n        *ngIf=\"filter.type === FilterType.Search && !filter?.hidden\"\r\n        class=\"hx-input-group ml-2 expandedFilter__search\"\r\n        [class.mx-1]=\"!lastItem\"\r\n      >\r\n        <i class=\"hx-icon icon-search\"></i>\r\n        <div class=\"hx-input-control\">\r\n          <input\r\n            class=\"hx-input\"\r\n            type=\"search\"\r\n            placeholder=\"{{ filter.label }}\"\r\n            (input)=\"onSearchFilterChange(filter)\"\r\n            [(ngModel)]=\"filter.value\"\r\n            [style.width.rem]=\"filter.width\"\r\n            [disabled]=\"filter?.disabled\"\r\n            mask=\"{{ customMask }}\"\r\n          />\r\n          <label class=\"hx-label\"></label>\r\n          <div class=\"hx-help\"></div>\r\n        </div>\r\n        <div class=\"hx-input-actions\" *ngIf=\"filter.value\">\r\n          <div class=\"hx-button-group\">\r\n            <button class=\"hx-button is-flat\" (click)=\"clearSearch(filter)\">\r\n              <span class=\"hx-icon-control\">\r\n                <i class=\"icon icon-close-empty\"></i>\r\n              </span>\r\n            </button>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- DATE-RANGE -->\r\n      <div\r\n        [id]=\"filter?.id\"\r\n        class=\"hx-dropdown mx-1 expandedFilter\"\r\n        hxaDropdown\r\n        [minWidthRelativeTo]=\"filter?.id + '-trigger'\"\r\n        *ngIf=\"filter?.type === FilterType.DateRange\"\r\n      >\r\n        <hxa-date-range-picker\r\n          [dateFormat]=\"filter.dateRangePickerDisplayDateFormat\"\r\n          [displayMode]=\"filter.dateRangePickerDisplayMode\"\r\n          [intervalOptions]=\"getIntervalOptions(filter.options)\"\r\n          (onDateRangeSelected)=\"onDateRangeFilterChange(filter, $event)\"\r\n          [defaultDateRange]=\"filter.sourceValue\"\r\n          [id]=\"filter?.id + '-dateRangePicker'\"\r\n          #dateRangePicker\r\n        ></hxa-date-range-picker>\r\n      </div>\r\n    </ng-container>\r\n  </ng-container>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { DateRangePickerModule } from '../date-range-picker/date-range-picker.module';\r\nimport { DropdownModule } from '../dropdown/dropdown.module';\r\nimport { FiltersCollapsedComponent } from './filters-collapsed.component';\r\nimport { FiltersComponent } from './filters.component';\r\nimport { FiltersConfig } from './filters.config';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    DropdownModule,\r\n    FormsModule,\r\n    DateRangePickerModule,\r\n    NgxMaskModule\r\n  ],\r\n  declarations: [FiltersComponent, FiltersCollapsedComponent],\r\n  exports: [FiltersComponent, FiltersCollapsedComponent]\r\n})\r\nexport class FiltersModule {\r\n  public static forRoot(): ModuleWithProviders<FiltersModule> {\r\n    return {\r\n      ngModule: FiltersModule,\r\n      providers: [FiltersConfig]\r\n    };\r\n  }\r\n}\r\n","export enum InspectorSize {\r\n  Small,\r\n  Large,\r\n  Offset,\r\n  FullWidth\r\n}\r\n","export enum InspectorLocation {\r\n  Right,\r\n  Left\r\n}\r\n","import {\r\n  ApplicationRef, \r\n  Component, \r\n  ComponentFactoryResolver, \r\n  ElementRef, \r\n  Injector, \r\n  NgZone,\r\n  OnInit,\r\n} from '@angular/core';\r\nimport {\r\n  trigger,\r\n  state,\r\n  style,\r\n  animate,\r\n  transition\r\n} from '@angular/animations';\r\nimport { ComponentPortal, DomPortalOutlet} from '@angular/cdk/portal';\r\nimport {Subject} from 'rxjs';\r\nimport {InspectorSize} from './inspector-size.enum';\r\nimport {InspectorLocation} from \"./inspector-location.enum\";\r\n\r\n@Component({\r\n  selector: 'hxa-inspector',\r\n  templateUrl: './inspector.component.html',\r\n  styleUrls: ['./inspector.component.scss'],\r\n  animations: [\r\n    trigger('slideFromRight', [\r\n      state('slideOut', style({\r\n        transform: 'translate3d(100%, 0, 0)',\r\n      })),\r\n      state('slideIn',   style({\r\n        transform: 'translate3d(0, 0, 0)'\r\n      })),\r\n      transition('slideOut => slideIn', animate('200ms ease-in')),\r\n      transition('slideIn => slideOut', animate('200ms ease-out')),\r\n      transition('void => *', [\r\n        style({ transform: 'translate3d(100%, 0, 0)' }),\r\n        animate('200ms ease-in')\r\n      ]),\r\n    ]),\r\n    trigger('slideFromLeft', [\r\n      state('slideOut', style({\r\n        transform: 'translateX(-100%)'\r\n      })),\r\n      state('slideIn',   style({\r\n        transform: 'translateX(0)'\r\n      })),\r\n      transition('slideOut => slideIn', animate('200ms ease-in')),\r\n      transition('slideIn => slideOut', animate('200ms ease-out')),\r\n      transition('void => *', [\r\n        style({transform: 'translateX(-100%)'}),\r\n        animate('200ms ease-in')\r\n      ]),\r\n    ]),\r\n    trigger('sizeFromRight', [\r\n      state('small', style({\r\n        width: '37rem'\r\n      })),\r\n      state('large',   style({\r\n        width: '90vw'\r\n      })),\r\n      state('fullWidth',   style({\r\n        width: '100vw'\r\n      })),\r\n      state('offsetWidth',   style({\r\n        width: '47rem'\r\n      })),\r\n      transition('small => large', animate('200ms ease-in')),\r\n      transition('large => small', animate('200ms ease-out')),\r\n      transition('small => fullWidth', animate('200ms ease-out')),\r\n      transition('large => fullWidth', animate('200ms ease-out')),\r\n      transition('fullWidth => small', animate('200ms ease-in')),\r\n      transition('fullWidth => large', animate('200ms ease-in')),\r\n      transition('small => offsetWidth', animate('200ms ease-out')),\r\n      transition('offsetWidth => small', animate('200ms ease-in')),\r\n      transition('void => *', [\r\n        style({ width: '0'}),\r\n        animate('200ms ease-in')\r\n      ]),\r\n    ]),\r\n    trigger('sizeFromLeft', [\r\n      state('small', style({\r\n        width: '37rem'\r\n      })),\r\n      state('large',   style({\r\n        width: '90vw'\r\n      })),\r\n      state('fullWidth',   style({\r\n        width: '100vw'\r\n      })),\r\n      state('offsetWidth',   style({\r\n        width: '47rem'\r\n      })),\r\n      transition('small => large', animate('200ms ease-in')),\r\n      transition('large => small', animate('200ms ease-out')),\r\n      transition('small => fullWidth', animate('200ms ease-out')),\r\n      transition('large => fullWidth', animate('200ms ease-out')),\r\n      transition('fullWidth => small', animate('200ms ease-in')),\r\n      transition('fullWidth => large', animate('200ms ease-in')),\r\n      transition('small => offsetWidth', animate('200ms ease-out')),\r\n      transition('offsetWidth => small', animate('200ms ease-in')),\r\n      transition('void => *', [\r\n        style({ width: '37rem'}),\r\n        animate('200ms ease-in')\r\n      ]),\r\n    ])\r\n  ]\r\n})\r\nexport class InspectorComponent implements OnInit {\r\n\r\n  onSlideInComplete$ = new Subject<boolean>();\r\n  onSlideInStart$ = new Subject<boolean>();\r\n  onSlideOutComplete$ = new Subject<boolean>();\r\n  onSlideOutStart$ = new Subject<boolean>();\r\n  onResizeComplete$ = new Subject<InspectorSize>();\r\n  onBackDropClick$ = new Subject<boolean>();\r\n  componentPortal: ComponentPortal<any>;\r\n  parameters: Object = {};\r\n  state = 'slideOut';\r\n  size = 'small';\r\n  sizes = ['small', 'large', 'offsetWidth', 'fullWidth'];\r\n  previousSize = 'small';\r\n\r\n  /** Used to temporarily hide external icon when displaying multiple inspectors */\r\n  public hideClose = false;\r\n\r\n  /** Does inspector have external close icon? */\r\n  public hasClose = true;\r\n\r\n  /** Side of display inspector is located */\r\n  public location = InspectorLocation.Right;\r\n\r\n  public InspectorLocation = InspectorLocation;\r\n\r\n  private portalHost: DomPortalOutlet;\r\n  private animationCount = 0;\r\n\r\n  constructor(private elementRef: ElementRef,\r\n              private zone: NgZone,\r\n              private componentFactoryResolver: ComponentFactoryResolver,\r\n              private injector: Injector,\r\n              private appRef: ApplicationRef) { }\r\n\r\n  ngOnInit() {\r\n    setTimeout(()=> {\r\n      this.attachComponent();\r\n      this.slideIn();\r\n    })\r\n  }\r\n\r\n\r\n  close = () => {\r\n    this.slideOut();\r\n  }\r\n\r\n  slideIn = () => {\r\n    this.state = 'slideIn';\r\n  }\r\n\r\n  slideOut = () => {\r\n    this.state = 'slideOut';\r\n  }\r\n\r\n  resize(size: InspectorSize) {\r\n    this.size = this.sizes[size];\r\n  }\r\n\r\n  slideStart = ($event) => {\r\n    if ($event.fromState === 'void') {\r\n      this.onSlideInStart$.next(true);\r\n    } else {\r\n      this.onSlideOutStart$.next(true);\r\n    }\r\n  }\r\n\r\n  slideDone = ($event) => {\r\n\r\n    // initial slide in done\r\n    if ($event.fromState === 'void') {\r\n      if (this.animationCount < 1) {\r\n        this.animationCount++;\r\n      } else {\r\n        this.allAnimationsDone();\r\n      }\r\n    }\r\n\r\n    // slide out done\r\n    if ($event.fromState === 'slideIn' && $event.toState === 'slideOut') {\r\n      this.onSlideOutComplete$.next(true);\r\n      this.detachComponent();\r\n    }\r\n  }\r\n\r\n  sizeDone = ($event) => {\r\n\r\n    // initial size animation\r\n    if ($event.fromState === 'void') {\r\n      if (this.animationCount < 1) {\r\n        this.animationCount++;\r\n      } else {\r\n        this.allAnimationsDone();\r\n      }\r\n    }\r\n\r\n    // size done\r\n    if (($event.fromState === 'small' && $event.toState === 'large') || ($event.fromState === 'large' && $event.toState === 'small')) {\r\n      this.onResizeComplete$.next(($event.toState === 'large') ? InspectorSize.Large : InspectorSize.Small);\r\n    }\r\n  }\r\n\r\n  allAnimationsDone() {\r\n    this.animationCount = 0;\r\n    this.onSlideInComplete$.next(true);\r\n  }\r\n\r\n\r\n  attachComponent() {\r\n    // Create a portalHost from a DOM element\r\n    this.portalHost = new DomPortalOutlet(\r\n      this.elementRef.nativeElement.querySelector('.portalHost'),\r\n      this.componentFactoryResolver,\r\n      this.appRef,\r\n      this.injector\r\n    );\r\n\r\n    // Attach portal to host\r\n    const componentRef =  this.portalHost.attach(this.componentPortal);\r\n\r\n    // pass the @Input parameters to the instance\r\n    Object.assign(componentRef.instance, this.parameters);\r\n  }\r\n\r\n  detachComponent(){\r\n    this.portalHost.detach();\r\n  }\r\n\r\n  onBackdropClick(){\r\n    this.onBackDropClick$.next(true);\r\n  }\r\n}\r\n","<div \r\n  class=\"hxa-inspector\" \r\n  *ngIf=\"location === InspectorLocation.Right\"\r\n  [@slideFromRight]=\"state\"\r\n  (@slideFromRight.done)=\"slideDone($event)\"\r\n  (@slideFromRight.start)=\"slideStart($event)\"\r\n  [@sizeFromRight]=\"size\"\r\n  (@sizeFromRight.done)=\"sizeDone($event)\"\r\n>\r\n  <div class=\"portalHost\"></div>\r\n  <a class=\"close right\" [ngClass]=\"{ 'hide': hideClose }\" *ngIf=\"hasClose\" (click)=\"close()\"></a>\r\n</div>\r\n<div \r\n  class=\"hxa-inspector\" \r\n  *ngIf=\"location === InspectorLocation.Left\"\r\n  [@slideFromLeft]=\"state\"\r\n  (@slideFromLeft.done)=\"slideDone($event)\"\r\n  (@slideFromLeft.start)=\"slideStart($event)\"\r\n  [@sizeFromLeft]=\"size\"\r\n  (@sizeFromLeft.done)=\"sizeDone($event)\"\r\n>\r\n  <div class=\"portalHost\"></div>\r\n  <a class=\"close left\" [ngClass]=\"{ 'hide': hideClose }\" *ngIf=\"hasClose\" (click)=\"close()\"></a>\r\n</div>\r\n","import {OverlayRef} from '@angular/cdk/overlay';\r\nimport {InspectorSize} from './inspector-size.enum';\r\nimport {InspectorComponent} from './inspector.component';\r\n\r\n\r\nexport class InspectorOverlayRef {\r\n\r\n  inspectorInstance: InspectorComponent;\r\n\r\n  constructor(private overlayRef: OverlayRef) {}\r\n\r\n  close(): void {\r\n    this.inspectorInstance.close();\r\n  }\r\n\r\n  resize(size: InspectorSize): void {\r\n    this.inspectorInstance.resize(size);\r\n  }\r\n}\r\n","import {ComponentRef, Injectable, Injector} from '@angular/core';\r\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\r\nimport {InspectorOverlayRef} from './inspector-overlay.ref';\r\nimport {ComponentPortal, PortalInjector} from '@angular/cdk/portal';\r\nimport {FocusTrapFactory} from '@angular/cdk/a11y';\r\nimport {InspectorComponent} from './inspector.component';\r\nimport {InspectorSize} from './inspector-size.enum';\r\nimport {InspectorLocation} from \"./inspector-location.enum\";\r\n\r\ninterface InspectorConfig {\r\n  panelClass?: string | string[];\r\n  hasBackdrop?: boolean;\r\n  backdropClass?: string;\r\n  closeOnBackdropClick?: boolean;\r\n  size?: InspectorSize;\r\n  location?: InspectorLocation;\r\n  hasClose?: boolean;\r\n}\r\n\r\nconst DEFAULT_CONFIG: InspectorConfig = {\r\n  hasBackdrop: true,\r\n  backdropClass: 'hx-modal-background',\r\n  closeOnBackdropClick: true,\r\n  panelClass: [],\r\n  hasClose: true\r\n};\r\n\r\n@Injectable()\r\nexport class InspectorService {\r\n\r\n  private focusTrap;\r\n  private componentNativeElement;\r\n  private overlayCollection: InspectorOverlayRef[] = [];\r\n\r\n  constructor(\r\n    private injector: Injector,\r\n    private overlay: Overlay,\r\n    private focusTrapFactory: FocusTrapFactory\r\n  ) {}\r\n\r\n\r\n  /**\r\n   * Create component dynamically\r\n   */\r\n  open(component: any, config: InspectorConfig = {}, parameters?: Object): InspectorOverlayRef {\r\n\r\n    // Override default configuration\r\n    const inspectorConfig = { ...DEFAULT_CONFIG, ...config };\r\n\r\n    // Returns an OverlayRef (which is a PortalHost)\r\n    const overlayRef = this.createOverlay(inspectorConfig);\r\n\r\n    const inspectorRef = new InspectorOverlayRef(overlayRef);\r\n\r\n    // Create ComponentPortal that can be attached to a PortalHost\r\n    // and then attach ComponentPortal to PortalHost\r\n    const containerRef = this.attachInspectorContainer(component, overlayRef, inspectorConfig, inspectorRef, parameters);\r\n\r\n    // get reference to the inspector instance\r\n    const inspectorInstance = containerRef.instance;\r\n\r\n    // set size\r\n    inspectorInstance.size = (inspectorConfig.size && inspectorConfig.size === InspectorSize.Large) ? 'large' : 'small';\r\n\r\n    // set location\r\n    inspectorInstance.location = (inspectorConfig.location === InspectorLocation.Left) ? InspectorLocation.Left : InspectorLocation.Right;\r\n\r\n    // pass the @Input parameters to the instance\r\n    Object.assign(inspectorInstance.parameters, parameters);\r\n\r\n    // add reference to inspector component\r\n    inspectorRef.inspectorInstance = inspectorInstance;\r\n\r\n    // set close icon\r\n    inspectorInstance.hasClose = inspectorConfig.hasClose\r\n\r\n    // Subscribe to a stream that emits when the backdrop was clicked\r\n    overlayRef.backdropClick().subscribe(_ => {\r\n      if(config.closeOnBackdropClick){\r\n        inspectorRef.close();\r\n      }\r\n      inspectorRef.inspectorInstance.onBackdropClick();\r\n    });\r\n\r\n    // subscribe to events when close animation completes\r\n    inspectorInstance.onSlideOutComplete$.subscribe(_ => {\r\n      overlayRef.dispose();\r\n      this.overlayCollection.pop();\r\n        const lastInspector = this.overlayCollection[this.overlayCollection.length - 1];\r\n        if (lastInspector) {\r\n          lastInspector.inspectorInstance.size = lastInspector.inspectorInstance.previousSize;\r\n          lastInspector.inspectorInstance.hideClose = false;\r\n        }\r\n    });\r\n\r\n    // subscribe to events when open animation starts\r\n    inspectorInstance.onSlideInStart$.subscribe(_ => {\r\n      if (this.overlayCollection.length > 1) {\r\n        const previousInspector = this.overlayCollection[this.overlayCollection.length - 2];\r\n        previousInspector.inspectorInstance.previousSize = previousInspector.inspectorInstance.size;\r\n        const offsetSize = (previousInspector.inspectorInstance.size === previousInspector.inspectorInstance.sizes[InspectorSize.Small] && inspectorInstance.size === inspectorInstance.sizes[InspectorSize.Small]) ? InspectorSize.Offset : InspectorSize.FullWidth;\r\n        previousInspector.resize(offsetSize);\r\n        previousInspector.inspectorInstance.hideClose = true;\r\n      }\r\n    });\r\n\r\n    // create and manage focus trap\r\n    this.componentNativeElement = containerRef.location.nativeElement;\r\n    this.trapFocus();\r\n\r\n    // assign inspector ref\r\n    this.overlayCollection.push(inspectorRef);\r\n\r\n    return inspectorRef;\r\n  }\r\n\r\n  private createOverlay(config: InspectorConfig) {\r\n    // Returns an OverlayConfig\r\n    const overlayConfig = this.getOverlayConfig(config);\r\n\r\n    // Returns an OverlayRef\r\n    return this.overlay.create(overlayConfig);\r\n  }\r\n\r\n\r\n  private getOverlayConfig(config: InspectorConfig): OverlayConfig {\r\n    const positionStrategy = this.overlay.position()\r\n      .global()\r\n      .centerHorizontally();\r\n\r\n    if (config.location === InspectorLocation.Left){\r\n      positionStrategy.left('0');\r\n    } else {\r\n      positionStrategy.right('0');\r\n    }\r\n\r\n    const overlayConfig = new OverlayConfig({\r\n      hasBackdrop: config.hasBackdrop,\r\n      backdropClass: config.backdropClass,\r\n      panelClass: config.panelClass,\r\n      scrollStrategy: this.overlay.scrollStrategies.block(),\r\n      positionStrategy\r\n    });\r\n\r\n    return overlayConfig;\r\n  }\r\n\r\n  private createOverlayInjector(inspectorRef: InspectorOverlayRef): PortalInjector {\r\n    // Instantiate new WeakMap for our custom injection tokens\r\n    const injectionTokens = new WeakMap();\r\n\r\n    // Set custom injection tokens\r\n    injectionTokens.set(InspectorOverlayRef, inspectorRef);\r\n\r\n    // Instantiate new PortalInjector\r\n    return new PortalInjector(this.injector, injectionTokens);\r\n  }\r\n\r\n  private attachInspectorContainer(component: any, overlayRef: OverlayRef, config: InspectorConfig, inspectorRef: InspectorOverlayRef, parameters?: Object) {\r\n    const injector = this.createOverlayInjector(inspectorRef);\r\n    const containerPortal = new ComponentPortal(InspectorComponent , null, injector);\r\n    const containerRef: ComponentRef<InspectorComponent> = overlayRef.attach(containerPortal);\r\n    containerRef.instance.componentPortal = new ComponentPortal(component);\r\n\r\n    return containerRef;\r\n  }\r\n\r\n  private trapFocus() {\r\n    this.focusTrap = this.focusTrapFactory.create(this.componentNativeElement);\r\n    this.focusTrap.focusInitialElementWhenReady();\r\n  }\r\n\r\n}\r\n","import { PortalModule } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { InspectorComponent } from './inspector.component';\r\nimport { InspectorService } from './inspector.service';\r\n\r\n@NgModule({\r\n  imports: [PortalModule, CommonModule],\r\n  declarations: [InspectorComponent]\r\n})\r\nexport class InspectorModule {\r\n  public static forRoot(): ModuleWithProviders<InspectorModule> {\r\n    return {\r\n      ngModule: InspectorModule,\r\n      providers: [InspectorService]\r\n    };\r\n  }\r\n}\r\n","import {\r\n  AfterContentInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChild,\r\n  ElementRef,\r\n  Input,\r\n  ViewChild,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'hxa-line-clamp',\r\n  template: `\r\n  <div #box class=\"hxa-line-clamp-box\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n  <a class=\"toggle {{toggleCss}}\" *ngIf=\"enabled\" (click)=\" toggle() \">\r\n  {{opened ? 'Show Less' : 'Show More'}}\r\n  </a>`,\r\n  styleUrls: ['./line-clamp.component.scss'],\r\n})\r\nexport class LineClampComponent implements AfterContentInit {\r\n  @ContentChild('content') content: ElementRef;\r\n\r\n  @ViewChild('box') box: ElementRef;\r\n\r\n  @Input() row = 1;\r\n  @Input() toggleCss: string = \"hx-button is-link is-small\";\r\n\r\n  enabled = false;\r\n  opened = false;\r\n  private boxHeight: number;\r\n\r\n  constructor(private cd: ChangeDetectorRef) {}\r\n\r\n  ngAfterContentInit() {\r\n    setTimeout(() => {\r\n      // calc the content height and the box height\r\n      const contentElm = this.content.nativeElement;\r\n      const contentHeight = parseInt(\r\n        window\r\n          .getComputedStyle(contentElm, undefined)\r\n          .getPropertyValue('height'),\r\n        10\r\n      );\r\n      this.boxHeight = getLineHeight(contentElm) * this.row;\r\n      if (contentHeight > this.boxHeight) {\r\n        this.enable();\r\n        this.cd.detectChanges();\r\n      }\r\n      this.box.nativeElement.style.visibility = 'visible';\r\n    }, 0);\r\n  }\r\n\r\n  toggle() {\r\n    this.opened ? this.close() : this.open();\r\n  }\r\n\r\n  /**\r\n   * show more/less 機能を有効にする\r\n   */\r\n  private enable() {\r\n    this.enabled = true;\r\n    this.close();\r\n  }\r\n\r\n  private open() {\r\n    this.opened = true;\r\n\r\n    // enable clamp\r\n    this.box.nativeElement.style['-webkit-line-clamp'] = 'initial';\r\n    this.box.nativeElement.style.height = 'auto';\r\n  }\r\n\r\n  private close() {\r\n    this.opened = false;\r\n\r\n    // disable clamp\r\n    this.box.nativeElement.style['-webkit-line-clamp'] = this.row;\r\n    this.box.nativeElement.style.height = this.boxHeight + 'px';\r\n  }\r\n}\r\n\r\nfunction getLineHeight(element: HTMLElement): number {\r\n  let lineHeight = parseInt(\r\n    window.getComputedStyle(element, undefined).getPropertyValue('lineHeight'),\r\n    10\r\n  );\r\n  if (isNaN(lineHeight)) {\r\n    const clone = element.cloneNode() as HTMLElement;\r\n    clone.innerHTML = '<br>';\r\n    element.appendChild(clone);\r\n    lineHeight = clone.clientHeight;\r\n    element.removeChild(clone);\r\n  }\r\n  return lineHeight;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { LineClampComponent } from './line-clamp.component';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [LineClampComponent],\r\n  exports: [LineClampComponent]\r\n})\r\nexport class LineClampModule {}\r\n","import {Component, Input, OnInit} from '@angular/core';\r\nimport {Context, Size} from '../enums';\r\n\r\n@Component({\r\n  selector: 'hxa-loader, hxa-loaders',\r\n  templateUrl: './loaders.component.html',\r\n  styleUrls: ['./loaders.component.scss']\r\n})\r\nexport class LoadersComponent implements OnInit {\r\n\r\n  @Input()\r\n  size: Size = Size.Default;\r\n\r\n  @Input()\r\n  context: Context = Context.None;\r\n\r\n  /** Enums to be used in the template **/\r\n  contextEnum = Context;\r\n  sizeEnum = Size;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n}\r\n","<div class=\"hx-loader\"\r\n     [class.is-small]=\"size === sizeEnum.Small\"\r\n     [class.is-primary]=\"context === contextEnum.Success\"\r\n     [class.is-warning]=\"context === contextEnum.Warning\"\r\n     [class.is-danger]=\"context === contextEnum.Danger\"\r\n     [class.is-info]=\"context === contextEnum.Info\"><div></div><div></div><div></div><div></div></div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { LoadersComponent } from './loaders.component';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [LoadersComponent],\r\n  exports: [LoadersComponent]\r\n})\r\nexport class LoadersModule {}\r\n","// These 2 items will make sure that you can annotate\r\n// a custom modal component with @Modal()\r\nexport class ModalContainer {\r\n    protected destroy: Function;\r\n    protected close(): void {\r\n        this.destroy();\r\n    }\r\n}\r\nexport function Modal() {\r\n    return function (target: any) {\r\n        Object.assign(target.prototype,  ModalContainer.prototype);\r\n    };\r\n}","\r\nimport {Component} from '@angular/core';\r\nimport {Modal} from './modal.annotation';\r\n\r\n@Component({\r\n    selector: 'hx-modal-backdrop',\r\n    template: `<div class=\"hx-modal-backdrop fade in\" (click)=\"dismiss()\"></div>`\r\n})\r\n@Modal()\r\nexport class ModalBackdropComponent {\r\n    protected destroy: Function;\r\n    protected close: Function;\r\n\r\n    dismiss(): void {\r\n        this.close();\r\n        this.destroy();\r\n    }\r\n}\r\n","import {\r\n  ViewContainerRef,\r\n  ReflectiveInjector,\r\n  Injectable,\r\n  Injector,\r\n  ComponentRef,\r\n  ComponentFactoryResolver,\r\n  Optional,\r\n  Inject\r\n} from '@angular/core';\r\nimport { ModalBackdropComponent } from './modal-backdrop.component';\r\nimport { FocusTrapFactory } from '@angular/cdk/a11y';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable()\r\nexport class ModalService {\r\n  // here we hold our placeholder\r\n  private vcRef: ViewContainerRef;\r\n  // here we hold our injector\r\n  private injector: Injector;\r\n  // here we hold the backdrop component\r\n  private backdropRef: ComponentRef<ModalBackdropComponent>;\r\n  // Element that was focused before the dialog was opened. Save this to restore upon close.\r\n  private elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\r\n\r\n  private componentRef;\r\n\r\n  private componentNativeElement;\r\n\r\n  private focusTrap;\r\n\r\n  constructor(\r\n    private componentFactoryResolver: ComponentFactoryResolver,\r\n    private focusTrapFactory: FocusTrapFactory,\r\n    @Optional()\r\n    @Inject(DOCUMENT)\r\n    private document: any\r\n  ) {}\r\n\r\n  registerViewContainerRef(vcRef: ViewContainerRef): void {\r\n    this.vcRef = vcRef;\r\n  }\r\n\r\n  registerInjector(injector: Injector): void {\r\n    this.injector = injector;\r\n  }\r\n\r\n  /**\r\n   * Create component dynamically\r\n   */\r\n  create<T>(component: any, parameters?: Object): ComponentRef<T> {\r\n    // create backdrop\r\n    this.backdropRef = this.dynamicComponentLoader<ModalBackdropComponent>(\r\n      ModalBackdropComponent\r\n    );\r\n\r\n    // create dynamic component\r\n    this.componentRef = this.dynamicComponentLoader<T>(component, parameters);\r\n\r\n    this.componentNativeElement = this.componentRef.location.nativeElement;\r\n    this.trapFocus();\r\n\r\n    return this.componentRef;\r\n  }\r\n\r\n  close() {\r\n    if (!!this.componentRef) {\r\n      this.componentRef.destroy();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Load dynamic component and return componentRef\r\n   */\r\n  private dynamicComponentLoader<T>(\r\n    component: any,\r\n    parameters?: Object\r\n  ): ComponentRef<any> {\r\n    // compile the component based on its type and\r\n    // create a component factory\r\n    const factory = this.componentFactoryResolver.resolveComponentFactory(\r\n      component\r\n    );\r\n    // the injector will be needed for DI in\r\n    // the custom component\r\n    const childInjector = ReflectiveInjector.resolveAndCreate(\r\n      [],\r\n      this.injector\r\n    );\r\n    // create the actual component\r\n    const componentRef = this.vcRef.createComponent(factory, 0, childInjector);\r\n\r\n    // pass the @Input parameters to the instance\r\n    Object.assign(componentRef.instance, parameters);\r\n    // add a destroy method to the modal instance\r\n    componentRef.instance['destroy'] = () => {\r\n      // this will close the backdrop\r\n      this.backdropRef.destroy();\r\n      // this will destroy the component\r\n      componentRef.destroy();\r\n      this.restoreFocus();\r\n    };\r\n\r\n    return componentRef;\r\n  }\r\n\r\n  private trapFocus() {\r\n    this.focusTrap = this.focusTrapFactory.create(this.componentNativeElement);\r\n    this.savePreviouslyFocusedElement();\r\n    this.focusTrap.focusInitialElementWhenReady();\r\n  }\r\n\r\n  private restoreFocus() {\r\n    const toFocus = this.elementFocusedBeforeDialogWasOpened;\r\n\r\n    if (toFocus && typeof toFocus.focus === 'function') {\r\n      toFocus.focus();\r\n    }\r\n\r\n    if (this.focusTrap) {\r\n      this.focusTrap.destroy();\r\n    }\r\n  }\r\n\r\n  private savePreviouslyFocusedElement() {\r\n    if (this.document) {\r\n      this.elementFocusedBeforeDialogWasOpened = this.document\r\n        .activeElement as HTMLElement;\r\n    }\r\n  }\r\n}\r\n","import {Component, ViewChild, OnInit, ViewContainerRef, Injector } from '@angular/core';\r\nimport {ModalService} from './modal.service';\r\n\r\n// this is the modal container\r\n@Component({\r\n    selector: 'hx-modal-placeholder',\r\n    template: `<div #modalPlaceholder></div>`\r\n})\r\nexport class ModalPlaceholderComponent implements OnInit {\r\n    @ViewChild('modalPlaceholder', {read: ViewContainerRef, static: true}) viewContainerRef;\r\n\r\n    constructor(private modalService: ModalService, private injector: Injector) {\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.modalService.registerViewContainerRef(this.viewContainerRef);\r\n        this.modalService.registerInjector(this.injector);\r\n    }\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { ModalBackdropComponent } from './modal-backdrop.component';\r\nimport { ModalPlaceholderComponent } from './modal-placeholder.component';\r\nimport { ModalService } from './modal.service';\r\n\r\n@NgModule({\r\n  declarations: [ModalPlaceholderComponent, ModalBackdropComponent],\r\n  exports: [ModalPlaceholderComponent]\r\n})\r\nexport class ModalModule {\r\n  public static forRoot(): ModuleWithProviders<ModalModule> {\r\n    return {\r\n      ngModule: ModalModule,\r\n      providers: [ModalService]\r\n    };\r\n  }\r\n}\r\n","// todo: split\r\nimport { Injectable } from '@angular/core';\r\n\r\n/** Provides default values for Pagination and pager components */\r\n@Injectable()\r\nexport class PaginationConfig {\r\n  public main: any = {\r\n    maxSize: void 0,\r\n    itemsPerPage: 10,\r\n    boundaryLinks: false,\r\n    directionLinks: true,\r\n    firstText: 'First',\r\n    previousText: 'Previous',\r\n    nextText: 'Next',\r\n    lastText: 'Last',\r\n    pageBtnClass: '',\r\n    rotate: true,\r\n    sticky: false\r\n  };\r\n  public pager: any = {\r\n    itemsPerPage: 15,\r\n    previousText: 'Previous',\r\n    nextText: 'Next',\r\n    pageBtnClass: '',\r\n    align: true\r\n  };\r\n}\r\n","import { Component, ElementRef, OnInit, Renderer2, Input, Output, EventEmitter, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { PageChangedEvent } from './pagination.component';\r\nimport { PaginationConfig } from './pagination.config';\r\n\r\nexport const PAGER_CONTROL_VALUE_ACCESSOR: any = {\r\n  provide: NG_VALUE_ACCESSOR,\r\n  useExisting: forwardRef(() => PagerComponent),\r\n  multi: true\r\n};\r\n\r\nconst PAGER_TEMPLATE = `\r\n    <ul class=\"hx-flex hx-flex-justify-between\">\r\n      <li [class.is-disabled]=\"noPrevious()\" [class.is-previous]=\"align\" class=\"{{ pageBtnClass }}\">\r\n        <a href (click)=\"selectPage(page - 1, $event)\">{{getText('previous')}}</a>\r\n      </li>\r\n      <li [class.is-disabled]=\"noNext()\" [class.is-next]=\"align\" class=\"{{ pageBtnClass }}\">\r\n        <a href (click)=\"selectPage(page + 1, $event)\">{{getText('next')}}</a>\r\n      </li>\r\n  </ul>\r\n`;\r\n\r\n@Component({\r\n  selector: 'hx-pager',\r\n  template: PAGER_TEMPLATE,\r\n  providers: [PAGER_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class PagerComponent implements ControlValueAccessor, OnInit {\r\n  public config: any;\r\n  /** if `true` aligns each link to the sides of pager */\r\n  @Input() public align: boolean;\r\n  /** limit number for page links in pager */\r\n  @Input() public maxSize: number;\r\n  /** if false first and last buttons will be hidden */\r\n  @Input() public boundaryLinks: boolean;\r\n  /** if false previous and next buttons will be hidden */\r\n  @Input() public directionLinks: boolean;\r\n  // labels\r\n  /** first button text */\r\n  @Input() public firstText: string;\r\n  /** previous button text */\r\n  @Input() public previousText: string;\r\n  /** next button text */\r\n  @Input() public nextText: string;\r\n  /** last button text */\r\n  @Input() public lastText: string;\r\n  /** if true current page will in the middle of pages list */\r\n  @Input() public rotate: boolean;\r\n  // css\r\n  /** add class to <li> */\r\n  @Input() public pageBtnClass: string;\r\n\r\n  /** if true pagination component will be disabled */\r\n  @Input() public disabled: boolean;\r\n\r\n  /** fired when total pages count changes, $event:number equals to total pages count */\r\n  @Output() public numPages: EventEmitter<number> = new EventEmitter<number>();\r\n  /** fired when page was changed, $event:{page, itemsPerPage} equals to object with current page index and number of items per page */\r\n  @Output() public pageChanged: EventEmitter<PageChangedEvent> = new EventEmitter<PageChangedEvent>();\r\n\r\n  /** maximum number of items per page. If value less than 1 will display all items on one page */\r\n  @Input()\r\n  public get itemsPerPage(): number {\r\n    return this._itemsPerPage;\r\n  }\r\n\r\n  public set itemsPerPage(v: number) {\r\n    this._itemsPerPage = v;\r\n    this.totalPages = this.calculateTotalPages();\r\n  }\r\n\r\n  /** total number of items in all pages */\r\n  @Input()\r\n  public get totalItems(): number {\r\n    return this._totalItems;\r\n  }\r\n\r\n  public set totalItems(v: number) {\r\n    this._totalItems = v;\r\n    this.totalPages = this.calculateTotalPages();\r\n  }\r\n\r\n  public get totalPages(): number {\r\n    return this._totalPages;\r\n  }\r\n\r\n  public set totalPages(v: number) {\r\n    this._totalPages = v;\r\n    this.numPages.emit(v);\r\n    if (this.inited) {\r\n      this.selectPage(this.page);\r\n    }\r\n  }\r\n\r\n  public set page(value: number) {\r\n    const _previous = this._page;\r\n    this._page = (value > this.totalPages) ? this.totalPages : (value || 1);\r\n\r\n    if (_previous === this._page || typeof _previous === 'undefined') {\r\n      return;\r\n    }\r\n\r\n    this.pageChanged.emit({\r\n      page: this._page,\r\n      itemsPerPage: this.itemsPerPage\r\n    });\r\n  }\r\n\r\n  public get page(): number {\r\n    return this._page;\r\n  }\r\n\r\n  public onChange: any = Function.prototype;\r\n  public onTouched: any = Function.prototype;\r\n\r\n  public renderer: Renderer2;\r\n  public elementRef: ElementRef;\r\n\r\n  public classMap: string;\r\n  public pages: any[];\r\n\r\n  protected _itemsPerPage: number;\r\n  protected _totalItems: number;\r\n  protected _totalPages: number;\r\n  protected inited = false;\r\n  protected _page = 1;\r\n\r\n  public constructor(renderer: Renderer2, elementRef: ElementRef, paginationConfig: PaginationConfig) {\r\n    this.renderer = renderer;\r\n    this.elementRef = elementRef;\r\n    if (!this.config) {\r\n      this.configureOptions(Object.assign({}, paginationConfig.main, paginationConfig.pager));\r\n    }\r\n  }\r\n\r\n  public configureOptions(config: any): void {\r\n    this.config = Object.assign({}, config);\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\r\n    // watch for maxSize\r\n    this.maxSize = typeof this.maxSize !== 'undefined'\r\n      ? this.maxSize\r\n      : this.config.maxSize;\r\n    this.rotate = typeof this.rotate !== 'undefined'\r\n      ? this.rotate\r\n      : this.config.rotate;\r\n    this.boundaryLinks = typeof this.boundaryLinks !== 'undefined'\r\n      ? this.boundaryLinks\r\n      : this.config.boundaryLinks;\r\n    this.directionLinks = typeof this.directionLinks !== 'undefined'\r\n      ? this.directionLinks\r\n      : this.config.directionLinks;\r\n    this.pageBtnClass = typeof this.pageBtnClass !== 'undefined'\r\n      ? this.pageBtnClass\r\n      : this.config.pageBtnClass;\r\n\r\n    // base class\r\n    this.itemsPerPage = typeof this.itemsPerPage !== 'undefined'\r\n      ? this.itemsPerPage\r\n      : this.config.itemsPerPage;\r\n    this.totalPages = this.calculateTotalPages();\r\n    // this class\r\n    this.pages = this.getPages(this.page, this.totalPages);\r\n    this.inited = true;\r\n  }\r\n\r\n  public writeValue(value: number): void {\r\n    this.page = value;\r\n    this.pages = this.getPages(this.page, this.totalPages);\r\n  }\r\n\r\n  public getText(key: string): string {\r\n    return (this as any)[key + 'Text'] || this.config[key + 'Text'];\r\n  }\r\n\r\n  public noPrevious(): boolean {\r\n    return this.page === 1;\r\n  }\r\n\r\n  public noNext(): boolean {\r\n    return this.page === this.totalPages;\r\n  }\r\n\r\n  public registerOnChange(fn: (_: any) => {}): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  public registerOnTouched(fn: () => {}): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  public selectPage(page: number, event?: Event): void {\r\n    if (event) {\r\n      event.preventDefault();\r\n    }\r\n\r\n    if (!this.disabled) {\r\n      if (event && event.target) {\r\n        const target: any = event.target;\r\n        target.blur();\r\n      }\r\n      this.writeValue(page);\r\n      this.onChange(this.page);\r\n    }\r\n  }\r\n\r\n  // Create page object used in template\r\n  protected makePage(num: number, text: string, active: boolean): {number: number, text: string, active: boolean} {\r\n    return {text, number: num, active};\r\n  }\r\n\r\n  protected getPages(currentPage: number, totalPages: number): any[] {\r\n    const pages: any[] = [];\r\n\r\n    // Default page limits\r\n    let startPage = 1;\r\n    let endPage = totalPages;\r\n    const isMaxSized = typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;\r\n\r\n    // recompute if maxSize\r\n    if (isMaxSized) {\r\n      if (this.rotate) {\r\n        // Current page is displayed in the middle of the visible ones\r\n        startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);\r\n        endPage = startPage + this.maxSize - 1;\r\n\r\n        // Adjust if limit is exceeded\r\n        if (endPage > totalPages) {\r\n          endPage = totalPages;\r\n          startPage = endPage - this.maxSize + 1;\r\n        }\r\n      } else {\r\n        // Visible pages are paginated with maxSize\r\n        startPage = ((Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize) + 1;\r\n\r\n        // Adjust last page if limit is exceeded\r\n        endPage = Math.min(startPage + this.maxSize - 1, totalPages);\r\n      }\r\n    }\r\n\r\n    // Add page number links\r\n    for (let num = startPage; num <= endPage; num++) {\r\n      const page = this.makePage(num, num.toString(), num === currentPage);\r\n      pages.push(page);\r\n    }\r\n\r\n    // Add links to move between page sets\r\n    if (isMaxSized && !this.rotate) {\r\n      if (startPage > 1) {\r\n        const previousPageSet = this.makePage(startPage - 1, '...', false);\r\n        pages.unshift(previousPageSet);\r\n      }\r\n\r\n      if (endPage < totalPages) {\r\n        const nextPageSet = this.makePage(endPage + 1, '...', false);\r\n        pages.push(nextPageSet);\r\n      }\r\n    }\r\n\r\n    return pages;\r\n  }\r\n\r\n  // base class\r\n  protected calculateTotalPages(): number {\r\n    const totalPages = this.itemsPerPage < 1\r\n      ? 1\r\n      : Math.ceil(this.totalItems / this.itemsPerPage);\r\n    return Math.max(totalPages || 0, 1);\r\n  }\r\n}\r\n","import {\r\n  Component, ElementRef, EventEmitter, Input, OnInit, Output, Renderer2, Self, forwardRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { PaginationConfig } from './pagination.config';\r\n\r\nexport interface PageChangedEvent {\r\n  itemsPerPage: number;\r\n  page: number;\r\n}\r\n\r\nexport const PAGINATION_CONTROL_VALUE_ACCESSOR: any = {\r\n  provide: NG_VALUE_ACCESSOR,\r\n  useExisting: forwardRef(() => PaginationComponent),\r\n  multi: true\r\n};\r\n\r\nconst PAGINATION_TEMPLATE = `\r\n  <ul class=\"hx-pagination\" [ngClass]=\"classMap\" [class.is-sticky]=\"sticky\">\r\n    <li class=\"is-first\"\r\n        *ngIf=\"boundaryLinks\"\r\n        [class.is-disabled]=\"noPrevious()||disabled\">\r\n      <a href (click)=\"selectPage(1, $event)\" [innerHTML]=\"getText('first')\"></a>\r\n    </li>\r\n\r\n    <li class=\"is-prev\"\r\n        *ngIf=\"directionLinks\"\r\n        [class.is-disabled]=\"noPrevious()||disabled\">\r\n      <a href (click)=\"selectPage(page - 1, $event)\" [innerHTML]=\"getText('previous')\"></a>\r\n      </li>\r\n\r\n    <li *ngFor=\"let pg of pages\"\r\n        [class.is-current]=\"pg.active\"\r\n        [class.is-disabled]=\"disabled&&!pg.active\">\r\n      <a href (click)=\"selectPage(pg.number, $event)\" [innerHTML]=\"pg.text\"></a>\r\n    </li>\r\n\r\n    <li class=\"is-next\"\r\n        *ngIf=\"directionLinks\"\r\n        [class.is-disabled]=\"noNext()||disabled\">\r\n      <a class=\"page-link\" href (click)=\"selectPage(page + 1, $event)\" [innerHTML]=\"getText('next')\"></a></li>\r\n\r\n    <li class=\"is-last\"\r\n        *ngIf=\"boundaryLinks\"\r\n        [class.is-disabled]=\"noNext()||disabled\">\r\n      <a href (click)=\"selectPage(totalPages, $event)\" [innerHTML]=\"getText('last')\"></a></li>\r\n  </ul>\r\n  `;\r\n\r\n@Component({\r\n  selector: 'hx-pagination',\r\n  template: PAGINATION_TEMPLATE,\r\n  providers: [PAGINATION_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class PaginationComponent implements ControlValueAccessor, OnInit {\r\n  public config: any;\r\n  /** if `true` aligns each link to the sides of pager */\r\n  @Input() public align: boolean;\r\n  /** limit number for page links in pager */\r\n  @Input() public maxSize: number;\r\n  /** if false first and last buttons will be hidden */\r\n  @Input() public boundaryLinks: boolean;\r\n  /** if false previous and next buttons will be hidden */\r\n  @Input() public directionLinks: boolean;\r\n  // labels\r\n  /** first button text */\r\n  @Input() public firstText: string;\r\n  /** previous button text */\r\n  @Input() public previousText: string;\r\n  /** next button text */\r\n  @Input() public nextText: string;\r\n  /** last button text */\r\n  @Input() public lastText: string;\r\n  /** if true current page will in the middle of pages list */\r\n  @Input() public rotate: boolean;\r\n  /** if true the .is-sticky modifier will be added to the pagination component*/\r\n  @Input() public sticky: boolean;\r\n  // css\r\n  /** add class to <li> */\r\n  @Input() public pageBtnClass: string;\r\n\r\n  /** if true pagination component will be disabled */\r\n  @Input() public disabled: boolean;\r\n\r\n  /** fired when total pages count changes, $event:number equals to total pages count */\r\n  @Output() public numPages: EventEmitter<number> = new EventEmitter<number>();\r\n  /** fired when page was changed, $event:{page, itemsPerPage} equals to object with current page index and number of items per page */\r\n  @Output() public pageChanged: EventEmitter<PageChangedEvent> = new EventEmitter<PageChangedEvent>();\r\n\r\n  /** maximum number of items per page. If value less than 1 will display all items on one page */\r\n  @Input()\r\n  public get itemsPerPage(): number {\r\n    return this._itemsPerPage;\r\n  }\r\n\r\n  public set itemsPerPage(v: number) {\r\n    this._itemsPerPage = v;\r\n    this.totalPages = this.calculateTotalPages();\r\n  }\r\n\r\n  /** total number of items in all pages */\r\n  @Input()\r\n  public get totalItems(): number {\r\n    return this._totalItems;\r\n  }\r\n\r\n  public set totalItems(v: number) {\r\n    this._totalItems = v;\r\n    this.totalPages = this.calculateTotalPages();\r\n  }\r\n\r\n  public get totalPages(): number {\r\n    return this._totalPages;\r\n  }\r\n\r\n  public set totalPages(v: number) {\r\n    this._totalPages = v;\r\n    this.numPages.emit(v);\r\n    if (this.inited) {\r\n      this.selectPage(this.page);\r\n    }\r\n  }\r\n\r\n  public set page(value: number) {\r\n    const _previous = this._page;\r\n    this._page = (value > this.totalPages) ? this.totalPages : (value || 1);\r\n\r\n    if (_previous === this._page || typeof _previous === 'undefined') {\r\n      return;\r\n    }\r\n\r\n    this.pageChanged.emit({\r\n      page: this._page,\r\n      itemsPerPage: this.itemsPerPage\r\n    });\r\n  }\r\n\r\n  public get page(): number {\r\n    return this._page;\r\n  }\r\n\r\n  public onChange: any = Function.prototype;\r\n  public onTouched: any = Function.prototype;\r\n  public renderer: Renderer2;\r\n  public elementRef: ElementRef;\r\n  public classMap: string;\r\n  public pages: any[];\r\n\r\n  protected _itemsPerPage: number;\r\n  protected _totalItems: number;\r\n  protected _totalPages: number;\r\n  protected inited = false;\r\n  protected _page = 1;\r\n\r\n  public constructor(renderer: Renderer2, elementRef: ElementRef, paginationConfig: PaginationConfig) {\r\n    this.renderer = renderer;\r\n    this.elementRef = elementRef;\r\n    if (!this.config) {\r\n      this.configureOptions(paginationConfig.main);\r\n    }\r\n  }\r\n\r\n  public configureOptions(config: any): void {\r\n    this.config = Object.assign({}, config);\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\r\n    // watch for maxSize\r\n    this.maxSize = typeof this.maxSize !== 'undefined'\r\n      ? this.maxSize\r\n      : this.config.maxSize;\r\n    this.rotate = typeof this.rotate !== 'undefined'\r\n      ? this.rotate\r\n      : this.config.rotate;\r\n    this.boundaryLinks = typeof this.boundaryLinks !== 'undefined'\r\n      ? this.boundaryLinks\r\n      : this.config.boundaryLinks;\r\n    this.directionLinks = typeof this.directionLinks !== 'undefined'\r\n      ? this.directionLinks\r\n      : this.config.directionLinks;\r\n    this.pageBtnClass = typeof this.pageBtnClass !== 'undefined'\r\n    ? this.pageBtnClass\r\n    : this.config.pageBtnClass;\r\n\r\n    // base class\r\n    this.itemsPerPage = typeof this.itemsPerPage !== 'undefined'\r\n      ? this.itemsPerPage\r\n      : this.config.itemsPerPage;\r\n    this.totalPages = this.calculateTotalPages();\r\n    // this class\r\n    this.pages = this.getPages(this.page, this.totalPages);\r\n    this.inited = true;\r\n  }\r\n\r\n  public writeValue(value: number): void {\r\n    this.page = value;\r\n    this.pages = this.getPages(this.page, this.totalPages);\r\n  }\r\n\r\n  public getText(key: string): string {\r\n    return (this as any)[key + 'Text'] || this.config[key + 'Text'];\r\n  }\r\n\r\n  public noPrevious(): boolean {\r\n    return this.page === 1;\r\n  }\r\n\r\n  public noNext(): boolean {\r\n    return this.page === this.totalPages;\r\n  }\r\n\r\n  public registerOnChange(fn: (_: any) => {}): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  public registerOnTouched(fn: () => {}): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  public selectPage(page: number, event?: Event): void {\r\n    if (event) {\r\n      event.preventDefault();\r\n    }\r\n\r\n    if (!this.disabled) {\r\n      if (event && event.target) {\r\n        const target: any = event.target;\r\n        target.blur();\r\n      }\r\n      this.writeValue(page);\r\n      this.onChange(this.page);\r\n    }\r\n  }\r\n\r\n  // Create page object used in template\r\n  protected makePage(num: number, text: string, active: boolean): {number: number, text: string, active: boolean} {\r\n    return { text, number: num, active };\r\n  }\r\n\r\n  protected getPages(currentPage: number, totalPages: number): any[] {\r\n    const pages: any[] = [];\r\n\r\n    // Default page limits\r\n    let startPage = 1;\r\n    let endPage = totalPages;\r\n    const isMaxSized = typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;\r\n\r\n    // recompute if maxSize\r\n    if (isMaxSized) {\r\n      if (this.rotate) {\r\n        // Current page is displayed in the middle of the visible ones\r\n        startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);\r\n        endPage = startPage + this.maxSize - 1;\r\n\r\n        // Adjust if limit is exceeded\r\n        if (endPage > totalPages) {\r\n          endPage = totalPages;\r\n          startPage = endPage - this.maxSize + 1;\r\n        }\r\n      } else {\r\n        // Visible pages are paginated with maxSize\r\n        startPage = ((Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize) + 1;\r\n\r\n        // Adjust last page if limit is exceeded\r\n        endPage = Math.min(startPage + this.maxSize - 1, totalPages);\r\n      }\r\n    }\r\n\r\n    // Add page number links\r\n    for (let num = startPage; num <= endPage; num++) {\r\n      const page = this.makePage(num, num.toString(), num === currentPage);\r\n      pages.push(page);\r\n    }\r\n\r\n    // Add links to move between page sets\r\n    if (isMaxSized && !this.rotate) {\r\n      if (startPage > 1) {\r\n        const previousPageSet = this.makePage(startPage - 1, '...', false);\r\n        pages.unshift(previousPageSet);\r\n      }\r\n\r\n      if (endPage < totalPages) {\r\n        const nextPageSet = this.makePage(endPage + 1, '...', false);\r\n        pages.push(nextPageSet);\r\n      }\r\n    }\r\n\r\n    return pages;\r\n  }\r\n\r\n  // base class\r\n  protected calculateTotalPages(): number {\r\n    const totalPages = this.itemsPerPage < 1\r\n      ? 1\r\n      : Math.ceil(this.totalItems / this.itemsPerPage);\r\n    return Math.max(totalPages || 0, 1);\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { PaginationConfig } from './pagination.config';\r\n\r\nimport { PagerComponent } from './pager.component';\r\nimport { PaginationComponent } from './pagination.component';\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [PagerComponent, PaginationComponent],\r\n  exports: [PagerComponent, PaginationComponent]\r\n})\r\nexport class PaginationModule {\r\n  public static forRoot(): ModuleWithProviders<PaginationModule> {\r\n    return {ngModule: PaginationModule, providers: [PaginationConfig]};\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Input,\r\n  TemplateRef\r\n} from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { Context, Visibility } from '../enums';\r\nimport { TooltipDynamicContentDirective } from './tooltip-dynamic-content.directive';\r\n\r\n@Component({\r\n  selector: 'hx-tooltip-content, hxa-tooltip-content',\r\n  template: `\r\n    <div class=\"hxui-reset\">\r\n      <div\r\n        class=\"hx-tooltip is-{{ placement }}\"\r\n        [class.is-active]=\"visibility === visibilityEnum.Visible\"\r\n        [class.is-success]=\"context === contextEnum.Success\"\r\n        [class.is-warning]=\"context === contextEnum.Warning\"\r\n        [class.is-danger]=\"context === contextEnum.Danger\"\r\n        [class.is-white]=\"context === contextEnum.White\"\r\n        role=\"tooltip\"\r\n      >\r\n        <div\r\n          *ngIf=\"!dynamicContent\"\r\n          class=\"hx-tooltip-content\"\r\n          [innerHtml]=\"content\"\r\n          [style.max-width.px]=\"maxWidth\"\r\n        ></div>\r\n        <div\r\n          *ngIf=\"dynamicContent\"\r\n          class=\"hx-tooltip-content\"\r\n          [style.max-width.px]=\"maxWidth\"\r\n        >\r\n          <ng-container [ngTemplateOutlet]=\"dynamicContent\"></ng-container>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  `,\r\n  styles: [\r\n    '.hxa-tooltip-panel { display:flex; position: absolute; pointer-events: auto; box-sizing: border-box; z-index: 1000; max-width: 100%; max-height: 100%;}',\r\n    '.hx-tooltip.is-left, .hx-tooltip.is-left:before{ margin-right:.5rem; }',\r\n    '.hx-tooltip.is-right, .hx-tooltip.is-right:before{ margin-left:.5rem; }',\r\n    '.hx-tooltip.is-bottom, .hx-tooltip.is-bottom:before{ margin-top:.5rem; }',\r\n    '.hx-tooltip.is-top, .hx-tooltip.is-top:before{ margin-bottom:.5rem; }'\r\n  ]\r\n})\r\nexport class TooltipContentComponent {\r\n  @Input()\r\n  content: string;\r\n\r\n  @Input()\r\n  placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\r\n\r\n  @Input()\r\n  context: Context = Context.None;\r\n\r\n  @Input()\r\n  maxWidth = 200;\r\n\r\n  @Input()\r\n  dynamicContent: TemplateRef<TooltipDynamicContentDirective>;\r\n\r\n  /** Enums to be used in the template **/\r\n  contextEnum = Context;\r\n  visibilityEnum = Visibility;\r\n\r\n  visibility: Visibility = Visibility.Hidden;\r\n\r\n  /** Subject for notifying that the tooltip has been hidden from the view */\r\n  private readonly _onHide: Subject<any> = new Subject();\r\n\r\n  /** The timeout ID of any current timer set to show the tooltip */\r\n  private _showTimeoutId: number;\r\n\r\n  /** The timeout ID of any current timer set to hide the tooltip */\r\n  private _hideTimeoutId: number;\r\n\r\n  constructor(private _changeDetectionRef: ChangeDetectorRef) {}\r\n\r\n  /**\r\n   * Shows the tooltip\r\n   * @param delay Amount of milliseconds to the delay showing the tooltip.\r\n   */\r\n  show(delay: number): void {\r\n    // Cancel the delayed hide if it is scheduled\r\n    if (this._hideTimeoutId) {\r\n      clearTimeout(this._hideTimeoutId);\r\n    }\r\n    this._showTimeoutId = window.setTimeout(() => {\r\n      // Schedule for change detection incase the tooltip is used within a\r\n      // component with OnPush change detection\r\n      this._changeDetectionRef.markForCheck();\r\n      this.visibility = Visibility.Visible;\r\n    }, delay);\r\n  }\r\n\r\n  /**\r\n   * Hide the tooltip after the provided delay in ms.\r\n   * @param delay Amount of milliseconds to delay hiding the tooltip.\r\n   */\r\n  hide(delay: number): void {\r\n    // Cancel the delayed show if it is scheduled\r\n    if (this._showTimeoutId) {\r\n      clearTimeout(this._showTimeoutId);\r\n    }\r\n\r\n    this._hideTimeoutId = window.setTimeout(() => {\r\n      this.visibility = Visibility.Hidden;\r\n      this._onHide.next(true);\r\n    }, delay);\r\n  }\r\n\r\n  /** Returns an observable that notifies when the tooltip has been hidden from view. */\r\n  afterHidden(): Observable<void> {\r\n    return this._onHide.asObservable();\r\n  }\r\n\r\n  isVisible(): boolean {\r\n    return this.visibility === Visibility.Visible;\r\n  }\r\n}\r\n","import {\r\n  Directive, ElementRef, HostBinding, Input, OnInit, Renderer2, TemplateRef,\r\n} from '@angular/core';\r\n\r\n\r\n@Directive({\r\n  selector: '[hxTooltipDynamicContent],[hxaTooltipDynamicContent]',\r\n  exportAs: 'hx-tooltip-dynamic-content'\r\n})\r\nexport class TooltipDynamicContentDirective implements OnInit {\r\n\r\n  public templateRef: TemplateRef<any>;\r\n\r\n  constructor(_templateRef: TemplateRef<any>) {\r\n    this.templateRef = _templateRef;\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n  }\r\n\r\n}\r\n","import {Injectable, Input} from '@angular/core';\r\nimport { Context } from '../enums';\r\n\r\n/** Default values provider for tooltip */\r\n@Injectable()\r\nexport class TooltipConfig {\r\n  /** tooltip placement, supported positions: 'top', 'bottom', 'left', 'right' */\r\n  public placement: 'top'|'bottom'|'left'|'right' = 'bottom';\r\n  /** tooltip context (colour) */\r\n  public context: Context = Context.None;\r\n  /** should tooltip start in a disabled state */\r\n  public disabled = false;\r\n  /** animate tooltip or not */\r\n  public animation = true;\r\n  /** delay in ms before showing the tooltip after show is called */\r\n  public showDelay = 0;\r\n  /** delay in ms before hiding the tooltip after hide is called */\r\n  public hideDelay = 0;\r\n  /** max width of the tooltip */\r\n  public maxWidth = 200;\r\n}\r\n","import { Directionality } from '@angular/cdk/bidi';\r\nimport {\r\n  FlexibleConnectedPositionStrategy,\r\n  HorizontalConnectionPos,\r\n  OriginConnectionPosition,\r\n  Overlay,\r\n  OverlayConnectionPosition,\r\n  OverlayRef,\r\n  ScrollDispatcher,\r\n  VerticalConnectionPos\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport {\r\n  ComponentFactoryResolver,\r\n  ContentChild,\r\n  Directive,\r\n  ElementRef,\r\n  HostBinding,\r\n  HostListener,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  Optional,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { take, takeUntil } from 'rxjs/operators';\r\nimport { Context } from '../enums';\r\nimport { TooltipContentComponent } from './tooltip-content.component';\r\nimport { TooltipDynamicContentDirective } from './tooltip-dynamic-content.directive';\r\nimport { TooltipConfig } from './tooltip.config';\r\n\r\n@Directive({\r\n  selector: '[hxTooltip], [hxaTooltip]'\r\n})\r\nexport class TooltipDirective implements OnDestroy {\r\n  @ContentChild(TooltipDynamicContentDirective)\r\n  dynamicContent: TooltipDynamicContentDirective;\r\n\r\n  _overlayRef: OverlayRef | null;\r\n  _tooltipInstance: TooltipContentComponent | null;\r\n\r\n  private _portal: ComponentPortal<TooltipContentComponent>;\r\n  private readonly _destroyed = new Subject();\r\n\r\n  @HostBinding('style.position')\r\n  position = 'relative';\r\n\r\n  @Input('hxTooltip')\r\n  content: string;\r\n\r\n  @Input()\r\n  disabled: boolean;\r\n\r\n  @Input()\r\n  placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\r\n\r\n  @Input()\r\n  showDelay = this._config.showDelay;\r\n\r\n  @Input()\r\n  hideDelay = this._config.hideDelay;\r\n\r\n  @Input()\r\n  context: Context = Context.None;\r\n\r\n  @Input()\r\n  maxWidth = 200;\r\n\r\n  @Input()\r\n  autoClose = true;\r\n\r\n  @HostListener('focusin')\r\n  @HostListener('mouseenter')\r\n  show() {\r\n    this._show();\r\n  }\r\n\r\n  @HostListener('focusout')\r\n  @HostListener('mouseleave')\r\n  close() {\r\n    if (this.autoClose) {\r\n      this._hide();\r\n    }\r\n  }\r\n\r\n  constructor(\r\n    private _elementRef: ElementRef,\r\n    private _viewContainerRef: ViewContainerRef,\r\n    public overlay: Overlay,\r\n    private _ngZone: NgZone,\r\n    private _scrollDispatcher: ScrollDispatcher,\r\n    private _componentFactoryResolver: ComponentFactoryResolver,\r\n    private _config: TooltipConfig,\r\n    @Optional() private _dir: Directionality\r\n  ) {\r\n    Object.assign(this, _config);\r\n  }\r\n\r\n  /**\r\n   * Dispose the tooltip when destroyed.\r\n   */\r\n  ngOnDestroy() {\r\n    if (this._overlayRef) {\r\n      this._overlayRef.dispose();\r\n      this._tooltipInstance = null;\r\n    }\r\n\r\n    this._destroyed.next(true);\r\n    this._destroyed.complete();\r\n  }\r\n\r\n  hide() {\r\n    this._hide();\r\n  }\r\n\r\n  private _show(delay: number = this.showDelay) {\r\n    if (this.disabled || (!this.content && !this.dynamicContent)) {\r\n      return;\r\n    }\r\n\r\n    const overlayRef = this._createOverlay();\r\n\r\n    this._detach();\r\n    this._portal =\r\n      this._portal ||\r\n      new ComponentPortal(TooltipContentComponent, this._viewContainerRef);\r\n    this._tooltipInstance = overlayRef.attach(this._portal).instance;\r\n    this._tooltipInstance\r\n      .afterHidden()\r\n      .pipe(takeUntil(this._destroyed))\r\n      .subscribe(() => this._detach());\r\n\r\n    this._updateTooltipContent();\r\n    this._tooltipInstance!.show(delay);\r\n  }\r\n\r\n  private _hide(delay: number = this.hideDelay) {\r\n    if (this._tooltipInstance) {\r\n      this._tooltipInstance.hide(delay);\r\n    }\r\n  }\r\n\r\n  private _createOverlay(): OverlayRef {\r\n    if (this._overlayRef) {\r\n      return this._overlayRef;\r\n    }\r\n\r\n    const positionStrategy = this.overlay\r\n      .position()\r\n      .flexibleConnectedTo(this._elementRef)\r\n      .withTransformOriginOn('.hx-tooltip')\r\n      .withFlexibleDimensions(false);\r\n\r\n    this._overlayRef = this.overlay.create({\r\n      positionStrategy: positionStrategy,\r\n      panelClass: 'hxa-tooltip-panel',\r\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n      hasBackdrop: !this.autoClose,\r\n      backdropClass: 'cdk-overlay-transparent-backdrop'\r\n    });\r\n\r\n    this._updatePosition();\r\n\r\n    this._overlayRef\r\n      .detachments()\r\n      .pipe(takeUntil(this._destroyed))\r\n      .subscribe(() => this._detach());\r\n\r\n    this._overlayRef.backdropClick().subscribe(() => this._hide());\r\n\r\n    const position = this._overlayRef.getConfig()\r\n      .positionStrategy as FlexibleConnectedPositionStrategy;\r\n    position.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(pos => {\r\n      if (pos.connectionPair.originX === 'start') {\r\n        this.placement = 'left';\r\n      } else if (pos.connectionPair.originX === 'end') {\r\n        this.placement = 'right';\r\n      }\r\n      this._updateTooltipContent();\r\n    });\r\n\r\n    return this._overlayRef;\r\n  }\r\n\r\n  private _updatePosition() {\r\n    const position = this._overlayRef!.getConfig()\r\n      .positionStrategy as FlexibleConnectedPositionStrategy;\r\n    const origin = this._getOrigin();\r\n    const overlay = this._getOverlayPosition();\r\n\r\n    position.withPositions([\r\n      { ...origin.main, ...overlay.main },\r\n      { ...origin.fallback, ...overlay.fallback }\r\n    ]);\r\n  }\r\n\r\n  /**\r\n   * Returns the origin position and a fallback position based on the user's position preference.\r\n   * The fallback position is the inverse of the origin (e.g. `'bottom' -> 'top'`).\r\n   */\r\n  private _getOrigin(): {\r\n    main: OriginConnectionPosition;\r\n    fallback: OriginConnectionPosition;\r\n  } {\r\n    const placement = this.placement;\r\n    let originPlacement: OriginConnectionPosition;\r\n\r\n    if (placement === 'top' || placement === 'bottom') {\r\n      originPlacement = {\r\n        originX: 'center',\r\n        originY: placement === 'top' ? 'top' : 'bottom'\r\n      };\r\n    } else if (placement === 'left') {\r\n      originPlacement = { originX: 'start', originY: 'center' };\r\n    } else if (placement === 'right') {\r\n      originPlacement = { originX: 'end', originY: 'center' };\r\n    } else {\r\n      console.error('Position error', placement);\r\n    }\r\n\r\n    const { x, y } = this._invertPosition(\r\n      originPlacement.originX,\r\n      originPlacement.originY\r\n    );\r\n\r\n    return {\r\n      main: originPlacement,\r\n      fallback: { originX: x, originY: y }\r\n    };\r\n  }\r\n\r\n  /** Returns the overlay position and a fallback position based on the user's preference */\r\n  private _getOverlayPosition(): {\r\n    main: OverlayConnectionPosition;\r\n    fallback: OverlayConnectionPosition;\r\n  } {\r\n    const placement = this.placement;\r\n    let overlayPlacement: OverlayConnectionPosition;\r\n\r\n    if (placement === 'top') {\r\n      overlayPlacement = { overlayX: 'center', overlayY: 'bottom' };\r\n    } else if (placement === 'bottom') {\r\n      overlayPlacement = { overlayX: 'center', overlayY: 'top' };\r\n    } else if (placement === 'left') {\r\n      overlayPlacement = { overlayX: 'end', overlayY: 'center' };\r\n    } else if (placement === 'right') {\r\n      overlayPlacement = { overlayX: 'start', overlayY: 'center' };\r\n    } else {\r\n      console.error('Could not find a position', placement);\r\n    }\r\n\r\n    const { x, y } = this._invertPosition(\r\n      overlayPlacement.overlayX,\r\n      overlayPlacement.overlayY\r\n    );\r\n\r\n    return {\r\n      main: overlayPlacement,\r\n      fallback: { overlayX: x, overlayY: y }\r\n    };\r\n  }\r\n\r\n  private _invertPosition(\r\n    x: HorizontalConnectionPos,\r\n    y: VerticalConnectionPos\r\n  ) {\r\n    if (this.position === 'top' || this.position === 'bottom') {\r\n      if (y === 'top') {\r\n        y = 'bottom';\r\n      } else if (y === 'bottom') {\r\n        y = 'top';\r\n      }\r\n    } else {\r\n      if (x === 'end') {\r\n        x = 'start';\r\n      } else if (x === 'start') {\r\n        x = 'end';\r\n      }\r\n    }\r\n\r\n    return { x, y };\r\n  }\r\n\r\n  private _detach() {\r\n    if (this._overlayRef && this._overlayRef.hasAttached()) {\r\n      this._overlayRef.detach();\r\n    }\r\n    this._tooltipInstance = null;\r\n  }\r\n\r\n  /** Updates the tooltip content and repositions the overlay according to the new content length */\r\n  private _updateTooltipContent() {\r\n    // Must wait for the content to be painted to the tooltip so that the overlay can properly\r\n    // calculate the correct positioning based on the size of its contents.\r\n    if (this._tooltipInstance) {\r\n      this._tooltipInstance.content = this.content;\r\n      this._tooltipInstance.placement = this.placement;\r\n      this._tooltipInstance.context = this.context;\r\n      this._tooltipInstance.maxWidth = this.maxWidth;\r\n      if (this.dynamicContent) {\r\n        this._tooltipInstance.dynamicContent = this.dynamicContent.templateRef;\r\n      }\r\n\r\n      this._ngZone.onMicrotaskEmpty\r\n        .asObservable()\r\n        .pipe(take(1), takeUntil(this._destroyed))\r\n        .subscribe(() => {\r\n          if (this._tooltipInstance) {\r\n            this._overlayRef!.updatePosition();\r\n          }\r\n        });\r\n    }\r\n  }\r\n}\r\n","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { TooltipContentComponent } from './tooltip-content.component';\r\nimport { TooltipDynamicContentDirective } from './tooltip-dynamic-content.directive';\r\nimport { TooltipConfig } from './tooltip.config';\r\nimport { TooltipDirective } from './tooltip.directive';\r\n\r\n@NgModule({\r\n  imports: [A11yModule, CommonModule, OverlayModule, PortalModule],\r\n  declarations: [\r\n    TooltipContentComponent,\r\n    TooltipDirective,\r\n    TooltipDynamicContentDirective\r\n  ],\r\n  exports: [\r\n    TooltipContentComponent,\r\n    TooltipDirective,\r\n    TooltipDynamicContentDirective\r\n  ]\r\n})\r\nexport class TooltipModule {\r\n  public static forRoot(): ModuleWithProviders<TooltipModule> {\r\n    return { ngModule: TooltipModule, providers: [TooltipConfig] };\r\n  }\r\n}\r\n","/**\r\n * Example use\r\n * Array of objects: *ngFor=\"#row of rows | simpleSearch : 'the search term'\"\r\n */\r\n\r\nimport {Pipe, PipeTransform} from '@angular/core';\r\n\r\nexport interface ISimpleSearchPipe extends PipeTransform {\r\n    searchValue(item: any, searchTerm: string): boolean;\r\n}\r\n\r\n@Pipe({\r\n    name: 'simpleSearch',\r\n    pure: false\r\n})\r\n\r\nexport class SimpleSearchPipe implements ISimpleSearchPipe{\r\n\r\n    constructor(){}\r\n\r\n    public searchValue = (item: any, searchTerm: string = ''): boolean =>\r\n    {\r\n        const keys = Object.keys(item);\r\n        for (let i = 0, len = keys.length; i < len; i++)\r\n        {\r\n            let match = false,\r\n                propertyValue = item[keys[i]];\r\n\r\n            if (propertyValue)\r\n                match = (propertyValue.toString().toLowerCase().indexOf(searchTerm.toLowerCase()) > -1);\r\n\r\n            if (match || searchTerm == '')\r\n                return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    transform(items: any[], args: any[]): any\r\n    {\r\n        if (!Array.isArray(items)) return items;\r\n\r\n        // filter items array, items which match and return true will be kept, false will be filtered out\r\n        return items.filter(item => (args) ? this.searchValue(item, args.toString()) : item);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IWithTooltip } from './tabular-tooltip.interface';\r\n\r\n@Injectable()\r\nexport class TabularContentService {\r\n\r\n  private isTypeofIWithTooltip(arg) {\r\n    return !!arg && !!arg.tooltip && !!arg.content;\r\n  }\r\n\r\n  getContent(cellContent: any|IWithTooltip): any {\r\n    if (this.isTypeofIWithTooltip(cellContent)) {\r\n      return cellContent.content;\r\n    } \r\n\r\n    return cellContent as any;\r\n  }\r\n\r\n  getTooltipInfo(cellContent: any|IWithTooltip) {\r\n    if (this.isTypeofIWithTooltip(cellContent)) {\r\n      return cellContent.tooltip;\r\n    }\r\n\r\n    return {\r\n      config: {\r\n        disabled: true\r\n      },\r\n      content: ''\r\n    };\r\n  }\r\n}\r\n","import { SafeHtml } from \"@angular/platform-browser\";\r\nimport {TooltipConfig} from '../tooltip/tooltip.config';\r\n\r\nexport enum TabularColumnTypes {\r\n  String,\r\n  Icon,\r\n  Date,\r\n  Actions,\r\n  Status,\r\n  DateTime,\r\n  Checkbox,\r\n  Badge,\r\n  Number,\r\n  Html\r\n}\r\n\r\nexport interface ITabularColumnOptions {\r\n  [key: string]: unknown;\r\n  header?: SafeHtml;\r\n}\r\n\r\nexport abstract class ITabularColumn {\r\n  /**\r\n   * Unique identifier/reference\r\n   */\r\n  id: string;\r\n\r\n  /**\r\n   * Label used for display purposes.\r\n   */\r\n  label: string;\r\n\r\n  /**\r\n   * Column data type\r\n   */\r\n  dataType: TabularColumnTypes;\r\n\r\n  /**\r\n   * Is column sortable?\r\n   */\r\n  sortable: boolean;\r\n\r\n  /**\r\n   * Css class name to append to columns\r\n   */\r\n  cssClass: string;\r\n\r\n  /**\r\n   * Is column hidden?\r\n   */\r\n  hidden: boolean;\r\n\r\n  /**\r\n   * Optional parameters\r\n   * - header: replace column label with html string\r\n   */\r\n  options?: ITabularColumnOptions;\r\n}\r\n\r\n\r\nexport interface ITabularColumnBadgeType {\r\n  label: string;\r\n  cssClass?: string;\r\n  tooltipConfig?: TooltipConfig;\r\n}\r\n\r\n\r\nexport interface ITabularColumnIconType {\r\n  icon: string;\r\n  cssClass?: string;\r\n  tooltip: {\r\n    config: TooltipConfig;\r\n    content: string;\r\n  };\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {ITabularRow} from './tabular-row.interface';\r\nimport sortBy from 'array-sort-by';\r\nimport {TabularColumnTypes} from './tabular-column.interface';\r\nimport { TabularContentService } from './tabular-content.service';\r\n\r\nexport enum SortByDirection {\r\n    Ascending,\r\n    Descending,\r\n    None\r\n}\r\n\r\nexport interface ISortByProperty {\r\n  property: string;\r\n  direction: SortByDirection;\r\n  type: TabularColumnTypes;\r\n}\r\n\r\n@Injectable()\r\nexport class TabularSortByService {\r\n\r\n  constructor(private contentService: TabularContentService) { }\r\n\r\n\r\n  public sortBy(rows: ITabularRow[] = [], sortProps: ISortByProperty[] = []) {\r\n\r\n    /**\r\n     * @example Sorting\r\n     * Sorting ASC by @name, after DESC by @age, after ASC by @id\r\n     * let arr = [\r\n     * { id: 9, age: 26, name: 'pedro' },\r\n     * { id: 6, age: 21, name: 'Pedro' },\r\n     * { id: 7, age: 26, name: 'Maria' },\r\n     * { id: 2, age: 26, name: 'maría' }\r\n     * ];\r\n     * sortBy(arr, item => [item.name, -item.age, item.id]);\r\n     */\r\n    sortBy(rows, item => {\r\n      const sort = [];\r\n      for (const prop of sortProps) {\r\n        const propVal = this.contentService.getContent(item[prop.property]);\r\n\r\n        if (prop.type === TabularColumnTypes.String && prop.direction === SortByDirection.Descending) {\r\n          sort.push('desc:' + propVal);\r\n        } else if (prop.type === TabularColumnTypes.Number && prop.direction === SortByDirection.Descending) {\r\n          sort.push(-propVal);\r\n        } else if ((prop.type === TabularColumnTypes.Date || prop.type === TabularColumnTypes.DateTime) && prop.direction === SortByDirection.Descending) {\r\n          sort.push(-new Date(propVal));\r\n        } else if ((prop.type === TabularColumnTypes.Date || prop.type === TabularColumnTypes.DateTime) && prop.direction === SortByDirection.Ascending) {\r\n          sort.push(new Date(propVal));\r\n        } else if (prop.type === TabularColumnTypes.Html && prop.direction === SortByDirection.Descending) {\r\n          const sortableValue = propVal;\r\n          sort.push('desc:' + sortableValue.replace(/<.*?>/g, ''));\r\n        } else {\r\n          sort.push(propVal);\r\n        }\r\n      }\r\n     return sort;\r\n    });\r\n\r\n  }\r\n\r\n}\r\n","import {TabularSize} from './tabular-size.enum';\r\nimport {ISortByProperty, SortByDirection} from './tabular-sort-by.service';\r\nimport {TabularTheme} from './tabular-theme.enum';\r\n\r\nexport abstract class ITabularConfig {\r\n  id: string;\r\n  size: TabularSize;\r\n  pagination: {\r\n    itemsPerPage: number,\r\n    currentPage: number\r\n  };\r\n  clickableRows?: boolean;\r\n  sortBy?: ISortByProperty[];\r\n  cssClass?: string;\r\n  remoteSorting?: boolean;\r\n  multiSorting?: boolean;\r\n  stickyHeader?: boolean;\r\n  stickyColumns?: {\r\n    left: boolean;\r\n    right: boolean;\r\n  };\r\n  theme?: TabularTheme;\r\n}\r\n\r\n\r\n\r\n","import {IDisabledInput} from './disabled-input.interface';\r\nimport {TooltipConfig} from '../tooltip/tooltip.config';\r\n\r\nexport enum ActionConfigRouteType {\r\n  None,\r\n  Route,\r\n  Callback\r\n}\r\n\r\n\r\nexport abstract class IActionsConfig {\r\n  /**\r\n   * Unique identifier/reference\r\n   */\r\n  id: string;\r\n\r\n  /**\r\n   * Label used for display purposes.\r\n   */\r\n  label: string;\r\n\r\n  /**\r\n   * HxUI Icon\r\n   */\r\n  icon?: string;\r\n\r\n  /**\r\n   * Css class name to append to button\r\n   */\r\n  css?: string;\r\n\r\n  /**\r\n   * Disabled option\r\n   */\r\n  disabledConfig?: IDisabledInput;\r\n\r\n  /**\r\n   * The route to go to when clicked.\r\n   */\r\n  route?: Array<any>;\r\n\r\n  /**\r\n   * The route type. Could be standard route or callback.\r\n   */\r\n  routeType: ActionConfigRouteType;\r\n\r\n  /**\r\n   * The function to call when route type is callback\r\n   */\r\n  callback?: any;\r\n\r\n\r\n  /**\r\n   * Child actions\r\n   */\r\n  children?: IActionsConfig[];\r\n\r\n  /**\r\n   * Tooltip config\r\n   */\r\n  tooltip?: {\r\n    config: TooltipConfig,\r\n    content: string;\r\n  };\r\n\r\n  /**\r\n   * Is Loading state, will show a loading indicator in replacement of icon/text\r\n   */\r\n  isLoading?: boolean;\r\n\r\n  /**\r\n   * target , to open navigate to same page or different page\r\n   */\r\n  target?: string;\r\n}\r\n","\r\nexport enum TabularSize {\r\n    Default,\r\n    Small,\r\n    Large\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {ITabularConfig} from './tabular-config.interface';\r\nimport {SortByDirection} from './tabular-sort-by.service';\r\nimport {TabularSize} from './tabular-size.enum';\r\n\r\n\r\n/**\r\n * Configuration service, provides default values for the TabularComponent.\r\n */\r\n@Injectable()\r\nexport class TabularConfig {\r\n\r\n    /**\r\n     * Tabular configuration\r\n     * IPaginationInstance, ISearchConfig\r\n     */\r\n    public config: ITabularConfig = {\r\n        id: 'Unique-Id',\r\n        size: TabularSize.Default,\r\n        pagination: {\r\n            itemsPerPage: 5,\r\n            currentPage: 1\r\n        },\r\n        clickableRows: false,\r\n        stickyHeader: true,\r\n        multiSorting: true\r\n    };\r\n\r\n}\r\n","export enum TabularTheme {\r\n  Light,\r\n  Dark\r\n}\r\n","import {\r\n  Component, Input, Output, EventEmitter, OnInit, DoCheck, OnChanges, SimpleChanges, ViewChild, ElementRef, OnDestroy,\r\n  ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { TabularColumn } from './tabular';\r\nimport { ITabularConfig } from './tabular-config.interface';\r\nimport { ActionConfigRouteType, IActionsConfig } from './actions-config.interface';\r\nimport { TabularSortByService, SortByDirection, ISortByProperty } from './tabular-sort-by.service';\r\nimport { TabularConfig } from './tabular.config';\r\nimport { TabularSize } from './tabular-size.enum';\r\nimport { ITabularColumnBadgeType, ITabularColumnIconType, TabularColumnTypes } from './tabular-column.interface';\r\nimport { ITabularRow } from './tabular-row.interface';\r\nimport { Context } from '../enums';\r\nimport * as _ from 'lodash';\r\nimport { IWithTooltip } from './tabular-tooltip.interface';\r\nimport { TabularContentService } from './tabular-content.service';\r\nimport {TabularTheme} from './tabular-theme.enum';\r\nimport {CdkScrollable, ScrollDispatcher} from '@angular/cdk/scrolling';\r\nimport {BehaviorSubject, Subscription} from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'hxa-tabular',\r\n  templateUrl: './tabular.component.html',\r\n  styles: [\r\n    '.tabular__wrapper { position: relative; }',\r\n    '.tabular__scroller {  overflow-x: scroll; overflow-y: visible;  width: 100%; margin-bottom: 1.5rem;}',\r\n    '.tabular__scroller > table.hx-table { margin-bottom: 0; }',\r\n    '.tabular__sortable {}',\r\n    '.tabular__sorter {cursor:pointer; display:flex; align-items: center;}',\r\n    '.tabular__sorter .hx-icon {margin-left:.1rem;}',\r\n    '.tabular__checkboxes{width:2%;}',\r\n    '.tabular__checkboxes .hx-checkbox-control{display:flex;}',\r\n    '.tabularActions__action button.hx-button,a.hx-button{ width: 1rem;}',\r\n    '.tabularActions__action {display:flex;}'\r\n  ]\r\n})\r\n\r\n\r\nexport class TabularComponent implements OnInit, DoCheck, OnDestroy {\r\n\r\n  @ViewChild('table', { static: true }) private table: ElementRef;\r\n  @ViewChild('scrollable', { static: true }) private scrollable: ElementRef;\r\n\r\n  /**\r\n   * Collection of column models\r\n   */\r\n  @Input() columns: TabularColumn[];\r\n\r\n  /**\r\n   * Collection of data rows\r\n   */\r\n  // todo - this is not strict. should it be when it's dynamic?.\r\n  @Input() rows: ITabularRow[];\r\n\r\n  /**\r\n   * Tabular configuration\r\n   * IPaginationInstance, ISearchConfig\r\n   */\r\n  @Input()\r\n  public get config(): ITabularConfig {\r\n    return this._config;\r\n  }\r\n  public set config(c: ITabularConfig) {\r\n    if (!c.sortBy) {\r\n      c.sortBy = [];\r\n    }\r\n    this._config = c;\r\n  }\r\n\r\n  /** The function to call when a action item is clicked **/\r\n  @Input()\r\n  public get callback(): Function {\r\n    return this._callback;\r\n  }\r\n  public set callback(Fn: Function) {\r\n    this._callback = Fn;\r\n  }\r\n\r\n\r\n  /**\r\n   * Search term is used in the simple search pipe\r\n   * Array of objects: *ngFor=\"#row of rows | simpleSearch : 'the search term'\"\r\n   */\r\n  @Input()\r\n  public get searchTerm(): string {\r\n    return this._searchTerm;\r\n  }\r\n  public set searchTerm(term: string) {\r\n    this._searchTerm = term;\r\n  }\r\n\r\n  /**\r\n   * Event fired when refresh is called.\r\n   * Host should refresh data of input.\r\n   */\r\n  @Output() refresh: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  /**\r\n   * Event fired when a row is clicked.\r\n   */\r\n  @Output() rowClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\r\n  /**\r\n   * Event fired when a column is sorted\r\n   */\r\n  @Output() onSort: EventEmitter<ISortByProperty[]> = new EventEmitter<ISortByProperty[]>();\r\n\r\n  /**\r\n   * Event fired when selecting a checkbox on a tabular row\r\n   */\r\n  @Output() onCheck: EventEmitter<ITabularRow> = new EventEmitter<ITabularRow>();\r\n\r\n  /**\r\n   * Event fired when selecting a group checkbox on a tabular column\r\n   */\r\n  @Output() onCheckAll: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  public oldRows: ITabularRow[] = [];\r\n  public pagedItems: any[] = [];\r\n  public TabularColumnTypes = TabularColumnTypes;\r\n  public TabularSize = TabularSize;\r\n  public TabularTheme = TabularTheme;\r\n  public ActionConfigRouteType = ActionConfigRouteType;\r\n  public selectAll = false;\r\n  public Context = Context;\r\n  public SortByDirection = SortByDirection;\r\n  public isStickyLeft$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n  public isStickyRight$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n  protected _callback: Function;\r\n  protected _config: ITabularConfig;\r\n  protected _searchTerm: string;\r\n  private _isMutatingInternally = false;\r\n  private _initialLoad = true;\r\n  private subscriptions: Subscription = new Subscription();\r\n  public selectAllValue: Boolean = false;\r\n  public selectAllDisabled: Boolean = false;\r\n\r\n\r\n  constructor(\r\n    private conf: TabularConfig,\r\n    private sortByService: TabularSortByService,\r\n    private contentService: TabularContentService,\r\n    public scroll: ScrollDispatcher,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    Object.assign(this, conf);\r\n  }\r\n\r\n  ngOnInit() {\r\n      this.subscriptions.add(this.scroll.scrolled().subscribe((cdk: CdkScrollable) => this.scrolling()));\r\n      this.scrolling();\r\n  }\r\n\r\n  ngDoCheck() {\r\n    if (!_.isEqual(this.rows, this.oldRows)) {\r\n\r\n      this.orderByData(false);\r\n\r\n      if (this.columns.filter(c => c.dataType === TabularColumnTypes.Checkbox).length > 0) {\r\n        this.checkSelectAllState(false);\r\n      }\r\n\r\n      // this must run last so equality checking checks after the row data mutates\r\n      this.oldRows = _.cloneDeep(this.rows);\r\n    }\r\n  }\r\n\r\n  ngAfterViewChecked() {\r\n    this.scrolling();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.subscriptions.unsubscribe();\r\n  }\r\n\r\n  /**\r\n   * Calls the parsed callback with optional arguments\r\n   */\r\n  executeCallback(event: Event, cb: any[]) {\r\n    if (cb.length) {\r\n      if (cb.length === 1) { // if callback has no arguments\r\n        cb[0]();\r\n      } else { // if callback has 1 or more arguments\r\n        const args: any[] = [];\r\n        for (let i = 1; i < cb.length; i++) {\r\n          args.push(cb[i]);\r\n        }\r\n        cb[0].apply(this, args);\r\n      }\r\n    }\r\n  }\r\n\r\n  toggleSelectAll = ($event) => {\r\n      for (let i = 0; i < this.rows.length; i++) {\r\n       if(!this.rows[i].checkboxDisabled) {\r\n          this._isMutatingInternally = true;\r\n          this.rows[i].checked = this.selectAll;\r\n        }\r\n      }\r\n      this.onCheckAll.emit(this.selectAll);\r\n  }\r\n\r\n\r\n  toggleIndividualSelect = ($event: ITabularRow) => {\r\n      this.checkSelectAllState(false);\r\n      this.onCheck.emit($event);\r\n  }\r\n\r\n  private checkSelectAllState(emitEvent: boolean = true) {\r\n    let count = 0;\r\n    let valueOfDisabled = 0;\r\n    let totalRows = this.rows.length;\r\n    this.selectAllDisabled = false;\r\n    this.selectAll = false;\r\n    this.selectAllValue = false;\r\n    for (let i = 0; i < this.rows.length; i++) {\r\n      if (this.rows[i].checked && !this.rows[i].checkboxDisabled) {\r\n        count++;\r\n      }\r\n      if (this.rows[i].checkboxDisabled) {\r\n        this.rows[i].checked = false;\r\n        valueOfDisabled++;\r\n        totalRows--;\r\n      }\r\n    }\r\n\r\n    const oldSelectAll = this.selectAll;\r\n    this._isMutatingInternally = true;\r\n    this.selectAll = (this.rows.length === count);\r\n    if (oldSelectAll !== this.selectAll && emitEvent) {\r\n      this.onCheckAll.emit(this.selectAll)\r\n    }\r\n\r\n    if (totalRows === count && valueOfDisabled != this.rows.length) {\r\n      this.selectAll = true;\r\n    } else if (this.rows.length != count && count != 0 && this.rows.length != 0) {\r\n      this.selectAllValue = true\r\n    } else if (this.rows.length === valueOfDisabled) {\r\n      this.selectAllDisabled = true;\r\n      this.selectAll = false;\r\n      this.selectAllValue = false;\r\n    } else if (count === 0) {\r\n      this.selectAllValue = false;\r\n      this.selectAll = false;\r\n    }\r\n  }\r\n\r\n\r\n  setPage($event: { page: number, itemsPerPage: number } = {\r\n    page: this.config.pagination.currentPage,\r\n    itemsPerPage: this.config.pagination.itemsPerPage\r\n  }) {\r\n    this.config.pagination.currentPage = $event.page;\r\n\r\n    // calculate start and end page item indexes\r\n    const startIndex: number = (this.config.pagination.currentPage - 1) * this.config.pagination.itemsPerPage;\r\n    const endIndex: number = Math.min(startIndex + this.config.pagination.itemsPerPage - 1, this.totalItemCount - 1);\r\n\r\n    this.pagedItems = this.rows.slice(startIndex, endIndex + 1);\r\n  }\r\n\r\n\r\n  /**\r\n   * Get the action tooltip if it exists\r\n   */\r\n  getActionTooltip(action: IActionsConfig): string {\r\n    return (action && action.disabledConfig) ? action.disabledConfig.tooltip : '';\r\n  }\r\n\r\n\r\n  getActionDisabledState(action: IActionsConfig): boolean {\r\n    return (action && action.disabledConfig) ? action.disabledConfig.disabled : false;\r\n  }\r\n\r\n\r\n  /**\r\n   * Handles the column header click event for sorting.\r\n   * Sort order is Descending, Ascending followed by None.\r\n   */\r\n  onSortClickHandler(key: string, type: TabularColumnTypes) {\r\n\r\n    const findPropInSortList = this.config.sortBy.filter((prop: ISortByProperty) => { return (prop.property === key); });\r\n\r\n    if (findPropInSortList.length) {\r\n      const prop = findPropInSortList[0];\r\n      const index = this.config.sortBy.findIndex(x => x === prop);\r\n      if (prop.direction === SortByDirection.None) {\r\n        prop.direction = SortByDirection.Descending;\r\n      } else if (prop.direction === SortByDirection.Descending) {\r\n        prop.direction = SortByDirection.Ascending;\r\n      } else if (prop.direction === SortByDirection.Ascending) {\r\n        if (index > -1) {\r\n          this.config.sortBy.splice(index, 1);\r\n        }\r\n      }\r\n    } else {\r\n      if (!this.config.multiSorting) {\r\n        this.config.sortBy = [];\r\n      }\r\n      this.config.sortBy.push({ property: key, direction: SortByDirection.Descending, type: type });\r\n    }\r\n\r\n    this.orderByData(true);\r\n    return false;\r\n  }\r\n\r\n\r\n  isColumnSorted(key: string, direction: SortByDirection): boolean {\r\n    const findPropInSortList = this.config.sortBy.filter((prop: ISortByProperty) => { return (prop.property === key && prop.direction === direction); });\r\n    return (findPropInSortList.length > 0);\r\n  }\r\n\r\n\r\n  /**\r\n   * Handles the row click event.\r\n   */\r\n  onRowClickHandler($event: any, data: any) {\r\n    const el: Element = $event.target;\r\n    if (this.config.clickableRows) {\r\n      if (!el.parentElement || el.parentElement.tagName === 'A' ||\r\n        el.tagName === 'A' ||\r\n        el.parentElement.classList.contains('hx-checkbox-control')) {\r\n        return;\r\n      }\r\n      this.rowClick.emit(data);\r\n    }\r\n  }\r\n\r\n  private orderByData(emitSortEvent: boolean) {\r\n\r\n    if (this.config.sortBy.length > 0) {\r\n      if (!this.config.remoteSorting) {\r\n        this._isMutatingInternally = true;\r\n        this.rows = [...this.rows]; // Required as array-sort-by mutates the original array\r\n        this.sortByService.sortBy(this.rows, this.config.sortBy);\r\n      }\r\n    }\r\n    if (emitSortEvent) {\r\n      this.onSort.emit(this.config.sortBy);\r\n    }\r\n    this.setPage();\r\n  }\r\n\r\n\r\n  get totalItemCount(): number {\r\n    return this.rows.length;\r\n  }\r\n\r\n\r\n  /**\r\n   * Helper to determine if tabular instance is in small mode\r\n   */\r\n  isSmall(): boolean {\r\n    return (this.config.size === TabularSize.Small);\r\n  }\r\n\r\n\r\n  hasValidBadgeTypeParams(colData: ITabularColumnBadgeType) {\r\n    if (colData) {\r\n      if (typeof colData.label !== 'undefined') {\r\n        return true;\r\n      } else {\r\n        console.error('Record for column type badge is invalid, make sure you have the right type. ITabularColumnTypeBadge', { columnValue: colData });\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  hasValidIconTypeParams(colData: ITabularColumnIconType) {\r\n    let hasError = false;\r\n    if (colData) {\r\n      if (typeof colData.icon !== 'undefined') {\r\n        if (typeof colData.tooltip.config !== 'undefined' && typeof colData.tooltip.content !== 'undefined') {\r\n          if (typeof colData.tooltip.config.context !== 'undefined' || typeof colData.tooltip.config.placement !== 'undefined') {\r\n            return true;\r\n          } else {\r\n            hasError = true;\r\n          }\r\n        } else {\r\n          hasError = true;\r\n        }\r\n      } else {\r\n        hasError = true;\r\n      }\r\n    }\r\n\r\n    if (hasError) {\r\n      console.error('Record for column type icon is invalid, make sure you have the right type. ITabularColumnTypeIcon', { columnValue: colData });\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  getTooltipContext(colData: ITabularColumnIconType): Context {\r\n    return (!this.hasValidIconTypeParams(colData)) ? colData.tooltip.config.context : Context.None;\r\n  }\r\n\r\n\r\n\r\n  hasChildren(action: IActionsConfig): boolean {\r\n    return (action.children && action.children.length > 0);\r\n  }\r\n\r\n  trackByFn(index, item) {\r\n    return (item.id) ? item.id : index;\r\n  }\r\n\r\n  getCellValue(cellContent: any|IWithTooltip): any {\r\n    return this.contentService.getContent(cellContent);\r\n  }\r\n\r\n  getTooltipInfo(cellContent: any|IWithTooltip) {\r\n    return this.contentService.getTooltipInfo(cellContent);\r\n  }\r\n\r\n  private scrolling() {\r\n    if (this.config.stickyColumns) {\r\n      const el = this.scrollable.nativeElement;\r\n      const left = el.scrollLeft;\r\n      const offset = this.table.nativeElement.clientWidth - el.clientWidth;\r\n      this.isStickyLeft$.next((offset > 0 && this.config.stickyColumns.left && left !== 0));\r\n      this.isStickyRight$.next((offset > 0 && this.config.stickyColumns.right && left !== offset));\r\n      this.cdr.detectChanges();\r\n    }\r\n  }\r\n}\r\n","<div class=\"tabular__wrapper\">\r\n  <div\r\n    [class.tabular__scroller]=\"config.stickyColumns\"\r\n    cdkScrollable\r\n    #scrollable\r\n  >\r\n    <table\r\n      #table\r\n      class=\"tabular hx-table is-striped {{ config.cssClass }}\"\r\n      [class.is-hover]=\"config.clickableRows\"\r\n      [class.is-narrow]=\"config.size === TabularSize.Small\"\r\n      [class.has-sticky-header]=\"config.stickyHeader\"\r\n      [class.is-sticky-left]=\"isStickyLeft$ | async\"\r\n      [class.is-sticky-right]=\"isStickyRight$ | async\"\r\n      [class.is-dark]=\"config.theme === TabularTheme.Dark\"\r\n      [class.is-light]=\"config.theme === TabularTheme.Light\"\r\n    >\r\n      <thead>\r\n        <tr>\r\n          <ng-container *ngFor=\"let col of columns; trackBy: trackByFn\">\r\n            <th\r\n              *ngIf=\"!col.hidden\"\r\n              class=\"{{ col.cssClass }} tabular__{{ col.label }}\"\r\n              [ngClass]=\"{\r\n                tabular__checkboxes:\r\n                  col.dataType === TabularColumnTypes.Checkbox,\r\n                tabular__sortable: col.sortable\r\n              }\"\r\n            >\r\n              <!-- sortable column -->\r\n              <a\r\n                class=\"tabular__sorter\"\r\n                href=\"#\"\r\n                *ngIf=\"\r\n                  col.sortable && col.dataType != TabularColumnTypes.Checkbox\r\n                \"\r\n                (click)=\"onSortClickHandler(col.id, col.dataType)\"\r\n              >\r\n              <!-- <span [innerHTML]=\"col.label\"></span> -->\r\n                <span *ngIf=\"col.options && col.options.header\" [innerHTML]=\"col.options && col.options.header\"></span>\r\n                <span *ngIf=\"!col.options || !(col.options && col.options.header)\">{{ col.label }}</span>\r\n                <i\r\n                  class=\"hx-icon icon-arrow-up is-small\"\r\n                  [class.icon-arrow-up]=\"\r\n                    isColumnSorted(col.id, SortByDirection.Ascending)\r\n                  \"\r\n                  [class.icon-arrow-down]=\"\r\n                    isColumnSorted(col.id, SortByDirection.Descending)\r\n                  \"\r\n                  *ngIf=\"\r\n                    isColumnSorted(col.id, SortByDirection.Descending) ||\r\n                    isColumnSorted(col.id, SortByDirection.Ascending)\r\n                  \"\r\n                ></i\r\n              ></a>\r\n\r\n              <!-- non sortable column -->\r\n              <span *ngIf=\"!col.sortable && col.dataType !== TabularColumnTypes.Checkbox\">\r\n                <span *ngIf=\"col.options && col.options.header\" [innerHTML]=\"col.options && col.options.header\"></span>\r\n                <span *ngIf=\"!col.options || !(col.options && col.options.header)\">{{ col.label }}</span>\r\n              </span>\r\n\r\n              <!-- checkbox column -->\r\n              <div\r\n                *ngIf=\"col.dataType === TabularColumnTypes.Checkbox\"\r\n                class=\"hx-checkbox-control\"\r\n              >\r\n                <input\r\n                  id=\"{{ config.id }}-selectAll\"\r\n                  name=\"{{ config.id }}-selectAll\"\r\n                  type=\"checkbox\"\r\n                  class=\"hx-checkbox\"\r\n                  [ngClass]=\"{ 'is-indeterminate': selectAllValue }\"\r\n                  (change)=\"toggleSelectAll($event)\"\r\n                  title=\"Select All\"\r\n                  [(ngModel)]=\"selectAll\"\r\n                  [disabled]=\"selectAllDisabled\"\r\n                />\r\n                <label for=\"{{ config.id }}-selectAll\" class=\"hx-label\"></label>\r\n              </div>\r\n            </th>\r\n          </ng-container>\r\n        </tr>\r\n      </thead>\r\n\r\n      <tbody>\r\n        <!--<tr *ngFor=\"let row of rows | paginate: config.pagination | simpleSearch: searchTerm\">-->\r\n        <tr\r\n          *ngFor=\"let row of pagedItems; trackBy: trackByFn\"\r\n          (click)=\"onRowClickHandler($event, row)\"\r\n          [class.is-selected]=\"row.selected\"\r\n          [class.is-danger]=\"row.context && row.context === Context.Danger\"\r\n          [class.is-warning]=\"row.context && row.context === Context.Warning\"\r\n          [class.is-info]=\"row.context && row.context === Context.Info\"\r\n          [class.is-success]=\"row.context && row.context === Context.Success\"\r\n          [class.has-stripe-danger]=\"\r\n            row.stripeContext && row.stripeContext === Context.Danger\r\n          \"\r\n          [class.has-stripe-warning]=\"\r\n            row.stripeContext && row.stripeContext === Context.Warning\r\n          \"\r\n          [class.has-stripe-info]=\"\r\n            row.stripeContext && row.stripeContext === Context.Info\r\n          \"\r\n          [class.has-stripe-success]=\"\r\n            row.stripeContext && row.stripeContext === Context.Success\r\n          \"\r\n          [ngClass]=\"[row.cssClass ? row.cssClass : '']\"\r\n          [attr.title]=\"row.title ? row.title : ''\"\r\n        >\r\n          <ng-container\r\n            *ngFor=\"let col of columns\"\r\n            [ngTemplateOutlet]=\"column\"\r\n            [ngTemplateOutletContext]=\"{\r\n              col: col,\r\n              tooltipInfo: getTooltipInfo(row[col.id]),\r\n              cellValue: getCellValue(row[col.id])\r\n            }\"\r\n          >\r\n          </ng-container>\r\n\r\n          <ng-template\r\n            #column\r\n            let-col=\"col\"\r\n            let-tooltipInfo=\"tooltipInfo\"\r\n            let-cellValue=\"cellValue\"\r\n          >\r\n            <td\r\n              *ngIf=\"!col.hidden\"\r\n              class=\"{{ col.cssClass }} tabular__{{ col.label }}\"\r\n              [ngClass]=\"{\r\n                tabular__checkboxes:\r\n                  col.dataType === TabularColumnTypes.Checkbox,\r\n                'is-text-dotted': !tooltipInfo.config.disabled\r\n              }\"\r\n              hxaTooltip\r\n              [placement]=\"tooltipInfo.config.placement\"\r\n              [context]=\"tooltipInfo.config.context\"\r\n              [maxWidth]=\"tooltipInfo.config.maxWidth\"\r\n            >\r\n              <!-- dynamic tooltip -->\r\n              <ng-container *ngIf=\"!tooltipInfo.config.disabled\">\r\n                <div\r\n                  *hxaTooltipDynamicContent\r\n                  [innerHTML]=\"tooltipInfo.content\"\r\n                ></div>\r\n              </ng-container>\r\n              <!-- checkbox type -->\r\n              <div\r\n                *ngIf=\"col.dataType === TabularColumnTypes.Checkbox\"\r\n                class=\"hx-checkbox-control\"\r\n              >\r\n                <input\r\n                  id=\"{{ config.id }}-checkbox-{{ row.id }}\"\r\n                  name=\"{{ col.label }}-checkbox\"\r\n                  type=\"checkbox\"\r\n                  class=\"hx-checkbox\"\r\n                  title=\"{{ col.label }}\"\r\n                  (change)=\"toggleIndividualSelect(row)\"\r\n                  [(ngModel)]=\"row.checked\"\r\n                  [disabled]=\"row.checkboxDisabled\"\r\n                />\r\n                <label\r\n                  for=\"{{ config.id }}-checkbox-{{ row.id }}\"\r\n                  class=\"hx-label\"\r\n                ></label>\r\n              </div>\r\n\r\n              <!-- string type | number type -->\r\n              <span\r\n                *ngIf=\"\r\n                  col.dataType === TabularColumnTypes.String ||\r\n                  col.dataType === TabularColumnTypes.Number\r\n                \"\r\n                title=\"{{ cellValue }}\"\r\n                >{{ cellValue }}</span\r\n              >\r\n\r\n              <!-- html type -->\r\n              <div\r\n                *ngIf=\"col.dataType === TabularColumnTypes.Html\"\r\n                [innerHTML]=\"cellValue\"\r\n              ></div>\r\n\r\n              <!-- icon type -->\r\n              <i\r\n                *ngIf=\"\r\n                  col.dataType === TabularColumnTypes.Icon &&\r\n                  hasValidIconTypeParams(cellValue)\r\n                \"\r\n                title=\"\"\r\n                class=\"hx-icon {{ cellValue.icon }}\"\r\n                [hxTooltip]=\"cellValue.tooltip.content\"\r\n                placement=\"{{ cellValue.tooltip.config.placement }}\"\r\n                [context]=\"cellValue.tooltip.config.context\"\r\n              ></i>\r\n\r\n              <!-- date type -->\r\n              <span *ngIf=\"col.dataType === TabularColumnTypes.Date\">{{\r\n                cellValue | date: \"dd/MM/yyyy\"\r\n              }}</span>\r\n\r\n              <!-- status type -->\r\n              <span\r\n                *ngIf=\"col.dataType === TabularColumnTypes.Status\"\r\n                class=\"hx-icon\"\r\n                [ngClass]=\"{\r\n                  'is-primary': cellValue,\r\n                  'is-danger': !cellValue,\r\n                  'icon-check-empty': cellValue,\r\n                  'icon-close-empty': !cellValue\r\n                }\"\r\n              ></span>\r\n\r\n              <!-- badge type -->\r\n              <span\r\n                *ngIf=\"\r\n                  col.dataType === TabularColumnTypes.Badge &&\r\n                  hasValidBadgeTypeParams(cellValue)\r\n                \"\r\n                class=\"hx-badge is-small {{ cellValue.cssClass }}\"\r\n                ><span class=\"hx-badge-content\">{{\r\n                  cellValue.label\r\n                }}</span></span\r\n              >\r\n\r\n              <!-- date time type -->\r\n              <span *ngIf=\"col.dataType === TabularColumnTypes.DateTime\">{{\r\n                cellValue | date: \"dd/MM/yyyy hh:mm a\"\r\n              }}</span>\r\n\r\n              <!-- actions type -->\r\n              <div\r\n                *ngIf=\"col.dataType === TabularColumnTypes.Actions\"\r\n                class=\"hx-dropdown tabularActions\"\r\n              >\r\n                <div class=\"tabularActions__action\">\r\n                  <ng-container\r\n                    *ngFor=\"let action of cellValue; trackBy: trackByFn\"\r\n                  >\r\n                    <!-- single action -->\r\n                    <span\r\n                      [hxTooltip]=\"action.tooltip?.content\"\r\n                      placement=\"{{ action.tooltip?.config.placement }}\"\r\n                      [context]=\"action.tooltip?.config.context\"\r\n                      [disabled]=\"action.tooltip?.config.disabled\"\r\n                    >\r\n                      <button\r\n                        type=\"button\"\r\n                        class=\"hx-button is-flat\"\r\n                        [class.is-small]=\"config.size === TabularSize.Small\"\r\n                        [class.is-loading]=\"action.isLoading\"\r\n                        *ngIf=\"\r\n                          !getActionDisabledState(action) &&\r\n                          action.routeType === ActionConfigRouteType.Route &&\r\n                          !hasChildren(action)\r\n                        \"\r\n                        [routerLink]=\"action.route\"\r\n                        class=\"hx-button is-flat {{ action.css }}\"\r\n                        title=\"{{ action.label }}\"\r\n                      >\r\n                        <span\r\n                          *ngIf=\"!action.isLoading\"\r\n                          class=\"hx-icon {{ action.icon }}\"\r\n                        ></span>\r\n                      </button>\r\n                    </span>\r\n                    <span\r\n                      [hxTooltip]=\"action.tooltip?.content\"\r\n                      placement=\"{{ action.tooltip?.config.placement }}\"\r\n                      [context]=\"action.tooltip?.config.context\"\r\n                      [disabled]=\"action.tooltip?.config.disabled\"\r\n                    >\r\n                      <a\r\n                        type=\"button\"\r\n                        class=\"hx-button is-flat\"\r\n                        [class.is-small]=\"config.size === TabularSize.Small\"\r\n                        [class.is-loading]=\"action.isLoading\"\r\n                        *ngIf=\"\r\n                          !getActionDisabledState(action) &&\r\n                          action.routeType === ActionConfigRouteType.Callback &&\r\n                          !hasChildren(action)\r\n                        \"\r\n                        (click)=\"executeCallback($event, action.callback)\"\r\n                        class=\"hx-button is-flat {{ action.css }}\"\r\n                        [hxTooltip]=\"action.tooltip?.content\"\r\n                        placement=\"{{ action.tooltip?.config.placement }}\"\r\n                        [context]=\"action.tooltip?.config.context\"\r\n                        ><span\r\n                          *ngIf=\"!action.isLoading\"\r\n                          class=\"hx-icon {{ action.icon }}\"\r\n                        ></span\r\n                      ></a>\r\n                    </span>\r\n\r\n                    <!-- action with children -->\r\n                    <div\r\n                      class=\"hx-dropdown\"\r\n                      hxaDropdown\r\n                      *ngIf=\"hasChildren(action)\"\r\n                      [isDisabled]=\"!!row.actionDisabled\"\r\n                    >\r\n                      <span\r\n                        [hxTooltip]=\"action.tooltip?.content\"\r\n                        placement=\"{{ action.tooltip?.config.placement }}\"\r\n                        [context]=\"action.tooltip?.config.context\"\r\n                        [disabled]=\"action.tooltip?.config.disabled\"\r\n                      >\r\n                        <a\r\n                          class=\"hx-button is-flat hx-button-dropdown\"\r\n                          [class.is-small]=\"config.size === TabularSize.Small\"\r\n                          hxaDropdownToggle\r\n                          type=\"button\"\r\n                        >\r\n                          <i class=\"icon {{ action.icon }}\"></i>\r\n                        </a>\r\n                      </span>\r\n\r\n                      <div class=\"hx-dropdown-menu\" *hxaDropdownMenu>\r\n                        <ng-container\r\n                          *ngFor=\"\r\n                            let childAction of action.children;\r\n                            trackBy: trackByFn\r\n                          \"\r\n                        >\r\n                          <a\r\n                            *ngIf=\"\r\n                              !getActionDisabledState(childAction) &&\r\n                              childAction.routeType ===\r\n                                ActionConfigRouteType.Route\r\n                            \"\r\n                            [routerLink]=\"childAction.route\"\r\n                            hxaDropdownItem\r\n                            class=\"hx-dropdown-item {{ childAction.css }}\"\r\n                            [id]=\"childAction.id\"\r\n                            >{{ childAction.label }}</a\r\n                          >\r\n                          <a\r\n                            *ngIf=\"\r\n                              !getActionDisabledState(childAction) &&\r\n                              childAction.routeType ===\r\n                                ActionConfigRouteType.Callback\r\n                            \"\r\n                            (click)=\"\r\n                              executeCallback($event, childAction.callback)\r\n                            \"\r\n                            hxaDropdownItem\r\n                            class=\"hx-dropdown-item {{ childAction.css }}\"\r\n                            [id]=\"childAction.id\"\r\n                            >{{ childAction.label }}</a\r\n                          >\r\n                        </ng-container>\r\n                      </div>\r\n                    </div>\r\n                  </ng-container>\r\n                </div>\r\n              </div>\r\n            </td>\r\n          </ng-template>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </div>\r\n</div>\r\n\r\n<hx-pagination\r\n  [directionLinks]=\"true\"\r\n  [boundaryLinks]=\"true\"\r\n  [rotate]=\"false\"\r\n  [maxSize]=\"10\"\r\n  [totalItems]=\"totalItemCount\"\r\n  [itemsPerPage]=\"config.pagination.itemsPerPage\"\r\n  [(ngModel)]=\"config.pagination.currentPage\"\r\n  (pageChanged)=\"setPage($event)\"\r\n  *ngIf=\"totalItemCount > config.pagination.itemsPerPage\"\r\n></hx-pagination>\r\n","import { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  CUSTOM_ELEMENTS_SCHEMA,\r\n  ModuleWithProviders,\r\n  NgModule\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { DropdownModule } from '../dropdown/dropdown.module';\r\nimport { PaginationModule } from '../pagination/pagination.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { SimpleSearchPipe } from '../utils/pipes/simple-search.pipe';\r\nimport { TabularContentService } from './tabular-content.service';\r\nimport { TabularSortByService } from './tabular-sort-by.service';\r\nimport { TabularComponent } from './tabular.component';\r\nimport { TabularConfig } from './tabular.config';\r\n\r\n@NgModule({\r\n  declarations: [TabularComponent, SimpleSearchPipe],\r\n  imports: [\r\n    CommonModule,\r\n    RouterModule,\r\n    PaginationModule,\r\n    TooltipModule,\r\n    DropdownModule,\r\n    FormsModule,\r\n    ScrollingModule\r\n  ],\r\n  providers: [TabularSortByService, TabularConfig, TabularContentService],\r\n  exports: [TabularComponent],\r\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class TabularModule {\r\n  public static forRoot(): ModuleWithProviders<TabularModule> {\r\n    return {\r\n      ngModule: TabularModule,\r\n      providers: [TabularSortByService, TabularConfig, TabularContentService]\r\n    };\r\n  }\r\n}\r\n","import {NgZone} from '@angular/core';\r\nimport {Observable, OperatorFunction} from 'rxjs';\r\n\r\nexport function toInteger(value: any): number {\r\n  return parseInt(`${value}`, 10);\r\n}\r\n\r\nexport function toString(value: any): string {\r\n  return (value !== undefined && value !== null) ? `${value}` : '';\r\n}\r\n\r\nexport function isNumber(value: any): value is number {\r\n  return !isNaN(toInteger(value));\r\n}\r\n\r\nexport function isInteger(value: any): value is number {\r\n  return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n}\r\n\r\nexport function padNumber(value: number) {\r\n  if (isNumber(value)) {\r\n    return `0${value}`.slice(-2);\r\n  } else {\r\n    return '';\r\n  }\r\n}\r\n\r\nexport function regExpEscape(text) {\r\n  return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n}\r\n\r\n\r\n\r\n\r\n","import {isNumber, toInteger} from '../utils/util';\r\n\r\nexport class HxaTime {\r\n  hour: number;\r\n  minute: number;\r\n  second: number;\r\n\r\n  constructor(hour?: number, minute?: number, second?: number) {\r\n    this.hour = toInteger(hour);\r\n    this.minute = toInteger(minute);\r\n    this.second = toInteger(second);\r\n  }\r\n\r\n  changeHour(step = 1) { this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step); }\r\n\r\n  updateHour(hour: number) {\r\n    if (isNumber(hour)) {\r\n      this.hour = (hour < 0 ? 24 + hour : hour) % 24;\r\n    } else {\r\n      this.hour = NaN;\r\n    }\r\n  }\r\n\r\n  changeMinute(step = 1) { this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step); }\r\n\r\n  updateMinute(minute: number) {\r\n    if (isNumber(minute)) {\r\n      this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\r\n      this.changeHour(Math.floor(minute / 60));\r\n    } else {\r\n      this.minute = NaN;\r\n    }\r\n  }\r\n\r\n  changeSecond(step = 1) { this.updateSecond((isNaN(this.second) ? 0 : this.second) + step); }\r\n\r\n  updateSecond(second: number) {\r\n    if (isNumber(second)) {\r\n      this.second = second < 0 ? 60 + second % 60 : second % 60;\r\n      this.changeMinute(Math.floor(second / 60));\r\n    } else {\r\n      this.second = NaN;\r\n    }\r\n  }\r\n\r\n  isValid(checkSecs = true) {\r\n    return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\r\n  }\r\n\r\n  toString() { return `${this.hour || 0}:${this.minute || 0}:${this.second || 0}`; }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {HxaTimeStruct} from './hxa-time-struct';\r\nimport {isInteger} from '../utils/util';\r\n\r\nexport function NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\r\n  return new NgbTimeStructAdapter();\r\n}\r\n\r\n/**\r\n * An abstract service that does the conversion between the internal time-picker `HxaTimeStruct` model and\r\n * any provided user time model `T`, ex. a string, a native date, etc.\r\n *\r\n * The adapter is used **only** for conversion when binding time-picker to a form control,\r\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\r\n *\r\n * The default time-picker implementation assumes we use `HxaTimeStruct` as a user model.\r\n *\r\n * See the [custom time adapter demo](#/components/time-picker/examples#adapter) for an example.\r\n *\r\n * @since 2.2.0\r\n */\r\n@Injectable({providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY})\r\nexport abstract class HxaTimeAdapter<T> {\r\n  /**\r\n   * Converts a user-model time of type `T` to an `HxaTimeStruct` for internal use.\r\n   */\r\n  abstract fromModel(value: T | null): HxaTimeStruct | null;\r\n\r\n  /**\r\n   * Converts an internal `HxaTimeStruct` time to a user-model time of type `T`.\r\n   */\r\n  abstract toModel(time: HxaTimeStruct | null): T | null;\r\n}\r\n\r\n@Injectable()\r\nexport class NgbTimeStructAdapter extends HxaTimeAdapter<HxaTimeStruct> {\r\n  /**\r\n   * Converts a HxaTimeStruct value into HxaTimeStruct value\r\n   */\r\n  fromModel(time: HxaTimeStruct | null): HxaTimeStruct | null {\r\n    return (time && isInteger(time.hour) && isInteger(time.minute)) ?\r\n        {hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : <any>null} :\r\n        null;\r\n  }\r\n\r\n  /**\r\n   * Converts a HxaTimeStruct value into HxaTimeStruct value\r\n   */\r\n  toModel(time: HxaTimeStruct | null): HxaTimeStruct | null {\r\n    return (time && isInteger(time.hour) && isInteger(time.minute)) ?\r\n        {hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : <any>null} :\r\n        null;\r\n  }\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n/**\r\n * A configuration service for the [`NgbTimepicker`](#/components/time-picker/api#NgbTimepicker) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the timepickers used in the application.\r\n */\r\n@Injectable({providedIn: 'root'})\r\nexport class TimepickerConfig {\r\n  meridian = false;\r\n  spinners = true;\r\n  seconds = false;\r\n  hourStep = 1;\r\n  minuteStep = 1;\r\n  secondStep = 1;\r\n  disabled = false;\r\n  readonlyInputs = false;\r\n  size: 'small' | 'medium' | 'large' = 'medium';\r\n}\r\n","import {Inject, Injectable, LOCALE_ID} from '@angular/core';\r\nimport {FormStyle, getLocaleDayPeriods, TranslationWidth} from '@angular/common';\r\n\r\nexport function NGB_TIMEPICKER_I18N_FACTORY(locale) {\r\n  return new TimepickerI18nDefault(locale);\r\n}\r\n\r\n/**\r\n * Type of the service supplying day periods (for example, 'AM' and 'PM') to NgbTimepicker component.\r\n * The default implementation of this service honors the Angular locale, and uses the registered locale data,\r\n * as explained in the Angular i18n guide.\r\n */\r\n@Injectable({providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [LOCALE_ID]})\r\nexport abstract class TimepickerI18n {\r\n  /**\r\n   * Returns the name for the period before midday.\r\n   */\r\n  abstract getMorningPeriod(): string;\r\n\r\n  /**\r\n   * Returns the name for the period after midday.\r\n   */\r\n  abstract getAfternoonPeriod(): string;\r\n}\r\n\r\n@Injectable()\r\nexport class TimepickerI18nDefault extends TimepickerI18n {\r\n  private _periods: Readonly<[string, string]>;\r\n\r\n  constructor(@Inject(LOCALE_ID) locale: string) {\r\n    super();\r\n\r\n    this._periods = getLocaleDayPeriods(locale, FormStyle.Standalone, TranslationWidth.Narrow);\r\n  }\r\n\r\n  getMorningPeriod(): string { return this._periods[0]; }\r\n\r\n  getAfternoonPeriod(): string { return this._periods[1]; }\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  forwardRef,\r\n  Input,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { isInteger, isNumber, padNumber, toInteger } from '../utils/util';\r\nimport { HxaTime } from './hxa-time';\r\nimport { HxaTimeAdapter } from './hxa-time-adapter';\r\nimport { TimepickerConfig } from './timepicker-config';\r\nimport { TimepickerI18n } from './timepicker-i18n';\r\n\r\nconst FILTER_REGEX = /[^0-9]/g;\r\n\r\n/**\r\n * A directive that helps with wth picking hours, minutes and seconds.\r\n */\r\n@Component({\r\n  selector: 'hxa-timepicker',\r\n  encapsulation: ViewEncapsulation.None,\r\n  styleUrls: ['./timepicker.scss'],\r\n  template: `\r\n    <fieldset [disabled]=\"disabled\" [class.disabled]=\"disabled\">\r\n      <div class=\"ngb-tp\">\r\n        <div class=\"ngb-tp-input-container ngb-tp-hour\">\r\n          <button\r\n            *ngIf=\"spinners\"\r\n            tabindex=\"-1\"\r\n            type=\"button\"\r\n            (click)=\"changeHour(hourStep)\"\r\n            class=\"hx-button is-flat\"\r\n            [class.is-small]=\"isSmallSize\"\r\n            [class.is-large]=\"isLargeSize\"\r\n            [class.disabled]=\"disabled\"\r\n            [disabled]=\"disabled\"\r\n          >\r\n            <span class=\"hx-icon icon-angle-up is-medium is-info\"></span>\r\n            <span\r\n              class=\"sr-only is-hidden\"\r\n              i18n=\"@@ngb.timepicker.increment-hours\"\r\n              >Increment hours</span\r\n            >\r\n          </button>\r\n          <div class=\"hx-input-control\">\r\n            <input\r\n              type=\"text\"\r\n              class=\"hx-input is-text-center\"\r\n              [class.is-small]=\"isSmallSize\"\r\n              [class.is-large]=\"isLargeSize\"\r\n              maxlength=\"2\"\r\n              inputmode=\"numeric\"\r\n              placeholder=\"HH\"\r\n              i18n-placeholder=\"@@ngb.timepicker.HH\"\r\n              [value]=\"formatHour(model?.hour)\"\r\n              (change)=\"updateHour($any($event).target.value)\"\r\n              [readOnly]=\"readonlyInputs\"\r\n              [disabled]=\"disabled\"\r\n              aria-label=\"Hours\"\r\n              i18n-aria-label=\"@@ngb.timepicker.hours\"\r\n              (input)=\"formatInput($any($event).target)\"\r\n              (keydown.ArrowUp)=\"changeHour(hourStep); $event.preventDefault()\"\r\n              (keydown.ArrowDown)=\"\r\n                changeHour(-hourStep); $event.preventDefault()\r\n              \"\r\n              hxaTextInput\r\n            />\r\n            <label class=\"hx-label\"></label>\r\n            <div class=\"hx-help\"></div>\r\n          </div>\r\n          <button\r\n            *ngIf=\"spinners\"\r\n            tabindex=\"-1\"\r\n            type=\"button\"\r\n            (click)=\"changeHour(-hourStep)\"\r\n            class=\"hx-button is-flat mt-2\"\r\n            [class.is-small]=\"isSmallSize\"\r\n            [class.is-large]=\"isLargeSize\"\r\n            [class.disabled]=\"disabled\"\r\n            [disabled]=\"disabled\"\r\n          >\r\n            <span class=\"hx-icon icon-angle-down is-medium is-info\"></span>\r\n            <span\r\n              class=\"sr-only is-hidden\"\r\n              i18n=\"@@ngb.timepicker.decrement-hours\"\r\n              >Decrement hours</span\r\n            >\r\n          </button>\r\n        </div>\r\n        <div class=\"ngb-tp-spacer\">:</div>\r\n        <div class=\"ngb-tp-input-container ngb-tp-minute\">\r\n          <button\r\n            *ngIf=\"spinners\"\r\n            tabindex=\"-1\"\r\n            type=\"button\"\r\n            (click)=\"changeMinute(minuteStep)\"\r\n            class=\"hx-button is-flat\"\r\n            [class.is-small]=\"isSmallSize\"\r\n            [class.is-large]=\"isLargeSize\"\r\n            [class.disabled]=\"disabled\"\r\n            [disabled]=\"disabled\"\r\n          >\r\n            <span class=\"hx-icon icon-angle-up is-medium is-info\"></span>\r\n            <span\r\n              class=\"sr-only is-hidden\"\r\n              i18n=\"@@ngb.timepicker.increment-minutes\"\r\n              >Increment minutes</span\r\n            >\r\n          </button>\r\n          <div class=\"hx-input-control\">\r\n            <input\r\n              type=\"text\"\r\n              class=\"hx-input is-text-center\"\r\n              [class.is-small]=\"isSmallSize\"\r\n              [class.is-large]=\"isLargeSize\"\r\n              maxlength=\"2\"\r\n              inputmode=\"numeric\"\r\n              placeholder=\"MM\"\r\n              i18n-placeholder=\"@@ngb.timepicker.MM\"\r\n              [value]=\"formatMinSec(model?.minute)\"\r\n              (change)=\"updateMinute($any($event).target.value)\"\r\n              [readOnly]=\"readonlyInputs\"\r\n              [disabled]=\"disabled\"\r\n              aria-label=\"Minutes\"\r\n              i18n-aria-label=\"@@ngb.timepicker.minutes\"\r\n              (input)=\"formatInput($any($event).target)\"\r\n              (keydown.ArrowUp)=\"\r\n                changeMinute(minuteStep); $event.preventDefault()\r\n              \"\r\n              (keydown.ArrowDown)=\"\r\n                changeMinute(-minuteStep); $event.preventDefault()\r\n              \"\r\n            />\r\n            <label class=\"hx-label\"></label>\r\n            <div class=\"hx-help\"></div>\r\n          </div>\r\n          <button\r\n            *ngIf=\"spinners\"\r\n            tabindex=\"-1\"\r\n            type=\"button\"\r\n            (click)=\"changeMinute(-minuteStep)\"\r\n            class=\"hx-button is-flat mt-2\"\r\n            [class.is-small]=\"isSmallSize\"\r\n            [class.is-large]=\"isLargeSize\"\r\n            [class.disabled]=\"disabled\"\r\n            [disabled]=\"disabled\"\r\n          >\r\n            <span class=\"hx-icon icon-angle-down is-medium is-info\"></span>\r\n            <span\r\n              class=\"sr-only is-hidden\"\r\n              i18n=\"@@ngb.timepicker.decrement-minutes\"\r\n              >Decrement minutes</span\r\n            >\r\n          </button>\r\n        </div>\r\n        <div *ngIf=\"seconds\" class=\"ngb-tp-spacer\">:</div>\r\n        <div *ngIf=\"seconds\" class=\"ngb-tp-input-container ngb-tp-second\">\r\n          <button\r\n            *ngIf=\"spinners\"\r\n            tabindex=\"-1\"\r\n            type=\"button\"\r\n            (click)=\"changeSecond(secondStep)\"\r\n            class=\"hx-button is-flat\"\r\n            [class.btn-sm]=\"isSmallSize\"\r\n            [class.btn-lg]=\"isLargeSize\"\r\n            [class.disabled]=\"disabled\"\r\n            [disabled]=\"disabled\"\r\n          >\r\n            <span class=\"hx-icon icon-angle-up is-medium is-info\"></span>\r\n            <span\r\n              class=\"sr-only is-hidden\"\r\n              i18n=\"@@ngb.timepicker.increment-seconds\"\r\n              >Increment seconds</span\r\n            >\r\n          </button>\r\n          <div class=\"hx-input-control\">\r\n            <input\r\n              type=\"text\"\r\n              class=\"hx-input is-text-center\"\r\n              [class.is-small]=\"isSmallSize\"\r\n              [class.is-large]=\"isLargeSize\"\r\n              maxlength=\"2\"\r\n              inputmode=\"numeric\"\r\n              placeholder=\"SS\"\r\n              i18n-placeholder=\"@@ngb.timepicker.SS\"\r\n              [value]=\"formatMinSec(model?.second)\"\r\n              (change)=\"updateSecond($any($event).target.value)\"\r\n              [readOnly]=\"readonlyInputs\"\r\n              [disabled]=\"disabled\"\r\n              aria-label=\"Seconds\"\r\n              i18n-aria-label=\"@@ngb.timepicker.seconds\"\r\n              (input)=\"formatInput($any($event).target)\"\r\n              (keydown.ArrowUp)=\"\r\n                changeSecond(secondStep); $event.preventDefault()\r\n              \"\r\n              (keydown.ArrowDown)=\"\r\n                changeSecond(-secondStep); $event.preventDefault()\r\n              \"\r\n            />\r\n            <label class=\"hx-label\"></label>\r\n            <div class=\"hx-help\"></div>\r\n          </div>\r\n          <button\r\n            *ngIf=\"spinners\"\r\n            tabindex=\"-1\"\r\n            type=\"button\"\r\n            (click)=\"changeSecond(-secondStep)\"\r\n            class=\"hx-button mt-2\"\r\n            [class.is-small]=\"isSmallSize\"\r\n            [class.is-large]=\"isLargeSize\"\r\n            [class.disabled]=\"disabled\"\r\n            [disabled]=\"disabled\"\r\n          >\r\n            <span class=\"hx-icon icon-angle-down is-medium is-info\"></span>\r\n            <span\r\n              class=\"sr-only is-hidden\"\r\n              i18n=\"@@ngb.timepicker.decrement-seconds\"\r\n              >Decrement seconds</span\r\n            >\r\n          </button>\r\n        </div>\r\n        <div *ngIf=\"meridian\" class=\"ngb-tp-spacer\"></div>\r\n        <div *ngIf=\"meridian\" class=\"ngb-tp-meridian\">\r\n          <button\r\n            type=\"button\"\r\n            class=\"hx-button mb-1\"\r\n            [class.is-small]=\"isSmallSize\"\r\n            [class.is-large]=\"isLargeSize\"\r\n            [disabled]=\"disabled\"\r\n            [class.disabled]=\"disabled\"\r\n            (click)=\"toggleMeridian()\"\r\n          >\r\n            <ng-container\r\n              *ngIf=\"model && model.hour >= 12; else am\"\r\n              i18n=\"@@ngb.timepicker.PM\"\r\n              >{{ i18n.getAfternoonPeriod() }}</ng-container\r\n            >\r\n            <ng-template #am i18n=\"@@ngb.timepicker.AM\">{{\r\n              i18n.getMorningPeriod()\r\n            }}</ng-template>\r\n          </button>\r\n        </div>\r\n      </div>\r\n    </fieldset>\r\n  `,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => Timepicker),\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\n// TODO: rename to TimePickerComponent\r\n// eslint-disable-next-line @angular-eslint/component-class-suffix\r\nexport class Timepicker implements ControlValueAccessor, OnChanges {\r\n  static ngAcceptInputType_size: string;\r\n\r\n  public model: HxaTime;\r\n\r\n  private _hourStep: number;\r\n  private _minuteStep: number;\r\n  private _secondStep: number;\r\n\r\n  /**\r\n   * Whether to display 12H or 24H mode.\r\n   */\r\n  @Input() meridian: boolean;\r\n\r\n  /**\r\n   * If `true`, the spinners above and below inputs are visible.\r\n   */\r\n  @Input() spinners: boolean;\r\n\r\n  /**\r\n   * If `true`, it is possible to select seconds.\r\n   */\r\n  @Input() seconds: boolean;\r\n\r\n  /**\r\n   * The number of hours to add/subtract when clicking hour spinners.\r\n   */\r\n  @Input()\r\n  set hourStep(step: number) {\r\n    this._hourStep = isInteger(step) ? step : this._config.hourStep;\r\n  }\r\n\r\n  get hourStep(): number {\r\n    return this._hourStep;\r\n  }\r\n\r\n  /**\r\n   * The number of minutes to add/subtract when clicking minute spinners.\r\n   */\r\n  @Input()\r\n  set minuteStep(step: number) {\r\n    this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\r\n  }\r\n\r\n  get minuteStep(): number {\r\n    return this._minuteStep;\r\n  }\r\n\r\n  /**\r\n   * The number of seconds to add/subtract when clicking second spinners.\r\n   */\r\n  @Input()\r\n  set secondStep(step: number) {\r\n    this._secondStep = isInteger(step) ? step : this._config.secondStep;\r\n  }\r\n\r\n  get secondStep(): number {\r\n    return this._secondStep;\r\n  }\r\n\r\n  /**\r\n   * If `true`, the time-picker is readonly and can't be changed.\r\n   */\r\n  @Input() readonlyInputs: boolean;\r\n\r\n  /**\r\n   * If `true`, the timepicker input is disabled.\r\n   */\r\n  @Input() disabled: boolean;\r\n\r\n  /**\r\n   * The size of inputs and buttons.\r\n   */\r\n  @Input() size: 'small' | 'medium' | 'large';\r\n\r\n  constructor(\r\n    private readonly _config: TimepickerConfig,\r\n    private _ngbTimeAdapter: HxaTimeAdapter<any>,\r\n    private _cd: ChangeDetectorRef,\r\n    public i18n: TimepickerI18n\r\n  ) {\r\n    this.meridian = _config.meridian;\r\n    this.spinners = _config.spinners;\r\n    this.seconds = _config.seconds;\r\n    this.hourStep = _config.hourStep;\r\n    this.minuteStep = _config.minuteStep;\r\n    this.secondStep = _config.secondStep;\r\n    this.disabled = _config.disabled;\r\n    this.readonlyInputs = _config.readonlyInputs;\r\n    this.size = _config.size;\r\n  }\r\n\r\n  /* eslint-disable @typescript-eslint/no-empty-function */\r\n  onChange = (_: any) => {};\r\n  onTouched = () => {};\r\n  /* eslint-disable @typescript-eslint/no-empty-function */\r\n\r\n  writeValue(value) {\r\n    const structValue = this._ngbTimeAdapter.fromModel(value);\r\n    this.model = structValue\r\n      ? new HxaTime(structValue.hour, structValue.minute, structValue.second)\r\n      : new HxaTime();\r\n    if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\r\n      this.model.second = 0;\r\n    }\r\n    this._cd.markForCheck();\r\n  }\r\n\r\n  registerOnChange(fn: (value: any) => any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: () => any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean) {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  changeHour(step: number) {\r\n    this.model.changeHour(step);\r\n    this.propagateModelChange();\r\n  }\r\n\r\n  changeMinute(step: number) {\r\n    this.model.changeMinute(step);\r\n    this.propagateModelChange();\r\n  }\r\n\r\n  changeSecond(step: number) {\r\n    this.model.changeSecond(step);\r\n    this.propagateModelChange();\r\n  }\r\n\r\n  updateHour(newVal: string) {\r\n    const isPM = this.model.hour >= 12;\r\n    const enteredHour = toInteger(newVal);\r\n    if (\r\n      this.meridian &&\r\n      ((isPM && enteredHour < 12) || (!isPM && enteredHour === 12))\r\n    ) {\r\n      this.model.updateHour(enteredHour + 12);\r\n    } else {\r\n      this.model.updateHour(enteredHour);\r\n    }\r\n    this.propagateModelChange();\r\n  }\r\n\r\n  updateMinute(newVal: string) {\r\n    this.model.updateMinute(toInteger(newVal));\r\n    this.propagateModelChange();\r\n  }\r\n\r\n  updateSecond(newVal: string) {\r\n    this.model.updateSecond(toInteger(newVal));\r\n    this.propagateModelChange();\r\n  }\r\n\r\n  toggleMeridian() {\r\n    if (this.meridian) {\r\n      this.changeHour(12);\r\n    }\r\n  }\r\n\r\n  formatInput(input: HTMLInputElement) {\r\n    input.value = input.value.replace(FILTER_REGEX, '');\r\n  }\r\n\r\n  formatHour(value?: number) {\r\n    if (isNumber(value)) {\r\n      if (this.meridian) {\r\n        return padNumber(value % 12 === 0 ? 12 : value % 12);\r\n      } else {\r\n        return padNumber(value % 24);\r\n      }\r\n    } else {\r\n      return padNumber(NaN);\r\n    }\r\n  }\r\n\r\n  formatMinSec(value?: number) {\r\n    return padNumber(isNumber(value) ? value : NaN);\r\n  }\r\n\r\n  get isSmallSize(): boolean {\r\n    return this.size === 'small';\r\n  }\r\n\r\n  get isLargeSize(): boolean {\r\n    return this.size === 'large';\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (\r\n      changes['seconds'] &&\r\n      !this.seconds &&\r\n      this.model &&\r\n      !isNumber(this.model.second)\r\n    ) {\r\n      this.model.second = 0;\r\n      this.propagateModelChange(false);\r\n    }\r\n  }\r\n\r\n  private propagateModelChange(touched = true) {\r\n    if (touched) {\r\n      this.onTouched();\r\n    }\r\n    if (this.model.isValid(this.seconds)) {\r\n      this.onChange(\r\n        this._ngbTimeAdapter.toModel({\r\n          hour: this.model.hour,\r\n          minute: this.model.minute,\r\n          second: this.model.second,\r\n        })\r\n      );\r\n    } else {\r\n      this.onChange(this._ngbTimeAdapter.toModel(null));\r\n    }\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { Timepicker } from './timepicker';\r\n\r\nexport { HxaTimeAdapter } from './hxa-time-adapter';\r\nexport { HxaTimeStruct } from './hxa-time-struct';\r\nexport { Timepicker } from './timepicker';\r\nexport { TimepickerConfig } from './timepicker-config';\r\nexport { TimepickerI18n } from './timepicker-i18n';\r\n\r\n@NgModule({\r\n  declarations: [Timepicker],\r\n  exports: [Timepicker],\r\n  imports: [CommonModule]\r\n})\r\nexport class TimepickerModule {}\r\n","import {\r\n  animate,\r\n  keyframes,\r\n  state,\r\n  style,\r\n  transition,\r\n  trigger,\r\n} from '@angular/animations';\r\nimport { Component } from '@angular/core';\r\nimport {Toast, ToastPackage, ToastrService} from \"ngx-toastr\";\r\n\r\n\r\n@Component({\r\n  selector: 'hxa-toastr-component',\r\n  styles: [':host{ pointer-events: all; }'],\r\n  template: `\r\n    <div class=\"hx-alert is-elevate-2 {{ toastPackage.toastType }}\">\r\n      <span class=\"hx-icon-control mr-2\">\r\n        <i class=\"hx-icon is-medium\"\r\n        [class.icon-exclamation]=\"toastPackage.toastType === 'is-warning' || toastPackage.toastType === 'is-danger'\"\r\n        [class.icon-information]=\"toastPackage.toastType === 'is-info'\"\r\n        [class.icon-check]=\"toastPackage.toastType === 'is-success'\"></i>\r\n      </span>\r\n      <span class=\"hx-flex-1\">\r\n        <h5 class=\"ma-0 pa-0 is-text-weight-boldest\">{{ title }}</h5>\r\n        <div *ngIf=\"message && options.enableHtml\" role=\"alert\" aria-live=\"polite\"\r\n             [class]=\"options.messageClass\" [innerHTML]=\"message\">\r\n        </div>\r\n        <div *ngIf=\"message && !options.enableHtml\" role=\"alert\" aria-live=\"polite\"\r\n             [class]=\"options.messageClass\" [attr.aria-label]=\"message\">\r\n          {{ message }}\r\n        </div>\r\n      </span>\r\n      <span class=\"hx-icon-control hx-flex hx-flex-align-center ml-8\"  *ngIf=\"options.closeButton\">\r\n        <button class=\"hx-delete\" (click)=\"remove()\"></button>\r\n      </span>\r\n    </div>\r\n  `,\r\n  animations: [\r\n    trigger('flyInOut', [\r\n      state('inactive', style({ opacity: 0 })),\r\n      transition(\r\n        'inactive => active',\r\n        animate(\r\n          '300ms ease-out',\r\n          keyframes([\r\n            style({\r\n              opacity: 0,\r\n              bottom: '-15px',\r\n              'max-height': 0,\r\n              'max-width': 0,\r\n              'margin-top': 0,\r\n            }),\r\n            style({\r\n              opacity: 0.8,\r\n              bottom: '-3px',\r\n            }),\r\n            style({\r\n              opacity: 1,\r\n              bottom: '0',\r\n              'max-height': '200px',\r\n              'margin-top': '12px',\r\n              'max-width': '400px',\r\n            }),\r\n          ]),\r\n        ),\r\n      ),\r\n      state(\r\n        'active',\r\n        style({\r\n          bottom: '0',\r\n          'max-height': '200px',\r\n          'margin-top': '12px',\r\n          'max-width': '400px',\r\n        }),\r\n      ),\r\n      transition(\r\n        'active => removed',\r\n        animate(\r\n          '300ms ease-out',\r\n          keyframes([\r\n            style({\r\n              opacity: 1,\r\n              transform: 'translateY(0)'\r\n            }),\r\n            style({\r\n              opacity: 0,\r\n              transform: 'translateY(25%)'\r\n            }),\r\n          ]),\r\n        ),\r\n      ),\r\n    ]),\r\n  ],\r\n})\r\nexport class HxaToastrComponent extends Toast {\r\n  // constructor is only necessary when not using AoT\r\n  constructor(\r\n    protected toastrService: ToastrService,\r\n    public toastPackage: ToastPackage,\r\n  ) {\r\n    super(toastrService, toastPackage);\r\n  }\r\n\r\n  close(){\r\n    this.remove();\r\n    console.log('you');\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { HxaToastrComponent } from './hxa-toastr.component';\r\n\r\n@NgModule({\r\n  imports: [ToastrModule, CommonModule],\r\n  declarations: [HxaToastrComponent],\r\n  exports: [HxaToastrComponent]\r\n})\r\nexport class HxaToastrModule {}\r\n","/* eslint-disable max-lines */\r\nexport const latinMap: any = {\r\n  Á: 'A',\r\n  Ă: 'A',\r\n  Ắ: 'A',\r\n  Ặ: 'A',\r\n  Ằ: 'A',\r\n  Ẳ: 'A',\r\n  Ẵ: 'A',\r\n  Ǎ: 'A',\r\n  Â: 'A',\r\n  Ấ: 'A',\r\n  Ậ: 'A',\r\n  Ầ: 'A',\r\n  Ẩ: 'A',\r\n  Ẫ: 'A',\r\n  Ä: 'A',\r\n  Ǟ: 'A',\r\n  Ȧ: 'A',\r\n  Ǡ: 'A',\r\n  Ạ: 'A',\r\n  Ȁ: 'A',\r\n  À: 'A',\r\n  Ả: 'A',\r\n  Ȃ: 'A',\r\n  Ā: 'A',\r\n  Ą: 'A',\r\n  Å: 'A',\r\n  Ǻ: 'A',\r\n  Ḁ: 'A',\r\n  Ⱥ: 'A',\r\n  Ã: 'A',\r\n  Ꜳ: 'AA',\r\n  Æ: 'AE',\r\n  Ǽ: 'AE',\r\n  Ǣ: 'AE',\r\n  Ꜵ: 'AO',\r\n  Ꜷ: 'AU',\r\n  Ꜹ: 'AV',\r\n  Ꜻ: 'AV',\r\n  Ꜽ: 'AY',\r\n  Ḃ: 'B',\r\n  Ḅ: 'B',\r\n  Ɓ: 'B',\r\n  Ḇ: 'B',\r\n  Ƀ: 'B',\r\n  Ƃ: 'B',\r\n  Ć: 'C',\r\n  Č: 'C',\r\n  Ç: 'C',\r\n  Ḉ: 'C',\r\n  Ĉ: 'C',\r\n  Ċ: 'C',\r\n  Ƈ: 'C',\r\n  Ȼ: 'C',\r\n  Ď: 'D',\r\n  Ḑ: 'D',\r\n  Ḓ: 'D',\r\n  Ḋ: 'D',\r\n  Ḍ: 'D',\r\n  Ɗ: 'D',\r\n  Ḏ: 'D',\r\n  ǲ: 'D',\r\n  ǅ: 'D',\r\n  Đ: 'D',\r\n  Ƌ: 'D',\r\n  Ǳ: 'DZ',\r\n  Ǆ: 'DZ',\r\n  É: 'E',\r\n  Ĕ: 'E',\r\n  Ě: 'E',\r\n  Ȩ: 'E',\r\n  Ḝ: 'E',\r\n  Ê: 'E',\r\n  Ế: 'E',\r\n  Ệ: 'E',\r\n  Ề: 'E',\r\n  Ể: 'E',\r\n  Ễ: 'E',\r\n  Ḙ: 'E',\r\n  Ë: 'E',\r\n  Ė: 'E',\r\n  Ẹ: 'E',\r\n  Ȅ: 'E',\r\n  È: 'E',\r\n  Ẻ: 'E',\r\n  Ȇ: 'E',\r\n  Ē: 'E',\r\n  Ḗ: 'E',\r\n  Ḕ: 'E',\r\n  Ę: 'E',\r\n  Ɇ: 'E',\r\n  Ẽ: 'E',\r\n  Ḛ: 'E',\r\n  Ꝫ: 'ET',\r\n  Ḟ: 'F',\r\n  Ƒ: 'F',\r\n  Ǵ: 'G',\r\n  Ğ: 'G',\r\n  Ǧ: 'G',\r\n  Ģ: 'G',\r\n  Ĝ: 'G',\r\n  Ġ: 'G',\r\n  Ɠ: 'G',\r\n  Ḡ: 'G',\r\n  Ǥ: 'G',\r\n  Ḫ: 'H',\r\n  Ȟ: 'H',\r\n  Ḩ: 'H',\r\n  Ĥ: 'H',\r\n  Ⱨ: 'H',\r\n  Ḧ: 'H',\r\n  Ḣ: 'H',\r\n  Ḥ: 'H',\r\n  Ħ: 'H',\r\n  Í: 'I',\r\n  Ĭ: 'I',\r\n  Ǐ: 'I',\r\n  Î: 'I',\r\n  Ï: 'I',\r\n  Ḯ: 'I',\r\n  İ: 'I',\r\n  Ị: 'I',\r\n  Ȉ: 'I',\r\n  Ì: 'I',\r\n  Ỉ: 'I',\r\n  Ȋ: 'I',\r\n  Ī: 'I',\r\n  Į: 'I',\r\n  Ɨ: 'I',\r\n  Ĩ: 'I',\r\n  Ḭ: 'I',\r\n  Ꝺ: 'D',\r\n  Ꝼ: 'F',\r\n  Ᵹ: 'G',\r\n  Ꞃ: 'R',\r\n  Ꞅ: 'S',\r\n  Ꞇ: 'T',\r\n  Ꝭ: 'IS',\r\n  Ĵ: 'J',\r\n  Ɉ: 'J',\r\n  Ḱ: 'K',\r\n  Ǩ: 'K',\r\n  Ķ: 'K',\r\n  Ⱪ: 'K',\r\n  Ꝃ: 'K',\r\n  Ḳ: 'K',\r\n  Ƙ: 'K',\r\n  Ḵ: 'K',\r\n  Ꝁ: 'K',\r\n  Ꝅ: 'K',\r\n  Ĺ: 'L',\r\n  Ƚ: 'L',\r\n  Ľ: 'L',\r\n  Ļ: 'L',\r\n  Ḽ: 'L',\r\n  Ḷ: 'L',\r\n  Ḹ: 'L',\r\n  Ⱡ: 'L',\r\n  Ꝉ: 'L',\r\n  Ḻ: 'L',\r\n  Ŀ: 'L',\r\n  Ɫ: 'L',\r\n  ǈ: 'L',\r\n  Ł: 'L',\r\n  Ǉ: 'LJ',\r\n  Ḿ: 'M',\r\n  Ṁ: 'M',\r\n  Ṃ: 'M',\r\n  Ɱ: 'M',\r\n  Ń: 'N',\r\n  Ň: 'N',\r\n  Ņ: 'N',\r\n  Ṋ: 'N',\r\n  Ṅ: 'N',\r\n  Ṇ: 'N',\r\n  Ǹ: 'N',\r\n  Ɲ: 'N',\r\n  Ṉ: 'N',\r\n  Ƞ: 'N',\r\n  ǋ: 'N',\r\n  Ñ: 'N',\r\n  Ǌ: 'NJ',\r\n  Ó: 'O',\r\n  Ŏ: 'O',\r\n  Ǒ: 'O',\r\n  Ô: 'O',\r\n  Ố: 'O',\r\n  Ộ: 'O',\r\n  Ồ: 'O',\r\n  Ổ: 'O',\r\n  Ỗ: 'O',\r\n  Ö: 'O',\r\n  Ȫ: 'O',\r\n  Ȯ: 'O',\r\n  Ȱ: 'O',\r\n  Ọ: 'O',\r\n  Ő: 'O',\r\n  Ȍ: 'O',\r\n  Ò: 'O',\r\n  Ỏ: 'O',\r\n  Ơ: 'O',\r\n  Ớ: 'O',\r\n  Ợ: 'O',\r\n  Ờ: 'O',\r\n  Ở: 'O',\r\n  Ỡ: 'O',\r\n  Ȏ: 'O',\r\n  Ꝋ: 'O',\r\n  Ꝍ: 'O',\r\n  Ō: 'O',\r\n  Ṓ: 'O',\r\n  Ṑ: 'O',\r\n  Ɵ: 'O',\r\n  Ǫ: 'O',\r\n  Ǭ: 'O',\r\n  Ø: 'O',\r\n  Ǿ: 'O',\r\n  Õ: 'O',\r\n  Ṍ: 'O',\r\n  Ṏ: 'O',\r\n  Ȭ: 'O',\r\n  Ƣ: 'OI',\r\n  Ꝏ: 'OO',\r\n  Ɛ: 'E',\r\n  Ɔ: 'O',\r\n  Ȣ: 'OU',\r\n  Ṕ: 'P',\r\n  Ṗ: 'P',\r\n  Ꝓ: 'P',\r\n  Ƥ: 'P',\r\n  Ꝕ: 'P',\r\n  Ᵽ: 'P',\r\n  Ꝑ: 'P',\r\n  Ꝙ: 'Q',\r\n  Ꝗ: 'Q',\r\n  Ŕ: 'R',\r\n  Ř: 'R',\r\n  Ŗ: 'R',\r\n  Ṙ: 'R',\r\n  Ṛ: 'R',\r\n  Ṝ: 'R',\r\n  Ȑ: 'R',\r\n  Ȓ: 'R',\r\n  Ṟ: 'R',\r\n  Ɍ: 'R',\r\n  Ɽ: 'R',\r\n  Ꜿ: 'C',\r\n  Ǝ: 'E',\r\n  Ś: 'S',\r\n  Ṥ: 'S',\r\n  Š: 'S',\r\n  Ṧ: 'S',\r\n  Ş: 'S',\r\n  Ŝ: 'S',\r\n  Ș: 'S',\r\n  Ṡ: 'S',\r\n  Ṣ: 'S',\r\n  Ṩ: 'S',\r\n  Ť: 'T',\r\n  Ţ: 'T',\r\n  Ṱ: 'T',\r\n  Ț: 'T',\r\n  Ⱦ: 'T',\r\n  Ṫ: 'T',\r\n  Ṭ: 'T',\r\n  Ƭ: 'T',\r\n  Ṯ: 'T',\r\n  Ʈ: 'T',\r\n  Ŧ: 'T',\r\n  Ɐ: 'A',\r\n  Ꞁ: 'L',\r\n  Ɯ: 'M',\r\n  Ʌ: 'V',\r\n  Ꜩ: 'TZ',\r\n  Ú: 'U',\r\n  Ŭ: 'U',\r\n  Ǔ: 'U',\r\n  Û: 'U',\r\n  Ṷ: 'U',\r\n  Ü: 'U',\r\n  Ǘ: 'U',\r\n  Ǚ: 'U',\r\n  Ǜ: 'U',\r\n  Ǖ: 'U',\r\n  Ṳ: 'U',\r\n  Ụ: 'U',\r\n  Ű: 'U',\r\n  Ȕ: 'U',\r\n  Ù: 'U',\r\n  Ủ: 'U',\r\n  Ư: 'U',\r\n  Ứ: 'U',\r\n  Ự: 'U',\r\n  Ừ: 'U',\r\n  Ử: 'U',\r\n  Ữ: 'U',\r\n  Ȗ: 'U',\r\n  Ū: 'U',\r\n  Ṻ: 'U',\r\n  Ų: 'U',\r\n  Ů: 'U',\r\n  Ũ: 'U',\r\n  Ṹ: 'U',\r\n  Ṵ: 'U',\r\n  Ꝟ: 'V',\r\n  Ṿ: 'V',\r\n  Ʋ: 'V',\r\n  Ṽ: 'V',\r\n  Ꝡ: 'VY',\r\n  Ẃ: 'W',\r\n  Ŵ: 'W',\r\n  Ẅ: 'W',\r\n  Ẇ: 'W',\r\n  Ẉ: 'W',\r\n  Ẁ: 'W',\r\n  Ⱳ: 'W',\r\n  Ẍ: 'X',\r\n  Ẋ: 'X',\r\n  Ý: 'Y',\r\n  Ŷ: 'Y',\r\n  Ÿ: 'Y',\r\n  Ẏ: 'Y',\r\n  Ỵ: 'Y',\r\n  Ỳ: 'Y',\r\n  Ƴ: 'Y',\r\n  Ỷ: 'Y',\r\n  Ỿ: 'Y',\r\n  Ȳ: 'Y',\r\n  Ɏ: 'Y',\r\n  Ỹ: 'Y',\r\n  Ź: 'Z',\r\n  Ž: 'Z',\r\n  Ẑ: 'Z',\r\n  Ⱬ: 'Z',\r\n  Ż: 'Z',\r\n  Ẓ: 'Z',\r\n  Ȥ: 'Z',\r\n  Ẕ: 'Z',\r\n  Ƶ: 'Z',\r\n  Ĳ: 'IJ',\r\n  Œ: 'OE',\r\n  ᴀ: 'A',\r\n  ᴁ: 'AE',\r\n  ʙ: 'B',\r\n  ᴃ: 'B',\r\n  ᴄ: 'C',\r\n  ᴅ: 'D',\r\n  ᴇ: 'E',\r\n  ꜰ: 'F',\r\n  ɢ: 'G',\r\n  ʛ: 'G',\r\n  ʜ: 'H',\r\n  ɪ: 'I',\r\n  ʁ: 'R',\r\n  ᴊ: 'J',\r\n  ᴋ: 'K',\r\n  ʟ: 'L',\r\n  ᴌ: 'L',\r\n  ᴍ: 'M',\r\n  ɴ: 'N',\r\n  ᴏ: 'O',\r\n  ɶ: 'OE',\r\n  ᴐ: 'O',\r\n  ᴕ: 'OU',\r\n  ᴘ: 'P',\r\n  ʀ: 'R',\r\n  ᴎ: 'N',\r\n  ᴙ: 'R',\r\n  ꜱ: 'S',\r\n  ᴛ: 'T',\r\n  ⱻ: 'E',\r\n  ᴚ: 'R',\r\n  ᴜ: 'U',\r\n  ᴠ: 'V',\r\n  ᴡ: 'W',\r\n  ʏ: 'Y',\r\n  ᴢ: 'Z',\r\n  á: 'a',\r\n  ă: 'a',\r\n  ắ: 'a',\r\n  ặ: 'a',\r\n  ằ: 'a',\r\n  ẳ: 'a',\r\n  ẵ: 'a',\r\n  ǎ: 'a',\r\n  â: 'a',\r\n  ấ: 'a',\r\n  ậ: 'a',\r\n  ầ: 'a',\r\n  ẩ: 'a',\r\n  ẫ: 'a',\r\n  ä: 'a',\r\n  ǟ: 'a',\r\n  ȧ: 'a',\r\n  ǡ: 'a',\r\n  ạ: 'a',\r\n  ȁ: 'a',\r\n  à: 'a',\r\n  ả: 'a',\r\n  ȃ: 'a',\r\n  ā: 'a',\r\n  ą: 'a',\r\n  ᶏ: 'a',\r\n  ẚ: 'a',\r\n  å: 'a',\r\n  ǻ: 'a',\r\n  ḁ: 'a',\r\n  ⱥ: 'a',\r\n  ã: 'a',\r\n  ꜳ: 'aa',\r\n  æ: 'ae',\r\n  ǽ: 'ae',\r\n  ǣ: 'ae',\r\n  ꜵ: 'ao',\r\n  ꜷ: 'au',\r\n  ꜹ: 'av',\r\n  ꜻ: 'av',\r\n  ꜽ: 'ay',\r\n  ḃ: 'b',\r\n  ḅ: 'b',\r\n  ɓ: 'b',\r\n  ḇ: 'b',\r\n  ᵬ: 'b',\r\n  ᶀ: 'b',\r\n  ƀ: 'b',\r\n  ƃ: 'b',\r\n  ɵ: 'o',\r\n  ć: 'c',\r\n  č: 'c',\r\n  ç: 'c',\r\n  ḉ: 'c',\r\n  ĉ: 'c',\r\n  ɕ: 'c',\r\n  ċ: 'c',\r\n  ƈ: 'c',\r\n  ȼ: 'c',\r\n  ď: 'd',\r\n  ḑ: 'd',\r\n  ḓ: 'd',\r\n  ȡ: 'd',\r\n  ḋ: 'd',\r\n  ḍ: 'd',\r\n  ɗ: 'd',\r\n  ᶑ: 'd',\r\n  ḏ: 'd',\r\n  ᵭ: 'd',\r\n  ᶁ: 'd',\r\n  đ: 'd',\r\n  ɖ: 'd',\r\n  ƌ: 'd',\r\n  ı: 'i',\r\n  ȷ: 'j',\r\n  ɟ: 'j',\r\n  ʄ: 'j',\r\n  ǳ: 'dz',\r\n  ǆ: 'dz',\r\n  é: 'e',\r\n  ĕ: 'e',\r\n  ě: 'e',\r\n  ȩ: 'e',\r\n  ḝ: 'e',\r\n  ê: 'e',\r\n  ế: 'e',\r\n  ệ: 'e',\r\n  ề: 'e',\r\n  ể: 'e',\r\n  ễ: 'e',\r\n  ḙ: 'e',\r\n  ë: 'e',\r\n  ė: 'e',\r\n  ẹ: 'e',\r\n  ȅ: 'e',\r\n  è: 'e',\r\n  ẻ: 'e',\r\n  ȇ: 'e',\r\n  ē: 'e',\r\n  ḗ: 'e',\r\n  ḕ: 'e',\r\n  ⱸ: 'e',\r\n  ę: 'e',\r\n  ᶒ: 'e',\r\n  ɇ: 'e',\r\n  ẽ: 'e',\r\n  ḛ: 'e',\r\n  ꝫ: 'et',\r\n  ḟ: 'f',\r\n  ƒ: 'f',\r\n  ᵮ: 'f',\r\n  ᶂ: 'f',\r\n  ǵ: 'g',\r\n  ğ: 'g',\r\n  ǧ: 'g',\r\n  ģ: 'g',\r\n  ĝ: 'g',\r\n  ġ: 'g',\r\n  ɠ: 'g',\r\n  ḡ: 'g',\r\n  ᶃ: 'g',\r\n  ǥ: 'g',\r\n  ḫ: 'h',\r\n  ȟ: 'h',\r\n  ḩ: 'h',\r\n  ĥ: 'h',\r\n  ⱨ: 'h',\r\n  ḧ: 'h',\r\n  ḣ: 'h',\r\n  ḥ: 'h',\r\n  ɦ: 'h',\r\n  ẖ: 'h',\r\n  ħ: 'h',\r\n  ƕ: 'hv',\r\n  í: 'i',\r\n  ĭ: 'i',\r\n  ǐ: 'i',\r\n  î: 'i',\r\n  ï: 'i',\r\n  ḯ: 'i',\r\n  ị: 'i',\r\n  ȉ: 'i',\r\n  ì: 'i',\r\n  ỉ: 'i',\r\n  ȋ: 'i',\r\n  ī: 'i',\r\n  į: 'i',\r\n  ᶖ: 'i',\r\n  ɨ: 'i',\r\n  ĩ: 'i',\r\n  ḭ: 'i',\r\n  ꝺ: 'd',\r\n  ꝼ: 'f',\r\n  ᵹ: 'g',\r\n  ꞃ: 'r',\r\n  ꞅ: 's',\r\n  ꞇ: 't',\r\n  ꝭ: 'is',\r\n  ǰ: 'j',\r\n  ĵ: 'j',\r\n  ʝ: 'j',\r\n  ɉ: 'j',\r\n  ḱ: 'k',\r\n  ǩ: 'k',\r\n  ķ: 'k',\r\n  ⱪ: 'k',\r\n  ꝃ: 'k',\r\n  ḳ: 'k',\r\n  ƙ: 'k',\r\n  ḵ: 'k',\r\n  ᶄ: 'k',\r\n  ꝁ: 'k',\r\n  ꝅ: 'k',\r\n  ĺ: 'l',\r\n  ƚ: 'l',\r\n  ɬ: 'l',\r\n  ľ: 'l',\r\n  ļ: 'l',\r\n  ḽ: 'l',\r\n  ȴ: 'l',\r\n  ḷ: 'l',\r\n  ḹ: 'l',\r\n  ⱡ: 'l',\r\n  ꝉ: 'l',\r\n  ḻ: 'l',\r\n  ŀ: 'l',\r\n  ɫ: 'l',\r\n  ᶅ: 'l',\r\n  ɭ: 'l',\r\n  ł: 'l',\r\n  ǉ: 'lj',\r\n  ſ: 's',\r\n  ẜ: 's',\r\n  ẛ: 's',\r\n  ẝ: 's',\r\n  ḿ: 'm',\r\n  ṁ: 'm',\r\n  ṃ: 'm',\r\n  ɱ: 'm',\r\n  ᵯ: 'm',\r\n  ᶆ: 'm',\r\n  ń: 'n',\r\n  ň: 'n',\r\n  ņ: 'n',\r\n  ṋ: 'n',\r\n  ȵ: 'n',\r\n  ṅ: 'n',\r\n  ṇ: 'n',\r\n  ǹ: 'n',\r\n  ɲ: 'n',\r\n  ṉ: 'n',\r\n  ƞ: 'n',\r\n  ᵰ: 'n',\r\n  ᶇ: 'n',\r\n  ɳ: 'n',\r\n  ñ: 'n',\r\n  ǌ: 'nj',\r\n  ó: 'o',\r\n  ŏ: 'o',\r\n  ǒ: 'o',\r\n  ô: 'o',\r\n  ố: 'o',\r\n  ộ: 'o',\r\n  ồ: 'o',\r\n  ổ: 'o',\r\n  ỗ: 'o',\r\n  ö: 'o',\r\n  ȫ: 'o',\r\n  ȯ: 'o',\r\n  ȱ: 'o',\r\n  ọ: 'o',\r\n  ő: 'o',\r\n  ȍ: 'o',\r\n  ò: 'o',\r\n  ỏ: 'o',\r\n  ơ: 'o',\r\n  ớ: 'o',\r\n  ợ: 'o',\r\n  ờ: 'o',\r\n  ở: 'o',\r\n  ỡ: 'o',\r\n  ȏ: 'o',\r\n  ꝋ: 'o',\r\n  ꝍ: 'o',\r\n  ⱺ: 'o',\r\n  ō: 'o',\r\n  ṓ: 'o',\r\n  ṑ: 'o',\r\n  ǫ: 'o',\r\n  ǭ: 'o',\r\n  ø: 'o',\r\n  ǿ: 'o',\r\n  õ: 'o',\r\n  ṍ: 'o',\r\n  ṏ: 'o',\r\n  ȭ: 'o',\r\n  ƣ: 'oi',\r\n  ꝏ: 'oo',\r\n  ɛ: 'e',\r\n  ᶓ: 'e',\r\n  ɔ: 'o',\r\n  ᶗ: 'o',\r\n  ȣ: 'ou',\r\n  ṕ: 'p',\r\n  ṗ: 'p',\r\n  ꝓ: 'p',\r\n  ƥ: 'p',\r\n  ᵱ: 'p',\r\n  ᶈ: 'p',\r\n  ꝕ: 'p',\r\n  ᵽ: 'p',\r\n  ꝑ: 'p',\r\n  ꝙ: 'q',\r\n  ʠ: 'q',\r\n  ɋ: 'q',\r\n  ꝗ: 'q',\r\n  ŕ: 'r',\r\n  ř: 'r',\r\n  ŗ: 'r',\r\n  ṙ: 'r',\r\n  ṛ: 'r',\r\n  ṝ: 'r',\r\n  ȑ: 'r',\r\n  ɾ: 'r',\r\n  ᵳ: 'r',\r\n  ȓ: 'r',\r\n  ṟ: 'r',\r\n  ɼ: 'r',\r\n  ᵲ: 'r',\r\n  ᶉ: 'r',\r\n  ɍ: 'r',\r\n  ɽ: 'r',\r\n  ↄ: 'c',\r\n  ꜿ: 'c',\r\n  ɘ: 'e',\r\n  ɿ: 'r',\r\n  ś: 's',\r\n  ṥ: 's',\r\n  š: 's',\r\n  ṧ: 's',\r\n  ş: 's',\r\n  ŝ: 's',\r\n  ș: 's',\r\n  ṡ: 's',\r\n  ṣ: 's',\r\n  ṩ: 's',\r\n  ʂ: 's',\r\n  ᵴ: 's',\r\n  ᶊ: 's',\r\n  ȿ: 's',\r\n  ɡ: 'g',\r\n  ᴑ: 'o',\r\n  ᴓ: 'o',\r\n  ᴝ: 'u',\r\n  ť: 't',\r\n  ţ: 't',\r\n  ṱ: 't',\r\n  ț: 't',\r\n  ȶ: 't',\r\n  ẗ: 't',\r\n  ⱦ: 't',\r\n  ṫ: 't',\r\n  ṭ: 't',\r\n  ƭ: 't',\r\n  ṯ: 't',\r\n  ᵵ: 't',\r\n  ƫ: 't',\r\n  ʈ: 't',\r\n  ŧ: 't',\r\n  ᵺ: 'th',\r\n  ɐ: 'a',\r\n  ᴂ: 'ae',\r\n  ǝ: 'e',\r\n  ᵷ: 'g',\r\n  ɥ: 'h',\r\n  ʮ: 'h',\r\n  ʯ: 'h',\r\n  ᴉ: 'i',\r\n  ʞ: 'k',\r\n  ꞁ: 'l',\r\n  ɯ: 'm',\r\n  ɰ: 'm',\r\n  ᴔ: 'oe',\r\n  ɹ: 'r',\r\n  ɻ: 'r',\r\n  ɺ: 'r',\r\n  ⱹ: 'r',\r\n  ʇ: 't',\r\n  ʌ: 'v',\r\n  ʍ: 'w',\r\n  ʎ: 'y',\r\n  ꜩ: 'tz',\r\n  ú: 'u',\r\n  ŭ: 'u',\r\n  ǔ: 'u',\r\n  û: 'u',\r\n  ṷ: 'u',\r\n  ü: 'u',\r\n  ǘ: 'u',\r\n  ǚ: 'u',\r\n  ǜ: 'u',\r\n  ǖ: 'u',\r\n  ṳ: 'u',\r\n  ụ: 'u',\r\n  ű: 'u',\r\n  ȕ: 'u',\r\n  ù: 'u',\r\n  ủ: 'u',\r\n  ư: 'u',\r\n  ứ: 'u',\r\n  ự: 'u',\r\n  ừ: 'u',\r\n  ử: 'u',\r\n  ữ: 'u',\r\n  ȗ: 'u',\r\n  ū: 'u',\r\n  ṻ: 'u',\r\n  ų: 'u',\r\n  ᶙ: 'u',\r\n  ů: 'u',\r\n  ũ: 'u',\r\n  ṹ: 'u',\r\n  ṵ: 'u',\r\n  ᵫ: 'ue',\r\n  ꝸ: 'um',\r\n  ⱴ: 'v',\r\n  ꝟ: 'v',\r\n  ṿ: 'v',\r\n  ʋ: 'v',\r\n  ᶌ: 'v',\r\n  ⱱ: 'v',\r\n  ṽ: 'v',\r\n  ꝡ: 'vy',\r\n  ẃ: 'w',\r\n  ŵ: 'w',\r\n  ẅ: 'w',\r\n  ẇ: 'w',\r\n  ẉ: 'w',\r\n  ẁ: 'w',\r\n  ⱳ: 'w',\r\n  ẘ: 'w',\r\n  ẍ: 'x',\r\n  ẋ: 'x',\r\n  ᶍ: 'x',\r\n  ý: 'y',\r\n  ŷ: 'y',\r\n  ÿ: 'y',\r\n  ẏ: 'y',\r\n  ỵ: 'y',\r\n  ỳ: 'y',\r\n  ƴ: 'y',\r\n  ỷ: 'y',\r\n  ỿ: 'y',\r\n  ȳ: 'y',\r\n  ẙ: 'y',\r\n  ɏ: 'y',\r\n  ỹ: 'y',\r\n  ź: 'z',\r\n  ž: 'z',\r\n  ẑ: 'z',\r\n  ʑ: 'z',\r\n  ⱬ: 'z',\r\n  ż: 'z',\r\n  ẓ: 'z',\r\n  ȥ: 'z',\r\n  ẕ: 'z',\r\n  ᵶ: 'z',\r\n  ᶎ: 'z',\r\n  ʐ: 'z',\r\n  ƶ: 'z',\r\n  ɀ: 'z',\r\n  ﬀ: 'ff',\r\n  ﬃ: 'ffi',\r\n  ﬄ: 'ffl',\r\n  ﬁ: 'fi',\r\n  ﬂ: 'fl',\r\n  ĳ: 'ij',\r\n  œ: 'oe',\r\n  ﬆ: 'st',\r\n  ₐ: 'a',\r\n  ₑ: 'e',\r\n  ᵢ: 'i',\r\n  ⱼ: 'j',\r\n  ₒ: 'o',\r\n  ᵣ: 'r',\r\n  ᵤ: 'u',\r\n  ᵥ: 'v',\r\n  ₓ: 'x'\r\n};\r\n","import { latinMap } from './latin-map';\r\n\r\nexport function latinize(str: string): string {\r\n  if (!str) {\r\n    return '';\r\n  }\r\n  return str.replace(/[^A-Za-z0-9[\\] ]/g, function (a: string): string {\r\n    return latinMap[a] || a;\r\n  });\r\n}\r\n\r\nexport function escapeRegexp(queryToEscape: string): string {\r\n  // Regex: capture the whole query string and replace it with the string\r\n  // that will be used to match the results, for example if the capture is\r\n  // 'a' the result will be \\a\r\n  return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\r\n}\r\n\r\n/* eslint-disable */\r\nexport function tokenize(\r\n  str: string,\r\n  wordRegexDelimiters = ' ',\r\n  phraseRegexDelimiters = ''\r\n): Array<string> {\r\n  /* eslint-enable */\r\n  const regexStr: string =\r\n    '(?:[' +\r\n    phraseRegexDelimiters +\r\n    '])([^' +\r\n    phraseRegexDelimiters +\r\n    ']+)(?:[' +\r\n    phraseRegexDelimiters +\r\n    '])|([^' +\r\n    wordRegexDelimiters +\r\n    ']+)';\r\n  const preTokenized: string[] = str.split(new RegExp(regexStr, 'g'));\r\n  const result: string[] = [];\r\n  const preTokenizedLength: number = preTokenized.length;\r\n  let token: string;\r\n  const replacePhraseDelimiters = new RegExp(\r\n    '[' + phraseRegexDelimiters + ']+',\r\n    'g'\r\n  );\r\n\r\n  for (let i = 0; i < preTokenizedLength; i += 1) {\r\n    token = preTokenized[i];\r\n    if (token && token.length && token !== wordRegexDelimiters) {\r\n      result.push(token.replace(replacePhraseDelimiters, ''));\r\n    }\r\n  }\r\n\r\n  return result;\r\n}\r\n\r\nexport function getValueFromObject(object: any, option: string): string {\r\n  if (!option || typeof object !== 'object') {\r\n    return object.toString();\r\n  }\r\n\r\n  if (option.endsWith('()')) {\r\n    const functionName = option.slice(0, option.length - 2);\r\n    return object[functionName]().toString();\r\n  }\r\n\r\n  const properties: string = option\r\n    .replace(/\\[(\\w+)\\]/g, '.$1')\r\n    .replace(/^\\./, '');\r\n  const propertiesArray: string[] = properties.split('.');\r\n\r\n  for (const property of propertiesArray) {\r\n    if (property in object) {\r\n      object = object[property];\r\n    }\r\n  }\r\n  return object.toString();\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  HostListener,\r\n  TemplateRef,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { TypeaheadMatch } from './typeahead-match.class';\r\nimport { latinize } from './typeahead-utils';\r\nimport { TypeaheadDirective } from './typeahead.directive';\r\n\r\n@Component({\r\n  selector: 'hx-typeahead-container',\r\n  // eslint-disable-next-line\r\n  template: `\r\n    <!-- inject options list template -->\r\n    <ng-template\r\n      [ngTemplateOutlet]=\"optionsListTemplate || optionListTemplate\"\r\n      [ngTemplateOutletContext]=\"{\r\n        matches: matches,\r\n        itemTemplate: itemTemplate,\r\n        query: query\r\n      }\"\r\n    ></ng-template>\r\n\r\n    <!-- default options item template -->\r\n    <ng-template #hxItemTemplate let-match=\"match\" let-query=\"query\"\r\n      ><span [innerHtml]=\"hightlight(match, query)\"></span\r\n    ></ng-template>\r\n\r\n    <!-- options list template -->\r\n    <ng-template #optionListTemplate>\r\n      <ng-template ngFor let-match let-i=\"index\" [ngForOf]=\"matches\">\r\n        <h6 *ngIf=\"match.isHeader()\" class=\"hx-dropdown-header\">{{ match }}</h6>\r\n\r\n        <ng-template [ngIf]=\"!match.isHeader()\">\r\n          <a\r\n            href=\"#\"\r\n            class=\"hx-dropdown-item\"\r\n            (click)=\"selectMatch(match, $event)\"\r\n            (mouseenter)=\"selectActive(match)\"\r\n            [class.active]=\"isActive(match)\"\r\n          >\r\n            <ng-template\r\n              [ngTemplateOutlet]=\"itemTemplate || hxItemTemplate\"\r\n              [ngTemplateOutletContext]=\"{\r\n                item: match.item,\r\n                index: i,\r\n                match: match,\r\n                query: query\r\n              }\"\r\n            ></ng-template>\r\n          </a>\r\n        </ng-template>\r\n      </ng-template>\r\n    </ng-template>\r\n  `,\r\n  /* eslint-disable */\r\n  host: {\r\n    class: 'hx-dropdown-menu'\r\n  },\r\n  // tslint: enable\r\n  encapsulation: ViewEncapsulation.None,\r\n  styles: [\r\n    'strong.is-matched { background-color: rgba(35, 49, 43, .23) }',\r\n    '.hx-dropdown-item { font-weight: 300 }'\r\n  ]\r\n})\r\nexport class TypeaheadContainerComponent {\r\n  public parent: TypeaheadDirective;\r\n  public query: any;\r\n  public isFocused: boolean = false;\r\n  public top: string;\r\n  public left: string;\r\n  public display: string;\r\n  public placement: string;\r\n\r\n  protected _active: TypeaheadMatch;\r\n  protected _matches: TypeaheadMatch[] = [];\r\n\r\n  /** Subject for notifying that the tooltip has been hidden from the view */\r\n  private readonly _onHide: Subject<any> = new Subject();\r\n\r\n  /** The timeout ID of any current timer set to show the tooltip */\r\n  private _showTimeoutId: number;\r\n\r\n  /** The timeout ID of any current timer set to hide the tooltip */\r\n  private _hideTimeoutId: number;\r\n\r\n  public constructor(\r\n    private element: ElementRef,\r\n    private _changeDetectionRef: ChangeDetectorRef\r\n  ) {}\r\n\r\n  public get active(): TypeaheadMatch {\r\n    return this._active;\r\n  }\r\n\r\n  public get matches(): TypeaheadMatch[] {\r\n    return this._matches;\r\n  }\r\n\r\n  public set matches(value: TypeaheadMatch[]) {\r\n    this._matches = value;\r\n\r\n    if (this._matches.length > 0) {\r\n      this._active = this._matches[0];\r\n      if (this._active.isHeader()) {\r\n        this.nextActiveMatch();\r\n      }\r\n    }\r\n  }\r\n\r\n  public get optionsListTemplate(): TemplateRef<any> {\r\n    return this.parent ? this.parent.optionsListTemplate : undefined;\r\n  }\r\n\r\n  public get itemTemplate(): TemplateRef<any> {\r\n    return this.parent ? this.parent.typeaheadItemTemplate : undefined;\r\n  }\r\n\r\n  public selectActiveMatch(): void {\r\n    this.selectMatch(this._active);\r\n  }\r\n\r\n  public prevActiveMatch(): void {\r\n    let index = this.matches.indexOf(this._active);\r\n    this._active =\r\n      this.matches[index - 1 < 0 ? this.matches.length - 1 : index - 1];\r\n    if (this._active.isHeader()) {\r\n      this.prevActiveMatch();\r\n    }\r\n  }\r\n\r\n  public nextActiveMatch(): void {\r\n    let index = this.matches.indexOf(this._active);\r\n    this._active =\r\n      this.matches[index + 1 > this.matches.length - 1 ? 0 : index + 1];\r\n    if (this._active.isHeader()) {\r\n      this.nextActiveMatch();\r\n    }\r\n  }\r\n\r\n  public selectActive(value: TypeaheadMatch): void {\r\n    this.isFocused = true;\r\n    this._active = value;\r\n  }\r\n\r\n  public hightlight(match: TypeaheadMatch, query: any): string {\r\n    let itemStr: string = match.value;\r\n    let itemStrHelper: string = (\r\n      this.parent && this.parent.typeaheadLatinize ? latinize(itemStr) : itemStr\r\n    ).toLowerCase();\r\n    let startIdx: number;\r\n    let tokenLen: number;\r\n    // Replaces the capture string with the same string inside of a \"strong\" tag\r\n    if (typeof query === 'object') {\r\n      let queryLen: number = query.length;\r\n      for (let i = 0; i < queryLen; i += 1) {\r\n        // query[i] is already latinized and lower case\r\n        startIdx = itemStrHelper.indexOf(query[i]);\r\n        tokenLen = query[i].length;\r\n        if (startIdx >= 0 && tokenLen > 0) {\r\n          itemStr =\r\n            itemStr.substring(0, startIdx) +\r\n            '<strong class=\"is-matched\">' +\r\n            itemStr.substring(startIdx, startIdx + tokenLen) +\r\n            '</strong>' +\r\n            itemStr.substring(startIdx + tokenLen);\r\n          itemStrHelper =\r\n            itemStrHelper.substring(0, startIdx) +\r\n            '        ' +\r\n            ' '.repeat(tokenLen) +\r\n            '         ' +\r\n            itemStrHelper.substring(startIdx + tokenLen);\r\n        }\r\n      }\r\n    } else if (query) {\r\n      // query is already latinized and lower case\r\n      startIdx = itemStrHelper.indexOf(query);\r\n      tokenLen = query.length;\r\n      if (startIdx >= 0 && tokenLen > 0) {\r\n        itemStr =\r\n          itemStr.substring(0, startIdx) +\r\n          '<strong  class=\"is-matched\">' +\r\n          itemStr.substring(startIdx, startIdx + tokenLen) +\r\n          '</strong>' +\r\n          itemStr.substring(startIdx + tokenLen);\r\n      }\r\n    }\r\n    return itemStr;\r\n  }\r\n\r\n  @HostListener('mouseleave')\r\n  @HostListener('blur')\r\n  public focusLost(): void {\r\n    this.isFocused = false;\r\n  }\r\n\r\n  public isActive(value: TypeaheadMatch): boolean {\r\n    return this._active === value;\r\n  }\r\n\r\n  public selectMatch(value: TypeaheadMatch, e: Event = void 0): boolean {\r\n    if (e) {\r\n      e.stopPropagation();\r\n      e.preventDefault();\r\n    }\r\n    this.parent.changeModel(value);\r\n    setTimeout(() => this.parent.typeaheadOnSelect.emit(value), 0);\r\n    return false;\r\n  }\r\n\r\n  show(delay: number): void {\r\n    // Cancel the delayed hide if it is scheduled\r\n    if (this._hideTimeoutId) {\r\n      clearTimeout(this._hideTimeoutId);\r\n    }\r\n    this._showTimeoutId = window.setTimeout(() => {\r\n      // Schedule for change detection incase the tooltip is used within a\r\n      // component with OnPush change detection\r\n      this._changeDetectionRef.markForCheck();\r\n      //this.visibility = Visibility.Visible;\r\n    }, delay);\r\n  }\r\n\r\n  /**\r\n   * Hide the tooltip after the provided delay in ms.\r\n   * @param delay Amount of milliseconds to delay hiding the tooltip.\r\n   */\r\n  hide(delay: number): void {\r\n    // Cancel the delayed show if it is scheduled\r\n    if (this._showTimeoutId) {\r\n      clearTimeout(this._showTimeoutId);\r\n    }\r\n\r\n    this._hideTimeoutId = window.setTimeout(() => {\r\n      // this.visibility = Visibility.Hidden;\r\n      this._onHide.next(true);\r\n    }, delay);\r\n  }\r\n\r\n  /** Returns an observable that notifies when the dropdown has been hidden from view. */\r\n  afterHidden(): Observable<void> {\r\n    return this._onHide.asObservable();\r\n  }\r\n}\r\n","\r\nexport class TypeaheadMatch {\r\n  public readonly value: string;\r\n  public readonly item: any;\r\n  protected header: boolean;\r\n\r\n  public constructor(item: any, value: string = item, header: boolean = false) {\r\n    this.item = item;\r\n    this.value = value;\r\n    this.header = header;\r\n  }\r\n\r\n  public isHeader(): boolean {\r\n    return this.header;\r\n  }\r\n\r\n  public toString(): string {\r\n    return this.value;\r\n  }\r\n}\r\n","import {\r\n  FlexibleConnectedPositionStrategy,\r\n  HorizontalConnectionPos,\r\n  OriginConnectionPosition,\r\n  Overlay,\r\n  OverlayConnectionPosition,\r\n  OverlayRef,\r\n  VerticalConnectionPos\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport {\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  TemplateRef,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport { from, Observable, Subject } from 'rxjs';\r\nimport {\r\n  debounceTime,\r\n  filter,\r\n  mergeMap,\r\n  take,\r\n  takeUntil,\r\n  toArray\r\n} from 'rxjs/operators';\r\nimport { TypeaheadContainerComponent } from './typeahead-container.component';\r\nimport { TypeaheadMatch } from './typeahead-match.class';\r\nimport { getValueFromObject, latinize, tokenize } from './typeahead-utils';\r\n\r\n@Directive({ selector: '[hxaTypeahead]', exportAs: 'hx-typeahead' })\r\nexport class TypeaheadDirective implements OnInit, OnDestroy {\r\n  /** options source, can be Array of strings, objects or an Observable for external matching process */\r\n  @Input() public hxaTypeahead: any;\r\n  /** minimal no of characters that needs to be entered before typeahead kicks-in. When set to 0, typeahead shows on focus with full list of options (limited as normal by typeaheadOptionsLimit) */\r\n  @Input() public typeaheadMinLength: number = void 0;\r\n  /** minimal wait time after last character typed before typeahead kicks-in */\r\n  @Input() public typeaheadWaitMs: number;\r\n  /** maximum length of options items list */\r\n  @Input() public typeaheadOptionsLimit: number;\r\n  /** when options source is an array of objects, the name of field that contains the options value, we use array item as option in case of this field is missing. Supports nested properties and methods. */\r\n  @Input() public typeaheadOptionField: string;\r\n  /** when options source is an array of objects, the name of field that contains the group value, matches are grouped by this field when set. */\r\n  @Input() public typeaheadGroupField: string;\r\n  /** should be used only in case of typeahead attribute is array. If true - loading of options will be async, otherwise - sync. true make sense if options array is large. */\r\n  @Input() public typeaheadAsync: boolean = void 0;\r\n  /** match latin symbols. If true the word súper would match super and vice versa. */\r\n  @Input() public typeaheadLatinize = true;\r\n  /** break words with spaces. If true the text \"exact phrase\" here match would match with match exact phrase here but not with phrase here exact match (kind of \"google style\"). */\r\n  @Input() public typeaheadSingleWords = true;\r\n  /** should be used only in case typeaheadSingleWords attribute is true. Sets the word delimiter to break words. Defaults to space. */\r\n  @Input() public typeaheadWordDelimiters = ' ';\r\n  /** should be used only in case typeaheadSingleWords attribute is true. Sets the word delimiter to match exact phrase. Defaults to simple and double quotes. */\r\n  @Input() public typeaheadPhraseDelimiters = '\\'\"';\r\n  /** used to specify a custom item template. Template variables exposed are called item and index; */\r\n  @Input() public typeaheadItemTemplate: TemplateRef<any>;\r\n  /** used to specify a custom options list template. Template variables: matches, itemTemplate, query */\r\n  @Input() public optionsListTemplate: TemplateRef<any>;\r\n\r\n  @Input()\r\n  disabled: boolean;\r\n\r\n  @Input()\r\n  offsetY = 0;\r\n\r\n  @Input()\r\n  offsetX = 0;\r\n\r\n  @Input()\r\n  placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\r\n\r\n  @Input()\r\n  maxWidthRelativeTo: string;\r\n\r\n  @Input()\r\n  minWidthRelativeTo: string;\r\n\r\n  @Input()\r\n  maxHeight = '20rem';\r\n\r\n  /** fired when 'busy' state of this component was changed, fired on async mode only, returns boolean */\r\n  @Output() public typeaheadLoading: EventEmitter<boolean> = new EventEmitter();\r\n  /** fired on every key event and returns true in case of matches are not detected */\r\n  @Output() public typeaheadNoResults: EventEmitter<boolean> =\r\n    new EventEmitter();\r\n  /** fired when option was selected, return object with data of this option */\r\n  @Output() public typeaheadOnSelect: EventEmitter<TypeaheadMatch> =\r\n    new EventEmitter();\r\n  /** fired when blur event occurres. returns the active item */\r\n  @Output() public typeaheadOnBlur: EventEmitter<any> = new EventEmitter();\r\n\r\n  public isTypeaheadOptionsListActive = false;\r\n\r\n  protected keyUpEventEmitter: EventEmitter<any> = new EventEmitter();\r\n  protected _matches: TypeaheadMatch[];\r\n  private _overlayRef: OverlayRef | null;\r\n  private _typeaheadInstance: TypeaheadContainerComponent | null;\r\n  private _portal: ComponentPortal<TypeaheadContainerComponent>;\r\n  private readonly _destroyed = new Subject();\r\n\r\n  @HostListener('keyup', ['$event'])\r\n  public onChange(e: any): void {\r\n    if (this._typeaheadInstance) {\r\n      // up\r\n      if (e.key === 'ArrowUp') {\r\n        this._typeaheadInstance.prevActiveMatch();\r\n        return;\r\n      }\r\n\r\n      // down\r\n      if (e.key === 'ArrowDown') {\r\n        this._typeaheadInstance.nextActiveMatch();\r\n        return;\r\n      }\r\n\r\n      // enter\r\n      if (e.key === 'Enter') {\r\n        this._typeaheadInstance.selectActiveMatch();\r\n        return;\r\n      }\r\n    }\r\n\r\n    // For `<input>`s, use the `value` property. For others that don't have a\r\n    // `value` (such as `<span contenteditable=\"true\">`, use `innerText`.\r\n    const value =\r\n      e.target.value !== undefined ? e.target.value : e.target.innerText;\r\n    if (value.trim().length >= this.typeaheadMinLength) {\r\n      this.typeaheadLoading.emit(true);\r\n      this.keyUpEventEmitter.emit(e.target.value);\r\n    } else {\r\n      this.typeaheadLoading.emit(false);\r\n      this.typeaheadNoResults.emit(false);\r\n      this.hide();\r\n    }\r\n  }\r\n\r\n  @HostListener('focus')\r\n  public onFocus(): void {\r\n    if (this.typeaheadMinLength === 0) {\r\n      this.typeaheadLoading.emit(true);\r\n      this.keyUpEventEmitter.emit('');\r\n    }\r\n  }\r\n\r\n  @HostListener('blur')\r\n  public onBlur(): void {\r\n    if (this._typeaheadInstance && !this._typeaheadInstance.isFocused) {\r\n      this.typeaheadOnBlur.emit(this._typeaheadInstance.active);\r\n      this.hide();\r\n    }\r\n  }\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  public onKeydown(e: any): void {\r\n    // no container - no problems\r\n    if (!this._typeaheadInstance) {\r\n      return;\r\n    }\r\n\r\n    // if items is visible - prevent form submition\r\n    if (e.keyCode === 13) {\r\n      e.preventDefault();\r\n      return;\r\n    }\r\n  }\r\n\r\n  public constructor(\r\n    public ngControl: NgControl,\r\n    public overlay: Overlay,\r\n    private _ngZone: NgZone,\r\n    private _elementRef: ElementRef,\r\n    private _viewContainerRef: ViewContainerRef\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this.typeaheadOptionsLimit = this.typeaheadOptionsLimit || 20;\r\n    this.typeaheadMinLength =\r\n      this.typeaheadMinLength === void 0 ? 1 : this.typeaheadMinLength;\r\n    this.typeaheadWaitMs = this.typeaheadWaitMs || 0;\r\n\r\n    // async should be false in case of array\r\n    if (\r\n      this.typeaheadAsync === undefined &&\r\n      !(this.hxaTypeahead instanceof Observable)\r\n    ) {\r\n      this.typeaheadAsync = false;\r\n    }\r\n\r\n    if (this.hxaTypeahead instanceof Observable) {\r\n      this.typeaheadAsync = true;\r\n    }\r\n\r\n    if (this.typeaheadAsync) {\r\n      this.asyncActions();\r\n    } else {\r\n      this.syncActions();\r\n    }\r\n  }\r\n\r\n  public changeModel(match: TypeaheadMatch): void {\r\n    const valueStr: string = match.value;\r\n    this.ngControl.viewToModelUpdate(valueStr);\r\n    (this.ngControl.control as FormControl).setValue(valueStr);\r\n    this.hide();\r\n  }\r\n\r\n  public get matches(): any[] {\r\n    return this._matches;\r\n  }\r\n\r\n  public show(delay = 0): void {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n\r\n    const overlayRef = this._createOverlay();\r\n\r\n    this._detach();\r\n    this._portal =\r\n      this._portal ||\r\n      new ComponentPortal(TypeaheadContainerComponent, this._viewContainerRef);\r\n    this._typeaheadInstance = overlayRef.attach(this._portal).instance;\r\n    this._typeaheadInstance\r\n      .afterHidden()\r\n      .pipe(takeUntil(this._destroyed))\r\n      .subscribe(() => this._detach());\r\n\r\n    this._updateContainer();\r\n    this._setWidthsRelativeTo(overlayRef);\r\n    this._typeaheadInstance!.show(delay);\r\n    this._elementRef.nativeElement.focus();\r\n  }\r\n\r\n  public hide() {\r\n    this._hide();\r\n  }\r\n\r\n  private _hide(delay = 0) {\r\n    if (this._typeaheadInstance) {\r\n      this._typeaheadInstance.hide(delay);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this._overlayRef) {\r\n      this._overlayRef.dispose();\r\n      this._typeaheadInstance = null;\r\n    }\r\n    this._destroyed.next(true);\r\n    this._destroyed.complete();\r\n  }\r\n\r\n  protected asyncActions(): void {\r\n    this.keyUpEventEmitter\r\n      .pipe(\r\n        debounceTime(this.typeaheadWaitMs),\r\n        mergeMap(() => this.hxaTypeahead)\r\n      )\r\n      .subscribe(\r\n        (matches: any[]) => {\r\n          this.finalizeAsyncCall(matches);\r\n        },\r\n        (err: any) => {\r\n          console.error(err);\r\n        }\r\n      );\r\n  }\r\n\r\n  protected syncActions(): void {\r\n    this.keyUpEventEmitter\r\n      .pipe(\r\n        debounceTime(this.typeaheadWaitMs),\r\n        mergeMap((value: string) => {\r\n          const normalizedQuery = this.normalizeQuery(value);\r\n\r\n          return from(this.hxaTypeahead).pipe(\r\n            filter((option: any) => {\r\n              return (\r\n                option &&\r\n                this.testMatch(this.normalizeOption(option), normalizedQuery)\r\n              );\r\n            }),\r\n            toArray()\r\n          );\r\n        })\r\n      )\r\n      .subscribe(\r\n        (matches: any[]) => {\r\n          this.finalizeAsyncCall(matches);\r\n        },\r\n        (err: any) => {\r\n          console.error(err);\r\n        }\r\n      );\r\n  }\r\n\r\n  protected normalizeOption(option: any): string {\r\n    const optionValue: string = getValueFromObject(\r\n      option,\r\n      this.typeaheadOptionField\r\n    );\r\n    const normalizedOption = this.typeaheadLatinize\r\n      ? latinize(optionValue)\r\n      : optionValue;\r\n\r\n    return normalizedOption.toLowerCase();\r\n  }\r\n\r\n  protected normalizeQuery(value: string): any {\r\n    // If singleWords, break model here to not be doing extra work on each\r\n    // iteration\r\n    let normalizedQuery: any = (\r\n      this.typeaheadLatinize ? latinize(value) : value\r\n    )\r\n      .toString()\r\n      .toLowerCase();\r\n    normalizedQuery = this.typeaheadSingleWords\r\n      ? tokenize(\r\n          normalizedQuery,\r\n          this.typeaheadWordDelimiters,\r\n          this.typeaheadPhraseDelimiters\r\n        )\r\n      : normalizedQuery;\r\n\r\n    return normalizedQuery;\r\n  }\r\n\r\n  protected testMatch(match: string, test: any): boolean {\r\n    let spaceLength: number;\r\n\r\n    if (typeof test === 'object') {\r\n      spaceLength = test.length;\r\n      for (let i = 0; i < spaceLength; i += 1) {\r\n        if (test[i].length > 0 && match.indexOf(test[i]) < 0) {\r\n          return false;\r\n        }\r\n      }\r\n      return true;\r\n    } else {\r\n      return match.indexOf(test) >= 0;\r\n    }\r\n  }\r\n\r\n  protected finalizeAsyncCall(matches: any[]): void {\r\n    this.prepareMatches(matches);\r\n\r\n    this.typeaheadLoading.emit(false);\r\n    this.typeaheadNoResults.emit(!this.hasMatches());\r\n\r\n    if (!this.hasMatches()) {\r\n      this.hide();\r\n      return;\r\n    }\r\n\r\n    if (this._typeaheadInstance) {\r\n      this._updateContainer();\r\n    } else {\r\n      this.show();\r\n    }\r\n  }\r\n\r\n  protected prepareMatches(options: any[]): void {\r\n    const limited: any[] = options.slice(0, this.typeaheadOptionsLimit);\r\n\r\n    if (this.typeaheadGroupField) {\r\n      let matches: TypeaheadMatch[] = [];\r\n\r\n      // extract all group names\r\n      const groups = limited\r\n        .map((option: any) =>\r\n          getValueFromObject(option, this.typeaheadGroupField)\r\n        )\r\n        .filter((v: string, i: number, a: any[]) => a.indexOf(v) === i);\r\n\r\n      groups.forEach((group: string) => {\r\n        // add group header to array of matches\r\n        matches.push(new TypeaheadMatch(group, group, true));\r\n\r\n        // add each item of group to array of matches\r\n        matches = matches.concat(\r\n          limited\r\n            .filter(\r\n              (option: any) =>\r\n                getValueFromObject(option, this.typeaheadGroupField) === group\r\n            )\r\n            .map(\r\n              (option: any) =>\r\n                new TypeaheadMatch(\r\n                  option,\r\n                  getValueFromObject(option, this.typeaheadOptionField)\r\n                )\r\n            )\r\n        );\r\n      });\r\n\r\n      this._matches = matches;\r\n    } else {\r\n      this._matches = limited.map(\r\n        (option: any) =>\r\n          new TypeaheadMatch(\r\n            option,\r\n            getValueFromObject(option, this.typeaheadOptionField)\r\n          )\r\n      );\r\n    }\r\n  }\r\n\r\n  protected hasMatches(): boolean {\r\n    return this._matches.length > 0;\r\n  }\r\n\r\n  private _createOverlay(): OverlayRef {\r\n    if (this._overlayRef) {\r\n      return this._overlayRef;\r\n    }\r\n\r\n    const positionStrategy = this.overlay\r\n      .position()\r\n      .flexibleConnectedTo(this._elementRef)\r\n      .withFlexibleDimensions(false)\r\n      .withDefaultOffsetX(this.offsetX)\r\n      .withDefaultOffsetY(this.offsetY)\r\n      .withPositions([\r\n        { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'top' }\r\n      ])\r\n      .withTransformOriginOn('.hxa-dropdown-control');\r\n\r\n    this._overlayRef = this.overlay.create({\r\n      positionStrategy: positionStrategy,\r\n      panelClass: [\r\n        'hxui-reset',\r\n        'hxa-dropdown-panel',\r\n        'is-open',\r\n        'is-fluid-min-width'\r\n      ],\r\n      hasBackdrop: true,\r\n      backdropClass: 'cdk-overlay-transparent-backdrop'\r\n    });\r\n\r\n    this._updatePosition();\r\n\r\n    this._overlayRef\r\n      .detachments()\r\n      .pipe(takeUntil(this._destroyed))\r\n      .subscribe(() => this._detach());\r\n\r\n    this._overlayRef.backdropClick().subscribe(() => this.hide());\r\n\r\n    const position = this._overlayRef.getConfig()\r\n      .positionStrategy as FlexibleConnectedPositionStrategy;\r\n    position.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(pos => {\r\n      if (pos.connectionPair.originX === 'start') {\r\n        this.placement = 'left';\r\n      } else if (pos.connectionPair.originX === 'end') {\r\n        this.placement = 'right';\r\n      } else if (pos.connectionPair.originY === 'top') {\r\n        this.placement = 'top';\r\n      } else if (pos.connectionPair.originY === 'bottom') {\r\n        this.placement = 'bottom';\r\n      }\r\n    });\r\n\r\n    return this._overlayRef;\r\n  }\r\n\r\n  private _setWidthsRelativeTo(overlayRef: OverlayRef) {\r\n    if (this.maxWidthRelativeTo && this.minWidthRelativeTo) {\r\n      const elem: Element = document.getElementById(this.maxWidthRelativeTo);\r\n      overlayRef.updateSize({\r\n        minWidth: elem.clientWidth,\r\n        maxWidth: elem.clientWidth,\r\n        maxHeight: this.maxHeight\r\n      });\r\n    } else if (this.maxWidthRelativeTo) {\r\n      const elem: Element = document.getElementById(this.maxWidthRelativeTo);\r\n      overlayRef.updateSize({\r\n        maxWidth: elem.clientWidth,\r\n        maxHeight: this.maxHeight\r\n      });\r\n    } else if (this.minWidthRelativeTo) {\r\n      const elem: Element = document.getElementById(this.minWidthRelativeTo);\r\n      overlayRef.updateSize({\r\n        minWidth: elem.clientWidth,\r\n        maxHeight: this.maxHeight\r\n      });\r\n    } else {\r\n      overlayRef.updateSize({ maxHeight: this.maxHeight });\r\n    }\r\n  }\r\n\r\n  private _updatePosition() {\r\n    const position = this._overlayRef!.getConfig()\r\n      .positionStrategy as FlexibleConnectedPositionStrategy;\r\n    const origin = this._getOrigin();\r\n    const overlay = this._getOverlayPosition();\r\n\r\n    position.withPositions([\r\n      { ...origin.main, ...overlay.main },\r\n      { ...origin.fallback, ...overlay.fallback }\r\n    ]);\r\n  }\r\n\r\n  /**\r\n   * Returns the origin position and a fallback position based on the user's position preference.\r\n   * The fallback position is the inverse of the origin (e.g. `'bottom' -> 'top'`).\r\n   */\r\n  private _getOrigin(): {\r\n    main: OriginConnectionPosition;\r\n    fallback: OriginConnectionPosition;\r\n  } {\r\n    const placement = this.placement;\r\n    let originPlacement: OriginConnectionPosition;\r\n\r\n    if (placement === 'top' || placement === 'bottom') {\r\n      originPlacement = {\r\n        originX: 'center',\r\n        originY: placement === 'top' ? 'top' : 'bottom'\r\n      };\r\n    } else if (placement === 'left') {\r\n      originPlacement = { originX: 'start', originY: 'center' };\r\n    } else if (placement === 'right') {\r\n      originPlacement = { originX: 'end', originY: 'center' };\r\n    } else {\r\n      console.error('Position error', placement);\r\n    }\r\n\r\n    const { x, y } = this._invertPosition(\r\n      originPlacement.originX,\r\n      originPlacement.originY\r\n    );\r\n\r\n    return {\r\n      main: originPlacement,\r\n      fallback: { originX: x, originY: y }\r\n    };\r\n  }\r\n\r\n  /** Returns the overlay position and a fallback position based on the user's preference */\r\n  private _getOverlayPosition(): {\r\n    main: OverlayConnectionPosition;\r\n    fallback: OverlayConnectionPosition;\r\n  } {\r\n    const placement = this.placement;\r\n    let overlayPlacement: OverlayConnectionPosition;\r\n\r\n    if (placement === 'top') {\r\n      overlayPlacement = { overlayX: 'center', overlayY: 'bottom' };\r\n    } else if (placement === 'bottom') {\r\n      overlayPlacement = { overlayX: 'center', overlayY: 'top' };\r\n    } else if (placement === 'left') {\r\n      overlayPlacement = { overlayX: 'end', overlayY: 'center' };\r\n    } else if (placement === 'right') {\r\n      overlayPlacement = { overlayX: 'start', overlayY: 'center' };\r\n    } else {\r\n      console.error('Could not find a position', placement);\r\n    }\r\n\r\n    const { x, y } = this._invertPosition(\r\n      overlayPlacement.overlayX,\r\n      overlayPlacement.overlayY\r\n    );\r\n\r\n    return {\r\n      main: overlayPlacement,\r\n      fallback: { overlayX: x, overlayY: y }\r\n    };\r\n  }\r\n\r\n  private _invertPosition(\r\n    x: HorizontalConnectionPos,\r\n    y: VerticalConnectionPos\r\n  ) {\r\n    if (this.placement === 'top' || this.placement === 'bottom') {\r\n      if (y === 'top') {\r\n        y = 'bottom';\r\n      } else if (y === 'bottom') {\r\n        y = 'top';\r\n      }\r\n    } else {\r\n      if (x === 'end') {\r\n        x = 'start';\r\n      } else if (x === 'start') {\r\n        x = 'end';\r\n      }\r\n    }\r\n\r\n    return { x, y };\r\n  }\r\n\r\n  private _detach() {\r\n    if (this._overlayRef && this._overlayRef.hasAttached()) {\r\n      this._overlayRef.detach();\r\n    }\r\n    this._typeaheadInstance = null;\r\n  }\r\n\r\n  /** Updates the container and repositions the overlay according to the new content length */\r\n  private _updateContainer() {\r\n    // Must wait for the content to be painted to the container so that the overlay can properly\r\n    // calculate the correct positioning based on the size of its contents.\r\n    if (this._typeaheadInstance) {\r\n      this._typeaheadInstance.parent = this;\r\n      this._typeaheadInstance.placement = this.placement;\r\n\r\n      const normalizedQuery = (\r\n        this.typeaheadLatinize\r\n          ? latinize(this.ngControl.control.value)\r\n          : this.ngControl.control.value\r\n      )\r\n        .toString()\r\n        .toLowerCase();\r\n      this._typeaheadInstance.query = this.typeaheadSingleWords\r\n        ? tokenize(\r\n            normalizedQuery,\r\n            this.typeaheadWordDelimiters,\r\n            this.typeaheadPhraseDelimiters\r\n          )\r\n        : normalizedQuery;\r\n      this._typeaheadInstance.matches = this._matches;\r\n      //this._typeaheadInstance.maxWidth = this.maxWidth;\r\n\r\n      this._ngZone.onMicrotaskEmpty\r\n        .asObservable()\r\n        .pipe(take(1), takeUntil(this._destroyed))\r\n        .subscribe(() => {\r\n          if (this._typeaheadInstance) {\r\n            this._overlayRef!.updatePosition();\r\n          }\r\n        });\r\n    }\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  Input,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\n\r\n/**\r\n * A component that helps with text highlighting.\r\n *\r\n * If splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\r\n * highlighting:\r\n *\r\n * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Al<span class=\"ngb-highlight\">as</span>ka`.\r\n */\r\n@Component({\r\n  selector: 'hxa-highlight',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  template: `\r\n    <ng-template ngFor [ngForOf]=\"parts\" let-part let-isOdd=\"odd\">\r\n      <span *ngIf=\"isOdd; else even\" [class]=\"highlightClass\">{{ part }}</span\r\n      ><ng-template #even>{{ part }}</ng-template>\r\n    </ng-template>\r\n  `, // template needs to be formatted in a certain way so we don't add empty text nodes\r\n  styles: [\r\n    '.highlight { background: rgba(35, 49, 43, 0.23); border-radius: 1px; font-weight: bold; }'\r\n  ]\r\n})\r\nexport class TypeaheadHighlightComponent implements OnChanges {\r\n  parts: string[];\r\n\r\n  /**\r\n   * The CSS class for `<span>` elements wrapping the `term` inside the `result`.\r\n   */\r\n  @Input() highlightClass = 'highlight';\r\n\r\n  /**\r\n   * The text highlighting is added to.\r\n   *\r\n   * If the `term` is found inside this text, it will be highlighted.\r\n   * If the `term` contains array then all the items from it will be highlighted inside the text.\r\n   */\r\n  @Input() result?: string | null;\r\n\r\n  /**\r\n   * The term or array of terms to be highlighted.\r\n   * Since version `v4.2.0` term could be a `string[]`\r\n   */\r\n  @Input() term: string | string[];\r\n\r\n  toString(value: unknown): string {\r\n    return value !== undefined && value !== null ? `${value}` : '';\r\n  }\r\n\r\n  regExpEscape(text: string): string {\r\n    return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const result = this.toString(this.result);\r\n\r\n    const terms: string[] = Array.isArray(this.term) ? this.term : [this.term];\r\n    const escapedTerms = terms\r\n      .map(term => this.regExpEscape(this.toString(term)))\r\n      .filter(term => term);\r\n\r\n    this.parts = escapedTerms.length\r\n      ? result.split(new RegExp(`(${escapedTerms.join('|')})`, 'gmi'))\r\n      : [result];\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\n\r\nimport { TypeaheadContainerComponent } from './typeahead-container.component';\r\nimport { TypeaheadDirective } from './typeahead.directive';\r\nimport { ComponentLoaderFactory } from '../component-loader/component-loader.factory';\r\nimport { PositioningService } from '../positioning/positioning.service';\r\nimport {TypeaheadHighlightComponent} from \"./typeahead-highlight.component\";\r\n\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  declarations: [TypeaheadContainerComponent, TypeaheadDirective, TypeaheadHighlightComponent],\r\n  exports: [TypeaheadContainerComponent, TypeaheadDirective, TypeaheadHighlightComponent]\r\n})\r\nexport class TypeaheadModule {\r\n  public static forRoot(): ModuleWithProviders<TypeaheadModule> {\r\n    return {\r\n      ngModule: TypeaheadModule,\r\n      providers: [ComponentLoaderFactory, PositioningService]\r\n    };\r\n  };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {Observable, fromEvent, merge} from 'rxjs';\r\nimport {map} from \"rxjs/operators\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class OnlineStatusService {\r\n\r\n  public online$: Observable<Event> = fromEvent(window, 'online');\r\n  public offline$: Observable<Event> = fromEvent(window, 'offline');\r\n  public isOnline$: Observable<boolean> = merge(this.online$, this.offline$).pipe(map(ev => ev.type === 'online'));\r\n\r\n  constructor() { }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { IConfig, NgxMaskModule } from 'ngx-mask';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { AccordionModule } from './accordion/accordion.module';\r\nimport { AutoGrowModule } from './auto-grow/auto-grow.module';\r\nimport { DateRangePickerModule } from './date-range-picker/date-range-picker.module';\r\nimport { DatepickerModule } from './datepicker/datepicker.module';\r\nimport { DialogModule } from './dialog/dialog.module';\r\nimport { DialogService } from './dialog/dialog.service';\r\nimport { DropdownModule } from './dropdown/dropdown.module';\r\nimport { EmptyStateModule } from './empty-state/empty-state.module';\r\nimport { FiltersModule } from './filters/filters.module';\r\nimport { InspectorModule } from './inspector/inspector.module';\r\nimport { InspectorService } from './inspector/inspector.service';\r\nimport { LineClampModule } from './line-clamp/line-clamp.module';\r\nimport { LoadersModule } from './loaders/loaders.module';\r\nimport { ModalModule } from './modal/modal.module';\r\nimport { ModalService } from './modal/modal.service';\r\nimport { PaginationModule } from './pagination/pagination.module';\r\nimport { TabsModule } from './tabs/tabs.module';\r\nimport { TabularModule } from './tabular/tabular.module';\r\nimport { TextInputModule } from './text-input/text-input.module';\r\nimport { TimepickerModule } from './time-picker/timepicker.module';\r\nimport { HxaToastrComponent } from './toastr/hxa-toastr.component';\r\nimport { HxaToastrModule } from './toastr/hxa-toastr.module';\r\nimport { TooltipModule } from './tooltip/tooltip.module';\r\nimport { TypeaheadModule } from './typeahead/typeahead.module';\r\nimport { OnlineStatusService } from './utils/services/online-status.service';\r\n\r\nexport const mask_options: Partial<IConfig> | (() => Partial<IConfig>) = {};\r\n\r\n@NgModule({\r\n  imports: [\r\n    DropdownModule.forRoot(),\r\n    ModalModule.forRoot(),\r\n    PaginationModule.forRoot(),\r\n    TabsModule.forRoot(),\r\n    TooltipModule.forRoot(),\r\n    TypeaheadModule.forRoot(),\r\n    TabularModule.forRoot(),\r\n    DatepickerModule.forRoot(),\r\n    DateRangePickerModule.forRoot(),\r\n    AutoGrowModule.forRoot(),\r\n    EmptyStateModule.forRoot(),\r\n    AccordionModule,\r\n    FiltersModule.forRoot(),\r\n    LoadersModule,\r\n    TextInputModule,\r\n    NgxMaskModule.forRoot(mask_options),\r\n    DialogModule.forRoot(),\r\n    InspectorModule.forRoot(),\r\n    LineClampModule,\r\n    TimepickerModule,\r\n    ToastrModule.forRoot({\r\n      toastComponent: HxaToastrComponent,\r\n      toastClass: 'hxa-toastr',\r\n      iconClasses: {\r\n        error: 'is-danger',\r\n        info: 'is-info',\r\n        success: 'is-success',\r\n        warning: 'is-warning',\r\n      },\r\n    }),\r\n  ],\r\n  exports: [\r\n    DatepickerModule,\r\n    DateRangePickerModule,\r\n    DropdownModule,\r\n    ModalModule,\r\n    PaginationModule,\r\n    TabsModule,\r\n    TooltipModule,\r\n    TypeaheadModule,\r\n    TabularModule,\r\n    AutoGrowModule,\r\n    EmptyStateModule,\r\n    AccordionModule,\r\n    FiltersModule,\r\n    LoadersModule,\r\n    TextInputModule,\r\n    NgxMaskModule,\r\n    DialogModule,\r\n    LineClampModule,\r\n    InspectorModule,\r\n    TimepickerModule,\r\n    HxaToastrModule,\r\n  ],\r\n})\r\nexport class HxUiModule {\r\n  public static forRoot(): ModuleWithProviders<HxUiModule> {\r\n    return {\r\n      ngModule: HxUiModule,\r\n      providers: [\r\n        ModalService,\r\n        OnlineStatusService,\r\n        DatePipe,\r\n        DialogService,\r\n        InspectorService,\r\n      ],\r\n    };\r\n  }\r\n}\r\n","import {ElementRef} from '@angular/core';\r\n\r\nexport abstract class PositioningOptions {\r\n  /** The DOM element, ElementRef, or a selector string of an element which will be moved */\r\n  element?: HTMLElement | ElementRef | string;\r\n\r\n  /** The DOM element, ElementRef, or a selector string of an element which the element will be attached to  */\r\n  target?: HTMLElement | ElementRef | string;\r\n\r\n  /**\r\n   * A string of the form 'vert-attachment horiz-attachment' or 'placement'\r\n   * - placement can be \"top\", \"bottom\", \"left\", \"right\"\r\n   * not yet supported:\r\n   * - vert-attachment can be any of 'top', 'middle', 'bottom'\r\n   * - horiz-attachment can be any of 'left', 'center', 'right'\r\n   */\r\n  attachment?: string;\r\n\r\n  /** A string similar to `attachment`. The one difference is that, if it's not provided, `targetAttachment` will assume the mirror image of `attachment`. */\r\n  targetAttachment?: string;\r\n\r\n  /** A string of the form 'vert-offset horiz-offset'\r\n   * - vert-offset and horiz-offset can be of the form \"20px\" or \"55%\"\r\n   */\r\n  offset?: string;\r\n\r\n  /** A string similar to `offset`, but referring to the offset of the target */\r\n  targetOffset?: string;\r\n\r\n  /** If true component will be attached to body */\r\n  appendToBody?: boolean;\r\n}\r\n","import {\r\n  ITabularColumn,\r\n  ITabularColumnOptions,\r\n  TabularColumnTypes\r\n} from \"./tabular-column.interface\";\r\n\r\nexport class TabularColumn implements ITabularColumn {\r\n  constructor(\r\n    public id: string,\r\n    public label: string,\r\n    public dataType: TabularColumnTypes,\r\n    public sortable: boolean,\r\n    public cssClass: string = \"\",\r\n    public hidden: boolean = false,\r\n    public options?: ITabularColumnOptions\r\n  ) {}\r\n}\r\n","import { TypeaheadDirective }from './typeahead.directive';\r\n\r\nexport class TypeaheadOptions {\r\n  public placement: string;\r\n  public animation: boolean;\r\n  public typeaheadRef: TypeaheadDirective;\r\n\r\n  public constructor(options: TypeaheadOptions) {\r\n    Object.assign(this, options);\r\n  }\r\n}\r\n","/* eslint-disable no-invalid-this */\r\nexport function OnChange(defaultValue?: any): any {\r\n  const sufix = 'Change';\r\n  return function OnChangeHandler(target: any, propertyKey: string): void {\r\n    const _key = ` __${propertyKey}Value`;\r\n    Object.defineProperty(target, propertyKey, {\r\n      get(): any {\r\n        return this[_key];\r\n      },\r\n      set(value: any): void {\r\n        const prevValue = this[_key];\r\n        this[_key] = value;\r\n        if (prevValue !== value && this[propertyKey + sufix]) {\r\n          this[propertyKey + sufix].emit(value);\r\n        }\r\n      }\r\n    });\r\n  };\r\n}\r\n/* eslint-enable */\r\n","/* eslint-disable */\r\n/**\r\n * @license\r\n * Copyright Google Inc. All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\n/**\r\n * JS version of browser APIs. This library can only run in the browser.\r\n */\r\nvar win = (typeof window !== 'undefined' && window) || <any>{};\r\n\r\nexport { win as window };\r\nexport var document = win.document;\r\nexport var location = win.location;\r\nexport var gc = win['gc'] ? () => win['gc']() : (): any => null;\r\nexport var performance = win['performance'] ? win['performance'] : null;\r\nexport const Event = win['Event'];\r\nexport const MouseEvent = win['MouseEvent'];\r\nexport const KeyboardEvent = win['KeyboardEvent'];\r\nexport const EventTarget = win['EventTarget'];\r\nexport const History = win['History'];\r\nexport const Location = win['Location'];\r\nexport const EventListener = win['EventListener'];\r\n","export class LinkedList <T> {\r\n\r\n  public length = 0;\r\n  protected head: any;\r\n  protected tail: any;\r\n  protected current: any;\r\n  protected asArray: T[] = [];\r\n\r\n  protected getNode(position: number): any {\r\n    if (this.length === 0 || position < 0 || position >= this.length) {\r\n      throw new Error('Position is out of the list');\r\n    }\r\n\r\n    let current = this.head;\r\n\r\n    for (let index = 0; index < position; index++) {\r\n      current = current.next;\r\n    }\r\n    return current;\r\n  }\r\n\r\n  protected createInternalArrayRepresentation(): void {\r\n    const outArray: any[] = [];\r\n    let current = this.head;\r\n\r\n    while (current) {\r\n      outArray.push(current.value);\r\n      current = current.next;\r\n    }\r\n    this.asArray = outArray;\r\n  }\r\n\r\n  public get(position: number): T {\r\n    if (this.length === 0 || position < 0 || position >= this.length) {\r\n      return void 0;\r\n    }\r\n\r\n    let current = this.head;\r\n\r\n    for (let index = 0; index < position; index++) {\r\n      current = current.next;\r\n    }\r\n    return current.value;\r\n  }\r\n\r\n  public add(value: T, position: number = this.length): void {\r\n    if (position < 0 || position > this.length) {\r\n      throw new Error('Position is out of the list');\r\n    }\r\n\r\n    const node = {\r\n      value: value as any,\r\n      next: undefined as any,\r\n      previous: undefined as any\r\n    };\r\n\r\n    if (this.length === 0) {\r\n      this.head = node;\r\n      this.tail = node;\r\n      this.current = node;\r\n    } else {\r\n      if (position === 0) {\r\n        // first node\r\n        node.next = this.head;\r\n        this.head.previous = node;\r\n        this.head = node;\r\n      } else if (position === this.length) {\r\n        // last node\r\n        this.tail.next = node;\r\n        node.previous = this.tail;\r\n        this.tail = node;\r\n      } else {\r\n        // node in middle\r\n        const currentPreviousNode = this.getNode(position - 1);\r\n        const currentNextNode = currentPreviousNode.next;\r\n\r\n        currentPreviousNode.next = node;\r\n        currentNextNode.previous = node;\r\n\r\n        node.previous = currentPreviousNode;\r\n        node.next = currentNextNode;\r\n      }\r\n\r\n    }\r\n    this.length++;\r\n    this.createInternalArrayRepresentation();\r\n  }\r\n\r\n  public remove(position: number = 0): void {\r\n    if (this.length === 0 || position < 0 || position >= this.length) {\r\n      throw new Error('Position is out of the list');\r\n    }\r\n\r\n    if (position === 0) {\r\n      // first node\r\n      this.head = this.head.next;\r\n\r\n      if (this.head) {\r\n        // there is no second node\r\n        this.head.previous = undefined;\r\n      } else {\r\n        // there is no second node\r\n        this.tail = undefined;\r\n      }\r\n    } else if (position === this.length - 1) {\r\n      // last node\r\n      this.tail = this.tail.previous;\r\n      this.tail.next = undefined;\r\n    } else {\r\n      // middle node\r\n      const removedNode = this.getNode(position);\r\n      removedNode.next.previous = removedNode.previous;\r\n      removedNode.previous.next = removedNode.next;\r\n    }\r\n\r\n    this.length--;\r\n    this.createInternalArrayRepresentation();\r\n  }\r\n\r\n  public set(position: number, value: T): void {\r\n    if (this.length === 0 || position < 0 || position >= this.length) {\r\n      throw new Error('Position is out of the list');\r\n    }\r\n\r\n    const node = this.getNode(position);\r\n    node.value = value;\r\n    this.createInternalArrayRepresentation();\r\n  }\r\n\r\n  public toArray(): T[] {\r\n    return this.asArray;\r\n  }\r\n\r\n  public findAll(fn: any): any[] {\r\n    let current = this.head;\r\n    const result: any[] = [];\r\n    for (let index = 0; index < this.length; index++) {\r\n      if (fn(current.value, index)) {\r\n        result.push({index, value: current.value});\r\n      }\r\n      current = current.next;\r\n    }\r\n    return result;\r\n  }\r\n  // Array methods overriding start\r\n  public push(...args: T[]): number {\r\n    args.forEach((arg: any) => {\r\n      this.add(arg);\r\n    });\r\n    return this.length;\r\n  }\r\n\r\n  public pop(): T {\r\n    if (this.length === 0) {\r\n      return undefined;\r\n    }\r\n    const last = this.tail;\r\n    this.remove(this.length - 1);\r\n    return last.value;\r\n  }\r\n\r\n  public unshift(...args: T[]): number {\r\n    args.reverse();\r\n    args.forEach((arg: any) => {\r\n      this.add(arg, 0);\r\n    });\r\n    return this.length;\r\n  }\r\n\r\n  public shift(): T {\r\n    if (this.length === 0) {\r\n      return undefined;\r\n    }\r\n    const lastItem = this.head.value;\r\n    this.remove();\r\n    return lastItem;\r\n  }\r\n\r\n  public forEach(fn: any): void {\r\n    let current = this.head;\r\n    for (let index = 0; index < this.length; index++) {\r\n      fn(current.value, index);\r\n      current = current.next;\r\n    }\r\n  }\r\n\r\n  public indexOf(value: T): number {\r\n    let current = this.head;\r\n    let position = 0;\r\n\r\n    for (let index = 0; index < this.length; index++) {\r\n      if (current.value === value) {\r\n\r\n        position = index;\r\n        break;\r\n      }\r\n      current = current.next;\r\n    }\r\n    return position;\r\n  }\r\n\r\n  public some(fn: any): boolean {\r\n    let current = this.head;\r\n    let result  = false;\r\n    while (current && !result) {\r\n      if (fn(current.value)) {\r\n        result = true;\r\n        break;\r\n      }\r\n      current = current.next;\r\n    }\r\n    return result;\r\n  }\r\n\r\n  public every(fn: any): boolean {\r\n    let current = this.head;\r\n    let result  = true;\r\n    while (current && result)  {\r\n      if (!fn(current.value)) {\r\n        result = false;\r\n      }\r\n      current = current.next;\r\n    }\r\n    return result;\r\n  }\r\n\r\n  public toString(): string {\r\n    return '[Linked List]';\r\n  }\r\n\r\n  public find(fn: any): T {\r\n    let current = this.head;\r\n    let result: T;\r\n    for (let index = 0; index < this.length; index++) {\r\n      if (fn(current.value, index)) {\r\n        result = current.value;\r\n        break;\r\n      }\r\n      current = current.next;\r\n    }\r\n    return result;\r\n  }\r\n\r\n  public findIndex(fn: any): number {\r\n    let current = this.head;\r\n    let result: number;\r\n    for (let index = 0; index < this.length; index++) {\r\n      if (fn(current.value, index)) {\r\n        result = index;\r\n        break;\r\n      }\r\n      current = current.next;\r\n    }\r\n    return result;\r\n  }\r\n\r\n  // Array methods overriding END\r\n}\r\n","import { window } from './facade/browser';\r\n\r\nexport class Utils {\r\n  public static reflow(element: any): void {\r\n    ((bs: any): void => bs)(element.offsetHeight);\r\n  }\r\n\r\n// source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\r\n  public static getStyles(elem: any): any {\r\n    // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\r\n    // IE throws on elements created in popups\r\n    // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\r\n    let view = elem.ownerDocument.defaultView;\r\n\r\n    if (!view || !view.opener) {\r\n      view = window;\r\n    }\r\n\r\n    return view.getComputedStyle(elem);\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of hx-ui\r\n */\r\n\r\nexport * from './lib/accordion/accordion.body';\r\nexport * from './lib/accordion/accordion.component';\r\nexport * from './lib/accordion/accordion.container.component';\r\nexport * from './lib/accordion/accordion.header.component';\r\nexport * from './lib/accordion/accordion.module';\r\nexport * from './lib/auto-grow/auto-grow.directive';\r\nexport * from './lib/auto-grow/auto-grow.module';\r\nexport * from './lib/component-loader/component-loader.class';\r\nexport * from './lib/component-loader/component-loader.factory';\r\nexport * from './lib/component-loader/content-ref.class';\r\nexport * from './lib/component-loader/hx-component-ref.class';\r\nexport * from './lib/date-range-picker/date-range-picker-custom/date-range-picker-custom.component';\r\nexport * from './lib/date-range-picker/date-range-picker-interval/date-range-picker-interval.component';\r\nexport * from './lib/date-range-picker/date-range-picker.component';\r\nexport * from './lib/date-range-picker/date-range-picker.config';\r\nexport * from './lib/date-range-picker/date-range-picker.model';\r\nexport * from './lib/date-range-picker/date-range-picker.module';\r\nexport * from './lib/date-range-picker/interval-option-model';\r\nexport * from './lib/datepicker/datepicker-form.component';\r\nexport * from './lib/datepicker/datepicker.component';\r\nexport * from './lib/datepicker/datepicker.config';\r\nexport * from './lib/datepicker/datepicker.model';\r\nexport * from './lib/datepicker/datepicker.module';\r\nexport * from './lib/dialog/dialog-overlay.ref';\r\nexport * from './lib/dialog/dialog.module';\r\nexport * from './lib/dialog/dialog.service';\r\nexport * from './lib/dropdown/dropdown-item.directive';\r\nexport * from './lib/dropdown/dropdown-menu.directive';\r\nexport * from './lib/dropdown/dropdown-toggle.directive';\r\nexport * from './lib/dropdown/dropdown.config';\r\nexport * from './lib/dropdown/dropdown.directive';\r\nexport * from './lib/dropdown/dropdown.module';\r\nexport * from './lib/empty-state/empty-state-action.interface';\r\nexport * from './lib/empty-state/empty-state.component';\r\nexport * from './lib/empty-state/empty-state.config';\r\nexport * from './lib/empty-state/empty-state.module';\r\nexport * from './lib/enums';\r\nexport * from './lib/filters/filters-collapsed.component';\r\nexport * from './lib/filters/filters-config.interface';\r\nexport * from './lib/filters/filters-type.enum';\r\nexport * from './lib/filters/filters.component';\r\nexport * from './lib/filters/filters.config';\r\nexport * from './lib/filters/filters.model';\r\nexport * from './lib/filters/filters.module';\r\nexport * from './lib/hx-ui.module';\r\nexport * from './lib/inspector/inspector-location.enum';\r\nexport * from './lib/inspector/inspector-overlay.ref';\r\nexport * from './lib/inspector/inspector-size.enum';\r\nexport * from './lib/inspector/inspector.module';\r\nexport * from './lib/inspector/inspector.service';\r\nexport * from './lib/line-clamp/line-clamp.component';\r\nexport * from './lib/line-clamp/line-clamp.module';\r\nexport * from './lib/loaders/loaders.component';\r\nexport * from './lib/loaders/loaders.module';\r\nexport * from './lib/modal/modal-backdrop.component';\r\nexport * from './lib/modal/modal-placeholder.component';\r\nexport * from './lib/modal/modal.annotation';\r\nexport * from './lib/modal/modal.module';\r\nexport * from './lib/modal/modal.service';\r\nexport * from './lib/pagination/pager.component';\r\nexport * from './lib/pagination/pagination.component';\r\nexport * from './lib/pagination/pagination.config';\r\nexport * from './lib/pagination/pagination.module';\r\nexport * from './lib/positioning/ng-positioning';\r\nexport * from './lib/positioning/positioning.options';\r\nexport * from './lib/positioning/positioning.service';\r\nexport * from './lib/tabs/ng-transclude.directive';\r\nexport * from './lib/tabs/tab-heading.directive';\r\nexport * from './lib/tabs/tab.directive';\r\nexport * from './lib/tabs/tabs.module';\r\nexport * from './lib/tabs/tabset.component';\r\nexport * from './lib/tabs/tabset.config';\r\nexport * from './lib/tabular/actions-config.interface';\r\nexport * from './lib/tabular/disabled-input.interface';\r\nexport * from './lib/tabular/tabular';\r\nexport * from './lib/tabular/tabular-column.interface';\r\nexport * from './lib/tabular/tabular-column.model';\r\nexport * from './lib/tabular/tabular-config.interface';\r\nexport * from './lib/tabular/tabular-row.interface';\r\nexport * from './lib/tabular/tabular-size.enum';\r\nexport * from './lib/tabular/tabular-sort-by.service';\r\nexport * from './lib/tabular/tabular-theme.enum';\r\nexport * from './lib/tabular/tabular-tooltip.interface';\r\nexport * from './lib/tabular/tabular.component';\r\nexport * from './lib/tabular/tabular.config';\r\nexport * from './lib/tabular/tabular.module';\r\nexport * from './lib/text-input/text-input.directive';\r\nexport * from './lib/text-input/text-input.module';\r\nexport * from './lib/time-picker/hxa-time';\r\nexport * from './lib/time-picker/hxa-time-adapter';\r\nexport * from './lib/time-picker/hxa-time-struct';\r\nexport * from './lib/time-picker/timepicker';\r\nexport * from './lib/time-picker/timepicker-i18n';\r\nexport * from './lib/time-picker/timepicker.module';\r\nexport * from './lib/toastr/hxa-toastr.component';\r\nexport * from './lib/toastr/hxa-toastr.module';\r\nexport * from './lib/tooltip/tooltip-content.component';\r\nexport * from './lib/tooltip/tooltip-dynamic-content.directive';\r\nexport * from './lib/tooltip/tooltip.config';\r\nexport * from './lib/tooltip/tooltip.directive';\r\nexport * from './lib/tooltip/tooltip.module';\r\nexport * from './lib/typeahead/latin-map';\r\nexport * from './lib/typeahead/typeahead-container.component';\r\nexport * from './lib/typeahead/typeahead-highlight.component';\r\nexport * from './lib/typeahead/typeahead-match.class';\r\nexport * from './lib/typeahead/typeahead-options.class';\r\nexport * from './lib/typeahead/typeahead-utils';\r\nexport * from './lib/typeahead/typeahead.directive';\r\nexport * from './lib/typeahead/typeahead.module';\r\nexport * from './lib/utils/decorators';\r\nexport * from './lib/utils/facade/browser';\r\nexport * from './lib/utils/linked-list.class';\r\nexport * from './lib/utils/pipes/simple-search.pipe';\r\nexport * from './lib/utils/services/online-status.service';\r\nexport * from './lib/utils/trigger.class';\r\nexport * from './lib/utils/triggers';\r\nexport * from './lib/utils/utils.class';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.PositioningService","i1.TabsetComponent","i1.TabsetConfig","i2","i3.NgTranscludeDirective","i1","i2.DatepickerConfig","i3.TabsetComponent","i4.DatepickerIntervalComponent","i5.DatepickerComponent","i6","i7","i9.TextInputDirective","i10","i11.TabDirective","i2.DatepickerFormComponent","i3","i2.DropdownConfig","i1.DropdownDirective","i2.DateRangePickerConfig","i4.DateRangePickerIntervalComponent","i5.DateRangePickerCustomComponent","i6.DropdownDirective","i7.DropdownToggleDirective","i8.DropdownMenuDirective","i9.TabDirective","i1.TabDirective","DEFAULT_CONFIG","i1.EmptyStateConfig","i1.DateRangePickerComponent","i2.DropdownDirective","i3.DropdownToggleDirective","i4.DropdownMenuDirective","i5","i7.DropdownItemDirective","i1.FiltersConfig","i3.FiltersCollapsedComponent","i4.DateRangePickerComponent","i5.DropdownDirective","i6.DropdownToggleDirective","i7.DropdownMenuDirective","i8.DropdownItemDirective","i9","i1.ModalService","i1.PaginationConfig","i2.TooltipConfig","i1.TabularContentService","i1.TabularConfig","i2.TabularSortByService","i3.TabularContentService","i5.PaginationComponent","i8.TooltipDirective","i9.TooltipDynamicContentDirective","i11.DropdownDirective","i12.DropdownToggleDirective","i13.DropdownMenuDirective","i14.DropdownItemDirective","i1.TimepickerConfig","i2.HxaTimeAdapter","i3.TimepickerI18n","i4","i1.DropdownModule","i2.ModalModule","i3.PaginationModule","i4.TabsModule","i5.TooltipModule","i6.TypeaheadModule","i7.TabularModule","i8.DatepickerModule","i9.DateRangePickerModule","i10.AutoGrowModule","i11.EmptyStateModule","i12.FiltersModule","document","window"],"mappings":"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AAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,G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"}