{"version":3,"file":"nk-controls.mjs","sources":["../../../projects/nk-controls/src/core/enums/sortDirectionEnum.ts","../../../projects/nk-controls/src/core/position/nkDimensions.ts","../../../projects/nk-controls/src/core/position/nkOptionsPosition.ts","../../../projects/nk-controls/src/core/position/offset.ts","../../../projects/nk-controls/src/core/position/nkWithinInfo.ts","../../../projects/nk-controls/src/core/position/nkPositionBuilder.ts","../../../projects/nk-controls/src/core/animation/nkFadeInContent.animation.ts","../../../projects/nk-controls/src/core/animation/rotateBlock180Inverse.animation.ts","../../../projects/nk-controls/src/core/utils/objectHelper.ts","../../../projects/nk-controls/src/core/utils/scrollHelper.ts","../../../projects/nk-controls/src/core/keyCodes.ts","../../../projects/nk-controls/src/core/pseudoCheckbox/pseudoCheckbox.ts","../../../projects/nk-controls/src/core/pseudoCheckbox/nkPseudoCheckbox.module.ts","../../../projects/nk-controls/src/core/ripple/rippleRef.ts","../../../projects/nk-controls/src/core/ripple/rippleRenderer.ts","../../../projects/nk-controls/src/core/ripple/ripple.ts","../../../projects/nk-controls/src/core/commonBehavior/directives/exposeVariable.directive.ts","../../../projects/nk-controls/src/core/commonBehavior/common.module.ts","../../../projects/nk-controls/src/core/ripple/ripple.module.ts","../../../projects/nk-controls/src/core/models/subscriptionNotifier.ts","../../../projects/nk-controls/src/select/nkSelect.animation.ts","../../../projects/nk-controls/src/select/nkSelect.filter.ts","../../../projects/nk-controls/src/select/nkSelect.options.ts","../../../projects/nk-controls/src/select/nkSelect.multipleItem.ts","../../../projects/nk-controls/src/ribbon/models/nkRibbon.options.ts","../../../projects/nk-controls/src/ribbon/nkRibbon.repeater.ts","../../../projects/nk-controls/src/ribbon/models/nkRibbon.baseSelector.ts","../../../projects/nk-controls/src/ribbon/models/nkRibbon.events.ts","../../../projects/nk-controls/src/ribbon/models/nkRibbon.params.ts","../../../projects/nk-controls/src/ribbon/models/nkRibbon.order.ts","../../../projects/nk-controls/src/ribbon/models/nkRibbon.service.ts","../../../projects/nk-controls/src/ribbon/models/nkRibbon.item.expand.model.ts","../../../projects/nk-controls/src/ribbon/models/nkRibbon.item.ts","../../../projects/nk-controls/src/ribbon/models/nkRibbon.event.ts","../../../projects/nk-controls/src/ribbon/models/nkRibbon.sortItem.ts","../../../projects/nk-controls/src/ribbon/nkRibbon.file.service.ts","../../../projects/nk-controls/src/ribbon/nkRibbon.item.directive.ts","../../../projects/nk-controls/src/ribbon/nkRibbon.component.ts","../../../projects/nk-controls/src/ribbon/nkRibbon.html","../../../projects/nk-controls/src/select/nkSelectMenu.directive.ts","../../../projects/nk-controls/src/select/nkSelectMenuItem.directive.ts","../../../projects/nk-controls/src/select/nkSelectViewPortScroll.directive.ts","../../../projects/nk-controls/src/select/nkSelect.component.ts","../../../projects/nk-controls/src/select/nkSelect.html","../../../projects/nk-controls/src/ribbon/nkRibbon.item.expand.component.ts","../../../projects/nk-controls/src/ribbon/nkRibbon.item.expand.component.html","../../../projects/nk-controls/src/ribbon/models/nkRibbon.data.ts","../../../projects/nk-controls/src/ribbon/models/nkRibbon.collectionSelector.model.ts","../../../projects/nk-controls/src/ribbon/nkRibbon.module.ts","../../../projects/nk-controls/src/select/nkSelect.module.ts","../../../projects/nk-controls/src/ribbon/contracts/nkRibbonResponse.contract.ts","../../../projects/nk-controls/src/datedropper/models/nkDateDropper.element.date.model.ts","../../../projects/nk-controls/src/datedropper/models/i18n/nkDateDropper.lang.values.model.ts","../../../projects/nk-controls/src/datedropper/models/i18n/nkDateDropper.lang.model.ts","../../../projects/nk-controls/src/datedropper/models/i18n/nkDateDropper.i18n.constants.ts","../../../projects/nk-controls/src/datedropper/models/nkDateDropper.key.model.ts","../../../projects/nk-controls/src/datedropper/models/nkDateDropper.control.model.ts","../../../projects/nk-controls/src/datedropper/models/nkDateDropper.options.model.ts","../../../projects/nk-controls/src/datedropper/nkDateDropper.animation.ts","../../../projects/nk-controls/src/datedropper/nkDateDropperPicker.directive.ts","../../../projects/nk-controls/src/datedropper/nkDateInput.component.ts","../../../projects/nk-controls/src/datedropper/nkDateDropper.component.ts","../../../projects/nk-controls/src/datedropper/nkDateDropper.html","../../../projects/nk-controls/src/datedropper/nkDateDropper.module.ts","../../../projects/nk-controls/src/pagination/pagination.service.ts","../../../projects/nk-controls/src/pagination/paginate.pipe.ts","../../../projects/nk-controls/src/pagination/pagination-controls.directive.ts","../../../projects/nk-controls/src/pagination/pagination-controls.component.ts","../../../projects/nk-controls/src/pagination/pagination.html","../../../projects/nk-controls/src/pagination/pagination.module.ts","../../../projects/nk-controls/src/pagination/models/nkCollection.events.ts","../../../projects/nk-controls/src/pagination/models/nkCollection.options.ts","../../../projects/nk-controls/src/pagination/models/nkCollectionBaseSelector.model.ts","../../../projects/nk-controls/src/pagination/models/nkCollectionRequest.event.ts","../../../projects/nk-controls/src/pagination/models/nkCollectionResponse.event.ts","../../../projects/nk-controls/src/pagination/models/nkBaseCollection.model.ts","../../../projects/nk-controls/src/pagination/models/nkCollectionSortItem.ts","../../../projects/nk-controls/src/datepicker/helpers/is-same-date.ts","../../../projects/nk-controls/src/datepicker/helpers/create-date-range.ts","../../../projects/nk-controls/src/datepicker/helpers/is-null.ts","../../../projects/nk-controls/src/datepicker/component/date-picker/ngx-date-picker.component.ts","../../../projects/nk-controls/src/datepicker/component/date-picker/ngx-date-picker.component.html","../../../projects/nk-controls/src/datepicker/ngx-date-picker.directive.ts","../../../projects/nk-controls/src/datepicker/ngx-date-picker.module.ts","../../../projects/nk-controls/src/table/enums/sorting.constants.ts","../../../projects/nk-controls/src/table/enums/filterRule.enum.ts","../../../projects/nk-controls/src/table/enums/dataType.enum.ts","../../../projects/nk-controls/src/table/models/nkTableOptions.model.ts","../../../projects/nk-controls/src/table/models/nkTableBackdrop.model.ts","../../../projects/nk-controls/src/table/models/nkTable.model.ts","../../../projects/nk-controls/src/table/models/nkHeaderSortItem.model.ts","../../../projects/nk-controls/src/table/models/nkResizableElement.model.ts","../../../projects/nk-controls/src/table/models/nkHeaderFilter.model.ts","../../../projects/nk-controls/src/table/models/nkHeaderDateRangeFilter.model.ts","../../../projects/nk-controls/src/table/models/nkHeaderCell.model.ts","../../../projects/nk-controls/src/table/providers/nkTable.provider.ts","../../../projects/nk-controls/src/table/providers/nkTableContainer.provider.ts","../../../projects/nk-controls/src/table/components/nkFilterOfTable/nkFilterSelectorOfTable/nkFilterSelectorOfTable.component.ts","../../../projects/nk-controls/src/table/components/nkFilterOfTable/nkFilterSelectorOfTable/nkFilterSelectorOfTable.component.html","../../../projects/nk-controls/src/table/components/nkFilterOfTable/nkFilterDateRangeOfTable/nkFilterDateRangeOfTable.component.ts","../../../projects/nk-controls/src/table/components/nkFilterOfTable/nkFilterDateRangeOfTable/nkFilterDateRangeOfTable.component.html","../../../projects/nk-controls/src/table/components/nkFilterOfTable/nkFilterOfTable.component.ts","../../../projects/nk-controls/src/table/components/nkFilterOfTable/nkFilterOfTable.component.html","../../../projects/nk-controls/src/table/components/nkHeaderCellOfTable/nkHeaderCellOfTable.component.ts","../../../projects/nk-controls/src/table/components/nkHeaderCellOfTable/nkHeaderCellOfTable.component.html","../../../projects/nk-controls/src/table/components/nkHeaderOfTable/nkHeaderOfTable.component.ts","../../../projects/nk-controls/src/table/components/nkHeaderOfTable/nkHeaderOfTable.component.html","../../../projects/nk-controls/src/table/components/nkRowSetupOfTable/nkRowSetupOfTable.component.ts","../../../projects/nk-controls/src/table/components/nkCellOfTable/nkCellOfTable.component.ts","../../../projects/nk-controls/src/table/components/nkCellOfTable/nkCellOfTable.component.html","../../../projects/nk-controls/src/table/components/nkRowOfTable/nkRowOfTable.component.ts","../../../projects/nk-controls/src/table/components/nkRowOfTable/nkRowOfTable.component.html","../../../projects/nk-controls/src/table/nkTable.module.ts","../../../projects/nk-controls/src/colors/enums/formats.ts","../../../projects/nk-controls/src/colors/helpers/default-colors.ts","../../../projects/nk-controls/src/colors/helpers/formats.ts","../../../projects/nk-controls/src/colors/models/formats.ts","../../../projects/nk-controls/src/colors/services/converter.service.ts","../../../projects/nk-controls/src/colors/components/icons/icons.component.ts","../../../projects/nk-controls/src/colors/components/icons/icons.component.html","../../../projects/nk-controls/src/colors/models/slider.ts","../../../projects/nk-controls/src/colors/directives/slider.directive.ts","../../../projects/nk-controls/src/colors/components/color-picker/color-picker.component.ts","../../../projects/nk-controls/src/colors/components/color-picker/color-picker.component.html","../../../projects/nk-controls/src/colors/components/panel/panel.component.ts","../../../projects/nk-controls/src/colors/components/panel/panel.component.html","../../../projects/nk-controls/src/colors/services/panel-factory.service.ts","../../../projects/nk-controls/src/colors/directives/nkColorsTrigger.directive.ts","../../../projects/nk-controls/src/colors/nkColors.component.ts","../../../projects/nk-controls/src/colors/nkColors.component.html","../../../projects/nk-controls/src/colors/nkColors.module.ts","../../../projects/nk-controls/src/colors/models/color.ts","../../../projects/nk-controls/src/nk-controls.ts"],"sourcesContent":["export class SortDirectionEnum {\r\n    public static Ascending = 'ascending';\r\n    public static Descending = 'descending';\r\n}","import { Offset } from './offset';\r\n\r\nexport class NkDimensions {\r\n    public width: number;\r\n    public height: number;\r\n    public offset: Offset;\r\n    constructor(width: number, height: number, offset: Offset) {\r\n        this.width = width;\r\n        this.height = height;\r\n        this.offset = offset;\r\n    }\r\n}","export class NkOptionsPosition {\r\n  public within: HTMLElement;\r\n  public boundingBoxContainerSelector: string;\r\n  public at: string;\r\n  public my: string;\r\n  public collision: string;\r\n  public using: any;\r\n  constructor() {\r\n    this.my = 'left top';\r\n    this.at = 'left bottom';\r\n    this.collision = 'none';\r\n  }\r\n}","export class Offset {\r\n    public top: number;\r\n    public left: number;\r\n    constructor(offsetTop: number, offsetLeft: number) {\r\n        this.top = offsetTop;\r\n        this.left = offsetLeft;\r\n    }\r\n}","import { NkDimensions } from './nkDimensions';\r\n\r\nexport class NkWithinInfo {\r\n    public element: HTMLElement;\r\n    public scrollLeft: number;\r\n    public scrollTop: number;\r\n    public dimensions: NkDimensions;\r\n    public get isWindow(): boolean {\r\n        return this.element == null;\r\n    }\r\n    constructor(element: HTMLElement, scrollLeft: number, scrollTop: number, dimensions: NkDimensions) {\r\n        this.element = element || null;\r\n        this.scrollLeft = scrollLeft;\r\n        this.scrollTop = scrollTop;\r\n        this.dimensions = dimensions;\r\n    }\r\n\r\n}","import { Offset } from './offset';\r\nimport { NkDimensions } from './nkDimensions';\r\nimport { NkWithinInfo } from './nkWithinInfo';\r\nimport { NkOptionsPosition } from './nkOptionsPosition';\r\n\r\nexport class NkPositionBuilder {\r\n\r\n  private _controlElement: Element;\r\n  private supportsOffsetFractions: boolean;\r\n  private max = Math.max;\r\n  private abs = Math.abs;\r\n  private round = Math.round;\r\n  private rhorizontal: RegExp = /left|center|right/;\r\n  private rvertical: RegExp = /top|center|bottom/;\r\n  private roffset: RegExp = /[\\+\\-]\\d+(\\.[\\d]+)?%?/;\r\n  private rposition: RegExp = /^\\w+/;\r\n  private rpercent: RegExp = /%$/;\r\n\r\n  private _cachedScrollbarWidth: number;\r\n  get cachedScrollbarWidth(): number {\r\n    if (!this._cachedScrollbarWidth) { this._cachedScrollbarWidth = this.scrollbarWidth(); }\r\n    return this._cachedScrollbarWidth;\r\n  }\r\n\r\n  constructor(controlElement: Element) {\r\n    this._controlElement = controlElement;\r\n  }\r\n\r\n  public setPosition(element: HTMLElement, options: NkOptionsPosition): void {\r\n\r\n    if (!options) {\r\n      return;\r\n    }\r\n\r\n    // make a copy, we don't want to modify arguments\r\n    options = Object.assign({}, options) as NkOptionsPosition;\r\n\r\n    let atOffset: Array<any>, targetWidth: number, targetHeight: number, targetOffset: any, basePosition: any, dimensions,\r\n      target = this._controlElement,\r\n      within = this.getWithinInfo(options.within),\r\n      scrollInfo = this.getScrollInfo(within),\r\n      collision = (options.collision || 'flip').split(' '),\r\n      offsets = {};\r\n\r\n    dimensions = this.getDimensions(target);\r\n    // if (target.preventDefault) {\r\n    // force left top to allow flipping\r\n    //     options.at = 'left top';\r\n    // }\r\n    targetWidth = dimensions.width;\r\n    targetHeight = dimensions.height;\r\n    targetOffset = dimensions.offset;\r\n    // clone to reuse original targetOffset later\r\n    basePosition = Object.assign({}, targetOffset);\r\n\r\n    // force my and at to have valid horizontal and vertical positions\r\n    // if a value is missing or invalid, it will be converted to center\r\n    let that = this;\r\n    ['my', 'at'].forEach(function (than) {\r\n      let pos = (options[than] || '').split(' '),\r\n        horizontalOffset,\r\n        verticalOffset;\r\n\r\n      if (pos.length === 1) {\r\n        pos = that.rhorizontal.test(pos[0]) ?\r\n          pos.concat(['center']) :\r\n          that.rvertical.test(pos[0]) ?\r\n            ['center'].concat(pos) :\r\n            ['center', 'center'];\r\n      }\r\n      pos[0] = that.rhorizontal.test(pos[0]) ? pos[0] : 'center';\r\n      pos[1] = that.rvertical.test(pos[1]) ? pos[1] : 'center';\r\n\r\n      // calculate offsets\r\n      horizontalOffset = that.roffset.exec(pos[0]);\r\n      verticalOffset = that.roffset.exec(pos[1]);\r\n      offsets[than] = [\r\n        horizontalOffset ? horizontalOffset[0] : 0,\r\n        verticalOffset ? verticalOffset[0] : 0\r\n      ];\r\n\r\n      // reduce to just the positions without the offsets\r\n      options[than] = [\r\n        that.rposition.exec(pos[0])[0],\r\n        that.rposition.exec(pos[1])[0]\r\n      ];\r\n    });\r\n\r\n    // normalize collision option\r\n    if (collision.length === 1) {\r\n      collision[1] = collision[0];\r\n    }\r\n\r\n    if (options.at[0] === 'right') {\r\n      basePosition.left += targetWidth;\r\n    } else if (options.at[0] === 'center') {\r\n      basePosition.left += targetWidth / 2;\r\n    }\r\n\r\n    if (options.at[1] === 'bottom') {\r\n      basePosition.top += targetHeight;\r\n    } else if (options.at[1] === 'center') {\r\n      basePosition.top += targetHeight / 2;\r\n    }\r\n\r\n    atOffset = this.getOffsets(offsets['at'], targetWidth, targetHeight);\r\n    basePosition.left += atOffset[0];\r\n    basePosition.top += atOffset[1];\r\n\r\n    let collisionPosition: any, using,\r\n      elemWidth = element.offsetWidth,\r\n      elemHeight = element.offsetHeight,\r\n      marginLeft = this.parseCss(element, 'marginLeft'),\r\n      marginTop = this.parseCss(element, 'marginTop'),\r\n      collisionWidth = elemWidth + marginLeft + this.parseCss(element, 'marginRight') + scrollInfo.width,\r\n      collisionHeight = elemHeight + marginTop + this.parseCss(element, 'marginBottom') + scrollInfo.height,\r\n      position = Object.assign({}, basePosition),\r\n      myOffset = this.getOffsets(offsets[\"my\"], element.offsetWidth, element.offsetHeight);\r\n\r\n    if (options.my[0] === 'right') {\r\n      position.left -= elemWidth;\r\n    } else if (options.my[0] === 'center') {\r\n      position.left -= elemWidth / 2;\r\n    }\r\n\r\n    if (options.my[1] === 'bottom') {\r\n      position.top -= elemHeight;\r\n    } else if (options.my[1] === 'center') {\r\n      position.top -= elemHeight / 2;\r\n    }\r\n\r\n    position.left += myOffset[0];\r\n    position.top += myOffset[1];\r\n\r\n    // if the browser doesn't support fractions, then round for consistent results\r\n    //if (!this.supportsOffsetFractions) {\r\n    //    position.left = round(position.left);\r\n    //    position.top = round(position.top);\r\n    //}\r\n\r\n    collisionPosition = {\r\n      marginLeft: marginLeft,\r\n      marginTop: marginTop\r\n    };\r\n\r\n    //['left', 'top'].forEach(function (dir, i) {\r\n    //    if ($.ui.position[collision[i]]) {\r\n    //        $.ui.position[collision[i]][dir](position, {\r\n    //            targetWidth: targetWidth,\r\n    //            targetHeight: targetHeight,\r\n    //            elemWidth: elemWidth,\r\n    //            elemHeight: elemHeight,\r\n    //            collisionPosition: collisionPosition,\r\n    //            collisionWidth: collisionWidth,\r\n    //            collisionHeight: collisionHeight,\r\n    //            offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]],\r\n    //            my: options.my,\r\n    //            at: options.at,\r\n    //            within: within,\r\n    //            elem: element\r\n    //        });\r\n    //    }\r\n    //});\r\n\r\n    if (options.using) {\r\n      // adds feedback as second argument to using callback, if present\r\n      using = (props: any) => {\r\n        let left = targetOffset.left - position.left,\r\n          right = left + targetWidth - elemWidth,\r\n          top = targetOffset.top - position.top,\r\n          bottom = top + targetHeight - elemHeight,\r\n          feedback: any = {\r\n            target: {\r\n              element: target,\r\n              left: targetOffset.left,\r\n              top: targetOffset.top,\r\n              width: targetWidth,\r\n              height: targetHeight\r\n            },\r\n            element: {\r\n              element: element,\r\n              left: position.left,\r\n              top: position.top,\r\n              width: elemWidth,\r\n              height: elemHeight\r\n            },\r\n            horizontal: right < 0 ? 'left' : left > 0 ? 'right' : 'center',\r\n            vertical: bottom < 0 ? 'top' : top > 0 ? 'bottom' : 'middle'\r\n          };\r\n        if (targetWidth < elemWidth && Math.abs(left + right) < targetWidth) {\r\n          feedback.horizontal = 'center';\r\n        }\r\n        if (targetHeight < elemHeight && Math.abs(top + bottom) < targetHeight) {\r\n          feedback.vertical = 'middle';\r\n        }\r\n        if (Math.max(Math.abs(left), Math.abs(right)) > Math.max(Math.abs(top), Math.abs(bottom))) {\r\n          feedback.important = 'horizontal';\r\n        } else {\r\n          feedback.important = 'vertical';\r\n        }\r\n        options.using.call(this, props, feedback);\r\n      };\r\n    }\r\n\r\n    this.setOffset(element, Object.assign(position, { using: using }), options);\r\n  }\r\n\r\n  setOffset(element: HTMLElement, options: any, nkOptions: NkOptionsPosition): void {\r\n    let curLeft, curCSSTop, curTop, curCSSLeft, calculatePosition,\r\n      position = element.style.position,\r\n      props: any = {};\r\n\r\n    // set position first, in-case top/left are set even on static elem\r\n    if (position === \"static\") {\r\n      element.style.position = \"relative\";\r\n    }\r\n\r\n    curCSSTop = element.style.top;\r\n    curCSSLeft = element.style.left;\r\n    calculatePosition = (position === \"absolute\" || position === \"fixed\") && (curCSSTop === \"auto\" || curCSSLeft === \"auto\");\r\n\r\n    // need to be able to calculate position if either top or left is auto and position is either absolute or fixed\r\n    if (calculatePosition) {\r\n      curTop = element.offsetTop;\r\n      curLeft = element.offsetLeft;\r\n    } else {\r\n      curTop = parseFloat(curCSSTop) || 0;\r\n      curLeft = parseFloat(curCSSLeft) || 0;\r\n    }\r\n\r\n    if (options.top != null) {\r\n      props.top = (options.top - element.offsetTop) + curTop;\r\n    }\r\n    if (options.left != null) {\r\n      props.left = (options.left - element.offsetLeft) + curLeft;\r\n    }\r\n\r\n    if (options.using) {\r\n      options.using.call(element, props);\r\n    } else {\r\n      element.style.top = props.top + \"px\";\r\n      element.style.left = props.left + \"px\";\r\n      if (props.top > window.innerHeight - element.offsetHeight && props.top > element.offsetHeight) {\r\n        element.style.top = (props.top - element.offsetHeight - 2 * this._controlElement.clientHeight) + \"px\";\r\n        element.classList.add('build-top');\r\n      } else {\r\n        element.style.top = this.calculateOffsetTop(element, props, nkOptions) + \"px\";\r\n      }\r\n    }\r\n  }\r\n\r\n  calculateOffsetTop(element: HTMLElement, props: any, options: NkOptionsPosition): number {\r\n    const menuPanelHeight = (element.querySelector('.nk-host-container') || element).clientHeight;\r\n    let topStyle = props.top;\r\n    const clientRect = this._controlElement.getBoundingClientRect()\r\n    const bottomEdge = clientRect.bottom + menuPanelHeight;\r\n    let bodyHeight = 0;\r\n\r\n    if (!options.boundingBoxContainerSelector || options.boundingBoxContainerSelector === 'window') {\r\n      bodyHeight = window.innerHeight;\r\n    } else {\r\n      const container = (element.closest(options.boundingBoxContainerSelector) as HTMLElement);\r\n      const rect = container.getBoundingClientRect();\r\n      bodyHeight = container.clientHeight + rect.top;\r\n    }\r\n    if (bottomEdge > bodyHeight) {\r\n      topStyle = bodyHeight - bottomEdge - 10;\r\n    }\r\n    return topStyle;\r\n  }\r\n\r\n  getOffsets(offsets: Array<any>, width: number, height: number): Array<number> {\r\n    return [\r\n      parseFloat(offsets[0]) * (this.rpercent.test(offsets[0]) ? width / 100 : 1),\r\n      parseFloat(offsets[1]) * (this.rpercent.test(offsets[1]) ? height / 100 : 1)\r\n    ];\r\n  };\r\n\r\n  parseCss(element: HTMLElement, property: string): number {\r\n    return parseInt(element.style[property], 10) || 0;\r\n  };\r\n\r\n  getDimensions(elem: any): NkDimensions {\r\n\r\n    //if (elem.nodeType === 9) {\r\n    //    var document: HTMLElement = elem;\r\n    //    return new NkDimensions(document.offsetWidth, document.offsetHeight, new Offset(0, 0)); \r\n    //}\r\n    //if (this.isWindow(elem)) {\r\n    //    var win: Window = elem;\r\n    //    return new NkDimensions(win.outerWidth, win.outerHeight, new Offset(win.scrollY, win.scrollX));\r\n    //}\r\n    //if (elem.preventDefault) {\r\n    //    return new NkDimensions(0, 0, new Offset(elem.pageY, elem.pageX));\r\n    //}\r\n    let el: HTMLElement = elem;\r\n    return new NkDimensions(el.offsetWidth, el.offsetHeight, new Offset(el.offsetTop, el.offsetLeft));\r\n\r\n  };\r\n\r\n  getWithinInfo(element: HTMLElement): NkWithinInfo {\r\n    let offsetWidth,\r\n      offsetHeight,\r\n      offsetTop,\r\n      offsetLeft,\r\n      scrollTop,\r\n      scrollLeft;\r\n    if (element) {\r\n      offsetWidth = element.offsetWidth;\r\n      offsetHeight = element.offsetHeight;\r\n      offsetTop = element.offsetTop;\r\n      offsetLeft = element.offsetLeft;\r\n      scrollTop = element.scrollTop;\r\n      scrollLeft = element.scrollLeft;\r\n    } else {\r\n      offsetWidth = window.outerWidth;\r\n      offsetHeight = window.outerHeight;\r\n      offsetTop = pageYOffset;\r\n      offsetLeft = pageXOffset;\r\n      scrollTop = window.scrollY;\r\n      scrollLeft = window.scrollX;\r\n    }\r\n    let offset: Offset = new Offset(offsetTop, offsetLeft);\r\n    let dimensions = new NkDimensions(offsetWidth, offsetHeight, offset);\r\n    let withinInfo = new NkWithinInfo(element, scrollLeft, scrollTop, dimensions);\r\n\r\n    return withinInfo;\r\n  };\r\n\r\n  getScrollInfo(within: NkWithinInfo): NkDimensions {\r\n\r\n    let overflowX,\r\n      overflowY,\r\n      scrollWidth,\r\n      scrollHeight;\r\n    if (within.isWindow) {\r\n      overflowX = 0;\r\n      overflowY = 0;\r\n      scrollWidth = 0;\r\n      scrollHeight = 0;\r\n    } else {\r\n      overflowX = within.element.style.overflowX;\r\n      overflowY = within.element.style.overflowY;\r\n      scrollWidth = within.element.scrollWidth;\r\n      scrollHeight = within.element.scrollHeight;\r\n    }\r\n    let hasOverflowX = overflowX === 'scroll' ||\r\n      (overflowX === 'auto' && within.dimensions.width < scrollWidth),\r\n      hasOverflowY = overflowY === 'scroll' ||\r\n        (overflowY === 'auto' && within.dimensions.height < scrollHeight);\r\n\r\n    let width = hasOverflowY ? this.cachedScrollbarWidth : 0;\r\n    let height = hasOverflowX ? this.cachedScrollbarWidth : 0;\r\n    let offset: Offset = new Offset(0, 0);\r\n    let dimensions = new NkDimensions(width, height, offset);\r\n    return dimensions;\r\n\r\n  }\r\n\r\n  scrollbarWidth(): number {\r\n    let w1: number, w2: number,\r\n      div = document.createElement('div'),\r\n      innerDiv = document.createElement('div');\r\n    div.style.display = 'block';\r\n    div.style.position = 'absolute';\r\n    div.style.width = '50px';\r\n    div.style.height = '50px';\r\n    div.style.overflow = 'hidden';\r\n    innerDiv.style.height = '100px';\r\n    innerDiv.style.width = 'auto';\r\n    div.appendChild(innerDiv);\r\n    document.body.appendChild(div);\r\n    w1 = innerDiv.offsetWidth;\r\n    div.style.overflow = 'scroll';\r\n    w2 = innerDiv.offsetWidth;\r\n    if (w1 === w2) {\r\n      w2 = div.clientWidth;\r\n    }\r\n    div.remove();\r\n    return w1 - w2;\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import {\r\n  animate,\r\n  AnimationTriggerMetadata,\r\n  state,\r\n  style,\r\n  transition,\r\n  trigger,\r\n} from '@angular/animations';\r\n\r\nexport const fadeInContent: AnimationTriggerMetadata = trigger('fadeInContent', [\r\n  state('showing', style({opacity: 1})),\r\n  transition('void => showing', [\r\n    style({opacity: 0}),\r\n    animate('150ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')\r\n  ])\r\n]);","import {\r\n  animate,\r\n  AnimationTriggerMetadata,\r\n  state,\r\n  style,\r\n  transition,\r\n  trigger,\r\n} from '@angular/animations';\r\n\r\nexport const ROTATE_180_INVERSE: AnimationTriggerMetadata = trigger('rotateBlock180Inverse', [\r\n  state('down', style({\r\n    transform: 'rotate(0deg)'\r\n  })),\r\n  state('up', style({\r\n    transform: 'rotate(180deg)'\r\n  })),\r\n  transition('up => down', animate(300)),\r\n  transition('down => up', animate(300)),\r\n  transition('void => up', animate(0)),\r\n]);","export class ObjectHelper {\r\n\r\n    baseExtend(dst:any, objs:any, deep:any):any{\r\n\r\n        for (var i = 0, ii = objs.length; i < ii; ++i) {\r\n            var obj = objs[i];\r\n            if (!this.isObject(obj) && !this.isFunction(obj)) continue;\r\n            var keys = Object.keys(obj);\r\n            for (var j = 0, jj = keys.length; j < jj; j++) {\r\n                var key = keys[j];\r\n                var src = obj[key];\r\n\r\n                if (deep && this.isObject(src)) {\r\n                    if (this.isDate(src)) {\r\n                        dst[key] = new Date(src.valueOf());\r\n                    } else if (this.isRegExp(src)) {\r\n                        dst[key] = new RegExp(src);\r\n                    } else if (src.nodeName) {\r\n                        dst[key] = src.cloneNode(true);\r\n                    } else if (this.isElement(src)) {\r\n                        dst[key] = src.clone();\r\n                    } else {\r\n                        if (!this.isObject(dst[key])) dst[key] = Array.isArray(src) ? [] : {};\r\n                        this.baseExtend(dst[key], [src], true);\r\n                    }\r\n                } else {\r\n                    dst[key] = src;\r\n                }\r\n            }\r\n        }\r\n        return dst;\r\n    }\r\n\r\n    extend(dst:any, dst1:any = null, dst2:any = null):any {\r\n        return this.baseExtend(dst, [].slice.call(arguments, 1), false);\r\n    }\r\n\r\n    merge(dst: any, dst1: any = null, dst2: any = null):any {\r\n        return this.baseExtend(dst, [].slice.call(arguments, 1), true);\r\n    }\r\n\r\n    isObject(value:any):boolean {\r\n        return value !== null && typeof value === 'object';\r\n    }\r\n\r\n    isDate(value: any): boolean {\r\n        return Object.prototype.toString.call(value) === '[object Date]';\r\n    }\r\n\r\n    isFunction(value: any): boolean {\r\n         return typeof value === 'function';\r\n    }\r\n\r\n    isElement(node: any): boolean{\r\n        return !!(node &&\r\n        (node.nodeName  \r\n            || (node.prop && node.attr && node.find))); \r\n    }\r\n\r\n    isRegExp(value: any): boolean {\r\n        return Object.prototype.toString.call(value) === '[object RegExp]';\r\n    }\r\n}","export class ScrollHelper {\r\n\r\n    isRegExp(value: any): boolean {\r\n        return toString.call(value) === '[object RegExp]';\r\n    }\r\n\r\n  scrollTop(elem: any, val: any = null): any {\r\n    var win = this.getWindow(elem);\r\n\r\n    if (val === null) {\r\n      if (win) {\r\n        if ('pageYOffset' in win) {\r\n          return win.pageYOffset;\r\n        } else {\r\n          return win.document.documentElement['scrollTop'];\r\n        }\r\n      } else {\r\n        return elem['scrollTop'];\r\n      }\r\n\r\n    }\r\n\r\n    if (win) {\r\n      win.scrollTo(\r\n        //!top ? val : jQuery(win).scrollLeft(),\r\n        0,\r\n        val\r\n      );\r\n\r\n    } else {\r\n      elem.scrollTop = val;\r\n    }\r\n  }\r\n\r\n    getWindow(elem: any): any {\r\n        return this.isWindow(elem) ?\r\n            elem :\r\n            elem.nodeType === 9 ?\r\n                elem.defaultView || elem.parentWindow :\r\n                false;\r\n    }\r\n\r\n    isWindow(obj: any) {\r\n        return obj != null && obj == obj.window;\r\n    }\r\n\r\n}","export const UP_ARROW = 38;\r\nexport const DOWN_ARROW = 40;\r\nexport const RIGHT_ARROW = 39;\r\nexport const LEFT_ARROW = 37;\r\nexport const PAGE_UP = 33;\r\nexport const PAGE_DOWN = 34;\r\nexport const HOME = 36;\r\nexport const END = 35;\r\nexport const ENTER = 13;\r\nexport const SPACE = 32;\r\nexport const TAB = 9;\r\nexport const ESCAPE = 27;\r\nexport const BACKSPACE = 8;\r\nexport const DELETE = 46;\r\nexport const A = 65;\r\nexport const Z = 90;\r\nexport const ZERO = 48;\r\nexport const NINE = 91;\r\nexport const COMMA = 188;","\r\nimport {\r\n  Component,\r\n  ViewEncapsulation,\r\n  Input,\r\n  ChangeDetectionStrategy,\r\n  Inject,\r\n  Optional,\r\n} from '@angular/core';\r\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\r\n\r\nexport type PseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';\r\n\r\n@Component({\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'pseudo-checkbox',\r\n  styleUrls: ['pseudoCheckbox.scss'],\r\n  template: '',\r\n  host: {\r\n    'class': 'pseudo-checkbox',\r\n    '[class.pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\r\n    '[class.pseudo-checkbox-checked]': 'state === \"checked\"',\r\n    '[class.pseudo-checkbox-disabled]': 'disabled',\r\n    '[class._animation-noopable]': '_animationMode === \"NoopAnimations\"',\r\n  },\r\n})\r\nexport class PseudoCheckbox {\r\n  @Input() state: PseudoCheckboxState = 'unchecked';\r\n\r\n  @Input() disabled: boolean = false;\r\n\r\n  constructor(@Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) { }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {PseudoCheckbox} from './pseudoCheckbox';\r\n\r\n\r\n@NgModule({\r\n  exports: [PseudoCheckbox],\r\n  declarations: [PseudoCheckbox]\r\n})\r\nexport class NkPseudoCheckboxModule { }\r\n\r\n\r\n","export enum RippleState {\r\n  FADING_IN, VISIBLE, FADING_OUT, HIDDEN\r\n}\r\n\r\nexport class RippleRef {\r\n\r\n  state: RippleState = RippleState.HIDDEN;\r\n\r\n  constructor(\r\n    private _renderer: any,\r\n    public element: HTMLElement,\r\n    public config: any) {\r\n  }\r\n\r\n  fadeOut() {\r\n    this._renderer.fadeOutRipple(this);\r\n  }\r\n}\r\n","import {\r\n  ElementRef,\r\n  NgZone } from '@angular/core';\r\nimport {\r\n  Platform,\r\n  supportsPassiveEventListeners } from '@angular/cdk/platform';\r\nimport { isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\r\nimport {\r\n  RippleRef,\r\n  RippleState } from './rippleRef';\r\n\r\nexport type RippleConfig = {\r\n  color?: string;\r\n  centered?: boolean;\r\n  radius?: number;\r\n  persistent?: boolean;\r\n  animation?: RippleAnimationConfig;\r\n  terminateOnPointerUp?: boolean;\r\n  speedFactor?: number;\r\n};\r\n\r\nexport interface RippleAnimationConfig {\r\n  enterDuration?: number;\r\n  exitDuration?: number;\r\n}\r\n\r\nexport interface RippleTarget {\r\n  rippleConfig: RippleConfig;\r\n  rippleDisabled: boolean;\r\n}\r\n\r\n\r\nexport const defaultRippleAnimationConfig = {\r\n  enterDuration: 450,\r\n  exitDuration: 400\r\n};\r\n\r\nconst ignoreMouseEventsTimeout = 800;\r\n\r\nexport class RippleRenderer {\r\n\r\n  private _containerElement: HTMLElement;\r\n  private _triggerElement: HTMLElement | null;\r\n  private _isPointerDown = false;\r\n  private _triggerEvents = new Map<string, any>();\r\n  private _activeRipples = new Set<RippleRef>();\r\n\r\n  private _mostRecentTransientRipple: RippleRef | null;\r\n\r\n  private _lastTouchStartEvent: number;\r\n\r\n  private _eventOptions = supportsPassiveEventListeners() ? ({ passive: true } as any) : false;\r\n\r\n  private _containerRect: ClientRect | null;\r\n\r\n  constructor(private _target: RippleTarget,\r\n    private _ngZone: NgZone,\r\n    elementRef: ElementRef<HTMLElement>,\r\n    platform: Platform) {\r\n\r\n    if (platform.isBrowser) {\r\n      this._containerElement = elementRef.nativeElement;\r\n\r\n      this._triggerEvents.set('mousedown', this.onMousedown);\r\n      this._triggerEvents.set('mouseup', this.onPointerUp);\r\n      this._triggerEvents.set('mouseleave', this.onPointerUp);\r\n\r\n      this._triggerEvents.set('touchstart', this.onTouchStart);\r\n      this._triggerEvents.set('touchend', this.onPointerUp);\r\n    }\r\n  }\r\n\r\n  fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\r\n    const containerRect = this._containerRect =\r\n      this._containerRect || this._containerElement.getBoundingClientRect();\r\n    const animationConfig = { ...defaultRippleAnimationConfig, ...config.animation };\r\n\r\n    if (config.centered) {\r\n      x = containerRect.left + containerRect.width / 2;\r\n      y = containerRect.top + containerRect.height / 2;\r\n    }\r\n\r\n    const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\r\n    const offsetX = x - containerRect.left;\r\n    const offsetY = y - containerRect.top;\r\n    const duration = animationConfig.enterDuration / (config.speedFactor || 1);\r\n\r\n    const ripple = document.createElement('div');\r\n    ripple.classList.add('nk-ripple-element');\r\n\r\n    ripple.style.left = `${offsetX - radius}px`;\r\n    ripple.style.top = `${offsetY - radius}px`;\r\n    ripple.style.height = `${radius * 2}px`;\r\n    ripple.style.width = `${radius * 2}px`;\r\n\r\n    ripple.style.backgroundColor = config.color || null;\r\n    ripple.style.transitionDuration = `${duration}ms`;\r\n\r\n    this._containerElement.appendChild(ripple);\r\n\r\n    enforceStyleRecalculation(ripple);\r\n\r\n    ripple.style.transform = 'scale(1)';\r\n\r\n    const rippleRef = new RippleRef(this, ripple, config);\r\n\r\n    rippleRef.state = RippleState.FADING_IN;\r\n\r\n    this._activeRipples.add(rippleRef);\r\n\r\n    if (!config.persistent) {\r\n      this._mostRecentTransientRipple = rippleRef;\r\n    }\r\n\r\n    this.runTimeoutOutsideZone(() => {\r\n      const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\r\n\r\n      rippleRef.state = RippleState.VISIBLE;\r\n\r\n      if (!config.persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\r\n        rippleRef.fadeOut();\r\n      }\r\n    }, duration);\r\n\r\n    return rippleRef;\r\n  }\r\n\r\n  fadeOutRipple(rippleRef: RippleRef) {\r\n    const wasActive = this._activeRipples.delete(rippleRef);\r\n\r\n    if (rippleRef === this._mostRecentTransientRipple) {\r\n      this._mostRecentTransientRipple = null;\r\n    }\r\n\r\n    if (!this._activeRipples.size) {\r\n      this._containerRect = null;\r\n    }\r\n\r\n    if (!wasActive) {\r\n      return;\r\n    }\r\n\r\n    const rippleEl = rippleRef.element;\r\n    const animationConfig = { ...defaultRippleAnimationConfig, ...rippleRef.config.animation };\r\n\r\n    rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\r\n    rippleEl.style.opacity = '0';\r\n    rippleRef.state = RippleState.FADING_OUT;\r\n\r\n    this.runTimeoutOutsideZone(() => {\r\n      rippleRef.state = RippleState.HIDDEN;\r\n      rippleEl.parentNode!.removeChild(rippleEl);\r\n    }, animationConfig.exitDuration);\r\n  }\r\n\r\n  fadeOutAll() {\r\n    this._activeRipples.forEach(ripple => ripple.fadeOut());\r\n  }\r\n\r\n  setupTriggerEvents(element: HTMLElement) {\r\n    if (!element || element === this._triggerElement) {\r\n      return;\r\n    }\r\n\r\n    this._removeTriggerEvents();\r\n\r\n    this._ngZone.runOutsideAngular(() => {\r\n      this._triggerEvents.forEach((fn, type) =>\r\n        element.addEventListener(type, fn, this._eventOptions));\r\n    });\r\n\r\n    this._triggerElement = element;\r\n  }\r\n\r\n  private onMousedown = (event: MouseEvent) => {\r\n    const isFakeMousedown = isFakeMousedownFromScreenReader(event);\r\n    const isSyntheticEvent = this._lastTouchStartEvent &&\r\n      Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\r\n\r\n    if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\r\n      this._isPointerDown = true;\r\n      this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\r\n    }\r\n  }\r\n\r\n  private onTouchStart = (event: TouchEvent) => {\r\n    if (!this._target.rippleDisabled) {\r\n      this._lastTouchStartEvent = Date.now();\r\n      this._isPointerDown = true;\r\n      const touches = event.changedTouches;\r\n\r\n      for (let i = 0; i < touches.length; i++) {\r\n        this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\r\n      }\r\n    }\r\n  }\r\n\r\n  private onPointerUp = () => {\r\n    if (!this._isPointerDown) {\r\n      return;\r\n    }\r\n\r\n    this._isPointerDown = false;\r\n\r\n    this._activeRipples.forEach(ripple => {\r\n      const isVisible = ripple.state === RippleState.VISIBLE ||\r\n        ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN;\r\n\r\n      if (!ripple.config.persistent && isVisible) {\r\n        ripple.fadeOut();\r\n      }\r\n    });\r\n  }\r\n\r\n  private runTimeoutOutsideZone(fn: Function, delay = 0) {\r\n    this._ngZone.runOutsideAngular(() => setTimeout(fn, delay));\r\n  }\r\n\r\n  _removeTriggerEvents() {\r\n    if (this._triggerElement) {\r\n      this._triggerEvents.forEach((fn, type) => {\r\n        this._triggerElement!.removeEventListener(type, fn, this._eventOptions);\r\n      });\r\n    }\r\n  }\r\n}\r\n\r\nfunction enforceStyleRecalculation(element: HTMLElement) {\r\n  window.getComputedStyle(element).getPropertyValue('opacity');\r\n}\r\n\r\nfunction distanceToFurthestCorner(x: number, y: number, rect: ClientRect) {\r\n  const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\r\n  const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\r\n  return Math.sqrt(distX * distX + distY * distY);\r\n}\r\n","import {Platform} from '@angular/cdk/platform';\r\nimport {\r\n  Directive,\r\n  ElementRef,\r\n  Inject,\r\n  InjectionToken,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n} from '@angular/core';\r\nimport {RippleRef} from './rippleRef';\r\nimport {\r\n  RippleAnimationConfig,\r\n  RippleConfig,\r\n  RippleRenderer,\r\n  RippleTarget} from './rippleRenderer';\r\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\r\n\r\nexport interface RippleGlobalOptions {\r\n  disabled?: boolean;\r\n  animation?: RippleAnimationConfig;\r\n  baseSpeedFactor?: number;\r\n  terminateOnPointerUp?: boolean;\r\n}\r\n\r\nexport const MAT_RIPPLE_GLOBAL_OPTIONS =\r\n    new InjectionToken<RippleGlobalOptions>('mat-ripple-global-options');\r\n\r\n@Directive({\r\n  selector: '[nk-ripple], [nkRipple]',\r\n  exportAs: 'nkRipple',\r\n  host: {\r\n    'class': 'nk-ripple',\r\n    '[class.nk-ripple-unbounded]': 'unbounded'\r\n  }\r\n})\r\nexport class NkRipple implements OnInit, OnDestroy, RippleTarget {\r\n\r\n  @Input('nkRippleColor') color: string;\r\n  @Input('nkRippleUnbounded') unbounded: boolean;\r\n  @Input('nkRippleCentered') centered: boolean;\r\n  @Input('nkRippleRadius') radius: number = 0;\r\n  @Input('nkRippleSpeedFactor') speedFactor: number = 1;\r\n  @Input('nkRippleAnimation') animation: RippleAnimationConfig;\r\n\r\n  @Input('nkRippleDisabled')\r\n  get disabled() { return this._disabled; }\r\n  set disabled(value: boolean) {\r\n    this._disabled = value;\r\n    this._setupTriggerEventsIfEnabled();\r\n  }\r\n  private _disabled: boolean = false;\r\n\r\n  @Input('nkRippleTrigger')\r\n  get trigger() { return this._trigger || this._elementRef.nativeElement; }\r\n  set trigger(trigger: HTMLElement) {\r\n    this._trigger = trigger;\r\n    this._setupTriggerEventsIfEnabled();\r\n  }\r\n  private _trigger: HTMLElement;\r\n\r\n  private _rippleRenderer: RippleRenderer;\r\n\r\n  private _globalOptions: RippleGlobalOptions;\r\n\r\n  private _isInitialized: boolean = false;\r\n\r\n  constructor(private _elementRef: ElementRef<HTMLElement>,\r\n              ngZone: NgZone,\r\n              platform: Platform,\r\n              @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalOptions: RippleGlobalOptions,\r\n              @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\r\n\r\n    this._globalOptions = globalOptions || {};\r\n    this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\r\n\r\n    if (animationMode === 'NoopAnimations') {\r\n      this._globalOptions.animation = {enterDuration: 0, exitDuration: 0};\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this._isInitialized = true;\r\n    this._setupTriggerEventsIfEnabled();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._rippleRenderer._removeTriggerEvents();\r\n  }\r\n\r\n  fadeOutAll() {\r\n    this._rippleRenderer.fadeOutAll();\r\n  }\r\n\r\n  get rippleConfig(): RippleConfig {\r\n    return {\r\n      centered: this.centered,\r\n      radius: this.radius,\r\n      color: this.color,\r\n      animation: {...this._globalOptions.animation, ...this.animation},\r\n      terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\r\n      speedFactor: this.speedFactor * (this._globalOptions.baseSpeedFactor || 1),\r\n    };\r\n  }\r\n\r\n  get rippleDisabled(): boolean {\r\n    return this.disabled || !!this._globalOptions.disabled;\r\n  }\r\n\r\n  private _setupTriggerEventsIfEnabled() {\r\n    if (!this.disabled && this._isInitialized) {\r\n      this._rippleRenderer.setupTriggerEvents(this.trigger);\r\n    }\r\n  }\r\n\r\n  launch(config: RippleConfig): RippleRef;\r\n\r\n  launch(x: number, y: number, config?: RippleConfig): RippleRef;\r\n\r\n  launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\r\n    if (typeof configOrX === 'number') {\r\n      return this._rippleRenderer.fadeInRipple(configOrX, y, {...this.rippleConfig, ...config});\r\n    } else {\r\n      return this._rippleRenderer.fadeInRipple(0, 0, {...this.rippleConfig, ...configOrX});\r\n    }\r\n  }\r\n}\r\n\r\n","import {\r\n    Directive,\r\n    Input\r\n} from '@angular/core';\r\n\r\n@Directive({ selector: '[exposeVariable]', exportAs: 'exposed' })\r\nexport class ExposeVariableDirective {\r\n    @Input() variablesToExpose: any;\r\n}\r\n","import {\r\n  NgModule,\r\n  InjectionToken,\r\n  Optional,\r\n  Inject,\r\n  isDevMode\r\n} from '@angular/core';\r\nimport { BidiModule } from '@angular/cdk/bidi';\r\nimport { ExposeVariableDirective } from './directives';\r\n\r\nexport const MATERIAL_SANITY_CHECKS = new InjectionToken<boolean>('mat-sanity-checks', {\r\n  providedIn: 'root',\r\n  factory: MATERIAL_SANITY_CHECKS_FACTORY,\r\n});\r\n\r\nexport function MATERIAL_SANITY_CHECKS_FACTORY(): boolean {\r\n  return true;\r\n}\r\n\r\n@NgModule({\r\n  imports: [BidiModule],\r\n  exports: [\r\n    BidiModule,\r\n    ExposeVariableDirective\r\n  ],\r\n  declarations: [ExposeVariableDirective]\r\n})\r\nexport class NkCommonModule {\r\n\r\n  private _hasDoneGlobalChecks = false;\r\n  private _document = typeof document === 'object' && document ? document : null;\r\n  private _window = typeof window === 'object' && window ? window : null;\r\n\r\n  constructor(@Optional() @Inject(MATERIAL_SANITY_CHECKS) private _sanityChecksEnabled: boolean) {\r\n    if (this._areChecksEnabled() && !this._hasDoneGlobalChecks) {\r\n      this._checkDoctypeIsDefined();\r\n      this._hasDoneGlobalChecks = true;\r\n    }\r\n  }\r\n\r\n\r\n  private _areChecksEnabled(): boolean {\r\n    return this._sanityChecksEnabled && isDevMode() && !this._isTestEnv();\r\n  }\r\n  private _isTestEnv() {\r\n    return this._window && (this._window['__karma__'] || this._window['jasmine']);\r\n  }\r\n\r\n  private _checkDoctypeIsDefined(): void {\r\n    if (this._document && !this._document.doctype) {\r\n      console.warn(\r\n        'Current document does not have a doctype. This may cause ' +\r\n        'some Angular NK components not to behave as expected.'\r\n      );\r\n    }\r\n  }\r\n}\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { PlatformModule } from '@angular/cdk/platform';\r\nimport { NkCommonModule } from '../commonBehavior/common.module';\r\nimport { NkRipple } from './ripple';\r\n\r\n@NgModule({\r\n  imports: [\r\n    NkCommonModule,\r\n    PlatformModule],\r\n  exports: [\r\n    NkRipple],\r\n  declarations: [ NkRipple ],\r\n})\r\nexport class NkRippleModule { }\r\n\r\n\r\n","import { Subject, MonoTypeOperatorFunction } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nexport class SubscriptionNotifier {\r\n    private notifier = new Subject();\r\n\r\n    constructor() {\r\n        this.notifier = new Subject();\r\n    }\r\n\r\n    public register(): MonoTypeOperatorFunction<any> {\r\n        return takeUntil(this.notifier);\r\n    }\r\n\r\n    public destroy(): void {\r\n        this.notifier.next(null);\r\n        this.notifier.complete();\r\n    }\r\n}\r\n","import {\r\n  animate,\r\n  AnimationTriggerMetadata,\r\n  state,\r\n  style,\r\n  transition,\r\n  trigger,\r\n} from '@angular/animations';\r\n\r\n/**\r\n * The following are all the animations for the md-select component, with each\r\n * const containing the metadata for one animation.\r\n *\r\n * The values below match the implementation of the AngularJS Material md-select animation.\r\n */\r\n\r\n/**\r\n * This animation shrinks the placeholder text to 75% of its normal size and translates\r\n * it to either the top left corner (ltr) or top right corner (rtl) of the trigger,\r\n * depending on the text direction of the application.\r\n */\r\nexport const transformPlaceholder: AnimationTriggerMetadata = trigger('transformPlaceholder', [\r\n  state('floating-ltr', style({\r\n    top: '-22px',\r\n    left: '-2px',\r\n    transform: 'scale(0.75)'\r\n  })),\r\n  state('floating-rtl', style({\r\n    top: '-22px',\r\n    left: '2px',\r\n    transform: 'scale(0.75)'\r\n  })),\r\n  transition('* => *', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\r\n]);\r\n\r\n/**\r\n * This animation transforms the select's overlay panel on and off the page.\r\n *\r\n * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it\r\n * up to 100% on the Y axis, fades in its border, and translates slightly up and to the\r\n * side to ensure the option text correctly overlaps the trigger text.\r\n *\r\n * When the panel is removed from the DOM, it simply fades out linearly.\r\n */\r\nexport const transformMenu: AnimationTriggerMetadata = trigger('transformMenu', [\r\n  state('showing', style({\r\n    opacity: 1,\r\n    minWidth: 'calc(100%)', // 32px = 2 * 16px padding\r\n    transform: 'scaleY(1)'\r\n  })),\r\n  state('showing-multiple', style({\r\n    opacity: 1,\r\n    minWidth: 'calc(100% + 64px)', // 64px = 48px padding on the left + 16px padding on the right\r\n    transform: 'scaleY(1)'\r\n  })),\r\n  transition('void => *', [\r\n    style({\r\n      opacity: 0,\r\n      minWidth: '100%',\r\n      transform: 'scaleY(0)'\r\n    }),\r\n    animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')\r\n  ]),\r\n  transition('* => void', [\r\n    animate('250ms 100ms linear', style({opacity: 0}))\r\n  ])\r\n]);\r\n\r\n","import { Pipe, PipeTransform, Injectable } from '@angular/core';\r\n@Pipe({\r\n    name: 'nkSelectFilter'\r\n})\r\n@Injectable()\r\nexport class NkSelectFilter implements PipeTransform {\r\n    transform(items: any[], field: string, value: string): any[] {\r\n        if (!items) return [];\r\n        if (!value || value.length == 0) return items;\r\n        return items.filter(function (it) { return it[field] && it[field].toLowerCase().indexOf(value.toLowerCase()) != -1 } );\r\n    }\r\n}","import { NkOptionsPosition } from '../core/position/nkOptionsPosition';\r\n\r\nexport class NkSelectOptions {\r\n\r\n  private _displayTextDefault: string;\r\n  get displayTextDefault(): string {\r\n    return this._displayTextDefault;\r\n  }\r\n  set displayTextDefault(val: string) {\r\n    this._displayTextDefault = val;\r\n  }\r\n\r\n  private _displayTextForLoading: string;\r\n  get displayTextForLoading(): string {\r\n    return this._displayTextForLoading;\r\n  }\r\n  set displayTextForLoading(val: string) {\r\n    this._displayTextForLoading = val;\r\n  }\r\n\r\n  private _appendTo: string;\r\n  get appendTo(): string {\r\n    return this._appendTo;\r\n  }\r\n  set appendTo(val: string) {\r\n    this._appendTo = val;\r\n  }\r\n\r\n  private _menuPositionOptions: NkOptionsPosition;\r\n  get menuPositionOptions(): NkOptionsPosition {\r\n    return this._menuPositionOptions;\r\n  }\r\n\r\n\r\n  private _themeClassMenu: string;\r\n  get themeClassMenu(): string {\r\n    return this._themeClassMenu;\r\n  }\r\n  set themeClassMenu(val: string) {\r\n    this._themeClassMenu = val;\r\n  }\r\n\r\n  private _primaryKey: string;\r\n  get primaryKey(): string {\r\n    return this._primaryKey;\r\n  }\r\n  set primaryKey(val: string) {\r\n    this._primaryKey = val;\r\n  }\r\n\r\n  private _viewValueInitialize: string;\r\n  get viewValueInitialize(): string {\r\n    return this._viewValueInitialize;\r\n  }\r\n  set viewValueInitialize(val: string) {\r\n    this._viewValueInitialize = val;\r\n  }\r\n\r\n  private _dataBindingMode: string;\r\n  get dataBindingMode(): string {\r\n    return this._dataBindingMode;\r\n  }\r\n  set dataBindingMode(val: string) {\r\n    this._dataBindingMode = val;\r\n  }\r\n\r\n  private _isCache: boolean;\r\n  get isCache(): boolean {\r\n    return this._isCache;\r\n  }\r\n  set isCache(val: boolean) {\r\n    this._isCache = val;\r\n  }\r\n\r\n  private _controlMode: string;\r\n  get controlMode(): string {\r\n    return this._controlMode;\r\n  }\r\n  set controlMode(val: string) {\r\n    this._controlMode = val;\r\n  }\r\n\r\n  constructor() {\r\n    this._displayTextDefault = 'Please select ...';\r\n    this._displayTextForLoading = 'Loading data ...';\r\n    this._menuPositionOptions = new NkOptionsPosition();\r\n  }\r\n} ","\r\nexport class NkSelectMultipleItem {\r\n\r\n  private _isSelected: boolean;\r\n  get isSelected(): boolean {\r\n    return this._isSelected;\r\n  }\r\n  set isSelected(val: boolean) {\r\n    this._isSelected = val;\r\n  }\r\n\r\n  private _data: any;\r\n  get data(): any {\r\n    return this._data;\r\n  }\r\n  set data(val: any) {\r\n    this._data = val;\r\n  }\r\n\r\n  constructor(data?: any) {\r\n    this._isSelected = false;\r\n    this._data = data;\r\n  }\r\n}\r\n","export class NkRibbonOptions {\r\n\r\n  private _isDynamicSize: boolean;\r\n  get isDynamicSize(): boolean {\r\n    return this._isDynamicSize;\r\n  }\r\n  set isDynamicSize(val: boolean) {\r\n    this._isDynamicSize = val;\r\n  }\r\n\r\n  private _repeatContainerSelector: string;\r\n  get repeatContainerSelector(): string {\r\n    return this._repeatContainerSelector;\r\n  }\r\n  set repeatContainerSelector(val: string) {\r\n    this._repeatContainerSelector = val;\r\n  }\r\n\r\n  private _offsetBefore: number;\r\n  get offsetBefore(): number {\r\n    return this._offsetBefore;\r\n  }\r\n  set offsetBefore(val: number) {\r\n    this._offsetBefore = val;\r\n  }\r\n\r\n  private _offsetAfter: number;\r\n  get offsetAfter(): number {\r\n    return this._offsetAfter;\r\n  }\r\n  set offsetAfter(val: number) {\r\n    this._offsetAfter = val;\r\n  }\r\n\r\n  private _scrolledToEndOffset: number;\r\n  get scrolledToEndOffset(): number {\r\n    return this._scrolledToEndOffset;\r\n  }\r\n  set scrolledToEndOffset(val: number) {\r\n    this._scrolledToEndOffset = val;\r\n  }\r\n\r\n  private _scrolledToStartOffset: number;\r\n  get scrolledToStartOffset(): number {\r\n    return this._scrolledToStartOffset;\r\n  }\r\n  set scrolledToStartOffset(val: number) {\r\n    this._scrolledToStartOffset = val;\r\n  }\r\n\r\n  private _pageSize: number;\r\n  get pageSize(): number {\r\n    return this._pageSize;\r\n  }\r\n  set pageSize(val: number) {\r\n    this._pageSize = val;\r\n  }\r\n\r\n  private _primaryKey: any;\r\n  get primaryKey(): any {\r\n    return this._primaryKey;\r\n  }\r\n  set primaryKey(value: any) {\r\n    this._primaryKey = value;\r\n  }\r\n\r\n  private _exportToFilePath: string;\r\n  get exportToFilePath(): string {\r\n    return this._exportToFilePath;\r\n  }\r\n  set exportToFilePath(value: string) {\r\n    this._exportToFilePath = value;\r\n  }\r\n\r\n  private _downloadFilePath: string;\r\n  get downloadFilePath(): string {\r\n    return this._downloadFilePath;\r\n  }\r\n  set downloadFilePath(value: string) {\r\n    this._downloadFilePath = value;\r\n  }\r\n  \r\n  constructor() {\r\n    this._isDynamicSize = false;\r\n    this._primaryKey = 'index';\r\n  }\r\n} ","import { NkRibbonOptions } from './models/nkRibbon.options';\r\nimport { NkRibbonItem } from './models/nkRibbon.item';\r\nimport { ScrollHelper } from '../core/utils/scrollHelper';\r\nimport {\r\n  EventEmitter\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport class NkRibbonRepeater {\r\n\r\n  private _beforeContent: HTMLElement;\r\n  private _afterContent: HTMLElement;\r\n  private _repeatContainer: HTMLElement;\r\n  private _scrollParent: any;\r\n\r\n  private startIndex: number = 0;\r\n  private endIndex: number = 0;\r\n\r\n  private _prevStartIndex: number = 0;\r\n  private _prevEndIndex: number = 0;\r\n  private _minStartIndex: number = 0;\r\n  private _maxEndIndex: number = 0;\r\n  private _beforeLoaderHeight: number = 0;\r\n  private scrollHelper: ScrollHelper = new ScrollHelper();\r\n  private _sizesCumulative: Array<number> = [];\r\n\r\n  private _defaultElementSize: number = 0;\r\n  get defaultElementSize(): number {\r\n    return this._defaultElementSize;\r\n  }\r\n  set defaultElementSize(val: number) {\r\n    this._defaultElementSize = val;\r\n  }\r\n\r\n  private _offsetData: number = 0;\r\n  get offsetData(): number {\r\n    return this._offsetData;\r\n  }\r\n  set offsetData(val: number) {\r\n    this._offsetData = val;\r\n  }\r\n\r\n  private _totalCount: number = 0;\r\n  get totalCount(): number {\r\n    return this._totalCount;\r\n  }\r\n  set totalCount(val: number) {\r\n    this._totalCount = val;\r\n  }\r\n\r\n  private _isInitialized: boolean = false;\r\n  get isInitialized(): boolean {\r\n    return this._isInitialized;\r\n  }\r\n\r\n  private _vsCollection: Array<NkRibbonItem> = [];\r\n  get $vsCollection(): Array<NkRibbonItem> {\r\n    return this._vsCollection;\r\n  }\r\n  set $vsCollection(val: Array<NkRibbonItem>) {\r\n    this._vsCollection = val;\r\n  }\r\n\r\n  private _options: NkRibbonOptions;\r\n  get options(): NkRibbonOptions {\r\n    return this._options;\r\n  }\r\n\r\n  public get originalCount(): number {\r\n    return this._originalCollection.length;\r\n  }\r\n\r\n  private _originalCollection: Array<NkRibbonItem> = [];\r\n  public get originalCollection(): Array<NkRibbonItem> {\r\n    return this._originalCollection;\r\n  }\r\n  public set originalCollection(val: Array<NkRibbonItem>) {\r\n    this._originalCollection = val;\r\n  }\r\n\r\n  private get virtualCollectionLength(): number {\r\n    return this.$vsCollection.length;\r\n  }\r\n\r\n  private _oldOriginalCollection: Array<NkRibbonItem> = this._originalCollection;\r\n  private _oldOriginalCount = 0;\r\n\r\n  public scrolledToEnd: () => Observable<any>;\r\n  public scrolledToStart: () => Observable<any>;\r\n  public onScrolling: EventEmitter<NkRibbonItem> = new EventEmitter();\r\n\r\n  constructor(repeatContainer?: HTMLElement, options?: NkRibbonOptions) {\r\n    this._repeatContainer = repeatContainer;\r\n    this._options = options;\r\n    if (repeatContainer && options) {\r\n      this.initializeBeforeContentElement();\r\n      this.initializeAfterContentElement();\r\n    }\r\n  }\r\n\r\n  initialize(collection: Array<NkRibbonItem>, offsetStart: number, totalCount: number): void {\r\n    this.originalCollection = collection;\r\n    this._totalCount = totalCount;\r\n    this.setScrollParent();\r\n    this.refresh(this._totalCount, offsetStart);\r\n  }\r\n\r\n  refresh(totalCount: number, offsetStart: number = 0, isRestoreScroll: boolean = true): void {\r\n    this.offsetData = offsetStart;\r\n    this._isInitialized = false;\r\n    this._totalCount = totalCount;\r\n    if (this._scrollParent) {\r\n      this._scrollParent.removeEventListener('scroll', this.getScrollHandler());\r\n    }\r\n    if (this._totalCount == 0) {\r\n      this._isInitialized = true;\r\n      this.$vsCollection.length = 0;\r\n    } else {\r\n      this.setOffsetAfterFirstLoad();\r\n      if (!isRestoreScroll && this._scrollParent) {\r\n        this.scrollHelper.scrollTop(this._scrollParent, 0);\r\n      }\r\n    }\r\n    if (this._scrollParent) {\r\n      this._scrollParent.addEventListener('scroll', this.getScrollHandler());\r\n    }\r\n  }\r\n\r\n  destroy(): void {\r\n    if (this._scrollParent) {\r\n      this._scrollParent.removeEventListener('scroll', this.getScrollHandler());\r\n    }\r\n  }\r\n\r\n  setScrollParent(): void {\r\n    if (this._options.repeatContainerSelector) {\r\n      if (this._options.repeatContainerSelector == 'window') {\r\n        this._scrollParent = window;\r\n      } else {\r\n        document.querySelectorAll(this._options.repeatContainerSelector).length === 1 ?\r\n          this._scrollParent = document.querySelector(this._options.repeatContainerSelector) :\r\n          this._scrollParent = this._repeatContainer.closest(this._options.repeatContainerSelector);\r\n      }\r\n    } else {\r\n      this._scrollParent = this._repeatContainer;\r\n    }\r\n    this._scrollParent.classList.add('nk-ribbon-scroll-container');\r\n  }\r\n\r\n  updateCollection(collection: Array<NkRibbonItem>): void {\r\n    this._vsCollection.length = 0;\r\n    Array.prototype.push.apply(this._vsCollection, collection);\r\n  }\r\n\r\n  updateOriginalCollection(collection: Array<NkRibbonItem>): void {\r\n    this.originalCollection = collection;\r\n  }\r\n\r\n  buildRepeatContainer(): void {\r\n    let template = this._repeatContainer.querySelector('.js-ribbon-after-progress-bar');\r\n    if (template) {\r\n      this._afterContent.appendChild(template);\r\n    }\r\n    template = this._repeatContainer.querySelector('.js-ribbon-before-progress-bar');\r\n    if (template) {\r\n      this._beforeContent.appendChild(template);\r\n      this._beforeLoaderHeight = template.getBoundingClientRect().height;\r\n    }\r\n    template = this._repeatContainer.querySelector('.js-ribbon-noresult');\r\n    if (template) {\r\n      this._afterContent.appendChild(template);\r\n    }\r\n    template = this._repeatContainer.querySelector('.js-ribbon-error-result');\r\n    if (template) {\r\n      this._afterContent.appendChild(template);\r\n    }\r\n  }\r\n\r\n  initializeBeforeContentElement(): void {\r\n    this._beforeContent = this._repeatContainer.querySelector('.nk-repeat-before-content') as HTMLElement;\r\n  }\r\n\r\n  initializeAfterContentElement(): void {\r\n    this._afterContent = this._repeatContainer.querySelector('.nk-repeat-after-content') as HTMLElement;\r\n  }\r\n\r\n  getSizeElement(): number {\r\n    var size = this.getDefaultElementSize();\r\n    return size;\r\n  }\r\n\r\n  getDefaultElementSize(): number {\r\n    return this._defaultElementSize;\r\n  }\r\n\r\n  getClientSize(element: any, sizeProp: string): number {\r\n    if (element === window) {\r\n      return sizeProp === 'clientWidth' ? window.innerWidth : window.innerHeight;\r\n    }\r\n    else {\r\n      return element[sizeProp];\r\n    }\r\n  }\r\n\r\n  getScrollOffset(vsElement: any, scrollElement: any): number {\r\n    let vsPos = vsElement.getBoundingClientRect()['top'];\r\n    let scrollPos = scrollElement === window ? 0 : scrollElement.getBoundingClientRect()['top'];\r\n    let correction = vsPos - scrollPos + this.scrollHelper.scrollTop(scrollElement);\r\n\r\n    return correction;\r\n  }\r\n\r\n  setOffsetViewPort(previosLoadCount: number = 0, correct: number = 0): void {\r\n    let offset = this.calculateOffset(previosLoadCount, correct);\r\n    if (this._beforeContent) {\r\n      this._beforeContent.style.minHeight = offset.offsetBefore + 'px';\r\n    }\r\n    if (this._afterContent) {\r\n      this._afterContent.style.minHeight = offset.offsetAfter + 'px';\r\n    }\r\n  }\r\n\r\n  calculateOffset(previosLoadCount: number, correct: number): any {\r\n    let offsetBefore = 0;\r\n    let offsetAfter = 0;\r\n    let totalSize = 0;\r\n    if (this.options && this.options.isDynamicSize) {\r\n      offsetBefore = this._sizesCumulative[(previosLoadCount + this.startIndex)] + this.options.offsetBefore;\r\n      offsetAfter = this._sizesCumulative[(this.virtualCollectionLength + this.startIndex)] + this.options.offsetBefore;\r\n      totalSize = this._sizesCumulative[this.originalCount];\r\n    } else {\r\n      offsetBefore = (previosLoadCount + this.startIndex) * this.getSizeElement() + (this.options?.offsetBefore || 0);\r\n      offsetAfter = (this.virtualCollectionLength + this.startIndex) * this.getSizeElement() + (this.options?.offsetBefore || 0);\r\n      totalSize = (this.originalCount) * this.getSizeElement();\r\n    }\r\n    let total = (this.options?.offsetBefore || 0) + totalSize + (this.options?.offsetAfter || 0);\r\n    return { offsetBefore: offsetBefore, offsetAfter: total - offsetAfter }\r\n  }\r\n\r\n  private $scrollPosition: number = 0;\r\n\r\n  updateInnerCollection(): void {\r\n\r\n    this.$scrollPosition = this._scrollParent ? this.scrollHelper.scrollTop(this._scrollParent) : 0;\r\n    let $clientSize = this._scrollParent ? this.getClientSize(this._scrollParent, 'clientHeight') : 200;\r\n\r\n    let scrollOffset = 0;\r\n    if (this._scrollParent) {\r\n      scrollOffset = this._repeatContainer === this._scrollParent ? 0 : this.getScrollOffset(\r\n        this._repeatContainer,\r\n        this._scrollParent\r\n      );\r\n    }\r\n\r\n    let _startIndex = this.startIndex;\r\n    let _endIndex = this.endIndex;\r\n    let excess = 2;\r\n\r\n    if (this.options && this.options.isDynamicSize) {\r\n      _startIndex = 0;\r\n      while (this._sizesCumulative[_startIndex] < this.$scrollPosition - this.options.offsetBefore - scrollOffset) {\r\n        _startIndex++;\r\n      }\r\n      if (_startIndex > 0) {\r\n        _startIndex--;\r\n      }\r\n      _startIndex = Math.max(Math.floor(_startIndex - excess / 2), 0);\r\n      _endIndex = _startIndex;\r\n      while (this._sizesCumulative[_endIndex] < this.$scrollPosition - this.options.offsetBefore - scrollOffset + $clientSize) {\r\n        _endIndex++;\r\n      }\r\n      _endIndex = Math.min(Math.ceil(_endIndex + excess / 2), this.originalCount);\r\n    } else {\r\n      _startIndex = Math.max(Math.floor((this.$scrollPosition - scrollOffset) / this.getSizeElement()) - excess / 2, 0);\r\n      _endIndex = Math.min(_startIndex + Math.ceil($clientSize / this.getSizeElement()) + excess, this.originalCount);\r\n    }\r\n\r\n    this._minStartIndex = Math.min(_startIndex, this._minStartIndex);\r\n    this._maxEndIndex = Math.max(_endIndex, this._maxEndIndex);\r\n\r\n    this.startIndex = _startIndex;\r\n    this.endIndex = _endIndex;\r\n\r\n    let digestRequired = false;\r\n    if (this._prevStartIndex == 0) {\r\n      digestRequired = true;\r\n    } else if (this._prevEndIndex == 0) {\r\n      digestRequired = true;\r\n    }\r\n\r\n    if (!digestRequired) {\r\n      digestRequired = this.startIndex !== this._prevStartIndex || this.endIndex !== this._prevEndIndex;\r\n    }\r\n\r\n    if (digestRequired) {\r\n      this.updateCollection(this.originalCollection.slice(this.startIndex, this.endIndex));\r\n\r\n      let triggerIndex = this.originalCollection.length - (this.options?.scrolledToEndOffset || 0);\r\n      if ((this.endIndex >= triggerIndex && this._prevEndIndex <= triggerIndex && this.scrolledToEnd)) {\r\n        this.scrolledToEnd().subscribe(() => {\r\n          this.reinitialize();\r\n        });\r\n      }\r\n\r\n      triggerIndex = this.options?.scrolledToStartOffset || 0;\r\n      if (this.startIndex <= triggerIndex && (this._prevStartIndex > triggerIndex || (this._beforeContent && parseInt(this._beforeContent.style.minHeight)) <= this.getDefaultElementSize()) && this.scrolledToStart) {\r\n        this.scrolledToStart().subscribe(() => {\r\n          this.updateInnerCollectionAfterPreviosPageLoading();\r\n        });\r\n      }\r\n\r\n      this._prevStartIndex = this.startIndex;\r\n      this._prevEndIndex = this.endIndex;\r\n\r\n    }\r\n\r\n  }\r\n\r\n  updateInnerCollectionWithDynamicSizesAfterPreviosLoad(withCorrect: boolean = false): void {\r\n\r\n    this.$scrollPosition = this.scrollHelper.scrollTop(this._scrollParent);\r\n    let $clientSize = this.getClientSize(this._scrollParent, 'clientHeight');\r\n\r\n    let scrollOffset = this._repeatContainer === this._scrollParent ? 0 : this.getScrollOffset(\r\n      this._repeatContainer,\r\n      this._scrollParent\r\n    );\r\n    let _endIndex = 0;\r\n    let excess = 2;\r\n\r\n    let _startIndex = 8;\r\n    _endIndex = _startIndex;\r\n    while (this._sizesCumulative[_endIndex] < this.$scrollPosition - this.options.offsetBefore - scrollOffset + $clientSize) {\r\n      _endIndex++;\r\n    }\r\n    _endIndex = Math.min(Math.ceil(_endIndex + excess / 2), this.originalCount);\r\n\r\n    this.startIndex = _startIndex;\r\n    this.endIndex = _endIndex;\r\n\r\n    this.updateCollection(this.originalCollection.slice(this.startIndex, this.endIndex));\r\n    if (withCorrect) {\r\n      this.$vsCollection[0].correctingScrollTop = this.setScrollTopByItem;\r\n      if (this.$vsCollection[1]) {\r\n        this.$vsCollection[1].correctingScrollTop = this.setScrollTopByItem;\r\n      }\r\n    }\r\n    this._prevStartIndex = this.startIndex;\r\n    this._prevEndIndex = this.endIndex;\r\n\r\n  }\r\n\r\n  private _scrollHandler: any;\r\n  getScrollHandler(): any {\r\n    if (!this._scrollHandler) {\r\n      this._scrollHandler = () => {\r\n        this.updateInnerCollection();\r\n        this.setOffsetViewPort();\r\n      };\r\n    }\r\n    return this._scrollHandler;\r\n  }\r\n\r\n  //watchOriginalCollection(): void {\r\n  //    if (this._isInitialized) {\r\n  //        if (this._oldOriginalCollection !== this._originalCollection) {\r\n  //            this._oldOriginalCollection = this._originalCollection;\r\n  //            this._oldOriginalCount = this._originalCollection.length;\r\n  //            //if (this._isInitialized) {\r\n  //            //    this.refresh();\r\n  //            //}\r\n\r\n  //        } else {\r\n  //            let newLength = this._originalCollection.length;\r\n  //            let old = this._oldOriginalCount;\r\n  //            if (old !== newLength) {\r\n  //                this._oldOriginalCount = newLength;\r\n  //                //this.refresh();\r\n  //                //this.setScrollPositionAfterChangedOriginalCollection();\r\n  //            }\r\n  //        }\r\n  //    }\r\n  //}\r\n\r\n  reinitialize(): void {\r\n    if (this.originalCollection.length == 0) {\r\n      this.$vsCollection.length = 0;\r\n      this._sizesCumulative.length = 0;\r\n    } else {\r\n      if (this.options.isDynamicSize) {\r\n        this.recalculateDynamicSizes();\r\n      }\r\n    }\r\n    this._prevStartIndex = 0;\r\n    this._prevEndIndex = 0;\r\n    this._minStartIndex = this.originalCount;\r\n    this._maxEndIndex = 0;\r\n    this.updateInnerCollection();\r\n    this.setOffsetViewPort();\r\n  }\r\n\r\n  setOffsetAfterFirstLoad(): void {\r\n\r\n    if (this.offsetData > 0) {\r\n      if (this.options.isDynamicSize) {\r\n        this.recalculateDynamicSizes();\r\n      }\r\n      let excess = 2;\r\n      this.startIndex = this.options.pageSize - excess;\r\n      let $clientSize = this.getClientSize(this._scrollParent, 'clientHeight');\r\n      this.endIndex = Math.min(this.startIndex + Math.ceil($clientSize / this.getSizeElement()) + excess, this.originalCount);\r\n      let than = this;\r\n      than.setOffsetViewPort();\r\n      than.updateCollection(than.originalCollection.slice(than.startIndex, than.endIndex));\r\n    } else {\r\n      this.reinitialize();\r\n    }\r\n  }\r\n\r\n  setScrollTopAfterFirstLoad(): void {\r\n    let top = 0;\r\n    if (this.options.isDynamicSize) {\r\n      this.recalculateDynamicSizes();\r\n      if (this._offsetData > 0 && this._offsetData < this.options.pageSize) {\r\n        top = this.offsetData * this.getSizeElement();\r\n        this.setScroll(top);\r\n      } else if (this._offsetData >= this.options.pageSize) {\r\n        top = this._sizesCumulative[this.options.pageSize + 1];\r\n        this.setScroll(top);\r\n      } else {\r\n        this.setScroll(0);\r\n        this.updateInnerCollection();\r\n      }\r\n    } else {\r\n\r\n      if (this._offsetData > 0 && this._offsetData < this.options.pageSize) {\r\n        top = this.offsetData * this.getSizeElement();\r\n        this.setScroll(top);\r\n      } else if (this._offsetData >= this.options.pageSize) {\r\n        top = this.options.pageSize * this.getSizeElement();\r\n        this.setScroll(top);\r\n      } else {\r\n        this.setScroll(0);\r\n        this.updateInnerCollection();\r\n      }\r\n    }\r\n\r\n  }\r\n\r\n  updateInnerCollectionAfterPreviosPageLoading(): void {\r\n    if (this.options.isDynamicSize) {\r\n      this._scrollParent.removeEventListener('scroll', this.getScrollHandler());\r\n      let than = this;\r\n      than.recalculateDynamicSizes();\r\n      than.setOffsetViewPort(than.options.pageSize - than.options.scrolledToStartOffset);\r\n      let scrollPosition = this.scrollHelper.scrollTop(this._scrollParent);\r\n      if (scrollPosition < this._sizesCumulative[2]) {\r\n        than.scrollHelper.scrollTop(than._scrollParent, this._sizesCumulative[than.options.pageSize - than.options.scrolledToStartOffset] - this._beforeLoaderHeight);\r\n        than.updateInnerCollectionWithDynamicSizesAfterPreviosLoad(true);\r\n      } else {\r\n        than.updateInnerCollectionWithDynamicSizesAfterPreviosLoad(false);\r\n      }\r\n      than._scrollParent.addEventListener('scroll', than.getScrollHandler());\r\n\r\n    } else {\r\n      this._scrollParent.removeEventListener('scroll', this.getScrollHandler());\r\n      this.setOffsetViewPort(this.options.pageSize - this.options.scrolledToStartOffset);\r\n      this.updateInnerCollection();\r\n      this.scrollHelper.scrollTop(this._scrollParent, this.getSizeElement() * (this.options.pageSize + this.options.scrolledToStartOffset) - this._beforeLoaderHeight);\r\n      this._scrollParent.addEventListener('scroll', this.getScrollHandler());\r\n    }\r\n  }\r\n\r\n  setScroll(top: number) {\r\n    let than = this;\r\n    let currentTop = 0;\r\n    if (this._scrollParent) {\r\n      currentTop = this.scrollHelper.scrollTop(this._scrollParent);\r\n    }\r\n    if (currentTop >= top - 10) {\r\n      than._isInitialized = true;\r\n      return;\r\n    } else {\r\n      if (this._scrollParent) {\r\n        than.scrollHelper.scrollTop(this._scrollParent, top);\r\n      }\r\n      setTimeout(function () {\r\n        than.setScroll(top);\r\n      }, 100);\r\n    }\r\n  }\r\n\r\n  scrolling(item: NkRibbonItem): void {\r\n\r\n    if (this.options.isDynamicSize) {\r\n      let h = item.element.nativeElement.clientHeight;\r\n      if (item.clientHeight != h) {\r\n        item.clientHeight = h;\r\n        this.recalculateDynamicSizes();\r\n      }\r\n    }\r\n    this.onScrolling.emit(item);\r\n  }\r\n\r\n  setScrollTopByItem(top: number): void {\r\n    let scrollPosition = this.scrollHelper.scrollTop(this._scrollParent);\r\n    this.scrollHelper.scrollTop(this._scrollParent, scrollPosition + top);\r\n  }\r\n\r\n  recalculateDynamicSizes(): void {\r\n    let than = this;\r\n    let sizes = this.originalCollection.map(function (item) {\r\n      let size = item.clientHeight;\r\n      if (item.element) {\r\n        size = item.element.nativeElement.clientHeight;\r\n      }\r\n      else if (!size) {\r\n        size = than.getDefaultElementSize();\r\n      }\r\n      item.clientHeight = size;\r\n      return size;\r\n    });\r\n    let sum = 0;\r\n    this._sizesCumulative = sizes.map(function (size) {\r\n      let res = sum;\r\n      sum += size;\r\n      return res;\r\n    });\r\n    this._sizesCumulative.push(sum);\r\n  }\r\n} ","import { INkRibbonBaseSelector } from '../interfaces/iRibbon.baseSelector';\r\nimport { NkRibbonSortItem } from './nkRibbon.sortItem';\r\n\r\nexport class NkRibbonBaseSelector implements INkRibbonBaseSelector {\r\n    public view: string;\r\n    public offset: number;\r\n    public count: number;\r\n    public search: string;\r\n    public total: number;\r\n    public sorting: Array<NkRibbonSortItem>;\r\n    public requestedFields: Array<string>;\r\n    public exceptCollection: Array<string | number>;\r\n}\r\n","import {\r\n    EventEmitter\r\n} from '@angular/core';\r\nimport { NkRibbon } from './../nkRibbon.component';\r\nimport { NkRibbonItem } from './nkRibbon.item';\r\nimport { NkRibbonEvent } from './nkRibbon.event';\r\n\r\nexport class NkRibbonEvents {\r\n\r\n    public onBeforeLoadData: EventEmitter<NkRibbonEvent> = new EventEmitter();\r\n    public onAfterLoadData: EventEmitter<any> = new EventEmitter();\r\n    public onErrorLoadData: EventEmitter<any> = new EventEmitter();\r\n    public onChangeView: EventEmitter<NkRibbon> = new EventEmitter();\r\n    public onSearchApply: EventEmitter<NkRibbon> = new EventEmitter();\r\n    public onFilterApply: EventEmitter<NkRibbon> = new EventEmitter();\r\n    public onOrderApply: EventEmitter<NkRibbon> = new EventEmitter();\r\n    public onInitialize: EventEmitter<NkRibbon> = new EventEmitter();\r\n    public onAfterInitialize: EventEmitter<NkRibbon> = new EventEmitter();\r\n    public onScroll: EventEmitter<NkRibbonItem> = new EventEmitter();\r\n\r\n} \r\n","import { NkRibbonBaseSelector } from './nkRibbon.baseSelector';\r\nexport class NkRibbonParams extends NkRibbonBaseSelector {\r\n    public filter: any\r\n}\r\n","import { NkRibbonSortItem } from './nkRibbon.sortItem';\r\n\r\nexport class NkRibbonOrder {\r\n    \r\n    private _sorting: Array<NkRibbonSortItem>;\r\n    get sorting(): Array<NkRibbonSortItem> {\r\n        return this._sorting\r\n    }\r\n\r\n    constructor() {\r\n        this._sorting = new Array<NkRibbonSortItem>();\r\n    }\r\n}","import { NkRibbon } from './../nkRibbon.component';\r\nimport { Observable } from 'rxjs';\r\nimport { UrlTree } from '@angular/router';\r\nimport { IRibbonService } from '../interfaces/iRibbonService';\r\nimport { ObjectHelper } from './../../core/utils/objectHelper';\r\n\r\nexport class NkRibbonService implements IRibbonService {\r\n\r\n    private helper: ObjectHelper = new ObjectHelper();\r\n\r\n    public encodeFilterForRoute(filter: any): any {\r\n        let encodedFilter = encodeURIComponent(JSON.stringify(filter));\r\n        return encodedFilter;\r\n    };\r\n\r\n    public decodeFilterFromRoute(target: any, source: any): any {\r\n        var decodedFilter = JSON.parse(decodeURIComponent(source));\r\n        target = this.helper.merge(target || {}, decodedFilter);\r\n        return target;\r\n    };\r\n\r\n    public resetFilter(filter?: any, permanentFilter?: any): void {\r\n    };\r\n\r\n    public applyFilter(): void {\r\n    };\r\n\r\n    public cancel(): void {\r\n    };\r\n\r\n    public setFieldBuilderService(service: any): void {\r\n    };\r\n\r\n    public initializeFilter(sender: NkRibbon): Observable<any> {\r\n        return new Observable((observer: any) => { observer.next() });\r\n    };\r\n\r\n    public encodeParamsToRoute(sender: NkRibbon, urlTree: UrlTree): UrlTree {\r\n        return urlTree\r\n    };\r\n\r\n    public decodeParamsFromRoute(sender: NkRibbon, params: any): void {\r\n\r\n    };\r\n\r\n    public getFilterByView(viewName: string): any {\r\n        return null;\r\n    }\r\n}\r\n\r\n","import {\r\n  EventEmitter\r\n} from '@angular/core';\r\n\r\nexport class NkRibbonItemExpandModel {\r\n\r\n  private _name: string;\r\n  get name(): string {\r\n    return this._name;\r\n  }\r\n  set name(val: string) {\r\n    this._name = val;\r\n  }\r\n\r\n  public onRefresh: EventEmitter<any> = new EventEmitter();\r\n  \r\n  constructor(name:string ) {\r\n    this._name = name;\r\n  }\r\n\r\n  public destroy() {\r\n    this.onRefresh = new EventEmitter();\r\n  }\r\n} ","import {\r\n  ElementRef\r\n} from '@angular/core';\r\nimport type { NkRibbon } from './../nkRibbon.component';\r\nimport { NkRibbonItemExpandModel } from './nkRibbon.item.expand.model';\r\n\r\nexport class NkRibbonItem {\r\n\r\n  private _index: number;\r\n  get index(): number {\r\n    return this._index;\r\n  }\r\n\r\n  private _isDeleted: boolean = false;\r\n  get isDeleted(): boolean {\r\n    return this._isDeleted;\r\n  }\r\n\r\n  private _ribbon: NkRibbon;\r\n  get ribbon(): NkRibbon {\r\n    return this._ribbon;\r\n  }\r\n  set ribbon(value: NkRibbon) {\r\n    this._ribbon = value;\r\n  }\r\n\r\n  private _element: ElementRef;\r\n  get element(): ElementRef {\r\n    return this._element;\r\n  }\r\n  set element(value: ElementRef) {\r\n    this._element = value;\r\n  }\r\n\r\n  private _clientHeight: number = 0;\r\n  public get clientHeight(): number {\r\n    return this._clientHeight;\r\n  }\r\n  public set clientHeight(value: number) {\r\n    this._clientHeight = value;\r\n  }\r\n\r\n  private _expands: Array<NkRibbonItemExpandModel>;\r\n  get expands(): Array<NkRibbonItemExpandModel> {\r\n    return this._expands;\r\n  }\r\n\r\n  public correctingScrollTop = (delta: number) => { };\r\n\r\n  constructor(index: number) {\r\n    this._index = index;\r\n    this._expands = new Array<NkRibbonItemExpandModel>();\r\n  }\r\n\r\n  addExpand(name: string): NkRibbonItemExpandModel {\r\n    let expand = new NkRibbonItemExpandModel(name);\r\n    this._expands.push(expand)\r\n    return expand;\r\n  }\r\n\r\n  \r\n  public markAsDeleted(): void {\r\n    this._isDeleted = true;\r\n    setTimeout(() => {\r\n      this.ribbon.repeater.reinitialize();\r\n    });\r\n  }\r\n\r\n}\r\n","import { NkRibbonBaseSelectorContract } from '../contracts';\r\nimport { NkRibbon } from './../nkRibbon.component';\r\n\r\n//[Obsolete(\"Not used any more\", true)]\r\nexport class NkRibbonEvent {\r\n\r\n \r\n    private _ribbon: NkRibbon;\r\n    get ribbon(): NkRibbon {\r\n        return this._ribbon;\r\n    }\r\n\r\n    private _selector: NkRibbonBaseSelectorContract;\r\n    get selector(): NkRibbonBaseSelectorContract {\r\n        return this._selector;\r\n    }\r\n\r\n    constructor(_selector: NkRibbonBaseSelectorContract) {\r\n        this._selector = _selector;\r\n        //this._ribbon = _ribbon;\r\n    }\r\n\r\n    public init(_ribbon:NkRibbon ): NkRibbonEvent{\r\n        this._ribbon = _ribbon;\r\n        return this;\r\n    }\r\n\r\n}","\r\nexport class NkRibbonSortItem {\r\n\r\n    public field: string;\r\n    public  rule: string;\r\n    constructor(field:string, rule: string) {\r\n        this.field = field;\r\n        this.rule = rule;\r\n    }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NkRibbonFileService {\r\n\r\n  constructor() {\r\n\r\n  }\r\n\r\n  public download(data: any, url: string = null) {\r\n    return this.downloadFile(url || '/File/Download', data);\r\n  }\r\n\r\n  private downloadFile(httpPath: string, param: any): Observable<any> {\r\n\r\n    let observed = new Observable((observer: any) => {\r\n\r\n      param = JSON.stringify(param);\r\n      let xhr = new XMLHttpRequest();\r\n      xhr.open('POST', httpPath, true);\r\n      xhr.responseType = 'arraybuffer';\r\n      xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');\r\n      xhr.setRequestHeader('Content-length', param.length);\r\n      let than = this;\r\n      xhr.onload = function (e) {\r\n        if (xhr.status == 200) {\r\n          than.successDownload(xhr.response, xhr.status, than.parseHeaders(xhr.getAllResponseHeaders()), httpPath);\r\n        }\r\n        observer.next(xhr.response, xhr.status, than.parseHeaders(xhr.getAllResponseHeaders()));\r\n      };\r\n      xhr.send(param);\r\n    });\r\n\r\n    return observed;\r\n  }\r\n\r\n  private trim(value: any): any {\r\n    return this.isString(value) ? value.trim() : value;\r\n  };\r\n\r\n  private isString(value: any): boolean {\r\n    return typeof value === 'string';\r\n  }\r\n\r\n  private parseHeaders(headers: any): any {\r\n    var parsed = Object.create(null), key, val, i;\r\n    if (!headers) return parsed;\r\n    let than = this;\r\n    headers.split('\\n').forEach((line: any) => {\r\n      i = line.indexOf(':');\r\n      key = than.trim(line.substr(0, i)).toLowerCase();\r\n      val = than.trim(line.substr(i + 1));\r\n      if (key) {\r\n        parsed[key] = parsed[key] ? `${parsed[key]}, ${val}` : val;\r\n      }\r\n    });\r\n    return parsed;\r\n  }\r\n\r\n  private successDownload(data: any, status: any, headers: any, httpPath: string) {\r\n    let octetStreamMime = 'application/octet-stream';\r\n    let successfull = false;\r\n    // Get the filename from the x-filename header or default to \"download.bin\"\r\n    let filename = headers['x-filename'] || ((headers['content-disposition']) ? headers['content-disposition'].replace(/\"*/g, '').match(/filename=([^{}]+);*/g)[0].split('=')[1] : 'download.bin');\r\n    // Determine the content type from the header or default to \"application/octet-stream\"\r\n    let contentType = headers[\"content-type\"] || octetStreamMime;\r\n    var blob = new Blob([data], { type: contentType });\r\n    // Get the blob url creator\r\n    let urlCreator = window.URL;\r\n    if (urlCreator) {\r\n      // Try to use a download link\r\n      let link = document.createElement(\"a\");\r\n        if(link){\r\n        // Try to simulate a click\r\n        try {\r\n          // Prepare a blob URL\r\n          console.log('Trying download link method with simulated click ...');\r\n          blob = new Blob([data], { type: contentType });\r\n          if((window.navigator as any).msSaveOrOpenBlob) {\r\n            (window.navigator as any).msSaveOrOpenBlob(blob, filename);\r\n          } else {\r\n              let url = urlCreator.createObjectURL(blob);\r\n              link.setAttribute('href', url);\r\n              // Set the download attribute (Supported in Chrome 14+ / Firefox 20+)\r\n              link.setAttribute('download', filename);\r\n              // Simulate clicking the download link\r\n              let event = document.createEvent('MouseEvents');\r\n              event.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);\r\n              link.dispatchEvent(event);\r\n          }\r\n\r\n          console.log('Download link method with simulated click succeeded');\r\n          successfull = true;\r\n          link = null;\r\n\r\n        } catch (ex) {\r\n          console.log('Download link method with simulated click failed with the following exception:');\r\n          console.log(ex);\r\n        }\r\n      }\r\n    }\r\n\r\n    if (!successfull) {\r\n      // Fallback to window.open method\r\n      console.log('No methods worked for saving the arraybuffer, using last resort window.open');\r\n      window.open(httpPath, '_blank', '');\r\n    }\r\n\r\n  }\r\n\r\n}","import {\r\n  Directive,\r\n  Input,\r\n  ElementRef\r\n} from '@angular/core';\r\nimport type { NkRibbon } from './nkRibbon.component';\r\nimport { NkRibbonItem } from './models/nkRibbon.item';\r\n@Directive({\r\n  selector: '[nk-ribbon-item]',\r\n  exportAs: 'nkRibbonItem',\r\n\r\n})\r\nexport class NkRibbonItemElement {\r\n\r\n  private _last: boolean;\r\n  @Input('readyNgFor')\r\n  set readyNgFor(isReady: boolean) {\r\n    this._last = isReady;\r\n  }\r\n\r\n  private _ribbon: NkRibbon;\r\n  @Input('ribbon')\r\n  set ribbon(value: NkRibbon) {\r\n    this._ribbon = value;\r\n  }\r\n\r\n  private _item: NkRibbonItem;\r\n  @Input('data')\r\n  set data(value: NkRibbonItem) {\r\n    this._item = value;\r\n  }\r\n\r\n  constructor(\r\n    private elementRef: ElementRef) {\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._item.element = null;\r\n    this._item.ribbon = null;\r\n    this._item.correctingScrollTop = delta => { };\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this._ribbon.repeater.defaultElementSize = this.elementRef.nativeElement.clientHeight;\r\n    this._item.element = this.elementRef;\r\n    this._item.ribbon = this._ribbon;\r\n    let that = this;\r\n    if (this._ribbon.repeater.isInitialized) {\r\n      this._ribbon.repeater.scrolling(this._item);\r\n      this._item.correctingScrollTop.call(this._item.ribbon.repeater, this._item.element.nativeElement.clientHeight);\r\n        setTimeout(() =>\r\n        {\r\n            that._ribbon.events.onScroll.emit(that._item);\r\n        });\r\n    }\r\n    //if (this._last) {\r\n    //    that._ribbon.repeater.onRepeaterReady();\r\n    //}\r\n    if (this._last && !this._ribbon.repeater.isInitialized) {\r\n      setTimeout( ()=> {\r\n        that._ribbon.repeater.setScrollTopAfterFirstLoad();\r\n      });\r\n    }\r\n  }\r\n\r\n}\r\n","// что надо сделать:\r\n\r\n// что надо сделать(режим фиксированной высоты элемента):\r\n//\r\n\r\n// что надо сделать(режим динамической высоты элемента):\r\n\r\n\r\nimport {\r\n    Component,\r\n    Input,\r\n    ElementRef,\r\n    OnInit,\r\n    ContentChild,\r\n    TemplateRef,\r\n    ViewEncapsulation,\r\n    Output,\r\n    EventEmitter\r\n} from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport {\r\n    DefaultUrlSerializer,\r\n    UrlTree\r\n} from '@angular/router';\r\nimport {\r\n    HttpClient\r\n} from '@angular/common/http';\r\n\r\nimport { NkRibbonOptions } from './models/nkRibbon.options';\r\nimport { NkRibbonRepeater } from './nkRibbon.repeater';\r\nimport { NkRibbonBaseSelector } from './models/nkRibbon.baseSelector';\r\nimport { NkRibbonEvents } from './models/nkRibbon.events';\r\nimport { NkRibbonParams } from './models/nkRibbon.params';\r\nimport { NkRibbonOrder } from './models/nkRibbon.order';\r\nimport { NkRibbonService } from './models/nkRibbon.service';\r\nimport { NkRibbonFileService } from './nkRibbon.file.service';\r\nimport { IRibbonService } from './interfaces/iRibbonService';\r\nimport { IRibbonOrderService } from './interfaces/iRibbonOrderService';\r\nimport { IRibbonViewService } from './interfaces/iRibbonViewService';\r\nimport { NkRibbonItem } from './models/nkRibbon.item';\r\nimport { NkRibbonEvent } from './models/nkRibbon.event';\r\nimport { ObjectHelper } from '../core/utils/objectHelper';\r\nimport { NkRibbonSortItem } from './models/nkRibbon.sortItem';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport {\r\n    Subscription,\r\n    Observable,\r\n    defer,\r\n    throwError,\r\n    Subject\r\n} from 'rxjs';\r\nimport {\r\n    catchError,\r\n    map\r\n} from 'rxjs/operators';\r\nimport {\r\n    NkRibbonBaseSelectorContract,\r\n    NkRibbonResponseContract\r\n} from './contracts';\r\n@Component({\r\n    selector: 'nk-ribbon',\r\n    encapsulation: ViewEncapsulation.None,\r\n    templateUrl: './nkRibbon.html',\r\n    styleUrls: ['./nkRibbon.scss'],\r\n    host: {\r\n        '[class.nk-ribbon-pending]': 'busy',\r\n        '[class.nk-ribbon-disabled]': 'isDisabled',\r\n        //'[class.nk-ribbon-hidden]': '!isReady',\r\n        'class': 'nk-ribbon-control',\r\n    },\r\n    exportAs: 'nkRibbon'\r\n})\r\n\r\nexport class NkRibbon implements OnInit {\r\n\r\n    name = 'NkRibbon';\r\n\r\n    public busy: boolean;\r\n    private _isDataError: boolean;\r\n    private _isBeforeLoading: boolean;\r\n    private _lazyTimer: any;\r\n    private _watchSettings: any;\r\n    private objectHelper: ObjectHelper = new ObjectHelper();\r\n\r\n    private cancelRequestSubject: Subject<boolean> = new Subject<boolean>();\r\n\r\n    private subscriptions: Subscription[] = [];\r\n\r\n    @ContentChild('ribbonItemTemplate', { static: true }) itemRibbonTemplate: TemplateRef<any>;\r\n    @ContentChild('ribbonLoader', { static: true }) ribbonLoaderTemplate: TemplateRef<any>;\r\n    @ContentChild('ribbonNoData', { static: true }) ribbonNoDataTemplate: TemplateRef<any>;\r\n    @ContentChild('ribbonError', { static: true }) ribbonErrorTemplate: TemplateRef<any>;\r\n    @Input('nkRibbonRepeatContainerSelector') _repeatContainerSelector: string;\r\n    @Input('nkRibbonOffsetAfter') _offsetAfter: number = 0;\r\n    @Input('nkRibbonOffsetBefore') _offsetBefore: number = 0;\r\n    @Input('nkRibbonDataSource') _loadItems: (value: NkRibbonBaseSelectorContract) => Observable<NkRibbonResponseContract<any>>;\r\n    @Input('nkRibbonScrolledToEndOffset') _scrolledToEndOffset: number = 0;\r\n    @Input('nkRibbonScrolledToStartOffset') _scrolledToStartOffset: number = 0;\r\n    @Input('nkRibbonPageSize') _pageSize: number = 10;\r\n    @Input('nkRibbonDisableSupportBrowserLine') _isDisableSupportBrowserLine: boolean = false;\r\n    @Input('nkRibbonDynamicSize') _isDynamicSize: boolean = false;\r\n    @Input('nkRibbonPrimaryKey') _primaryKey: any;\r\n\r\n    //events\r\n    @Output('nkRibbonOnInit') onInit: EventEmitter<any> = new EventEmitter();\r\n\r\n    private _origin: HTMLElement;\r\n    get origin(): HTMLElement {\r\n        return this._origin;\r\n    }\r\n\r\n    private _silentRefresh: boolean;\r\n    get silentRefresh(): boolean {\r\n        return this._silentRefresh;\r\n    }\r\n\r\n    private _options: NkRibbonOptions;\r\n    get options(): NkRibbonOptions {\r\n        return this._options;\r\n    }\r\n\r\n    get items(): Array<any> {\r\n        return this._originalCollection;\r\n    }\r\n\r\n    private _ribbonRepeater: NkRibbonRepeater;\r\n    get repeater(): NkRibbonRepeater {\r\n        return this._ribbonRepeater;\r\n    }\r\n    set repeater(value: NkRibbonRepeater) {\r\n        this._ribbonRepeater = value;\r\n    }\r\n\r\n    get isReady(): boolean {\r\n        return this.repeater && this.repeater.isInitialized;\r\n    }\r\n\r\n    private _after: number = 0;\r\n    get after(): number {\r\n        return this._after;\r\n    }\r\n    set after(value: number) {\r\n        this._after = value;\r\n    }\r\n\r\n    private _before: number = 0;\r\n\r\n    private _originalCollection: Array<NkRibbonItem> = [];\r\n    public get originalCollection(): Array<NkRibbonItem> {\r\n        return this._originalCollection;\r\n    }\r\n\r\n    private _textSearch: string = '';\r\n    public get textSearch(): string {\r\n        return this._textSearch;\r\n    }\r\n\r\n    private _currentView: string = '';\r\n    public get currentView(): string {\r\n        return this._currentView;\r\n    }\r\n\r\n    public set textSearch(val: string) {\r\n        if (this._textSearch != val) {\r\n            this._watchSearch();\r\n        }\r\n        this._textSearch = val;\r\n    }\r\n\r\n    private _orderBy: NkRibbonOrder;\r\n    public get orderBy(): NkRibbonOrder {\r\n        return this._orderBy;\r\n    }\r\n\r\n    private _totalCount: number = 0;\r\n    public get totalCount(): number {\r\n        return this._totalCount;\r\n    }\r\n    public set totalCount(val: number) {\r\n        this._totalCount = val;\r\n    }\r\n\r\n    private _filter: any = {};\r\n    public get filter(): any {\r\n        return this._filter;\r\n    }\r\n    public set filter(val: any) {\r\n        this._filter = val;\r\n    }\r\n\r\n    private _ribbonService: IRibbonService = new NkRibbonService();\r\n    public get ribbonService(): IRibbonService {\r\n        return this._ribbonService;\r\n    }\r\n    public set ribbonService(val: IRibbonService) {\r\n        this._ribbonService = val;\r\n    }\r\n\r\n    private _orderService: IRibbonOrderService;\r\n    public get orderService(): IRibbonOrderService {\r\n        return this._orderService;\r\n    }\r\n    public set orderService(val: IRibbonOrderService) {\r\n        this._orderService = val;\r\n    }\r\n\r\n    private _viewService: IRibbonViewService;\r\n    public get viewService(): IRibbonViewService {\r\n        return this._viewService;\r\n    }\r\n    public set viewService(val: IRibbonViewService) {\r\n        this._viewService = val;\r\n    }\r\n\r\n    private _events: NkRibbonEvents = new NkRibbonEvents();\r\n    public get events(): NkRibbonEvents {\r\n        return this._events;\r\n    }\r\n\r\n    public get instance(): NkRibbon {\r\n        return this;\r\n    }\r\n\r\n    public isDisabled: boolean;\r\n\r\n    constructor(\r\n        elementRef: ElementRef,\r\n        private http: HttpClient,\r\n        private fileService: NkRibbonFileService,\r\n        private _location: Location) {\r\n        this._options = new NkRibbonOptions();\r\n        this._orderBy = new NkRibbonOrder();\r\n        this._origin = elementRef.nativeElement;\r\n        this.isDisabled = false;\r\n        this._watchSettings = {\r\n            _textSearchSetWatch: false,\r\n            _orderSetWatch: false\r\n        }\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this._options.repeatContainerSelector = this._repeatContainerSelector;\r\n        this._options.offsetAfter = this._offsetAfter;\r\n        this._options.offsetBefore = this._offsetBefore;\r\n        this._options.scrolledToEndOffset = this._scrolledToEndOffset;\r\n        this._options.scrolledToStartOffset = this._scrolledToStartOffset;\r\n        this._options.pageSize = this._pageSize;\r\n        this._options.isDynamicSize = this._isDynamicSize;\r\n        if (this._primaryKey) {\r\n            this._options.primaryKey = this._primaryKey;\r\n        }\r\n        this.events.onInitialize.emit(this);\r\n        this.applyRouteParams();\r\n        this.events.onAfterInitialize.emit(this);\r\n        let routeParams = this.getRouteParams();\r\n        this.subscriptions.push(\r\n            this._initializeFilter()\r\n                .subscribe(() => {\r\n                    if (!this._isDisableSupportBrowserLine) {\r\n                        this._applyFilterFromRoute(routeParams.filter);\r\n                    }\r\n                    this._initialize();\r\n                }));\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this._ribbonRepeater?.destroy();\r\n        this.subscriptions.forEach(s => s.unsubscribe());\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        this.onInit.emit(this);\r\n    }\r\n\r\n    public cancelRequest(): void {\r\n        this.resetBusyState();\r\n        this.cancelRequestSubject.next(false);\r\n    }\r\n\r\n    public exportToFile(): Observable<any> {\r\n        let observed = new Observable((observer: any) => {\r\n            if (this.options.exportToFilePath) {\r\n\r\n                let data = this.objectHelper.merge({}, this.filter);\r\n                if (this.textSearch) {\r\n                    data.search = this.textSearch;\r\n                }\r\n\r\n                if (this.orderBy.sorting.length > 0) {\r\n                    data.sorting = this.objectHelper.merge([], this.orderBy.sorting);\r\n                }\r\n\r\n                this.subscriptions.push(this._post(this.options.exportToFilePath, data).subscribe((response) => {\r\n                    this._downloadFile(response, observer, this.options.downloadFilePath);\r\n                }));\r\n\r\n            } else {\r\n                throw new Error('exportToExcelPath is not defined');\r\n            }\r\n        });\r\n        return observed;\r\n\r\n    }\r\n\r\n    public updateOriginalCollection(collection: Array<any>): void {\r\n        this._originalCollection = collection;\r\n        if (this._ribbonRepeater) {\r\n            this._ribbonRepeater.updateOriginalCollection(collection);\r\n        }\r\n    }\r\n    public resetBusyState(): void {\r\n        this.busy = false;\r\n    }\r\n\r\n    public firstPage(offset: number = -1): Observable<any> {\r\n        let than = this;\r\n        if (!this._loadItems) {\r\n            console.error('nkRibbonDataSource is not assign');\r\n            return null;\r\n        }\r\n        if (than.busy) {\r\n            return new Observable((observer: any) => { });\r\n        }\r\n        if (offset >= 0) {\r\n            than._after = offset;\r\n            than._totalCount = 0;\r\n        }\r\n        let before = than._after - 1;\r\n        let options = than.getRouteOptions().requestOptions;\r\n        let observed = new Observable((observer: any) => {\r\n            this.subscriptions.push(than.getFirstData(options).subscribe(\r\n                () => {\r\n                    if (before > 0) {\r\n                        than._before = options.offset;\r\n                    }\r\n                    than._after = options.offset + options.count;\r\n                    this.initializeRepeater();\r\n                    observer.next();\r\n                },\r\n                (error: any) => {\r\n                    observer.error('Data error');\r\n                }));\r\n        });\r\n\r\n        return observed;\r\n    }\r\n\r\n    public nextPage(): Observable<any> {\r\n\r\n        let that = this;\r\n        if (that.busy) {\r\n            return new Observable((observer: any) => { });\r\n        }\r\n        if (that._after >= that._totalCount || that.originalCollection.length == that._totalCount) {\r\n            return new Observable((observer: any) => { });\r\n        }\r\n        let callOptions = that.getRouteOptions().requestOptions;\r\n        let observed = new Observable((observer: any) => {\r\n            this.subscriptions.push(that.getNextData(callOptions).subscribe(\r\n                () => {\r\n                    that._ribbonRepeater.totalCount = that.totalCount;\r\n                    that._after = callOptions.offset + that._options.pageSize;\r\n                    observer.next();\r\n                },\r\n                (error: any) => {\r\n                    observer.error('Data error');\r\n                }));\r\n        });\r\n        return observed;\r\n    }\r\n\r\n    public previosPage(): Observable<any> {\r\n        let that = this;\r\n        if (that.busy) {\r\n            return new Observable((observer: any) => { });\r\n        }\r\n        if (that._before <= 0) {\r\n            return new Observable((observer: any) => { });\r\n        }\r\n        that._isBeforeLoading = true;\r\n        let callOptions = that.getRouteOptions('up').requestOptions;\r\n        callOptions.offset = callOptions.offset - that.options.pageSize;\r\n        let observed = new Observable((observer: any) => {\r\n            this.subscriptions.push(that.getPreviosData(callOptions).subscribe(\r\n                () => {\r\n                    that._before = callOptions.offset;\r\n                    that._ribbonRepeater.offsetData = callOptions.offset;\r\n                    that._ribbonRepeater.totalCount = that.totalCount;\r\n                    if (callOptions.offset < 0) {\r\n                        callOptions.offset = 0;\r\n                        that._before = 0;\r\n                        that._ribbonRepeater.offsetData = 0;\r\n                    }\r\n                    that._isBeforeLoading = false;\r\n                    observer.next();\r\n                },\r\n                (error: any) => {\r\n                    that._isBeforeLoading = false;\r\n                    observer.error('Data error');\r\n                }));\r\n        });\r\n        return observed;\r\n    }\r\n\r\n    public getFirstData(options: NkRibbonBaseSelectorContract): Observable<any> {\r\n        const that = this;\r\n        that._isDataError = false;\r\n        if (this.isDisabled) {\r\n            return defer(() => Promise.resolve());\r\n        }\r\n        if (options.offset > 0) {\r\n            options.offset = options.offset - options.count;\r\n            options.offset = (options.offset < 0) ? 0 : options.offset;\r\n            options.count += options.count;\r\n        }\r\n        that.originalCollection.length = 0;\r\n        let event = new NkRibbonEvent(options).init(that);\r\n        that.events.onBeforeLoadData.emit(event);\r\n        this.cancelRequest();\r\n        this.busy = true;\r\n        let observed = new Observable((observer: any) => {\r\n            this.subscriptions.push(\r\n                this.loadItems(options)\r\n                    .subscribe(\r\n                        (response: any) => {\r\n                            let items = that._mapResponse(response);\r\n                            that.totalCount = response.totalCount || items.length;\r\n                            items.forEach((item, index) => {\r\n                                let ribbonItem = new NkRibbonItem(options.offset + index);\r\n                                that.objectHelper.extend(ribbonItem, item);\r\n                                that.originalCollection.push(ribbonItem);\r\n                            });\r\n                            that.events.onAfterLoadData.emit(response);\r\n                            this.busy = false;\r\n                            observer.next();\r\n                        },\r\n                        (error: any) => {\r\n                            that._isDataError = true;\r\n                            this.busy = false;\r\n                            that.events.onErrorLoadData.emit(error);\r\n                            observer.error('Server error');\r\n                        })\r\n            );\r\n        });\r\n        return observed;\r\n    }\r\n\r\n    public getNextData(options: NkRibbonBaseSelector): Observable<any> {\r\n        let that = this;\r\n        if (this.isDisabled) {\r\n            return defer(() => Promise.resolve());\r\n        }\r\n        that._isDataError = false;\r\n        let event = new NkRibbonEvent(options).init(that);\r\n        this.busy = true;\r\n        that.events.onBeforeLoadData.emit(event);\r\n        let observed = new Observable((observer: any) => {\r\n            this.subscriptions.push(this.loadItems(options).subscribe(\r\n                (response) => {\r\n                    let items = that._mapResponse(response);\r\n                    that.totalCount = response.totalCount || items.length;\r\n                    items.forEach((item, index) => {\r\n                        let ribbonItem = new NkRibbonItem(that._after + index);\r\n                        that.objectHelper.extend(ribbonItem, item);\r\n                        that.originalCollection.push(ribbonItem);\r\n                    });\r\n                    this.busy = false;\r\n                    that.events.onAfterLoadData.emit(response);\r\n                    observer.next();\r\n                },\r\n                (error: any) => {\r\n                    console.error('An error occurred', error);\r\n                    this.busy = false;\r\n                    that.events.onErrorLoadData.emit(error);\r\n                    that._isDataError = true;\r\n                    observer.error('Server error');\r\n                }));\r\n        });\r\n        return observed;\r\n    }\r\n\r\n    public getPreviosData(options: NkRibbonBaseSelector): Observable<any> {\r\n        let that = this;\r\n        if (this.isDisabled) {\r\n            return defer(() => Promise.resolve());\r\n        }\r\n        that._isDataError = false;\r\n        if (options.offset < 0) {\r\n            options.count = that.options.pageSize + options.offset;\r\n            options.offset = 0;\r\n        }\r\n        let event = new NkRibbonEvent(options).init(that);\r\n        this.busy = true;\r\n        that.events.onBeforeLoadData.emit(event);\r\n        let observed = new Observable((observer: any) => {\r\n            this.subscriptions.push(that.loadItems(options).subscribe(\r\n                (response) => {\r\n                    let items = that._mapResponse(response);\r\n                    that.totalCount = response.totalCount || items.length;\r\n                    items.reverse().forEach((item, index) => {\r\n                        let itemNew = new NkRibbonItem(options.offset + that.options.pageSize - index - 1);\r\n                        that.originalCollection.unshift(itemNew);\r\n                        that.objectHelper.extend(itemNew, item);\r\n                    });\r\n                    this.busy = false;\r\n                    that.events.onAfterLoadData.emit(response);\r\n                    observer.next();\r\n                },\r\n                (error: any) => {\r\n                    console.error('An error occurred', error);\r\n                    that._isDataError = true;\r\n                    this.busy = false;\r\n                    that.events.onErrorLoadData.emit(error);\r\n                    observer.error('Server error');\r\n                }));\r\n        });\r\n        return observed;\r\n    }\r\n\r\n    public getRouteOptions(direct: string = null): any {\r\n        let _offset = this._after;\r\n        if (direct == 'up') {\r\n            _offset = this._before;\r\n        }\r\n        if (direct == 'refresh') {\r\n            _offset = this._calculateOffsetForRoute();\r\n        }\r\n        let params = new NkRibbonBaseSelector();\r\n        if (this.currentView) {\r\n            params.view = this.currentView;\r\n        }\r\n        params.offset = _offset;\r\n        params.count = this._options.pageSize;\r\n        params.search = this._textSearch;\r\n        params.sorting = this._orderBy.sorting;\r\n        params.total = this._totalCount;\r\n        let routeOptions = JSON.parse(JSON.stringify(params));\r\n        routeOptions.filter = this.filter;\r\n        var requestOptions = this.objectHelper.extend(params, this.filter);\r\n        return { requestOptions: requestOptions, routeOptions: routeOptions }\r\n    }\r\n\r\n    public setRouteParams(item: NkRibbonItem): void {\r\n        let offset = this._calculateOffsetForRoute();\r\n        let params = new NkRibbonParams();\r\n        if (this.currentView) {\r\n            params.view = this.currentView;\r\n        }\r\n        params.offset = offset;\r\n        params.search = this.textSearch || '';\r\n        params.total = this.totalCount;\r\n        params.sorting = this.orderBy.sorting;\r\n        params.filter = this.filter;\r\n        this._putRouteParams(params);\r\n    }\r\n\r\n    public applyRouteParams(): void {\r\n        let routeParams = this.getRouteParams();\r\n        if (!this._isDisableSupportBrowserLine) {\r\n            if (routeParams.offset) {\r\n                this._after = parseInt(routeParams.offset);\r\n                let total = parseInt(routeParams.total);\r\n                if (total - this._after < this.options.pageSize &&\r\n                    total - this.options.pageSize >= 0) {\r\n                    this._after = total - this.options.pageSize;\r\n                }\r\n                this._before = this._after;\r\n            }\r\n\r\n            if (routeParams.search && routeParams.search != 'null') {\r\n                this._textSearch = routeParams.search;\r\n            }\r\n\r\n        }\r\n        this._applyRouteForViewService(routeParams);\r\n        if (!this._isDisableSupportBrowserLine) {\r\n            if (routeParams.sorting) {\r\n                let orderState = JSON.parse(decodeURIComponent(routeParams.sorting));\r\n                Array.prototype.push.apply(this.orderBy.sorting, orderState);\r\n            }\r\n        }\r\n        this._initializeSort().subscribe();\r\n\r\n        if (this.ribbonService) {\r\n            this.ribbonService.decodeParamsFromRoute(this, routeParams);\r\n        }\r\n    }\r\n\r\n    public getRouteParams(): any {\r\n        let path = this._location.path();\r\n        let routeParams = new DefaultUrlSerializer().parse(path).queryParams;\r\n        return routeParams;\r\n    }\r\n\r\n    public applyFilter(isPutRouteParams: boolean = true): Observable<any> {\r\n        let than = this;\r\n        let observed = new Observable((observer: any) => {\r\n            let params = than.getRouteOptions().routeOptions;\r\n            params.offset = 0;\r\n            params.count = than.options.pageSize;\r\n            than._after = 0;\r\n            than._before = 0;\r\n            this.subscriptions.push(than.firstPage().subscribe(() => {\r\n                if (isPutRouteParams) {\r\n                    than._putRouteParams(params);\r\n                }\r\n                than._ribbonRepeater.refresh(this.totalCount, 0, false);\r\n                than.events.onFilterApply.emit(than);\r\n                observer.next();\r\n            }));\r\n        });\r\n        return observed;\r\n    }\r\n\r\n    public resetFilter(): void {\r\n        if (this.ribbonService) {\r\n            this.filter = {};\r\n            this.textSearch = null;\r\n            this.ribbonService.resetFilter();\r\n            this.applyFilter(false).subscribe();\r\n        }\r\n    }\r\n\r\n    public resetSorting(): void {\r\n        this.orderBy.sorting.length = 0;\r\n    }\r\n\r\n    public deleteFilter(): void {\r\n        this.filter = null;\r\n    }\r\n\r\n    public createSortItem(field: string, rule: string): NkRibbonSortItem {\r\n        return new NkRibbonSortItem(field, rule);\r\n    }\r\n\r\n    public applySort(sortItems: Array<NkRibbonSortItem>): void {\r\n        this.orderBy.sorting.length = 0;\r\n        Array.prototype.push.apply(this.orderBy.sorting, sortItems);\r\n        var than = this;\r\n        var params = than.getRouteOptions().routeOptions;\r\n        params.offset = 0;\r\n        params.count = than.options.pageSize;\r\n        than._after = 0;\r\n        than._before = 0;\r\n        this.subscriptions.push(than.firstPage().subscribe(() => {\r\n            than._putRouteParams(params);\r\n            than._ribbonRepeater.refresh(this.totalCount, 0, false);\r\n            than.events.onFilterApply.emit(than);\r\n        }));\r\n    }\r\n\r\n    public setSort(sortItems: Array<NkRibbonSortItem>): void {\r\n        this.orderBy.sorting.length = 0;\r\n        Array.prototype.push.apply(this.orderBy.sorting, sortItems);\r\n    }\r\n\r\n    public refresh(silentRefresh = false): void {\r\n        this.subscriptions.push(this.refreshAsync(silentRefresh).subscribe());\r\n    }\r\n\r\n    public refreshAsync(silentRefresh = false): Observable<void> {\r\n        this._after = 0;\r\n        this._before = 0;\r\n        this._totalCount = 0;\r\n        this.originalCollection.length = 0;\r\n        this._silentRefresh = silentRefresh;\r\n        return this.firstPage()\r\n            .pipe(map(() => {\r\n                var params = this.getRouteOptions().routeOptions;\r\n                params.offset = 0;\r\n                this._putRouteParams(params);\r\n                this._ribbonRepeater.refresh(this.totalCount, 0, false);\r\n                this._silentRefresh = false;\r\n            }));\r\n    }\r\n\r\n    public refreshData(silentRefresh = false): void {\r\n        this._silentRefresh = silentRefresh;\r\n        this.subscriptions.push(this.refreshDataAsync().subscribe());\r\n    }\r\n\r\n    public refreshDataAsync(silentRefresh = false): Observable<any> {\r\n        this._silentRefresh = silentRefresh;\r\n        const callOptions = this.getRouteOptions('refresh').requestOptions;\r\n        return this._getDataForRefresh(callOptions);\r\n    }\r\n\r\n    public toggleView(viewName: string): Observable<any> {\r\n\r\n        let observed = new Observable((observer: any) => {\r\n            this.deleteFilter();\r\n            this.orderBy.sorting.length = 0;\r\n            var newView = this.viewService.getViews().filter((item) => { return item.viewName == viewName })[0];\r\n            if (newView) {\r\n                this._currentView = viewName;\r\n                this.filter = this.ribbonService.getFilterByView(viewName);\r\n                this._loadItems = newView.viewDataResource;\r\n                this._clearRouteParams();\r\n                this.orderService.initializeSort(this).subscribe();\r\n                if (this.filter) {\r\n                    this.refresh();\r\n                    observer.next();\r\n                } else {\r\n                    this.subscriptions.push(this.ribbonService.initializeFilter(this).subscribe(() => {\r\n                        this.refresh();\r\n                        observer.next();\r\n                    }));\r\n                }\r\n            } else {\r\n                throw Error('View not find !')\r\n            }\r\n        });\r\n        return observed;\r\n    }\r\n\r\n    //    _setFilterByView: function(view) {\r\n    //    var control = this;\r\n    //    control.loadItems = view.viewDataResource\r\n    //    control.filterService = view.filterService;\r\n    //    control.deleteFilter();\r\n    //    control.viewService.setFilterByView(view.name, control).then(function () {\r\n    //        control.viewControl.onChangeView(view.name, control);\r\n    //        control.after = 0;\r\n    //        control.before = 0;\r\n    //        control.totalCount = 0;\r\n    //        control.textSearch = null;\r\n    //        control.items = [];\r\n    //        if (control.orderService && control.viewService) {\r\n    //            control.orderService.changeOrderByView(view.name);\r\n    //        } else {\r\n    //            control.firstPage();\r\n    //        }\r\n    //    });\r\n    //},\r\n\r\n    public isVisibleAfterProgressBar(): boolean {\r\n        if (this.busy && !this._isBeforeLoading && !this._silentRefresh) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    public isVisibleBeforeProgressBar(): boolean {\r\n        if (this.busy && this._isBeforeLoading && !this._silentRefresh) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    public isVisibleNoresult(): boolean {\r\n        if (!this.busy && this.originalCollection.length === 0 && !this._isDataError) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    public isVisibleErrorResult(): boolean {\r\n        if (!this.busy && this._isDataError) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    public initializeRepeater(): void {\r\n        if (!this._ribbonRepeater) {\r\n            this._ribbonRepeater = new NkRibbonRepeater(this.origin.firstChild as HTMLElement, this.options);\r\n            this._ribbonRepeater.buildRepeatContainer();\r\n            let offset = 0;\r\n            if (!this._isDisableSupportBrowserLine) {\r\n                offset = this.getRouteParams().offset || 0;\r\n            }\r\n            this._ribbonRepeater.initialize(this.originalCollection, offset, this.totalCount);\r\n            let than = this;\r\n            this._ribbonRepeater.scrolledToEnd = (): Observable<any> => new Observable((observer: any) => {\r\n                this.subscriptions.push(this.nextPage().subscribe(() => { observer.next() }));\r\n            });\r\n            this._ribbonRepeater.scrolledToStart = (): Observable<any> => new Observable((observer: any) => {\r\n                this.subscriptions.push(this.previosPage().subscribe(() => { observer.next() }));\r\n            });\r\n            this.subscriptions.push(this._ribbonRepeater.onScrolling.subscribe((item: NkRibbonItem) => {\r\n                than.setRouteParams(item);\r\n            }));\r\n        }\r\n    }\r\n\r\n    private loadItems(value: NkRibbonBaseSelectorContract): Observable<NkRibbonResponseContract<any>> {\r\n        this.cancelRequestSubject.next(true);\r\n        return this._loadItems(value)\r\n            .pipe(\r\n                map(t => t),\r\n                takeUntil(this.cancelRequestSubject)\r\n            );\r\n    }\r\n\r\n    private _encodeSortingForRoute(sorting: any = null): string {\r\n        if (!sorting) {\r\n            return encodeURIComponent(JSON.stringify(this.orderBy.sorting));\r\n        } else {\r\n            return encodeURIComponent(JSON.stringify(sorting));\r\n        }\r\n    }\r\n\r\n    private _calculateOffsetForRoute(): number {\r\n        let index: number = this._indexFirstVisibleItem();\r\n        let offset = Math.floor(index / this.options.pageSize) * this.options.pageSize;\r\n        return offset;\r\n    }\r\n\r\n    private _indexFirstVisibleItem(): number {\r\n        let than = this;\r\n        let firstVisibleItem = this.repeater.$vsCollection.filter((item) => {\r\n            if (item.element) {\r\n                let top = item.element.nativeElement.getBoundingClientRect().top;\r\n                return top >= than._origin.offsetTop;\r\n            } else {\r\n                return false;\r\n            }\r\n        })[0] || new NkRibbonItem(0);\r\n        return firstVisibleItem.index || 0;\r\n    }\r\n\r\n    private _initialize(): void {\r\n        if (this.items.length == 0) {\r\n            this.subscriptions.push(\r\n                this.firstPage()\r\n                    .subscribe()\r\n            );\r\n        }\r\n        else {\r\n            this.initializeRepeater();\r\n        }\r\n    }\r\n\r\n    private _initializeFilter(): Observable<any> {\r\n\r\n        var observed = new Observable((observer: any) => {\r\n            if (this.ribbonService != null) {\r\n                this.subscriptions.push(this.ribbonService.initializeFilter(this).subscribe((value) => {\r\n                    this.filter = this.objectHelper.merge(this.filter || {}, value);\r\n                    observer.next();\r\n                }));\r\n            } else {\r\n                observer.next();\r\n            }\r\n        });\r\n        return observed;\r\n    }\r\n\r\n    private _initializeSort(): Observable<any> {\r\n\r\n        let observed = new Observable((observer: any) => {\r\n            if (this.orderService != null) {\r\n                this.subscriptions.push(this.orderService.initializeSort(this).subscribe((orderItems: Array<NkRibbonSortItem>) => {\r\n                    Array.prototype.push.apply(this.orderBy.sorting, orderItems);\r\n                    observer.next();\r\n                }));\r\n            } else {\r\n                observer.next();\r\n            }\r\n        });\r\n        return observed;\r\n    }\r\n\r\n    private _applyRouteForViewService(routeParams: NkRibbonBaseSelectorContract): void {\r\n        if (this.viewService) {\r\n            this._currentView = routeParams.view || this.viewService.getCurrentView();\r\n            var currentView = this.viewService.getViews().filter((item) => { return item.viewName == this._currentView })[0];\r\n            this._loadItems = currentView.viewDataResource;\r\n            this.deleteFilter();\r\n            this.events.onChangeView.emit(this);\r\n        }\r\n    }\r\n\r\n    private _getDataForRefresh(options: NkRibbonBaseSelectorContract) {\r\n        //    var deferred = $q.defer();\r\n        var that = this;\r\n        //    if (that.isDisabled) {\r\n        //        console.log('Ribbon ' + that.id + ' is disabled');\r\n        //        deferred.reject();\r\n        //        return deferred.promise;\r\n        //    }\r\n        if (options.offset >= 0 && this._after != this._before) {\r\n            options.offset = this._before;\r\n            options.count = this._after - this._before;\r\n        }\r\n        this._isDataError = false;\r\n        let event = new NkRibbonEvent(options).init(that);\r\n        this.events.onBeforeLoadData.emit(event);\r\n        this.cancelRequest();\r\n        let observed = new Observable((observer: any) => {\r\n            this.subscriptions.push(that.loadItems(options).subscribe(\r\n                (response) => {\r\n                    let items = that._mapResponse(response);\r\n                    that.totalCount = response.totalCount || items.length;\r\n                    items.forEach((item, index) => {\r\n                        let originalItem = that.originalCollection.filter((it) => {\r\n                            return it[that.options.primaryKey] == item[that.options.primaryKey]\r\n                        })[0];\r\n                        if (originalItem) {\r\n                            that.objectHelper.extend(originalItem, item);\r\n                            that._refreshDataForExpandContent(originalItem);\r\n                        } else {\r\n                            let itemNew = new NkRibbonItem(options.offset + that.options.pageSize - index - 1);\r\n                            that.originalCollection.unshift(itemNew);\r\n                            that.objectHelper.extend(itemNew, item);\r\n                        }\r\n                    });\r\n                    this._deleteIsNotExistItemsByResponse(response.items);\r\n                    this._ribbonRepeater.updateInnerCollection();\r\n                    that.events.onAfterLoadData.emit(that);\r\n                    this._silentRefresh = false;\r\n                    observer.next();\r\n                },\r\n                (error: any) => {\r\n                    that._isDataError = true;\r\n                    this._silentRefresh = false;\r\n                    that.events.onErrorLoadData.emit(that);\r\n                    observer.error('Server error');\r\n                }));\r\n        });\r\n        return observed;\r\n    }\r\n\r\n    private _applyFilterFromRoute(filter: any): void {\r\n        if (filter && filter !== 'undefined' && this.ribbonService) {\r\n            this.filter = this.ribbonService.decodeFilterFromRoute(this.filter, filter);\r\n        }\r\n    }\r\n\r\n    private _putRouteParams(params: NkRibbonParams): void {\r\n        if (this._isDisableSupportBrowserLine) {\r\n            return;\r\n        }\r\n        let filter = this._encodeFilterForRoute(params.filter);\r\n        let sorting = this._encodeSortingForRoute(params.sorting);\r\n        let routeParams = this.getRouteParams();\r\n        let filterFromRoute = routeParams.filter;\r\n        let sortingFromRoute = routeParams.sorting;\r\n        let routeString = ((routeParams.offset || '') +\r\n            (routeParams.search || '') +\r\n            (routeParams.total || ''));\r\n        let paramsString = params.offset.toString() +\r\n            params.search +\r\n            params.total.toString();\r\n        if (routeString.toLocaleLowerCase() != paramsString.toLocaleLowerCase() || ((filter || 'null') != filterFromRoute) || ((sorting || 'null') != sortingFromRoute)) {\r\n            this._updateRoute(params);\r\n        }\r\n    }\r\n\r\n    private _updateRoute(params: NkRibbonParams): void {\r\n        if (params.offset < 0) {\r\n            return;\r\n        }\r\n        let routeOptions = JSON.parse(JSON.stringify(params));\r\n        if (typeof params.filter == 'object') {\r\n            routeOptions.filter = this._encodeFilterForRoute(params.filter);\r\n        }\r\n        routeOptions.sorting = this._encodeSortingForRoute();\r\n        if (this.currentView) {\r\n            params.view = this.currentView;\r\n        }\r\n        this._updateParams(routeOptions);\r\n    }\r\n\r\n    private _updateParams(newParams: any): void {\r\n        let path = this._location.path();\r\n        let urlSerializer = new DefaultUrlSerializer();\r\n        let urlParsed: UrlTree = urlSerializer.parse(path);\r\n        this.objectHelper.extend(urlParsed.queryParams, newParams);\r\n        if (this.ribbonService) {\r\n            urlParsed = this.ribbonService.encodeParamsToRoute(this, urlParsed);\r\n        }\r\n        let state = urlSerializer.serialize(urlParsed);\r\n        this._location.replaceState(state);\r\n\r\n    }\r\n\r\n    private _clearRouteParams(): void {\r\n        let path = this._location.path();\r\n        let urlSerializer = new DefaultUrlSerializer();\r\n        let urlParsed: UrlTree = urlSerializer.parse(path);\r\n        urlParsed.queryParams = {};\r\n        let state = urlSerializer.serialize(urlParsed);\r\n        this._location.replaceState(state);\r\n\r\n    }\r\n\r\n    private _encodeFilterForRoute(filter: any): any {\r\n        if (this.ribbonService) {\r\n            return this.ribbonService.encodeFilterForRoute(filter);\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private _deleteIsNotExistItemsByResponse(responseItems: Array<any>) {\r\n        let that = this;\r\n        let itemsForDelete = [];\r\n        this.originalCollection.forEach((it: any) => {\r\n            let result = responseItems.filter((rt: any) => {\r\n                return rt[that._primaryKey] == it[that._primaryKey];\r\n            })[0];\r\n            if (!result) {\r\n                itemsForDelete.push(it);\r\n            }\r\n        });\r\n        itemsForDelete.forEach((it: any) => {\r\n            let i = that.originalCollection.indexOf(it);\r\n            if (i != -1) {\r\n                that.originalCollection.splice(i, 1);\r\n            }\r\n        });\r\n\r\n    }\r\n\r\n    private _refreshDataForExpandContent(item: NkRibbonItem): void {\r\n        item.expands.forEach((expand) => {\r\n            expand.onRefresh.emit(item);\r\n        });\r\n    }\r\n\r\n    private _watchSearch(): void {\r\n        let isReady = this.isReady;\r\n        if (isReady) {\r\n            let that = this;\r\n            clearTimeout(that._lazyTimer);\r\n            that._lazyTimer = null;\r\n            that._lazyTimer = setTimeout(() => {\r\n                if (that._textSearch != null\r\n                    //  && that._watchSettings._textSearchSetWatch\r\n                ) {\r\n                    that._after = 0;\r\n                    that._before = 0;\r\n                    let activeElement = document.activeElement as HTMLElement;\r\n                    activeElement.blur();\r\n                    this.subscriptions.push(that.firstPage().subscribe(\r\n                        () => {\r\n                            var params = that.getRouteOptions().routeOptions;\r\n                            params.search = that._textSearch;\r\n                            params.offset = 0;\r\n                            that._putRouteParams(params);\r\n                            that._ribbonRepeater.refresh(that.totalCount);\r\n                            activeElement.focus();\r\n                        }));\r\n                    that.events.onSearchApply.emit(that);\r\n                }\r\n                that._watchSettings._textSearchSetWatch = true;\r\n            }, 500);\r\n        }\r\n    }\r\n\r\n    private _post: (url: string, dataContract: any) => Observable<any> = (url: string, dataContract: any) => {\r\n        let data = new Observable((observer: any) => {\r\n            this.subscriptions.push(this.http.post(url, dataContract)\r\n                .pipe(catchError((error) => throwError(error)))\r\n                .subscribe(\r\n                    response => observer.next(response),\r\n                    readHttpError => observer.error(readHttpError)));\r\n        });\r\n        return data;\r\n    }\r\n\r\n    private _downloadFile(response: any, observer: any, path: string): void {\r\n        var data = {\r\n            nameFile: response.value.tempNameFile,\r\n            nameDownloadFile: response.value.nameDownloadFile,\r\n            contentType: response.value.contentType\r\n        };\r\n\r\n        this.subscriptions.push(this.fileService.download(data, path).subscribe(() => {\r\n            observer.next();\r\n        }));\r\n    };\r\n\r\n    private _mapResponse(response: any): Array<any> {\r\n        let items = 'items' in response ? (response.items || []) : null;\r\n        return (items || response.value || response);\r\n    }\r\n\r\n}\r\n","<div class=\"nk-repeater-container\">\r\n  <div class=\"nk-repeat-before-content\">\r\n    <div class=\"js-ribbon-error-result\"\r\n         [hidden]=\"!instance.isVisibleErrorResult()\">\r\n      <div *ngIf=!ribbonErrorTemplate>Data Error</div>\r\n      <ng-template [ngTemplateOutlet]=\"ribbonErrorTemplate\"\r\n                   [ngTemplateOutletContext]=\"{instance: instance}\"></ng-template>\r\n    </div>\r\n    <div class=\"js-ribbon-before-progress-bar\"\r\n         [hidden]=\"!instance.isVisibleBeforeProgressBar()\">\r\n      <div *ngIf=!ribbonLoaderTemplate>Loading data ...</div>\r\n      <ng-template [ngTemplateOutlet]=\"ribbonLoaderTemplate\"\r\n                   [ngTemplateOutletContext]=\"{instance: instance}\"></ng-template>\r\n    </div>\r\n  </div>\r\n  <div nk-ribbon-item\r\n       class=\"nk-ribbon-item\"\r\n       [class.deleted]=\"item.isDeleted\"\r\n       [ngClass]=\"!isReady ? 'nk-ribbon-hidden' : ''\"\r\n       [ribbon]=\"instance\"\r\n       *ngFor=\"let item of instance.repeater?.$vsCollection; let last = last\"\r\n       [readyNgFor]=\"last\"\r\n       [data]=\"item\">\r\n    <ng-template [ngTemplateOutlet]=\"itemRibbonTemplate\"\r\n                 [ngTemplateOutletContext]=\"{item: item}\"></ng-template>\r\n  </div>\r\n  <div class=\"nk-repeat-after-content\">\r\n    <div class=\"js-ribbon-after-progress-bar\"\r\n         [hidden]=\"!instance.isVisibleAfterProgressBar()\">\r\n      <div *ngIf=!ribbonLoaderTemplate>Loading data ...</div>\r\n      <ng-template [ngTemplateOutlet]=\"ribbonLoaderTemplate\"\r\n                   [ngTemplateOutletContext]=\"{instance: instance}\"></ng-template>\r\n    </div>\r\n    <div class=\"js-ribbon-noresult\"\r\n         [hidden]=\"!instance.isVisibleNoresult()\">\r\n      <div *ngIf=!ribbonNoDataTemplate>No Data</div>\r\n      <ng-template [ngTemplateOutlet]=\"ribbonNoDataTemplate\"\r\n                   [ngTemplateOutletContext]=\"{instance: instance}\"></ng-template>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import {\r\n    Directive,\r\n    Input,\r\n    Output,\r\n    ViewChild,\r\n    ViewContainerRef,\r\n    TemplateRef,\r\n    OnDestroy,\r\n    Renderer2,\r\n    OnChanges,\r\n    SimpleChanges,\r\n    EventEmitter\r\n} from '@angular/core';\r\nimport { NkOptionsPosition } from '../core/position/nkOptionsPosition';\r\nimport { NkPositionBuilder } from '../core/position/nkPositionBuilder';\r\n\r\n@Directive({\r\n    selector: '[nk-select-menu]',\r\n    exportAs: 'nkSelectMenu',\r\n\r\n})\r\nexport class NkSelectMenuDirective implements OnDestroy, OnChanges {\r\n\r\n    @Input('open') open: boolean = false;\r\n    @Input('menuAnimateDone') menuAnimateDone: boolean = false;\r\n    @Input('appendTo') appendTo: string = null;\r\n    @Input('positionOptions') positionOptions: NkOptionsPosition;\r\n    @Input('themeClass') themeClass: string = null;\r\n    @Input('offsetY') offsetY: number = 0;\r\n    @Input('offsetX') offsetX: number = 0;\r\n    @Input('controlElement') controlElement: Element;\r\n    @Input('self') instance: any;\r\n    @Input('width') width: string;\r\n    @Output() backdropClick = new EventEmitter<void>();\r\n\r\n    private _viewContainerRef: ViewContainerRef;\r\n    private _templateRef: TemplateRef<any>;\r\n\r\n    private _positionBuilder: NkPositionBuilder;\r\n    getPositionBuilder(): NkPositionBuilder {\r\n        if (!this._positionBuilder) { this._createPositionBuilder(); }\r\n        return this._positionBuilder;\r\n    }\r\n\r\n    private _hostDomElement: HTMLElement;\r\n    getHostDomElement(): HTMLElement {\r\n        if (!this._hostDomElement) { this._createHostDomElement(); }\r\n        return this._hostDomElement;\r\n    }\r\n\r\n    private _backDropClick: any;\r\n    getBackDropClick(): any {\r\n        if (!this._backDropClick) {\r\n            this._backDropClick = (event: any) => {\r\n                const control = event.target.closest('.nk-select-control');\r\n                if (this.controlElement != control) {\r\n                    this.backdropClick.emit();\r\n                }\r\n            };\r\n        }\r\n        return this._backDropClick;\r\n    }\r\n\r\n  \r\n    constructor(private _renderer: Renderer2,\r\n        templateRef: TemplateRef<any>,\r\n        viewContainerRef: ViewContainerRef) {\r\n        this._templateRef = templateRef;\r\n        this._viewContainerRef = viewContainerRef;\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this._destroyMenu();\r\n    }\r\n\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes['open']) {\r\n            this.open ? this._openMenu() : this._closeMenu();\r\n        }\r\n        if (changes['menuAnimateDone']) {\r\n            if (!this.open && this.menuAnimateDone) {\r\n                this._destroyMenu();\r\n            }\r\n        }\r\n    }\r\n\r\n    private _openMenu(): void {\r\n        let viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef);\r\n        viewRef.detectChanges();\r\n\r\n        // The method `createEmbeddedView` will add the view as a child of the viewContainer.\r\n        // But for the DomPortalHost the view can be added everywhere in the DOM (e.g Overlay Container)\r\n        // To move the view to the specified host element. We just re-append the existing root nodes.\r\n        const element = this.getHostDomElement();\r\n        viewRef.rootNodes.forEach(rootNode => element.appendChild(rootNode));\r\n        this._setElementPosition(element);\r\n        document.body.addEventListener('click', this.getBackDropClick());\r\n        document.body.addEventListener('touchstart', this.getBackDropClick());\t\r\n    }\r\n\r\n    private _closeMenu(): void {\r\n        document.body.removeEventListener('click', this.getBackDropClick());\r\n\t\tdocument.body.removeEventListener('touchstart', this.getBackDropClick());\t\r\n        this._viewContainerRef.clear();\r\n    }\r\n\r\n    //private _createMenuElement(): HTMLElement {\r\n    //    let menu = document.createElement('div');\r\n\r\n    // menu.id = `cdk-overlay-${nextUniqueId++}`;\r\n    // menu.classList.add('cdk-overlay-pane');\r\n    // this._overlayContainer.getContainerElement().appendChild(menu);\r\n\r\n    //    return menu;\r\n    //}\r\n\r\n    private _createHostDomElement(): void {\r\n        let container = document.createElement('div');\r\n        container.classList.add('nk-host-container', 'nk-menu-container');\r\n        if (this.themeClass) {\r\n            container.classList.add(this.themeClass);\r\n        }\r\n        if (this.appendTo == null) {\r\n            document.body.appendChild(container);\r\n        }\r\n        else if (this.appendTo == 'self') {\r\n            const menuHost = this.controlElement.querySelector('.nk-menu-panel-host');\r\n            menuHost.appendChild(container);\r\n        }\r\n        else {\r\n            var appendToElement = document.querySelector(this.appendTo);\r\n            if (appendToElement) {\r\n                appendToElement.appendChild(container);\r\n            } else {\r\n                throw Error('Element for append is not find');\r\n            }\r\n        }\r\n        this._hostDomElement = container;\r\n    }\r\n\r\n    private _createPositionBuilder(): void {\r\n        this._positionBuilder = new NkPositionBuilder(this.controlElement.firstElementChild);\r\n    }\r\n\r\n    private _setElementPosition(\r\n        element: HTMLElement,\r\n        //overlayRect: ClientRect,\r\n        //overlayPoint: Point,\r\n        // pos: ConnectionPositionPair\r\n    ): void {\r\n\r\n        // We want to set either `top` or `bottom` based on whether the overlay wants to appear above\r\n        // or below the origin and the direction in which the element will expand.\r\n        //let verticalStyleProperty = pos.overlayY === 'bottom' ? 'bottom' : 'top';\r\n\r\n        //// When using `bottom`, we adjust the y position such that it is the distance\r\n        //// from the bottom of the viewport rather than the top.\r\n        //let y = verticalStyleProperty === 'top' ?\r\n        //    overlayPoint.y :\r\n        //    document.documentElement.clientHeight - (overlayPoint.y + overlayRect.height);\r\n\r\n        //// We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\r\n        //// or \"after\" the origin, which determines the direction in which the element will expand.\r\n        //// For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\r\n        //// page is in RTL or LTR.\r\n        //let horizontalStyleProperty: string;\r\n        //if (this._dir === 'rtl') {\r\n        //    horizontalStyleProperty = pos.overlayX === 'end' ? 'left' : 'right';\r\n        //} else {\r\n        //    horizontalStyleProperty = pos.overlayX === 'end' ? 'right' : 'left';\r\n        //}\r\n\r\n        //// When we're setting `right`, we adjust the x position such that it is the distance\r\n        //// from the right edge of the viewport rather than the left edge.\r\n        //let x = horizontalStyleProperty === 'left' ?\r\n        //    overlayPoint.x :\r\n        //    document.documentElement.clientWidth - (overlayPoint.x + overlayRect.width);\r\n\r\n\r\n        //// Reset any existing styles. This is necessary in case the preferred position has\r\n        //// changed since the last `apply`.\r\n        //['top', 'bottom', 'left', 'right'].forEach(p => element.style[p] = null);\r\n\r\n        element.style.top = null;\r\n        element.style.left = null;\r\n        const menuPanel = element.querySelector('.nk-menu-panel') as HTMLElement;\r\n        if (this.width != 'auto' && this.width != '100%') {\r\n            menuPanel.style.width = this.controlElement.clientWidth + 'px';\r\n        }\r\n        let menuHost = element;\r\n        if(this.appendTo == 'self'){\r\n            menuHost = this.controlElement.querySelector('.nk-menu-panel-host') as HTMLElement;\r\n        }\r\n        this.getPositionBuilder().setPosition(menuHost, this.positionOptions);\r\n\r\n        //// Notify that the position has been changed along with its change properties.\r\n        //const scrollableViewProperties = this._getScrollVisibility(element);\r\n        //const positionChange = new ConnectedOverlayPositionChange(pos, scrollableViewProperties);\r\n        //this._onPositionChange.next(positionChange);\r\n    }\r\n\r\n    private _destroyMenu(): void {\r\n        this._closeMenu();\r\n        if (this._hostDomElement && this._hostDomElement.parentNode != null) {\r\n            this._hostDomElement.parentNode.removeChild(this._hostDomElement);\r\n            this._hostDomElement = null;\r\n        }\r\n    }\r\n\r\n}\r\n","import {\r\n  Directive,\r\n  Input,\r\n  Renderer2,\r\n  ElementRef\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[nk-select-menu-item]',\r\n  exportAs: 'nkSelectMenuItem',\r\n  host: {\r\n    '[class.nk-select-menu-selected]': 'selected',\r\n  },\r\n\r\n})\r\nexport class NkSelectMenuItem {\r\n\r\n  @Input('controlItem') controlItem: any;\r\n  @Input('self') self: any;\r\n\r\n  getHostElement(): HTMLElement {\r\n    return this._element.nativeElement;\r\n  }\r\n\r\n  private _selected = false;\r\n  get selected(): boolean { return this.controlItem && this.controlItem.selected; }\r\n\r\n  constructor(\r\n    private _renderer: Renderer2,\r\n    private _element: ElementRef) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.controlItem.element = this;\r\n    this._selected = this.controlItem.selected;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.controlItem.selected = false;\r\n  }\r\n\r\n  select(): void {\r\n    this._selected = true;\r\n    const ua = window.navigator.userAgent;\r\n    const msie = ua.indexOf('Trident');\r\n    if (msie > 0) {\r\n      //this._element.nativeElement.scrollIntoView(false);\r\n    }\r\n    else {\r\n      this._element.nativeElement.scrollIntoView({ block: 'nearest', inline: 'nearest' });\r\n    }\r\n  }\r\n\r\n  deselect(): void {\r\n    this._selected = false;\r\n  }\r\n\r\n}\r\n","import {\r\n    Directive,\r\n    Input,\r\n    ElementRef\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[view-port-scroll]',\r\n    exportAs: 'viewPortScroll',\r\n    host: {\r\n        '[class.view-port-no-scrollable]': 'scrollable',\r\n    },\r\n\r\n})\r\nexport class NkSelectViewPortScrollDirective {\r\n\r\n    @Input() viewPortScrollTarget: any;\r\n\r\n    get scrollable(): boolean\r\n    {\r\n        let is = !(this._scrollHeight > this._clientHeight);\r\n        return is;\r\n    }\r\n\r\n    private _clientHeight: any = 0;\r\n    private _scrollHeight: any = 1;\r\n    private _onSearchChangeSubscribe: any;\r\n\r\n    constructor(\r\n        private _element: ElementRef)\r\n    {\r\n\r\n    }\r\n\r\n    ngOnInit()\r\n    {\r\n        let than = this;\r\n        setTimeout(() => {\r\n            than._scrollHeight = than._element.nativeElement.scrollHeight;\r\n            than._clientHeight = than._element.nativeElement.clientHeight;\r\n        }, 100);\r\n        this.viewPortScrollTarget._onSearchChangeSubscribe = this.viewPortScrollTarget.onSearchChange.subscribe(() =>\r\n        {\r\n            setTimeout(() =>\r\n            {\r\n                than._scrollHeight = than._element.nativeElement.scrollHeight;\r\n                than._clientHeight = than._element.nativeElement.clientHeight;\r\n            }, 100);\r\n        });\r\n    }\r\n\r\n    ngOnDestroy()\r\n    {\r\n        this.viewPortScrollTarget._onSearchChangeSubscribe.unsubscribe();\r\n    }\r\n\r\n}\r\n","//TODO:add to items from ribbon after closing ribbon\r\nimport {\r\n    Component,\r\n    Input,\r\n    Output,\r\n    EventEmitter,\r\n    ElementRef,\r\n    Injector,\r\n    Attribute,\r\n    OnInit,\r\n    ContentChild,\r\n    ViewChild,\r\n    TemplateRef,\r\n    forwardRef,\r\n    ViewEncapsulation,\r\n    Optional\r\n} from '@angular/core';\r\nimport { DOWN_ARROW, END, ENTER, HOME, SPACE, UP_ARROW, ESCAPE } from '../core/keyCodes';\r\nimport { Subscription } from 'rxjs';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { throwError } from 'rxjs';\r\nimport {\r\n    ControlValueAccessor,\r\n    NgControl,\r\n    FormGroup,\r\n    FormControl,\r\n    NG_VALUE_ACCESSOR,\r\n    Validators,\r\n    NgForm,\r\n    FormGroupDirective\r\n} from '@angular/forms';\r\n\r\nimport {\r\n    transformPlaceholder,\r\n    transformMenu\r\n} from './nkSelect.animation';\r\nimport {\r\n    fadeInContent\r\n} from '../core/animation/index';\r\n\r\nimport { NkSelectOptions } from './nkSelect.options';\r\nimport { NkRibbon } from './../ribbon';\r\nimport { NkSelectMultipleItem } from './nkSelect.multipleItem';\r\n\r\n@Component({\r\n    selector: 'nk-select,nk2-select',\r\n    encapsulation: ViewEncapsulation.None,\r\n    templateUrl: './nkSelect.html',\r\n    styleUrls: ['./nkSelect.scss'],\r\n    host: {\r\n        '[attr.tabindex]': 'tabIndex',\r\n        '[class.nk-select-disabled]': 'disabled',\r\n        '[class.nk-select-pending]': 'isPending',\r\n        '[class.nk-select-with-filter]': '_isFilter',\r\n        '[class.nk-select-open-menu]': 'isOpen',\r\n        '[class.nk-select-close-menu]': '!isOpen',\r\n        '[class.nk-select-menu-self]': '_appendTo==\"self\"',\r\n        '[class.nk-select-list-pagination]': '_listMode==\"pagination\"',\r\n        'class': 'nk-select-control',\r\n        '(click)': 'toggle($event)',\r\n        '(blur)': 'onBlur()',\r\n        '(keydown)': 'handleKeydown($event)'\r\n    },\r\n    providers: [{\r\n        provide: NG_VALUE_ACCESSOR,\r\n        useExisting: forwardRef(() => NkSelect),\r\n        multi: true\r\n    }],\r\n    animations: [\r\n        transformPlaceholder,\r\n        transformMenu,\r\n        fadeInContent\r\n    ],\r\n    exportAs: 'nkSelect'\r\n})\r\n\r\nexport class NkSelect implements ControlValueAccessor, OnInit {\r\n\r\n    name = 'NkSelect';\r\n\r\n    @ContentChild(TemplateRef, { static: true }) contentTemplate: TemplateRef<any>;\r\n    @ContentChild('titleTemplate', { static: true }) titleTemplate: TemplateRef<any>;\r\n    @ContentChild('itemTemplate', { static: true }) itemTemplate: TemplateRef<any>;\r\n    private _ribbon: NkRibbon;\r\n    @ViewChild('ribbon', { static: false })\r\n    get ribbon(): NkRibbon {\r\n        return this._ribbon;\r\n    }\r\n    set ribbon(value: NkRibbon) {\r\n        this._ribbon = value;\r\n    }\r\n    @Input('appendTo') _appendTo: string = null;\r\n    @Input('nkSelectBoundingBoxContainer') _boundingBoxContainer: string = 'window';\r\n    @Input('themeClassMenu') _themeClassMenu: string = null;\r\n    @Input('nkSelectDataSource') _dataSource: (value: any) => Observable<any>;\r\n    @Input('nkSelectPrimaryKey') _primaryKey: string = 'id';\r\n    @Input('nkSelectViewValue') _viewValueInitialize: any = null;\r\n    @Input('nkSelectFilterBy') _filterBy: string = '';\r\n    @Input('nkSelectDataBindingMode') _dataBindingMode: string = 'byDataSource';//byViewModel\r\n    @Input('nkSelectControlMode') _controlMode: string = '';//menu, button\r\n     private _isCache: boolean = true;\r\n     @Input('nkSelectCache') get nkSelectCache(): boolean {\r\n        return this._isCache;\r\n    }\r\n    set nkSelectCache(value: boolean) {\r\n        this._isCache = value;\r\n        this.options.isCache = value;\r\n    }\r\n    @Input('nkSelectPerfectScroll') _perfectScroll: boolean = false;\r\n    @Input('disabled') _disabled: boolean = false;\r\n    @Input('nkSelectFormGroup') _formGroup: FormGroup;\r\n    @Input('nkSelectListMode') _listMode: string = 'simple';//virtual,pagination\r\n    @Input('nkSelectItemSize') _itemSize: number = 20;\r\n    @Input('nkSelectPageSize') _pageSize: number = 10; // only for pagination\r\n    @Input('width') _width: string = '100%';//auto\r\n\r\n    //events\r\n    @Output('nkSelectOnSelectItem') onSelectItem: EventEmitter<any> = new EventEmitter();\r\n    @Output('nkSelectOnStartLoadData') onStartLoadData: EventEmitter<any> = new EventEmitter();\r\n    @Output('nkSelectOnEndLoadData') onEndLoadData: EventEmitter<any> = new EventEmitter();\r\n    @Output('nkSelectOnOpen') onOpen: EventEmitter<any> = new EventEmitter();\r\n    @Output('nkSelectOnBeforeOpen') onBeforeOpen: EventEmitter<any> = new EventEmitter();\r\n    @Output('nkSelectOnClose') onClose: EventEmitter<any> = new EventEmitter();\r\n    @Output('nkSelectOnChange') onChange: EventEmitter<any> = new EventEmitter();\r\n    @Output('nkSelectOnSearchChange') onSearchChange: EventEmitter<any> = new EventEmitter();\r\n\r\n    private _tabIndex: number;\r\n    @Input()\r\n    get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\r\n    set tabIndex(value: number) {\r\n        if (this.isDefined(value)) {\r\n            this._tabIndex = value;\r\n        }\r\n    }\r\n\r\n    public get instance(): NkSelect {\r\n        return this;\r\n    }\r\n\r\n    private _required: boolean = false;\r\n    @Input()\r\n    get required() {\r\n        return this._required;\r\n    }\r\n    set required(value: any) {\r\n        this._setRequired(value);\r\n    }\r\n\r\n    private _multiple: boolean = false;\r\n    @Input()\r\n    get multiple() {\r\n        return this._multiple;\r\n    }\r\n    set multiple(value: any) {\r\n        this._multiple = value;\r\n    }\r\n\r\n    get disabled(): boolean {\r\n        return this.formControl.disabled;\r\n    }\r\n    set disabled(value: boolean) {\r\n        if (value) {\r\n            this.formControl.disable();\r\n        } else {\r\n            this.formControl.enable();\r\n        }\r\n        this._disabledValidators();\r\n    }\r\n\r\n    get selectedItem(): any {\r\n        return this._selectionModel;\r\n    }\r\n\r\n    private _items: Array<any>;\r\n    public get items(): Array<any> {\r\n        return this._items;\r\n    }\r\n\r\n    private _formControl: FormControl;\r\n    public get formControl(): FormControl {\r\n        if (this._control) {\r\n            return this._control.control as FormControl || this._formControl;\r\n        }\r\n        return this._formControl;\r\n    }\r\n\r\n    private _isOpen = false;\r\n    get isOpen(): boolean {\r\n        return this._isOpen;\r\n    }\r\n\r\n    private _searchParams: any;\r\n    get searchParams(): any {\r\n        return this._searchParams;\r\n    }\r\n\r\n    private _options: NkSelectOptions;\r\n    get options(): NkSelectOptions {\r\n        return this._options;\r\n    }\r\n\r\n    get _positionLeftLoading(): string {\r\n        return (5 + this._origin.clientWidth) + 'px';\r\n    }\r\n\r\n    get _isFilter(): any {\r\n        return this._filterBy != '';\r\n    }\r\n\r\n    get filterBy(): any {\r\n        return this._filterBy;\r\n    }\r\n\r\n\r\n    _filter: any = '';\r\n    get filterValue(): string {\r\n        return this._filter;\r\n    }\r\n    set filterValue(val: string) {\r\n\r\n        this._filter = val;\r\n        this.onSearchChange.emit(val);\r\n        if (this.ribbon) {\r\n            this.ribbon.textSearch = val;\r\n        }\r\n    }\r\n\r\n    private _selectionModel: any;\r\n    private _selectedIndex: number = -1;\r\n    private _onChange: (value: any) => void = () => { };\r\n    private _onTouched: () => void = () => { };\r\n    _menuDoneAnimating: boolean = false;\r\n    _origin: HTMLElement;\r\n    private _isInitialized: boolean = false;\r\n    private _isSetDataByModel: boolean = false;\r\n    private _request: Subscription;\r\n    private _control: NgControl;\r\n\r\n    private _ribbonTotalCount: number = 0;\r\n    private _ribbonAfter: number = 0;\r\n\r\n    public transformOrigin: string = 'top';\r\n    public isPending: boolean = false;\r\n\r\n\r\n    constructor(\r\n        private _inj: Injector,\r\n        private elementRef: ElementRef,\r\n        @Attribute('tabindex') tabIndex: string,\r\n        @Attribute('multiple') _multipleAtribute: string,\r\n        @Attribute('formControlName') private _formControlName: string,\r\n        @Optional() _parentForm: NgForm,\r\n        @Optional() private _parentFormGroup: FormGroupDirective,\r\n        @Attribute('required') private _requiredAtribute: string) {\r\n\r\n        this._tabIndex = parseInt(tabIndex) || 0;\r\n        this._multiple = _multipleAtribute === 'true';\r\n        this._origin = elementRef.nativeElement;\r\n        this._items = new Array<any>();\r\n        this._searchParams = {};\r\n        this._isOpen = false;\r\n        this._options = new NkSelectOptions();\r\n        this._options.primaryKey = this._primaryKey;\r\n        this._formControl = new FormControl('');\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.disabled = this._disabled;\r\n        if (this._parentFormGroup) {\r\n            this._formGroup = this._parentFormGroup.form;\r\n        }\r\n        try {\r\n            this._control = this._inj.get(NgControl);\r\n        }\r\n        catch (e) {\r\n            if (this._controlMode !== 'menu') {\r\n                console.warn('get NgControl is not defined');\r\n            }\r\n        }\r\n\r\n        if (this._control) {\r\n            this._control.valueAccessor = this;\r\n        }\r\n        this._setRequired(this._requiredAtribute);\r\n\r\n        this._options.appendTo = this._appendTo;\r\n        this._options.menuPositionOptions.boundingBoxContainerSelector = this._boundingBoxContainer;\r\n        this._options.themeClassMenu = this._themeClassMenu;\r\n        this._options.primaryKey = this._primaryKey;\r\n        this._options.viewValueInitialize = this._viewValueInitialize;\r\n        this._options.dataBindingMode = this._dataBindingMode;\r\n        this._options.controlMode = this._controlMode;\r\n        this._options.isCache = this._isCache;\r\n        if (this._options.dataBindingMode == 'byViewModel') {\r\n            this._selectionModel = this._options.viewValueInitialize;\r\n        }\r\n        if (this._formGroup) {\r\n            const control = this._formGroup.get(this._formControlName);\r\n            if (!control) {\r\n                if (this._formControlName) {\r\n                    this._formGroup.addControl(this._formControlName, this.formControl);\r\n                }\r\n            }\r\n            else {\r\n                this._formControl = control as FormControl;\r\n            }\r\n        }\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        this._isSetDataByModel = false;\r\n    }\r\n\r\n    public toggle(event: any): void {\r\n        if (this.disabled) {\r\n            return;\r\n        }\r\n        if (event != null && event.target.classList.contains('nk-select-filter-input')) {\r\n            return;\r\n        }\r\n        if (event != null && (event.target as HTMLElement).classList.toString().includes('ps__')) {\r\n            return;\r\n        }\r\n        if (this.isOpen) {\r\n            if (!this.multiple) {\r\n                this.close();\r\n            }\r\n        } else {\r\n            this.open();\r\n        }\r\n    }\r\n\r\n    public open(): void {\r\n        if (this.disabled || this.isPending) {\r\n            return;\r\n        }\r\n        this.onBeforeOpen.emit({ eventSource: this });\r\n        if (this._listMode != 'pagination') {\r\n            this._getItems(null).subscribe(() => {\r\n                this._isOpen = true;\r\n                this._setItemViewElementAsActive();\r\n                this._menuDoneAnimating = false;\r\n            });\r\n        }\r\n        else {\r\n            this._isOpen = true;\r\n            this._menuDoneAnimating = false;\r\n        }\r\n    }\r\n\r\n    public addItems(items: Array<any>): void {\r\n        this._isInitialized = true;\r\n        this.items.length = 0;\r\n        if (!this._multiple) {\r\n            Array.prototype.push.apply(this.items, items);\r\n            const selectedValue = this.formControl?.value;\r\n            if (selectedValue) {\r\n                this.writeValue(selectedValue);\r\n            }\r\n\r\n        } else {\r\n            const multipleItems = items.map((data) => { return new NkSelectMultipleItem(data) });\r\n            Array.prototype.push.apply(this.items, multipleItems);\r\n        }\r\n    }\r\n\r\n    public clear(): void {\r\n        //this._isInitialized = false;\r\n        this.items.length = 0;\r\n    }\r\n\r\n    public close(): void {\r\n        this.formControl.markAsTouched();\r\n        this._isOpen = false;\r\n        this._menuDoneAnimating = false;\r\n        this._selectedIndex = -1;\r\n        if (this.ribbon && this.ribbon.textSearch) {\r\n            this.ribbon.textSearch = null;\r\n            this.refreshData();\r\n        }\r\n    }\r\n\r\n    public refreshData(): void {\r\n        this.refreshDataAsync().subscribe();\r\n    }\r\n\r\n    public refreshDataAsync(): Observable<any> {\r\n        return new Observable((observer: any) => {\r\n            if (this._listMode != 'pagination') {\r\n                this._getData().subscribe(() => {\r\n                    observer.next();\r\n                });\r\n            }\r\n            else {\r\n                this.items.length = 0;\r\n                this._ribbonAfter = 0;\r\n                this._ribbonTotalCount = 0;\r\n                observer.next();\r\n            }\r\n        });\r\n    }\r\n\r\n    public writeValue(value: any): void {\r\n        switch (this._options.dataBindingMode) {\r\n            case 'byViewModel': { this._writeValueByViewModel(value); break; }\r\n            case 'byDataSource': { this._writeValueByDataSource(value); break; }\r\n            default:\r\n        }\r\n    }\r\n\r\n    public selectItem(value: any, emmitEvent = true): void {\r\n        if (this.disabled) {\r\n            return;\r\n        }\r\n        if (!this.multiple) {\r\n            if (this._controlMode == 'menu') {\r\n                this.onSelectItem.emit({ eventSource: this, selected: value });\r\n                return;\r\n            }\r\n            this._propagateChanges(value);\r\n            if (emmitEvent) {\r\n                this.onSelectItem.emit({ eventSource: this, selected: value });\r\n            }\r\n            this._origin.focus();\r\n\r\n        } else {\r\n            value.isSelected = !value.isSelected;\r\n            this._propagateChangesForMultiple();\r\n            if (emmitEvent) {\r\n                this.onSelectItem.emit({ eventSource: this, selected: value });\r\n            }\r\n        }\r\n    }\r\n\r\n    public registerOnChange(fn: (value: any) => void): 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 onMenuDone(): void {\r\n        if (this.isOpen) {\r\n            this._setScrollViewForselectedItem();\r\n            this._setInputFilterInFocus();\r\n            this.onOpen.emit({ eventSource: this });\r\n        } else {\r\n            this._menuDoneAnimating = true;\r\n            this._onTouched();\r\n            this._filter = '';\r\n            this.onClose.emit({ eventSource: this });\r\n        }\r\n    }\r\n\r\n    public hasSelectedItem(): boolean {\r\n        if (this._controlMode != 'menu') {\r\n            if (!this.multiple) {\r\n                return this.isDefined((this._selectionModel || {})[this.options.primaryKey]);\r\n            } else {\r\n                return this._selectionModel && this._selectionModel.length > 0;\r\n            }\r\n        } else {\r\n            return this._selectionModel;\r\n        }\r\n    }\r\n\r\n    public getSelectedValuesByDefault(): string {\r\n        if (this.multiple) {\r\n            return this._selectionModel.map((item: NkSelectMultipleItem) => { return item.data }).join(', ');\r\n        }\r\n        return '';\r\n    }\r\n\r\n    public onBlur(): void {\r\n        if (!this.disabled && !this.isOpen) {\r\n            this._onTouched();\r\n        }\r\n    }\r\n\r\n    public onFadeInDone(): void {\r\n\r\n    }\r\n\r\n    public initRibbon(ribbon: NkRibbon): void {\r\n        ribbon.totalCount = this._ribbonTotalCount;\r\n        ribbon.after = this._ribbonAfter;\r\n        Array.prototype.push.apply(ribbon.items, this.items);\r\n        ribbon.events.onBeforeLoadData.subscribe((data: any) => {\r\n            this.isPending = true;\r\n            this._searchParams = data.selector;\r\n            this.onStartLoadData.emit({ eventSource: this });\r\n        });\r\n        ribbon.events.onAfterLoadData.subscribe((data: any) => {\r\n            this.isPending = false;\r\n            this.addItems(this.ribbon.items);\r\n            this._ribbonTotalCount = this.ribbon.totalCount;\r\n            this._ribbonAfter = this.ribbon.after;\r\n        });\r\n    }\r\n\r\n    private _propagateChanges(value: any): void {\r\n        if (this.isDefined(value)) {\r\n            this._setSelectionModel(value[this.options.primaryKey]);\r\n            this._onChange(value[this.options.primaryKey]);\r\n        } else {\r\n            this._setSelectionModel(null);\r\n            this._onChange(null);\r\n        }\r\n    }\r\n\r\n    private _propagateChangesForMultiple(): void {\r\n        this._setByMultiple();\r\n        const data = this._selectionModel.map((item) => {\r\n            return this.options.primaryKey ? item.data[this.options.primaryKey] : item.data;\r\n        });\r\n        this._onChange(data);\r\n    }\r\n\r\n    private _getItems(value: any): Observable<any> {\r\n        this._setSearchParam(value);\r\n        if (this._dataSource && (this.items.length == 0 || !this._options.isCache)) {\r\n            this.items.length = 0;\r\n            this.isPending = true;\r\n            let data = this._getData();\r\n            return data;\r\n        }\r\n        return new Observable((observer: any) => {\r\n            this._addEmptyValueByRequiredAttribute();\r\n            this.onEndLoadData.emit({ eventSource: this });\r\n            observer.next();\r\n        });\r\n    }\r\n\r\n    private _addItems(items: Array<any>): void {\r\n        this._isInitialized = true;\r\n        this.items.length = 0;\r\n        if (!this._multiple) {\r\n            Array.prototype.push.apply(this.items, items);\r\n\r\n        } else {\r\n            const multipleItems = items.map((data) => { return new NkSelectMultipleItem(data) });\r\n            Array.prototype.push.apply(this.items, multipleItems);\r\n        }\r\n    }\r\n\r\n    private _getData(): Observable<any> {\r\n        this.onStartLoadData.emit({ eventSource: this });\r\n        this.items.length = 0;\r\n        this.isPending = true;\r\n        let data = new Observable((observer: any) => {\r\n            this._request = this._dataSource(this.searchParams)\r\n                .pipe(catchError((error: any) => {\r\n                    console.error('An error occurred', error);\r\n                    this.isPending = false;\r\n                    this._request = null;\r\n                    return throwError(error || 'Server error');\r\n                }))\r\n                .subscribe((response) => {\r\n                    this._addItems(response.value || response);\r\n                    this.isPending = false;\r\n                    this._request = null;\r\n                    this._addEmptyValueByRequiredAttribute();\r\n                    this.onEndLoadData.emit({ eventSource: this });\r\n                    observer.next();\r\n                });\r\n        });\r\n        return data;\r\n    }\r\n\r\n    private _addEmptyValueByRequiredAttribute(): void {\r\n        let than = this;\r\n        if (this._controlMode == 'menu' || this.multiple) {\r\n            return;\r\n        }\r\n        if (this.required) {\r\n            let emptyItem = this.items.filter((item) => {\r\n                return !this.isDefined(item[than.options.primaryKey]);\r\n            })[0];\r\n            if (emptyItem) {\r\n                this.items.splice(this.items.indexOf(emptyItem), 1);\r\n            }\r\n        } else {\r\n            let emptyItem = this.items.filter((item) => {\r\n                return !this.isDefined(item[than.options.primaryKey]);\r\n            })[0];\r\n            if (!emptyItem) {\r\n                this.items.unshift({});\r\n            }\r\n        }\r\n    }\r\n\r\n    private _setSearchParam(value: any): void {\r\n        if (this.isDefined(value)) {\r\n            this._searchParams[this.options.primaryKey] = value;\r\n        } else {\r\n            delete this._searchParams[this.options.primaryKey];\r\n        }\r\n    }\r\n\r\n    private _canselRequest(): boolean {\r\n        if (this._request != null) {\r\n            this._request.unsubscribe();\r\n            this.isPending = false;\r\n            this._request = null;\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    private _isInitializedItems(): boolean {\r\n        return this.items.length > 0;\r\n    }\r\n\r\n    private _writeValueByViewModel(value: any): void {\r\n        this._canselRequest();\r\n        if (!this.isDefined(value)) {\r\n            this._setSelectionModel(null);\r\n        } else {\r\n\r\n            if ((this._isInitializedItems() && this._options.isCache) || this._controlMode == 'menu') {\r\n                this._setSelectionModel(value);\r\n                this._setValueByDefault(value);\r\n            }\r\n            else if (this._isSetDataByModel) {\r\n                this._getItems(null).subscribe(() => {\r\n                    this._setSelectionModel(value);\r\n                });\r\n            }\r\n        }\r\n        this._isSetDataByModel = true;\r\n    }\r\n\r\n    private _writeValueByDataSource(value: any): void {\r\n        this._canselRequest();\r\n        if (!this.isDefined(value)) {\r\n            this._setSelectionModel(null);\r\n        } else {\r\n\r\n            if (this._isInitializedItems() && this._options.isCache) {\r\n                this._setSelectionModel(value);\r\n                this._setValueByDefault(value);\r\n            }\r\n            else {\r\n                this._getItems(value).subscribe(() => {\r\n                    this._setSelectionModel(value);\r\n                    this._isInitialized = true;\r\n                    this.items.length = 0;\r\n                });\r\n            }\r\n        }\r\n    }\r\n    private _setValueByDefault(value: any) {\r\n        if (!this._formControlName) {\r\n            this._onChange(value);\r\n        }\r\n    }\r\n    private _setSelectionModel(value: any): void {\r\n        this._multiple ? this._setByMultiple(value) : this._setByOne(value);\r\n    }\r\n    private _setByOne(value: any): void {\r\n        if (this.isDefined(value)) {\r\n            if (this._controlMode != 'menu') {\r\n                let resultItem = this.items.find(item => {\r\n                    return item[this.options.primaryKey] === value;\r\n                });\r\n                let oldResultItem = this._selectionModel;\r\n                this._selectionModel = resultItem || null;\r\n                if ((this._selectionModel || {})[this.options.primaryKey] != (oldResultItem || {})[this.options.primaryKey]) {\r\n                    if (this._isInitialized) {\r\n                        this.onChange.emit({ eventSource: this, oldSelected: oldResultItem, newSelected: this._selectionModel });\r\n                    }\r\n                }\r\n            } else {\r\n                this._selectionModel = value;\r\n            }\r\n        } else {\r\n            if (this._selectionModel) {\r\n                let oldResultItem = this._selectionModel = null;\r\n                this.onChange.emit({ eventSource: this, oldSelected: oldResultItem, newSelected: null });\r\n            }\r\n        }\r\n    }\r\n    private _setByMultiple(values?: Array<any>): void {\r\n        if (values) {\r\n            this.items.forEach((it: NkSelectMultipleItem) => { it.isSelected = false; });\r\n            values.forEach((value) => {\r\n                const result = this.items.find((it: NkSelectMultipleItem) => {\r\n                    return this.options.primaryKey ? it.data[this.options.primaryKey] === value : it.data === value;\r\n                });\r\n                if (result) {\r\n                    result.isSelected = true;\r\n                }\r\n            });\r\n        }\r\n        let resultItems = this.items.filter(item => {\r\n            return item.isSelected;\r\n        });\r\n        let oldResultItems = this._selectionModel || [];\r\n        this._selectionModel = resultItems;\r\n        if (oldResultItems.length != resultItems.length) {\r\n            if (this._isInitialized) {\r\n                this.onChange.emit({ eventSource: this, oldSelected: oldResultItems, newSelected: this._selectionModel });\r\n            }\r\n        }\r\n    }\r\n\r\n    private _setRequired(value: any): void {\r\n        if (!this.formControl) {\r\n            return;\r\n        }\r\n        this._required = this._coerceBooleanProperty(value);\r\n        if (this._required) {\r\n            this.formControl.setValidators([Validators.required]);\r\n        } else {\r\n            this.formControl.setValidators(null);\r\n        }\r\n        this.formControl.updateValueAndValidity();\r\n\r\n    }\r\n\r\n    private _disabledValidators(): void {\r\n        if (!this.formControl) {\r\n            return;\r\n        }\r\n        if (this.disabled) {\r\n            this.formControl.setValidators(null);\r\n        } else {\r\n            if (this._required) {\r\n                this.formControl.setValidators([Validators.required]);\r\n            }\r\n        }\r\n        this.formControl.updateValueAndValidity();\r\n    }\r\n\r\n    private _coerceBooleanProperty(value: any): boolean {\r\n        return value != null && `${value}` !== 'false';\r\n    }\r\n\r\n    private _setItemViewElementAsActive(): void {\r\n        this._resetSelected();\r\n        if (this.isDefined(this._selectionModel)) {\r\n            let than = this;\r\n            let resultItem = null;\r\n            if (!this._multiple) {\r\n                resultItem = this.items.find((item, index) => {\r\n                    let isEqual = item[than.options.primaryKey] === than._selectionModel[than.options.primaryKey] && than._selectionModel[than.options.primaryKey];\r\n                    if (isEqual) {\r\n                        than._selectedIndex = index;\r\n                    }\r\n                    return isEqual;\r\n                });\r\n                if (resultItem) {\r\n                    resultItem.selected = true;\r\n                }\r\n\r\n            } else {\r\n                (this._selectionModel as Array<NkSelectMultipleItem>)\r\n                    .forEach(t => {\r\n                        resultItem = this.items.find((item: NkSelectMultipleItem, index) => {\r\n                            let isEqual = item.data[than.options.primaryKey] === t.data[than.options.primaryKey] && t.data[than.options.primaryKey];\r\n                            return isEqual;\r\n                        });\r\n                        if (resultItem) {\r\n                            resultItem.isSelected = true;\r\n                        }\r\n                    })\r\n            }\r\n\r\n        }\r\n\r\n    }\r\n\r\n    private _resetSelected(): void {\r\n        this.items.forEach((item) => {\r\n            item.selected = false;\r\n        });\r\n    }\r\n\r\n    private _setScrollViewForselectedItem(): void {\r\n        let resultItem = this.items.filter((item) => { return item.selected })[0];\r\n        if (resultItem && resultItem.element) {\r\n            resultItem.element.select();\r\n        }\r\n    }\r\n\r\n    private _setInputFilterInFocus(): void {\r\n        if (this._isFilter) {\r\n            setTimeout(() => {\r\n                (this.elementRef.nativeElement.querySelector('.nk-select-filter-input') as HTMLElement)?.focus();\r\n            }, 1000);\r\n        }\r\n    }\r\n\r\n    public handleKeydown(event: KeyboardEvent): void {\r\n        if (!this.disabled) {\r\n            this.isOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\r\n        }\r\n    }\r\n\r\n    private _handleClosedKeydown(event: KeyboardEvent): void {\r\n        const keyCode = event.keyCode;\r\n        const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\r\n        const isOpenKey = keyCode === ENTER || keyCode === SPACE;\r\n\r\n        if (isOpenKey || isArrowKey) {\r\n            event.preventDefault();\r\n            this.open();\r\n        }\r\n    }\r\n\r\n    private _handleOpenKeydown(event: KeyboardEvent): void {\r\n        const keyCode = event.keyCode;\r\n        const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\r\n        const isCloseKey = keyCode === ESCAPE;\r\n        const isSelectKey = keyCode === ENTER;\r\n        const isFirstItem = keyCode === HOME;\r\n        const isLastItem = keyCode === END;\r\n        if (isCloseKey) {\r\n            this.close();\r\n        } else if (isArrowKey) {\r\n            this._onArrowKeydown(event);\r\n        } else if (keyCode === HOME) {\r\n            event.preventDefault();\r\n            this._setFirstItemActive();\r\n        } else if (keyCode === END) {\r\n            event.preventDefault();\r\n            this._setLastItemActive();\r\n        }\r\n        else if (isSelectKey && this._selectedIndex > -1) {\r\n            event.preventDefault();\r\n            this.selectItem(this.items[this._selectedIndex]);\r\n            this.close();\r\n        }\r\n    }\r\n\r\n    private _onArrowKeydown(event: KeyboardEvent): void {\r\n        event.preventDefault();\r\n        switch (event.keyCode) {\r\n            case DOWN_ARROW: this._setNextItemActive(); break;\r\n            case UP_ARROW: this._setPreviousItemActive(); break;\r\n            default:\r\n                const keyCode = event.keyCode;\r\n                return;\r\n        }\r\n    }\r\n\r\n    private _setNextItemActive(): void {\r\n        let item = this.items[this._selectedIndex + 1];\r\n        if (item) {\r\n            if (this._selectedIndex > -1) {\r\n                this.items[this._selectedIndex].element.deselect();\r\n            }\r\n            this._selectedIndex = this._selectedIndex + 1;\r\n            this.items[this._selectedIndex].element.select();\r\n        }\r\n    }\r\n\r\n    private _setPreviousItemActive(): void {\r\n        let item = this.items[this._selectedIndex - 1];\r\n        if (item) {\r\n            if (this._selectedIndex > -1) {\r\n                this.items[this._selectedIndex].element.deselect();\r\n            }\r\n            this._selectedIndex = this._selectedIndex - 1;\r\n            this.items[this._selectedIndex].element.select();\r\n        }\r\n    }\r\n\r\n    private _setFirstItemActive(): void {\r\n        let item = this.items[0];\r\n        if (item) {\r\n            if (this._selectedIndex > -1) {\r\n                this.items[this._selectedIndex].element.deselect();\r\n            }\r\n            this._selectedIndex = 0;\r\n            this.items[this._selectedIndex].element.select();\r\n        }\r\n    }\r\n\r\n    private _setLastItemActive(): void {\r\n        let length = this.items.length - 1;\r\n        let item = this.items[length];\r\n        if (item) {\r\n            if (this._selectedIndex > -1) {\r\n                this.items[this._selectedIndex].element.deselect();\r\n            }\r\n            this._selectedIndex = length;\r\n            this.items[this._selectedIndex].element.select();\r\n        }\r\n    }\r\n\r\n    private isDefined(value: any): boolean {\r\n        return value !== null && value !== undefined;\r\n    }\r\n\r\n}\r\n","<div class=\"nk-select-view-wrapper \"\r\n    [style.width]=\"_width\">\r\n    <div class=\"nk-select-view-selected\"\r\n        *ngIf=\"(hasSelectedItem() || options.controlMode == 'menu' || options.controlMode == 'button') && !multiple\">\r\n        <ng-template *ngIf=\"options.controlMode != 'button'\"\r\n            [ngTemplateOutlet]=\"titleTemplate || contentTemplate\"\r\n            [ngTemplateOutletContext]=\"{ controlItem: selectedItem, self: instance }\">\r\n        </ng-template>\r\n        <div  class=\"nk-select-button\"\r\n            *ngIf=\"!titleTemplate && options.controlMode == 'button'\">\r\n            button\r\n        </div>\r\n    </div>\r\n    <div class=\"nk-select-view-selected\"\r\n        *ngIf=\"(hasSelectedItem() || options.controlMode == 'button') && multiple && options.controlMode != 'menu'\">\r\n        <ng-template *ngIf=\"titleTemplate\"\r\n            [ngTemplateOutlet]=\"titleTemplate\"\r\n            [ngTemplateOutletContext]=\"{ controlItems: selectedItem, self: instance }\">\r\n        </ng-template>\r\n        <div class=\"nk-select-view-multiple-selected\"\r\n            *ngIf=\"!titleTemplate && options.controlMode != 'button'\"\r\n            title=\"{{getSelectedValuesByDefault()}}\">\r\n            {{getSelectedValuesByDefault()}}\r\n        </div>\r\n        <div class=\"nk-select-button\"\r\n            *ngIf=\"!titleTemplate && options.controlMode == 'button'\">\r\n            button\r\n        </div>\r\n    </div>\r\n    <input class=\"nk-select-filter-input\"\r\n        type=\"text\"\r\n        *ngIf=\"_isFilter && isOpen\"\r\n        [value]=\"filterValue\"\r\n        (input)=\"filterValue=$event.target?.value\" />\r\n    <span class=\"nk-select-view-default\"\r\n        *ngIf=\"!hasSelectedItem() && options.controlMode != 'menu' && options.controlMode != 'button'\">{{options.displayTextDefault}}</span>\r\n    <span class=\"nk-select-arrow\"></span>\r\n    <div class=\"nk-menu-panel-host\"></div>\r\n</div>\r\n<span class=\"nk-select-loading\"\r\n    *ngIf=\"isPending\">{{options.displayTextForLoading}}</span>\r\n<ng-template nk-select-menu\r\n    *ngIf=\"_perfectScroll\"\r\n    (backdropClick)=\"close()\"\r\n    [open]=\"isOpen\"\r\n    [menuAnimateDone]=\"_menuDoneAnimating\"\r\n    [appendTo]=\"options.appendTo\"\r\n    [width]=\"_width\"\r\n    [positionOptions]=\"options.menuPositionOptions\"\r\n    [themeClass]=\"options.themeClassMenu\"\r\n    [controlElement]=\"_origin\"\r\n    [self]=\"instance\">\r\n    <ng-container *ngIf=\"_listMode=='virtual'\">\r\n        <div class=\"nk-menu-panel perfect-scroll-virtual\"\r\n            [style.transformOrigin]=\"transformOrigin\"\r\n            [@transformMenu]=\"'showing'\"\r\n            (@transformMenu.done)=\"onMenuDone()\">\r\n            <cdk-virtual-scroll-viewport [itemSize]=\"_itemSize\"\r\n                view-port-scroll\r\n                [perfectScrollbar]=\"{wheelPropagation: false}\"\r\n                [viewPortScrollTarget]=\"instance\">\r\n                <div nk-select-menu-item\r\n                    class=\"nk-option-ripple nk-menu-item\"\r\n                    [ngClass]=\"controlItem.ngClass\"\r\n                    nk-ripple\r\n                    *cdkVirtualFor=\"let controlItem of items | nkSelectFilter : filterBy : filterValue\"\r\n                    (click)=\"selectItem(controlItem);\"\r\n                    [controlItem]=\"controlItem\"\r\n                    [self]=\"instance\">\r\n                    <ng-template [ngTemplateOutlet]=\"itemTemplate || contentTemplate\"\r\n                        [ngTemplateOutletContext]=\"{controlItem: controlItem, self: instance}\">\r\n                    </ng-template>\r\n                </div>\r\n            </cdk-virtual-scroll-viewport>\r\n        </div>\r\n    </ng-container>\r\n    <perfect-scrollbar *ngIf=\"_listMode=='simple'\"\r\n        class=\"perfect-scrollbar nk-menu-panel\"\r\n        [config]=\"{wheelPropagation: false}\">\r\n        <div [style.transformOrigin]=\"transformOrigin\"\r\n            [@transformMenu]=\"'showing'\"\r\n            (@transformMenu.done)=\"onMenuDone()\">\r\n            <div class=\"nk-select-menu-item-collection\"\r\n                [@fadeInContent]=\"'showing'\"\r\n                (@fadeInContent.done)=\"onFadeInDone()\">\r\n                <ng-container>\r\n                    <div nk-select-menu-item\r\n                        class=\"nk-option-ripple nk-menu-item\"\r\n                        [ngClass]=\"controlItem.ngClass\"\r\n                        nk-ripple\r\n                        *ngFor=\"let controlItem of items | nkSelectFilter : filterBy : filterValue\"\r\n                        (click)=\"selectItem(controlItem);\"\r\n                        [controlItem]=\"controlItem\"\r\n                        [self]=\"instance\">\r\n                        <ng-template [ngTemplateOutlet]=\"itemTemplate || contentTemplate\"\r\n                            [ngTemplateOutletContext]=\"{controlItem: controlItem, self: instance}\">\r\n                        </ng-template>\r\n                    </div>\r\n                </ng-container>\r\n            </div>\r\n        </div>\r\n    </perfect-scrollbar>\r\n</ng-template>\r\n<ng-template nk-select-menu\r\n    *ngIf=\"!_perfectScroll\"\r\n    (backdropClick)=\"close()\"\r\n    [open]=\"isOpen\"\r\n    [menuAnimateDone]=\"_menuDoneAnimating\"\r\n    [appendTo]=\"options.appendTo\"\r\n    [width]=\"_width\"\r\n    [positionOptions]=\"options.menuPositionOptions\"\r\n    [themeClass]=\"options.themeClassMenu\"\r\n    [controlElement]=\"_origin\"\r\n    [self]=\"instance\">\r\n    <div class=\"nk-menu-panel\"\r\n        [style.transformOrigin]=\"transformOrigin\"\r\n        [@transformMenu]=\"'showing'\"\r\n        (@transformMenu.done)=\"onMenuDone()\">\r\n        <div class=\"nk-select-menu-item-collection\"\r\n            [@fadeInContent]=\"'showing'\"\r\n            (@fadeInContent.done)=\"onFadeInDone()\">\r\n            <ng-container *ngIf=\"_listMode=='simple'\">\r\n                <div nk-select-menu-item\r\n                    class=\"nk-option-ripple nk-menu-item\"\r\n                    [ngClass]=\"controlItem.ngClass\"\r\n                    nk-ripple\r\n                    *ngFor=\"let controlItem of items | nkSelectFilter : filterBy : filterValue\"\r\n                    (click)=\"selectItem(controlItem);\"\r\n                    [controlItem]=\"controlItem\"\r\n                    [self]=\"instance\">\r\n                    <ng-template [ngTemplateOutlet]=\"itemTemplate || contentTemplate\"\r\n                        [ngTemplateOutletContext]=\"{controlItem: controlItem, self: instance}\">\r\n                    </ng-template>\r\n                </div>\r\n            </ng-container>\r\n            <ng-container *ngIf=\"_listMode=='virtual'\">\r\n                <cdk-virtual-scroll-viewport [itemSize]=\"_itemSize\"\r\n                    view-port-scroll\r\n                    [viewPortScrollTarget]=\"instance\">\r\n                    <div nk-select-menu-item\r\n                        class=\"nk-option-ripple nk-menu-item\"\r\n                        [ngClass]=\"controlItem.ngClass\"\r\n                        nk-ripple\r\n                        *cdkVirtualFor=\"let controlItem of items | nkSelectFilter : filterBy : filterValue\"\r\n                        (click)=\"selectItem(controlItem);\"\r\n                        [controlItem]=\"controlItem\"\r\n                        [self]=\"instance\">\r\n                        <ng-template [ngTemplateOutlet]=\"itemTemplate || contentTemplate\"\r\n                            [ngTemplateOutletContext]=\"{controlItem: controlItem, self: instance}\">\r\n                        </ng-template>\r\n                    </div>\r\n                </cdk-virtual-scroll-viewport>\r\n            </ng-container>\r\n            <ng-container *ngIf=\"_listMode=='pagination'\">\r\n                <nk-ribbon #ribbon\r\n                    [ngClass]=\"'nk-select-ribbon-list'\"\r\n                    [nkRibbonRepeatContainerSelector]=\"'.nk-menu-panel'\"\r\n                    [nkRibbonDisableSupportBrowserLine]=\"true\"\r\n                    [nkRibbonDynamicSize]=\"true\"\r\n                    [nkRibbonPrimaryKey]=\"_primaryKey\"\r\n                    [nkRibbonPageSize]=\"_pageSize\"\r\n                    [nkRibbonDataSource]=\"_dataSource\"\r\n                    (nkRibbonOnInit)=\"initRibbon($event)\">\r\n                    <ng-template #ribbonError>\r\n                    </ng-template>\r\n                    <ng-template #ribbonLoader>\r\n                    </ng-template>\r\n                    <ng-template #ribbonNoData>\r\n                    </ng-template>\r\n                    <ng-template #ribbonItemTemplate\r\n                        let-item=\"item\">\r\n                        <div (click)=\"selectItem(item)\"\r\n                            nk-select-menu-item\r\n                            [self]=\"instance\"\r\n                            [controlItem]=\"item\"\r\n                            class=\"nk-menu-item\">\r\n                            <ng-template [ngTemplateOutlet]=\"itemTemplate || contentTemplate\"\r\n                                [ngTemplateOutletContext]=\"{controlItem: item, self: instance}\">\r\n                            </ng-template>\r\n                        </div>\r\n                    </ng-template>\r\n                </nk-ribbon>\r\n            </ng-container>\r\n        </div>\r\n    </div>\r\n\r\n</ng-template>","import {\r\n  Component,\r\n  Input,\r\n  ViewEncapsulation,\r\n  OnInit,\r\n  OnDestroy\r\n} from '@angular/core';\r\nimport { NkRibbonItem } from './models/nkRibbon.item';\r\nimport { NkRibbonItemExpandModel } from './models/nkRibbon.item.expand.model';\r\nimport { Observable } from 'rxjs';\r\nimport { animate, state, trigger, transition, style } from '@angular/animations';\r\n\r\n@Component({\r\n  selector: 'nk-ribbon-item-expand-component',\r\n  encapsulation: ViewEncapsulation.None,\r\n  templateUrl: './nkRibbon.item.expand.component.html',\r\n  host: {\r\n    'class': 'nk-ribbon-item-expand-container',\r\n    '[@visibilityChanged]': 'visibility',\r\n    '(@visibilityChanged.done)': 'onAnimationDone()',\r\n\r\n  },\r\n  animations: [\r\n    trigger('visibilityChanged',\r\n      [\r\n        state('visible', style({\r\n          height: '*',\r\n          opacity: 1\r\n        })),\r\n        state('hidden', style({\r\n          height: '0px',\r\n          opacity: 0\r\n        })),\r\n        transition('visible => hidden', animate(500)),\r\n        transition('hidden => visible', animate(500)),\r\n        transition('void => hidden', animate(0))\r\n      ])\r\n  ]\r\n})\r\nexport class NkRibbonItemExpandComponent implements OnInit, OnDestroy {\r\n\r\n  @Input('itemRibbon') itemRibbon: any;\r\n  @Input('name') name: string = 'default';\r\n  private hidden: string = 'hidden';\r\n  private visible: string = 'visible';\r\n  private isAnimateStart: boolean = false;\r\n  private animationObserver: any;\r\n\r\n  @Input('visibility') visibility;\r\n\r\n  constructor() {\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.destroyExpand();\r\n  }\r\n\r\n  show(): Observable<any> {\r\n    let observable = new Observable((observer: any) => {\r\n      this.visibility = this.visible;\r\n      this.isAnimateStart = true;\r\n      this.animationObserver = observer;\r\n    });\r\n    return observable;\r\n  }\r\n\r\n  onAnimationDone(): void {\r\n    if (this.itemRibbon.ribbon && this.isAnimateStart) {\r\n      this.itemRibbon.ribbon.repeater.reinitialize();\r\n      this.isAnimateStart = false;\r\n      let expand = this.initExpand();\r\n      this.animationObserver.next(expand);\r\n    }\r\n  }\r\n\r\n  hide(): Observable<any> {\r\n    let observable = new Observable((observer: any) => {\r\n      this.visibility = this.hidden;\r\n      this.isAnimateStart = true;\r\n      this.animationObserver = observer;\r\n      this.destroyExpand();\r\n    });\r\n    return observable;\r\n  }\r\n\r\n  destroyExpand(): void {\r\n    if (this.visibility != this.visible) {\r\n      let item = this.itemRibbon as NkRibbonItem;\r\n      let than = this;\r\n      let expand = item.expands.filter((expand) => {\r\n       return expand.name == than.name;\r\n      })[0];\r\n      if (expand) {\r\n        expand.destroy();\r\n      }\r\n    }\r\n  }\r\n\r\n  initExpand(): NkRibbonItemExpandModel {\r\n      let item = this.itemRibbon as NkRibbonItem;\r\n      let than = this;\r\n      let expand = item.expands.filter((expand) => {\r\n        return expand.name == than.name;\r\n      })[0];\r\n      if (!expand) {\r\n        expand = item.addExpand(this.name);\r\n      }\r\n    return expand;\r\n  }\r\n}","<ng-content></ng-content>\r\n","import { NkRibbonResponseContract } from '../contracts';\r\n\r\nexport class NkRibbonData implements NkRibbonResponseContract<any> {\r\n\r\n    private _count: number;\r\n    get totalCount(): number {\r\n        return this._count;\r\n    }\r\n\r\n    private _items: Array<any>;\r\n    get items(): Array<any> {\r\n        return this._items;\r\n    }\r\n\r\n    constructor(count: number, items: Array<any>) {\r\n        this._count = count;\r\n        this._items = items;\r\n    }\r\n}","import { NkRibbonBaseSelector } from './nkRibbon.baseSelector';\r\nimport { NkHeaderFilterItemContract } from '../../table/interfaces/nkHeaderFilterItem.contract';\r\n\r\n  /** @deprecated Instead of this, use an NkRibbonCollectionSelectorContract. */\r\nexport class NkRibbonCollectionSelectorModel extends NkRibbonBaseSelector {\r\n\r\n    public filters: Array<NkHeaderFilterItemContract<any, string | boolean | number | Date>>;\r\n\r\n    constructor() {\r\n        super();\r\n    }\r\n\r\n}\r\n","import { NkRibbon } from './nkRibbon.component';\r\nimport { NkRibbonItemElement } from './nkRibbon.item.directive';\r\nimport { NkRibbonItemExpandComponent } from './nkRibbon.item.expand.component';\r\nimport { NkRibbonFileService } from './nkRibbon.file.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule} from '@angular/core';\r\n\r\n@NgModule({\r\n  imports: [CommonModule  ],\r\n  exports: [NkRibbon, NkRibbonItemElement, NkRibbonItemExpandComponent ],\r\n  declarations: [NkRibbon, NkRibbonItemElement, NkRibbonItemExpandComponent],\r\n  providers: [NkRibbonFileService]\r\n})\r\nexport class NkRibbonModule { }\r\nexport * from './nkRibbon.component';\r\nexport * from './nkRibbon.item.expand.component';\r\nexport * from './models/index';\r\nexport * from './interfaces/index';\r\n\r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { ScrollingModule as ExperimentalScrollingModule } from '@angular/cdk-experimental/scrolling';\r\nimport { NkSelect } from './nkSelect.component';\r\nimport { NkSelectMenuDirective } from './nkSelectMenu.directive';\r\nimport { NkSelectMenuItem } from './nkSelectMenuItem.directive';\r\nimport { NkSelectViewPortScrollDirective } from './nkSelectViewPortScroll.directive';\r\nimport { NkSelectFilter } from './nkSelect.filter';\r\nimport { NkRibbonModule } from './../ribbon/nkRibbon.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NkRippleModule } from '../core/ripple/index';\r\nimport { PerfectScrollbarModule } from 'ngx-om-perfect-scrollbar';\r\nimport { PERFECT_SCROLLBAR_CONFIG } from 'ngx-om-perfect-scrollbar';\r\nimport { PerfectScrollbarConfigInterface } from 'ngx-om-perfect-scrollbar';\r\n\r\nconst DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {\r\n    suppressScrollX: true\r\n};\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        ScrollingModule,\r\n        NkRibbonModule,\r\n        ExperimentalScrollingModule,\r\n        PerfectScrollbarModule,\r\n        NkRippleModule],\r\n    exports: [\r\n        NkSelect,\r\n        NkSelectMenuDirective,\r\n        NkSelectMenuItem,\r\n        NkSelectFilter,\r\n        NkSelectViewPortScrollDirective],\r\n    providers: [\r\n        {\r\n            provide: PERFECT_SCROLLBAR_CONFIG,\r\n            useValue: DEFAULT_PERFECT_SCROLLBAR_CONFIG\r\n        }\r\n    ],\r\n    declarations: [\r\n        NkSelect,\r\n        NkSelectMenuDirective,\r\n        NkSelectMenuItem,\r\n        NkSelectFilter,\r\n        NkSelectViewPortScrollDirective]\r\n})\r\nexport class NkSelectModule { }\r\nexport * from './nkSelect.component';\r\nexport * from './nkSelectMenu.directive';\r\nexport * from './nkSelectMenuItem.directive';\r\nexport * from './nkSelectViewPortScroll.directive';\r\n\r\n","export class NkRibbonResponseContract<TItem> {\r\n    public items: Array<TItem>;\r\n    public totalCount: number;\r\n}\r\n\r\n","export class NkDateDropperElementDateModel {\r\n  public min: number;\r\n  public max: number;\r\n  public current: number;\r\n  public today: number;\r\n  constructor(min: number, max: number, current: number, today: number) {\r\n    this.min = min;\r\n    this.max = max;\r\n    this.current = current;\r\n    this.today = today;\r\n  }\r\n}\r\n","export class NkDateDropperLangValuesModel {\r\n  public short: Array<string>;\r\n  public full: Array<string>;\r\n\r\n  constructor(short: Array<string>, full: Array<string>) {\r\n    this.short = short;\r\n    this.full = full;\r\n  }\r\n}\r\n","import { NkDateDropperLangValuesModel } from './nkDateDropper.lang.values.model';\r\n\r\nexport class NkDateDropperLangModel {\r\n  public name: string;\r\n  public gregorian: boolean;\r\n  public months: NkDateDropperLangValuesModel;\r\n  public weekdays: NkDateDropperLangValuesModel;\r\n}\r\n","import { NkDateDropperLangModel } from './nkDateDropper.lang.model';\r\nimport { NkDateDropperLangValuesModel } from './nkDateDropper.lang.values.model';\r\n\r\nexport class NkDateDropperI18nConstants {\r\n\r\n  public static en: NkDateDropperLangModel = NkDateDropperI18nConstants.getEnModel();\r\n\r\n  private static getEnModel(): NkDateDropperLangModel {\r\n    let model = new NkDateDropperLangModel();\r\n    model.name = 'English';\r\n    model.gregorian = false;\r\n    model.months = new NkDateDropperLangValuesModel(\r\n      [\r\n        'Jan',\r\n        'Feb',\r\n        'Mar',\r\n        'Apr',\r\n        'May',\r\n        'June',\r\n        'July',\r\n        'Aug',\r\n        'Sept',\r\n        'Oct',\r\n        'Nov',\r\n        'Dec'\r\n      ],\r\n      [\r\n        'January',\r\n        'February',\r\n        'March',\r\n        'April',\r\n        'May',\r\n        'June',\r\n        'July',\r\n        'August',\r\n        'September',\r\n        'October',\r\n        'November',\r\n        'December'\r\n      ]);\r\n    model.weekdays = new NkDateDropperLangValuesModel(\r\n      [\r\n        'S',\r\n        'M',\r\n        'T',\r\n        'W',\r\n        'T',\r\n        'F',\r\n        'S'\r\n      ],\r\n      [\r\n        'Sunday',\r\n        'Monday',\r\n        'Tuesday',\r\n        'Wednesday',\r\n        'Thursday',\r\n        'Friday',\r\n        'Saturday'\r\n      ]);\r\n    return model;\r\n  }\r\n}\r\n","import { NkDateDropperElementDateModel } from './nkDateDropper.element.date.model';\r\nimport { NkDateDropperI18nConstants } from './i18n/index';\r\n\r\nexport class NkDateDropperKeyModel {\r\n\r\n  public m: NkDateDropperElementDateModel;\r\n  public d: NkDateDropperElementDateModel;\r\n  public y: NkDateDropperElementDateModel;\r\n  public l: NkDateDropperElementDateModel;\r\n\r\n  constructor(pickerMinYear: number, pickerMaxYear: number) {\r\n    this.m = new NkDateDropperElementDateModel(1, 12, 1, (new Date().getMonth() + 1));\r\n    this.d = new NkDateDropperElementDateModel(1, 31, 1, new Date().getDate());\r\n    this.y = new NkDateDropperElementDateModel(pickerMinYear, pickerMaxYear, pickerMinYear, new Date().getFullYear());\r\n    this.l = new NkDateDropperElementDateModel(0, Object.keys(NkDateDropperI18nConstants).length - 1, 0, 0);\r\n  }\r\n}\r\n","import { NkDateDropperKeyModel } from './nkDateDropper.key.model';\r\nimport { NkDateDropperOptionsModel } from './nkDateDropper.options.model';\r\n\r\nexport class NkDateDropperControlModel {\r\n\r\n  public disableDays: Array<string>;\r\n  public format: string;\r\n  public fx: boolean;\r\n  public fxmobile: boolean;\r\n  public lang: string;\r\n  public large: boolean;\r\n  public lock: string;\r\n  public jump: number;\r\n  public translate: boolean;\r\n  public key: NkDateDropperKeyModel;\r\n  constructor(options: NkDateDropperOptionsModel) {\r\n    this.key = new NkDateDropperKeyModel(options.minYear, options.maxYear);\r\n    this.lang = options.lang;\r\n    this.large = options.large;\r\n    this.lock = options.lock;\r\n  }\r\n  \r\n}","import { NkOptionsPosition } from '../../core/position/nkOptionsPosition';\r\n\r\nexport class NkDateDropperOptionsModel {\r\n\r\n  private _format: string;\r\n  get format(): string {\r\n    return this._format;\r\n  }\r\n  set format(val: string) {\r\n    this._format = val;\r\n  }\r\n\r\n  private _minYear: number;\r\n  get minYear(): number {\r\n    return this._minYear;\r\n  }\r\n  set minYear(val: number) {\r\n    this._minYear = val;\r\n  }\r\n\r\n  private _maxYear: number;\r\n  get maxYear(): number {\r\n    return this._maxYear;\r\n  }\r\n  set maxYear(val: number) {\r\n    this._maxYear = val;\r\n  }\r\n\r\n  private _lang: string;\r\n  get lang(): string {\r\n    return this._lang;\r\n  }\r\n  set lang(val: string) {\r\n    this._lang = val;\r\n  }\r\n\r\n  private _modal: string;\r\n  get modal(): string {\r\n    return this._modal;\r\n  }\r\n  set modal(val: string) {\r\n    this._modal = val;\r\n  }\r\n\r\n  private _theme: string;\r\n  get theme(): string {\r\n    return this._theme;\r\n  }\r\n  set theme(val: string) {\r\n    this._theme = val;\r\n  }\r\n\r\n  private _fxClass: string;\r\n  get fxClass(): string {\r\n    return this._fxClass;\r\n  }\r\n  set fxClass(val: string) {\r\n    this._fxClass = val;\r\n  }\r\n\r\n  private _largeClass: string;\r\n  get largeClass(): string {\r\n    return this._largeClass;\r\n  }\r\n  set largeClass(val: string) {\r\n    this._largeClass = val;\r\n  }\r\n\r\n  private _lock: string;\r\n  get lock(): string {\r\n    return this._lock;\r\n  }\r\n  set lock(val: string) {\r\n    this._lock = val;\r\n  }\r\n\r\n  public disabledDays: () => Array<Date> ;\r\n\r\n  private _large: boolean;\r\n  get large(): boolean {\r\n    return this._large;\r\n  }\r\n  set large(val: boolean) {\r\n    this._large = val;\r\n  }\r\n\r\n  private _positionOptions: NkOptionsPosition;\r\n  get positionOptions(): NkOptionsPosition {\r\n    return this._positionOptions;\r\n  }\r\n\r\n  private _appendTo: string;\r\n  get appendTo(): string {\r\n    return this._appendTo;\r\n  }\r\n  set appendTo(val: string) {\r\n    this._appendTo = val;\r\n  }\r\n\r\n  constructor() {\r\n    this._positionOptions = new NkOptionsPosition();\r\n  }\r\n}","import {\r\n  animate,\r\n  AnimationTriggerMetadata,\r\n  state,\r\n  style,\r\n  transition,\r\n  trigger,\r\n} from '@angular/animations';\r\n\r\nexport const transformPicker: AnimationTriggerMetadata = trigger('transformPicker', [\r\n  state('showing', style({\r\n    opacity: 1,\r\n    minWidth: 'calc(100%)', \r\n    transform: 'scaleY(1)'\r\n  })),\r\n  state('showing-multiple', style({\r\n    opacity: 1,\r\n    minWidth: 'calc(100% + 64px)', \r\n    transform: 'scaleY(1)'\r\n  })),\r\n  transition('void => *', [\r\n    style({\r\n      opacity: 0,\r\n      minWidth: '100%',\r\n      transform: 'scaleY(0)'\r\n    }),\r\n    animate('150ms cubic-bezier(0.25, 0.8, 0.25, 1)')\r\n  ]),\r\n  transition('* => void', [\r\n    animate('250ms 100ms linear', style({opacity: 0}))\r\n  ])\r\n]);\r\n\r\n","import {\r\n  Directive,\r\n  Input,\r\n  Output,\r\n  ViewContainerRef,\r\n  TemplateRef,\r\n  OnDestroy,\r\n  Renderer2,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  EventEmitter\r\n} from '@angular/core';\r\n\r\nimport {\r\n  NkDateDropperElementDateModel,\r\n  NkDateDropperLangModel\r\n} from './models/index';\r\nimport { NkOptionsPosition } from '../core/position/nkOptionsPosition';\r\nimport { NkPositionBuilder } from '../core/position/nkPositionBuilder';\r\nimport { NkDateDropperI18nConstants } from './models/i18n/index';\r\nimport type { NkDateDropper } from './nkDateDropper.component';\r\n\r\n@Directive({\r\n  selector: '[nk-date-dropper-picker]',\r\n  exportAs: 'nkDateDropperPicker'\r\n\r\n})\r\nexport class NkDateDropperPicker implements OnDestroy, OnChanges {\r\n\r\n  @Input('open') open: boolean = false;\r\n  @Input('pickerAnimateDone') pickerAnimateDone: boolean = false;\r\n  @Input('appendTo') appendTo: string = null;\r\n  @Input('positionOptions') positionOptions: NkOptionsPosition;\r\n  @Input('themeClass') themeClass: string = null;\r\n  @Input('offsetY') offsetY: number = 0;\r\n  @Input('offsetX') offsetX: number = 0;\r\n  @Input('controlDomElement') controlDomElement: Element;\r\n  @Input('control') control: NkDateDropper;\r\n  @Output() backdropClick = new EventEmitter<void>();\r\n\r\n  private _viewContainerRef: ViewContainerRef;\r\n  private _templateRef: TemplateRef<any>;\r\n  private _uiEvent: any;\r\n  private _csse: any;\r\n  private _pickDragged: any;\r\n  private _pickerCtrl: boolean = false;\r\n\r\n  private _positionBuilder: NkPositionBuilder;\r\n  getPositionBuilder(): NkPositionBuilder {\r\n    if (!this._positionBuilder) { this._createPositionBuilder(); }\r\n    return this._positionBuilder;\r\n  }\r\n\r\n  private _hostDomElement: HTMLElement;\r\n  getHostDomElement(): HTMLElement {\r\n    if (!this._hostDomElement) { this._createHostDomElement(); }\r\n    return this._hostDomElement;\r\n  }\r\n\r\n  private _pickerElement: HTMLElement;\r\n\r\n  private _backDropClick: any;\r\n  getBackDropClick(): any {\r\n    if (!this._backDropClick) {\r\n      this._backDropClick = (event: any) => {\r\n        let input = event.target.closest('.nk-date-dropper-control');\r\n        let picker = event.target.closest('.nk-date-dropper-container');\r\n        if (this.controlDomElement != input && this._hostDomElement != picker) {\r\n          this.backdropClick.emit();\r\n        }\r\n      };\r\n    }\r\n    return this._backDropClick;\r\n  }\r\n\r\n  constructor(private _renderer: Renderer2,\r\n    templateRef: TemplateRef<any>,\r\n    viewContainerRef: ViewContainerRef) {\r\n    this._templateRef = templateRef;\r\n    this._viewContainerRef = viewContainerRef;\r\n    this._initUiEvents();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._destroyPicker();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['open']) {\r\n      this.open ? this._openPicker() : this._closePicker();\r\n    }\r\n    if (changes['pickerAnimateDone']) {\r\n      if (!this.open && this.pickerAnimateDone) {\r\n        this._destroyPicker();\r\n      }\r\n    }\r\n  }\r\n\r\n  private _initUiEvents(): void {\r\n    if (this._isTouch()) {\r\n      this._uiEvent = {\r\n        i: 'touchstart',\r\n        m: 'touchmove',\r\n        e: 'touchend'\r\n      }\r\n    }\r\n    else {\r\n      this._uiEvent = {\r\n        i: 'mousedown',\r\n        m: 'mousemove',\r\n        e: 'mouseup'\r\n      }\r\n    }\r\n\r\n    this._csse = {\r\n      t: 'transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd',\r\n      a: 'webkitAnimationEnd mozAnimationEnd oAnimationEnd oanimationend animationend'\r\n    }\r\n\r\n  }\r\n\r\n  private _openPicker(): void {\r\n    let viewRef = this._viewContainerRef.createEmbeddedView(this._templateRef);\r\n    viewRef.detectChanges();\r\n\r\n    var element = this.getHostDomElement();\r\n    viewRef.rootNodes.forEach(rootNode => element.appendChild(rootNode));\r\n    this._createPickerContent();\r\n    this._pickerSetCurrentDate();\r\n    this._pickerSet();\r\n    //is_fx_mobile();\r\n    this._setElementPosition(element);\r\n    document.body.addEventListener('click', this.getBackDropClick());\r\n    document.body.addEventListener('touchstart', this.getBackDropClick());\r\n    this._initEvents();\r\n    if (this._pickerElement.className.indexOf('picker-modal') > 1) {\r\n      let modalOverlay = document.createElement('div');\r\n      modalOverlay.classList.add('picker-modal-overlay');\r\n      document.body.appendChild(modalOverlay);\r\n    }\r\n  }\r\n\r\n  _pickerSetCurrentDate(): void {\r\n\r\n    let pickerDefaultDate = this.control.currentDate || null;\r\n    if (pickerDefaultDate) {\r\n      let defaultDay = pickerDefaultDate.getDate();\r\n      let defaultMonth = pickerDefaultDate.getMonth() + 1;\r\n      let defaultYear = pickerDefaultDate.getFullYear();\r\n\r\n      this.control.model.key.m.current = (defaultMonth && defaultMonth <= 12) ? defaultMonth : this.control.model.key.m.current;\r\n      this.control.model.key.d.current = (defaultDay && defaultDay <= 31) ? defaultDay : this.control.model.key.d.current;\r\n      this.control.model.key.y.current = (defaultYear) ? defaultYear : this.control.model.key.y.current;\r\n\r\n      if (this.control.model.key.y.current > this.control.model.key.y.max) {\r\n        this.control.model.key.y.max = this.control.model.key.y.current;\r\n      }\r\n      if (this.control.model.key.y.current < this.control.model.key.y.min)\r\n        this.control.model.key.y.min = this.control.model.key.y.current;\r\n    }\r\n  }\r\n\r\n  private _pickerSet(): void {\r\n    if (this._pickerElement.className.indexOf('picker-lg') > -1) {\r\n      this._pickerRenderCalendar();\r\n      this._pickerFills();\r\n    }\r\n\r\n  }\r\n\r\n  private _closePicker(): void {\r\n    document.body.removeEventListener('click', this.getBackDropClick());\r\n    document.body.removeEventListener('touchstart', this.getBackDropClick());\r\n    this._viewContainerRef.clear();\r\n  }\r\n\r\n  private _createHostDomElement(): void {\r\n    let container = document.createElement('div');\r\n    this.addManyClasses(container, ['nk-host-container', 'nk-date-dropper-container', 'date-dropper', 'picker-focus']);\r\n    if (this.themeClass) {\r\n      container.classList.add(this.themeClass);\r\n    }\r\n    if (this.appendTo == null) {\r\n      document.body.appendChild(container);\r\n    }\r\n    else if (this.appendTo == 'self') {\r\n      this.controlDomElement.appendChild(container);\r\n      this.controlDomElement.classList.add('nk-date-dropper-picker-self');\r\n    }\r\n    else {\r\n      var appendToElement = document.querySelector(this.appendTo);\r\n      if (appendToElement) {\r\n        appendToElement.appendChild(container);\r\n      } else {\r\n        throw Error('Element for append do not find');\r\n      }\r\n    }\r\n    this._hostDomElement = container;\r\n  }\r\n\r\n  private _createPickerContent() {\r\n    this._pickerElement = this._hostDomElement;\r\n    if (this.control.options.modal) {\r\n      this._pickerElement.classList.add(this.control.options.modal);\r\n    }\r\n    if (this.control.options.theme) {\r\n      this._pickerElement.classList.add(this.control.options.theme);\r\n    }\r\n    if (this.control.options.fxClass) {\r\n      this._pickerElement.classList.add(this.control.options.fxClass);\r\n    }\r\n    if (this.control.options.largeClass) {\r\n      this._pickerElement.classList.add(this.control.options.largeClass);\r\n    }\r\n\r\n    if (this.control.currentDate) {\r\n      this.control.model.key.m.today = this.control.currentDate.getMonth() + 1;\r\n      this.control.model.key.d.today = this.control.currentDate.getDate();\r\n      this.control.model.key.y.today = this.control.currentDate.getFullYear();\r\n      if (this.control.model.key.y.today > this.control.model.key.y.max) {\r\n        this.control.model.key.y.max = this.control.model.key.y.today;\r\n      }\r\n      if (this.control.model.key.y.today < this.control.model.key.y.min) {\r\n        this.control.model.key.y.min = this.control.model.key.y.today;\r\n      }\r\n    }\r\n    let picker = this._pickerElement.querySelector('.picker');\r\n\r\n    for (var k in this.control.model.key) {\r\n      let ul = document.createElement('ul');\r\n      this.addManyClasses(ul, ['pick', 'pick-' + k]);\r\n      ul.setAttribute('data-k', k);\r\n      picker.appendChild(ul);\r\n      this._pickerRenderUl(k);\r\n    }\r\n\r\n\r\n    if (this.control.options.large) {\r\n      let pickLg = document.createElement('div');\r\n      pickLg.classList.add('pick-lg');\r\n      let pickD = this._getPickerEls('.pick-d');\r\n      pickD.parentElement.insertBefore(pickLg, pickD);\r\n\r\n      let pickLgH = document.createElement('ul');\r\n      pickLgH.classList.add('pick-lg-h');\r\n      let pickLgB = document.createElement('ul');\r\n      pickLgB.classList.add('pick-lg-b');\r\n\r\n      pickLg.appendChild(pickLgB);\r\n      pickLg.insertBefore(pickLgH, pickLgB);\r\n      let pickerDayOffset = this._getDaysArray();\r\n\r\n      for (let i = 0; i < 7; i++) {\r\n        let li = document.createElement('li');\r\n        li.innerHTML = (NkDateDropperI18nConstants[this.control.model.lang] as NkDateDropperLangModel).weekdays.short[pickerDayOffset[i]];\r\n        let el = this._getPickerEls('.pick-lg .pick-lg-h');\r\n        el.appendChild(li);\r\n      }\r\n      for (var i = 0; i < 42; i++) {\r\n        let el = this._getPickerEls('.pick-lg .pick-lg-b');\r\n        let li = document.createElement('li');\r\n        el.appendChild(li);\r\n      }\r\n    }\r\n\r\n    ////buttons\r\n    //$('<div>', {\r\n    //  class: 'pick-btns'\r\n    //})\r\n    //  .appendTo(get_picker_els('.picker'));\r\n\r\n    //$('<div>', {\r\n    //  class: 'pick-submit'\r\n    //})\r\n    //  .appendTo(get_picker_els('.pick-btns'));\r\n\r\n    //if (pickers[picker.id].translate) {\r\n    //  $('<div>', {\r\n    //    class: 'pick-btn pick-btn-lng'\r\n    //  })\r\n    //    .appendTo(get_picker_els('.pick-btns'));\r\n    //}\r\n    //if (pickers[picker.id].large) {\r\n    //  $('<div>', {\r\n    //    class: 'pick-btn pick-btn-sz'\r\n    //  })\r\n    //    .appendTo(get_picker_els('.pick-btns'));\r\n    //}\r\n\r\n    //if (picker_format == 'Y' || picker_format == 'm') {\r\n    //  get_picker_els('.pick-d,.pick-btn-sz').hide();\r\n    //  picker.element.addClass('picker-tiny');\r\n    //  if (picker_format == 'Y')\r\n    //    get_picker_els('.pick-m,.pick-btn-lng').hide();\r\n    //  if (picker_format == 'm')\r\n    //    get_picker_els('.pick-y').hide();\r\n    //}\r\n\r\n    //if (picker_init_set) {\r\n    //  picker_ctrl = true;\r\n    //  input_change_value();\r\n    //}\r\n  }\r\n\r\n  private _createPositionBuilder(): void {\r\n    this._positionBuilder = new NkPositionBuilder(this.controlDomElement.firstElementChild);\r\n  }\r\n\r\n  private _setElementPosition(\r\n    element: HTMLElement,\r\n  ): void {\r\n\r\n    element.style.top = null;\r\n    element.style.left = null;\r\n    if (this._pickerElement.className.indexOf('picker-modal') == -1) {\r\n      this.getPositionBuilder().setPosition(element, this.positionOptions);\r\n    }\r\n  }\r\n\r\n  private _destroyPicker(): void {\r\n    this._closePicker();\r\n    if (this._hostDomElement && this._hostDomElement.parentNode != null) {\r\n      this._hostDomElement.parentNode.removeChild(this._hostDomElement);\r\n      this._hostDomElement = null;\r\n    }\r\n    let modalOverlay = document.body.querySelector('.picker-modal-overlay');\r\n    if (modalOverlay) {\r\n      document.body.removeChild(modalOverlay);\r\n    }\r\n  }\r\n\r\n  private _pickerRenderUl(k: string): void {\r\n\r\n    let ul = this._getUl(k);\r\n    let key_values = this.control.model.key[k] as NkDateDropperElementDateModel;\r\n\r\n    //CURRENT VALUE\r\n    this.control.model.key[k].current = key_values.today < key_values.min && key_values.min || key_values.today;\r\n\r\n    for (let i = key_values.min; i <= key_values.max; i++) {\r\n      let html = i.toString();\r\n\r\n      if (k == 'm') {\r\n        let lang = NkDateDropperI18nConstants[this.control.model.lang] as NkDateDropperLangModel;\r\n        html = lang.months.short[i - 1];\r\n      }\r\n\r\n      if (k == 'l') {\r\n        html = (NkDateDropperI18nConstants[Object.keys(NkDateDropperI18nConstants)[i]] as NkDateDropperLangModel).name;\r\n      }\r\n\r\n      html += k == 'd' ? '<span></span>' : '';\r\n\r\n      let li = document.createElement('li');\r\n      li.setAttribute('value', i.toString());\r\n      li.innerHTML = html;\r\n      ul.appendChild(li);\r\n\r\n    }\r\n\r\n    //PREV BUTTON\r\n\r\n    let div = document.createElement('div');\r\n    this.addManyClasses(div, ['pick-arw', 'pick-arw-s1', 'pick-arw-l']);\r\n    div.innerHTML = '<i class=\"pick-i-l\"></i>';\r\n    ul.appendChild(div);\r\n\r\n    //NEXT BUTTON\r\n\r\n    div = document.createElement('div');\r\n    this.addManyClasses(div, ['pick-arw', 'pick-arw-s1', 'pick-arw-r']);\r\n    div.innerHTML = '<i class=\"pick-i-r\"></i>';\r\n    ul.appendChild(div);\r\n\r\n    if (k == 'y') {\r\n\r\n      //PREV BUTTON\r\n\r\n      div = document.createElement('div');\r\n      this.addManyClasses(div, ['pick-arw', 'pick-arw-s2', 'pick-arw-l']);\r\n      div.innerHTML = '<i class=\"pick-i-l\"></i>';\r\n      ul.appendChild(div);\r\n\r\n      //NEXT BUTTON\r\n\r\n      div = document.createElement('div');\r\n      this.addManyClasses(div, ['pick-arw', 'pick-arw-s2', 'pick-arw-r']);\r\n      div.innerHTML = '<i class=\"pick-i-r\"></i>';\r\n      ul.appendChild(div);\r\n    }\r\n\r\n    this._pickerUlTransition(k, (this.control.model.key[k] as NkDateDropperElementDateModel).current);\r\n\r\n  }\r\n\r\n  private _getUl(k: string): HTMLElement {\r\n    return this._getPickerEls('ul.pick[data-k=\"' + k + '\"]');\r\n  }\r\n\r\n  private _getEq(k: string, d: string): number {\r\n    let ul = this._getUl(k);\r\n    let o = [];\r\n    Array.from(ul.querySelectorAll('li')).forEach((item: HTMLElement) => {\r\n      o.push(parseInt(item.getAttribute('value')));\r\n    });\r\n\r\n    if (d == 'last')\r\n      return o[o.length - 1];\r\n    else\r\n      return o[0];\r\n\r\n  }\r\n\r\n  private _getPickerEls(selector: string): HTMLElement {\r\n    return this._pickerElement.querySelector(selector) as HTMLElement;\r\n  }\r\n\r\n  private _pickerRenderCalendar(): void {\r\n\r\n    let index = 0;\r\n    let w = this._getPickerEls('.pick-lg-b');\r\n\r\n    Array.from(w.querySelectorAll('li')).forEach((item) => {\r\n      item.innerHTML = '';\r\n      this.removeManyClasses(item, ['pick-n', 'pick-b', 'pick-a', 'pick-v', 'pick-lk', 'pick-sl', 'pick-h', 'pick-disable']);\r\n      item.setAttribute('data-value', '');\r\n    });\r\n\r\n    let _C = new Date(this._getCurrentFull());\r\n    let _S = new Date(this._getCurrentFull());\r\n    let _L = new Date(this._getCurrentFull());\r\n    _L.setMonth(_L.getMonth() - 1);\r\n    _S.setDate(1);\r\n\r\n    let o = _S.getDay() - 1;\r\n    if (o < 0) {\r\n      o = 6;\r\n    }\r\n    if (NkDateDropperI18nConstants[this.control.options.lang].gregorian) {\r\n      o--;\r\n      if (o < 0) {\r\n        o = 6;\r\n      }\r\n    }\r\n\r\n    //before\r\n    for (let i = this._NUM(_L) - o; i <= this._NUM(_L); i++) {\r\n      let h = Array.from(w.querySelectorAll('li'))[index];\r\n      h.innerHTML = i.toString();\r\n      this.addManyClasses(h, ['pick-b', 'pick-n', 'pick-h', 'pick-disable']);\r\n      index++;\r\n    }\r\n    //current\r\n    for (let i = 1; i <= this._NUM(_S); i++) {\r\n      let h = Array.from(w.querySelectorAll('li'))[index];\r\n      h.innerHTML = i.toString();\r\n      this.addManyClasses(h, ['pick-n', 'pick-v']);\r\n      h.setAttribute('data-value', i.toString());\r\n      index++;\r\n    }\r\n    //after\r\n    if (Array.from(w.querySelectorAll('li.pick-n')).length < 42) {\r\n      let e = 42 - Array.from(w.querySelectorAll('li.pick-n')).length;\r\n      for (let i = 1; i <= e; i++) {\r\n        let h = Array.from(w.querySelectorAll('li'))[index];\r\n        h.innerHTML = i.toString();\r\n        this.addManyClasses(h, ['pick-a', 'pick-n', 'pick-h', 'pick-disable']);\r\n        index++;\r\n      }\r\n    }\r\n    if (this.control.model.lock) {\r\n      if (this.control.model.lock === 'from') {\r\n        if (this.control.model.key.y.current <= this.control.model.key.y.today) {\r\n          if (this.control.model.key.y.current < this.control.model.key.y.today) {\r\n            this._getPickerElsAll('.pick-lg .pick-lg-b li').forEach((item) => {\r\n              item.classList.add('pick-lk');\r\n            })\r\n          }\r\n          else if (this.control.model.key.m.current == this.control.model.key.m.today) {\r\n            this._getSiblings(this._getPickerEls('.pick-lg .pick-lg-b li.pick-v[data-value=\"' + this.control.model.key.d.today + '\"]'), 'prev').forEach(\r\n              (item) => {\r\n                item.classList.add('pick-lk');\r\n              });\r\n          }\r\n\r\n          else {\r\n            if (this.control.model.key.m.current < this.control.model.key.m.today) {\r\n              this._getPickerElsAll('.pick-lg .pick-lg-b li').forEach((item) => {\r\n                item.classList.add('pick-lk');\r\n              })\r\n            }\r\n            else if (this.control.model.key.m.current > this.control.model.key.m.today && this.control.model.key.y.current < this.control.model.key.y.today) {\r\n              this._getPickerElsAll('.pick-lg .pick-lg-b li').forEach((item) => {\r\n                item.classList.add('pick-lk');\r\n              })\r\n            }\r\n          }\r\n        }\r\n      }\r\n      else {\r\n        if (this.control.model.key.y.current >= this.control.model.key.y.today) {\r\n          if (this.control.model.key.m.current == this.control.model.key.m.today) {\r\n            this._getSiblings(this._getPickerEls('.pick-lg .pick-lg-b li.pick-v[data-value=\"' + this.control.model.key.d.today + '\"]'), 'next').forEach(\r\n              (item) => {\r\n                item.classList.add('pick-lk');\r\n              });\r\n          }\r\n          else {\r\n            if (this.control.model.key.m.current > this.control.model.key.m.today) {\r\n              this._getPickerElsAll('.pick-lg .pick-lg-b li').forEach((item) => {\r\n                item.classList.add('pick-lk');\r\n              })\r\n            }\r\n            else if (this.control.model.key.m.current < this.control.model.key.m.today && this.control.model.key.y.current > this.control.model.key.y.today) {\r\n              this._getPickerElsAll('.pick-lg .pick-lg-b li').forEach((item) => {\r\n                item.classList.add('pick-lk');\r\n              })\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n    this.control.options.disabledDays().forEach((item) => {\r\n      let d = new Date(item);\r\n      if (d.getMonth() + 1 == this.control.model.key.m.current && d.getFullYear() == this.control.model.key.y.current)\r\n        this._getPickerEls('.pick-lg .pick-lg-b li.pick-v[data-value=\"' + d.getDate() + '\"]').classList.add('pick-lk');\r\n    });\r\n\r\n    let currentDateFrom = new Date(this.control.model.key.y.current, this.control.model.key.m.current - 1, 1);\r\n    let currentDateTo = new Date(this.control.model.key.y.current, this.control.model.key.m.current, 1);\r\n    currentDateTo.setDate(0);\r\n    if (this.control.minDate) {\r\n      let lockdate = new Date(this.control.minDate.getFullYear(), this.control.minDate.getMonth(), this.control.minDate.getDate());\r\n      if (currentDateFrom <= lockdate && lockdate <= currentDateTo) {\r\n        let dayNumber = lockdate.getDate();\r\n        for (let i = 1; i < dayNumber; i++) {\r\n          lockdate.setDate(lockdate.getDate() - 1);\r\n          this._getPickerEls('.pick-lg .pick-lg-b li.pick-v[data-value=\"' + lockdate.getDate() + '\"]').classList.add('pick-lk');\r\n        }\r\n      } else if (currentDateTo < lockdate) {\r\n        this._getPickerElsAll('.pick-lg .pick-lg-b li.pick-v').forEach((item) => {\r\n          item.classList.add('pick-lk');\r\n        })\r\n      }\r\n    }\r\n\r\n    if (this.control.maxDate) {\r\n      let lockdate = new Date(this.control.maxDate.getFullYear(), this.control.maxDate.getMonth(), this.control.maxDate.getDate());\r\n      if (currentDateFrom <= lockdate && lockdate <= currentDateTo) {\r\n        let dayNumber = lockdate.getDate() + 1;\r\n        let monthNumber = lockdate.getMonth();\r\n        for (let i = dayNumber; monthNumber == lockdate.getMonth(); i++) {\r\n          let el = this._getPickerEls('.pick-lg .pick-lg-b li.pick-v[data-value=\"' + i + '\"]');\r\n          if (el) {\r\n            el.classList.add('pick-lk');\r\n          }\r\n          lockdate.setDate(lockdate.getDate() + 1);\r\n        }\r\n      } else if (currentDateFrom > lockdate) {\r\n        this._getPickerElsAll('.pick-lg .pick-lg-b li.pick-v').forEach((item) => {\r\n          item.classList.add('pick-lk');\r\n        })\r\n      }\r\n    }\r\n    let el = this._getPickerEls('.pick-lg-b li.pick-v[data-value=\"' + this.control.model.key.d.current + '\"]');\r\n    if (el) {\r\n      el.classList.add('pick-sl');\r\n    }\r\n\r\n  }\r\n\r\n  private _pickerFills(): void {\r\n    let month = this.control.model.key.m.current;\r\n    let year = this.control.model.key.y.current;\r\n    let l = ((year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0));\r\n    this.control.model.key.d.max = [31, (l ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1];\r\n\r\n    if (this.control.model.key.d.current > this.control.model.key.d.max) {\r\n      this.control.model.key.d.current = this.control.model.key.d.max;\r\n      this._pickerUlTransition('d', this.control.model.key.d.current);\r\n    }\r\n\r\n    let todayDate = new Date();\r\n    let today_d = todayDate.getDate();\r\n    let today_m = todayDate.getMonth() + 1;\r\n    let today_y = todayDate.getFullYear();\r\n\r\n    this._getPickerElsAll('.pick-d li').forEach((item) => {\r\n      this.removeManyClasses(item, ['pick-wke', 'pick-current-day']);\r\n      let d = new Date(month + '/' + item.getAttribute('value') + '/' + year).getDay();\r\n      let current_date = new Date(month + '/' + item.getAttribute('value') + '/' + year).getDate();\r\n      item.querySelector('span').innerHTML = (NkDateDropperI18nConstants[this.control.options.lang].weekdays.full[d]);\r\n\r\n      if (d == 0 || d == 6) {\r\n        item.classList.add('pick-wke');\r\n      }\r\n\r\n      if (today_d == current_date && today_m == month && today_y == year) {\r\n        item.classList.add('pick-current-day');\r\n      }\r\n\r\n    });\r\n\r\n    if (this._pickerElement.className.indexOf('picker-lg') > -1) {\r\n      this._getPickerElsAll('.pick-lg-b li').forEach((item) => {\r\n        this.removeManyClasses(item, ['pick-wke', 'pick-current-day']);\r\n      });\r\n      this._getPickerElsAll('.pick-lg-b li.pick-v').forEach((item) => {\r\n\r\n        var d = new Date(month + '/' + item.getAttribute('data-value') + '/' + year).getDay();\r\n        var current_date = new Date(month + '/' + item.getAttribute('data-value') + '/' + year).getDate();\r\n        if (d === 0 || d === 6) {\r\n          item.classList.add('pick-wke');\r\n        }\r\n        if (today_d == current_date && today_m == month && today_y == year) {\r\n          item.classList.add('pick-current-day');\r\n        }\r\n\r\n      });\r\n    }\r\n  }\r\n  private _getPickerElsAll(selector: string): Array<HTMLElement> {\r\n    return Array.from(this._pickerElement.querySelectorAll(selector)) as Array<HTMLElement>;\r\n  }\r\n\r\n  private _pickerUlTransition(k: string, i: number): void {\r\n\r\n    let ul = this._getUl(k);\r\n    Array.from(ul.querySelectorAll('li')).forEach((item) => { this.removeManyClasses(item, ['pick-sl', 'pick-bfr', 'pick-afr']) });\r\n\r\n    if (i == this._getEq(k, 'last')) {\r\n      let li = ul.querySelector('li[value=\"' + this._getEq(k, 'first') + '\"]');\r\n      ul.insertBefore(li.cloneNode(true), ul.querySelector('li[value=\"' + i.toString() + '\"]').nextSibling);\r\n      li.remove();\r\n    }\r\n    if (i == this._getEq(k, 'first')) {\r\n      let li = ul.querySelector('li[value=\"' + this._getEq(k, 'last') + '\"]');\r\n      ul.insertBefore(li.cloneNode(true), ul.querySelector('li[value=\"' + i.toString() + '\"]'));\r\n      li.remove();\r\n    }\r\n\r\n    ul.querySelector('li[value=\"' + i.toString() + '\"]').classList.add('pick-sl');\r\n    this._getSiblings(ul.querySelector('li.pick-sl') as HTMLElement, 'next').forEach((item) => {\r\n      item.classList.add('pick-afr');\r\n    });\r\n    this._getSiblings(ul.querySelector('li.pick-sl') as HTMLElement, 'prev').forEach((item) => {\r\n      item.classList.add('pick-bfr');\r\n    });\r\n\r\n  }\r\n\r\n  private _getSiblings(element: HTMLElement, typeSibling: string): Array<HTMLElement> {\r\n    var arraySib = [];\r\n    if (typeSibling == 'prev') {\r\n      while (element = element.previousSibling as HTMLElement) {\r\n        arraySib.push(element);\r\n      }\r\n    } else if (typeSibling == 'next') {\r\n      while (element = element.nextSibling as HTMLElement) {\r\n        arraySib.push(element);\r\n      }\r\n    }\r\n    return arraySib;\r\n  }\r\n\r\n  private _getDaysArray(): Array<number> {\r\n    if (NkDateDropperI18nConstants[this.control.options.lang].gregorian)\r\n      return [1, 2, 3, 4, 5, 6, 0];\r\n    else\r\n      return [0, 1, 2, 3, 4, 5, 6];\r\n  }\r\n\r\n  private _getCurrentFull(): string {\r\n    return this.control.model.key.m.current + '/' + this.control.model.key.d.current + '/' + this.control.model.key.y.current;\r\n  }\r\n\r\n  private _getTodayFull(): string {\r\n    return this._getToday('m') + '/' + this._getToday('d') + '/' + this._getToday('y');\r\n  }\r\n\r\n  private _getToday(k: string): number {\r\n    return parseInt(this.control.model.key[k].today);\r\n  }\r\n\r\n  private _NUM(d: Date): any {\r\n    let m = d.getMonth();\r\n    let y = d.getFullYear();\r\n    let l = ((y % 4) == 0 && ((y % 100) != 0 || (y % 400) == 0));\r\n    return [31, (l ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][m];\r\n  };\r\n\r\n  private _isTouch(): boolean {\r\n    if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))\r\n      return true;\r\n    else\r\n      return false;\r\n  };\r\n\r\n  private _pickerUlTurn(k: string, direct: string): void {\r\n    let v = this.control.model.key[k].current;\r\n    if (direct == 'right') {\r\n      v++;\r\n    } else {\r\n      v--;\r\n    }\r\n    this._pickerValuesIncrease(k, v);\r\n\r\n  }\r\n\r\n  private _pickerValuesIncrease(k: string, v: number): void {\r\n\r\n    let key_values = this.control.model.key[k] as NkDateDropperElementDateModel;\r\n\r\n    if (v > key_values.max) {\r\n      if (k == 'd')\r\n        this._pickerUlTurn('m', 'right');\r\n      if (k == 'm')\r\n        this._pickerUlTurn('y', 'right');\r\n      v = key_values.min;\r\n    }\r\n    if (v < key_values.min) {\r\n      if (k == 'd')\r\n        this._pickerUlTurn('m', 'left');\r\n      if (k == 'm')\r\n        this._pickerUlTurn('y', 'left');\r\n      v = key_values.max;\r\n    }\r\n    (this.control.model.key[k] as NkDateDropperElementDateModel).current = v;\r\n    this._pickerUlTransition(k, v);\r\n\r\n  }\r\n\r\n  private _initEvents(): void {\r\n    //this._initLockAnimationEvent();\r\n    this._initLargeModeDayClick();\r\n    this._initDefaultArrowEvent();\r\n    this._initJumpEvents();\r\n    this._initToggleCalendarEvents();\r\n    this._initToggleTranslateModeEvents();\r\n    this._initMouseDownOnUl();\r\n    this._initMouseMoveOnUl();\r\n    this._initMouseUpOnUl();\r\n  }\r\n\r\n  //private _initLockAnimationEvent(): void {\r\n  //  this._hostDomElement.addEventListener(this._csse.a, (e) => {\r\n\r\n  //    if (this._hostDomElement.className.indexOf('picker-rmbl') > -1) {\r\n  //      e.target.classList.remove('picker-rmbl');\r\n  //    }\r\n\r\n  //  });\r\n  //}\r\n\r\n  private _initLargeModeDayClick(): void {\r\n    this._addEventListenerForCollection(\r\n      this._pickerElement,\r\n      this._uiEvent.i,\r\n      '.pick-lg li.pick-n',\r\n      (e) => {\r\n        let value = e.currentTarget.getAttribute('data-value');\r\n        if (!value) {\r\n          return;\r\n        }\r\n        this._getPickerElsAll('.pick-lg-b li').forEach((item) => { item.classList.remove('pick-sl') });\r\n        e.currentTarget.classList.add('pick-sl');\r\n        this.control.model.key.d.current = value;\r\n        this._pickerUlTransition('d', value);\r\n        this._pickerCtrl = true;\r\n      });\r\n  }\r\n\r\n  private _initDefaultArrowEvent(): void {\r\n    this._addEventListenerForCollection(\r\n      this._pickerElement,\r\n      this._uiEvent.i,\r\n      '.pick-arw.pick-arw-s1',\r\n      (e) => {\r\n        e.preventDefault();\r\n        this._pickDragged = null;\r\n        let k = e.target.closest('ul').getAttribute('data-k');\r\n        if (e.currentTarget.className.indexOf('pick-arw-r') > -1) {\r\n          this._pickerUlTurn(k, 'right');\r\n        } else {\r\n          this._pickerUlTurn(k, 'left');\r\n        }\r\n        this._pickerCtrl = true;\r\n      });\r\n  }\r\n\r\n  private _initJumpEvents(): void {\r\n\r\n    this._addEventListenerForCollection(\r\n      this._pickerElement,\r\n      this._uiEvent.i,\r\n      'ul.pick.pick-y li',\r\n      (e) => {\r\n        //is_click = true;\r\n      });\r\n\r\n    this._addEventListenerForCollection(\r\n      this._pickerElement,\r\n      this._uiEvent.e,\r\n      'ul.pick.pick-y li',\r\n      (e) => {\r\n        //if (is_click && is_jumpable()) {\r\n        //  $(this).closest('ul').toggleClass('pick-jump');\r\n        //  var\r\n        //    jumped = get_closest_jumped(get_current('y'), get_jumped('y', pickers[picker.id].jump));\r\n        //  pickers[picker.id].key['y'].current = jumped;\r\n        //  picker_ul_transition('y', get_current('y'));\r\n        //  is_click = false;\r\n        //}\r\n      });\r\n\r\n  }\r\n\r\n  private _initToggleCalendarEvents(): void {\r\n\r\n    this._addEventListenerForCollection(\r\n      this._pickerElement,\r\n      this._uiEvent.i,\r\n      'ul.pick.pick-d li',\r\n      (e) => {\r\n        //is_click = true;\r\n      });\r\n\r\n    this._addEventListenerForCollection(\r\n      this._pickerElement,\r\n      this._uiEvent.e,\r\n      'ul.pick.pick-d li',\r\n      (e) => {\r\n        //if (is_click) {\r\n        //  picker_large_onoff();\r\n        //  is_click = false;\r\n        //}\r\n      });\r\n\r\n  }\r\n\r\n  private _initToggleTranslateModeEvents(): void {\r\n\r\n    this._addEventListenerForCollection(\r\n      this._pickerElement,\r\n      this._uiEvent.i,\r\n      'ul.pick.pick-l li',\r\n      (e) => {\r\n        //is_click = true;\r\n      });\r\n\r\n    this._addEventListenerForCollection(\r\n      this._pickerElement,\r\n      this._uiEvent.e,\r\n      'ul.pick.pick-l li',\r\n      (e) => {\r\n        //if (is_click) {\r\n        //  picker_translate_onoff();\r\n        //  picker_translate($(this).val());\r\n        //  is_click = false;\r\n        //}\r\n      });\r\n\r\n  }\r\n\r\n  private _initMouseDownOnUl(): void {\r\n\r\n    this._addEventListenerForCollection(\r\n      this._pickerElement,\r\n      this._uiEvent.i,\r\n      'ul.pick',\r\n      (e) => {\r\n        //this._pickDragged = $(this);\r\n        //if (pick_dragged) {\r\n        //  var\r\n        //    k = pick_dragged.data('k');\r\n        //  pick_drag_offset = is_touch() ? e.originalEvent.touches[0].pageY : e.pageY;\r\n        //  pick_drag_temp = get_current(k);\r\n        //}\r\n\r\n      });\r\n\r\n  }\r\n\r\n  private _initMouseMoveOnUl(): void {\r\n    document.body.addEventListener(this._uiEvent.m, (e) => {\r\n\r\n      //is_click = false;\r\n\r\n      //if (pick_dragged) {\r\n      //  e.preventDefault();\r\n      //  var\r\n      //    k = pick_dragged.data('k');\r\n      //  o = is_touch() ? e.originalEvent.touches[0].pageY : e.pageY;\r\n      //  o = pick_drag_offset - o;\r\n      //  o = Math.round(o * .026);\r\n      //  i = pick_drag_temp + o;\r\n      //  var\r\n      //    int = get_clear(k, i);\r\n      //  if (int != pickers[picker.id].key[k].current)\r\n      //    picker_values_increase(k, int);\r\n\r\n      //  picker_ctrl = true;\r\n      //}\r\n\r\n\r\n    });\r\n  }\r\n\r\n  private _initMouseUpOnUl(): void {\r\n\r\n    //document.body.addEventListener(this._uiEvent.e, (e) => {\r\n\r\n    //  if (pick_dragged)\r\n    //    pick_dragged = null,\r\n    //      pick_drag_offset = null,\r\n    //      pick_drag_temp = null;\r\n    //  if (picker) {\r\n    //    picker_set();\r\n    //    if ($(e.target).parent().hasClass('pick-lg-b') && !($(e.target).hasClass('pick-h'))) {\r\n    //      input_change_value();\r\n\r\n    //      pick_dragged = null;\r\n    //    }\r\n\r\n    //  }\r\n\r\n    // });\r\n\r\n    this._addEventListenerForCollection(\r\n      this._pickerElement,\r\n      this._uiEvent.e,\r\n      'ul',\r\n      (e) => {\r\n        this._pickerSet();\r\n        if (e.target.className.indexOf('pick-lk') == -1) {\r\n          if ((e.target.parentElement.className.indexOf('pick-lg-b') > -1 || e.target.parentElement.className.indexOf('pick-d') > -1) && e.target.className.indexOf('pick-h') == -1) {\r\n            this.control.onBeforeClose().subscribe((confirm) => {\r\n              if (confirm) {\r\n                this._changeValue();\r\n                this._pickerHide();\r\n              }\r\n            });\r\n          }\r\n        } else {\r\n          this._pickerAlrt();\r\n        }\r\n\r\n      });\r\n  }\r\n\r\n  private _changeValue(): void {\r\n    if (\r\n      //!this._isLocked() &&\r\n      this._pickerCtrl) {\r\n\r\n      let date = new Date(this.control.model.key.m.current + '/' + this.control.model.key.d.current + '/' + this.control.model.key.y.current);\r\n      //TODO:SM: need to add a parameter to support the display of the date as a string (the default is used as the date of the type)\r\n      //str =\r\n      //pickers[picker.id].format\r\n      //.replace(/\\b(d)\\b/g, input_fill(d))\r\n      //.replace(/\\b(m)\\b/g, input_fill(m))\r\n      //.replace(/\\b(S)\\b/g, input_ordinal_suffix(d)) //new\r\n      //.replace(/\\b(Y)\\b/g, y)\r\n      //.replace(/\\b(U)\\b/g, get_unix(get_current_full())) //new\r\n      //.replace(/\\b(D)\\b/g, i18n[pickers[picker.id].lang].weekdays.short[get_day])\r\n      //.replace(/\\b(l)\\b/g, i18n[pickers[picker.id].lang].weekdays.full[get_day])\r\n      //.replace(/\\b(F)\\b/g, i18n[pickers[picker.id].lang].months.full[m - 1])\r\n      //.replace(/\\b(M)\\b/g, i18n[pickers[picker.id].lang].months.short[m - 1])\r\n      //.replace(/\\b(n)\\b/g, m)\r\n      //.replace(/\\b(j)\\b/g, d);\r\n      //dateFromInput = new Date(picker.input.val());\r\n      //dateFromInput.setHours(0);\r\n      //dateFromInput.setMinutes(0);\r\n      //dateFromInput.setSeconds(0);\r\n      //if (dateFromInput.valueOf() != date.valueOf()) {\r\n      //  picker.input.val(date).change();\r\n      //}\r\n      this.control.onSelectDate.emit(date);\r\n      this.control.changeValue(date);\r\n    }\r\n  }\r\n\r\n  private _pickerHide(): void {\r\n    this.control.close();\r\n  }\r\n\r\n  private _addEventListenerForCollection(element: HTMLElement, event: string, selector: string, callback: any): void {\r\n    Array.from(element.querySelectorAll(selector)).forEach((item) => {\r\n      item.addEventListener(this._uiEvent.i, callback);\r\n    });\r\n  }\r\n\r\n  //private _isLocked(): boolean {\r\n  //  let unix_current = this._getUnix(this._getCurrentFull());\r\n  //  let unix_today = this._getUnix(this._getTodayFull());\r\n\r\n  //  if (this.control.options.lock == 'from') {\r\n  //    if (unix_current < unix_today) {\r\n  //      this._hostDomElement.classList.add('picker-lkd');\r\n  //      return true;\r\n  //    }\r\n  //    else {\r\n  //      this._hostDomElement.classList.remove('picker-lkd');\r\n  //      return false;\r\n  //    }\r\n  //  }\r\n  //  if (this.control.options.lock == 'to') {\r\n  //    if (unix_current > unix_today) {\r\n  //      this._hostDomElement.classList.add('picker-lkd');\r\n  //      return true;\r\n  //    }\r\n  //    else {\r\n  //      this._hostDomElement.classList.remove('picker-lkd');\r\n  //      return false;\r\n  //    }\r\n  //  }\r\n\r\n\r\n  //  //if (pickers[picker.id].disabledays) {\r\n  //  //  if (pickers[picker.id].disabledays.indexOf(unix_current) != -1) {\r\n  //  //    picker_alrt();\r\n  //  //    picker.element.addClass('picker-lkd');\r\n  //  //    return true;\r\n  //  //  }\r\n  //  //  else {\r\n  //  //    picker.element.removeClass('picker-lkd');\r\n  //  //    return false;\r\n  //  //  }\r\n  //  //}\r\n\r\n  //  if (this.control.options.minDate) {\r\n  //    //let lockdate = new Date(this.control.options.minDate * 1000);\r\n  //    //lockdate.setDate(lockdate.getDate() - 1);\r\n  //    //lockdate = get_unix(lockdate);\r\n  //    //if (unix_current < lockdate) {\r\n  //    //  this._hostDomElement.classList.add('picker-lkd');\r\n  //    //  return true;\r\n  //    //}\r\n  //    //else {\r\n  //    //  this._hostDomElement.classList.remove('picker-lkd');\r\n  //    //}\r\n  //  }\r\n\r\n  //  if (this.control.options.maxDate) {\r\n  //    //if (unix_current > this.control.options.maxDate) {\r\n  //    //  this._hostDomElement.classList.add('picker-lkd');\r\n  //    //  return true;\r\n  //    //}\r\n  //    //else {\r\n  //    //  this._hostDomElement.classList.remove('picker-lkd');\r\n  //    //}\r\n  //  }\r\n  //  return false;\r\n  //}\r\n\r\n  //_getUnix(d: string): Number {\r\n  //  return Date.parse(d) / 1000;\r\n  //}\r\n\r\n  _pickerAlrt(): void {\r\n    this._hostDomElement.classList.add('picker-rmbl');\r\n    setTimeout(() => {\r\n      this._hostDomElement.classList.remove('picker-rmbl');\r\n    }, 400)\r\n  }\r\n\r\n  private addManyClasses(el: HTMLElement, cssClasses: Array<string>): void {\r\n    cssClasses.forEach(cssClass => el.classList.add(cssClass));\r\n  }\r\n\r\n  private removeManyClasses(el: HTMLElement, cssClasses: Array<string>): void {\r\n    cssClasses.forEach(cssClass => el.classList.remove(cssClass));\r\n  }\r\n\r\n}\r\n","import {\r\n    Component,\r\n    OnInit,\r\n    ViewEncapsulation,\r\n    Input\r\n} from '@angular/core';\r\nimport {\r\n    FormGroup,\r\n    FormControl,\r\n    AbstractControl,\r\n} from '@angular/forms';\r\nimport type { NkDateDropper } from './nkDateDropper.component';\r\nimport { DatePipe } from '@angular/common';\r\nimport moment from 'moment';\r\n\r\n@Component({\r\n    selector: 'nk-date-input',\r\n    encapsulation: ViewEncapsulation.None,\r\n    template: `<div [formGroup]=\"localFormGroup\">\r\n    <input formControlName=\"controlDate\"\r\n           type=\"text\" />\r\n    </div>`,\r\n})\r\n\r\nexport class NkDateInput implements OnInit {\r\n\r\n    private datePipe: DatePipe;\r\n\r\n    public localFormGroup: FormGroup;\r\n\r\n    @Input() instance: NkDateDropper;\r\n    constructor() {\r\n        //TODO:SM: set locale from options\r\n        this.datePipe = new DatePipe('en-US');\r\n        this.localFormGroup = new FormGroup({\r\n            controlDate: new FormControl(),\r\n        });\r\n        this.localFormGroup.controls.controlDate.valueChanges.subscribe((dateAsString) => {\r\n            dateAsString = (dateAsString || '').trim();\r\n            let isValid = true;\r\n            if (dateAsString === '') {\r\n                this.instance.changeValue(null);\r\n            } else {\r\n                const momentDate = moment(dateAsString, this.instance.options.format.toUpperCase(), true);\r\n                isValid = momentDate.isValid();\r\n                if (isValid) {\r\n                    const date = momentDate.toDate();\r\n                    this.instance.changeValue(date);\r\n                }\r\n            }\r\n            this.handleErrorState(isValid, this.instance.formControl);\r\n        });\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        setTimeout(() => {\r\n            this.localFormGroup.controls.controlDate.setValue(this.datePipe.transform(this.instance.currentDate, this.instance.options.format));\r\n            this.localFormGroup.controls.controlDate.markAsPristine();\r\n            this.instance.formControl.markAsPristine();\r\n        });\r\n        this.instance.onSelectDate.subscribe((value: Date) => {\r\n            this.localFormGroup.controls.controlDate.setValue(this.datePipe.transform(value, this.instance.options.format));\r\n        })\r\n    }\r\n\r\n    private handleErrorState(isValid: boolean, control: AbstractControl): void {\r\n        const errors = control.errors || {};\r\n        if (!isValid) {\r\n            errors.incorrect = true;\r\n            control.setErrors(errors);\r\n            this.localFormGroup.controls.controlDate.setErrors({ incorrect: true });\r\n        } else {\r\n            if ('incorrect' in errors) {\r\n                delete errors.incorrect;\r\n                Object.entries(errors).length === 0 ? control.setErrors(null) : control.setErrors(errors);\r\n\r\n            }\r\n\r\n            this.localFormGroup.controls.controlDate.setErrors(null);\r\n        }\r\n    }\r\n\r\n}\r\n","import {\r\n    Component,\r\n    Input,\r\n    Output,\r\n    EventEmitter,\r\n    ElementRef,\r\n    forwardRef,\r\n    Attribute,\r\n    OnInit,\r\n    Injector,\r\n    ViewEncapsulation,\r\n    Optional\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n    ControlValueAccessor,\r\n    NG_VALUE_ACCESSOR,\r\n    NgControl,\r\n    FormGroup,\r\n    FormControl,\r\n    NgForm,\r\n    FormGroupDirective,\r\n    Validators\r\n} from '@angular/forms';\r\nimport { NkDateDropperControlModel } from './models/nkDateDropper.control.model';\r\nimport { NkDateDropperOptionsModel } from './models/nkDateDropper.options.model';\r\n\r\nimport {\r\n    transformPicker\r\n} from './nkDateDropper.animation';\r\nimport { DELETE } from '../core/keyCodes';\r\nimport {\r\n    fadeInContent\r\n} from '../core/animation/index';\r\n\r\n@Component({\r\n    selector: 'nk-date-dropper',\r\n    encapsulation: ViewEncapsulation.None,\r\n    templateUrl: './nkDateDropper.html',\r\n    styleUrls: ['./nkDateDropper.scss'],\r\n    host: {\r\n        '[class.nk-date-dropper-disabled]': 'disabled',\r\n        'class': 'nk-date-dropper-control',\r\n    },\r\n    animations: [\r\n        transformPicker,\r\n        fadeInContent\r\n    ],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => NkDateDropper),\r\n            multi: true\r\n        }],\r\n    exportAs: 'nkDateDropper'\r\n})\r\n\r\nexport class NkDateDropper implements ControlValueAccessor, OnInit {\r\n\r\n    name = 'NkDateDropper';\r\n    model: NkDateDropperControlModel;\r\n\r\n    @Input('min-year') _minYear: number = 1970;\r\n    @Input('max-year') _maxYear: number = new Date().getFullYear();\r\n    @Input('default-date') _defaultDate: string = null;\r\n    @Input('disabled-days') _disabledDays: () => Array<Date> = () => { return [] };\r\n    @Input('format') _format: string = 'MM/dd/yyyy';\r\n    @Input('fx') _fx: boolean = true;\r\n    @Input('fx-mobile') _fxMobile: boolean = true;\r\n    @Input('init-set') _initSet: boolean = true;\r\n    @Input('lang') _lang: string = 'en';\r\n    @Input('large-mode') _largeMode: boolean = false;\r\n    @Input('large-default') _largeDefault: boolean = false;\r\n    @Input('lock') _lock: string = null; //from|to\r\n    @Input('jump') _jump: number = 10;\r\n    @Input('modal') _modal: boolean = false;\r\n    @Input('theme') _theme: string = 'primary';\r\n    @Input('translate-mode') _translateMode: boolean = false;\r\n    @Input('appendTo') _appendTo: string = null;\r\n    @Input('nkDateDroppeFormGroup') _formGroup: FormGroup;\r\n    @Input('nkDateDroppeInputReadonly') _inputReadonly: boolean = true;\r\n\r\n    //events\r\n    @Output('nkDateDropperOnOpen') onOpen: EventEmitter<any> = new EventEmitter();\r\n    @Output('nkDateDropperOnClose') onClose: EventEmitter<any> = new EventEmitter();\r\n    @Output('nkDateDropperOnChange') onChange: EventEmitter<any> = new EventEmitter();\r\n    @Output('nkDateDropperOnBeforeClose') onBeforeClose: () => Observable<boolean> = () => { return new Observable((observer: any) => { observer.next(true) }) };\r\n\r\n    public onSelectDate: EventEmitter<any> = new EventEmitter();\r\n\r\n    _origin: HTMLElement;\r\n    _input: HTMLElement;\r\n    _pickerDoneAnimating: boolean = false;\r\n\r\n    public transformOrigin: string = 'top';\r\n\r\n    private _options: NkDateDropperOptionsModel = new NkDateDropperOptionsModel();\r\n    public get options(): NkDateDropperOptionsModel {\r\n        return this._options;\r\n    }\r\n\r\n    private _required: boolean = false;\r\n    @Input()\r\n    get required() {\r\n        return this._required;\r\n    }\r\n    set required(value: any) {\r\n        this.setRequired(value);\r\n    }\r\n\r\n    private _isOpen = false;\r\n    public get isOpen(): boolean {\r\n        return this._isOpen;\r\n    }\r\n\r\n    @Input('min-date') _minDate: Date;\r\n    public get minDate(): Date {\r\n        return this._minDate;\r\n    }\r\n    public set minDate(value: Date) {\r\n        this._minDate = value;\r\n    }\r\n\r\n    @Input('max-date') _maxDate: Date;\r\n    public get maxDate(): Date {\r\n        return this._maxDate;\r\n    }\r\n    public set maxDate(value: Date) {\r\n        this._maxDate = value;\r\n    }\r\n\r\n    @Input('disabled') _disabled: boolean;\r\n    public get disabled(): boolean {\r\n        return this.formControl.disabled;\r\n    }\r\n    public set disabled(value: boolean) {\r\n        if (!value) {\r\n            this.formControl.disable();\r\n        } else {\r\n            this.formControl.enable();\r\n        }\r\n    }\r\n\r\n    private _formControl: FormControl;\r\n    public get formControl(): FormControl {\r\n        if (this._control) {\r\n            return this._control.control as FormControl || this._formControl;\r\n        }\r\n        return this._formControl;\r\n    }\r\n\r\n    private _onChange: (value: Date) => void = () => {\r\n\r\n    };\r\n    private _onTouched: () => void = () => { };\r\n    public currentDate: Date;\r\n\r\n    public _control: NgControl;\r\n\r\n    public get instance(): NkDateDropper {\r\n        return this;\r\n    }\r\n\r\n    constructor(\r\n        elementRef: ElementRef,\r\n        private inj: Injector,\r\n        @Attribute('formControlName') private _formControlName: string,\r\n        @Optional() private _parentForm: NgForm,\r\n        @Optional() private _parentFormGroup: FormGroupDirective,\r\n        @Attribute('required') private _requiredAtribute: string) {\r\n        this._origin = elementRef.nativeElement;\r\n        this._options.positionOptions.my = 'left top+16';\r\n        this._options.positionOptions.at = 'center bottom';\r\n        this._formControl = new FormControl('');\r\n        this.currentDate = null;\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        if (this._parentFormGroup) {\r\n            this._formGroup = this._parentFormGroup.form;\r\n        }\r\n        try {\r\n            this._control = this.inj.get(NgControl);\r\n        }\r\n        catch (e) {\r\n            console.warn('get NgControl is not defined');\r\n        }\r\n        if (this._control) {\r\n            this._control.valueAccessor = this;\r\n        }\r\n        this.setRequired(this._requiredAtribute);\r\n        this._options.appendTo = this._appendTo;\r\n        this._options.largeClass = (this._largeDefault == true && this._largeMode == true) ? 'picker-lg' : '';\r\n        this._options.fxClass = (this._fx == false) ? '' : 'picker-fxs';\r\n        this._options.maxYear = this._maxYear;\r\n        this._options.minYear = this._minYear;\r\n        this._options.format = this._format;\r\n        this._options.lang = this._lang;\r\n        this._options.lock = this._lock;\r\n        this._options.modal = (this._modal == true) ? 'picker-modal' : '';\r\n        this._options.large = (this._largeMode == true) ? true : false;\r\n        this._options.theme = this._theme;\r\n        this._options.disabledDays = this._disabledDays;\r\n        this.model = new NkDateDropperControlModel(this._options);\r\n        if (this._formGroup) {\r\n            if (!this._formControlName) {\r\n                throw new Error('attribute formControlName is defined');\r\n            }\r\n            const control = this._formGroup.get(this._formControlName);\r\n            if (!control) {\r\n                this._formGroup.addControl(this._formControlName, this.formControl);\r\n            }\r\n            else {\r\n                this._formControl = control as FormControl;\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        this._input = this._origin.querySelector('input') as HTMLElement;\r\n    }\r\n\r\n    writeValue(value: Date): void {\r\n        let oldValue = this.currentDate;\r\n        this.currentDate = value;\r\n        if (this.currentDate != oldValue) {\r\n            this._control.viewToModelUpdate(value);\r\n        }\r\n        this.onChange.emit({ eventSource: this, oldSelected: oldValue, newSelected: value });\r\n    }\r\n\r\n    changeValue(value: Date): void {\r\n        let oldValue = this.currentDate;\r\n        this.currentDate = value;\r\n        if (this.currentDate != oldValue) {\r\n            this._onChange(value);\r\n        }\r\n        this.onChange.emit({ eventSource: this, oldSelected: oldValue, newSelected: value });\r\n    }\r\n\r\n    public handleKeydown(event: KeyboardEvent): void {\r\n        if (!this.disabled && !this.required) {\r\n            const keyCode = event.keyCode;\r\n            const isDelete = keyCode === DELETE;\r\n            if (isDelete) {\r\n                this.changeValue(null);\r\n                this.togglePicker();\r\n            }\r\n        }\r\n    }\r\n\r\n    registerOnChange(fn: (value: any) => void): void {\r\n        this._onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: () => {}): void {\r\n        this._onTouched = fn;\r\n    }\r\n\r\n    public close(): void {\r\n        this.formControl.markAsTouched();\r\n        this._isOpen = false;\r\n        this._pickerDoneAnimating = false;\r\n    }\r\n\r\n    public togglePicker(): void {\r\n        if (this.disabled) { return; }\r\n        if (!this.isOpen) {\r\n            this._input.blur();\r\n            this._pickerShow();\r\n        } else {\r\n            this.close();\r\n        }\r\n    }\r\n\r\n    public onPickerDone(): void {\r\n        if (this.isOpen) {\r\n            this.onOpen.emit({ eventSource: this });\r\n        } else {\r\n            this._pickerDoneAnimating = true;\r\n            this.onClose.emit({ eventSource: this });\r\n        }\r\n    }\r\n    public onFadeInDone(): void {\r\n        this._input.focus();\r\n    }\r\n\r\n    private _pickerShow() {\r\n        this._isOpen = true;\r\n    }\r\n\r\n    private setRequired(value: any): void {\r\n        if (!this.formControl) {\r\n            return;\r\n        }\r\n        this._required = this.coerceBooleanProperty(value);\r\n        if (this._required) {\r\n            this.formControl.setValidators([Validators.required]);\r\n        } else {\r\n            this.formControl.setValidators(null);\r\n        }\r\n        this.formControl.updateValueAndValidity();\r\n\r\n    }\r\n\r\n    private coerceBooleanProperty(value: any): boolean {\r\n        return value != null && `${value}` !== 'false';\r\n    }\r\n\r\n}\r\n","<div class=\"nk-date-dropper-wrapper\"\r\n     *ngIf=\"_inputReadonly\"\r\n     (click)=\"togglePicker()\">\r\n  <div class=\"nk-date-dropper-icon-trigger\">\r\n  </div>\r\n  <div class=\"nk-date-dropper-input-wrapper\">\r\n    <input type=\"text\"\r\n           [value]=\"currentDate | date:_format\"\r\n           (input)=\"currentDate=$event.target.value\"\r\n           (keydown)=\"handleKeydown($event)\"\r\n           readonly />\r\n  </div>\r\n</div>\r\n<div class=\"nk-date-dropper-wrapper\"\r\n     *ngIf=\"!_inputReadonly\">\r\n  <div class=\"nk-date-dropper-icon-trigger\"\r\n       (click)=\"togglePicker()\">\r\n  </div>\r\n  <div class=\"nk-date-dropper-input-wrapper\">\r\n    <nk-date-input #editableInput [instance]=\"instance\"></nk-date-input>\r\n  </div>\r\n</div>\r\n<ng-template nk-date-dropper-picker\r\n             (backdropClick)=\"close()\"\r\n             [open]=\"isOpen\"\r\n             [controlDomElement]=\"_origin\"\r\n             [control]=\"this\"\r\n             [pickerAnimateDone]=\"_pickerDoneAnimating\"\r\n             [positionOptions]=\"options.positionOptions\"\r\n             [appendTo]=\"options.appendTo\">\r\n  <div class=\"nk-date-dropper-picker\"\r\n       [style.transformOrigin]='transformOrigin'\r\n       [@transformPicker]=\"'showing'\"\r\n       (@transformPicker.done)=\"onPickerDone()\">\r\n    <div class=\"picker\"\r\n         [@fadeInContent]=\"'showing'\"\r\n         (@fadeInContent.done)=\"onFadeInDone()\">\r\n    </div>\r\n  </div>\r\n\r\n</ng-template>","import { NgModule } from '@angular/core';\r\nimport { NkDateDropper } from './nkDateDropper.component';\r\nimport { NkDateDropperPicker } from './nkDateDropperPicker.directive';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NkDateInput } from './nkDateInput.component';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n  imports: [CommonModule, ReactiveFormsModule],\r\n  exports: [NkDateDropper, NkDateDropperPicker, NkDateInput],\r\n  declarations: [NkDateDropper, NkDateDropperPicker, NkDateInput]\r\n})\r\nexport class NkDateDropperModule { }\r\nexport * from './nkDateDropper.component';\r\nexport * from './nkDateInput.component';\r\nexport * from './nkDateDropperPicker.directive';\r\n\r\n\r\n","import { EventEmitter } from '@angular/core'\r\nimport { PaginationInstance } from './pagination-instance';\r\n\r\nexport class PaginationService {\r\n\r\n    public change: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n    private instances: { [id: string]: PaginationInstance } = {};\r\n    private DEFAULT_ID = 'DEFAULT_PAGINATION_ID';\r\n\r\n    public defaultId(): string { return this.DEFAULT_ID }\r\n\r\n    /**\r\n     * Register a PaginationInstance with this service. Returns a\r\n     * boolean value signifying whether the instance is new or\r\n     * updated (true = new or updated, false = unchanged).\r\n     */\r\n    public register(instance: PaginationInstance): boolean {\r\n        if (instance.id == null) {\r\n            instance.id = this.DEFAULT_ID;\r\n        }\r\n\r\n        if (!this.instances[instance.id]) {\r\n            this.instances[instance.id] = instance;\r\n            return true;\r\n        } else {\r\n            return this.updateInstance(instance);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Check each property of the instance and update any that have changed. Return\r\n     * true if any changes were made, else return false.\r\n     */\r\n    private updateInstance(instance: PaginationInstance): boolean {\r\n        let changed = false;\r\n        for (let prop in this.instances[instance.id]) {\r\n            if (instance[prop] !== this.instances[instance.id][prop]) {\r\n                this.instances[instance.id][prop] = instance[prop];\r\n                changed = true;\r\n            }\r\n        }\r\n        return changed;\r\n    }\r\n\r\n    /**\r\n     * Returns the current page number.\r\n     */\r\n    public getCurrentPage(id: string): number {\r\n        if (this.instances[id]) {\r\n            return this.instances[id].currentPage;\r\n        } else {\r\n            return 0;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Sets the current page number.\r\n     */\r\n    public setCurrentPage(id: string, page: number) {\r\n        if (this.instances[id]) {\r\n            let instance = this.instances[id];\r\n            let maxPage = Math.ceil(instance.totalItems / instance.itemsPerPage);\r\n            if (page <= maxPage && 1 <= page) {\r\n                this.instances[id].currentPage = page;\r\n                this.change.emit(id);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Sets the value of instance.totalItems\r\n     */\r\n    public setTotalItems(id: string, totalItems: number) {\r\n        if (this.instances[id] && 0 <= totalItems) {\r\n            this.instances[id].totalItems = totalItems;\r\n            this.change.emit(id);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Sets the value of instance.itemsPerPage.\r\n     */\r\n    public setItemsPerPage(id: string, itemsPerPage: number) {\r\n        if (this.instances[id]) {\r\n            this.instances[id].itemsPerPage = itemsPerPage;\r\n            this.change.emit(id);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Returns a clone of the pagination instance object matching the id. If no\r\n     * id specified, returns the instance corresponding to the default id.\r\n     */\r\n    public getInstance(id: string = this.DEFAULT_ID): PaginationInstance {\r\n        if (this.instances[id]) {\r\n            return this.clone(this.instances[id]);\r\n        }\r\n        return {} as PaginationInstance;\r\n    }\r\n\r\n    /**\r\n     * Perform a shallow clone of an object.\r\n     */\r\n    private clone(obj: any): any {\r\n        var target = {};\r\n        for (var i in obj) {\r\n            if (obj.hasOwnProperty(i)) {\r\n                target[i] = obj[i];\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n\r\n}\r\n","import {Pipe} from \"@angular/core\";\r\nimport {PaginationService} from \"./pagination.service\";\r\nimport {PaginationInstance} from './pagination-instance';\r\n\r\nconst LARGE_NUMBER = Number.MAX_SAFE_INTEGER;\r\n\r\nexport type Collection<T> = T[] | ReadonlyArray<T>;\r\n\r\nexport interface PaginatePipeArgs {\r\n    id?: string;\r\n    itemsPerPage?: string | number;\r\n    currentPage?: string | number;\r\n    totalItems?: string | number;\r\n}\r\n\r\nexport interface PipeState {\r\n    collection: any[];\r\n    size: number;\r\n    start: number;\r\n    end: number;\r\n    slice: any[];\r\n}\r\n\r\n@Pipe({\r\n    name: 'paginate',\r\n    pure: false\r\n})\r\nexport class PaginatePipe {\r\n\r\n    // store the values from the last time the pipe was invoked\r\n    private state: { [id: string]: PipeState } = {};\r\n\r\n    constructor(private service: PaginationService) {\r\n    }\r\n\r\n    public transform<T, U extends Collection<T>>(collection: U, args: PaginatePipeArgs): U {\r\n\r\n        // When an observable is passed through the AsyncPipe, it will output\r\n        // `null` until the subscription resolves. In this case, we want to\r\n        // use the cached data from the `state` object to prevent the NgFor\r\n        // from flashing empty until the real values arrive.\r\n        if (!(collection instanceof Array)) {\r\n            let _id = args.id || this.service.defaultId();\r\n            if (this.state[_id]) {\r\n                return this.state[_id].slice as U;\r\n            } else {\r\n                return collection;\r\n            }\r\n        }\r\n\r\n        let serverSideMode = args.totalItems && args.totalItems !== collection.length;\r\n        let instance = this.createInstance(collection, args);\r\n        let id = instance.id;\r\n        let start, end;\r\n        let perPage = instance.itemsPerPage;\r\n\r\n        let emitChange = this.service.register(instance);\r\n\r\n        if (!serverSideMode && collection instanceof Array) {\r\n            perPage = +perPage || LARGE_NUMBER;\r\n            start = (instance.currentPage - 1) * perPage;\r\n            end = start + perPage;\r\n\r\n            let isIdentical = this.stateIsIdentical(id, collection, start, end);\r\n            if (isIdentical) {\r\n                return this.state[id].slice as U;\r\n            } else {\r\n                let slice = collection.slice(start, end);\r\n                this.saveState(id, collection, slice, start, end);\r\n                this.service.change.emit(id);\r\n                return slice as U;\r\n            }\r\n        } else {\r\n            if (emitChange) {\r\n                this.service.change.emit(id);\r\n            }\r\n\r\n            // save the state for server-side collection to avoid null\r\n            // flash as new data loads.\r\n            this.saveState(id, collection, collection, start, end);\r\n\r\n            return collection;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Create an PaginationInstance object, using defaults for any optional properties not supplied.\r\n     */\r\n    private createInstance(collection: any, config: PaginatePipeArgs): PaginationInstance {\r\n        this.checkConfig(config);\r\n\r\n        return {\r\n            id: config.id != null ? config.id : this.service.defaultId(),\r\n            itemsPerPage: +config.itemsPerPage || 0,\r\n            currentPage: +config.currentPage || 1,\r\n            totalItems: +config.totalItems || collection.length\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Ensure the argument passed to the filter contains the required properties.\r\n     */\r\n    private checkConfig(config: PaginatePipeArgs): void {\r\n        const required = ['itemsPerPage', 'currentPage'];\r\n\r\n        const missing = required.filter(prop => !(prop in config));\r\n        if (0 < missing.length) {\r\n            throw new Error(`PaginatePipe: Argument is missing the following required properties: ${missing.join(', ')}`);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * To avoid returning a brand new array each time the pipe is run, we store the state of the sliced\r\n     * array for a given id. This means that the next time the pipe is run on this collection & id, we just\r\n     * need to check that the collection, start and end points are all identical, and if so, return the\r\n     * last sliced array.\r\n     */\r\n    private saveState(id: string, collection: any, slice: any, start: number, end: number) {\r\n        this.state[id] = {\r\n            collection,\r\n            size: collection.length,\r\n            slice,\r\n            start,\r\n            end\r\n        };\r\n    }\r\n\r\n    /**\r\n     * For a given id, returns true if the collection, size, start and end values are identical.\r\n     */\r\n    private stateIsIdentical(id: string, collection: any, start: number, end: number): boolean {\r\n        let state = this.state[id];\r\n        if (!state) {\r\n            return false;\r\n        }\r\n        let isMetaDataIdentical = state.size === collection.length &&\r\n            state.start === start &&\r\n            state.end === end;\r\n\r\n        if(!isMetaDataIdentical) {\r\n            return false;\r\n        }\r\n\r\n        return state.slice.every((element, index) => element === collection[start + index]);\r\n    }\r\n}\r\n","import {ChangeDetectorRef, Directive, EventEmitter, Input, Output} from '@angular/core';\r\nimport {Subscription} from 'rxjs';\r\n\r\nimport {PaginationService} from './pagination.service';\r\nimport {PaginationInstance} from './pagination-instance';\r\n\r\nexport interface Page {\r\n    label: string;\r\n    value: any;\r\n}\r\n\r\n/**\r\n * This directive is what powers all pagination controls components, including the default one.\r\n * It exposes an API which is hooked up to the PaginationService to keep the PaginatePipe in sync\r\n * with the pagination controls.\r\n */\r\n@Directive({\r\n    selector: 'pagination-template,[pagination-template]',\r\n    exportAs: 'paginationApi'\r\n})\r\nexport class PaginationControlsDirective {\r\n    @Input() id: string;\r\n    @Input() maxSize: number = 7;\r\n    @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\r\n    @Output() pageBoundsCorrection: EventEmitter<number> = new EventEmitter<number>();\r\n    pages: Page[] = [];\r\n\r\n    private changeSub: Subscription;\r\n\r\n    constructor(private service: PaginationService,\r\n                private changeDetectorRef: ChangeDetectorRef) {\r\n        this.changeSub = this.service.change\r\n            .subscribe(id => {\r\n                if (this.id === id) {\r\n                    this.updatePageLinks();\r\n                    this.changeDetectorRef.markForCheck();\r\n                    this.changeDetectorRef.detectChanges();\r\n                }\r\n            });\r\n    }\r\n\r\n    ngOnInit() {\r\n        if (this.id === undefined) {\r\n            this.id = this.service.defaultId();\r\n        }\r\n        this.updatePageLinks();\r\n    }\r\n\r\n    ngOnChanges(changes: any) {\r\n        this.updatePageLinks();\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.changeSub.unsubscribe();\r\n    }\r\n\r\n    /**\r\n     * Go to the previous page\r\n     */\r\n    previous() {\r\n        this.checkValidId();\r\n        this.setCurrent(this.getCurrent() - 1);\r\n    }\r\n\r\n    /**\r\n     * Go to the next page\r\n     */\r\n    next() {\r\n        this.checkValidId();\r\n        this.setCurrent(this.getCurrent() + 1);\r\n    }\r\n\r\n    /**\r\n     * Returns true if current page is first page\r\n     */\r\n    isFirstPage(): boolean {\r\n        return this.getCurrent() === 1;\r\n    }\r\n\r\n    /**\r\n     * Returns true if current page is last page\r\n     */\r\n    isLastPage(): boolean {\r\n        return this.getLastPage() === this.getCurrent();\r\n    }\r\n\r\n    /**\r\n     * Set the current page number.\r\n     */\r\n    setCurrent(page: number) {\r\n        this.pageChange.emit(page);\r\n    }\r\n\r\n    /**\r\n     * Get the current page number.\r\n     */\r\n    getCurrent(): number {\r\n        return this.service.getCurrentPage(this.id);\r\n    }\r\n\r\n    /**\r\n     * Returns the last page number\r\n     */\r\n    getLastPage(): number {\r\n        let inst = this.service.getInstance(this.id);\r\n        if (inst.totalItems < 1) {\r\n            // when there are 0 or fewer (an error case) items, there are no \"pages\" as such,\r\n            // but it makes sense to consider a single, empty page as the last page.\r\n            return 1;\r\n        }\r\n        return Math.ceil(inst.totalItems / inst.itemsPerPage);\r\n    }\r\n\r\n    getTotalItems(): number {\r\n        return this.service.getInstance(this.id).totalItems;\r\n    }\r\n\r\n    private checkValidId() {\r\n        if (this.service.getInstance(this.id).id == null) {\r\n            console.warn(`PaginationControlsDirective: the specified id \"${this.id}\" does not match any registered PaginationInstance`);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Updates the page links and checks that the current page is valid. Should run whenever the\r\n     * PaginationService.change stream emits a value matching the current ID, or when any of the\r\n     * input values changes.\r\n     */\r\n    private updatePageLinks() {\r\n        let inst = this.service.getInstance(this.id);\r\n        const correctedCurrentPage = this.outOfBoundCorrection(inst);\r\n\r\n        if (correctedCurrentPage !== inst.currentPage) {\r\n            setTimeout(() => {\r\n                this.pageBoundsCorrection.emit(correctedCurrentPage);\r\n                this.pages = this.createPageArray(inst.currentPage, inst.itemsPerPage, inst.totalItems, this.maxSize);\r\n            });\r\n        } else {\r\n            this.pages = this.createPageArray(inst.currentPage, inst.itemsPerPage, inst.totalItems, this.maxSize);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Checks that the instance.currentPage property is within bounds for the current page range.\r\n     * If not, return a correct value for currentPage, or the current value if OK.\r\n     */\r\n    private outOfBoundCorrection(instance: PaginationInstance): number {\r\n        const totalPages = Math.ceil(instance.totalItems / instance.itemsPerPage);\r\n        if (totalPages < instance.currentPage && 0 < totalPages) {\r\n            return totalPages;\r\n        } else if (instance.currentPage < 1) {\r\n            return 1;\r\n        }\r\n\r\n        return instance.currentPage;\r\n    }\r\n\r\n    /**\r\n     * Returns an array of Page objects to use in the pagination controls.\r\n     */\r\n    private createPageArray(currentPage: number, itemsPerPage: number, totalItems: number, paginationRange: number): Page[] {\r\n        // paginationRange could be a string if passed from attribute, so cast to number.\r\n        paginationRange = +paginationRange;\r\n        let pages = [];\r\n        const totalPages = Math.ceil(totalItems / itemsPerPage);\r\n        const halfWay = Math.ceil(paginationRange / 2);\r\n\r\n        const isStart = currentPage <= halfWay;\r\n        const isEnd = totalPages - halfWay < currentPage;\r\n        const isMiddle = !isStart && !isEnd;\r\n\r\n        let ellipsesNeeded = paginationRange < totalPages;\r\n        let i = 1;\r\n\r\n        while (i <= totalPages && i <= paginationRange) {\r\n            let label;\r\n            let pageNumber = this.calculatePageNumber(i, currentPage, paginationRange, totalPages);\r\n            let openingEllipsesNeeded = (i === 2 && (isMiddle || isEnd));\r\n            let closingEllipsesNeeded = (i === paginationRange - 1 && (isMiddle || isStart));\r\n            if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {\r\n                label = '...';\r\n            } else {\r\n                label = pageNumber;\r\n            }\r\n            pages.push({\r\n                isPreviousLink: label === '...' && currentPage > pageNumber,\r\n                isNextLink: label === '...' && currentPage < pageNumber,\r\n                label: label,\r\n                value: pageNumber\r\n            });\r\n            i ++;\r\n        }\r\n        return pages;\r\n    }\r\n\r\n    /**\r\n     * Given the position in the sequence of pagination links [i],\r\n     * figure out what page number corresponds to that position.\r\n     */\r\n    private calculatePageNumber(i: number, currentPage: number, paginationRange: number, totalPages: number) {\r\n        let halfWay = Math.ceil(paginationRange / 2);\r\n        if (i === paginationRange) {\r\n            return totalPages;\r\n        } else if (i === 1) {\r\n            return i;\r\n        } else if (paginationRange < totalPages) {\r\n            if (totalPages - halfWay < currentPage) {\r\n                return totalPages - paginationRange + i;\r\n            } else if (halfWay < currentPage) {\r\n                return currentPage - halfWay + i;\r\n            } else {\r\n                return i;\r\n            }\r\n        } else {\r\n            return i;\r\n        }\r\n    }\r\n}\r\n","import {Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core'\r\n\r\nfunction coerceToBoolean(input: string | boolean): boolean {\r\n    return !!input && input !== 'false';\r\n}\r\n\r\n/**\r\n * The default pagination controls component. Actually just a default implementation of a custom template.\r\n */\r\n@Component({\r\n    selector: 'pagination-controls',\r\n    templateUrl: './pagination.html',\r\n    styleUrls: ['./pagination.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    encapsulation: ViewEncapsulation.None\r\n})\r\nexport class PaginationControlsComponent {\r\n\r\n    @Input() id: string;\r\n    @Input() maxSize: number = 7;\r\n    @Input()\r\n    get directionLinks(): boolean {\r\n        return this._directionLinks;\r\n    }\r\n    set directionLinks(value: boolean) {\r\n        this._directionLinks = coerceToBoolean(value);\r\n    }\r\n    @Input()\r\n    get autoHide(): boolean {\r\n        return this._autoHide;\r\n    }\r\n    set autoHide(value: boolean) {\r\n        this._autoHide = coerceToBoolean(value);\r\n    }\r\n    @Input()\r\n    get responsive(): boolean {\r\n        return this._responsive;\r\n    }\r\n    set responsive(value: boolean) {\r\n        this._responsive = coerceToBoolean(value);\r\n    }\r\n    @Input() previousLabel: string = 'Previous';\r\n    @Input() nextLabel: string = 'Next';\r\n    @Input() screenReaderPaginationLabel: string = 'Pagination';\r\n    @Input() screenReaderPageLabel: string = 'page';\r\n    @Input() screenReaderCurrentLabel: string = `You're on page`;\r\n    @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\r\n    @Output() pageBoundsCorrection: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n    private _directionLinks: boolean = true;\r\n    private _autoHide: boolean = false;\r\n    private _responsive: boolean = false;\r\n}\r\n","<pagination-template #p=\"paginationApi\"\r\n                     [id]=\"id\"\r\n                     [maxSize]=\"maxSize\"\r\n                     (pageChange)=\"pageChange.emit($event)\"\r\n                     (pageBoundsCorrection)=\"pageBoundsCorrection.emit($event)\">\r\n    <div class=\"nk-pagination\"\r\n         role=\"navigation\"\r\n         [attr.aria-label]=\"screenReaderPaginationLabel\"\r\n         [class.responsive]=\"responsive\"\r\n         *ngIf=\"!(autoHide && p.pages.length <= 1)\">\r\n\r\n        <div class=\"li pagination-previous\"\r\n             [class.disabled]=\"p.isFirstPage()\"\r\n             *ngIf=\"directionLinks\">\r\n            <a tabindex=\"0\"\r\n               *ngIf=\"1 < p.getCurrent()\"\r\n               (keyup.enter)=\"p.previous()\"\r\n               (click)=\"p.previous()\"\r\n               [attr.aria-label]=\"previousLabel + ' ' + screenReaderPageLabel\">\r\n                {{ previousLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\r\n            </a>\r\n            <span *ngIf=\"p.isFirstPage()\">\r\n                {{ previousLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\r\n            </span>\r\n        </div>\r\n\r\n        <div class=\"li small-screen\">\r\n            {{ p.getCurrent() }} / {{ p.getLastPage() }}\r\n        </div>\r\n\r\n        <div class=\"li\"\r\n             [class.current]=\"p.getCurrent() === page.value\"\r\n             [class.previous]=\"page.isPreviousLink\"\r\n             [class.next]=\"page.isNextLink\"\r\n             [class.ellipsis]=\"page.label === '...'\"\r\n             *ngFor=\"let page of p.pages\">\r\n            <div class=\"page-container\">\r\n                <a tabindex=\"0\"\r\n                   (keyup.enter)=\"p.setCurrent(page.value)\"\r\n                   (click)=\"p.setCurrent(page.value)\"\r\n                   *ngIf=\"p.getCurrent() !== page.value\">\r\n                    <span class=\"show-for-sr\">{{ screenReaderPageLabel }} </span>\r\n                    <div class=\"page-label\">{{ (page.label === '...') ? page.label : (page.label | number:'') }}</div>\r\n                </a>\r\n                <ng-container *ngIf=\"p.getCurrent() === page.value\">\r\n                    <span class=\"show-for-sr\">{{ screenReaderCurrentLabel }} </span>\r\n                    <div class=\"page-label\">{{ (page.label === '...') ? page.label : (page.label | number:'') }}</div>\r\n                </ng-container>\r\n            </div>\r\n        </div>\r\n\r\n        <div class=\"li pagination-next\"\r\n             [class.disabled]=\"p.isLastPage()\"\r\n             *ngIf=\"directionLinks\">\r\n            <a tabindex=\"0\"\r\n               *ngIf=\"!p.isLastPage()\"\r\n               (keyup.enter)=\"p.next()\"\r\n               (click)=\"p.next()\"\r\n               [attr.aria-label]=\"nextLabel + ' ' + screenReaderPageLabel\">\r\n                {{ nextLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\r\n            </a>\r\n            <span *ngIf=\"p.isLastPage()\">\r\n                {{ nextLabel }} <span class=\"show-for-sr\">{{ screenReaderPageLabel }}</span>\r\n            </span>\r\n        </div>\r\n\r\n    </div>\r\n</pagination-template>","import {NgModule} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {PaginatePipe} from './paginate.pipe';\r\nimport {PaginationService} from './pagination.service';\r\nimport {PaginationControlsComponent} from './pagination-controls.component';\r\nimport {PaginationControlsDirective} from './pagination-controls.directive';\r\n\r\nexport {PaginationInstance} from './pagination-instance';\r\nexport {PaginationService} from './pagination.service';\r\nexport {PaginationControlsComponent} from './pagination-controls.component';\r\nexport {PaginationControlsDirective} from './pagination-controls.directive';\r\nexport {PaginatePipe} from './paginate.pipe';\r\n\r\n@NgModule({\r\n    imports: [CommonModule],\r\n    declarations: [\r\n        PaginatePipe,\r\n        PaginationControlsComponent,\r\n        PaginationControlsDirective\r\n    ],\r\n    providers: [PaginationService],\r\n    exports: [PaginatePipe, PaginationControlsComponent, PaginationControlsDirective]\r\n})\r\nexport class PaginationModule { }\r\n","import {\r\n    EventEmitter\r\n} from '@angular/core';\r\nimport { NkCollectionRequestEvent } from './nkCollectionRequest.event';\r\nimport { NkCollectionResponseEvent } from './nkCollectionResponse.event';\r\n\r\nexport class NkCollectionEvents<TSelector, TResponse> {\r\n\r\n    public onBeforeLoadData: EventEmitter<NkCollectionRequestEvent<TSelector>> = new EventEmitter();\r\n    public onAfterLoadData: EventEmitter<NkCollectionResponseEvent<TSelector, TResponse>> = new EventEmitter();\r\n    public onErrorLoadData: EventEmitter<any> = new EventEmitter();\r\n\r\n} \r\n","export class NkCollectionOptions {\r\n\r\n    public id: string;\r\n    public itemsPerPage: number;\r\n    public currentPage: number;\r\n    public totalItems: number;\r\n    public isCached: boolean;\r\n\r\n    constructor() {\r\n        this.itemsPerPage = 10;\r\n        this.currentPage = 1;\r\n        this.isCached = false;\r\n    }\r\n\r\n} \r\n","import { NkCollectionSortItem } from './nkCollectionSortItem';\r\nexport class NkCollectionBaseSelector {\r\n    public view: string;\r\n    public offset: number;\r\n    public count: number;\r\n    public search: string;\r\n    public total: number;\r\n    public sorting: Array<NkCollectionSortItem>;\r\n    public requestedFields: Array<string>;\r\n    public exceptCollection: Array<string | number>;\r\n}\r\n","\r\nexport class NkCollectionRequestEvent<TSelector> {\r\n\r\n    private _selector: TSelector;\r\n    get selector(): TSelector {\r\n        return this._selector;\r\n    }\r\n\r\n    constructor(selector: TSelector) {\r\n        this._selector = selector;\r\n    }\r\n\r\n}","import { NkCollectionRequestEvent } from './nkCollectionRequest.event';\r\n\r\nexport class NkCollectionResponseEvent<TSelector, TResponse> extends NkCollectionRequestEvent<TSelector> {\r\n\r\n    private _response: TResponse;\r\n    get response(): TResponse {\r\n        return this._response;\r\n    }\r\n\r\n    constructor(selector: TSelector, response: TResponse) {\r\n        super(selector);\r\n        this._response = response;\r\n    }\r\n\r\n}","import {\r\n    Subscription,\r\n    BehaviorSubject,\r\n    Observable\r\n} from 'rxjs';\r\nimport { NkCollectionEvents } from './nkCollection.events';\r\nimport { NkCollectionOptions } from './nkCollection.options';\r\nimport { NkCollectionBaseSelector } from './nkCollectionBaseSelector.model';\r\nimport { NkCollectionResponseContract } from './nkCollectionResponse.contract';\r\nimport { NkCollectionRequestEvent } from './nkCollectionRequest.event';\r\nimport { NkCollectionResponseEvent } from './nkCollectionResponse.event';\r\nimport { first } from 'rxjs/operators';\r\n\r\nexport class NkBaseCollectionModel<TSelector extends NkCollectionBaseSelector, TCollectionResponseContract extends NkCollectionResponseContract<any>> {\r\n\r\n    private subscriptions: Subscription[] = [];\r\n    private isPending: boolean;\r\n\r\n    private isLoadedSubject: BehaviorSubject<boolean>;\r\n    public isLoaded: Observable<boolean>;\r\n\r\n    private _collection: TCollectionResponseContract;\r\n    public get collection(): TCollectionResponseContract {\r\n        return this._collection;\r\n    }\r\n\r\n    public get isDataAvailable(): boolean {\r\n        return this._collection?.items.length > 0 || this.isPending;\r\n    }\r\n\r\n    private _events: NkCollectionEvents<TSelector, TCollectionResponseContract>;\r\n    public get events(): NkCollectionEvents<TSelector, TCollectionResponseContract> {\r\n        return this._events;\r\n    }\r\n\r\n    private _options: NkCollectionOptions;\r\n    public get options(): NkCollectionOptions {\r\n        return this._options;\r\n    }\r\n\r\n    constructor(private resources: (selector: TSelector) => Observable<TCollectionResponseContract>) {\r\n\r\n        this.isLoadedSubject = new BehaviorSubject<boolean>(false);\r\n        this.isLoaded = this.isLoadedSubject.asObservable();\r\n        this._events = new NkCollectionEvents<TSelector, TCollectionResponseContract>();\r\n        this._options = new NkCollectionOptions();\r\n    }\r\n\r\n    public init(): void {\r\n        this.subscriptions.push(this.load().subscribe());\r\n    }\r\n\r\n    public reset(): void {\r\n        this.subscriptions.forEach(s => s.unsubscribe());\r\n        this.clear();\r\n    }\r\n\r\n    public async setCurrentPage(page: number) {\r\n        if (this.options.isCached) {\r\n            if (!this.checkLoadedPage(page)) {\r\n                await this.load(page).pipe(first()).toPromise();\r\n            }\r\n        } else {\r\n            await this.load(page).pipe(first()).toPromise();\r\n        }\r\n        this.options.currentPage = page;\r\n    }\r\n\r\n    protected load(currentPage: number = 1): Observable<any> {\r\n        this.isPending = true;\r\n        return new Observable((observer: any) => {\r\n            const selector = this.toContract(currentPage);\r\n            const event = new NkCollectionRequestEvent<TSelector>(selector);\r\n            this.events.onBeforeLoadData.emit(event);\r\n            this.subscriptions.push(\r\n                this.resources(selector)\r\n                    .subscribe(\r\n                        (contract: TCollectionResponseContract) => {\r\n                            const event = new NkCollectionResponseEvent<TSelector, TCollectionResponseContract>(selector, contract);\r\n                            this.applyContract(contract, selector);\r\n                            this.events.onAfterLoadData.emit(event);\r\n                            this.isLoadedSubject.next(true);\r\n                            this.isPending = false;\r\n                            observer.next();\r\n                        },\r\n                        (error: any) => {\r\n                            this.isPending = false;\r\n                            this.events.onErrorLoadData.emit(error);\r\n                            observer.error(error);\r\n                        }\r\n                    ));\r\n        });\r\n    }\r\n\r\n    protected toContract(currentPage: number): TSelector {\r\n        const contract = new NkCollectionBaseSelector() as TSelector;\r\n        contract.offset = this.options.itemsPerPage * (currentPage - 1);\r\n        contract.count = this.options.itemsPerPage;\r\n        return contract;\r\n    }\r\n\r\n    private applyContract(contract: TCollectionResponseContract, selector: TSelector) {\r\n        if (selector.offset === 0) {\r\n            this.clear();\r\n            this._collection = contract;\r\n            this._collection.items.length = contract.totalCount;\r\n            this.options.totalItems = contract.totalCount;\r\n        } else {\r\n            contract.items.forEach((t, index) => {\r\n                this.collection.items[selector.offset + index] = t;\r\n            });\r\n        }\r\n    }\r\n\r\n    private clear(): void {\r\n        this._collection = null;\r\n        this.options.currentPage = 1;\r\n    }\r\n\r\n    private checkLoadedPage(page: number): boolean {\r\n        return !!this.collection.items[(page - 1) * this.options.itemsPerPage];\r\n    }\r\n}\r\n","export class NkCollectionSortItem {\r\n\r\n    public field: string;\r\n    public  rule: string;\r\n    constructor(field:string, rule: string) {\r\n        this.field = field;\r\n        this.rule = rule;\r\n    }\r\n}","import { isSameDay, isSameMonth, isSameYear } from 'date-fns';\r\n\r\nexport const isSameDate = (date: Date, current: Date): boolean => (\r\n  isSameDay(date, current) && isSameMonth(date, current) && isSameYear(date, current)\r\n);\r\n","import { DateRange } from '../models';\r\n\r\nexport const createDateRange = (start: Date, end: Date): DateRange => ({\r\n  start: start ? new Date(start.getTime()) : null,\r\n  end: end ? new Date(end.getTime()) : null,\r\n});\r\n","/**\r\n * Internal library helper that helps to check if value is empty\r\n */\r\nexport const isNull = (value: any) => {\r\n    return (typeof value === 'undefined') || (value === null);\r\n};\r\n","import {\r\n    Component,\r\n    OnInit,\r\n    Input,\r\n    OnChanges,\r\n    SimpleChanges,\r\n    ElementRef,\r\n    forwardRef,\r\n    ViewChild,\r\n    ViewEncapsulation,\r\n    HostListener,\r\n    Output,\r\n    EventEmitter\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\n\r\n\r\nimport {\r\n    startOfMonth,\r\n    endOfMonth,\r\n    addMonths,\r\n    subMonths,\r\n    setYear,\r\n    eachDayOfInterval,\r\n    getDate,\r\n    getMonth,\r\n    getYear,\r\n    isToday,\r\n    isSameMonth,\r\n    format,\r\n    getDay,\r\n    subDays,\r\n    setDay,\r\n    isAfter, isBefore, addDays, setMonth,\r\n} from 'date-fns';\r\n\r\nimport { isSameDate, createDateRange, isNull } from '../../helpers';\r\nimport { DateRange, Day } from '../../models';\r\nimport { DatePickerOptions, AddClass } from '../../ngx-date-picker.options';\r\n\r\n\r\n// instanceID for calculating the auto-incrementing field ID\r\nlet instanceID = 0;\r\n\r\n@Component({\r\n    selector: 'ngx-date-picker',\r\n    templateUrl: 'ngx-date-picker.component.html',\r\n    styleUrls: ['ngx-date-picker.component.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    providers: [\r\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxDatePickerComponent), multi: true }\r\n    ]\r\n})\r\nexport class NgxDatePickerComponent implements ControlValueAccessor, OnInit, OnChanges {\r\n\r\n    @ViewChild('container', { static: false }) calendarContainerElement: ElementRef;\r\n    @ViewChild('calendarYearsContainer', { static: false }) calendarYearsContainer: ElementRef;\r\n\r\n\r\n    @Input() value: Date | DateRange;\r\n    @Input() options: DatePickerOptions;\r\n    @Input() maxDate: Date;\r\n\r\n    /**\r\n     * Set date picker's visibility state\r\n     */\r\n    @Input() isOpened = true;\r\n\r\n    @Output() valueChange: EventEmitter<Date | DateRange> = new EventEmitter();\r\n\r\n    currentOptions: DatePickerOptions = {\r\n        closeOnClickOutside: false,\r\n        closeOnSelection: false,\r\n        includeDays: 'all',\r\n        includeNextMonthsFirstFullWeek: false,\r\n        minYear: 1900,\r\n        maxYear: 2050,\r\n        displayFormat: 'MMM d, yyyy',\r\n        barTitleFormat: 'MMM yyyy',\r\n        dayNamesFormat: 'EEEEEE',\r\n        rangeSeparator: '-',\r\n        selectRange: false,\r\n        firstCalendarDay: 0,\r\n        barTitleIfEmpty: 'Click to select a date',\r\n        locale: {},\r\n        fieldId: this.defaultFieldId,\r\n        useEmptyBarTitle: true,\r\n    };\r\n\r\n    displayValue: string;\r\n    viewingDate: Date;\r\n    barTitle: string;\r\n    view: 'days' | 'months' | 'years';\r\n    years: { index: number, year: number; isThisYear: boolean }[];\r\n    months: { month: number; name: string; isSelected: boolean }[];\r\n    dayNames: string[];\r\n    days: Day[];\r\n    fieldId: string;\r\n    disabled: boolean;\r\n\r\n    private _range: DateRange;\r\n\r\n    private onTouchedCallback: () => void = () => { };\r\n    private onChangeCallback: (_: Date | DateRange) => void = (_) => {\r\n        this.valueChange.emit(_);\r\n    }\r\n\r\n    public targetRef: ElementRef;\r\n\r\n    public setDisabledState(isDisabled: boolean) {\r\n        this.disabled = isDisabled;\r\n        if (isDisabled) {\r\n            (this.targetRef.nativeElement as HTMLElement).classList.add('disabled');\r\n        } else {\r\n            (this.targetRef.nativeElement as HTMLElement).classList.remove('disabled');\r\n        }\r\n    }\r\n\r\n    set range(val: DateRange | undefined) {\r\n        this._range = val;\r\n        this.onChangeCallback(this.getValueToEmit(this._range));\r\n    }\r\n\r\n    get range(): DateRange | undefined {\r\n        return this._range;\r\n    }\r\n\r\n    ngOnInit() {\r\n\r\n        if (typeof startOfMonth === 'undefined') {\r\n            throw new Error('module date-fns is required by <ngx-date-picker> to function.');\r\n        }\r\n\r\n        this.view = 'days';\r\n        this.range = this.range || {\r\n            start: new Date(),\r\n            end: new Date(),\r\n        };\r\n\r\n        if (this.value && !(this.value instanceof Date)) {\r\n            this.range = this.value;\r\n            this.viewingDate = this.range.start;\r\n        } else if (this.value && this.value instanceof Date) {\r\n            this.viewingDate = this.value;\r\n        } else {\r\n            this.viewingDate = this.range.start;\r\n        }\r\n\r\n        this.initDayNames();\r\n        this.initYears();\r\n        this.initMonths();\r\n\r\n        this.init();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if ('options' in changes) {\r\n            this.updateOptions(changes.options.currentValue);\r\n            this.initDayNames();\r\n            this.init();\r\n            this.initYears();\r\n            this.initMonths();\r\n        }\r\n    }\r\n\r\n    get defaultFieldId(): string {\r\n        // Only evaluate and increment if required\r\n        const value = `ngx-date-picker-${instanceID++}`;\r\n        Object.defineProperty(this, 'defaultFieldId', { value });\r\n\r\n        return value;\r\n    }\r\n\r\n    updateOptions(options: DatePickerOptions): void {\r\n        this.currentOptions = {\r\n            ...this.currentOptions,\r\n            ...options,\r\n        };\r\n    }\r\n\r\n    writeValue(val: DateRange | Date | string | undefined) {\r\n        if (val) {\r\n            if (typeof val === 'string') {\r\n                this.range.start = this.range.end = new Date(val);\r\n            } else if (val instanceof Date) {\r\n                this.range.start = this.range.end = val;\r\n            } else if (val.start) { // Checking if it's instance of DateRange\r\n                this.range = val;\r\n            } else {\r\n                throw Error('Invalid input data type');\r\n            }\r\n\r\n            this.viewingDate = this.range.start || this.viewingDate || new Date();\r\n\r\n            this.init();\r\n        }\r\n    }\r\n\r\n    registerOnChange(fn: any) {\r\n        this.onChangeCallback = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: any) {\r\n        this.onTouchedCallback = fn;\r\n    }\r\n\r\n    formatDay = (date: Date, isVisible: boolean = true): Day => (\r\n        {\r\n            date,\r\n            day: getDate(date),\r\n            month: getMonth(date),\r\n            year: getYear(date),\r\n            inThisMonth: isSameMonth(date, this.viewingDate),\r\n            isToday: isVisible && isToday(date),\r\n            isSelected: isVisible && this.isDateSelected(date),\r\n            isInRange: isVisible && this.isInRange(date),\r\n            isSelectable: isVisible && this.isDateSelectable(date),\r\n            isStart: isVisible && this.isRangeBoundary(date, 'start'),\r\n            isEnd: isVisible && this.isRangeBoundary(date, 'end'),\r\n            isVisible,\r\n        }\r\n    )\r\n\r\n    getDayClasses(day: Day): AddClass {\r\n        return {\r\n            'is-prev-month': !day.inThisMonth,\r\n            'is-today': day.isToday,\r\n            'is-selected': day.isSelected,\r\n            'is-in-range': day.isInRange,\r\n            'is-disabled': !day.isSelectable,\r\n            'range-start': day.isStart,\r\n            'range-end': day.isEnd,\r\n            'is-visible': day.isVisible,\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Checks if specified date is in range of min and max dates\r\n     */\r\n    private isDateSelectable(date: Date): boolean {\r\n        const minDateSet = !isNull(this.currentOptions.minDate);\r\n        const maxDateSet = !isNull(this.currentOptions.maxDate);\r\n        const timestamp = date.valueOf();\r\n\r\n        // Check if the date range is set and between min and max\r\n        const _isAboveMinDate = minDateSet ? timestamp >= this.currentOptions.minDate.valueOf() : true;\r\n        const _isBelowMaxDate = maxDateSet ? timestamp <= this.currentOptions.maxDate.valueOf() : true;\r\n\r\n        return _isAboveMinDate && _isBelowMaxDate;\r\n    }\r\n\r\n    private isDateSelected(date: Date): boolean {\r\n        return this.range && this.range.start ? isSameDate(date, this.range.start) || isSameDate(date, this.range.end) : false;\r\n    }\r\n\r\n    private isInRange(date: Date): boolean {\r\n        return this.isDateSelected(date) || this.range && this.range.start ? (isAfter(date, this.range.start) && isBefore(date, this.range.end)) : false;\r\n    }\r\n\r\n    public formatDisplay(): string {\r\n        if (!this.range) {\r\n            return '';\r\n        }\r\n\r\n        const formattedStartDate = format(this.range.start, this.currentOptions.displayFormat, this.currentOptions.locale);\r\n\r\n        if (this.currentOptions.selectRange) {\r\n            const formattedEndDate = format(\r\n                this.range.end || this.range.start,\r\n                this.currentOptions.displayFormat,\r\n                this.currentOptions.locale\r\n            );\r\n\r\n            return `${formattedStartDate} ${this.currentOptions.rangeSeparator} ${formattedEndDate}`;\r\n        }\r\n\r\n        return formattedStartDate;\r\n    }\r\n\r\n    private isRangeBoundary(date: Date, boundary: 'start' | 'end'): boolean {\r\n        return this.range ? !this.range[boundary] || isSameDate(date, this.range[boundary]) : false;\r\n    }\r\n\r\n    private getValueToEmit(range: DateRange): DateRange | Date {\r\n\r\n        if (!range || !range.start) {\r\n            return null;\r\n        }\r\n\r\n        if (!this.currentOptions.selectRange) {\r\n            return new Date(range.start.getTime());\r\n        }\r\n\r\n        if (range.end) {\r\n            return createDateRange(range.start, range.end);\r\n        }\r\n\r\n        return createDateRange(range.start, range.start);\r\n    }\r\n\r\n    // ############### Day #################\r\n\r\n    init(): void {\r\n        if (!this.viewingDate) {\r\n            return;\r\n        }\r\n\r\n        const start = startOfMonth(this.viewingDate);\r\n        const end = endOfMonth(this.viewingDate);\r\n\r\n        this.days = eachDayOfInterval({ start, end }).map((date) => this.formatDay(date));\r\n\r\n        const firstMonthDay = getDay(start) - this.currentOptions.firstCalendarDay;\r\n        const prevDays = firstMonthDay < 0 ? 7 - this.currentOptions.firstCalendarDay : firstMonthDay;\r\n        let nextDays = (this.currentOptions.firstCalendarDay === 1 ? 7 : 6) - getDay(end);\r\n\r\n        const showPrevMonthDays = this.currentOptions.includeDays === 'all' || this.currentOptions.includeDays === 'previous-month';\r\n        const showNextMonthDays = this.currentOptions.includeDays === 'all' || this.currentOptions.includeDays === 'next-month';\r\n\r\n        if (showNextMonthDays && this.currentOptions.includeNextMonthsFirstFullWeek) {\r\n            nextDays += 7;\r\n        }\r\n\r\n        for (let i = 1; i <= prevDays; i++) {\r\n            this.days.unshift(this.formatDay(subDays(start, i), showPrevMonthDays));\r\n        }\r\n\r\n        new Array(nextDays).fill(undefined)\r\n            .forEach((_, i) => this.days.push(this.formatDay(addDays(end, i + 1), showNextMonthDays)));\r\n\r\n\r\n        this.displayValue = this.formatDisplay();\r\n\r\n        if (this.range) {\r\n            this.barTitle = format(this.viewingDate, this.currentOptions.barTitleFormat, this.currentOptions.locale);\r\n        } else {\r\n            this.barTitle = this.currentOptions.useEmptyBarTitle ?\r\n                this.currentOptions.barTitleIfEmpty :\r\n                format(this.viewingDate, this.currentOptions.barTitleFormat, this.currentOptions.locale);\r\n        }\r\n    }\r\n\r\n    setDate(i: number): void {\r\n        const date = this.days[i].date;\r\n\r\n        const _range: any = this.range || {};\r\n\r\n        if (this.currentOptions.selectRange) {\r\n            if (!this.range || (!this.range.start && !this.range.end)) {\r\n                _range.start = date;\r\n            } else if (this.range.start && !this.range.end && isAfter(date, this.range.start)) {\r\n                _range.end = date;\r\n            } else {\r\n                _range.end = undefined;\r\n                _range.start = date;\r\n            }\r\n        } else {\r\n            _range.start = _range.end = date;\r\n        }\r\n\r\n        this.range = _range;\r\n\r\n        this.init();\r\n        this.onChangeCallback(this.getValueToEmit(this.range));\r\n\r\n        // Close if last value is selected\r\n        if (this.currentOptions.closeOnSelection && this.range.end) {\r\n            this.close();\r\n        }\r\n    }\r\n\r\n    initDayNames(): void {\r\n        this.dayNames = [];\r\n        const start = this.currentOptions.firstCalendarDay;\r\n\r\n        for (let i = start; i <= 6 + start; i++) {\r\n            const date = setDay(new Date(), i);\r\n\r\n            this.dayNames.push(format(date, this.currentOptions.dayNamesFormat, this.currentOptions.locale));\r\n        }\r\n    }\r\n\r\n    // ############### Month ###############\r\n\r\n    setMonth(i: number): void {\r\n        this.viewingDate = setMonth(this.viewingDate, this.months[i].month);\r\n        this.init();\r\n        this.initMonths();\r\n        this.view = 'days';\r\n    }\r\n\r\n    initMonths(): void {\r\n        this.months = Array.from(new Array(12), (x, i) => setMonth(new Date(), i))\r\n            .map((date) => {\r\n                return { month: date.getMonth(), name: format(date, 'MMM'), isSelected: date.getMonth() === getMonth(this.viewingDate) };\r\n            });\r\n    }\r\n\r\n    nextMonth(): void {\r\n        this.viewingDate = addMonths(this.viewingDate, 1);\r\n        this.init();\r\n    }\r\n\r\n    prevMonth(): void {\r\n        this.viewingDate = subMonths(this.viewingDate, 1);\r\n        this.init();\r\n    }\r\n\r\n    // ############### Year ################\r\n\r\n\r\n    initYears(): void {\r\n        const range = this.currentOptions.maxYear - this.currentOptions.minYear;\r\n\r\n        /* tslint:disable */\r\n        // Ignore the rule due to the uniqeness of the arrow chain.\r\n        this.years = Array.from(new Array(range), (x, i) => { return { index: i, year: i + this.currentOptions.minYear }; }).map(({ index, year }) => {\r\n            return { index: index, year: year, isThisYear: year === getYear(this.viewingDate) };\r\n        });\r\n        /* tslint:enable */\r\n    }\r\n\r\n    scrollYears(): void {\r\n        setTimeout(() => {\r\n            const _heightOfYearElement = 40;\r\n            const _yearIndex = this.years.filter(item => item.isThisYear)[0];\r\n            const _scrollPosition = ((_yearIndex.index / 3) * _heightOfYearElement) - 30;\r\n            this.calendarYearsContainer.nativeElement.scroll(0, _scrollPosition);\r\n        }, 100);\r\n    }\r\n\r\n    setYear(i: number): void {\r\n        this.viewingDate = setYear(this.viewingDate, this.years[i].year);\r\n        this.init();\r\n        this.initYears();\r\n        this.view = 'months';\r\n    }\r\n\r\n    // ############### Container ################\r\n\r\n    toggleView(): void {\r\n        this.view = this.view === 'days' ? 'years' : 'days';\r\n        this.scrollYears();\r\n    }\r\n\r\n    toggle(): void {\r\n        if (this.disabled) {\r\n            return;\r\n        }\r\n        this.isOpened = !this.isOpened;\r\n\r\n        if (!this.isOpened && this.view === 'years') {\r\n            this.toggleView();\r\n        }\r\n\r\n        if (this.isOpened && this.view === 'days') {\r\n            this.viewingDate = this.range && this.range.start ? this.range.start : this.viewingDate || new Date();\r\n            this.init();\r\n        }\r\n    }\r\n\r\n    reset(): void {\r\n        this.range = {\r\n            start: new Date(),\r\n            end: new Date(),\r\n        };\r\n        this.init();\r\n    }\r\n\r\n    // ############### Misc ################\r\n\r\n    @HostListener('document:click', ['$event']) onBlur(e: MouseEvent) {\r\n\r\n        if (!this.isOpened || !this.currentOptions.closeOnClickOutside) {\r\n            return;\r\n        }\r\n\r\n        if (((e.target as any).parentElement && (e.target as any).parentElement.classList.contains('day-unit'))) {\r\n            return;\r\n        }\r\n\r\n        if (this.calendarContainerElement.nativeElement !== e.target &&\r\n            !this.calendarContainerElement.nativeElement.contains(e.target as any) &&\r\n            !(e.target as any).classList.contains('year-unit') &&\r\n            !(e.target as any).classList.contains('month-unit')\r\n        ) {\r\n            this.close();\r\n        }\r\n    }\r\n\r\n    close(): void {\r\n        this.isOpened = false;\r\n\r\n        if (this.view === 'years') {\r\n            this.toggleView();\r\n        }\r\n    }\r\n}\r\n","<div #container *ngIf=\"isOpened\" class=\"ngx-date-picker-calendar-container\">\r\n\r\n  <!-- Top Bar -->\r\n  <div class=\"ngx-date-picker-navbar\">\r\n\r\n    <div class=\"ngx-date-picker-navbar-item\" (click)=\"prevMonth()\">\r\n      <i class=\"arrow left\"></i>\r\n    </div>\r\n\r\n    <span class=\"ngx-date-picker-title\" (click)=\"toggleView()\">{{ barTitle }}</span>\r\n\r\n    <div class=\"ngx-date-picker-navbar-item\" (click)=\"nextMonth()\">\r\n      <i class=\"arrow right\"></i>\r\n    </div>\r\n\r\n  </div>\r\n\r\n\r\n  <div class=\"main-calendar-container\">\r\n\r\n    <!-- Days -->\r\n    <div [ngClass]=\"{ 'show': view === 'days', 'hidden': view !== 'days' }\">\r\n      <div class=\"main-calendar-day-names\">\r\n        <span class=\"day-name-unit\" *ngFor=\"let name of dayNames\">{{ name }}</span>\r\n      </div>\r\n      <div class=\"main-calendar-days\">\r\n        <span class=\"day-unit\" *ngFor=\"let day of days; let i = index;\" (click)=\"day.isSelectable && setDate(i)\">\r\n          <span class=\"day-background-upper\" [ngClass]=\"this.getDayClasses(day)\">{{ day.isVisible ? day.day : '' }}</span>\r\n        </span>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Months -->\r\n    <div [ngClass]=\"{ 'show': view === 'months', 'hidden': view !== 'months' }\">\r\n      <div class=\"main-calendar-months\">\r\n        <span *ngFor=\"let month of months; let i = index;\" class=\"month-unit\"\r\n          [ngClass]=\"{ 'is-selected': month.isSelected}\" (click)=\"setMonth(i)\">\r\n          {{ month.name }}\r\n        </span>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Years -->\r\n    <div [ngClass]=\"{ 'show': view === 'years', 'hidden': view !== 'years' }\">\r\n      <div #calendarYearsContainer class=\"main-calendar-years\">\r\n        <span *ngFor=\"let year of years; let i = index;\" class=\"year-unit\"\r\n          [ngClass]=\"{ 'is-selected': year.isThisYear }\" (click)=\"setYear(i)\">\r\n          {{ year.year }}\r\n        </span>\r\n      </div>\r\n    </div>\r\n\r\n  </div>\r\n</div>","import { Directive, OnInit, Input, ElementRef, HostListener, OnDestroy, Output, EventEmitter, AfterViewInit, forwardRef } from '@angular/core';\r\nimport { NgxDatePickerComponent } from './component/date-picker/ngx-date-picker.component';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { DateRange } from './models';\r\nimport { createDateRange } from './helpers';\r\n\r\n\r\n@Directive({\r\n    selector: '[ngxDatePicker]',\r\n    providers: [\r\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxDatePickerDirective), multi: true }\r\n    ]\r\n})\r\nexport class NgxDatePickerDirective implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\r\n\r\n    onChangeSubscription: Subscription;\r\n\r\n    @Input('ngxDatePicker') private datePickerInstance: NgxDatePickerComponent;\r\n\r\n    @Input() value: Date | DateRange;\r\n    @Output() valueChange: EventEmitter<Date | DateRange> = new EventEmitter();\r\n\r\n    onChange = (_value: Date | DateRange) => { };\r\n    onTouched = () => { };\r\n\r\n    constructor(public _el: ElementRef) {\r\n    }\r\n\r\n    ngOnInit(): void {\r\n\r\n        if (!this.datePickerInstance) {\r\n            throw new Error('Instance of <ngx-date-picker> is required for directive.');\r\n        }\r\n\r\n        this.datePickerInstance.targetRef = this._el;\r\n        this.datePickerInstance.isOpened = false;\r\n        this.datePickerInstance.currentOptions.closeOnSelection = true;\r\n        this.datePickerInstance.currentOptions.closeOnClickOutside = false;\r\n\r\n        this.onChangeSubscription = this.datePickerInstance.valueChange.subscribe((value: Date | DateRange) => {\r\n            this._el.nativeElement.value = this.datePickerInstance.formatDisplay();\r\n            this.valueChange.emit(value);\r\n            this.onChange(value);\r\n        });\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n\r\n        if (!this.value) {\r\n            return;\r\n        }\r\n\r\n        if (this.value instanceof Date) {\r\n            this.datePickerInstance.range = createDateRange(this.value, this.value);\r\n        } else {\r\n            this.datePickerInstance.range = this.value;\r\n        }\r\n        \r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        if (this.onChangeSubscription) {\r\n            this.onChangeSubscription.unsubscribe();\r\n        }\r\n    }\r\n\r\n\r\n    // ############# ControlValueAccessor #############\r\n\r\n    writeValue(value: Date | DateRange): void {\r\n\r\n        if (value instanceof Date) {\r\n            this.datePickerInstance.range = createDateRange(value, value);\r\n        } else {\r\n            this.datePickerInstance.range = value;\r\n        }\r\n\r\n        this.datePickerInstance.init();\r\n    }\r\n\r\n    registerOnChange(fn: 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): void {\r\n        this.datePickerInstance.disabled = isDisabled;\r\n    }\r\n\r\n    // ############# Click Events #############\r\n\r\n    @HostListener('click', ['$event'])\r\n    onClick(e: MouseEvent) {\r\n        this.datePickerInstance.toggle();\r\n    }\r\n\r\n    @HostListener('document:click', ['$event'])\r\n    onBlur(e: MouseEvent) {\r\n\r\n        if (!this.datePickerInstance.isOpened) {\r\n            return;\r\n        }\r\n\r\n        if (((e.target as any).parentElement && (e.target as any).parentElement.classList.contains('day-unit'))) {\r\n            return;\r\n        }\r\n\r\n        if (this._el.nativeElement !== e.target &&\r\n            !this.datePickerInstance.calendarContainerElement.nativeElement.contains(e.target as any) &&\r\n            !(e.target as any).classList.contains('year-unit') &&\r\n            !(e.target as any).classList.contains('month-unit')\r\n        ) {\r\n            this.datePickerInstance.close();\r\n        }\r\n    }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgxDatePickerComponent } from './component/date-picker/ngx-date-picker.component';\r\nimport { NgxDatePickerDirective } from './ngx-date-picker.directive';\r\n\r\n@NgModule({\r\n  declarations: [ NgxDatePickerComponent, NgxDatePickerDirective ],\r\n  imports: [ CommonModule, FormsModule ],\r\n  exports: [ NgxDatePickerComponent, NgxDatePickerDirective, CommonModule, FormsModule ]\r\n})\r\nexport class NgxDatePickerModule { }\r\n","export class SortingConstants {\r\n    public static ASC = 'ascending';\r\n    public static DESC = 'descending';\r\n}","export enum FilterRuleEnum {\r\n    EMPTY = 'Empty',\r\n    YES = 'Yes',\r\n    NO = 'No',\r\n    IN_LIST = 'InList',\r\n    STARTS_WITH = 'StartsWith',\r\n    ENDS_WITH = 'EndsWith',\r\n    CONTAINS = 'Contains',\r\n    NOT_CONTAINS = 'NotContains',\r\n    EXACT_MATCH = 'ExactMatch',\r\n    LESS = 'Less',\r\n    LESS_OR_EQUAL = 'LessOrEqual',\r\n    EQUAL = 'Equal',\r\n    NOT_EQUAL = 'NotEqual',\r\n    GRATER_OR_EQUAL = 'GreaterOrEqual',\r\n    GREATER = 'Greater'\r\n}\r\n\r\n","export enum DataTypeEnum {\r\n    STRING_TYPE = 'string',\r\n    NUMBER_TYPE = 'number',\r\n    DATE_TYPE = 'date',\r\n    BOOLEAN_TYPE = 'boolean',\r\n    OBJECT_TYPE = 'object'\r\n}\r\n\r\n","export class TableOptionsModel {\r\n    public isResizable: boolean = false;\r\n    public isDraggable: boolean = false;\r\n    public isFilterable: boolean = false;\r\n}\r\n","import { EventEmitter } from '@angular/core';\r\n\r\nexport class NkTableBackdropModel {\r\n\r\n    public readonly onBackdropClick: EventEmitter<void>;\r\n\r\n    private pIsVisible: boolean;\r\n    public get isVisible(): boolean {\r\n        return this.pIsVisible;\r\n    }\r\n\r\n    constructor() {\r\n        this.onBackdropClick = new EventEmitter<void>();\r\n    }\r\n\r\n    public backdropClick(): void {\r\n        this.onBackdropClick.emit();\r\n    }\r\n\r\n    public showBackdrop(): void {\r\n        this.pIsVisible = true;\r\n    }\r\n\r\n    public hideBackdrop(): void {\r\n        this.pIsVisible = false;\r\n    }\r\n}\r\n","import { NkHeaderCellModel } from './nkHeaderCell.model';\r\nimport {\r\n    FilterRuleEnum,\r\n    SortingConstants\r\n} from '../enums';\r\nimport {\r\n    EventEmitter,\r\n    Injectable,\r\n    TemplateRef\r\n} from '@angular/core';\r\nimport { TableOptionsModel } from './nkTableOptions.model';\r\nimport { NkTableBackdropModel } from './nkTableBackdrop.model';\r\nimport { NkHeaderFilterItemContract } from '../interfaces';\r\nimport {\r\n    NkHeaderDateRangeFilterModel,\r\n    NkHeaderFilterModel\r\n} from '.';\r\n\r\n@Injectable()\r\nexport class NkTableModel<TName> {\r\n\r\n    public sortWarningTemplate: TemplateRef<any>;\r\n\r\n    private pOnChangeSorting: EventEmitter<any>;\r\n    public get onChangeSorting(): EventEmitter<any> {\r\n        return this.pOnChangeSorting;\r\n    }\r\n\r\n    private pOnChangeFilter: EventEmitter<any>;\r\n    public get onChangeFilter(): EventEmitter<any> {\r\n        return this.pOnChangeFilter;\r\n    }\r\n\r\n    private pOnDragEnd: EventEmitter<any>;\r\n    public get onDragEnd(): EventEmitter<any> {\r\n        return this.pOnDragEnd;\r\n    }\r\n\r\n    private pOnHeaderHover: EventEmitter<any>;\r\n    public get onHeaderHover(): EventEmitter<any> {\r\n        return this.pOnHeaderHover;\r\n    }\r\n\r\n    public readonly onCloseAllFilters: EventEmitter<void>;\r\n\r\n    private pHeaderCellCollection: Array<NkHeaderCellModel<any, any>>;\r\n    public get headerCellCollection(): Array<NkHeaderCellModel<any, any>> {\r\n        return this.pHeaderCellCollection;\r\n    }\r\n    public set headerCellCollection(value: Array<NkHeaderCellModel<any, any>>) {\r\n        this.pHeaderCellCollection = value;\r\n    }\r\n\r\n    private pOptions: TableOptionsModel;\r\n    public get options(): TableOptionsModel {\r\n        return this.pOptions;\r\n    }\r\n\r\n    public widthCellInPx(indexCell: number): string {\r\n        return this.options.isResizable ? this.headerCellCollection[indexCell].resizableElement.width + 'px' : null;\r\n    }\r\n\r\n    public name: TName;\r\n\r\n    private pBackdrop: NkTableBackdropModel;\r\n    public get backdrop(): NkTableBackdropModel {\r\n        return this.pBackdrop;\r\n    }\r\n\r\n    private pSortingValid: boolean;\r\n    public get sortingValid(): boolean {\r\n        return this.pSortingValid;\r\n    }\r\n\r\n    constructor() {\r\n        this.pHeaderCellCollection = new Array<NkHeaderCellModel<any, any>>();\r\n        this.pOnChangeSorting = new EventEmitter<any>();\r\n        this.pOnChangeFilter = new EventEmitter<any>();\r\n        this.pOnDragEnd = new EventEmitter<any>();\r\n        this.pOnHeaderHover = new EventEmitter<any>();\r\n        this.pOptions = new TableOptionsModel();\r\n        this.pBackdrop = new NkTableBackdropModel();\r\n        this.onCloseAllFilters = new EventEmitter<void>();\r\n        this.pSortingValid = true;\r\n    }\r\n\r\n    public clear(): void {\r\n        this.headerCellCollection.length = 0;\r\n    }\r\n\r\n    public markSortingAsInvalid(): void {\r\n        this.pSortingValid = false;\r\n    }\r\n\r\n    public markSortingAsValid(): void {\r\n        this.pSortingValid = true;\r\n    }\r\n\r\n    public closeAllFilters(): void {\r\n        this.onCloseAllFilters.emit();\r\n    }\r\n\r\n    public getActiveHeaderCell(): NkHeaderCellModel<any, any> {\r\n        const item = this.headerCellCollection.filter((it: NkHeaderCellModel<any, any>) => {\r\n            return it.isSelected;\r\n        })[0];\r\n        return item;\r\n    }\r\n\r\n    public getFilters(): Array<NkHeaderFilterItemContract<any, string | boolean | number | Date>> {\r\n        const items = this.headerCellCollection\r\n            .filter(t => t.filter && t.filter.isActive)\r\n            .map((it: NkHeaderCellModel<any, any>) => {\r\n                return {\r\n                    field: it.field,\r\n                    rule: it.filter.rule,\r\n                    value: it.filter.value,\r\n                    type: it.filter.typeData\r\n                }\r\n            });\r\n        this.headerCellCollection\r\n            .filter(t => t.dateRangeFilter &&  t.dateRangeFilter.isActive)\r\n            .map((it: NkHeaderCellModel<any, any>) => {\r\n                if (it.dateRangeFilter.from) {\r\n                    const from = {\r\n                        field: it.field,\r\n                        rule: FilterRuleEnum.GRATER_OR_EQUAL,\r\n                        value: it.dateRangeFilter.from,\r\n                        type: it.dateRangeFilter.typeData\r\n                    };\r\n                    items.push(from);\r\n                }\r\n                if (it.dateRangeFilter.to) {\r\n                    const to = {\r\n                        field: it.field,\r\n                        rule: FilterRuleEnum.LESS_OR_EQUAL,\r\n                        value: it.dateRangeFilter.to,\r\n                        type: it.dateRangeFilter.typeData\r\n                    }\r\n\r\n                    items.push(to);\r\n                }\r\n            });\r\n        return items;\r\n    }\r\n\r\n    public getActiveHeaderCellByFieldName(field: string): NkHeaderCellModel<any, any> {\r\n        const item = this.headerCellCollection.filter((it: NkHeaderCellModel<any, any>) => {\r\n            return it.field === field;\r\n        })[0];\r\n        return item;\r\n    }\r\n\r\n    public changeDirectOfSorting(field: string): NkHeaderCellModel<any, any> {\r\n        const item = this.headerCellCollection.filter((it: NkHeaderCellModel<any, any>) => {\r\n            return it.field === field;\r\n        })[0];\r\n        if (item) {\r\n            if (item.rule === SortingConstants.ASC) {\r\n                item.rule = SortingConstants.DESC;\r\n            } else {\r\n                item.rule = SortingConstants.ASC;\r\n            }\r\n        }\r\n        return item;\r\n    }\r\n\r\n    public setActiveSorting(field: string): NkHeaderCellModel<any, any> {\r\n        const item = this.headerCellCollection.filter((it: NkHeaderCellModel<any, any>) => {\r\n            return it.field === field;\r\n        })[0];\r\n        if (item) {\r\n            this.headerCellCollection.forEach((element: NkHeaderCellModel<any, any>) => {\r\n                element.isSelected = false;\r\n            });\r\n            item.isSelected = true;\r\n        }\r\n\r\n        return item;\r\n    }\r\n\r\n    public sortBy(field: string, rule: string): void {\r\n        const item = this.setActiveSorting(field);\r\n        item.rule = rule;\r\n        this.onChangeSorting.emit();\r\n    }\r\n\r\n    public tableResize(tableWidth: number) {\r\n        let totWidth = 0;\r\n        this.headerCellCollection.forEach((column) => {\r\n            totWidth += column.resizableElement.width;\r\n        });\r\n        const scale = (tableWidth) / totWidth;\r\n        this.headerCellCollection.forEach((column, index) => {\r\n            const newWidth = column.resizableElement.width * scale;\r\n            column.resizableElement.setWidth(newWidth);\r\n        });\r\n    }\r\n\r\n}\r\n","export class NkHeaderSortItemModel {\r\n\r\n    private _field: string;\r\n    public get field(): string {\r\n        return this._field;\r\n    }\r\n\r\n    public rule: string;\r\n\r\n    constructor(field: string, rule: string) {\r\n        this.rule = rule;\r\n        this._field = field;\r\n    }\r\n}\r\n","import { NkTableModel } from './nkTable.model';\r\nimport { EventEmitter } from '@angular/core';\r\n\r\nexport class NkResizableElementModel {\r\n\r\n    private startWidth: number;\r\n    private startX: number;\r\n    private isResizingRight: boolean;\r\n\r\n    private pPressed: boolean;\r\n    public get pressed(): boolean {\r\n        return this.pPressed;\r\n    }\r\n\r\n    private pWidth: number;\r\n    public get width(): number {\r\n        return this.pWidth;\r\n    }\r\n\r\n    private pHtmlElement: HTMLElement;\r\n    public get htmlElement(): HTMLElement {\r\n        return this.pHtmlElement;\r\n    }\r\n\r\n    private pOnSetColumnWidth: EventEmitter<number>;\r\n    public get onSetColumnWidth(): EventEmitter<number> {\r\n        return this.pOnSetColumnWidth;\r\n    }\r\n\r\n    private index: number;\r\n    private instance: NkTableModel<any>;\r\n\r\n    constructor() {\r\n        this.pOnSetColumnWidth = new EventEmitter<number>();\r\n    }\r\n\r\n    public init(htmlElement: HTMLElement, index: number, instance: NkTableModel<any>) {\r\n        this.pHtmlElement = htmlElement;\r\n        this.setWidth(htmlElement.offsetWidth);\r\n        this.index = index;\r\n        this.instance = instance;\r\n    }\r\n\r\n    public changeIndex(index: number): void {\r\n        this.index = index;\r\n    }\r\n\r\n    public resizeColumn(pageX: number): void {\r\n        this.pPressed = true;\r\n        this.checkResizing(pageX);\r\n        this.startX = pageX;\r\n        this.startWidth = this.pHtmlElement.clientWidth;\r\n    }\r\n\r\n    public handlingMovement(pageX: number): void {\r\n        if (this.pressed) {\r\n            const dx = (this.isResizingRight) ? (pageX - this.startX) : (-pageX + this.startX);\r\n            const width = this.startWidth + dx;\r\n            if (width > 50) {\r\n                this.setColumnWidthChanges(width);\r\n            }\r\n        }\r\n    }\r\n\r\n    public handlingStopMovement(): void {\r\n        this.pPressed = false;\r\n    }\r\n\r\n    public setWidth(width: number): void {\r\n        this.pWidth = width;\r\n        this.pOnSetColumnWidth.emit(width);\r\n    }\r\n\r\n    private checkResizing(pageX: number): void {\r\n        const cellData = this.getCellData();\r\n        if ((this.index === 0) || (Math.abs(pageX - cellData.right) < cellData.width / 2 && this.index !== this.instance.headerCellCollection.length - 1)) {\r\n            this.isResizingRight = true;\r\n        } else {\r\n            this.isResizingRight = false;\r\n        }\r\n    }\r\n\r\n    private getCellData(): DOMRect {\r\n        return this.pHtmlElement.getBoundingClientRect();\r\n    }\r\n\r\n    private setColumnWidthChanges(width: number) {\r\n        const orgWidth = this.pWidth;\r\n        const dx = width - orgWidth;\r\n        if (dx !== 0) {\r\n            const j = (this.isResizingRight) ? this.index + 1 : this.index - 1;\r\n            const newWidth = this.instance.headerCellCollection[j].resizableElement.width - dx;\r\n            if (newWidth > 50) {\r\n                this.setWidth(width);\r\n                this.instance.headerCellCollection[j].resizableElement.setWidth(newWidth);\r\n            }\r\n        }\r\n    }\r\n\r\n}\r\n","import {\r\n    FormControl,\r\n    FormGroup\r\n} from '@angular/forms';\r\nimport { FilterRuleEnum } from '../enums';\r\nimport { NkSelectItemContract } from '../../select/nkSelect.item.contract';\r\nimport { DataTypeEnum } from '../enums/dataType.enum';\r\n\r\nexport class NkHeaderFilterModel<TValue> {\r\n\r\n    public readonly form: FormGroup;\r\n\r\n    public isOpen: boolean;\r\n\r\n    public get rule(): FilterRuleEnum {\r\n        return this.form.controls.rule.value;\r\n    }\r\n    public get value(): TValue {\r\n        return this.form.controls.value.value;\r\n    }\r\n\r\n    private pAvailableRules: Array<NkSelectItemContract>;\r\n    public get availableRules(): Array<NkSelectItemContract> {\r\n        return this.pAvailableRules;\r\n    }\r\n\r\n    private pAvailableValues: Array<NkSelectItemContract>;\r\n    public get availableValues(): Array<NkSelectItemContract> {\r\n        return this.pAvailableValues;\r\n    }\r\n\r\n    public get isActive(): boolean {\r\n        return !!this.pAvailableRules.length && !!this.rule && !(this.value == null || this.value == undefined || (this.value as unknown) == '')\r\n    }\r\n\r\n    private pTypeData: DataTypeEnum;\r\n    public get typeData(): DataTypeEnum {\r\n        return this.pTypeData;\r\n    }\r\n\r\n\r\n    constructor(typeFilter: DataTypeEnum) {\r\n        this.pTypeData = typeFilter;\r\n        this.pAvailableRules = [];\r\n        this.pAvailableValues = [];\r\n        this.form = new FormGroup({\r\n            rule: new FormControl(null),\r\n            value: new FormControl(null)\r\n        });\r\n    }\r\n\r\n    public setCurrentRule(value: FilterRuleEnum): void {\r\n        this.form.controls.rule.setValue(value, { emitEvent: false })\r\n    }\r\n\r\n    public setCurrentValue(value: TValue): void {\r\n        this.form.controls.value.setValue(value, { emitEvent: false })\r\n    }\r\n\r\n}\r\n","import {\r\n    FormControl,\r\n    FormGroup\r\n} from '@angular/forms';\r\nimport { DataTypeEnum } from '../enums/dataType.enum';\r\n\r\nexport class NkHeaderDateRangeFilterModel {\r\n\r\n    public readonly form: FormGroup;\r\n\r\n    public isOpen: boolean;\r\n\r\n    public get from(): Date {\r\n        return this.form.controls.from.value;\r\n    }\r\n\r\n    public get to(): Date {\r\n        return this.form.controls.to.value;\r\n    }\r\n\r\n    public get range() {\r\n        return this.form.controls.range.value;\r\n    }\r\n\r\n    public get isActive(): boolean {\r\n        return !(this.from == null || this.from == undefined || (this.from as unknown) == '')\r\n    }\r\n\r\n    public get typeData(): DataTypeEnum {\r\n        return DataTypeEnum.DATE_TYPE;\r\n    }\r\n\r\n\r\n    constructor() {\r\n        this.form = new FormGroup({\r\n            from: new FormControl(null),\r\n            to: new FormControl(null),\r\n            range: new FormControl(null)\r\n        });\r\n    }\r\n\r\n    public setCurrentValue(from: Date, to: Date): void {\r\n        this.form.controls.from.setValue(from, { emitEvent: false });\r\n        this.form.controls.to.setValue(to, { emitEvent: false });\r\n    }\r\n\r\n    public clear(): void {\r\n        this.form.controls.range.setValue(null, { emitEvent: false });\r\n        this.form.controls.from.setValue(null, { emitEvent: false });\r\n        this.form.controls.to.setValue(null, { emitEvent: false });\r\n    }\r\n\r\n}\r\n","import { NkHeaderSortItemModel } from './nkHeaderSortItem.model';\r\nimport {\r\n    DataTypeEnum,\r\n    SortingConstants\r\n} from '../enums';\r\nimport { TemplateRef } from '@angular/core';\r\nimport { NkResizableElementModel } from './nkResizableElement.model';\r\nimport { NkTableModel } from './nkTable.model';\r\nimport { NkHeaderFilterModel } from './nkHeaderFilter.model';\r\nimport { NkHeaderDateRangeFilterModel } from './nkHeaderDateRangeFilter.model';\r\n\r\nexport class NkHeaderCellModel<TKeyOf, TValue> {\r\n\r\n    //TODO: Need the refactor sorting. Replace to separate model.\r\n    private pRule: string;\r\n    public get rule() {\r\n        return this.pRule;\r\n    }\r\n    public set rule(value: string) {\r\n        this.pRule = value;\r\n        this.sorting.forEach(t => t.rule = value);\r\n    }\r\n\r\n    public get isSortable(): boolean {\r\n        return this.sorting.length !== 0;\r\n    }\r\n\r\n    private pField: keyof TKeyOf;\r\n    public get field(): keyof TKeyOf {\r\n        return this.pField;\r\n    }\r\n\r\n    private pDisplayName: string;\r\n    public get displayName(): string {\r\n        return this.pDisplayName;\r\n    }\r\n\r\n    private pSorting: Array<NkHeaderSortItemModel>;\r\n    public get sorting(): Array<NkHeaderSortItemModel> {\r\n        return this.pSorting;\r\n    }\r\n\r\n    private pResizableElement: NkResizableElementModel;\r\n    public get resizableElement(): NkResizableElementModel {\r\n        return this.pResizableElement;\r\n    }\r\n\r\n    private pFilter: NkHeaderFilterModel<TValue>;\r\n    public get filter(): NkHeaderFilterModel<TValue> {\r\n        return this.pFilter;\r\n    }\r\n\r\n    private pDateRangeFilter: NkHeaderDateRangeFilterModel;\r\n    public get dateRangeFilter(): NkHeaderDateRangeFilterModel {\r\n        return this.pDateRangeFilter;\r\n    }\r\n\r\n    public isSelected: boolean;\r\n    public tooltipInfo: string;\r\n    public tooltipTemplate: TemplateRef<any>;\r\n    public tooltipNgClass: string;\r\n    public ngClass: string;\r\n\r\n    public cellOfRowTemplate: TemplateRef<any>;\r\n    public cellHeaderTemplate: TemplateRef<any>;\r\n\r\n    constructor(field: keyof TKeyOf, displayName: string, typeFilter: DataTypeEnum = DataTypeEnum.STRING_TYPE) {\r\n        this.pSorting = new Array<NkHeaderSortItemModel>();\r\n        this.isSelected = false;\r\n        this.rule = SortingConstants.DESC;\r\n        this.pField = field;\r\n        this.pDisplayName = displayName;\r\n        this.pResizableElement = new NkResizableElementModel();\r\n        if (typeFilter == DataTypeEnum.DATE_TYPE) {\r\n            this.pDateRangeFilter = new NkHeaderDateRangeFilterModel();\r\n        } else {\r\n            this.pFilter = new NkHeaderFilterModel<TValue>(typeFilter);\r\n        }\r\n\r\n    }\r\n\r\n    public init(htmlElement: HTMLElement, index: number, instance: NkTableModel<any>) {\r\n        this.pResizableElement.init(htmlElement, index, instance);\r\n    }\r\n\r\n    public addSorting(field: keyof TKeyOf): void {\r\n        const item = new NkHeaderSortItemModel(field as string, this.rule);\r\n        this.pSorting.push(item);\r\n    }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n    NkTableModel\r\n} from '../models';\r\n\r\n@Injectable()\r\nexport class NcTableProvider<TName> {\r\n\r\n    private pTables: Array<NkTableModel<TName>>;\r\n    public get tables(): Array<NkTableModel<TName>> {\r\n        return this.pTables;\r\n    }\r\n\r\n    constructor() {\r\n        this.pTables = new Array<NkTableModel<TName>>();\r\n    }\r\n\r\n\r\n    public getTableByName(name: TName): NkTableModel<TName> {\r\n        return this.pTables.filter(t => t.name === name)[0];\r\n    }\r\n\r\n    public removeTable(name: TName): void {\r\n        const i = this.pTables.indexOf(this.getTableByName(name));\r\n        this.pTables.splice(i, 1);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NkTableModel } from \"../models/nkTable.model\";\r\n\r\n@Injectable()\r\nexport class NkTableContainerProvider {\r\n\r\n    private pTable: NkTableModel<any>;\r\n    public get table(): NkTableModel<any> {\r\n        return this.pTable;\r\n    }\r\n\r\n    public cellCounter: number;\r\n\r\n    constructor() {\r\n        this.cellCounter = 0;\r\n    }\r\n\r\n    public init(table: NkTableModel<any>): void {\r\n        this.pTable = table;\r\n    }\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  OnInit,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {\r\n  OnDestroy,\r\n  AfterViewInit\r\n} from '@angular/core';\r\nimport { NkHeaderCellModel } from '../../../models/nkHeaderCell.model';\r\nimport { NkHeaderFilterModel } from '../../../models/nkHeaderFilter.model';\r\nimport { NkSelect } from '../../../../select/nkSelect.component';\r\nimport { NkTableModel } from '../../../models/nkTable.model';\r\nimport { SubscriptionNotifier } from '../../../../core/models/subscriptionNotifier';\r\n\r\n\r\n@Component({\r\n  selector: 'nk-filter-selector-of-table',\r\n  templateUrl: './nkFilterSelectorOfTable.component.html',\r\n  styleUrls: ['./nkFilterSelectorOfTable.component.scss'],\r\n  host: {\r\n    class: 'nk-filter-selector-of-table'\r\n  }\r\n})\r\n\r\nexport class NkFilterSelectorOfTableComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n  private subscriptions: SubscriptionNotifier = new SubscriptionNotifier();\r\n\r\n  @Input() cell: NkHeaderCellModel<any, any>;\r\n  @ViewChild('filterRuleSelect', { static: true }) filterRuleSelect: NkSelect;\r\n  @ViewChild('filterValueSelect', { static: false }) filterValueSelect: NkSelect;\r\n\r\n  public get filter(): NkHeaderFilterModel<any> {\r\n    return this.cell.filter;\r\n  }\r\n\r\n  public get hasValueFromList(): boolean {\r\n    return this.filter.availableValues.length > 0;\r\n  }\r\n\r\n  constructor(\r\n    public model: NkTableModel<any>\r\n  ) {\r\n\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n    if (this.filterValueSelect) {\r\n      this.filterValueSelect.addItems(this.filter.availableValues.map(t => t));\r\n    }\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscriptions.destroy();\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    this.filterRuleSelect.addItems(this.filter.availableRules.map(t => t));\r\n    this.filter\r\n      .form\r\n      .valueChanges\r\n      .pipe(this.subscriptions.register())\r\n      .subscribe(() => {\r\n        this.model.onChangeFilter.emit();\r\n      });\r\n  }\r\n\r\n}\r\n","<div class=\"nk-filter-selector\"\r\n     [formGroup]=\"filter.form\">\r\n    <nk-select #filterRuleSelect\r\n               required\r\n               class=\"filter-rule-select nk-select-default\"\r\n               formControlName=\"rule\"\r\n               [nkSelectPrimaryKey]=\"'id'\"\r\n               [appendTo]=\"'self'\">\r\n        <ng-template #itemTemplate\r\n                     let-controlItem=\"controlItem\">\r\n            <div class=\"field-item text-overflow\"\r\n                 title=\"{{controlItem.name}}\">{{controlItem.name}}</div>\r\n        </ng-template>\r\n    </nk-select>\r\n    <div *ngIf=\"!hasValueFromList\"\r\n         class=\"input-wrapper\">\r\n        <input class=\"input-value\"\r\n               formControlName=\"value\"\r\n               placeholder=\"Filter\"\r\n               type=\"text\" />\r\n    </div>\r\n    <ng-container *ngIf=\"hasValueFromList\">\r\n        <nk-select #filterValueSelect\r\n                   class=\"filter-value-select nk-select-default\"\r\n                   formControlName=\"value\"\r\n                   [nkSelectPrimaryKey]=\"'id'\"\r\n                   [appendTo]=\"'self'\">\r\n            <ng-template #itemTemplate\r\n                         let-controlItem=\"controlItem\">\r\n                <div class=\"field-item text-overflow\"\r\n                     title=\"{{controlItem.name}}\">{{controlItem.name}}</div>\r\n            </ng-template>\r\n        </nk-select>\r\n    </ng-container>\r\n</div>","import {\r\n  Component,\r\n  Input,\r\n  OnInit,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {\r\n  OnDestroy,\r\n  AfterViewInit\r\n} from '@angular/core';\r\nimport { NkHeaderCellModel } from '../../../models/nkHeaderCell.model';\r\nimport { NkHeaderDateRangeFilterModel } from '../../../models/nkHeaderDateRangeFilter.model';\r\nimport { NkSelect } from '../../../../select/nkSelect.component';\r\nimport { NkTableModel } from '../../../models/nkTable.model';\r\nimport { SubscriptionNotifier } from '../../../../core/models/subscriptionNotifier';\r\n\r\n@Component({\r\n  selector: 'nk-filter-date-range-of-table',\r\n  templateUrl: './nkFilterDateRangeOfTable.component.html',\r\n  styleUrls: ['./nkFilterDateRangeOfTable.component.scss'],\r\n  host: {\r\n    class: 'nk-filter-date-range-of-table'\r\n  }\r\n})\r\n\r\nexport class NkFilterDateRangeOfTableComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n  private subscriptions: SubscriptionNotifier = new SubscriptionNotifier();\r\n\r\n  @Input() cell: NkHeaderCellModel<any, any>;\r\n\r\n  @ViewChild('filterRuleSelect', { static: true }) filterRuleSelect: NkSelect;\r\n  @ViewChild('filterValueSelect', { static: false }) filterValueSelect: NkSelect;\r\n\r\n  public get filter(): NkHeaderDateRangeFilterModel {\r\n    return this.cell.dateRangeFilter;\r\n  }\r\n\r\n  private pPickerPosition = 'down';\r\n  public get pickerPosition(): string {\r\n    return this.pPickerPosition;\r\n  }\r\n\r\n  constructor(\r\n    public model: NkTableModel<any>\r\n  ) {\r\n\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscriptions.destroy();\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    this.filter\r\n      .form\r\n      .valueChanges\r\n      .pipe(this.subscriptions.register())\r\n      .subscribe(() => {\r\n        if (this.filter.range.startDate && this.filter.range.endDate) {\r\n          this.filter.setCurrentValue(this.filter.range.startDate.toDate(), this.filter.range.endDate.toDate());\r\n          this.model.onChangeFilter.emit();\r\n        }\r\n      });\r\n  }\r\n\r\n  public calculatePickerPosition(picker: HTMLInputElement): void {\r\n    const pickerTop = picker.getBoundingClientRect().y;\r\n    const pickerHeight = 270 + 100;\r\n    this.pPickerPosition = (window.innerHeight - pickerTop - pickerHeight) > 0 ? 'down' : 'up';\r\n  }\r\n\r\n  public clear(): void {\r\n    this.filter.clear();\r\n    this.model.onChangeFilter.emit();\r\n  }\r\n\r\n}\r\n","<div class=\"nk-filter-selector\"\r\n    [formGroup]=\"filter.form\">\r\n    <div class=\"flex-row\">\r\n        <div class=\"flex-columns date\">\r\n            <div class=\"value-block ngx-date-range-picker\">\r\n                <input type=\"text\"\r\n                    class=\"date-selector\"\r\n                    #startDateSelector\r\n                    ngxDaterangepickerMd\r\n                    (click)=\"calculatePickerPosition(startDateSelector)\"\r\n                    formControlName=\"range\"\r\n                    [opens]=\"'center'\"\r\n                    [drops]=\"pickerPosition\"\r\n                    [autoApply]=\"true\" />\r\n            </div>\r\n        </div>\r\n        <div class=\"flex-columns clear\" (click)=\"clear()\">\r\n            <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n                viewBox=\"0 0 384 512\">\r\n                <path\r\n                    d=\"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\" />\r\n            </svg>\r\n        </div>\r\n    </div>\r\n</div>","import {\r\n  AnimationTriggerMetadata,\r\n  style,\r\n  transition,\r\n  trigger\r\n} from '@angular/animations';\r\nimport {\r\n  Component,\r\n  Input,\r\n  OnInit\r\n} from '@angular/core';\r\nimport { NkHeaderCellModel } from '../../models/nkHeaderCell.model';\r\nimport { animate } from '@angular/animations';\r\nimport {\r\n  NkTableModel,\r\n  TableOptionsModel\r\n} from '../../models';\r\nimport { OnDestroy } from '@angular/core';\r\nimport { SubscriptionNotifier } from '../../../core/models/subscriptionNotifier';\r\n\r\nconst FADE_IN_CONTENT_BY_OPACITY: AnimationTriggerMetadata = trigger('fadeInContentByOpacity', [\r\n  transition(':enter', [\r\n    style({ opacity: 0 }),\r\n    animate('300ms', style({ opacity: 1 }))\r\n  ]),\r\n  transition(':leave', [\r\n    style({ opacity: 1 }),\r\n    animate('300ms', style({ opacity: 0 })),\r\n  ])\r\n]);\r\n\r\n@Component({\r\n  selector: 'nk-filter-of-table',\r\n  templateUrl: './nkFilterOfTable.component.html',\r\n  styleUrls: ['./nkFilterOfTable.component.scss'],\r\n  animations: [FADE_IN_CONTENT_BY_OPACITY],\r\n  host: {\r\n    class: 'nk-filter-of-table'\r\n  }\r\n})\r\n\r\nexport class NkFilterOfTableComponent implements OnInit, OnDestroy {\r\n\r\n  private subscriptions: SubscriptionNotifier = new SubscriptionNotifier();\r\n\r\n  @Input() cell: NkHeaderCellModel<any, any>;\r\n\r\n  public get filterIsOpen(): boolean {\r\n    if (this.cell.dateRangeFilter) {\r\n      return this.cell.dateRangeFilter.isOpen;\r\n    } else {\r\n      return this.cell.filter.isOpen;\r\n    }\r\n  }\r\n\r\n  public get filterIsActive(): boolean {\r\n    if (this.cell.dateRangeFilter) {\r\n      return this.cell.dateRangeFilter.isActive;\r\n    } else {\r\n      return this.cell.filter.isActive;\r\n    }\r\n  }\r\n\r\n  public get defaultFilterIsAvailable(): boolean {\r\n    return !!this.cell.filter;\r\n  }\r\n\r\n  public get dateRangeFilterIsAvailable(): boolean {\r\n    return !!this.cell.dateRangeFilter;\r\n  }\r\n\r\n  constructor(\r\n    private model: NkTableModel<any>\r\n  ) {\r\n\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscriptions.destroy();\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    this.model\r\n      .backdrop\r\n      .onBackdropClick\r\n      .pipe(this.subscriptions.register())\r\n      .subscribe(() => {\r\n        this.model.backdrop.hideBackdrop();\r\n        if (this.cell.filter) {\r\n          this.cell.filter.isOpen = false;\r\n        }\r\n        if (this.cell.dateRangeFilter) {\r\n          this.cell.dateRangeFilter.isOpen = false;\r\n        }\r\n      });\r\n    this.model\r\n      .onCloseAllFilters\r\n      .pipe(this.subscriptions.register())\r\n      .subscribe(() => {\r\n        if (this.cell.filter) {\r\n          this.cell.filter.isOpen = false;\r\n        }\r\n        if (this.cell.dateRangeFilter) {\r\n          this.cell.dateRangeFilter.isOpen = false;\r\n        }\r\n      });\r\n  }\r\n\r\n  public toggleFilter(): void {\r\n    this.model.closeAllFilters();\r\n    if (this.cell.filter) {\r\n      this.cell.filter.isOpen = !this.cell.filter.isOpen;\r\n      if (this.cell.filter.isOpen) {\r\n        this.model.backdrop.showBackdrop();\r\n      } else {\r\n        this.model.backdrop.hideBackdrop();\r\n      }\r\n    }\r\n\r\n    if (this.cell.dateRangeFilter) {\r\n      this.cell.dateRangeFilter.isOpen = !this.cell.dateRangeFilter.isOpen;\r\n      if (this.cell.dateRangeFilter.isOpen) {\r\n        this.model.backdrop.showBackdrop();\r\n      } else {\r\n        this.model.backdrop.hideBackdrop();\r\n      }\r\n    }\r\n\r\n  }\r\n\r\n}\r\n","<div class=\"icon-wrapper\">\r\n    <div class=\"icon-filter\"\r\n        [class.is-active]=\"filterIsActive\"\r\n        [class.is-open]=\"filterIsOpen\"\r\n        (click)=\"toggleFilter()\">\r\n        <svg width=\"16\"\r\n            height=\"17\"\r\n            viewBox=\"0 0 16 17\"\r\n            xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path fill=\"currentColor\"\r\n                d=\"M14.6667 0.5H1.33333C1.11232 0.5 0.900358 0.587797 0.744078 0.744078C0.587797 0.900358 0.5 1.11232 0.5 1.33333V3.49167C0.5 3.9275 0.6775 4.35583 0.985833 4.66417L5.5 9.17833V15.5C5.50016 15.642 5.53656 15.7816 5.60575 15.9055C5.67494 16.0295 5.77462 16.1338 5.89537 16.2085C6.01612 16.2832 6.15393 16.3258 6.29575 16.3323C6.43758 16.3389 6.57873 16.3091 6.70583 16.2458L10.0392 14.5792C10.3217 14.4375 10.5 14.1492 10.5 13.8333V9.17833L15.0142 4.66417C15.3225 4.35583 15.5 3.9275 15.5 3.49167V1.33333C15.5 1.11232 15.4122 0.900358 15.2559 0.744078C15.0996 0.587797 14.8877 0.5 14.6667 0.5ZM9.0775 8.24417C8.99996 8.32142 8.93847 8.41325 8.89657 8.51436C8.85467 8.61548 8.83317 8.72388 8.83333 8.83333V13.3183L7.16667 14.1517V8.83333C7.16683 8.72388 7.14533 8.61548 7.10343 8.51436C7.06152 8.41325 7.00004 8.32142 6.9225 8.24417L2.16667 3.49167V2.16667H13.8342L13.8358 3.48583L9.0775 8.24417Z\" />\r\n        </svg>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"filterIsOpen\"\r\n    [@fadeInContentByOpacity]>\r\n    <ng-container *ngIf=\"defaultFilterIsAvailable\">\r\n        <nk-filter-selector-of-table [cell]=\"cell\">\r\n        </nk-filter-selector-of-table>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"dateRangeFilterIsAvailable\">\r\n        <nk-filter-date-range-of-table [cell]=\"cell\">\r\n        </nk-filter-date-range-of-table>\r\n    </ng-container>\r\n</div>","import {\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  HostListener,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2\r\n} from '@angular/core';\r\nimport {\r\n  SortingConstants\r\n} from '../../enums';\r\nimport { SubscriptionNotifier } from '../../../core/models';\r\nimport { NkTableModel } from '../../models/nkTable.model';\r\nimport { NkHeaderCellModel } from '../../models/nkHeaderCell.model';\r\nimport {\r\n  ROTATE_180_INVERSE\r\n} from '../../../core/animation/index';\r\n\r\n@Component({\r\n  selector: 'nk-header-cell-of-table',\r\n  templateUrl: './nkHeaderCellOfTable.component.html',\r\n  styleUrls: ['./nkHeaderCellOfTable.component.scss'],\r\n  animations: [ROTATE_180_INVERSE],\r\n  host: {\r\n    class: 'nk-header-cell-of-table'\r\n  }\r\n})\r\n\r\nexport class NkHeaderCellOfTableComponent implements OnDestroy, OnInit, AfterViewInit {\r\n\r\n  @Input() cell: NkHeaderCellModel<any, any>;\r\n  @Input() index: number;\r\n  private subscriptions: SubscriptionNotifier = new SubscriptionNotifier();\r\n  private resizableMousemove: () => void;\r\n  private resizableMouseup: () => void;\r\n\r\n  @HostListener('mousemove', ['$event'])\r\n  componentMouseHover(event: MouseEvent) {\r\n    this.model.onHeaderHover.emit(event);\r\n  }\r\n\r\n  public get isCustomHeader(): boolean {\r\n    return !!this.cell?.cellHeaderTemplate;\r\n  }\r\n\r\n  public get isVisibleResize(): boolean {\r\n    return this.index < this.model.headerCellCollection.length - 1 && this.model.options.isResizable;\r\n  }\r\n\r\n  public get isFilterable(): boolean {\r\n    return this.model.options.isFilterable;\r\n  }\r\n\r\n  public get filterAvailable(): boolean {\r\n    if (this.cell.filter) {\r\n      return this.isFilterable && this.cell.filter.availableRules?.length > 0;\r\n    } else {\r\n      return this.isFilterable;\r\n    }\r\n  }\r\n\r\n  public get isSelected(): boolean {\r\n    const activeSorting = this.model.getActiveHeaderCell();\r\n    return activeSorting?.field === this.cell.field;\r\n  }\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n    private renderer: Renderer2,\r\n    public model: NkTableModel<any>\r\n  ) {\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n    this.cell.init(this.el.nativeElement, this.index, this.model);\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscriptions.destroy();\r\n  }\r\n\r\n  public displayNameClick(): void {\r\n    if (this.model.options.isFilterable) {\r\n      this.changeSorting();\r\n    }\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    if (this.model.options.isResizable) {\r\n      this.cell\r\n        .resizableElement\r\n        .onSetColumnWidth\r\n        .pipe(this.subscriptions.register())\r\n        .subscribe(width => {\r\n          this.renderer.setStyle(this.el.nativeElement, 'width', `${width}px`);\r\n        });\r\n    }\r\n    if (this.model.options.isDraggable) {\r\n      this.model\r\n        .onDragEnd\r\n        .pipe(this.subscriptions.register())\r\n        .subscribe(width => {\r\n          this.cell.resizableElement.changeIndex(this.index);\r\n        });\r\n    }\r\n  }\r\n\r\n  public changeSorting(): void {\r\n    if (this.cell.isSortable) {\r\n      const activeSorting = this.model.getActiveHeaderCell();\r\n      if (activeSorting?.field !== this.cell.field) {\r\n        this.model.setActiveSorting(this.cell.field as string);\r\n      } else {\r\n        this.model.changeDirectOfSorting(this.cell.field as string);\r\n      }\r\n      this.model.onChangeSorting.emit();\r\n    }\r\n  }\r\n\r\n  public getSortingState(): string {\r\n    if (this.isSelected) {\r\n      return 'selected';\r\n    } else {\r\n      return '';\r\n    }\r\n  }\r\n\r\n  public stateSortArrow(): string {\r\n    const sortItem = this.model.getActiveHeaderCellByFieldName(this.cell.field as string);\r\n    if (sortItem.rule === SortingConstants.ASC) {\r\n      return 'up';\r\n    } else {\r\n      return 'down';\r\n    }\r\n  }\r\n\r\n  public onResizeColumn(event: MouseEvent) {\r\n    event.preventDefault();\r\n    this.cell.resizableElement.resizeColumn(event.pageX);\r\n    this.handlingMovement();\r\n  }\r\n\r\n\r\n  private handlingMovement() {\r\n    this.resizableMousemove = this.renderer.listen('document', 'mousemove', (event) => {\r\n      if (event.buttons) {\r\n        this.cell.resizableElement.handlingMovement(event.pageX);\r\n      }\r\n    });\r\n    this.resizableMouseup = this.renderer.listen('document', 'mouseup', (event) => {\r\n      if (this.cell.resizableElement.pressed) {\r\n        this.cell.resizableElement.handlingStopMovement();\r\n        this.resizableMousemove();\r\n        this.resizableMouseup();\r\n      }\r\n    });\r\n  }\r\n\r\n}\r\n","<div class=\"header-element\"\r\n     [class.filterable-mode]=\"isFilterable\"\r\n     [class.selected-element]=\"isSelected\"\r\n     [class.sorting-invalid]=\"!model.sortingValid\"\r\n     [ngClass]=\"(cell.isSortable ? ' sortable' : ' no-sortable') \">\r\n     <div class=\"icon-sort-wrapper\"\r\n          (click)=\"changeSorting()\"\r\n          *ngIf=\"cell.isSortable && isFilterable\">\r\n          <div class=\"icon-sort\"\r\n               [@rotateBlock180Inverse]=\"stateSortArrow()\"\r\n               [ngClass]=\"getSortingState()\"></div>\r\n          <div class=\"sorting-warning\"\r\n               *ngIf=\"!model.sortingValid\">\r\n               <ng-container *ngTemplateOutlet=\"model.sortWarningTemplate\"></ng-container>\r\n          </div>\r\n     </div>\r\n     <ng-container *ngIf=\"!isCustomHeader; else cell.cellHeaderTemplate\">\r\n          <div class=\"header-text\"\r\n               (click)=\"displayNameClick()\">\r\n               <div class=\"text-overflow header-text-value\"\r\n                    title=\"{{cell.displayName}}\">{{cell.displayName}}</div>\r\n          </div>\r\n     </ng-container>\r\n     <div *ngIf=\"!!cell.tooltipInfo\"\r\n          [tooltip]=\"cell.tooltipInfo\"\r\n          [tooltip-class]=\"'tooltip-info'\"\r\n          class=\"info-icon\">\r\n     </div>\r\n     <div *ngIf=\"!cell.tooltipInfo && !!cell.tooltipTemplate\"\r\n          [tooltip]=\"cell.tooltipTemplate\"\r\n          [tooltip-class]=\"'tooltip-info ' + cell.tooltipNgClass\"\r\n          content-type=\"template\"\r\n          class=\"info-icon\">\r\n     </div>\r\n     <div class=\"icon-sort-wrapper\"\r\n          (click)=\"changeSorting()\"\r\n          *ngIf=\"cell.isSortable && !isFilterable\">\r\n          <div class=\"icon-sort\"\r\n               [@rotateBlock180Inverse]=\"stateSortArrow()\"\r\n               [ngClass]=\"getSortingState()\"></div>\r\n     </div>\r\n     <nk-filter-of-table *ngIf=\"filterAvailable\"\r\n          [cell]=\"cell\"></nk-filter-of-table>\r\n     <span *ngIf=\"isVisibleResize\"\r\n          class=\"resize-holder\"\r\n          (mousedown)=\"onResizeColumn($event)\">\r\n     </span>\r\n</div>","import {\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  HostListener,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit\r\n} from '@angular/core';\r\nimport {\r\n  NkTableModel\r\n} from '../../models';\r\nimport { NcTableProvider } from '../../providers';\r\nimport { DragulaService } from 'ng2-dragula';\r\nimport { SubscriptionNotifier } from '../../../core/models';\r\n\r\n@Component({\r\n  selector: 'nk-header-of-table',\r\n  templateUrl: './nkHeaderOfTable.component.html',\r\n  styleUrls: ['./nkHeaderOfTable.component.scss'],\r\n  providers: [\r\n    { provide: NkTableModel }\r\n  ],\r\n  host: {\r\n    class: 'nk-header-of-table'\r\n  }\r\n})\r\n\r\nexport class NkHeaderOfTableComponent implements OnDestroy, OnInit, AfterViewInit {\r\n\r\n  @Input('nameOfTable') name: string;\r\n  private groupName = 'HEADER_OF_TABLE';\r\n\r\n  private subscriptions: SubscriptionNotifier = new SubscriptionNotifier();\r\n\r\n  @HostListener('window:resize', ['$event'])\r\n  public onResize(event: any) {\r\n    this.setTableResize(this.tableHeader.clientWidth - parseInt(this.tableHeaderStyle.paddingLeft) - parseInt(this.tableHeaderStyle.paddingRight));\r\n  }\r\n\r\n  private tableHeader: HTMLElement;\r\n  private tableHeaderStyle: CSSStyleDeclaration;\r\n\r\n  constructor(\r\n    private el: ElementRef,\r\n    private resizableTableProvider: NcTableProvider<any>,\r\n    private dragulaService: DragulaService,\r\n    public model: NkTableModel<any>\r\n  ) {\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    this.model.name = this.name;\r\n    this.resizableTableProvider.tables.push(this.model);\r\n    this.initDragula();\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.model.clear();\r\n    this.resizableTableProvider.removeTable(this.name);\r\n    this.subscriptions.destroy();\r\n    this.dragulaService.destroy(this.groupName);\r\n  }\r\n\r\n  public ngAfterViewInit() {\r\n    this.tableHeader = this.el.nativeElement.querySelector('.table-header');\r\n    this.tableHeaderStyle = window.getComputedStyle(this.tableHeader);\r\n  }\r\n\r\n  public backDropClick(): void {\r\n    this.model.backdrop.backdropClick();\r\n  }\r\n\r\n  private setTableResize(tableWidth: number) {\r\n    if (this.model.options.isResizable) {\r\n      this.model.tableResize(tableWidth);\r\n    }\r\n  }\r\n\r\n  private initDragula(): void {\r\n    if (!this.model.options.isDraggable) {\r\n      return;\r\n    }\r\n    this.dragulaService.createGroup(this.groupName, {\r\n      moves: (el: any, container: any, handle: any): any => {\r\n        if (handle.classList.contains('resize-holder')) {\r\n          return false;\r\n        }\r\n        return true;\r\n      }\r\n    });\r\n    this.dragulaService\r\n      .dragend(this.groupName)\r\n      .pipe(this.subscriptions.register())\r\n      .subscribe(() => {\r\n        setTimeout(() => {\r\n          this.model.onDragEnd.emit();\r\n        });\r\n      });\r\n  }\r\n\r\n}\r\n","<div class=\"panel-backdrop\"\r\n     *ngIf=\"model.backdrop.isVisible\"\r\n     (click)=\"backDropClick()\"\r\n     (touchstart)=\"backDropClick()\">\r\n</div>\r\n<ng-container *ngIf=\"!model.options.isDraggable\">\r\n     <div class=\"table-header\"\r\n          [class.no-resizable]=\"!model.options.isResizable\">\r\n          <ng-container *ngFor=\"let item of model.headerCellCollection; let i = index\">\r\n               <nk-header-cell-of-table [cell]=\"item\"\r\n                                        [ngClass]=\"item.ngClass\"\r\n                                        [index]=\"i\">\r\n               </nk-header-cell-of-table>\r\n          </ng-container>\r\n     </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"model.options.isDraggable\">\r\n     <div class=\"table-header\"\r\n          [class.no-resizable]=\"!model.options.isResizable\"\r\n          dragula=\"HEADER_OF_TABLE\"\r\n          [(dragulaModel)]=\"model.headerCellCollection\">\r\n          <ng-container *ngFor=\"let item of model.headerCellCollection; let i = index\">\r\n               <nk-header-cell-of-table [cell]=\"item\"\r\n                                        [ngClass]=\"item.ngClass\"\r\n                                        [index]=\"i\">\r\n               </nk-header-cell-of-table>\r\n          </ng-container>\r\n     </div>\r\n</ng-container>","import {\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  OnInit\r\n} from '@angular/core';\r\nimport {\r\n  NcTableProvider,\r\n  NkTableContainerProvider\r\n} from '../../providers';\r\n\r\n@Component({\r\n  selector: 'nk-row-setup-of-table',\r\n  template: '',\r\n  styleUrls: ['./nkRowSetupOfTable.component.scss'],\r\n  providers: [NkTableContainerProvider],\r\n  host: {\r\n    class: 'nk-row-setup-of-table'\r\n  }\r\n})\r\n\r\nexport class NkRowSetupOfTableComponent implements OnInit {\r\n\r\n  @Input('nameOfTable') name: string;\r\n\r\n  constructor(\r\n    private tableProvider: NcTableProvider<any>,\r\n    private tableContainerProvider: NkTableContainerProvider\r\n  ) {\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    const table = this.tableProvider.getTableByName(this.name);\r\n    this.tableContainerProvider.init(table);\r\n  }\r\n\r\n}\r\n","import {\r\n  Component,\r\n  ContentChild,\r\n  Input,\r\n  OnInit,\r\n  TemplateRef,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { NkTableContainerProvider } from '../../providers';\r\nimport { NkHeaderCellModel } from '../../models/nkHeaderCell.model';\r\n\r\n@Component({\r\n  selector: 'nk-cell-of-table',\r\n  templateUrl: './nkCellOfTable.component.html',\r\n  styleUrls: ['./nkCellOfTable.component.scss'],\r\n  host: {\r\n    class: 'nk-cell-of-table'\r\n  }\r\n})\r\n\r\nexport class NkCellOfTableComponent implements OnInit {\r\n\r\n  private cellModel: NkHeaderCellModel<any, any>;\r\n\r\n  @ContentChild('cellTemplate', { static: true }) cellTemplate: TemplateRef<any>;\r\n  @ViewChild('cellOuterTemplate', { static: true }) cellOuterTemplate: TemplateRef<any>;\r\n  @Input('ngClass') ngClass: string;\r\n\r\n  constructor(\r\n    private tableContainerProvider: NkTableContainerProvider\r\n  ) {\r\n  }\r\n\r\n  public width(): string {\r\n    return this.cellModel.resizableElement.width + 'px';\r\n  }\r\n\r\n\r\n  public ngOnInit(): void {\r\n    this.cellModel = this.tableContainerProvider.table.headerCellCollection[this.tableContainerProvider.cellCounter];\r\n    this.cellModel.cellOfRowTemplate = this.cellOuterTemplate;\r\n    this.tableContainerProvider.cellCounter++;\r\n  }\r\n}\r\n","<ng-template #cellOuterTemplate\r\n             let-item=\"item\"\r\n             let-index=\"index\">\r\n    <div class=\"column date\"\r\n         [ngClass]=\"ngClass\"\r\n         [style.width]=\"width()\">\r\n        <ng-template [ngTemplateOutlet]=\"cellTemplate\"\r\n                     [ngTemplateOutletContext]=\"{item: item}\">\r\n\r\n        </ng-template>\r\n    </div>\r\n</ng-template>","import {\r\n  Component,\r\n  Input,\r\n  OnInit\r\n} from '@angular/core';\r\nimport { NkTableModel } from '../../models/nkTable.model';\r\nimport {\r\n  NcTableProvider\r\n} from '../../providers';\r\n\r\n@Component({\r\n  selector: 'nk-row-of-table',\r\n  templateUrl: './nkRowOfTable.component.html',\r\n  styleUrls: ['./nkRowOfTable.component.scss'],\r\n  host: {\r\n    class: 'nk-row-of-table'\r\n  }\r\n})\r\n\r\nexport class NkRowOfTableComponent implements OnInit {\r\n\r\n  public table: NkTableModel<any>;\r\n\r\n  @Input('nameOfTable') name: string;\r\n  @Input('dataContext') dataContext: any;\r\n\r\n  constructor(\r\n    private tableProvider: NcTableProvider<any>\r\n  ) {\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    this.table = this.tableProvider.getTableByName(this.name);\r\n  }\r\n\r\n}\r\n","<ng-container *ngFor=\"let cell of table.headerCellCollection; index as cellIndex\">\r\n    <ng-template [ngTemplateOutlet]=\"cell.cellOfRowTemplate\"\r\n                 [ngTemplateOutletContext]=\"{item: dataContext, index: cellIndex}\"></ng-template>\r\n</ng-container>","import { NgModule, } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n    FormsModule,\r\n    ReactiveFormsModule\r\n} from '@angular/forms';\r\nimport {\r\n    NkHeaderOfTableComponent,\r\n    NkRowSetupOfTableComponent,\r\n    NkHeaderCellOfTableComponent,\r\n    NkCellOfTableComponent,\r\n    NkRowOfTableComponent,\r\n    NkFilterOfTableComponent,\r\n    NkFilterSelectorOfTableComponent,\r\n    NkFilterDateRangeOfTableComponent\r\n} from './components';\r\nimport { TooltipModule } from 'ng2-tooltip-directive-major-angular-updates';\r\nimport { NcTableProvider } from './providers';\r\nimport {\r\n    DragulaModule\r\n} from 'ng2-dragula';\r\nimport { NkCommonModule } from '../core';\r\nimport { NkSelectModule } from '../select/nkSelect.module';\r\nimport { NgxDaterangepickerMd } from 'ngx-daterangepicker-material';\r\n\r\nconst COMPONENTS = [\r\n    NkHeaderOfTableComponent,\r\n    NkHeaderCellOfTableComponent,\r\n    NkRowSetupOfTableComponent,\r\n    NkCellOfTableComponent,\r\n    NkFilterOfTableComponent,\r\n    NkRowOfTableComponent,\r\n    NkFilterSelectorOfTableComponent,\r\n    NkFilterDateRangeOfTableComponent\r\n];\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        NkCommonModule,\r\n        DragulaModule.forRoot(),\r\n        TooltipModule,\r\n        NkSelectModule,\r\n        NgxDaterangepickerMd\r\n    ],\r\n    exports: [\r\n        COMPONENTS,\r\n        NkCommonModule\r\n    ],\r\n    providers: [\r\n        NcTableProvider],\r\n    declarations: [COMPONENTS]\r\n})\r\nexport class NkTableModule {\r\n\r\n}\r\n","export enum ColorFormats {\r\n    HEX,\r\n    RGBA,\r\n    HSLA,\r\n    CMYK\r\n  }","export const defaultColors = [\r\n    {\r\n        color: \"rojo\", preview: \"#E57373\", variants:\r\n            [\"#FFEBEE\", \"#FFCDD2\", \"#EF9A9A\", \"#E57373\", \"#EF5350\", \"#F44336\", \"#E53935\", \"#D32F2F\", \"#C62828\"]\r\n    },\r\n    {\r\n        color: \"rosa\", preview: \"#F06292\", variants:\r\n            [\"#FCE4EC\", \"#F8BBD0\", \"#F48FB1\", \"#F06292\", \"#EC407A\", \"#E91E63\", \"#D81B60\", \"#C2185B\", \"#AD1457\"]\r\n    },\r\n    {\r\n        color: \"purpura\", preview: \"#BA68C8\", variants:\r\n            [\"#F3E5F5\", \"#E1BEE7\", \"#CE93D8\", \"#BA68C8\", \"#AB47BC\", \"#9C27B0\", \"#8E24AA\", \"#7B1FA2\", \"#6A1B9A\"]\r\n    },\r\n    {\r\n        color: \"purpura oscuro\", preview: \"#9575CD\", variants:\r\n            [\"#EDE7F6\", \"#D1C4E9\", \"#B39DDB\", \"#9575CD\", \"#7E57C2\", \"#673AB7\", \"#5E35B1\", \"#512DA8\", \"#4527A0\"]\r\n    },\r\n    {\r\n        color: \"indigo\", preview: \"#7986CB\", variants:\r\n            [\"#E8EAF6\", \"#C5CAE9\", \"#9FA8DA\", \"#7986CB\", \"#5C6BC0\", \"#3F51B5\", \"#3949AB\", \"#303F9F\", \"#283593\"]\r\n    },\r\n    {\r\n        color: \"azul\", preview: \"#64B5F6\", variants:\r\n            [\"#E3F2FD\", \"#BBDEFB\", \"#90CAF9\", \"#64B5F6\", \"#42A5F5\", \"#2196F3\", \"#1E88E5\", \"#1976D2\", \"#1565C0\"]\r\n    },\r\n    {\r\n        color: \"celeste\", preview: \"#4FC3F7\", variants:\r\n            [\"#E1F5FE\", \"#B3E5FC\", \"#81D4FA\", \"#4FC3F7\", \"#29B6F6\", \"#03A9F4\", \"#039BE5\", \"#0288D1\", \"#0277BD\"]\r\n    },\r\n    {\r\n        color: \"cyan\", preview: \"#4DD0E1\", variants:\r\n            [\"#E0F7FA\", \"#B2EBF2\", \"#80DEEA\", \"#4DD0E1\", \"#26C6DA\", \"#00BCD4\", \"#00ACC1\", \"#0097A7\", \"#00838F\"]\r\n    },\r\n    {\r\n        color: \"color\", preview: \"#4DB6AC\", variants:\r\n            [\"#E0F2F1\", \"#B2DFDB\", \"#80CBC4\", \"#4DB6AC\", \"#26A69A\", \"#009688\", \"#00897B\", \"#00796B\", \"#00695C\"]\r\n    },\r\n    {\r\n        color: \"verde\", preview: \"#81C784\", variants:\r\n            [\"#E8F5E9\", \"#C8E6C9\", \"#A5D6A7\", \"#81C784\", \"#66BB6A\", \"#4CAF50\", \"#43A047\", \"#388E3C\", \"#2E7D32\"]\r\n    },\r\n    {\r\n        color: \"verde claro\", preview: \"#AED581\", variants:\r\n            [\"#F1F8E9\", \"#DCEDC8\", \"#C5E1A5\", \"#AED581\", \"#9CCC65\", \"#8BC34A\", \"#7CB342\", \"#689F38\", \"#558B2F\"]\r\n    },\r\n    {\r\n        color: \"lima\", preview: \"#DCE775\", variants:\r\n            [\"#F9FBE7\", \"#F0F4C3\", \"#E6EE9C\", \"#DCE775\", \"#D4E157\", \"#CDDC39\", \"#C0CA33\", \"#AFB42B\", \"#9E9D24\"]\r\n    },\r\n    {\r\n        color: \"amarillo\", preview: \"#FFF176\", variants:\r\n            [\"#FFFDE7\", \"#FFF9C4\", \"#FFF59D\", \"#FFF176\", \"#FFEE58\", \"#FFEB3B\", \"#FDD835\", \"#FBC02D\", \"#F9A825\"]\r\n    },\r\n    {\r\n        color: \"ambar\", preview: \"#FFD54F\", variants:\r\n            [\"#FFF8E1\", \"#FFECB3\", \"#FFE082\", \"#FFD54F\", \"#FFCA28\", \"#FFC107\", \"#FFB300\", \"#FFA000\", \"#FF8F00\"]\r\n    },\r\n    {\r\n        color: \"naranja\", preview: \"#FFB74D\", variants:\r\n            [\"#FFF3E0\", \"#FFE0B2\", \"#FFCC80\", \"#FFB74D\", \"#FFA726\", \"#FF9800\", \"#FB8C00\", \"#F57C00\", \"#EF6C00\"]\r\n    },\r\n    {\r\n        color: \"naranja oscuro\", preview: \"#FF8A65\", variants:\r\n            [\"#FBE9E7\", \"#FFCCBC\", \"#FFAB91\", \"#FF8A65\", \"#FF7043\", \"#FF5722\", \"#F4511E\", \"#E64A19\", \"#D84315\"]\r\n    },\r\n    {\r\n        color: \"marron\", preview: \"#A1887F\", variants:\r\n            [\"#EFEBE9\", \"#D7CCC8\", \"#BCAAA4\", \"#A1887F\", \"#8D6E63\", \"#795548\", \"#6D4C41\", \"#5D4037\", \"#4E342E\"]\r\n    },\r\n    {\r\n        color: \"escala de grises\", preview: \"#E0E0E0\", variants:\r\n            [\"#FFFFFF\", \"#FAFAFA\", \"#F5F5F5\", \"#EEEEEE\", \"#E0E0E0\", \"#BDBDBD\", \"#9E9E9E\", \"#757575\", \"#616161\", \"#424242\", \"#000000\"]\r\n    },\r\n    {\r\n        color: \"azul gris\", preview: \"#90A4AE\", variants:\r\n            [\"#ECEFF1\", \"#CFD8DC\", \"#B0BEC5\", \"#90A4AE\", \"#78909C\", \"#607D8B\", \"#546E7A\", \"#455A64\", \"#37474F\"]\r\n    }] \r\n","export const formats = ['hex','rgba','hsla']","import { EventEmitter, Output } from '@angular/core';\r\nimport { ColorFormats } from '../enums/formats';\r\nimport { ConverterService } from '../services/converter.service';\r\n\r\nexport class Rgba {\r\n  constructor(public r: number, public g: number, public b: number, public a: number) {}\r\n\r\n  public denormalize():Rgba{\r\n    this.r = Math.round(this.r * 255);\r\n    this.g = Math.round(this.g * 255);\r\n    this.b = Math.round(this.b * 255);\r\n    return this;\r\n  }\r\n\r\n  public toString():string{\r\n    this.denormalize();\r\n    let output =  \r\n    'rgb' + \r\n    (this.a != 1 ? 'a(' : '(')+\r\n    this.r + ', ' +\r\n    this.g + ', ' +\r\n    this.b + \r\n    (this.a != 1 ? ', ' + this.a.toPrecision(2) + ')' : ')')\r\n    return output;\r\n  }\r\n\r\n\r\n}\r\n\r\nexport class Hsva {\r\n\r\n  public onChange:EventEmitter<Hsva> = new EventEmitter<Hsva>(true);\r\n\r\n  constructor(public h: number, public s: number, public v: number, public a: number) {\r\n    \r\n  }\r\n\r\n  public onColorChange(value: { s: number, v: number, rgX: number, rgY: number }): void {\r\n    this.s = value.s / value.rgX;\r\n    this.v = value.v / value.rgY;\r\n  }\r\n\r\n  public onHueChange(value: { v: number, rgX: number }): void {\r\n    this.h = value.v / value.rgX;\r\n    // this.sliderH = this.hsva.h;\r\n  }\r\n\r\n  public onValueChange(value: { v: number, rgX: number }): void {\r\n    this.v = value.v / value.rgX;\r\n  }\r\n\r\n  public onAlphaChange(value: { v: number, rgX: number }): void {\r\n    this.a = value.v / value.rgX;\r\n  }\r\n\r\n}\r\n\r\nexport class Hsla {\r\n  constructor(public h: number, public s: number, public l: number, public a: number) {}\r\n  \r\n  public denormalize():Hsla{\r\n    this.h = Math.round(this.h * 360);\r\n    this.s = Math.round(this.s * 100);\r\n    this.l = Math.round(this.l * 100);\r\n    return this;\r\n  }\r\n  public toString():string{\r\n    let output =  \r\n    'hsl' + \r\n    (this.a != 1 ? 'a(': '(') +\r\n    this.h + ', ' +\r\n    this.s + '%, ' +\r\n    this.l + '%' + \r\n    (this.a != 1 ? ', ' + this.a.toPrecision(2) + ')' : ')')\r\n    return output;\r\n  }\r\n\r\n}\r\n\r\nexport class Cmyk {\r\n  constructor(public c: number, public m: number, public y: number, public k: number, public a: number = 1) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n  Cmyk,\r\n  Rgba,\r\n  Hsla,\r\n  Hsva\r\n} from '../models/formats';\r\nimport { ColorFormats } from '../enums/formats';\r\n\r\n@Injectable()\r\nexport class ConverterService {\r\n  // private active: ColorPickerComponent | null = null;\r\n\r\n  constructor() { }\r\n\r\n  // public setActive(active: ColorPickerComponent | null): void {\r\n  //   this.active = active;\r\n  // }\r\n\r\n\r\n  toFormat(hsva: Hsva, format: ColorFormats) {\r\n    var output = '';\r\n    switch (format) {\r\n      case ColorFormats.HEX:\r\n        var rgba: Rgba = this.hsvaToRgba(hsva);\r\n        rgba.denormalize();\r\n        var output = this.rgbaToHex(rgba, true);\r\n        break;\r\n      case ColorFormats.HSLA:\r\n        var hsla: Hsla = this.hsva2hsla(hsva);\r\n        hsla.denormalize();\r\n        var output = hsla.toString();\r\n        break;\r\n      case ColorFormats.RGBA:\r\n        var rgba: Rgba = this.hsvaToRgba(hsva);\r\n        var output = rgba.toString();\r\n        break;\r\n      case ColorFormats.CMYK:\r\n        var rgba: Rgba = this.hsvaToRgba(hsva);\r\n        var cmyk: Cmyk = this.rgbaToCmyk(rgba);\r\n        break;\r\n    }\r\n    return output;\r\n  }\r\n\r\n  public stringToFormat(color: string, format: ColorFormats) {\r\n    var hsva = this.stringToHsva(color, true);\r\n    return this.toFormat(hsva, format);\r\n  }\r\n\r\n  public hsva2hsla(hsva: Hsva): Hsla {\r\n    const h = hsva.h, s = hsva.s, v = hsva.v, a = hsva.a;\r\n\r\n    if (v === 0) {\r\n      return new Hsla(h, 0, 0, a);\r\n    } else if (s === 0 && v === 1) {\r\n      return new Hsla(h, 1, 1, a);\r\n    } else {\r\n      const l = v * (2 - s) / 2;\r\n\r\n      return new Hsla(h, v * s / (1 - Math.abs(2 * l - 1)), l, a);\r\n    }\r\n  }\r\n\r\n  public hsla2hsva(hsla: Hsla): Hsva {\r\n    const h = Math.min(hsla.h, 1), s = Math.min(hsla.s, 1);\r\n    const l = Math.min(hsla.l, 1), a = Math.min(hsla.a, 1);\r\n\r\n    if (l === 0) {\r\n      return new Hsva(h, 0, 0, a);\r\n    } else {\r\n      const v = l + s * (1 - Math.abs(2 * l - 1)) / 2;\r\n\r\n      return new Hsva(h, 2 * (v - l) / v, v, a);\r\n    }\r\n  }\r\n\r\n  public hsvaToRgba(hsva: Hsva): Rgba {\r\n    let r: number, g: number, b: number;\r\n\r\n    const h = hsva.h, s = hsva.s, v = hsva.v, a = hsva.a;\r\n\r\n    const i = Math.floor(h * 6);\r\n    const f = h * 6 - i;\r\n    const p = v * (1 - s);\r\n    const q = v * (1 - f * s);\r\n    const t = v * (1 - (1 - f) * s);\r\n\r\n    switch (i % 6) {\r\n      case 0:\r\n        r = v, g = t, b = p;\r\n        break;\r\n      case 1:\r\n        r = q, g = v, b = p;\r\n        break;\r\n      case 2:\r\n        r = p, g = v, b = t;\r\n        break;\r\n      case 3:\r\n        r = p, g = q, b = v;\r\n        break;\r\n      case 4:\r\n        r = t, g = p, b = v;\r\n        break;\r\n      case 5:\r\n        r = v, g = p, b = q;\r\n        break;\r\n      default:\r\n        r = 0, g = 0, b = 0;\r\n    }\r\n\r\n    return new Rgba(r, g, b, a);\r\n  }\r\n\r\n  public cmykToRgb(cmyk: Cmyk): Rgba {\r\n    const r = (1 - cmyk.c) * (1 - cmyk.k);\r\n    const g = (1 - cmyk.m) * (1 - cmyk.k);\r\n    const b = (1 - cmyk.y) * (1 - cmyk.k);\r\n\r\n    return new Rgba(r, g, b, cmyk.a);\r\n  }\r\n\r\n  public rgbaToCmyk(rgba: Rgba): Cmyk {\r\n    const k: number = 1 - Math.max(rgba.r, rgba.g, rgba.b);\r\n\r\n    if (k === 1) {\r\n      return new Cmyk(0, 0, 0, 1, rgba.a);\r\n    } else {\r\n      const c = (1 - rgba.r - k) / (1 - k);\r\n      const m = (1 - rgba.g - k) / (1 - k);\r\n      const y = (1 - rgba.b - k) / (1 - k);\r\n\r\n      return new Cmyk(c, m, y, k, rgba.a);\r\n    }\r\n  }\r\n\r\n  public rgbaToHsva(rgba: Rgba): Hsva {\r\n    let h: number, s: number;\r\n\r\n    const r = Math.min(rgba.r, 1), g = Math.min(rgba.g, 1);\r\n    const b = Math.min(rgba.b, 1), a = Math.min(rgba.a, 1);\r\n\r\n    const max = Math.max(r, g, b), min = Math.min(r, g, b);\r\n\r\n    const v: number = max, d = max - min;\r\n\r\n    s = (max === 0) ? 0 : d / max;\r\n\r\n    if (max === min) {\r\n      h = 0;\r\n    } else {\r\n      switch (max) {\r\n        case r:\r\n          h = (g - b) / d + (g < b ? 6 : 0);\r\n          break;\r\n        case g:\r\n          h = (b - r) / d + 2;\r\n          break;\r\n        case b:\r\n          h = (r - g) / d + 4;\r\n          break;\r\n        default:\r\n          h = 0;\r\n      }\r\n\r\n      h /= 6;\r\n    }\r\n\r\n    return new Hsva(h, s, v, a);\r\n  }\r\n\r\n  public rgbaToHex(rgba: Rgba, allowHex8?: boolean): string {\r\n    /* tslint:disable:no-bitwise */\r\n    let hex = '#' + ((1 << 24) | (rgba.r << 16) | (rgba.g << 8) | rgba.b).toString(16).substr(1);\r\n\r\n    if (rgba.a != 1) {\r\n      hex += ((1 << 8) | Math.round(rgba.a * 255)).toString(16).substr(1);\r\n    }\r\n    /* tslint:enable:no-bitwise */\r\n\r\n    return hex;\r\n  }\r\n\r\n  public normalizeCMYK(cmyk: Cmyk): Cmyk {\r\n    return new Cmyk(cmyk.c / 100, cmyk.m / 100, cmyk.y / 100, cmyk.k / 100, cmyk.a);\r\n  }\r\n\r\n  public denormalizeCMYK(cmyk: Cmyk): Cmyk {\r\n    return new Cmyk(Math.floor(cmyk.c * 100), Math.floor(cmyk.m * 100), Math.floor(cmyk.y * 100),\r\n      Math.floor(cmyk.k * 100), cmyk.a);\r\n  }\r\n\r\n  public denormalizeRGBA(rgba: Rgba): Rgba {\r\n    return new Rgba(Math.round(rgba.r * 255), Math.round(rgba.g * 255), Math.round(rgba.b * 255), rgba.a);\r\n  }\r\n\r\n  public stringToHsva(colorString: string = '', allowHex8: boolean = true): Hsva | null {\r\n    let hsva: Hsva | null = null;\r\n\r\n    colorString = (colorString || '').toLowerCase();\r\n\r\n    const stringParsers = [\r\n      {\r\n        re: /(rgb)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\r\n        parse: function (execResult: any) {\r\n          return new Rgba(parseInt(execResult[2], 10) / 255,\r\n            parseInt(execResult[3], 10) / 255,\r\n            parseInt(execResult[4], 10) / 255,\r\n            isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\r\n        }\r\n      }, {\r\n        re: /(hsl)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\r\n        parse: function (execResult: any) {\r\n          return new Hsla(parseInt(execResult[2], 10) / 360,\r\n            parseInt(execResult[3], 10) / 100,\r\n            parseInt(execResult[4], 10) / 100,\r\n            isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\r\n        }\r\n      }\r\n    ];\r\n\r\n    if (allowHex8) {\r\n      stringParsers.push({\r\n        re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})?$/,\r\n        parse: function (execResult: any) {\r\n          return new Rgba(parseInt(execResult[1], 16) / 255,\r\n            parseInt(execResult[2], 16) / 255,\r\n            parseInt(execResult[3], 16) / 255,\r\n            parseInt(execResult[4] || 'FF', 16) / 255);\r\n        }\r\n      });\r\n    } else {\r\n      stringParsers.push({\r\n        re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/,\r\n        parse: function (execResult: any) {\r\n          return new Rgba(parseInt(execResult[1], 16) / 255,\r\n            parseInt(execResult[2], 16) / 255,\r\n            parseInt(execResult[3], 16) / 255,\r\n            1);\r\n        }\r\n      });\r\n    }\r\n\r\n    stringParsers.push({\r\n      re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/,\r\n      parse: function (execResult: any) {\r\n        return new Rgba(parseInt(execResult[1] + execResult[1], 16) / 255,\r\n          parseInt(execResult[2] + execResult[2], 16) / 255,\r\n          parseInt(execResult[3] + execResult[3], 16) / 255,\r\n          1);\r\n      }\r\n    });\r\n\r\n    for (const key in stringParsers) {\r\n      if (stringParsers.hasOwnProperty(key)) {\r\n        const parser = stringParsers[key];\r\n\r\n        const match = parser.re.exec(colorString), color: any = match && parser.parse(match);\r\n\r\n        if (color) {\r\n          if (color instanceof Rgba) {\r\n            hsva = this.rgbaToHsva(color);\r\n          } else if (color instanceof Hsla) {\r\n            hsva = this.hsla2hsva(color);\r\n          }\r\n\r\n          return hsva;\r\n        }\r\n      }\r\n    }\r\n\r\n    return hsva;\r\n  }\r\n\r\n  public outputFormat(hsva: Hsva): string {\r\n\r\n    return this.hsvaToRgba(hsva).toString();\r\n  }\r\n\r\n  public getFormatByString(color: string): string {\r\n    color = (color || '').toLowerCase();\r\n    let regexHex: RegExp = /(#([\\da-f]{3}(?:[\\da-f]{3})?(?:[\\da-f]{2})?))/\r\n    let regexRGBA: RegExp = /(rgba\\((\\d{1,3},\\s?){3}(1|0?\\.\\d+)\\)|rgb\\(\\d{1,3}(,\\s?\\d{1,3}){2}\\))/\r\n    let regexHSLA: RegExp = /(hsla\\((\\d{1,3}%?,\\s?){3}(1|0?\\.\\d+)\\)|hsl\\(\\d{1,3}%?(,\\s?\\d{1,3}%?){2}\\))/\r\n    if (regexHex.test(color)) {\r\n      return 'hex'\r\n    }\r\n    else if (regexRGBA.test(color)) {\r\n      return 'rgba'\r\n    }\r\n    else if (regexHSLA.test(color)) {\r\n      return 'hsla'\r\n    } else {\r\n      return '';\r\n    }\r\n  }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'icons',\r\n  templateUrl: './icons.component.html',\r\n  styleUrls: ['./icons.component.css']\r\n})\r\nexport class IconsComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  @Input() icon: string;\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n}\r\n","<ng-container *ngIf=\"icon == 'add'\">\r\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/></svg>\r\n</ng-container>\r\n<ng-container *ngIf=\"icon == 'back'\">\r\n    <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\"/></svg>\r\n</ng-container>","export class SliderPosition {\r\n    constructor(public h: number, public s: number, public v: number, public a: number) {}\r\n}\r\n  \r\nexport class SliderDimension {\r\n    constructor(public h: number, public s: number, public v: number, public a: number) {}\r\n}","import {\r\n  Input,\r\n  Directive,\r\n  Output,\r\n  EventEmitter,\r\n  HostListener,\r\n  ElementRef\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[slider]'\r\n})\r\nexport class SliderDirective {\r\n  private listenerMove: any;\r\n  private listenerStop: any;\r\n\r\n  @Input() rgX: number;\r\n  @Input() rgY: number;\r\n\r\n  @Input() slider: string;\r\n\r\n  @Output() dragEnd = new EventEmitter();\r\n  @Output() dragStart = new EventEmitter();\r\n\r\n  @Output() newValue = new EventEmitter<any>();\r\n\r\n  @HostListener('mousedown', ['$event']) mouseDown(event: any): void {\r\n    this.start(event);\r\n  }\r\n\r\n  @HostListener('touchstart', ['$event']) touchStart(event: any): void {\r\n    this.start(event);\r\n  }\r\n\r\n  constructor(private elRef: ElementRef) {\r\n    this.listenerMove = (event: any) => this.move(event);\r\n\r\n    this.listenerStop = () => this.stop();\r\n  }\r\n\r\n  private move(event: any): void {\r\n    event.preventDefault();\r\n\r\n    this.setCursor(event);\r\n  }\r\n\r\n  private start(event: any): void {\r\n    this.setCursor(event);\r\n\r\n    event.stopPropagation();\r\n\r\n    document.addEventListener('mouseup', this.listenerStop);\r\n    document.addEventListener('touchend', this.listenerStop);\r\n    document.addEventListener('mousemove', this.listenerMove);\r\n    document.addEventListener('touchmove', this.listenerMove);\r\n\r\n    this.dragStart.emit();\r\n  }\r\n\r\n  private stop(): void {\r\n    document.removeEventListener('mouseup', this.listenerStop);\r\n    document.removeEventListener('touchend', this.listenerStop);\r\n    document.removeEventListener('mousemove', this.listenerMove);\r\n    document.removeEventListener('touchmove', this.listenerMove);\r\n\r\n    this.dragEnd.emit();\r\n  }\r\n\r\n  private getX(event: any): number {\r\n    const position = this.elRef.nativeElement.getBoundingClientRect();\r\n\r\n    const pageX = (event.pageX !== undefined) ? event.pageX : event.touches[0].pageX;\r\n\r\n    return pageX - position.left - window.pageXOffset;\r\n  }\r\n\r\n  private getY(event: any): number {\r\n    const position = this.elRef.nativeElement.getBoundingClientRect();\r\n\r\n    const pageY = (event.pageY !== undefined) ? event.pageY : event.touches[0].pageY;\r\n\r\n    return pageY - position.top - window.pageYOffset;\r\n  }\r\n\r\n  private setCursor(event: any): void {\r\n    const width = this.elRef.nativeElement.offsetWidth;\r\n    const height = this.elRef.nativeElement.offsetHeight;\r\n\r\n    const x = Math.max(0, Math.min(this.getX(event), width));\r\n    const y = Math.max(0, Math.min(this.getY(event), height));\r\n\r\n    if (this.rgX !== undefined && this.rgY !== undefined) {\r\n      this.newValue.emit({ s: x / width, v: (1 - y / height), rgX: this.rgX, rgY: this.rgY });\r\n    } else if (this.rgX === undefined && this.rgY !== undefined) {\r\n      this.newValue.emit({ v: y / height, rgY: this.rgY });\r\n    } else if (this.rgX !== undefined && this.rgY === undefined) {\r\n      this.newValue.emit({ v: x / width, rgX: this.rgX });\r\n    }\r\n  }\r\n}","import {\r\n  Component,\r\n  OnInit,\r\n  OnDestroy,\r\n  AfterViewInit,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n  ElementRef,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  OnChanges\r\n} from '@angular/core';\r\nimport { Hsva } from '../../models/formats';\r\nimport {\r\n  SliderDimension,\r\n  SliderPosition\r\n} from '../../models/slider';\r\nimport { ConverterService } from '../../services/converter.service';\r\n\r\n@Component({\r\n  selector: 'color-picker',\r\n  templateUrl: './color-picker.component.html',\r\n  styleUrls: ['./color-picker.component.scss'],\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ColorPickerComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\r\n\r\n\r\n  //IO color\r\n  @Input() color: Hsva;\r\n  @Output() colorChange: EventEmitter<Hsva> = new EventEmitter<Hsva>(false);\r\n  //Event triggered when any slider change\r\n  // @Output() colorSelectedChange:EventEmitter<Hsva> = new EventEmitter<Hsva>(false); \r\n\r\n  private hsva: Hsva = new Hsva(0, 0, 0, 1);\r\n  private outputColor: Hsva;\r\n  public selectedColor: string = '#000000';\r\n  private fallbackColor: string = '#000000';\r\n\r\n  // private sHue: number;\r\n  private sliderDimMax: SliderDimension;\r\n  public slider: SliderPosition;\r\n\r\n\r\n  public hueSliderColor: string;\r\n  public alphaSliderColor: string;\r\n\r\n\r\n  @ViewChild('hueSlider', { static: true }) hueSlider: ElementRef;\r\n  @ViewChild('alphaSlider', { static: true }) alphaSlider: ElementRef;\r\n\r\n  constructor(\r\n    private service: ConverterService\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    this.color = this.color || new Hsva(0, 0, 0, 1);\r\n    this.slider = new SliderPosition(0, 0, 0, 0);\r\n    const hueWidth = this.hueSlider.nativeElement.offsetWidth || 140;\r\n    const alphaWidth = this.alphaSlider.nativeElement.offsetWidth || 140;\r\n    this.sliderDimMax = new SliderDimension(hueWidth, 220, 130, alphaWidth);\r\n    // this.setColorFromString((this.color || this.fallbackColor));\r\n    this.update();\r\n\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n\r\n  }\r\n\r\n  ngOnChanges(changes: any): void {\r\n    if (changes.color && this.color) {\r\n      this.update();\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n\r\n  }\r\n\r\n  public onSliderChange(type: string, event) {\r\n    if (this.hsva) {\r\n      switch (type) {\r\n        case 'saturation-lightness':\r\n          this.hsva.onColorChange(event);\r\n          break;\r\n        case 'hue':\r\n          this.hsva.onHueChange(event);\r\n          break;\r\n        case 'alpha':\r\n          this.hsva.onAlphaChange(event);\r\n          break;\r\n        case 'value':\r\n          this.hsva.onValueChange(event);\r\n          break;\r\n      }\r\n    }\r\n    // this.sHue = this.hsva.h;\r\n    this.update();\r\n    this.setColor(this.outputColor);\r\n  }\r\n\r\n  setColor(color) {\r\n    this.color = color\r\n    this.colorChange.emit(this.color);\r\n  }\r\n\r\n  private update(): void {\r\n\r\n    this.hsva = this.color;\r\n    if (this.sliderDimMax && this.hsva) {\r\n      let rgba = this.service.hsvaToRgba(this.hsva).denormalize();\r\n      let hue = this.service.hsvaToRgba(new Hsva(this.hsva.h, 1, 1, 1)).denormalize();\r\n\r\n      this.hueSliderColor = 'rgb(' + hue.r + ',' + hue.g + ',' + hue.b + ')';\r\n      this.alphaSliderColor = 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')';\r\n\r\n      this.outputColor = this.hsva;\r\n      this.selectedColor = this.service.hsvaToRgba(this.hsva).toString();\r\n\r\n      this.slider = new SliderPosition(\r\n        // (this.sHue || this.hsva.h) * this.sliderDimMax.h - 8,\r\n        this.hsva.h * this.sliderDimMax.h - 8,\r\n        this.hsva.s * this.sliderDimMax.s - 8,\r\n        (1 - this.hsva.v) * this.sliderDimMax.v - 8,\r\n        this.hsva.a * this.sliderDimMax.a - 8\r\n      );\r\n\r\n    }\r\n  }\r\n}\r\n","\r\n<div #dialogPopup class=\"color-picker\" (click)=\"$event.stopPropagation()\">\r\n  \r\n  <div class=\"saturation-lightness\" [slider] [rgX]=\"1\" [rgY]=\"1\" [style.background-color]=\"hueSliderColor\" (newValue)=\"onSliderChange('saturation-lightness',$event)\">\r\n        <div class=\"cursor\" [style.top.px]=\"slider?.v\" [style.left.px]=\"slider?.s\">\r\n\r\n      <div></div>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"hue-alpha box\">\r\n    <div class=\"left\">\r\n      <div class=\"selected-color-background\"></div>\r\n      <div class=\"selected-color\" [style.background-color]=\"selectedColor\"></div>      \r\n    </div>\r\n\r\n    <div class=\"right\">\r\n\r\n      <div #hueSlider class=\"hue\" [slider] [rgX]=\"1\" (newValue)=\"onSliderChange('hue',$event)\">\r\n         <div class=\"sliderCursor\" [style.left.px]=\"slider?.h\"><div><div></div></div></div>\r\n      </div>\r\n\r\n      <div #alphaSlider class=\"alpha\" [slider] [rgX]=\"1\" [style.background-color]=\"alphaSliderColor\" (newValue)=\"onSliderChange('alpha',$event)\" >\r\n         <div class=\"sliderCursor\" [style.left.px]=\"slider?.a\"><div><div></div></div></div>\r\n      \r\n      </div>\r\n\r\n    </div>\r\n  </div>\r\n</div>","import {\r\n  Component,\r\n  OnInit,\r\n  HostListener,\r\n  HostBinding,\r\n  ElementRef\r\n} from '@angular/core';\r\nimport {\r\n  trigger,\r\n  transition,\r\n  query,\r\n  style,\r\n  stagger,\r\n  animate,\r\n  keyframes\r\n} from '@angular/animations';\r\nimport { ColorFormats } from '../../enums/formats';\r\nimport { ConverterService } from '../../services/converter.service';\r\nimport { defaultColors } from '../../helpers/default-colors';\r\nimport { formats } from '../../helpers/formats';\r\nimport { Hsva } from '../../models/formats';\r\nimport { NkColorsTriggerDirective } from '../../directives/nkColorsTrigger.directive';\r\nimport { AfterViewInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'nk-colors-panel',\r\n  templateUrl: './panel.component.html',\r\n  styleUrls: ['./panel.component.scss'],\r\n  animations: [\r\n    trigger('colorsAnimation', [\r\n      transition('void => slide-in', [\r\n        // Initially all colors are hidden\r\n        query(':enter', style({ opacity: 0 }), { optional: true }),\r\n        //slide-in animation\r\n        query(':enter', stagger('10ms', [\r\n          animate('.3s ease-in', keyframes([\r\n            style({ opacity: 0, transform: 'translatex(-50%)', offset: 0 }),\r\n            style({ opacity: .5, transform: 'translatex(-10px) scale(1.1)', offset: 0.3 }),\r\n            style({ opacity: 1, transform: 'translatex(0)', offset: 1 }),\r\n          ]))]), { optional: true }),\r\n      ]),\r\n      //popup animation\r\n      transition('void => popup', [\r\n        query(':enter', style({ opacity: 0, transform: 'scale(0)' }), { optional: true }),\r\n        query(':enter', stagger('10ms', [\r\n          animate('500ms ease-out', keyframes([\r\n            style({ opacity: .5, transform: 'scale(.5)', offset: 0.3 }),\r\n            style({ opacity: 1, transform: 'scale(1.1)', offset: 0.8 }),\r\n            style({ opacity: 1, transform: 'scale(1)', offset: 1 }),\r\n          ]))]), { optional: true })\r\n      ])\r\n    ]),\r\n\r\n  ]\r\n})\r\nexport class PanelComponent implements OnInit, AfterViewInit {\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  click(event) {\r\n    if (this.isOutside(event)) {\r\n      this.emitClose();\r\n    }\r\n  }\r\n\r\n  @HostListener('document:scroll')\r\n  onScroll() {\r\n    this.setPosition()\r\n  }\r\n  @HostListener('window:resize')\r\n  onResize() {\r\n    this.setPosition()\r\n  }\r\n\r\n  @HostBinding('style.top.px') public top: number;\r\n  @HostBinding('style.left.px') public left: number;\r\n  @HostBinding('class.hidden') public isHidden: boolean = true;\r\n\r\n  constructor(\r\n    private elementRef: ElementRef,\r\n    public service: ConverterService\r\n  ) {\r\n\r\n  }\r\n\r\n  public color = '#000000';\r\n  public previewColor: string = '#000000';\r\n  public hsva = new Hsva(0, 1, 1, 1)\r\n\r\n  public colorsAnimationEffect = 'slide-in'\r\n\r\n  public palette = defaultColors;\r\n  public variants = [];\r\n\r\n  public colorFormats = formats;\r\n  public format: ColorFormats = ColorFormats.HEX;\r\n\r\n  public canChangeFormat: boolean = true;\r\n\r\n  public menu = 1;\r\n  public onlyCustomPicker: boolean;\r\n\r\n  public hideColorPicker: boolean = false;\r\n  public hideTextInput: boolean = false;\r\n  public acceptLabel: string;\r\n\r\n  private triggerInstance: NkColorsTriggerDirective;\r\n  private triggerElementRef;\r\n\r\n  public ngOnInit() {\r\n    this.hsva = this.service.stringToHsva(this.color);\r\n    setTimeout(() => {\r\n      this.setPosition();\r\n      this.isHidden = false;\r\n    });\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n\r\n  }\r\n\r\n  public iniciate(\r\n    triggerInstance: NkColorsTriggerDirective,\r\n    triggerElementRef,\r\n    color,\r\n    palette,\r\n    animation,\r\n    format: string,\r\n    hideTextInput: boolean,\r\n    hideColorPicker: boolean,\r\n    acceptLabel: string,\r\n    onlyCustomPicker: boolean) {\r\n\r\n    this.onlyCustomPicker = onlyCustomPicker;\r\n    this.triggerInstance = triggerInstance;\r\n    this.triggerElementRef = triggerElementRef;\r\n    this.color = color || '#000000';\r\n    this.hideColorPicker = hideColorPicker;\r\n    this.hideTextInput = hideTextInput;\r\n    this.acceptLabel = acceptLabel;\r\n    this.menu = onlyCustomPicker ? 3 : 1;\r\n    if (format) {\r\n      if (formats.includes(format)) {\r\n        this.format = formats.indexOf(format.toLowerCase());\r\n        this.canChangeFormat = false;\r\n        if (this.color && this.service.getFormatByString(this.color) != format.toLowerCase()) {\r\n\r\n          this.setColor(this.service.stringToHsva(this.color));\r\n        }\r\n      }\r\n      else {\r\n        console.error('Format provided is invalid, using HEX');\r\n        this.format = ColorFormats.HEX;\r\n      }\r\n    }\r\n    else {\r\n      this.format = formats.indexOf(this.service.getFormatByString(this.color));\r\n    }\r\n\r\n    this.previewColor = this.color;\r\n    this.palette = palette ?? defaultColors;\r\n    this.colorsAnimationEffect = animation;\r\n  }\r\n\r\n  public setPosition() {\r\n    if (this.triggerElementRef) {\r\n      const panelHeight = this.elementRef.nativeElement.querySelector('.panel-content').clientHeight;\r\n      const viewportOffset = this.triggerElementRef.nativeElement.getBoundingClientRect();\r\n\r\n      const top = viewportOffset.top + viewportOffset.height;\r\n      if (top + panelHeight <= window.innerHeight + window.pageYOffset) {\r\n        this.top = viewportOffset.top + viewportOffset.height;\r\n      } else {\r\n        this.top = top - viewportOffset.height - panelHeight - 2;\r\n      }\r\n\r\n      this.left = viewportOffset.left + 250 > window.innerWidth ? viewportOffset.right - 250 : viewportOffset.left;\r\n    }\r\n  }\r\n  public hasVariant(color): boolean {\r\n    return typeof color != 'string' && color.variants.some(v => v.toUpperCase() == this.previewColor.toUpperCase());\r\n  }\r\n\r\n  public isSelected(color) {\r\n    return typeof color == 'string' && color.toUpperCase() == this.previewColor.toUpperCase();\r\n  }\r\n\r\n  public getBackgroundColor(color) {\r\n    if (typeof color == 'string') {\r\n      return { 'background': color };\r\n    }\r\n    else {\r\n      return { 'background': color.preview };\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Change color from default colors\r\n   * @param string color\r\n   */\r\n  public changeColor(color: string): void {\r\n    this.setColor(this.service.stringToHsva(color));\r\n    // this.triggerInstance.onChange();\r\n    this.emitClose();\r\n  }\r\n\r\n  public onChangeColorPicker(event: Hsva) {\r\n    this.setColor(event);\r\n    // this.triggerInstance.onChange();\r\n  }\r\n\r\n  public changeColorManual(color: string): void {\r\n    this.previewColor = color;\r\n    this.color = color;\r\n    this.hsva = this.service.stringToHsva(color);\r\n    this.triggerInstance.setColor(this.color);\r\n    // this.triggerInstance.onChange();\r\n  }\r\n\r\n  setColor(value: Hsva) {\r\n    this.hsva = value;\r\n    if (value) {\r\n      this.color = this.service.toFormat(value, this.format);\r\n      this.setPreviewColor(value);\r\n    }\r\n    this.triggerInstance.setColor(this.color);\r\n  }\r\n\r\n\r\n  setPreviewColor(value: Hsva) {\r\n    this.previewColor = this.service.hsvaToRgba(value).toString();\r\n  }\r\n\r\n  onChange() {\r\n    // this.triggerInstance.onChange();\r\n  }\r\n\r\n  public showColors() {\r\n    this.switchMenu(1);\r\n  }\r\n\r\n  public onColorClick(color) {\r\n    if (typeof color == 'string') {\r\n      this.changeColor(color);\r\n    }\r\n    else {\r\n      this.variants = color.variants;\r\n      this.switchMenu(2);\r\n    }\r\n  }\r\n\r\n  public addColor() {\r\n    this.switchMenu(3);\r\n  }\r\n\r\n  public nextFormat() {\r\n    if (this.canChangeFormat) {\r\n      this.format = (this.format + 1) % this.colorFormats.length;\r\n      this.setColor(this.hsva);\r\n    }\r\n  }\r\n\r\n  public emitClose() {\r\n    this.triggerInstance.close();\r\n  }\r\n\r\n  isOutside(event) {\r\n    return event.target.classList.contains('nk-colors-overlay');\r\n  }\r\n\r\n  private switchMenu(menuType: number): void {\r\n    this.menu = menuType;\r\n    this.isHidden = true;\r\n    setTimeout(() => {\r\n      this.setPosition();\r\n      this.isHidden = false;\r\n    });\r\n  }\r\n\r\n}\r\n","<div class=\"opened panel-content\"\r\n     #dialog>\r\n    <ng-container *ngIf=\"menu == 1\">\r\n        <div class=\"colors\"\r\n             [@colorsAnimation]=\"colorsAnimationEffect\">\r\n            <div (click)=\"onColorClick(color)\"\r\n                 *ngFor=\"let color of palette\"\r\n                 class=\"circle circle-border\"\r\n                 [ngStyle]=\"getBackgroundColor(color)\">\r\n                <div *ngIf=\"hasVariant(color) || isSelected(color)\"\r\n                     class=\"selected\"></div>\r\n            </div>\r\n            <div (click)=\"addColor()\"\r\n                 *ngIf=\"!hideColorPicker\"\r\n                 class=\"circle button\">\r\n                <div class=\"add\">\r\n                    <icons icon=\"add\"></icons>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"menu == 2\">\r\n        <div class=\"colors\"\r\n             [@colorsAnimation]=\"colorsAnimationEffect\">\r\n\r\n            <div class=\"circle\">\r\n                <div (click)=\"showColors()\"\r\n                     class=\"add\">\r\n                    <icons icon=\"back\"></icons>\r\n                </div>\r\n            </div>\r\n            <div (click)=\"changeColor(variant)\"\r\n                 *ngFor=\"let variant of variants\"\r\n                 class=\"circle circle-border\"\r\n                 [ngStyle]=\"{'background': variant}\">\r\n                <div *ngIf=\"isSelected(variant)\"\r\n                     class=\"selected\"></div>\r\n            </div>\r\n\r\n        </div>\r\n\r\n    </ng-container>\r\n    <ng-container *ngIf=\"menu == 3\">\r\n        <div class=\"nav-wrapper\">\r\n            <div (click)=\"showColors()\"\r\n                 *ngIf=\"!onlyCustomPicker\"\r\n                 class=\"round-button button\"\r\n                 style=\"float:left;\">\r\n                <icons icon=\"back\"></icons>\r\n            </div>\r\n            <button (click)=\"emitClose()\"\r\n                    style=\"float:right;\">{{acceptLabel}}</button>\r\n        </div>\r\n        <div class=\"color-picker-wrapper\">\r\n\r\n            <!-- <span [(colorPicker)]=\"color\"></span> -->\r\n            <color-picker [color]=\"hsva\"\r\n                          (colorChange)=\"onChangeColorPicker($event)\"></color-picker>\r\n        </div>\r\n    </ng-container>\r\n    <div class=\"manual-input-wrapper\"\r\n         *ngIf=\"!hideTextInput\">\r\n        <p (click)=\"nextFormat()\">{{colorFormats[format]}}</p>\r\n        <div class=\"g-input\">\r\n            <input placeholder=\"#FFFFFF\"\r\n                   type=\"text\"\r\n                   [value]=\"color\"\r\n                   [style.font-size.px]=\"color.length > 23 ? 9 : 10\"\r\n                   [style.letter-spacing.px]=\"color.length > 16 ? 0 : 1.5\"\r\n                   (keyup)=\"changeColorManual(paintInput.value)\"\r\n                   (keydown.enter)=\"emitClose()\"\r\n                   #paintInput />\r\n        </div>\r\n    </div>\r\n</div>","import { Injectable, ComponentFactoryResolver, Injector, Inject, TemplateRef, Type, ComponentFactory, ApplicationRef, EmbeddedViewRef, ComponentRef } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { PanelComponent } from '../components/panel/panel.component';\r\n\r\n@Injectable()\r\nexport class PanelFactoryService {\r\n  constructor(\r\n    private resolver: ComponentFactoryResolver,\r\n    private applicationRef: ApplicationRef,\r\n    private injector: Injector,\r\n  ) { }\r\n\r\n  \r\n\r\n  componentRef: ComponentRef<PanelComponent>;\r\n  _factory:ComponentFactory<PanelComponent>;\r\n  overlay;\r\n    \r\n\r\n\r\n  createPanel():ComponentRef<PanelComponent> { \r\n    \r\n    if(this.componentRef != undefined){\r\n      this.removePanel();\r\n    }\r\n    const factory: ComponentFactory<PanelComponent> = this.resolver.resolveComponentFactory(PanelComponent);\r\n    \r\n    this.componentRef = factory.create(this.injector);\r\n    this.applicationRef.attachView(this.componentRef.hostView);\r\n    const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n\r\n    this.overlay = document.createElement('div');\r\n    this.overlay.id = \"nk-colors-overlay\";\r\n    this.overlay.classList.add('nk-colors-overlay');\r\n    document.body.appendChild(this.overlay);\r\n    this.overlay.appendChild(domElem);\r\n\r\n    return this.componentRef;\r\n  }\r\n\r\n   removePanel() {\r\n    this.applicationRef.detachView(this.componentRef.hostView);\r\n    this.componentRef.destroy();\r\n    this.overlay.remove();\r\n  }\r\n}","import { EventEmitter, Input, Output, Directive, ElementRef, ComponentRef, HostListener, forwardRef } from '@angular/core';\r\nimport { PanelFactoryService } from '../services/panel-factory.service';\r\nimport { PanelComponent } from '../components/panel/panel.component';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { NgxColor } from '../models/color';\r\n\r\n@Directive({\r\n  selector: '[nk-colors-trigger]',\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => NkColorsTriggerDirective),\r\n      multi: true\r\n    }\r\n  ]\r\n})\r\nexport class NkColorsTriggerDirective implements ControlValueAccessor {\r\n\r\n\r\n  //Main input/output of the color picker\r\n  // @Input() color = '#000000';\r\n  // @Output() colorChange:EventEmitter<string> = new EventEmitter<string>();\r\n\r\n  color = '';\r\n\r\n\r\n  //This defines the type of animation for the palatte.(slide-in | popup)\r\n  @Input() colorsAnimation: 'slide-in' | 'popup' = 'slide-in';\r\n\r\n  //This is used to set a custom palette of colors in the panel;\r\n  @Input() palette: Array<string> | Array<NgxColor>;\r\n\r\n  @Input() format: string;\r\n  @Input() hideTextInput: boolean;\r\n  @Input() onlyCustomPicker: boolean;\r\n  @Input() hideColorPicker: boolean;\r\n  @Input() acceptLabel: string = 'ACCEPT';\r\n  // This event is trigger every time the selected color change\r\n  @Output() change: EventEmitter<string> = new EventEmitter<string>();\r\n  // This event is trigger every time the user change the color using the panel\r\n  @Output() input: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\r\n  @HostListener('click') onClick() {\r\n    this.open();\r\n  }\r\n  constructor(\r\n    private triggerRef: ElementRef,\r\n    private panelFactory: PanelFactoryService,\r\n  ) {\r\n  }\r\n\r\n  panelRef: ComponentRef<PanelComponent>\r\n\r\n  onTouchedCallback: () => void = () => { };\r\n  onChangeCallback: (_: any) => void = () => { };\r\n\r\n\r\n  open() {\r\n    this.panelRef = this.panelFactory.createPanel();\r\n    this.panelRef.instance.iniciate(\r\n      this,\r\n      this.triggerRef,\r\n      this.color,\r\n      this.palette,\r\n      this.colorsAnimation,\r\n      this.format,\r\n      this.hideTextInput,\r\n      this.hideColorPicker,\r\n      this.acceptLabel,\r\n      this.onlyCustomPicker);\r\n  }\r\n\r\n  public close() {\r\n    this.panelFactory.removePanel();\r\n  }\r\n\r\n  public onChange() {\r\n    this.onChangeCallback(this.color);\r\n  }\r\n\r\n\r\n  public setColor(color) {\r\n    this.writeValue(color);\r\n    this.input.emit(color);\r\n  }\r\n\r\n  get value(): string {\r\n    return this.color;\r\n  }\r\n\r\n  set value(value: string) {\r\n    this.setColor(value);\r\n    this.onChangeCallback(value);\r\n  }\r\n\r\n\r\n  writeValue(value) {\r\n    if (value != this.color) {\r\n      this.color = value;\r\n      this.onChange();\r\n      this.change.emit(value);\r\n    }\r\n  }\r\n\r\n  registerOnChange(fn: any) {\r\n    this.onChangeCallback = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any) {\r\n    this.onTouchedCallback = fn;\r\n  }\r\n\r\n\r\n}\r\n","import { Component, ViewEncapsulation, Host, OnInit } from '@angular/core';\r\nimport { NkColorsTriggerDirective } from './directives/nkColorsTrigger.directive';\r\n\r\n@Component({\r\n  selector: 'nk-colors',\r\n  templateUrl: './nkColors.component.html',\r\n  styleUrls: ['./nkColors.component.scss'],\r\n  encapsulation: ViewEncapsulation.None  \r\n})\r\nexport class NkColorsComponent implements OnInit{\r\n\r\n  constructor(\r\n    @Host() public triggerDirective: NkColorsTriggerDirective,\r\n  )\r\n  {\r\n  }\r\n\r\n  // @ViewChild(NkColorsTriggerDirective) triggerDirective;\r\n  ngOnInit(): void {\r\n    this.triggerDirective.change.subscribe(\r\n      color => {this.color = color;}\r\n    );\r\n  }\r\n  //IO color\r\n  color: string = this.triggerDirective?.color;\r\n}\r\n","<div class=\"app-color-picker\">\r\n    <div class=\"preview\">\r\n        <div class=\"preview-background\">\r\n            <div class=\"circle\" [ngStyle]=\"{'background': color}\"></div>\r\n        </div>\r\n    </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { NkColorsComponent } from './nkColors.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IconsComponent } from './components/icons/icons.component';\r\nimport { ColorPickerComponent } from './components/color-picker/color-picker.component';\r\nimport { ConverterService } from './services/converter.service';\r\nimport { SliderDirective } from './directives/slider.directive';\r\nimport { PanelComponent } from './components/panel/panel.component';\r\nimport { PanelFactoryService } from './services/panel-factory.service';\r\nimport { NkColorsTriggerDirective } from './directives/nkColorsTrigger.directive';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    NkColorsComponent,\r\n    IconsComponent,\r\n    ColorPickerComponent,\r\n    SliderDirective,\r\n    PanelComponent,\r\n    NkColorsTriggerDirective],\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  providers: [\r\n    ConverterService,\r\n    PanelFactoryService],\r\n  exports: [\r\n    NkColorsComponent,\r\n    NkColorsTriggerDirective]\r\n})\r\nexport class NkColorsModule { }\r\n","export class NgxColor {\r\n    preview: string;\r\n    variants: Array<string>;\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.NkRibbonFileService","i3","i4.NkRibbonItemElement","i4.NkRibbon","i6.NkRipple","i7.NkSelectMenuDirective","i8.NkSelectMenuItem","i9.NkSelectViewPortScrollDirective","i10.NkSelectFilter","ExperimentalScrollingModule","i3.NkDateDropperPicker","i4.NkDateInput","i1.PaginationService","i2.PaginationControlsDirective","i1.NkTableModel","i4.NkSelect","i2","i3.NkFilterSelectorOfTableComponent","i4.NkFilterDateRangeOfTableComponent","i4.NkFilterOfTableComponent","i1.NcTableProvider","i3.NkTableModel","i4","i5.NkHeaderCellOfTableComponent","i1.NkTableContainerProvider","i1.ConverterService","i2.SliderDirective","i3.IconsComponent","i4.ColorPickerComponent","i1.PanelFactoryService","i1.NkColorsTriggerDirective"],"mappings":"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"}