{"version":3,"file":"ngx-y-ycore.mjs","sources":["../../../projects/ycore/src/animations/index.ts","../../../projects/ycore/src/components/drag-scroll/drag-scroll-item.directive.ts","../../../projects/ycore/src/components/drag-scroll/drag-scroll.component.ts","../../../projects/ycore/src/services/browser-ref.ts","../../../projects/ycore/src/directives/into-view.directive.ts","../../../projects/ycore/src/services/locale.service.ts","../../../projects/ycore/src/directives/if-site.directive.ts","../../../projects/ycore/src/directives/if-theme.directive.ts","../../../projects/ycore/src/directives/scroll-top.directive.ts","../../../projects/ycore/src/directives/src-lazy.directive.ts","../../../projects/ycore/src/filters/classes.ts","../../../projects/ycore/src/filters/images.ts","../../../projects/ycore/src/filters/sanitize.ts","../../../projects/ycore/src/filters/strip.ts","../../../projects/ycore/src/filters/transform.ts","../../../projects/ycore/src/services/navigator.service.ts","../../../projects/ycore/src/filters/url.ts","../../../projects/ycore/src/services/auth.guard.ts","../../../projects/ycore/src/services/site.guard.ts","../../../projects/ycore/src/services/smart-edit.service.ts","../../../projects/ycore/src/form/validators/yvalidators.ts","../../../projects/ycore/src/form/elements/input-file/input-file.component.ts","../../../projects/ycore/src/form/elements/input-select/input-select.component.ts","../../../projects/ycore/src/form/elements/input-switch/input-switch.component.ts","../../../projects/ycore/src/y-core.module.ts","../../../projects/ycore/src/public_api.ts","../../../projects/ycore/src/ngx-y-ycore.ts"],"sourcesContent":["import {\n  animate,\n  animateChild,\n  AnimationTriggerMetadata,\n  group,\n  keyframes,\n  query,\n  state,\n  style,\n  transition,\n  trigger\n} from '@angular/animations';\n\nexport interface AnimationStyle {\n  [key: string]: string | number;\n}\n\nexport const attrAnimation = (name: string,\n                              off: AnimationStyle,\n                              on: AnimationStyle,\n                              timings: string,\n                              stepsOn?: AnimationStyle[],\n                              stepsOff?: AnimationStyle[]): AnimationTriggerMetadata => trigger(name, [\n  state('off', style(off)),\n  state('on', style(on)),\n  transition('off => on', group([\n    stepsOn ? animate(timings, keyframes(stepsOn.map(v => style(v)))) : animate(timings),\n    query('@*', animateChild(), {optional: true}),\n  ])),\n  transition('on => off', group([\n    stepsOff ? animate(timings, keyframes(stepsOff.map(v => style(v)))) : animate(timings),\n  ]))\n]);\n\nexport const structAnimation = (name: string,\n                                off: AnimationStyle,\n                                on: AnimationStyle,\n                                timings: string,\n                                stepsOn?: AnimationStyle[],\n                                stepsOff?: AnimationStyle[]): AnimationTriggerMetadata => trigger(name, [\n  transition(':enter', group([\n    style(off),\n    stepsOn ? animate(timings, keyframes([...stepsOn.map(v => style(v)), style(on)])) : animate(timings, style(on)),\n    query('@*', animateChild(), {optional: true}),\n  ])),\n  transition(':leave', group([\n    stepsOff ? animate(timings, keyframes([...stepsOff.map(v => style(v)), style(off)])) : animate(timings, style(off)),\n  ]))\n]);\n\nexport interface AnimationsDescriptor {\n  name?: string;\n  value?: any;\n  values?: any[];\n  timing?: string;\n}\n\nexport const Animations: any = {};\n\nAnimations.show = ({name = 'show', value = 'block', timing = '2s ease-in'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  display: 'none'\n}, {\n  display: value\n}, timing);\n\nAnimations.hide = ({name = 'hide', value = 'block', timing = '2s ease-in'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  display: value\n}, {\n  display: 'none'\n}, timing);\n\nAnimations.rotate = ({name = 'rotate', value = 45, timing = '0.3s ease-in'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  transform: `rotate(0deg)`\n}, {\n  transform: `rotate(${value}deg)`\n}, timing);\n\nAnimations.rotateAndTranslateY = ({\n                                    name = 'rotate',\n                                    value = null,\n                                    values = [45, '-100%'],\n                                    timing = '0.3s ease-in'\n                                  }: AnimationsDescriptor = {}) => attrAnimation(name, {\n  transform: `rotate(0deg) translateY(0)`\n}, {\n  transform: `rotate(${value || values[0]}deg) translateY(${values[1]})`\n}, timing);\n\nAnimations.dim = ({name = 'dim', value = 0, timing = '0.3s ease-in'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  opacity: 'initial'\n}, {\n  opacity: value\n}, timing);\n\nAnimations.bolder = ({name = 'bolder', value = 900, timing = '0.3s ease-in'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  fontWeight: 'initial'\n}, {\n  fontWeight: value\n}, timing);\n\nAnimations.scale = ({name = 'scale', value = 1.1, timing = '0.3s ease-in'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  zIndex: '1',\n  transform: 'scale(1)'\n}, {\n  zIndex: '2',\n  transform: `scale(${value})`\n}, timing);\n\nAnimations.scaleY = ({name = 'scale', value = 1.1, timing = '0.3s ease-in'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  zIndex: '1',\n  transform: 'scaleY(1)'\n}, {\n  zIndex: '2',\n  transform: `scaleY(${value})`\n}, timing);\n\nAnimations.scaleX = ({name = 'scale', value = 1.1, timing = '0.3s ease-in'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  zIndex: '1',\n  transform: 'scaleX(1)'\n}, {\n  zIndex: '2',\n  transform: `scaleX(${value})`\n}, timing);\n\nAnimations.grow = ({name = 'grow', timing = '0.5s ease', value = '100%'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  height: '*'\n}, {\n  height: `${value}`\n}, timing);\n\nAnimations.expand = ({name = 'expand', timing = '0.5s ease', value = 0}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  height: 0,\n  opacity: `${value}`,\n  zIndex: -1,\n  overflow: 'hidden'\n}, {\n  height: '*',\n  opacity: 1,\n  zIndex: 'initial',\n  overflow: 'initial'\n}, timing);\n\nAnimations.collapse = ({name = 'collapse', timing = '0.5s ease'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  height: '*',\n  opacity: 1,\n  overflow: 'hidden'\n}, {\n  height: 0,\n  opacity: 0,\n  overflow: 'hidden'\n}, timing);\n\nAnimations.flyInX = ({name = 'flyInX', value = '-100%', timing = '0.5s ease'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  transform: `translateX(${value})`,\n}, {\n  transform: 'translateX(0)',\n}, timing);\n\nAnimations.flyOutX = ({name = 'flyOutX', value = '-100%', timing = '0.5s ease'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  transform: 'translateX(0)',\n}, {\n  transform: `translateX(${value})`,\n}, timing);\n\nAnimations.flyInY = ({name = 'flyInY', value = '-100%', timing = '0.5s ease'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  transform: `translateY(${value})`\n}, {\n  transform: 'translateY(0)'\n}, timing);\n\nAnimations.flyOutY = ({name = 'flyOutY', value = '-100%', timing = '0.5s ease'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  transform: `translateY(0)`,\n}, {\n  transform: `translateY(${value})`,\n}, timing);\n\nAnimations.showAndFlyOutY = ({\n                               name = 'flyOutY', value = null, values = ['-100%', 'initial'], timing = '0.5s ease'\n                             }: AnimationsDescriptor = {}) => attrAnimation(name, {\n  transform: 'translateY(0)',\n  display: 'none'\n}, {\n  transform: `translateY(${value || values[0]})`,\n  display: values[1]\n}, timing);\n\nAnimations.flyOutYCollapse = ({name = 'flyOutY', value = '-100%', timing = '0.5s ease'}: AnimationsDescriptor = {}) => attrAnimation(name, {\n  height: '*',\n  opacity: 1,\n  transform: 'translateY(0)'\n}, {\n  height: 0,\n  opacity: 0,\n  transform: `translateY(${value})`\n}, timing);\n\nAnimations.growAndGetOver = ({\n                               name = 'grow', timing = '0.5s ease', values = ['100%', 'initial', '40%']\n                             }: AnimationsDescriptor = {}) => attrAnimation(name, {\n  height: '*',\n  width: `${values[2]}`,\n  zIndex: '1',\n  transform: `translateY(${values[1]})`\n}, {\n  height: `${values[0]}`,\n  width: '*',\n  zIndex: '2',\n  transform: 'translateY(0)'\n}, timing);\n","import {Directive, ElementRef, Input, HostBinding, Inject} from '@angular/core';\n\n@Directive({\n  selector: '[drag-scroll-item]'\n})\nexport class DragScrollItemDirective {\n\n  @HostBinding('style.display')\n  display = 'inline-block';\n\n  @Input('drag-disabled')\n  get dragDisabled() {\n    return this._dragDisabled;\n  }\n\n  set dragDisabled(value: boolean) {\n    this._dragDisabled = value;\n  }\n\n  _dragDisabled = false;\n\n  _elementRef: ElementRef;\n\n  constructor(\n    @Inject(ElementRef) elementRef: ElementRef,\n  ) {\n    this._elementRef = elementRef;\n  }\n}\n","import {\n  ElementRef,\n  Component,\n  Renderer2,\n  OnDestroy,\n  Input,\n  Output,\n  AfterViewInit,\n  OnChanges,\n  EventEmitter,\n  ViewChild,\n  ContentChildren,\n  AfterViewChecked,\n  QueryList,\n  Inject,\n  HostBinding,\n  HostListener\n} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {DragScrollItemDirective} from './drag-scroll-item.directive';\nimport {noop} from 'rxjs';\n\n@Component({\n  selector: 'drag-scroll',\n  template: `\n    <div class=\"drag-scroll-content\" #contentRef>\n      <ng-content></ng-content>\n    </div>\n  `,\n  styles: [`\n    :host {\n      overflow: hidden;\n      display: block;\n    }\n\n    .drag-scroll-content {\n      height: 100%;\n      overflow: auto;\n      white-space: nowrap;\n    }\n  `]\n})\nexport class DragScrollComponent implements OnDestroy, AfterViewInit, OnChanges, AfterViewChecked {\n  private _index = 0;\n\n  private _scrollbarHidden = false;\n\n  private _disabled = false;\n\n  private _xDisabled = false;\n\n  private _xWheelEnabled = false;\n\n  private _yDisabled = false;\n\n  private _dragDisabled = false;\n\n  private _snapDisabled = false;\n\n  private _snapOffset = 0;\n\n  private _snapDuration = 500;\n\n  private _isDragging = false;\n\n  private _onMouseMoveListener: (_: any) => void = noop;\n\n  private _onMouseUpListener: (_: any) => void = noop;\n\n  private _onMouseDownListener: (_: any) => void = noop;\n\n  private _onScrollListener: (_: any) => void = noop;\n\n  private _onDragStartListener: (_: any) => void = noop;\n\n  /**\n   * Is the user currently pressing the element\n   */\n  isPressed = false;\n\n  /**\n   * Is the user currently scrolling the element\n   */\n  isScrolling = false;\n\n  scrollTimer: number | any = -1;\n\n  scrollToTimer: number | any = -1;\n\n  /**\n   * Is the user currently dragging the element\n   */\n  get isDragging(): boolean {\n    return this._isDragging;\n  }\n\n  /**\n   * The x coordinates on the element\n   */\n  downX = 0;\n\n  /**\n   * The y coordinates on the element\n   */\n  downY = 0;\n\n  displayType: string | null = 'block';\n\n  elWidth: string | null = null;\n\n  elHeight: string | null = null;\n\n  /**\n   * The parentNode of carousel Element\n   */\n  parentNode: HTMLElement | undefined;\n\n  /**\n   * The carousel Element\n   */\n\n  @ViewChild('contentRef', {static: true}) _contentRef: ElementRef | undefined;\n\n  @ContentChildren(DragScrollItemDirective, {descendants: true}) _children: QueryList<DragScrollItemDirective> | undefined;\n\n  @HostBinding('style.pointer-events') _pointerEvents = 'auto';\n\n  wrapper: HTMLDivElement | undefined;\n\n  scrollbarWidth: string | null = null;\n\n  get currIndex() {\n    return this._index;\n  }\n\n  set currIndex(value) {\n    if (value !== this._index) {\n      this._index = value;\n      this.indexChanged.emit(value);\n    }\n  }\n\n  isAnimating = false;\n\n  prevChildrenLength = 0;\n\n  indexBound = 0;\n\n  @Output() dsInitialized = new EventEmitter<void>();\n\n  @Output() indexChanged = new EventEmitter<number>();\n\n  @Output() reachesLeftBound = new EventEmitter<boolean>();\n\n  @Output() reachesRightBound = new EventEmitter<boolean>();\n\n  @Output() snapAnimationFinished = new EventEmitter<number>();\n\n  @Output() dragStart = new EventEmitter<void>();\n\n  @Output() dragEnd = new EventEmitter<void>();\n\n  /**\n   * Whether the scrollbar is hidden\n   */\n  @Input('scrollbar-hidden')\n  get scrollbarHidden() {\n    return this._scrollbarHidden;\n  }\n\n  set scrollbarHidden(value: boolean) {\n    this._scrollbarHidden = value;\n  }\n\n  /**\n   * Whether horizontally and vertically draging and scrolling is be disabled\n   */\n  @Input('drag-scroll-disabled')\n  get disabled() {\n    return this._disabled;\n  }\n\n  set disabled(value: boolean) {\n    this._disabled = value;\n  }\n\n  /**\n   * Whether horizontally dragging and scrolling is be disabled\n   */\n  @Input('drag-scroll-x-disabled')\n  get xDisabled() {\n    return this._xDisabled;\n  }\n\n  set xDisabled(value: boolean) {\n    this._xDisabled = value;\n  }\n\n  /**\n   * Whether vertically dragging and scrolling events is disabled\n   */\n  @Input('drag-scroll-y-disabled')\n  get yDisabled() {\n    return this._yDisabled;\n  }\n\n  set yDisabled(value: boolean) {\n    this._yDisabled = value;\n  }\n\n  /**\n   * Whether scrolling horizontally with mouse wheel is enabled\n   */\n  @Input('scroll-x-wheel-enabled')\n  get xWheelEnabled() {\n    return this._xWheelEnabled;\n  }\n\n  set xWheelEnabled(value: boolean) {\n    this._xWheelEnabled = value;\n  }\n\n  @Input('drag-disabled')\n  get dragDisabled() {\n    return this._dragDisabled;\n  }\n\n  set dragDisabled(value: boolean) {\n    this._dragDisabled = value;\n  }\n\n  @Input('snap-disabled')\n  get snapDisabled() {\n    return this._snapDisabled;\n  }\n\n  set snapDisabled(value: boolean) {\n    this._snapDisabled = value;\n  }\n\n  @Input('snap-offset')\n  get snapOffset() {\n    return this._snapOffset;\n  }\n\n  set snapOffset(value: number) {\n    this._snapOffset = value;\n  }\n\n  @Input('snap-duration')\n  get snapDuration() {\n    return this._snapDuration;\n  }\n\n  set snapDuration(value: number) {\n    this._snapDuration = value;\n  }\n\n  constructor(\n    @Inject(ElementRef) private _elementRef: ElementRef,\n    @Inject(Renderer2) private _renderer: Renderer2,\n    @Inject(DOCUMENT) private _document: any\n  ) {\n    this.scrollbarWidth = `${this.getScrollbarWidth()}px`;\n  }\n\n  ngOnChanges() {\n    this.setScrollBar();\n\n    if (this.xDisabled || this.disabled || this._scrollbarHidden) {\n      this.disableScroll('x');\n    } else {\n      this.enableScroll('x');\n    }\n\n    if (this.yDisabled || this.disabled) {\n      this.disableScroll('y');\n    } else {\n      this.enableScroll('y');\n    }\n  }\n\n  ngAfterViewInit() {\n    // auto assign computed css\n    this._renderer.setAttribute(this._contentRef?.nativeElement, 'drag-scroll', 'true');\n\n    this.displayType = typeof window !== 'undefined' ? window.getComputedStyle(this._elementRef.nativeElement).display : 'block';\n\n    this._renderer.setStyle(this._contentRef?.nativeElement, 'display', this.displayType);\n    this._renderer.setStyle(this._contentRef?.nativeElement, 'whiteSpace', 'noWrap');\n\n    // store ele width height for later user\n    this.markElDimension();\n\n    this._renderer.setStyle(this._contentRef?.nativeElement, 'width', this.elWidth);\n    this._renderer.setStyle(this._contentRef?.nativeElement, 'height', this.elHeight);\n\n    if (this.wrapper) {\n      this.checkScrollbar();\n    }\n\n    this._onMouseDownListener = this._renderer.listen(this._contentRef?.nativeElement, 'mousedown', this.onMouseDownHandler.bind(this));\n    this._onScrollListener = this._renderer.listen(this._contentRef?.nativeElement, 'scroll', this.onScrollHandler.bind(this));\n    // prevent Firefox from dragging images\n    this._onDragStartListener = this._renderer.listen('document', 'dragstart', (e) => {\n      e.preventDefault();\n    });\n    this.checkNavStatus();\n    this.dsInitialized.emit();\n    this.adjustMarginToLastChild();\n  }\n\n  ngAfterViewChecked() {\n    // avoid extra checks\n    if (this._children && this._children?.length !== this.prevChildrenLength) {\n      this.markElDimension();\n      this.checkScrollbar();\n      this.prevChildrenLength = this._children.length;\n      this.checkNavStatus();\n    }\n  }\n\n  ngOnDestroy() {\n    this._renderer.setAttribute(this._contentRef?.nativeElement, 'drag-scroll', 'false');\n    if (this._onMouseDownListener) {\n      this._onMouseDownListener = noop;\n    }\n    if (this._onScrollListener) {\n      this._onScrollListener = noop;\n    }\n    if (this._onDragStartListener) {\n      this._onDragStartListener = noop;\n    }\n  }\n\n  onMouseMoveHandler(event: MouseEvent) {\n    this.onMouseMove(event);\n  }\n\n  onMouseMove(event: MouseEvent) {\n    if (this.isPressed && !this.disabled) {\n      // Workaround for prevent scroll stuck if browser lost focus\n      // MouseEvent.buttons not support by Safari\n      // tslint:disable-next-line:deprecation\n      if (!event.buttons && !event.which) {\n        return this.onMouseUpHandler(event);\n      }\n\n      this._pointerEvents = 'none';\n      this._setIsDragging(true);\n\n      // Drag X\n      if (this._contentRef && !this.xDisabled && !this.dragDisabled) {\n        const clientX = (event as MouseEvent).clientX;\n        this._contentRef.nativeElement.scrollLeft = this._contentRef.nativeElement.scrollLeft - clientX + this.downX;\n        this.downX = clientX;\n      }\n\n      // Drag Y\n      if (this._contentRef && !this.yDisabled && !this.dragDisabled) {\n        const clientY = (event as MouseEvent).clientY;\n        this._contentRef.nativeElement.scrollTop = this._contentRef.nativeElement.scrollTop - clientY + this.downY;\n        this.downY = clientY;\n      }\n    }\n  }\n\n  onMouseDownHandler(event: MouseEvent) {\n    const dragScrollItem: DragScrollItemDirective | null = this.locateDragScrollItem(event.target as Element);\n    if (dragScrollItem && dragScrollItem.dragDisabled) {\n      return;\n    }\n\n    const isTouchEvent = event.type === 'touchstart';\n\n    this._startGlobalListening(isTouchEvent);\n    this.isPressed = true;\n\n    const mouseEvent = event as MouseEvent;\n    this.downX = mouseEvent.clientX;\n    this.downY = mouseEvent.clientY;\n\n    clearTimeout(this.scrollToTimer as number);\n  }\n\n  onScrollHandler() {\n    this.checkNavStatus();\n    if (!this.isPressed && !this.isAnimating && !this.snapDisabled) {\n      this.isScrolling = true;\n      clearTimeout(this.scrollTimer as number);\n      this.scrollTimer = setTimeout(() => {\n        this.isScrolling = false;\n        this.locateCurrentIndex(true);\n      }, 500);\n    } else {\n      this.locateCurrentIndex();\n    }\n  }\n\n  onMouseUpHandler(event: MouseEvent) {\n    if (this.isPressed) {\n      this.isPressed = false;\n      this._pointerEvents = 'auto';\n      this._setIsDragging(false);\n      if (!this.snapDisabled) {\n        this.locateCurrentIndex(true);\n      } else {\n        this.locateCurrentIndex();\n      }\n      this._stopGlobalListening();\n    }\n  }\n\n  /*\n   * Nav button\n   */\n  moveLeft() {\n    if ((this.currIndex !== 0 || this.snapDisabled)) {\n      this.currIndex--;\n      clearTimeout(this.scrollToTimer as number);\n      this.scrollTo(this._contentRef?.nativeElement, this.toChildrenLocation(), this.snapDuration);\n    }\n  }\n\n  moveRight() {\n    const container = this.wrapper || this.parentNode;\n    const containerWidth = container ? container.clientWidth : 0;\n\n    if (this._children && !this.isScrollReachesRightEnd() && this.currIndex < this.maximumIndex(containerWidth, this._children.toArray())) {\n      this.currIndex++;\n      clearTimeout(this.scrollToTimer as number);\n      this.scrollTo(this._contentRef?.nativeElement, this.toChildrenLocation(), this.snapDuration);\n    }\n  }\n\n  moveTo(index: number) {\n    const container = this.wrapper || this.parentNode;\n    const containerWidth = container ? container.clientWidth : 0;\n    if (this._children && index >= 0 && index !== this.currIndex && this.currIndex <= this.maximumIndex(containerWidth, this._children.toArray())) {\n      this.currIndex = Math.min(index, this.maximumIndex(containerWidth, this._children.toArray()));\n      clearTimeout(this.scrollToTimer as number);\n      this.scrollTo(this._contentRef?.nativeElement, this.toChildrenLocation(), this.snapDuration);\n    }\n  }\n\n  checkNavStatus() {\n    setTimeout(() => {\n      const onlyOneItem = Boolean(this._children && this._children.length <= 1);\n      const containerIsLargerThanContent = Boolean(this._contentRef?.nativeElement.scrollWidth <=\n        this._contentRef?.nativeElement.clientWidth);\n      if (onlyOneItem || containerIsLargerThanContent) {\n        // only one element\n        this.reachesLeftBound.emit(true);\n        this.reachesRightBound.emit(true);\n      } else if (this.isScrollReachesRightEnd()) {\n        // reached right end\n        this.reachesLeftBound.emit(false);\n        this.reachesRightBound.emit(true);\n      } else if (this._contentRef?.nativeElement.scrollLeft === 0 &&\n        this._contentRef?.nativeElement.scrollWidth > this._contentRef?.nativeElement.clientWidth) {\n        // reached left end\n        this.reachesLeftBound.emit(true);\n        this.reachesRightBound.emit(false);\n      } else {\n        // in the middle\n        this.reachesLeftBound.emit(false);\n        this.reachesRightBound.emit(false);\n      }\n    }, 0);\n  }\n\n  @HostListener('wheel', ['$event'])\n  public onWheel(event: WheelEvent) {\n    if (this._xWheelEnabled) {\n      event.preventDefault();\n\n      if (this._snapDisabled) {\n        this._contentRef?.nativeElement.scrollBy(event.deltaY, 0);\n      } else {\n        if (event.deltaY < 0) {\n          this.moveLeft();\n        } else if (event.deltaY > 0) {\n          this.moveRight();\n        }\n      }\n    }\n  }\n\n  @HostListener('window:resize')\n  public onWindowResize() {\n    this.refreshWrapperDimensions();\n    this.checkNavStatus();\n  }\n\n  private _setIsDragging(value: boolean) {\n    if (this._isDragging === value) {\n      return;\n    }\n    this._isDragging = value;\n    value ? this.dragStart.emit() : this.dragEnd.emit();\n  }\n\n  private _startGlobalListening(isTouchEvent: boolean) {\n    if (!this._onMouseMoveListener) {\n      const eventName = isTouchEvent ? 'touchmove' : 'mousemove';\n      this._onMouseMoveListener = this._renderer.listen('document', eventName, this.onMouseMoveHandler.bind(this));\n    }\n\n    if (!this._onMouseUpListener) {\n      const eventName = isTouchEvent ? 'touchend' : 'mouseup';\n      this._onMouseUpListener = this._renderer.listen('document', eventName, this.onMouseUpHandler.bind(this));\n    }\n  }\n\n  private _stopGlobalListening() {\n    if (this._onMouseMoveListener) {\n      this._onMouseMoveListener = noop;\n    }\n\n    if (this._onMouseUpListener) {\n      this._onMouseUpListener = noop;\n    }\n  }\n\n  private disableScroll(axis: string): void {\n    this._renderer.setStyle(this._contentRef?.nativeElement, `overflow-${axis}`, 'hidden');\n  }\n\n  private enableScroll(axis: string): void {\n    this._renderer.setStyle(this._contentRef?.nativeElement, `overflow-${axis}`, 'auto');\n  }\n\n  private hideScrollbar(): void {\n    if (this._contentRef?.nativeElement.style.display !== 'none' && !this.wrapper) {\n      this.parentNode = this._contentRef?.nativeElement.parentNode;\n\n      // create container element\n      this.wrapper = this._renderer.createElement('div');\n      this._renderer.setAttribute(this.wrapper, 'class', 'drag-scroll-wrapper');\n      this._renderer.addClass(this.wrapper, 'drag-scroll-container');\n\n      this.refreshWrapperDimensions();\n\n      this._renderer.setStyle(this.wrapper, 'overflow', 'hidden');\n\n      this._renderer.setStyle(this._contentRef?.nativeElement, 'width', `calc(100% + ${this.scrollbarWidth})`);\n      this._renderer.setStyle(this._contentRef?.nativeElement, 'height', `calc(100% + ${this.scrollbarWidth})`);\n\n      // Append container element to component element.\n      this._renderer.appendChild(this._elementRef.nativeElement, this.wrapper);\n\n      // Append content element to container element.\n      this._renderer.appendChild(this.wrapper, this._contentRef?.nativeElement);\n\n      this.adjustMarginToLastChild();\n    }\n  }\n\n  private showScrollbar(): void {\n    if (this.wrapper) {\n      this._renderer.setStyle(this._contentRef?.nativeElement, 'width', '100%');\n      this._renderer.setStyle(this._contentRef?.nativeElement, 'height', this.wrapper.style.height);\n      if (this.parentNode !== null) {\n        this.parentNode?.removeChild(this.wrapper);\n        this.parentNode?.appendChild(this._contentRef?.nativeElement);\n      }\n      this.wrapper = undefined;\n\n      this.adjustMarginToLastChild();\n    }\n  }\n\n  private checkScrollbar() {\n    if (this._contentRef?.nativeElement.scrollWidth <= this._contentRef?.nativeElement.clientWidth) {\n      this._renderer.setStyle(this._contentRef?.nativeElement, 'height', '100%');\n    } else {\n      this._renderer.setStyle(this._contentRef?.nativeElement, 'height', `calc(100% + ${this.scrollbarWidth})`);\n    }\n    if (this._contentRef?.nativeElement.scrollHeight <= this._contentRef?.nativeElement.clientHeight) {\n      this._renderer.setStyle(this._contentRef?.nativeElement, 'width', '100%');\n    } else {\n      this._renderer.setStyle(this._contentRef?.nativeElement, 'width', `calc(100% + ${this.scrollbarWidth})`);\n    }\n  }\n\n  private setScrollBar(): void {\n    if (this.scrollbarHidden) {\n      this.hideScrollbar();\n    } else {\n      this.showScrollbar();\n    }\n  }\n\n  private getScrollbarWidth(): number {\n    /**\n     * Browser Scrollbar Widths (2016)\n     * OSX (Chrome, Safari, Firefox) - 15px\n     * Windows XP (IE7, Chrome, Firefox) - 17px\n     * Windows 7 (IE10, IE11, Chrome, Firefox) - 17px\n     * Windows 8.1 (IE11, Chrome, Firefox) - 17px\n     * Windows 10 (IE11, Chrome, Firefox) - 17px\n     * Windows 10 (Edge 12/13) - 12px\n     */\n    const outer = this._renderer.createElement('div');\n    this._renderer.setStyle(outer, 'visibility', 'hidden');\n    this._renderer.setStyle(outer, 'width', '100px');\n    this._renderer.setStyle(outer, 'msOverflowStyle', 'scrollbar');  // needed for WinJS apps\n    // document.body.appendChild(outer);\n    this._renderer.appendChild(this._document.body, outer);\n    // this._renderer.appendChild(this._renderer.selectRootElement('body'), outer);\n    const widthNoScroll = outer.offsetWidth;\n    // force scrollbars\n    this._renderer.setStyle(outer, 'overflow', 'scroll');\n\n    // add innerdiv\n    const inner = this._renderer.createElement('div');\n    this._renderer.setStyle(inner, 'width', '100%');\n    this._renderer.appendChild(outer, inner);\n\n    const widthWithScroll = inner.offsetWidth;\n\n    // remove divs\n    this._renderer.removeChild(this._document.body, outer);\n\n    /**\n     * Scrollbar width will be 0 on Mac OS with the\n     * default \"Only show scrollbars when scrolling\" setting (Yosemite and up).\n     * setting default width to 20;\n     */\n    return widthNoScroll - widthWithScroll || 20;\n  }\n\n  private refreshWrapperDimensions() {\n    if (this.wrapper) {\n      this._renderer.setStyle(this.wrapper, 'width', '100%');\n      this._renderer.setStyle(this.wrapper, 'height', this._elementRef.nativeElement.style.height\n        || this._elementRef.nativeElement.offsetHeight + 'px');\n    }\n  }\n\n  /*\n  * The below solution is heavily inspired from\n  * https://gist.github.com/andjosh/6764939\n  */\n  private scrollTo(element: Element, to: number, duration: number) {\n    const self = this;\n    self.isAnimating = true;\n    const start = element.scrollLeft;\n    const change = to - start - this.snapOffset;\n    const increment = 20;\n    let currentTime = 0;\n\n    // t = current time\n    // b = start value\n    // c = change in value\n    // d = duration\n    const easeInOutQuad = (t: number, b: number, c: number, d: number) => {\n      t /= d / 2;\n      if (t < 1) {\n        return c / 2 * t * t + b;\n      }\n      t--;\n      return -c / 2 * (t * (t - 2) - 1) + b;\n    };\n\n    const animateScroll = () => {\n      currentTime += increment;\n      element.scrollLeft = easeInOutQuad(currentTime, start, change, duration);\n      if (currentTime < duration) {\n        self.scrollToTimer = setTimeout(animateScroll, increment);\n      } else {\n        // run one more frame to make sure the animation is fully finished\n        setTimeout(() => {\n          self.isAnimating = false;\n          self.snapAnimationFinished.emit(self.currIndex);\n        }, increment);\n      }\n    };\n    animateScroll();\n  }\n\n  private locateCurrentIndex(snap?: boolean) {\n    this.currentChildWidth((currentChildWidth, nextChildrenWidth, childrenWidth, idx: number, stop) => {\n      if (\n        (this._contentRef?.nativeElement.scrollLeft >= childrenWidth &&\n          this._contentRef?.nativeElement.scrollLeft <= nextChildrenWidth)\n      ) {\n        if (nextChildrenWidth - this._contentRef?.nativeElement.scrollLeft > currentChildWidth / 2 && !this.isScrollReachesRightEnd()) {\n          // roll back scrolling\n          if (!this.isAnimating) {\n            this.currIndex = idx;\n          }\n          if (snap) {\n            this.scrollTo(this._contentRef?.nativeElement, childrenWidth, this.snapDuration);\n          }\n        } else if (this._contentRef?.nativeElement.scrollLeft !== 0) {\n          // forward scrolling\n          if (!this.isAnimating) {\n            this.currIndex = idx + 1;\n          }\n          if (snap) {\n            this.scrollTo(this._contentRef?.nativeElement, childrenWidth + currentChildWidth, this.snapDuration);\n          }\n        }\n        stop();\n      } else if (this._children && (idx + 1) === (this._children.length - 1)) {\n        // reaches last index\n        if (!this.isAnimating) {\n          this.currIndex = idx + 1;\n        }\n        stop();\n      }\n    });\n  }\n\n  private currentChildWidth(cb: (\n    currentClildWidth: number,\n    nextChildrenWidth: number,\n    childrenWidth: number,\n    index: number,\n    breakFunc: () => void) => void) {\n    let childrenWidth = 0;\n    let shouldBreak = false;\n    const breakFunc = () => {\n      shouldBreak = true;\n    };\n    const childrenArr = this._children?.toArray();\n    if (childrenArr) {\n      for (let i = 0; i < childrenArr.length; i++) {\n        if (i === childrenArr.length - 1) {\n          break;\n        }\n        if (shouldBreak) {\n          break;\n        }\n\n        const nextChildrenWidth = childrenWidth + childrenArr[i + 1]._elementRef.nativeElement.clientWidth;\n        const currentChildWidth = childrenArr[i]._elementRef.nativeElement.clientWidth;\n        cb(currentChildWidth, nextChildrenWidth, childrenWidth, i, breakFunc);\n\n        childrenWidth += currentChildWidth;\n      }\n    }\n  }\n\n  private toChildrenLocation(): number {\n    let to = 0;\n    const childrenArr = this._children?.toArray();\n    if (childrenArr) {\n      for (let i = 0; i < this.currIndex; i++) {\n        to += childrenArr[i]._elementRef.nativeElement.clientWidth;\n      }\n    }\n    return to;\n  }\n\n  private locateDragScrollItem(element: Element): DragScrollItemDirective | null {\n    let item: DragScrollItemDirective | null = null;\n    this._children?.toArray().forEach(item1 => {\n      if (element === item1._elementRef.nativeElement) {\n        item = item1;\n      }\n    });\n    return item;\n  }\n\n  private markElDimension() {\n    if (this.wrapper) {\n      this.elWidth = this.wrapper.style.width;\n      this.elHeight = this.wrapper.style.height;\n    } else {\n      this.elWidth = this._elementRef.nativeElement.style.width || (this._elementRef.nativeElement.offsetWidth + 'px');\n      this.elHeight = this._elementRef.nativeElement.style.height || (this._elementRef.nativeElement.offsetHeight + 'px');\n    }\n    const container = this.wrapper || this.parentNode;\n    const containerWidth = container ? container.clientWidth : 0;\n    if (this._children && this._children.length > 1) {\n      this.indexBound = this.maximumIndex(containerWidth, this._children.toArray());\n    }\n  }\n\n  private maximumIndex(containerWidth: number, childrenElements: DragScrollItemDirective[]): number {\n    let count = 0;\n    let childrenWidth = 0;\n    for (let i = 0; i <= childrenElements.length; i++) {\n      // last N element\n      const dragScrollItemDirective: DragScrollItemDirective = childrenElements[childrenElements.length - 1 - i];\n      if (!dragScrollItemDirective) {\n        break;\n      } else {\n        const nativeElement = dragScrollItemDirective._elementRef.nativeElement;\n        let itemWidth = nativeElement.clientWidth;\n        if (itemWidth === 0 && nativeElement.firstElementChild) {\n          itemWidth = dragScrollItemDirective._elementRef.nativeElement.firstElementChild.clientWidth;\n        }\n        childrenWidth += itemWidth;\n        if (childrenWidth < containerWidth) {\n          count++;\n        } else {\n          break;\n        }\n      }\n    }\n    return childrenElements.length - count;\n  }\n\n  private isScrollReachesRightEnd(): boolean {\n    const scrollLeftPos = this._contentRef?.nativeElement.scrollLeft + this._contentRef?.nativeElement.offsetWidth;\n    return scrollLeftPos >= this._contentRef?.nativeElement.scrollWidth;\n  }\n\n  /**\n   * adds a margin right style to the last child element which will resolve the issue\n   * of last item gets cutoff.\n   */\n  private adjustMarginToLastChild(): void {\n    if (this._children && this._children.length > 0 && this.hideScrollbar) {\n      const childrenArr = this._children.toArray();\n      const lastItem = childrenArr[childrenArr.length - 1]._elementRef.nativeElement;\n      if (this.wrapper && childrenArr.length > 1) {\n        this._renderer.setStyle(lastItem, 'margin-right', this.scrollbarWidth);\n      } else {\n        this._renderer.setStyle(lastItem, 'margin-right', 0);\n      }\n    }\n  }\n}\n","import {Inject, Injectable, Optional, PLATFORM_ID} from '@angular/core';\nimport {DOCUMENT, isPlatformBrowser} from '@angular/common';\nimport {SERVER_HOST, SERVER_PATH} from '@ngx-y/yapi';\n\nconst mockStorage: Storage = {\n  clear() {\n    // noop\n  },\n  getItem(key: string) {\n    return null;\n  },\n  key(index: number) {\n    return null;\n  },\n  removeItem(key: string) {\n    // noop\n  },\n  setItem(key: string, value: string) {\n    // noop\n  },\n  length: 0\n};\n\nconst mockLocation = (serverHost?: string, serverPath?: string): Location => {\n  const url = new URL(serverHost && serverPath ? `${serverHost}${serverPath}` : 'http://localhost');\n  const {href, origin, protocol, host, hostname, port, pathname, search, hash} = url;\n  return {\n    href, origin, protocol, host, hostname, port, pathname, search, hash,\n    reload() {\n      // noop\n    },\n    assign(u: string) {\n      // noop\n    },\n    ancestorOrigins: {} as any,\n    replace(u: string) {\n      // noop\n    }\n  };\n};\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class BrowserRef {\n\n  // @ts-ignore\n  document: Document;\n  // @ts-ignore\n  sessionStorage: Storage;\n  // @ts-ignore\n  localStorage: Storage;\n  // @ts-ignore\n  window: Window & Record<string, any>;\n  // @ts-ignore\n  navigator: Navigator;\n  // @ts-ignore\n  location: Location;\n\n  isBrowser: boolean;\n\n  constructor(@Inject(PLATFORM_ID) platformId: object,\n              @Inject(DOCUMENT) documentRef: Document,\n              @Optional() @Inject(SERVER_HOST) serverHost?: string,\n              @Optional() @Inject(SERVER_PATH) serverPath?: string) {\n    const assign = (window: Window) => {\n      this.document = window.document;\n      this.sessionStorage = window.sessionStorage;\n      this.localStorage = window.localStorage;\n      this.window = window;\n      this.navigator = window.navigator;\n      this.location = window.location;\n    };\n    this.isBrowser = isPlatformBrowser(platformId);\n    if (this.isBrowser) {\n      assign(window);\n    } else {\n      const mockWindow = {\n        document: documentRef,\n        sessionStorage: mockStorage,\n        localStorage: mockStorage,\n        navigator: {\n          language: 'en',\n          geolocation: {},\n          mediaDevices: {}\n        },\n        location: mockLocation(serverHost, serverPath),\n      } as Window;\n      assign(mockWindow);\n    }\n  }\n}\n","import {Directive, ElementRef, EventEmitter, Output} from '@angular/core';\nimport {BrowserRef} from '../services/browser-ref';\n\n@Directive({\n  selector: '[intoView]'\n})\nexport class IntoViewDirective {\n\n  @Output('intoView')\n  event: EventEmitter<boolean> = new EventEmitter();\n\n  constructor(el: ElementRef,\n              browserRef: BrowserRef) {\n    if (browserRef.isBrowser) {\n      const ob = new IntersectionObserver(async (entries, observer) => {\n        this.event.emit(entries.map(v => v.isIntersecting).reduce((x, y) => x || y));\n      }, {\n        rootMargin: '0px',\n        threshold: [0.4, 0.7]\n      });\n      ob.observe(el.nativeElement);\n    } else {\n      this.event.emit(true);\n    }\n  }\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {HTTP_INTERCEPTORS, HttpEvent, HttpHandler, HttpInterceptor, HttpParams, HttpRequest} from '@angular/common/http';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Observable, ReplaySubject} from 'rxjs';\nimport {Router} from '@angular/router';\nimport {map, skip, tap} from 'rxjs/operators';\nimport {\n  BaseSiteService,\n  BaseSiteWsDTO,\n  ConfigService,\n  CurrencyWsDTO,\n  FieldLevelMapping,\n  LanguageWsDTO,\n  MiscService\n} from '@ngx-y/yapi';\nimport {BrowserRef} from './browser-ref';\n\n/**\n * Transform java regex to javascript regex\n * @param {string} value\n * @returns {RegExp}\n */\nconst toRegExp = (value: string): RegExp | void => {\n  const match = value.match(/^(\\(\\?([a-z]+)\\))?(.*)/);\n  if (match) {\n    const [, , flags, pattern] = match;\n    return new RegExp(pattern, flags);\n  } else {\n    console.warn(`${value} is not a valid URL pattern`);\n  }\n};\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LocaleService {\n\n  private _language: string | undefined;\n  private _currency: string | undefined;\n  private _site: BaseSiteWsDTO | undefined;\n  locale$: EventEmitter<{\n    language: string | undefined,\n    currency: string | undefined\n  }> = new EventEmitter();\n\n  isValid$: ReplaySubject<boolean> = new ReplaySubject(1);\n  languages$: ReplaySubject<LanguageWsDTO[]> = new ReplaySubject(1);\n  currencies$: ReplaySubject<CurrencyWsDTO[]> = new ReplaySubject(1);\n\n  constructor(private browserRef: BrowserRef,\n              private router: Router,\n              private configService: ConfigService,\n              private translateService: TranslateService,\n              private baseSiteService: BaseSiteService,\n              private miscService: MiscService) {\n    setTimeout(() => this.init()); // decouple\n  }\n\n  init() {\n    const {navigator, location, document} = this.browserRef;\n    const locale = navigator.language.split('-');\n    const lang = locale[0];\n    this.baseSiteService.getBaseSites({\n      fields: FieldLevelMapping.FULL\n    }).pipe(\n      map(m => m.baseSites),\n      map(s => this.findBaseSite(s))\n    ).subscribe(baseSite => {\n      this._site = baseSite;\n      if (this.site) {\n        this.configService.set('site', this.site);\n        // set defaults\n        const language = this.site.defaultLanguage?.isocode;\n        language && this.translateService.setDefaultLang(language);\n        this._language = language;\n        this._currency = this.configService.get().defaultCurrency;\n        // update router\n        this.router.config[0].path = this.localePath;\n        this.router.resetConfig(this.router.config);\n        // set locales from url and store\n        const {stores, urlEncodingAttributes} = this.site;\n        if (stores && stores.length > 0) {\n          const store = stores[0];\n          const currencies = store.currencies?.filter(c => c.active);\n          const languages = store.languages?.filter(l => l.active);\n          this.currencies$.next(currencies as any);\n          this.languages$.next(languages as any);\n          this._currency = store.defaultCurrency?.isocode;\n          // set browser lang if it matches\n          if (lang && languages?.map(l => l.isocode).includes(lang)) {\n            this._language = lang;\n          }\n\n          const segments = location.pathname.split('/');\n          urlEncodingAttributes?.forEach((attr, i) => {\n            switch (attr) {\n              case 'language': {\n                const val = segments[i + 1];\n                this._language = !!val && languages?.map(l => l.isocode).includes(val) ? val : language;\n                break;\n              }\n              case 'currency': {\n                const val = segments[i + 1];\n                this._currency = !!val && currencies?.map(c => c.isocode).includes(val) ? val : store.defaultCurrency?.isocode;\n                break;\n              }\n            }\n          });\n        } else {\n          this.miscService.getCurrencies().subscribe(c => this.currencies$.next(c.currencies?.filter(f => f.active) as any));\n          this.miscService.getLanguages().subscribe(l => this.languages$.next(l.languages?.filter(f => f.active) as any));\n        }\n        this.updateUrl(location);\n        this.translateService.onLangChange.pipe(\n          // change document lang\n          tap(l => document.documentElement.lang = l.lang),\n          // skip this first language event since all ok\n          skip(1)\n        ).subscribe(() => this.emit());\n        this.language = this._language;\n        this.isValid$.next(true);\n      } else {\n        this.isValid$.next(false);\n      }\n    });\n  }\n\n  /**\n   * Get current site\n   * @returns {BaseSiteWsDTO}\n   */\n  get site(): BaseSiteWsDTO | undefined {\n    return this._site;\n  }\n\n  /**\n   * Get applied currency\n   * @returns {string}\n   */\n  get currency() {\n    return this._currency;\n  }\n\n  /**\n   * Set currency based on a currency iso\n   * @param {string} currency\n   */\n  set currency(currency: string | undefined) {\n    if (currency) {\n      this._currency = currency;\n      this.emit();\n    }\n  }\n\n  /**\n   * Get applied language\n   */\n  get language() {\n    return this._language;\n  }\n\n  /**\n   * Set language based on a language iso\n   * @param language\n   */\n  set language(language: string | undefined) {\n    if (language) {\n      this._language = language;\n      this.translateService.use(language);\n    }\n  }\n\n  private emit() {\n    this.locale$.emit({\n      language: this.language,\n      currency: this.currency\n    });\n    this.updateUrl();\n  }\n\n  private get localePath(): string {\n    let buf = '';\n    if (this.site?.urlEncodingAttributes) {\n      for (const attr of this.site.urlEncodingAttributes) {\n        buf += `:${attr}/`;\n      }\n      return buf.slice(0, -1);\n    }\n    return buf;\n  }\n\n  private updateUrl(newLocation?: Location) {\n    const {location} = this.browserRef;\n    const url = newLocation || new URL(this.router.url, `${location.protocol}//${location.host}`);\n    const {pathname, search, hash} = url;\n    if (this.site?.urlEncodingAttributes) {\n      const {uid, urlEncodingAttributes} = this.site;\n      let segments = pathname.split('/');\n      let suffixSegments: string[] = [];\n      if (uid && segments.length <= urlEncodingAttributes.length) {\n        suffixSegments = segments.filter(String);\n        const hasStorefrontSegment = suffixSegments.indexOf(uid);\n        if (hasStorefrontSegment !== -1) {\n          suffixSegments.splice(hasStorefrontSegment, 1);\n        }\n      }\n      urlEncodingAttributes.forEach((attr: string, i: number) => {\n        switch (attr) {\n          case 'storefront' : {\n            segments[i + 1] = this.site?.uid || '';\n            break;\n          }\n          case 'language': {\n            segments[i + 1] = this.language || '';\n            break;\n          }\n          case 'currency': {\n            segments[i + 1] = this.currency || '';\n            break;\n          }\n        }\n      });\n      segments = [...segments, ...suffixSegments];\n      const value = `${segments.join('/')}${search}${hash}`;\n      this.router.navigateByUrl(value);\n    }\n  }\n\n  /**\n   * Find the base site based on the location url\n   * @param {BaseSiteWsDTO[]} baseSites\n   * @returns {BaseSiteWsDTO}\n   */\n  private findBaseSite(baseSites: BaseSiteWsDTO[]): BaseSiteWsDTO | undefined {\n    const {location} = this.browserRef;\n    const {href} = location;\n    for (const baseSite of baseSites) {\n      if (baseSite.urlPatterns) {\n        for (const urlPattern of baseSite.urlPatterns) {\n          try {\n            const re = toRegExp(urlPattern);\n            if (re?.test(href.toString())) {\n              return baseSite;\n            }\n          } catch (e) {\n          }\n        }\n      }\n    }\n    console.warn(`No URL pattern found for ${href} in base sites`);\n    return undefined;\n  }\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LocaleInterceptor implements HttpInterceptor {\n\n  constructor(private localeService: LocaleService) {\n  }\n\n  /**\n   * Apply currency and language to the requests\n   * @param {HttpRequest} req\n   * @param {HttpHandler} next\n   */\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    if (this.localeService) {\n      const {language, currency} = this.localeService;\n      if (language && currency) {\n        let params = new HttpParams({fromString: req.params.toString()});\n        params = params.append('lang', language);\n        params = params.append('curr', currency);\n        req = req.clone({\n          params\n        });\n      }\n    }\n    return next.handle(req);\n  }\n}\n\nexport const LocaleInterceptorService = {\n  provide: HTTP_INTERCEPTORS,\n  multi: true,\n  useExisting: LocaleInterceptor\n};\n\n","import {Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {LocaleService} from '../services/locale.service';\n\n@Directive({\n  selector: '[ifSite]'\n})\nexport class IfSiteDirective {\n\n  constructor(private readonly templateRef: TemplateRef<any>,\n              private readonly viewContainer: ViewContainerRef,\n              private readonly localeService: LocaleService) {\n  }\n\n  @Input()\n  set ifSite(value: string) {\n    const {uid} = this.localeService.site as any;\n    if (value === uid) {\n      this.viewContainer.createEmbeddedView(this.templateRef);\n    } else {\n      this.viewContainer.clear();\n    }\n  }\n}\n","import {Directive, Input, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {LocaleService} from '../services/locale.service';\n\n@Directive({\n  selector: '[ifTheme]'\n})\nexport class IfThemeDirective {\n\n  constructor(private readonly templateRef: TemplateRef<any>,\n              private readonly viewContainer: ViewContainerRef,\n              private readonly localeService: LocaleService) {\n  }\n\n  @Input()\n  set ifTheme(value: string) {\n    const {theme} = this.localeService.site as any;\n    if (value === theme) {\n      this.viewContainer.createEmbeddedView(this.templateRef);\n    } else {\n      this.viewContainer.clear();\n    }\n  }\n}\n","import {Directive, HostListener} from '@angular/core';\nimport {BrowserRef} from '../services/browser-ref';\n\n/**\n * Scroll to top on click directive\n */\n@Directive({\n  selector: '[scrollTop]'\n})\nexport class ScrollTopDirective {\n\n  constructor(private browserRef: BrowserRef) {\n  }\n\n  @HostListener('click')\n  click() {\n    const {window, location} = this.browserRef;\n    window.scroll(0, 0);\n    location.hash = '';\n  }\n}\n","import {Directive, ElementRef, Injectable, Input, OnDestroy, SecurityContext} from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\nimport {BrowserRef} from '../services/browser-ref';\n\n@Directive({\n  selector: '[srcLazy]'\n})\nexport class SrcLazyDirective implements OnDestroy {\n\n  private ref: SrcLazyElement | undefined;\n\n  constructor(private el: ElementRef,\n              private srcLazyService: SrcLazyService) {\n  }\n\n  @Input()\n  set srcLazy(src: string | SafeResourceUrl) {\n    this.ref = {el: this.el, src};\n    this.srcLazyService.add(this.ref);\n  }\n\n  ngOnDestroy(): void {\n    if (this.ref) {\n      this.srcLazyService.del(this.ref);\n      this.ref = undefined;\n    }\n  }\n}\n\nexport interface SrcLazyElement {\n  el: ElementRef;\n  src: string | SafeResourceUrl;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SrcLazyService {\n\n  private ob: IntersectionObserver | undefined;\n  private refs: SrcLazyElement[] = [];\n\n  constructor(private sanitize: DomSanitizer,\n              private browserRef: BrowserRef) {\n    if (this.browserRef.isBrowser) {\n      this.ob = new IntersectionObserver(async (entries) => {\n        const {target, isIntersecting} = entries[0];\n        if (isIntersecting) {\n          const ref = this.refs.find(r => r.el.nativeElement === target);\n          if (ref) {\n            this.setSrc(ref);\n            this.ob?.unobserve(target);\n          }\n        }\n      }, {\n        rootMargin: '0px 0px 300px 0px',\n      });\n    }\n  }\n\n  add(srcEl: SrcLazyElement) {\n    if (this.browserRef.isBrowser) {\n      this.ob?.observe(srcEl.el.nativeElement);\n    } else {\n      this.setSrc(srcEl);\n    }\n    this.refs.push(srcEl);\n  }\n\n  del(srcEl: SrcLazyElement) {\n    this.refs.splice(this.refs.indexOf(srcEl), 1);\n  }\n\n  private setSrc(ref: SrcLazyElement) {\n    const val = this.sanitize.sanitize(SecurityContext.URL, ref.src);\n    ref.el.nativeElement.setAttribute('src', val);\n  }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {LocaleService} from '../services/locale.service';\n\n@Pipe({\n  name: 'site'\n})\nexport class SitePipe implements PipeTransform {\n\n  constructor(private localeService: LocaleService) {\n  }\n\n  /**\n   * Returns site name like 'site-[siteId]'<br/>\n   * Can be used as class name for theming based on siteId\n   * @param {string} value\n   */\n  transform(value?: string): string {\n    const {uid} = this.localeService.site as any;\n    return `${value} ${uid ? 'site-' + uid : ''}`;\n  }\n}\n\n@Pipe({\n  name: 'theme'\n})\nexport class ThemePipe implements PipeTransform {\n\n  constructor(private localeService: LocaleService) {\n  }\n\n  /**\n   * Returns this site defined theme name eg. alpha or lambda\n   * @param {string} value\n   */\n  transform(value?: string): string {\n    const {theme} = this.localeService.site as any;\n    return `${value} ${theme ? 'theme-' + theme : ''}`;\n  }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ConfigService, ProductWsDTO} from '@ngx-y/yapi';\n\n@Pipe({\n  name: 'image'\n})\nexport class ImagePipe implements PipeTransform {\n\n  constructor(private configService: ConfigService) {\n  }\n\n  /**\n   * Product image pipe<br/>\n   * Returns the product image or the default missing image\n   * @param {ProductWsDTO} product\n   */\n  transform(product?: ProductWsDTO): string {\n    return product?.images?.find(i => i.format === 'product')?.url || this.configService.get().missingImage || '';\n  }\n}\n\n@Pipe({\n  name: 'thumbnail'\n})\nexport class ThumbnailPipe implements PipeTransform {\n\n  constructor(private configService: ConfigService) {\n  }\n\n  /**\n   * Product thumbnail image<br/>\n   * Returns the thumbnail product image or missing image\n   * @param {ProductWsDTO} product\n   */\n  transform(product?: ProductWsDTO): string {\n    return product?.images?.find(i => i.format === 'thumbnail')?.url || this.configService.get().missingImage || '';\n  }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer, SafeHtml, SafeResourceUrl, SafeStyle} from '@angular/platform-browser';\n\n@Pipe({\n  name: 'sanitizeHtml'\n})\nexport class SanitizeHtmlPipe implements PipeTransform {\n\n  constructor(private sanitizer: DomSanitizer) {\n  }\n\n  /**\n   * Bypass security for html\n   * @param {string} value\n   */\n  transform(value?: string): SafeHtml {\n    return this.sanitizer.bypassSecurityTrustHtml(value || '');\n  }\n}\n\n@Pipe({\n  name: 'sanitizeStyle'\n})\nexport class SanitizeStylePipe implements PipeTransform {\n\n  constructor(private sanitizer: DomSanitizer) {\n  }\n\n  /**\n   * Bypass security for styles\n   * @param {string} value\n   */\n  transform(value?: string): SafeStyle {\n    return this.sanitizer.bypassSecurityTrustStyle(value || '');\n  }\n}\n\n@Pipe({\n  name: 'sanitizeUrl'\n})\nexport class SanitizeUrlPipe implements PipeTransform {\n\n  constructor(private sanitizer: DomSanitizer) {\n  }\n\n  /**\n   * Bypass security for url\n   * @param {string} value\n   */\n  transform(value?: string): SafeResourceUrl {\n    return this.sanitizer.bypassSecurityTrustResourceUrl(value || '');\n  }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Pipe({\n  name: 'stripHtml'\n})\nexport class StripHtmlPipe implements PipeTransform {\n\n  /**\n   * Sanitize html\n   * @param {string} value\n   */\n  transform(value?: string): string {\n    return value?.replace(/<[^>]+>/gm, '') || '';\n  }\n}\n\n@Pipe({\n  name: 'stripTimeString'\n})\nexport class StripTimeStringPipe implements PipeTransform {\n\n  /**\n   * Return date from datetime\n   * @param {Date | string} value\n   */\n  transform(value?: Date | string): string {\n    const regx = /[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}/;\n    const match = value?.toString().match(regx);\n    return match ? match[0] : '';\n  }\n}\n\n@Pipe({\n  name: 'truncateNumber'\n})\nexport class TruncateNumberPipe implements PipeTransform {\n\n  i18n: Record<string, string> = {};\n\n  constructor(i18nService: TranslateService) {\n    i18nService.stream([\n      'truncateNumber.thousand',\n      'truncateNumber.million',\n      'truncateNumber.billion'\n    ]).subscribe((value) => this.i18n = value);\n  }\n\n  /**\n   * Human readable number pipe\n   * @param {number} value\n   */\n  transform(value?: number): string {\n    if (value) {\n      if (Math.floor(value / 1000000000) > 0) {\n        return `${value / 1000000000}${this.i18n['truncateNumber.billion']}`;\n      } else if (Math.floor(value / 1000000) > 0) {\n        return `${value / 1000000}${this.i18n['truncateNumber.million']}`;\n      } else if (Math.floor(value / 1000) > 0) {\n        return `${value / 1000}${this.i18n['truncateNumber.thousand']}`;\n      }\n    }\n    return `${value}`;\n  }\n}\n\n@Pipe({\n  name: 'truncateText'\n})\nexport class TruncateTextPipe implements PipeTransform {\n\n  /**\n   * Truncate text\n   * @param {string} value\n   * @param {number[]} args word count\n   */\n  transform(value?: string, ...args: number[]): string {\n    const buildText = (text: string, words: number) => `${text.split(' ').slice(0, words).join(' ')}...`;\n    if (value && args[0]) {\n      let wordCount = args[0];\n      let result = buildText(value, wordCount);\n      if (args[1]) {\n        while (result.length > args[1]) {\n          result = buildText(value, --wordCount);\n        }\n      }\n      return result;\n    }\n    return value || '';\n  }\n}\n\n@Pipe({\n  name: 'fileSize'\n})\nexport class FileSizePipe implements PipeTransform {\n\n  i18n: Record<string, string> = {};\n\n  constructor(i18nService: TranslateService) {\n    i18nService.stream([\n      'fileSize.K',\n      'fileSize.M',\n      'fileSize.G'\n    ]).subscribe((value) => this.i18n = value);\n  }\n\n  /**\n   * Human readable file size pipe\n   * @param {number} value\n   */\n  transform(value?: number): string {\n    if (value) {\n      if (Math.floor(value / 1000000000) > 0) {\n        return `${value / 1000000000}${this.i18n['fileSize.G']}`;\n      } else if (Math.floor(value / 1000000) > 0) {\n        return `${value / 1000000}${this.i18n['fileSize.M']}`;\n      } else if (Math.floor(value / 1000) > 0) {\n        return `${value / 1000}${this.i18n['fileSize.K']}`;\n      }\n    }\n    return `${value}`;\n  }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n  name: 'map'\n})\nexport class MapPipe implements PipeTransform {\n\n  /**\n   * Map transform pipe<br/>\n   * eg. [values]=\"sorts | map:'code'\"\n   * @param {[]} value\n   * @param {[]} args\n   */\n  transform(value?: any[], ...args: any[]): any {\n    const arg = args[0];\n    if (arg) {\n      return value?.map(typeof arg === 'function' ? arg : v => v[args[0]]);\n    }\n    return '';\n  }\n}\n","import {Injectable} from '@angular/core';\r\nimport {NavigationExtras, Router} from '@angular/router';\r\nimport {LocaleService} from './locale.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class NavigatorService {\r\n\r\n  constructor(private router: Router,\r\n              private localeService: LocaleService) {\r\n  }\r\n\r\n  get url() {\r\n    return this.router.url;\r\n  }\r\n\r\n  /**\r\n   * Navigate based on the provided url\r\n   * @param {string} url\r\n   * @param {NavigationExtras} options\r\n   */\r\n  navigate(url: string, options?: NavigationExtras) {\r\n    return this.router.navigate([this.getFullUrl(url)], options);\r\n  }\r\n\r\n  /**\r\n   * Navigate based on the full path url\r\n   * @param url\r\n   */\r\n  navigateByUrl(url: string) {\r\n    return this.router.navigateByUrl(this.getFullUrl(url));\r\n  }\r\n\r\n  /**\r\n   * Raw navigate based on the provider url. It will not attempt to reconstruct the url\r\n   * @param url\r\n   */\r\n  navigateByFullUrl(url: string) {\r\n    return this.router.navigateByUrl(url);\r\n  }\r\n\r\n  /**\r\n   * Get the url which includes the site url encoding attributes\r\n   * @param {string} url\r\n   * @returns {string}\r\n   */\r\n  getFullUrl(url: string): string {\r\n    const site = this.localeService.site;\r\n    let basePath = '';\r\n    if (site?.urlEncodingAttributes) {\r\n      for (const attr of site.urlEncodingAttributes) {\r\n        switch (attr) {\r\n          case 'storefront' : {\r\n            basePath += `/${site.uid}`;\r\n            break;\r\n          }\r\n          case 'language': {\r\n            basePath += `/${this.localeService.language}`;\r\n            break;\r\n          }\r\n          case 'currency': {\r\n            basePath += `/${this.localeService.currency}`;\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return `${basePath}${url}`;\r\n  }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Params, Router} from '@angular/router';\nimport {ConfigService} from '@ngx-y/yapi';\nimport {NavigatorService} from '../services/navigator.service';\nimport {BrowserRef} from '../services/browser-ref';\n\nconst isHttp = new RegExp('^(http|https)://', 'i');\n\n@Pipe({\n  name: 'host'\n})\nexport class HostPipe implements PipeTransform {\n\n  constructor(private configService: ConfigService) {\n  }\n\n  transform(value?: string): string {\n    const apiHost = this.configService.get().apiHost;\n    if (apiHost && value && !isHttp.test(value)) {\n      return `${apiHost}/${value}`;\n    }\n    return value || '';\n  }\n}\n\n@Pipe({\n  name: 'decodeUri'\n})\nexport class DecodeUriPipe implements PipeTransform {\n\n  transform(value?: string): string {\n    return value && decodeURIComponent(value) || '';\n  }\n}\n\n@Pipe({\n  name: 'routerPath'\n})\nexport class RouterPathPipe implements PipeTransform {\n\n  constructor(private readonly navigatorService: NavigatorService,\n              private readonly browserRef: BrowserRef) {\n  }\n\n  transform(value?: string): string {\n    if (value) {\n      let newUrl = this.navigatorService.getFullUrl(value);\n      if (!value.startsWith('http')) {\n        const {location} = this.browserRef;\n        newUrl = `${location.protocol}//${location.hostname}${newUrl}`;\n      }\n      return new URL(newUrl).pathname;\n    }\n    return '';\n  }\n}\n\n@Pipe({\n  name: 'routerQuery'\n})\nexport class RouterQueryPipe implements PipeTransform {\n\n  constructor(private router: Router) {\n  }\n\n  transform(value?: string): Params | null {\n    return value && this.router.parseUrl(value).queryParams || null;\n  }\n}\n\n@Pipe({\n  name: 'routerFragment'\n})\nexport class RouterFragmentPipe implements PipeTransform {\n\n  constructor(private router: Router) {\n  }\n\n  transform(value?: string): string {\n    return value && this.router.parseUrl(value).fragment || '';\n  }\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot} from '@angular/router';\nimport {Observable} from 'rxjs';\nimport {OAuthService, OAuthStatus} from 'ngx-oauth';\nimport {find, map} from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n\n  constructor(private oauthService: OAuthService) {\n  }\n\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n    return this.oauthService.status$.pipe(\n      find(s => s === OAuthStatus.AUTHORIZED),\n      map(s => s === OAuthStatus.AUTHORIZED)\n    );\n  }\n}\n","import {Injectable} from '@angular/core';\r\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot} from '@angular/router';\r\nimport {Observable} from 'rxjs';\r\nimport {LocaleService} from './locale.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SiteGuard implements CanActivate {\r\n\r\n  constructor(private localeService: LocaleService) {\r\n  }\r\n\r\n  /**\r\n   * Allow router changes based on the current site rules\r\n   * @param {ActivatedRouteSnapshot} route\r\n   * @param {RouterStateSnapshot} state\r\n   */\r\n  canActivate(route: ActivatedRouteSnapshot,\r\n              state: RouterStateSnapshot): Observable<boolean> {\r\n    return this.localeService.isValid$;\r\n  }\r\n}\r\n","import {EventEmitter, Injectable, NgZone} from '@angular/core';\nimport {BrowserRef} from './browser-ref';\n\nconst SMARTEDIT = 'smartedit';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SmartEditService {\n\n  renderComponent$: EventEmitter<{\n    componentId?: string,\n    componentType?: string,\n    parentId?: string\n  }> = new EventEmitter();\n\n  /**\n   * Apply smartedit feedback to render changes\n   * @param {NgZone} zone\n   * @param browserRef\n   */\n  constructor(zone: NgZone,\n              browserRef: BrowserRef) {\n    const {window} = browserRef;\n    window[SMARTEDIT] = window[SMARTEDIT] || {};\n    window[SMARTEDIT].reprocessPage = () => {\n    };\n    window[SMARTEDIT].renderComponent = (componentId: string, componentType: string, parentId: string) => {\n      zone.run(() =>\n        this.renderComponent$.emit({\n          componentId, componentType, parentId\n        }));\n      return true;\n    };\n  }\n}\n","import {AbstractControl, ValidationErrors, ValidatorFn, Validators} from '@angular/forms';\r\nimport * as libphonenumber from 'google-libphonenumber';\r\n\r\nconst phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\r\n\r\nconst luhnCheck = (val: string) => {\r\n  let sum = 0;\r\n  for (let i = 0; i < val.length; i++) {\r\n    let intVal = parseInt(val.substr(i, 1), 10);\r\n    if (i % 2 === 0) {\r\n      intVal *= 2;\r\n      if (intVal > 9) {\r\n        intVal = 1 + (intVal % 10);\r\n      }\r\n    }\r\n    sum += intVal;\r\n  }\r\n  return (sum % 10) === 0;\r\n};\r\n\r\nexport class YValidators extends Validators {\r\n\r\n  /**\r\n   * Credit card number validator\r\n   * @param {AbstractControl} control\r\n   * @returns {ValidationErrors}\r\n   */\r\n  static ccNumber(control: AbstractControl): ValidationErrors | null {\r\n    const {value} = control;\r\n    return /^[0-9]{15,16}$/.test(value) && luhnCheck(value) ? null : {ccNumber: true};\r\n  }\r\n\r\n  /**\r\n   * Credit card security number validator\r\n   * @param {AbstractControl} control\r\n   * @returns {ValidationErrors}\r\n   */\r\n  static ccCSC(control: AbstractControl): ValidationErrors | null {\r\n    return /^[0-9]{3,4}$/.test(control.value) ? null : {ccCSC: true};\r\n  }\r\n\r\n  /**\r\n   * Credit card month number validator\r\n   * @param {AbstractControl} control\r\n   * @returns {ValidationErrors}\r\n   */\r\n  static ccMonth(control: AbstractControl): ValidationErrors | null {\r\n    try {\r\n      const value = parseInt(control.value, 10);\r\n      return value > 0 && value < 13 ? null : {ccMonth: true};\r\n    } catch (e) {\r\n      return {ccMonth: true};\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Credit card year number validator\r\n   * @param {AbstractControl} control\r\n   * @returns {ValidationErrors}\r\n   */\r\n  static ccYear(control: AbstractControl): ValidationErrors | null {\r\n    try {\r\n      const value = parseInt(control.value, 10);\r\n      const year = new Date().getFullYear();\r\n      return value >= year ? null : {ccYear: true};\r\n    } catch (e) {\r\n      return {ccYear: true};\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Phone number validator\r\n   * @param {string} countryIsoCode\r\n   * @returns {ValidatorFn}\r\n   */\r\n  static phone(countryIsoCode: string): ValidatorFn {\r\n    return control => {\r\n      if (control.value) {\r\n        try {\r\n          const rawNumber = phoneUtil.parse(control.value, countryIsoCode);\r\n          return !phoneUtil.isValidNumberForRegion(rawNumber, countryIsoCode) ?\r\n            {phone: true} :\r\n            null;\r\n        } catch (e) {\r\n          return {phone: true};\r\n        }\r\n      }\r\n      return null;\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Password validator\r\n   * @param {AbstractControl} control\r\n   * @returns {ValidationErrors}\r\n   */\r\n  static password(control: AbstractControl): ValidationErrors | null {\r\n    const {value} = control;\r\n    if (value) {\r\n      return value.length < 6 ? {password: true} : null;\r\n    }\r\n    return {password: true};\r\n  }\r\n}\r\n","import {Component, ContentChild, Input, OnInit, TemplateRef} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {noop} from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'input-file',\r\n  template: `\r\n    <ng-container *ngIf=\"prefixTemplate\" [ngTemplateOutlet]=\"prefixTemplate\"></ng-container>\r\n    <ng-container *ngIf=\"labelTemplate; else defaultLabel\">\r\n      <label [for]=\"id\">\r\n        <ng-container [ngTemplateOutlet]=\"labelTemplate\"></ng-container>\r\n      </label>\r\n      <input type=\"file\"\r\n             class=\"form-control d-none\"\r\n             [id]=\"id\"\r\n             [name]=\"name\"\r\n             [accept]=\"acceptedFileTypes\"\r\n             [multiple]=\"multiple\"\r\n             (change)=\"change($event)\">\r\n    </ng-container>\r\n    <ng-template #defaultLabel>\r\n      <input type=\"file\"\r\n             class=\"form-control\"\r\n             (change)=\"change($event)\"\r\n             [accept]=\"acceptedFileTypes\"\r\n             [multiple]=\"multiple\">\r\n    </ng-template>\r\n    <ng-container *ngIf=\"suffixTemplate\" [ngTemplateOutlet]=\"suffixTemplate\"></ng-container>\r\n  `,\r\n  providers: [{\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: InputFileComponent,\r\n    multi: true\r\n  }]\r\n})\r\nexport class InputFileComponent implements ControlValueAccessor, OnInit {\r\n\r\n  private onChangeCallback: (_: any) => void = noop;\r\n  private _files: FileList | undefined;\r\n  @ContentChild('prefix', {static: false})\r\n  prefixTemplate: TemplateRef<any> | undefined;\r\n  @ContentChild('label', {static: false})\r\n  labelTemplate: TemplateRef<any> | undefined;\r\n  @ContentChild('suffix', {static: false})\r\n  suffixTemplate: TemplateRef<any> | undefined;\r\n  acceptedFileTypes: string | undefined;\r\n\r\n  @Input()\r\n  id = 'inputFile';\r\n  @Input()\r\n  name: string | undefined;\r\n  @Input()\r\n  allowedTypes: string[] = [];\r\n  @Input()\r\n  multiple = false;\r\n  @Input()\r\n  disabled = true;\r\n\r\n  change(event: any) {\r\n    this.files = event.target.files as FileList;\r\n  }\r\n\r\n  get files() {\r\n    return this._files;\r\n  }\r\n\r\n  set files(files) {\r\n    if (files) {\r\n      this._files = files;\r\n      if (this.onChangeCallback) {\r\n        this.onChangeCallback(files);\r\n      }\r\n    }\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChangeCallback = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    // noop\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean) {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  writeValue(files: FileList): void {\r\n    this._files = files;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.acceptedFileTypes = this.allowedTypes\r\n      .map((fileType: string) => fileType.startsWith('.') ? fileType : `.${fileType}`)\r\n      .join(',');\r\n  }\r\n}\r\n","import {Component, ElementRef, HostListener, Input} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {noop} from 'rxjs';\nimport {Animations} from '../../../animations';\n\n@Component({\n  selector: 'input-select',\n  template: `\n    <div class=\"input-select dropdown {{collapse ? 'show':''}}\">\n      <input class=\"form-control p-select\"\n             [name]=\"name\"\n             [(ngModel)]=\"value\"\n             (keydown)=\"$event.preventDefault()\"\n             [placeholder]=\"placeholder\"\n             [disabled]=\"disabled\">\n      <span class=\"after {{collapse ? 'collapsed':''}}\"></span>\n      <div class=\"dropdown-menu m-0 w-100 d-block p-0\" [@expand]=\"collapse? 'on' : 'off'\">\n        <div class=\"dropdown-content\">\n          <div class=\"options\" *ngIf=\"values\">\n            <div class=\"dropdown-item acc-option d-flex align-items-center\"\n                 *ngFor=\"let value of values; let i=index\"\n                 (click)=\"$event.preventDefault(); select(i)\">\n              {{optionNames[i]}}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n  styleUrls: ['input-select.component.scss'],\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: InputSelectComponent,\n    multi: true\n  }],\n  animations: [\n    Animations.expand({name: 'expand', timing: 0.2})\n  ]\n})\nexport class InputSelectComponent implements ControlValueAccessor {\n\n  private onChangeCallback: (_: any) => void = noop;\n  private _value: any;\n  collapse = false;\n  @Input()\n  values: any[] = [];\n  @Input()\n  optionNames: string[] | number[] = [];\n  @Input()\n  name = '';\n  @Input()\n  placeholder = '';\n  @Input()\n  disabled = false;\n\n  get value() {\n    return this._value;\n  }\n\n  set value(value) {\n    if (value) {\n      const indexOfValue = this.values?.indexOf(value);\n      if (indexOfValue && indexOfValue !== -1 && this.optionNames && this.optionNames[indexOfValue]) {\n        this._value = this.optionNames[indexOfValue];\n        if (this.onChangeCallback) {\n          this.onChangeCallback(value);\n        }\n      }\n    }\n  }\n\n  constructor(private elementRef: ElementRef) {\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    // noop\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n\n  writeValue(obj: string): void {\n    const test = this._value ? this._value : null;\n    if (obj !== test && obj) {\n      this.value = obj;\n    }\n  }\n\n  @HostListener('window:click', ['$event'])\n  clickEvent(event: MouseEvent) {\n    if (!this.isEventFrom(event)) {\n      this.collapse = false;\n    } else {\n      this.collapse = !this.collapse;\n    }\n  }\n\n  private isEventFrom($event: Event) {\n    return this.elementRef.nativeElement.contains($event.target);\n  }\n\n  select(i: number) {\n    this.value = this.values[i];\n  }\n}\n","import {ChangeDetectorRef, Component, Input} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {noop} from 'rxjs';\n\n@Component({\n  selector: 'input-switch',\n  template: `\n    <label class=\"switch m-0\">\n      <input type=\"checkbox\" [(ngModel)]=\"value\" [name]=\"name\" [disabled]=\"disabled\">\n      <span class=\"slider round\"></span>\n    </label>\n  `,\n  styleUrls: ['input-switch.component.scss'],\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: InputSwitchComponent,\n    multi: true\n  }],\n})\nexport class InputSwitchComponent implements ControlValueAccessor {\n\n  private _value: any;\n  private onChangeCallback: (_: any) => void = noop;\n\n  @Input()\n  name = '';\n  @Input()\n  disabled = false;\n\n  constructor(private ref: ChangeDetectorRef) {\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(value: any) {\n    this._value = value;\n    if (this.onChangeCallback) {\n      this.onChangeCallback(value);\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    // noop\n  }\n\n  writeValue(obj: any): void {\n    this._value = obj;\n    this.ref.markForCheck();\n  }\n\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n}\n","import {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {FileSizePipe, StripHtmlPipe, StripTimeStringPipe, TruncateNumberPipe, TruncateTextPipe} from './filters/strip';\nimport {DecodeUriPipe, HostPipe, RouterFragmentPipe, RouterPathPipe, RouterQueryPipe} from './filters/url';\nimport {SanitizeHtmlPipe, SanitizeStylePipe, SanitizeUrlPipe} from './filters/sanitize';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ScrollTopDirective} from './directives/scroll-top.directive';\nimport {ImagePipe, ThumbnailPipe} from './filters/images';\nimport {MapPipe} from './filters/transform';\nimport {InputSelectComponent} from './form/elements/input-select/input-select.component';\nimport {InputFileComponent} from './form/elements/input-file/input-file.component';\nimport {InputSwitchComponent} from './form/elements/input-switch/input-switch.component';\nimport {SitePipe, ThemePipe} from './filters/classes';\nimport {IfSiteDirective} from './directives/if-site.directive';\nimport {IfThemeDirective} from './directives/if-theme.directive';\nimport {SrcLazyDirective} from './directives/src-lazy.directive';\nimport {IntoViewDirective} from './directives/into-view.directive';\nimport {DragScrollItemDirective} from './components/drag-scroll/drag-scroll-item.directive';\nimport {DragScrollComponent} from './components/drag-scroll/drag-scroll.component';\n\nconst filters = [\n  TruncateTextPipe,\n  TruncateNumberPipe,\n  FileSizePipe,\n  StripHtmlPipe,\n  HostPipe,\n  StripTimeStringPipe,\n  SanitizeHtmlPipe,\n  SanitizeStylePipe,\n  SanitizeUrlPipe,\n  DecodeUriPipe,\n  RouterPathPipe,\n  RouterQueryPipe,\n  RouterFragmentPipe,\n  ThumbnailPipe,\n  ImagePipe,\n  SitePipe,\n  ThemePipe,\n  MapPipe\n];\n\nconst directives = [\n  IntoViewDirective,\n  IfSiteDirective,\n  IfThemeDirective,\n  ScrollTopDirective,\n  SrcLazyDirective,\n  DragScrollItemDirective\n];\n\nconst components = [\n  InputSelectComponent,\n  InputFileComponent,\n  InputSwitchComponent,\n  DragScrollComponent\n];\n\n@NgModule({\n  imports: [\n    CommonModule,\n    TranslateModule,\n    FormsModule\n  ],\n  declarations: [...filters, ...directives, ...components],\n  exports: [...filters, ...directives, ...components]\n})\nexport class YCoreModule {\n  /**\n   * Core module\n   */\n}\n","/*\n * Public API Surface of ycore\n */\nexport * from './animations';\nexport * from './components';\nexport * from './directives';\nexport * from './filters';\nexport * from './services';\nexport * from './form';\nexport * from './y-core.module';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}