{"version":3,"file":"ngui-common.mjs","sources":["../../../projects/ngui-common/src/lib/ngui-inview/src/ngui-inview.component.ts","../../../projects/ngui-common/src/lib/ngui-inview/src/ngui-inview.directive.ts","../../../projects/ngui-common/src/lib/ngui-inview/ngui-inview.module.ts","../../../projects/ngui-common/src/lib/ngui-utils/src/fire-event.ts","../../../projects/ngui-common/src/lib/ngui-list/src/ngui-inview-page.component.ts","../../../projects/ngui-common/src/lib/ngui-utils/src/dynamic-component.service.ts","../../../projects/ngui-common/src/lib/ngui-list/src/ngui-virtual-list.component.ts","../../../projects/ngui-common/src/lib/ngui-list/src/no-match-found.ts","../../../projects/ngui-common/src/lib/ngui-list/src/none-select.ts","../../../projects/ngui-common/src/lib/ngui-list/src/ngui-autocomplete.component.ts","../../../projects/ngui-common/src/lib/ngui-list/src/ngui-list.directive.ts","../../../projects/ngui-common/src/lib/ngui-list/src/ngui-list-item.directive.ts","../../../projects/ngui-common/src/lib/ngui-list/ngui-list.module.ts","../../../projects/ngui-common/src/lib/ngui-utils/src/ngui-highlight.pipe.ts","../../../projects/ngui-common/src/lib/ngui-utils/src/konsole.ts","../../../projects/ngui-common/src/lib/ngui-utils/ngui-utils.module.ts","../../../projects/ngui-common/src/lib/ngui-common.module.ts","../../../projects/ngui-common/src/public_api.ts","../../../projects/ngui-common/src/ngui-common.ts"],"sourcesContent":["import {\r\n    Component,\r\n    ContentChild,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Inject,\r\n    Input,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    PLATFORM_ID,\r\n    TemplateRef\r\n} from '@angular/core';\r\n\r\nimport {isPlatformBrowser} from '@angular/common';\r\n\r\n/**\r\n An element that listens to viewport positioning and fires inView and notInview events\r\n ### Example\r\n ```html\r\n <ngui-inview [observerOptions]=\"myObserverOptions\" (inview)=\"doA()\" (notInview)=\"doB()\">\r\n   <img *ngIf src=\"https://picsum.photos/800/300?image=1>\r\n </ngui-inview>\r\n ```\r\n */\r\n@Component({\r\n  selector: 'ngui-inview',\r\n  template: `\r\n        <ng-container *ngIf=\"isInview\" [ngTemplateOutlet]=\"template\">\r\n        </ng-container>\r\n    `,\r\n  styles: [':host {display: block;}']\r\n})\r\nexport class NguiInviewComponent implements OnInit, OnDestroy {\r\n    /** <ng-template> reference */\r\n  @ContentChild(TemplateRef, {static: true}) template: TemplateRef<any>;\r\n\r\n    /** IntersectionObserver options */\r\n  @Input() observerOptions: IntersectionObserverInit = {threshold: [.1, .2, .3, .4, .5, .6, .7, .8]};\r\n    /** Deprecated config. Use `observerOptions` instead.\r\n     * @deprecated Use `observerOptions` instead. */\r\n  @Input() options: any;\r\n  /** Controls whether blur effect is applied to a component with less than 80% intersection ratio.\r\n   * Only applies when there are no \"inview\" event handlers defined.\r\n   **/\r\n  @Input() blurEnabled = true;\r\n\r\n  @Output() inview: EventEmitter<IntersectionObserverEntry> = new EventEmitter();\r\n  @Output() notInview: EventEmitter<IntersectionObserverEntry> = new EventEmitter();\r\n\r\n  observer: IntersectionObserver;\r\n    /** indicates that this element is in viewport */\r\n  isInview = false;\r\n    /** indicates that this element is 80% in viewport. Used by the default callback */\r\n  once80PctVisible = false;\r\n\r\n  constructor(\r\n        private element: ElementRef,\r\n        @Inject(PLATFORM_ID) private platformId: any) {\r\n  }\r\n\r\n    /** Starts IntersectionObserver */\r\n  ngOnInit(): void {\r\n    if (this.options) {\r\n      this.observerOptions = this.options;\r\n    }\r\n\r\n    if (isPlatformBrowser(this.platformId)) {\r\n      this.observer = new IntersectionObserver(this.handleIntersect.bind(this), this.observerOptions);\r\n      this.observer.observe(this.element.nativeElement);\r\n    }\r\n  }\r\n\r\n    /** stop IntersectionObserver */\r\n  ngOnDestroy(): void {\r\n    this.observer.disconnect();\r\n  }\r\n\r\n    /** fires (inview) and (notInview) events when this component is visible or not visible  */\r\n  handleIntersect(entries): void {\r\n    entries.forEach((entry: IntersectionObserverEntry) => {\r\n      if (entry['isIntersecting']) {\r\n        this.isInview = true;\r\n        this.defaultInviewHandler(entry);\r\n        this.inview.emit(entry);\r\n      } else {\r\n        this.notInview.emit(entry);\r\n      }\r\n    });\r\n  }\r\n\r\n    /**\r\n     * default intersection handler, which sets blur dependes on intersection ratio\r\n     * this won't be invoked if user provides any (inview) event. e.g. (inview)=\"something()\"\r\n     */\r\n  defaultInviewHandler(entry): any {\r\n    if (!this.blurEnabled || this.once80PctVisible || this.inview.observers.length) {\r\n      return;\r\n    }\r\n\r\n    if (entry.intersectionRatio < 0.8) {\r\n      const opacity = entry.intersectionRatio * (1 / 0.8);\r\n      const blur = 20 - Math.floor(entry.intersectionRatio * 10) * 4;\r\n      const filter = `blur(${blur}px)`;\r\n      Object.assign(entry.target.style, {opacity, filter});\r\n    } else {\r\n      entry.target.style.opacity = 1;\r\n      entry.target.style.filter = 'unset';\r\n\r\n      this.once80PctVisible = true;\r\n    }\r\n  }\r\n}\r\n","import {\r\n    Directive,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Inject,\r\n    Input,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    PLATFORM_ID\r\n} from '@angular/core';\r\nimport {isPlatformBrowser} from '@angular/common';\r\n\r\n/**\r\n * Fires (nguiInview) or (nguiOutview) events dependents on the element is in viewport or not\r\n */\r\n@Directive({\r\n    selector: '[nguiInview], [nguiOutview]' // eslint-disable-line\r\n})\r\nexport class NguiInviewDirective implements OnInit, OnDestroy {\r\n  observer: IntersectionObserver;\r\n\r\n    /** IntersectionObserver options */\r\n  @Input() observerOptions: IntersectionObserverInit = {threshold: [.1, .2, .3, .4, .5, .6, .7, .8]};\r\n    /** Deprecated config. Use `observerOptions` instead.\r\n     * @deprecated Use `observerOptions` instead. */\r\n  @Input() options: any;\r\n\r\n    /** Event that will be fired when in viewport */\r\n  @Output() nguiInview: EventEmitter<IntersectionObserverEntry> = new EventEmitter();\r\n    /** Event that will be fired when out of  viewport */\r\n  @Output() nguiOutview: EventEmitter<IntersectionObserverEntry> = new EventEmitter();\r\n\r\n  constructor(\r\n        public element: ElementRef,\r\n        @Inject(PLATFORM_ID) private platformId: any) {\r\n  }\r\n\r\n    /** Starts IntersectionObserver */\r\n  ngOnInit(): void {\r\n    if (this.options) {\r\n      this.observerOptions = this.options;\r\n    }\r\n\r\n    if (isPlatformBrowser(this.platformId)) {\r\n      this.observer = new IntersectionObserver(this.handleIntersect.bind(this), this.observerOptions);\r\n      this.observer.observe(this.element.nativeElement);\r\n    }\r\n  }\r\n\r\n    /** Stops IntersectionObserver */\r\n  ngOnDestroy(): void {\r\n    if (isPlatformBrowser(this.platformId) && this.observer) {\r\n      this.observer.disconnect();\r\n    }\r\n  }\r\n\r\n    /**\r\n     * Fires (nguiInview) event when this element is in viewport\r\n     *  and fires (nguiOutview) event when this element is not in viewport\r\n     */\r\n  handleIntersect(entries): void {\r\n    entries.forEach((entry: IntersectionObserverEntry) => {\r\n      if (entry['isIntersecting']) {\r\n        this.nguiInview.emit(entry);\r\n      } else {\r\n        this.nguiOutview.emit(entry);\r\n      }\r\n    });\r\n  }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {NguiInviewComponent} from './src/ngui-inview.component';\r\nimport {NguiInviewDirective} from './src/ngui-inview.directive';\r\n\r\nexport {NguiInviewComponent, NguiInviewDirective};\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  declarations: [\r\n    NguiInviewComponent,\r\n    NguiInviewDirective\r\n  ],\r\n  exports: [\r\n    NguiInviewComponent,\r\n    NguiInviewDirective\r\n  ]\r\n})\r\nexport class NguiInviewModule {\r\n}\r\n","/**\r\n * fire the given event with options on the element\r\n ### Example\r\n ```js\r\n fireEvent(el, 'click');\r\n fireEvent(el, 'keypress', {key: 'Enter'});\r\n ```\r\n */\r\nexport function fireEvent(el: HTMLElement, type: string, options: any = {}): boolean {\r\n  let event;\r\n  if (type === 'click' || type.match(/^mouse/)) {\r\n    event = new MouseEvent(type, options);\r\n  } else if (type.match(/^key/)) {\r\n    event = new KeyboardEvent(type, options);\r\n  } else if (type.match(/^touch/)) {\r\n    event = new TouchEvent(type, options);\r\n  }\r\n\r\n  return el.dispatchEvent(event);\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChild,\r\n  ElementRef,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  TemplateRef\r\n} from '@angular/core';\r\n\r\n/**\r\n * A block of component that listens to inView and outView events,\r\n * so that it empties contents when out of view after backup items\r\n * and restores the contents when in view\r\n\r\n ### Example\r\n ```html\r\n <ngui-inview-page [items]=\"items\">\r\n   <ng-template let-items=\"items\">\r\n     <div *ngIf=\"items else noItems\">\r\n       <li *ngFor=\"let num of items; trackBy: num\">row number: {{ num }}</li>\r\n     </div>\r\n   </ng-template>\r\n </ngui-inview-page>\r\n ```\r\n */\r\n@Component({\r\n  selector: 'ngui-inview-page',\r\n  template: `\r\n    <div class=\"inview-page contents\"\r\n      [observerOptions]=\"observerOptions\"\r\n      (nguiInview)=\"restoreItems()\"\r\n      (nguiOutview)=\"emptyItems()\">\r\n      <!-- add blank ngui-list-item by condition  -->\r\n      <!-- no match found ngui-list-item by condition -->\r\n      <ng-container\r\n        [ngTemplateOutlet]=\"template||defaultTemplate\"\r\n        [ngTemplateOutletContext]=\"{items: items, outView: outView}\">\r\n      </ng-container>\r\n    </div>\r\n\r\n    <ng-template #defaultTemplate>\r\n      <div *ngIf=\"!items\"> Error: requires [items] </div>\r\n      <div *ngIf=\"!template\"> Error: requires &lt;ng-template></div>\r\n    </ng-template>\r\n  `,\r\n  styles: [`\r\n    :host {display: block}\r\n  `]\r\n})\r\nexport class NguiInviewPageComponent implements OnInit, OnDestroy {\r\n\r\n  /** Allow users to change the contents */\r\n  @ContentChild(TemplateRef, {static: true}) template: TemplateRef<any>;\r\n  // @Input('template') template: TemplateRef<any>;\r\n\r\n  /** List of elements that are used to render this element */\r\n  @Input() items: Array<any>;\r\n\r\n  /** IntersectionObserver options */\r\n  @Input() observerOptions: IntersectionObserverInit = {threshold: [0, .01]};\r\n  /** Indicates that the page of out of viewport */\r\n  outView = false;\r\n  /** The copy of items. This is set when this element is out of viewport */\r\n  itemsBackup: Array<any> = [];\r\n  /**\r\n   * The first element of this component.\r\n   * The height of it remains the same even when items get empty out.\r\n   */\r\n  contentsEl: HTMLElement;\r\n  destroyed: boolean;\r\n\r\n  constructor(\r\n    private element: ElementRef,\r\n    private renderer: Renderer2,\r\n    private cdRef: ChangeDetectorRef\r\n  ) { }\r\n\r\n  /**\r\n   * Restore items when in viewport, so that elements are rendered\r\n   */\r\n  restoreItems(): void {\r\n    if (this.outView) {\r\n      this.outView = false;\r\n      this.items = Array.from(this.itemsBackup || []);\r\n      this.itemsBackup = undefined;\r\n      this.renderer.setStyle(this.contentsEl, 'height', undefined);\r\n      this.cdRef.detectChanges();\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.contentsEl =\r\n      this.element.nativeElement.querySelector('.inview-page.contents');\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroyed = true;\r\n  }\r\n\r\n  /**\r\n   * Empty items when not in viewport, so that elements are not rendered\r\n   */\r\n  emptyItems(): void {\r\n    if (this.items && this.contentsEl && !this.outView) {\r\n      // set height before emptying contents\r\n      const height = this.element.nativeElement.getBoundingClientRect().height;\r\n      this.renderer.setStyle(this.contentsEl, 'height', `${height}px`);\r\n\r\n      this.outView = true;\r\n      this.itemsBackup = Array.from(this.items || []);\r\n      this.items = undefined;\r\n      if (!this.destroyed) {\r\n        this.cdRef.detectChanges();\r\n      }\r\n    }\r\n  }\r\n\r\n  setItems(items: Array<any>): void {\r\n    if (!this.destroyed) {\r\n      this.items = items;\r\n      this.cdRef.detectChanges();\r\n    }\r\n  }\r\n\r\n}\r\n","import {\r\n  Component,\r\n  ComponentFactoryResolver,\r\n  ComponentRef,\r\n  Inject,\r\n  Injectable,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\n\r\n/**\r\n * Insert a component dynamically using a service\r\n *\r\n\r\n ### Example\r\n ```ts\r\n import { DynamicComponentService } from './dynamic.component.service';\r\n import { MyDynamicComponent } from './my-1.component';\r\n\r\n @Component({\r\n   template: ` ... <div #dymamic></div>`\r\n })\r\n export class MyComponent {\r\n   @ViewChild('dynamic', {read:ViewContainerRef}) vcr: ViewContainerRef;\r\n\r\n   constructor(public dcs: DynamicComponentService) {}\r\n\r\n   insertComp() {\r\n     let compRef = this.dcs.createComponent(MyDynamicComponent, this.vcr);\r\n     ths.dcs.insertComonent(cmpRef);\r\n     compRef.instance.items = [1,2,3];              // dealing with @input\r\n     compRef.instance.output$.subscribe(val => {}); // dealing with @output\r\n   }\r\n }\r\n ```\r\n */\r\n@Injectable()\r\nexport class DynamicComponentService {\r\n  /** used to create a factory from a component class */\r\n  factoryResolver: ComponentFactoryResolver;\r\n  /** defines where a dynamic components insert into */\r\n  rootViewContainer: ViewContainerRef;\r\n\r\n  constructor(@Inject(ComponentFactoryResolver) factoryResolver) {\r\n    this.factoryResolver = factoryResolver;\r\n  }\r\n\r\n  /**\r\n   * returns component reference\r\n   * The reason to seperate `createCompnent` and `insertComponent` is\r\n   * to allow some actions before we insert into a hostView.\r\n   * e.g styling, setting attributes, etc\r\n   */\r\n  createComponent(component: any, into?: ViewContainerRef): ComponentRef<any> {\r\n    this.rootViewContainer = into || this.rootViewContainer;\r\n    const factory = this.factoryResolver.resolveComponentFactory(component);\r\n\r\n    return factory.create(this.rootViewContainer.parentInjector);\r\n  }\r\n\r\n  /**\r\n   * insert component\r\n   */\r\n  insertComponent(componentRef: ComponentRef<any>): Component {\r\n    const compId = `ngui-dyn-${Math.floor(Math.random() * 10 ** 7) + 10 ** 6}`;\r\n    componentRef.location.nativeElement.setAttribute('id', compId);\r\n    componentRef.instance.id = compId;\r\n\r\n    this.rootViewContainer.insert(componentRef.hostView);\r\n\r\n    return componentRef.instance;\r\n  }\r\n\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ComponentRef,\r\n  ContentChild,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Output,\r\n  Renderer2,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\n\r\nimport { DynamicComponentService } from '../../ngui-utils/src/dynamic-component.service';\r\nimport { NguiInviewPageComponent } from './ngui-inview-page.component';\r\n\r\n/**\r\n * Virtual List\r\n *\r\n * The `<ngui-inview ..>` inserts <ngui-inview-page> into\r\n * `<div #pages>` when it is in viewport\r\n * When it's inserted, it will be pushed down, which makes it out of viewport.\r\n * User scrolls down to see the bottom of the list,\r\n * then it will insert another `<ngui-inview-page>` again.\r\n *\r\n * <ngui-inview-page> listens to (nguiInview) and (nguiOutview) events,\r\n * when <ngui-inview-page> is out of view port, it empties out the contents.\r\n * and it restores back the contents when it is in viewport again.\r\n\r\n ### Example\r\n ```html\r\n <ngui-virtual-list (bottomInview)=\"loadItems($event)\">\r\n   <ng-template let-items=\"items\">\r\n     <div *ngIf=\"!items\">Loading</div>\r\n     <li *ngFor=\"let num of items; trackBy: num\">row number: {{ num }}</li>\r\n   </ng-template>\r\n </ngui-virtual-list>\r\n ```\r\n */\r\n@Component({\r\n  selector: 'ngui-virtual-list',\r\n  template: `\r\n    <div class=\"ngui-virtual-list\"\r\n      (focus)=\"_focused = true\"\r\n      (click)=\"_focused = true\">\r\n      <!-- hold multiple <ngui-inview-page> -->\r\n      <div #pages></div>\r\n      <!-- insert <ngui-inview-page> into #pages -->\r\n    </div>\r\n    <ngui-inview (inview)=\"addAnInviewPageToPages()\"></ngui-inview>\r\n  `,\r\n  styles: [`\r\n    :host {display: block}\r\n  `]\r\n})\r\nexport class NguiVirtualListComponent implements AfterViewInit {\r\n\r\n  /** the container NguiInviewPage will be inserted */\r\n  @ViewChild('pages', { read: ViewContainerRef }) pagesRef: ViewContainerRef;\r\n  /** Template of NguiInviewPage. Allow users to define their own template  */\r\n  @ContentChild(TemplateRef) template: TemplateRef<any>;\r\n  /** Fired when child `<ngui-list-item>` is selected */\r\n  @Output() selected: EventEmitter<any> = new EventEmitter();\r\n  /** Fired when `ESC` key is pressed from `<ngui-list-item>` */\r\n  @Output() escaped: EventEmitter<any> = new EventEmitter();\r\n\r\n  /**\r\n   * Event fired when bottom of the virtual list is in view\r\n   * The handler of this event must call `$event.addItems(items: Array<any>)` to fill contents\r\n   * If not, only the first page is loaded, and rest of the pages won't be loaded;\r\n\r\n   ### Example\r\n   ```html\r\n   <ngui-virtual-list (bottomInview)=\"loadItems($event)\">\r\n     <ng-template let-items=\"items\">\r\n       <div *ngIf=\"items else noItems\">\r\n          <li *ngFor=\"let num of items; trackBy: num\">row number: {{ num }}</li>\r\n       </div>\r\n       <ng-template #noItems>Loading</ng-template>\r\n     </ng-template>\r\n   </ngui-virtual-list>\r\n   ```\r\n   */\r\n  @Output() bottomInview: EventEmitter<any> = new EventEmitter();\r\n\r\n  /** The last NguiInviewPageComponent being inserted */\r\n  inviewPage: ComponentRef<NguiInviewPageComponent>;\r\n  _focused = false;\r\n  /** Indicates if a page is still loading */\r\n  isListLoading: boolean;\r\n  inviewPages: Array<ComponentRef<NguiInviewPageComponent>> = [];\r\n\r\n  constructor(\r\n    public renderer: Renderer2,\r\n    public element: ElementRef,\r\n    public dynamicComponentService: DynamicComponentService,\r\n    public cdr: ChangeDetectorRef\r\n  ) {}\r\n\r\n  /** Check if necessary input and output is provided */\r\n  ngAfterViewInit(): void {\r\n    if (!this.template || !this.bottomInview.observers.length) {\r\n      console.error('<ngui-virtual-list> requires [template] and {bottomInview)');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * When the bottom is inview port, this function is called\r\n   * It will insert a dynamicall created NguiInviewPageComponent with the given template.\r\n   * It will also fires (bottomInview) event, so that user can fill up items for the page.\r\n   */\r\n  addAnInviewPageToPages(): void {\r\n    if (!this.isListLoading) {\r\n      this.isListLoading = true;\r\n\r\n      this.inviewPage =\r\n        this.dynamicComponentService.createComponent(NguiInviewPageComponent, this.pagesRef);\r\n      this.dynamicComponentService.insertComponent(this.inviewPage);\r\n\r\n      this.inviewPage.instance.template = this.template;\r\n      this.inviewPages.push(this.inviewPage);\r\n\r\n      this.bottomInview.emit(this); // fire event, so that user can load items\r\n    }\r\n  }\r\n\r\n  // set items of NguiInviewPageComponent\r\n  addList(items: Array<any>): void {\r\n    this.isListLoading = false;\r\n    this.inviewPage.instance.setItems(items);\r\n  }\r\n\r\n}\r\n","export class NoMatchFound {\r\n  html = 'No Match Found';\r\n}\r\n","export class NoneSelect {\r\n  html = 'Select';\r\n}\r\n","import {\r\n  Component,\r\n  ContentChild,\r\n  Input,\r\n  OnInit,\r\n  TemplateRef\r\n} from '@angular/core';\r\n\r\nimport { fireEvent } from '../../ngui-utils/src/fire-event';\r\nimport { NguiVirtualListComponent } from './ngui-virtual-list.component';\r\nimport { NoMatchFound } from './no-match-found';\r\nimport { NoneSelect } from './none-select';\r\nimport {fromEvent} from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'ngui-autocomplete',\r\n  template: `\r\n    <ng-container *ngIf=\"isReady\">\r\n      <div class=\"ngui-autocomplete\">\r\n        <div #pages></div>\r\n      </div>\r\n      <ngui-inview (inview)=\"addMorePages()\"></ngui-inview>\r\n    </ng-container>\r\n  `,\r\n  styles: [`\r\n    :host {position: absolute; background-color: #fff; max-height: 300px; overflow: auto}\r\n    .ngui-autocomplete { border: 1px solid #ccc; padding: 4px }\r\n  `]\r\n})\r\nexport class NguiAutocompleteComponent extends NguiVirtualListComponent implements OnInit {\r\n  @Input() for: string; // input tag id\r\n  @Input() minInputChars = 1;\r\n  @Input() blankOption = 'Select One';\r\n  @Input() noMatchItem = 'No Match Found';\r\n\r\n  /** Template of NguiInviewPage. Allow users to define their own template  */\r\n  @ContentChild(TemplateRef) template: TemplateRef<any>;\r\n\r\n  inputEl: HTMLInputElement;\r\n  _focused: any = {input: false, listItem: false};\r\n  _focusTimer;\r\n  _acTimer;\r\n  _selectedFromList: boolean;\r\n  _escapedFromList: boolean;\r\n  _orgInputValue: string;\r\n  _prevInputValue: string;\r\n  _lastSelected: any;\r\n\r\n  /**\r\n   * returns autocomplete display condition\r\n   * autocompolete list is only visible\r\n   *   - when input element is focused or list element is focused\r\n   *   - when input value has enought characters\r\n   *   - and user just did not selected or escaped\r\n   */\r\n  get isReady(): boolean {\r\n    const selectedOrEscaped = this._selectedFromList || this._escapedFromList;\r\n    const focused = this._focused.input || this._focused.listItem;\r\n    const minChars = this.inputEl.value.length >= this.minInputChars;\r\n\r\n    return (!selectedOrEscaped && focused && minChars);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.inputEl = <HTMLInputElement> document.querySelector('#' + this.for); // eslint-disable-line\r\n    this.positionThisUnderInputEl();\r\n\r\n    fromEvent(this.inputEl, 'keyup').subscribe(this.onInputElKeyup.bind(this));\r\n    this.inputEl.addEventListener('focus', this.onInputElFocused.bind(this));\r\n    this.inputEl.addEventListener('blur', this.onInputElBlurred.bind(this));\r\n    this.selected.subscribe(this.onSelected.bind(this));\r\n    this.escaped.subscribe(this.onEscaped.bind(this));\r\n  }\r\n\r\n  onSelected(value): void {\r\n    this._selectedFromList = true;\r\n    this.inputEl.focus();\r\n    this._lastSelected = value;\r\n    this.cdr.detectChanges();    // for ChangeDetectionStrategy.OnPush\r\n  }\r\n\r\n  onEscaped(): void {\r\n    this._escapedFromList = true;\r\n    this.inputEl.focus();\r\n    if (!this._lastSelected) {\r\n      this.inputEl.value = this._orgInputValue;\r\n    }\r\n    this.cdr.detectChanges(); // for ChangeDetectionStrategy.OnPush\r\n  }\r\n\r\n  onInputElFocused(event): void {\r\n    this.isListLoading = false;\r\n    if (typeof this._orgInputValue === 'undefined') {\r\n      this._orgInputValue = this.inputEl.value;\r\n    }\r\n    this._prevInputValue = this.inputEl.value;\r\n    this.setFocused('input', true);\r\n  }\r\n\r\n  onInputElBlurred(): void {\r\n    this.setFocused('input', false);\r\n  }\r\n\r\n  clearList(): void {\r\n    this.inviewPages.forEach(compRef => {\r\n      compRef.destroy();\r\n    });\r\n    this.inviewPages = [];\r\n  }\r\n\r\n  onInputElKeyup(event: KeyboardEvent): void {\r\n    const firstList = this.element.nativeElement.querySelector('ngui-list-item');\r\n    if (event.key === 'Enter' || event.key === 'Escape') {\r\n      if (firstList) {\r\n        fireEvent(firstList, 'keyup', {key: event.key});\r\n      } else {\r\n        this.onEscaped();\r\n      }\r\n    } else if ((event.key === 'ArrowDown' || event.key === 'ArrowRight') && firstList) {\r\n      firstList.focus();\r\n    } else if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\r\n      //\r\n    } else if (this.inputEl.value.length >= this.minInputChars) {\r\n      this._selectedFromList = false;\r\n      this._escapedFromList = false;\r\n      this.addAutocompleteList();\r\n    }\r\n  }\r\n\r\n  /** Complete the first page of autocomplete */\r\n  addAutocompleteList(): void {\r\n    if (this.isReady) {\r\n      clearTimeout(this._acTimer);\r\n      this._acTimer = setTimeout(() => {\r\n        this.isListLoading = false; // ???????/\r\n        this._prevInputValue = this.inputEl.value;\r\n        this._escapedFromList = false;\r\n        this._selectedFromList = false;\r\n        this.clearList();\r\n        this.addAnInviewPageToPages();\r\n      }, 200);\r\n    }\r\n  }\r\n\r\n  /** Complete after the first page of autocomplete when it scrolls to the bottom */\r\n  addMorePages(): void {\r\n    if (this.inviewPages.length) {\r\n      this.addAnInviewPageToPages();\r\n    }\r\n  }\r\n\r\n  setFocused(elType: 'input' | 'listItem', val: boolean): void {\r\n    if (val) {\r\n      clearTimeout(this._focusTimer);\r\n      this._focused = {input: false, listItem: false};\r\n      this._focused[elType] = true;\r\n    } else {\r\n      this._focusTimer = setTimeout(() => {\r\n        this._focused[elType] = false;\r\n        this.cdr.detectChanges(); // for ChangeDetectionStrategy.OnPush\r\n      }, 100);\r\n    }\r\n  }\r\n\r\n  positionThisUnderInputEl(): void {\r\n    const thisEl = this.element.nativeElement;\r\n    const thisInputElBCR = this.inputEl.getBoundingClientRect();\r\n    const top = thisInputElBCR.top + thisInputElBCR.height + window.scrollY;\r\n\r\n    this.renderer.setStyle(thisEl, 'left', `${thisInputElBCR.left}px`);\r\n    this.renderer.setStyle(thisEl, 'top', `${top}px`);\r\n    this.renderer.setStyle(thisEl, 'minWidth', `${thisInputElBCR.width}px`);\r\n  }\r\n\r\n  // set items of NguiInviewPageComponent\r\n  addList(items: Array<any>): void {\r\n    this.isListLoading = false;\r\n\r\n    // TODO: ........ for 1st page only, show no match found or blank option\r\n    let noMatchItem: any;\r\n    let blankItem: any = {};\r\n    if (this.inviewPages.length === 1) {\r\n      if (this.noMatchItem && (!items || items.length === 0)) { // add no match item\r\n        noMatchItem = new NoMatchFound();\r\n        blankItem.html = this.noMatchItem;\r\n      } else if (this.blankOption) {\r\n        blankItem = new NoneSelect();\r\n        blankItem.html = this.blankOption;\r\n      }\r\n    }\r\n\r\n    const allItems = [].concat(noMatchItem, blankItem, items).filter(x => x);\r\n    this.inviewPage.instance.setItems(allItems);\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Output\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: 'ngui-list' // eslint-disable-line\r\n})\r\nexport class NguiListDirective {\r\n  /** Fired when child `<ngui-list-item>` is selected */\r\n  @Output() selected: EventEmitter<any> = new EventEmitter();\r\n  /** Fired when `ESC` key is pressed from `<ngui-list-item>` */\r\n  @Output() escaped: EventEmitter<any> = new EventEmitter();\r\n\r\n  constructor(public element: ElementRef) { }\r\n}\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  Host,\r\n  HostListener,\r\n  Input,\r\n  OnInit,\r\n  Optional,\r\n  Renderer2,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\n\r\nimport { NguiListDirective } from './ngui-list.directive';\r\nimport { NguiVirtualListComponent } from './ngui-virtual-list.component';\r\nimport { NguiAutocompleteComponent } from './ngui-autocomplete.component';\r\nimport { NoneSelect } from './none-select';\r\nimport { NoMatchFound } from './no-match-found';\r\n\r\n// tabindex, keydown, keyup(ENTER, ESC), click\r\n@Directive({\r\n  selector: 'ngui-list-item' // eslint-disable-line\r\n})\r\nexport class NguiListItemDirective implements OnInit {\r\n  @Input('item') object: any; // eslint-disable-line\r\n\r\n  nextSibling: HTMLElement;\r\n  prevSibling: HTMLElement;\r\n  parentListComp: NguiListDirective | NguiVirtualListComponent | NguiAutocompleteComponent;\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n    private renderer: Renderer2,\r\n    private viewContainer: ViewContainerRef,\r\n    @Optional() @Host() private listDirective: NguiListDirective,\r\n    @Optional() @Host() private virtualListComponent: NguiVirtualListComponent,\r\n    @Optional() @Host() private autocompleteComponent: NguiAutocompleteComponent\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '0');\r\n    this.parentListComp = this.listDirective || this.virtualListComponent || this.autocompleteComponent;\r\n    if (!this.parentListComp) {\r\n      throw Error('ngui-list-item requires parent of ngui-list, ngui-virtual-list, or ngui-autocomplete.');\r\n    }\r\n    if ((this.object instanceof NoneSelect) || (this.object instanceof NoMatchFound)) {\r\n      this.viewContainer.clear();\r\n      this.el.nativeElement.innerHTML = this.object.html;\r\n    }\r\n  }\r\n\r\n  // handles keyboard up, down, left, right\r\n  @HostListener('keydown', ['$event']) keydown(event): void {\r\n    const thisListItem = this.el.nativeElement;\r\n    const keyCode = event.which || event.keyCode;\r\n    const parentListEl = this.parentListComp.element.nativeElement;\r\n    const listItems: Array<HTMLElement>\r\n      = Array.from(parentListEl.querySelectorAll('ngui-list-item'));\r\n    const listItemNdx = listItems.indexOf(thisListItem);\r\n    const nextListItem = listItems[listItemNdx + 1] || listItems[0];\r\n    const prevListItem = listItems[listItemNdx - 1] || listItems[listItems.length - 1];\r\n\r\n    switch (keyCode) {\r\n    case 37: case 38: // up arrow, left arrow\r\n      prevListItem.focus();\r\n      break;\r\n    case 39: case 40: // down arrow, right arrow\r\n      nextListItem.focus();\r\n      break;\r\n    default:\r\n      break;\r\n    }\r\n  }\r\n\r\n  // handles keyboard enter(13), esc(27)\r\n  @HostListener('keyup', ['$event']) keyup(event): void {\r\n    switch (event.key) {\r\n    case 'Enter':\r\n      this.parentListComp.selected.emit(this.object);\r\n      break;\r\n    case 'Escape':\r\n      this.parentListComp.escaped.emit();\r\n      break;\r\n    default:\r\n      break;\r\n    }\r\n  }\r\n\r\n  @HostListener('click', ['$event']) mousedown(): void {\r\n    this.parentListComp.selected.emit(this.object);\r\n  }\r\n\r\n  @HostListener('focus', ['$event']) focused(): void {\r\n    if (this.parentListComp['setFocused']) {\r\n      this.parentListComp['setFocused']('listItem', true);\r\n    }\r\n  }\r\n\r\n  @HostListener('blur', ['$event']) blurred(): void {\r\n    if (this.parentListComp['setFocused']) {\r\n      this.parentListComp['setFocused']('listItem', false);\r\n    }\r\n  }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {NguiAutocompleteComponent} from './src/ngui-autocomplete.component';\r\nimport {NguiListItemDirective} from './src/ngui-list-item.directive';\r\nimport {NguiListDirective} from './src/ngui-list.directive';\r\nimport {NguiInviewPageComponent} from './src/ngui-inview-page.component';\r\nimport {NguiVirtualListComponent} from './src/ngui-virtual-list.component';\r\nimport {NguiInviewModule} from '../ngui-inview/ngui-inview.module';\r\n\r\nexport {NguiAutocompleteComponent, NguiListItemDirective, NguiListDirective, NguiInviewPageComponent, NguiVirtualListComponent};\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    NguiInviewModule\r\n  ],\r\n  declarations: [\r\n    NguiAutocompleteComponent,\r\n    NguiInviewPageComponent,\r\n    NguiListDirective,\r\n    NguiListItemDirective,\r\n    NguiVirtualListComponent\r\n  ],\r\n  exports: [\r\n    NguiAutocompleteComponent,\r\n    NguiInviewPageComponent,\r\n    NguiListDirective,\r\n    NguiListItemDirective,\r\n    NguiVirtualListComponent\r\n  ]\r\n})\r\nexport class NguiListModule {\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'nguiHighlight' })\r\nexport class NguiHighlightPipe implements PipeTransform {\r\n  transform(text: string, search: string): string {\r\n    let ret = text;\r\n    if (search) {\r\n      const re  = new RegExp(search, 'ig');\r\n      ret = text.replace(re, match => `<span class=\"ngui-highlight\">${match}</span>`);\r\n    }\r\n\r\n    return ret;\r\n  }\r\n}\r\n","/**\r\n * window.konsole alternative\r\n ### Example\r\n ```js\r\n konsole.setLogLevel('error');\r\n konsole.log(1,2,3,4,5);\r\n ```\r\n */\r\nexport abstract class konsole { // eslint-disable-line\r\n  /** all log levels */\r\n  static LOG_LEVELS = {\r\n    ALL:   parseInt('00000', 2),\r\n    DEBUG: parseInt('00001', 2),\r\n    LOG:   parseInt('00010', 2),\r\n    INFO:  parseInt('00100', 2),\r\n    WARN:  parseInt('01000', 2),\r\n    ERROR: parseInt('10000', 2),\r\n    NONE:  parseInt('11111', 2)\r\n  };\r\n\r\n  /** current log level set by setLogLevel, default 'INFO' */\r\n  static logLevel = 'INFO';\r\n\r\n  /** returns if it should call `window.console` or not */\r\n  static toLog(param): boolean { // returns to log or not\r\n    const restrictionNum = this.LOG_LEVELS[this.logLevel];\r\n    const requiredNum = this.LOG_LEVELS[param];\r\n\r\n    return requiredNum > restrictionNum;\r\n  }\r\n\r\n  /** sets the current log level */\r\n  static setLogLevel(logLevel: string): any {\r\n    logLevel = logLevel.toUpperCase();\r\n    const logLevels = Object.keys(this.LOG_LEVELS);\r\n    if (logLevels.indexOf(logLevel) > -1) {\r\n      if (window && window.sessionStorage) { // for browser env.\r\n        window.sessionStorage.setItem('konsole.LOG_LEVEL', logLevel);\r\n      }\r\n      this.logLevel = logLevel;\r\n    } else {\r\n      console.error(`Error, invalid logLevel, it must be one of ${logLevels}`);\r\n    }\r\n  }\r\n\r\n  /** The same as `console.debug()` if the current log level is greater than `debug` */\r\n  static debug(...args: Array<any>): void {\r\n    if (this.toLog('DEBUG')) {\r\n        // noinspection TsLint\r\n        console.debug.apply(console, arguments); // eslint-disable-line\r\n    }\r\n  }\r\n\r\n  /** The same as `console.log()` if the current log level is greater than `log` */\r\n  static log(...args: Array<any>): void {\r\n    if (this.toLog('LOG')) {\r\n      console.log.apply(console, arguments);\r\n    }\r\n  }\r\n\r\n  /** The same as `console.info()` if the current log level is greater than `info` */\r\n  static info(...args: Array<any>): void {\r\n    if (this.toLog('INFO')) {\r\n        // noinspection TsLint\r\n        console.info.apply(console, arguments); // eslint-disable-line\r\n    }\r\n  }\r\n\r\n  /** The same as `console.warn()` if the current log level is greater than `warn` */\r\n  static warn(...args: Array<any>): void {\r\n    if (this.toLog('WARN')) {\r\n      console.warn.apply(console, arguments);\r\n    }\r\n  }\r\n\r\n  /** The same as `console.error()` if the current log level is greater than `error` */\r\n  static error(...args: Array<any>): void {\r\n    if (this.toLog('ERROR')) {\r\n      console.error.apply(console, arguments);\r\n    }\r\n  }\r\n}\r\n\r\n// konsole.setLogLevel('all');\r\n// konsole.debug('yes');\r\n// konsole.log('yes');\r\n// konsole.info('yes');\r\n// konsole.warn('yes');\r\n// konsole.error('yes');\r\n\r\n// konsole.setLogLevel('none');\r\n// konsole.debug('no');\r\n// konsole.log('no');\r\n// konsole.info('no');\r\n// konsole.warn('no');\r\n// konsole.error('no');\r\n\r\n// konsole.setLogLevel('info');\r\n// konsole.debug('no');\r\n// konsole.log('no');\r\n// konsole.info('yes');\r\n// konsole.warn('yes');\r\n// konsole.error('yes');\r\n\r\n// konsole.setLogLevel('WARN');\r\n// konsole.debug('no');\r\n// konsole.log('no');\r\n// konsole.info('no');\r\n// konsole.warn('yes');\r\n// konsole.error('yes');\r\n\r\n// konsole.setLogLevel('ERROR');\r\n// konsole.debug('no');\r\n// konsole.log('no');\r\n// konsole.info('no');\r\n// konsole.warn('no');\r\n// konsole.error('yes');\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {NguiHighlightPipe} from './src/ngui-highlight.pipe';\r\nimport {DynamicComponentService} from './src/dynamic-component.service';\r\nimport { konsole } from './src/konsole';\r\nimport { fireEvent } from './src/fire-event';\r\n\r\nexport {DynamicComponentService, NguiHighlightPipe, konsole, fireEvent};\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  declarations: [NguiHighlightPipe],\r\n  exports: [NguiHighlightPipe],\r\n  providers: [DynamicComponentService]\r\n})\r\nexport class NguiUtilsModule { }\r\n","import {NgModule} from '@angular/core';\r\nimport {NguiInviewModule} from './ngui-inview/ngui-inview.module';\r\nimport {NguiListModule} from './ngui-list/ngui-list.module';\r\nimport {NguiUtilsModule} from './ngui-utils/ngui-utils.module';\r\n\r\n@NgModule({\r\n  imports: [\r\n    NguiInviewModule,\r\n    NguiListModule,\r\n    NguiUtilsModule\r\n  ],\r\n  exports: [\r\n    NguiInviewModule,\r\n    NguiListModule,\r\n    NguiUtilsModule\r\n  ]\r\n})\r\nexport class NguiCommonModule {\r\n}\r\n","/*\r\n * Public API Surface of ngui-common\r\n */\r\n\r\nexport * from './lib/ngui-inview/ngui-inview.module';\r\nexport * from './lib/ngui-list/ngui-list.module';\r\nexport * from './lib/ngui-utils/ngui-utils.module';\r\nexport * from './lib/ngui-common.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}