{"version":3,"file":"ng-zorro-antd-affix.mjs","sources":["../../components/affix/respond-events.ts","../../components/affix/utils.ts","../../components/affix/affix.component.ts","../../components/affix/affix.module.ts","../../components/affix/public-api.ts","../../components/affix/ng-zorro-antd-affix.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\nexport enum AffixRespondEvents {\n  resize = 'resize',\n  scroll = 'scroll',\n  touchstart = 'touchstart',\n  touchmove = 'touchmove',\n  touchend = 'touchend',\n  pageshow = 'pageshow',\n  load = 'LOAD'\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\nexport interface SimpleRect {\n  top: number;\n  left: number;\n  width?: number;\n  height?: number;\n  bottom?: number;\n}\n\nexport function isTargetWindow(target: Element | Window): target is Window {\n  return typeof window !== 'undefined' && target === window;\n}\n\nexport function getTargetRect(target: Element | Window): SimpleRect {\n  return !isTargetWindow(target)\n    ? target.getBoundingClientRect()\n    : {\n        top: 0,\n        left: 0,\n        bottom: 0\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 { Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  DOCUMENT,\n  effect,\n  ElementRef,\n  inject,\n  Input,\n  NgZone,\n  OnChanges,\n  output,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, merge, ReplaySubject, Subscription } from 'rxjs';\nimport { map, throttleTime } from 'rxjs/operators';\n\nimport { NzResizeObserver } from 'ng-zorro-antd/cdk/resize-observer';\nimport { NzConfigKey, WithConfig } from 'ng-zorro-antd/core/config';\nimport { NzScrollService } from 'ng-zorro-antd/core/services';\nimport { NgStyleInterface } from 'ng-zorro-antd/core/types';\nimport { getStyleAsText, numberAttributeWithZeroFallback, shallowEqual } from 'ng-zorro-antd/core/util';\n\nimport { AffixRespondEvents } from './respond-events';\nimport { getTargetRect, SimpleRect } from './utils';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'affix';\nconst NZ_AFFIX_CLS_PREFIX = 'ant-affix';\nconst NZ_AFFIX_DEFAULT_SCROLL_TIME = 20;\nconst NOOP_EVENT = {} as Event;\n\n@Component({\n  selector: 'nz-affix',\n  exportAs: 'nzAffix',\n  template: `\n    <div #fixedEl>\n      <ng-content />\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None\n})\nexport class NzAffixComponent implements OnChanges {\n  private readonly scrollSrv = inject(NzScrollService);\n  private readonly ngZone = inject(NgZone);\n  private readonly platform = inject(Platform);\n  private readonly renderer = inject(Renderer2);\n  private readonly nzResizeObserver = inject(NzResizeObserver);\n  private readonly directionality = inject(Directionality);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly document = inject(DOCUMENT);\n  private readonly placeholderNode: HTMLElement = inject(ElementRef<HTMLElement>).nativeElement;\n\n  readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n  @ViewChild('fixedEl', { static: true }) private fixedEl!: ElementRef<HTMLDivElement>;\n\n  @Input() nzTarget?: string | Element | Window;\n\n  @Input({ transform: numberAttributeWithZeroFallback })\n  @WithConfig()\n  nzOffsetTop?: null | number;\n\n  @Input({ transform: numberAttributeWithZeroFallback })\n  @WithConfig()\n  nzOffsetBottom?: null | number;\n\n  readonly nzChange = output<boolean>();\n\n  private affixStyle?: NgStyleInterface;\n  private placeholderStyle?: NgStyleInterface;\n  private positionChangeSubscription = Subscription.EMPTY;\n  private offsetChanged$ = new ReplaySubject<void>(1);\n  private timeout?: ReturnType<typeof setTimeout>;\n\n  private get target(): Element | Window {\n    const el = this.nzTarget;\n    return (typeof el === 'string' ? this.document.querySelector(el) : el) || window;\n  }\n\n  constructor() {\n    effect(() => {\n      this.directionality.valueSignal();\n      this.registerListeners();\n      this.updatePosition(NOOP_EVENT);\n    });\n\n    this.destroyRef.onDestroy(() => {\n      this.removeListeners();\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzOffsetBottom, nzOffsetTop, nzTarget } = changes;\n\n    if (nzOffsetBottom || nzOffsetTop) {\n      this.offsetChanged$.next();\n    }\n    if (nzTarget) {\n      this.registerListeners();\n    }\n  }\n\n  private registerListeners(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n\n    this.removeListeners();\n    const el = this.target === window ? this.document.body : (this.target as Element);\n    this.positionChangeSubscription = this.ngZone.runOutsideAngular(() =>\n      merge(\n        ...Object.keys(AffixRespondEvents).map(evName => fromEvent(this.target, evName)),\n        this.offsetChanged$.pipe(map(() => NOOP_EVENT)),\n        this.nzResizeObserver.observe(el)\n      )\n        .pipe(\n          throttleTime(NZ_AFFIX_DEFAULT_SCROLL_TIME, undefined, { trailing: true }),\n          takeUntilDestroyed(this.destroyRef)\n        )\n        .subscribe(e => this.updatePosition(e as Event))\n    );\n    this.timeout = setTimeout(() => this.updatePosition(NOOP_EVENT));\n  }\n\n  private removeListeners(): void {\n    clearTimeout(this.timeout);\n    this.positionChangeSubscription.unsubscribe();\n  }\n\n  getOffset(element: Element, target: Element | Window | undefined): SimpleRect {\n    const elemRect = element.getBoundingClientRect();\n    const targetRect = getTargetRect(target!);\n\n    const scrollTop = this.scrollSrv.getScroll(target, true);\n    const scrollLeft = this.scrollSrv.getScroll(target, false);\n\n    const docElem = this.document.body;\n    const clientTop = docElem.clientTop || 0;\n    const clientLeft = docElem.clientLeft || 0;\n\n    return {\n      top: elemRect.top - targetRect.top + scrollTop - clientTop,\n      left: elemRect.left - targetRect.left + scrollLeft - clientLeft,\n      width: elemRect.width,\n      height: elemRect.height\n    };\n  }\n\n  private setAffixStyle(e: Event, affixStyle?: NgStyleInterface): void {\n    const originalAffixStyle = this.affixStyle;\n    if (e.type === 'scroll' && originalAffixStyle && affixStyle && this.target === window) {\n      return;\n    }\n    if (shallowEqual(originalAffixStyle, affixStyle)) {\n      return;\n    }\n\n    const fixed = !!affixStyle;\n    const wrapEl = this.fixedEl.nativeElement;\n    this.renderer.setStyle(wrapEl, 'cssText', getStyleAsText(affixStyle));\n    this.affixStyle = affixStyle;\n    if (fixed) {\n      wrapEl.classList.add(NZ_AFFIX_CLS_PREFIX);\n    } else {\n      wrapEl.classList.remove(NZ_AFFIX_CLS_PREFIX);\n    }\n    this.updateRtlClass();\n    if ((affixStyle && !originalAffixStyle) || (!affixStyle && originalAffixStyle)) {\n      this.nzChange.emit(fixed);\n    }\n  }\n\n  private setPlaceholderStyle(placeholderStyle?: NgStyleInterface): void {\n    const originalPlaceholderStyle = this.placeholderStyle;\n    if (shallowEqual(placeholderStyle, originalPlaceholderStyle)) {\n      return;\n    }\n    this.renderer.setStyle(this.placeholderNode, 'cssText', getStyleAsText(placeholderStyle));\n    this.placeholderStyle = placeholderStyle;\n  }\n\n  private syncPlaceholderStyle(e: Event): void {\n    if (!this.affixStyle) {\n      return;\n    }\n    this.renderer.setStyle(this.placeholderNode, 'cssText', '');\n    this.placeholderStyle = undefined;\n    const styleObj = {\n      width: this.placeholderNode.offsetWidth,\n      height: this.fixedEl.nativeElement.offsetHeight\n    };\n    this.setAffixStyle(e, {\n      ...this.affixStyle,\n      ...styleObj\n    });\n    this.setPlaceholderStyle(styleObj);\n  }\n\n  updatePosition(e: Event): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n\n    const targetNode = this.target;\n    let offsetTop = this.nzOffsetTop;\n    const scrollTop = this.scrollSrv.getScroll(targetNode, true);\n    const elemOffset = this.getOffset(this.placeholderNode, targetNode!);\n    const fixedNode = this.fixedEl.nativeElement;\n    const elemSize = {\n      width: fixedNode.offsetWidth,\n      height: fixedNode.offsetHeight\n    };\n    const offsetMode = {\n      top: false,\n      bottom: false\n    };\n    // Default to `offsetTop=0`.\n    if (typeof offsetTop !== 'number' && typeof this.nzOffsetBottom !== 'number') {\n      offsetMode.top = true;\n      offsetTop = 0;\n    } else {\n      offsetMode.top = typeof offsetTop === 'number';\n      offsetMode.bottom = typeof this.nzOffsetBottom === 'number';\n    }\n    const targetRect = getTargetRect(targetNode);\n    const targetInnerHeight = (targetNode as Window).innerHeight || (targetNode as HTMLElement).clientHeight;\n    if (scrollTop >= elemOffset.top - (offsetTop as number) && offsetMode.top) {\n      const width = elemOffset.width;\n      const top = targetRect.top + (offsetTop as number);\n      this.setAffixStyle(e, {\n        position: 'fixed',\n        top,\n        left: targetRect.left + elemOffset.left,\n        width\n      });\n      this.setPlaceholderStyle({\n        width,\n        height: elemSize.height\n      });\n    } else if (\n      scrollTop <= elemOffset.top + elemSize.height + (this.nzOffsetBottom as number) - targetInnerHeight &&\n      offsetMode.bottom\n    ) {\n      const targetBottomOffset = targetNode === window ? 0 : window.innerHeight - targetRect.bottom!;\n      const width = elemOffset.width;\n      this.setAffixStyle(e, {\n        position: 'fixed',\n        bottom: targetBottomOffset + (this.nzOffsetBottom as number),\n        left: targetRect.left + elemOffset.left,\n        width\n      });\n      this.setPlaceholderStyle({\n        width,\n        height: elemOffset.height\n      });\n    } else {\n      if (\n        e.type === AffixRespondEvents.resize &&\n        this.affixStyle &&\n        this.affixStyle.position === 'fixed' &&\n        this.placeholderNode.offsetWidth\n      ) {\n        this.setAffixStyle(e, {\n          ...this.affixStyle,\n          width: this.placeholderNode.offsetWidth\n        });\n      } else {\n        this.setAffixStyle(e);\n      }\n      this.setPlaceholderStyle();\n    }\n\n    if (e.type === 'resize') {\n      this.syncPlaceholderStyle(e);\n    }\n  }\n\n  private updateRtlClass(): void {\n    const wrapEl = this.fixedEl.nativeElement;\n    if (this.directionality.valueSignal() === 'rtl' && wrapEl.classList.contains(NZ_AFFIX_CLS_PREFIX)) {\n      wrapEl.classList.add(`${NZ_AFFIX_CLS_PREFIX}-rtl`);\n    } else {\n      wrapEl.classList.remove(`${NZ_AFFIX_CLS_PREFIX}-rtl`);\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 { NzAffixComponent } from './affix.component';\n\n@NgModule({\n  exports: [NzAffixComponent],\n  imports: [NzAffixComponent]\n})\nexport class NzAffixModule {}\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 './affix.component';\nexport * from './affix.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}