{"version":3,"file":"ng-zorro-antd-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/ng-zorro-antd-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 { normalizePassiveListenerOptions, Platform } from '@angular/cdk/platform';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  DOCUMENT,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Input,\n  NgZone,\n  numberAttribute,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\nimport { fadeMotion } from 'ng-zorro-antd/core/animation';\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { NzScrollService } from 'ng-zorro-antd/core/services';\nimport { fromEventOutsideAngular } from 'ng-zorro-antd/core/util';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'backTop';\n\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n\n/**\n * @deprecated Will be removed in v21. It is recommended to use `<nz-float-button-top>` instead.\n */\n@Component({\n  selector: 'nz-back-top',\n  exportAs: 'nzBackTop',\n  animations: [fadeMotion],\n  imports: [NgTemplateOutlet, NzIconModule],\n  template: `\n    @if (visible) {\n      <div #backTop class=\"ant-back-top\" [class.ant-back-top-rtl]=\"dir === 'rtl'\" @fadeMotion>\n        <ng-template #defaultContent>\n          <div class=\"ant-back-top-content\">\n            <div class=\"ant-back-top-icon\">\n              <nz-icon nzType=\"vertical-align-top\" />\n            </div>\n          </div>\n        </ng-template>\n        <ng-template [ngTemplateOutlet]=\"nzTemplate || defaultContent\"></ng-template>\n      </div>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\nexport class NzBackTopComponent implements OnInit, OnChanges {\n  public nzConfigService = inject(NzConfigService);\n  private scrollSrv = inject(NzScrollService);\n  private platform = inject(Platform);\n  private zone = inject(NgZone);\n  private cdr = inject(ChangeDetectorRef);\n  private directionality = inject(Directionality);\n  private destroyRef = inject(DestroyRef);\n  readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n  private scrollListenerDestroy$ = new Subject<boolean>();\n  private target: HTMLElement | null = null;\n\n  visible: boolean = false;\n  dir: Direction = this.directionality.value || 'ltr';\n\n  @Input() nzTemplate?: TemplateRef<void>;\n  @Input({ transform: numberAttribute }) @WithConfig() nzVisibilityHeight: number = 400;\n  @Input() nzTarget?: string | HTMLElement;\n  @Input({ transform: numberAttribute }) nzDuration: number = 450;\n  @Output() readonly nzClick = new EventEmitter<boolean>();\n\n  @ViewChild('backTop', { static: false })\n  set backTop(backTop: ElementRef<HTMLElement> | undefined) {\n    if (backTop) {\n      this.backTopClickSubscription.unsubscribe();\n\n      this.backTopClickSubscription = fromEventOutsideAngular(backTop.nativeElement, 'click')\n        .pipe(takeUntilDestroyed(this.destroyRef))\n        .subscribe(() => {\n          this.scrollSrv.scrollTo(this.getTarget(), 0, { duration: this.nzDuration });\n          if (this.nzClick.observers.length) {\n            this.zone.run(() => this.nzClick.emit(true));\n          }\n        });\n    }\n  }\n\n  private backTopClickSubscription = Subscription.EMPTY;\n  private doc: Document = inject(DOCUMENT);\n\n  constructor() {\n    this.destroyRef.onDestroy(() => {\n      this.scrollListenerDestroy$.next(true);\n      this.scrollListenerDestroy$.complete();\n    });\n  }\n\n  ngOnInit(): void {\n    this.registerScrollEvent();\n\n    this.directionality.change?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((direction: Direction) => {\n      this.dir = direction;\n      this.cdr.detectChanges();\n    });\n\n    this.dir = this.directionality.value;\n  }\n\n  private getTarget(): HTMLElement | Window {\n    return this.target || window;\n  }\n\n  private handleScroll(): void {\n    const newVisible = this.scrollSrv.getScroll(this.getTarget()) > this.nzVisibilityHeight;\n    if (this.visible !== newVisible) {\n      this.visible = newVisible;\n      this.cdr.detectChanges();\n    }\n  }\n\n  private registerScrollEvent(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n    this.scrollListenerDestroy$.next(true);\n    this.handleScroll();\n    fromEventOutsideAngular(this.getTarget(), 'scroll', passiveEventListenerOptions as AddEventListenerOptions)\n      .pipe(debounceTime(50), takeUntil(this.scrollListenerDestroy$))\n      .subscribe(() => this.handleScroll());\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzTarget } = changes;\n    if (nzTarget) {\n      this.target = typeof this.nzTarget === 'string' ? this.doc.querySelector(this.nzTarget) : this.nzTarget!;\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 */\n\nimport { NgModule } from '@angular/core';\n\nimport { NzBackTopComponent } from './back-top.component';\n\n/**\n * @deprecated Will be removed in v21. It is recommended to use `<nz-float-button-top>` instead.\n */\n@NgModule({\n  exports: [NzBackTopComponent],\n  imports: [NzBackTopComponent]\n})\nexport class NzBackTopModule {}\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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"}