{"version":3,"file":"ui-vts-kit-ng-vts-back-top.mjs","sources":["../../components/back-top/back-top.component.ts","../../components/back-top/back-top.module.ts","../../components/back-top/public-api.ts","../../components/back-top/ui-vts-kit-ng-vts-back-top.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewEncapsulation\n} from '@angular/core';\nimport { fadeMotion } from '@ui-vts-kit/ng-vts/core/animation';\nimport { VtsConfigKey, VtsConfigService, WithConfig } from '@ui-vts-kit/ng-vts/core/config';\nimport { VtsScrollService } from '@ui-vts-kit/ng-vts/core/services';\nimport { NumberInput, VtsSafeAny } from '@ui-vts-kit/ng-vts/core/types';\nimport { InputNumber } from '@ui-vts-kit/ng-vts/core/util';\n\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil, throttleTime } from 'rxjs/operators';\n\nconst VTS_CONFIG_MODULE_NAME: VtsConfigKey = 'backTop';\n\n@Component({\n  selector: 'vts-back-top',\n  exportAs: 'vtsBackTop',\n  animations: [fadeMotion],\n  template: `\n    <div\n      class=\"vts-back-top\"\n      [class.vts-back-top-rtl]=\"dir === 'rtl'\"\n      (click)=\"clickBackTop()\"\n      @fadeMotion\n      *ngIf=\"visible\"\n    >\n      <ng-template #defaultContent>\n        <div class=\"vts-back-top-content\">\n          <div class=\"vts-back-top-icon\">\n            <i vts-icon vtsType=\"Eject\"></i>\n          </div>\n        </div>\n      </ng-template>\n      <ng-template [ngTemplateOutlet]=\"vtsTemplate || defaultContent\"></ng-template>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  preserveWhitespaces: false\n})\nexport class VtsBackTopComponent implements OnInit, OnDestroy, OnChanges {\n  readonly _vtsModuleName: VtsConfigKey = VTS_CONFIG_MODULE_NAME;\n  static ngAcceptInputType_vtsVisibilityHeight: NumberInput;\n  static ngAcceptInputType_vtsDuration: NumberInput;\n\n  private scrollListenerDestroy$ = new Subject();\n  private destroy$ = new Subject();\n  private target: HTMLElement | null = null;\n\n  visible: boolean = false;\n  dir: Direction = 'ltr';\n\n  @Input() vtsTemplate?: TemplateRef<void>;\n  @Input() @WithConfig() @InputNumber() vtsVisibilityHeight: number = 400;\n  @Input() vtsTarget?: string | HTMLElement;\n  @Input() @InputNumber() vtsDuration: number = 450;\n  @Output() readonly vtsClick: EventEmitter<boolean> = new EventEmitter();\n\n  constructor(\n    @Inject(DOCUMENT) private doc: VtsSafeAny,\n    public vtsConfigService: VtsConfigService,\n    private scrollSrv: VtsScrollService,\n    private platform: Platform,\n    private cd: ChangeDetectorRef,\n    private zone: NgZone,\n    private cdr: ChangeDetectorRef,\n    @Optional() private directionality: Directionality\n  ) {\n    this.dir = this.directionality.value;\n  }\n\n  ngOnInit(): void {\n    this.registerScrollEvent();\n\n    this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n      this.dir = direction;\n      this.cdr.detectChanges();\n    });\n\n    this.dir = this.directionality.value;\n  }\n\n  clickBackTop(): void {\n    this.scrollSrv.scrollTo(this.getTarget(), 0, {\n      duration: this.vtsDuration\n    });\n    this.vtsClick.emit(true);\n  }\n\n  private getTarget(): HTMLElement | Window {\n    return this.target || window;\n  }\n\n  private handleScroll(): void {\n    if (this.visible === this.scrollSrv.getScroll(this.getTarget()) > this.vtsVisibilityHeight) {\n      return;\n    }\n    this.visible = !this.visible;\n    this.cd.detectChanges();\n  }\n\n  private registerScrollEvent(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n    this.scrollListenerDestroy$.next();\n    this.handleScroll();\n    this.zone.runOutsideAngular(() => {\n      fromEvent(this.getTarget(), 'scroll')\n        .pipe(throttleTime(50), takeUntil(this.scrollListenerDestroy$))\n        .subscribe(() => this.handleScroll());\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.scrollListenerDestroy$.next();\n    this.scrollListenerDestroy$.complete();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { vtsTarget } = changes;\n    if (vtsTarget) {\n      this.target =\n        typeof this.vtsTarget === 'string'\n          ? this.doc.querySelector(this.vtsTarget)\n          : this.vtsTarget;\n      this.registerScrollEvent();\n    }\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { VtsIconModule } from '@ui-vts-kit/ng-vts/icon';\n\nimport { VtsBackTopComponent } from './back-top.component';\n\n@NgModule({\n  declarations: [VtsBackTopComponent],\n  exports: [VtsBackTopComponent],\n  imports: [BidiModule, CommonModule, PlatformModule, VtsIconModule]\n})\nexport class VtsBackTopModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './back-top.component';\nexport * from './back-top.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}