@ng-doc/ui-kit
Version:
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>
1 lines • 4.01 kB
Source Map (JSON)
{"version":3,"file":"ng-doc-ui-kit-services-overlay-strategy.mjs","sources":["../../../../libs/ui-kit/services/overlay-strategy/overlay-strategy.ts","../../../../libs/ui-kit/services/overlay-strategy/ng-doc-ui-kit-services-overlay-strategy.ts"],"sourcesContent":["import { OverlayRef, ScrollStrategy } from '@angular/cdk/overlay';\nimport { DOCUMENT, inject, Injectable, NgZone } from '@angular/core';\nimport { toElement } from '@ng-doc/ui-kit/helpers';\nimport { NgDocOverlayConfig } from '@ng-doc/ui-kit/interfaces';\nimport { ngDocZoneDetach } from '@ng-doc/ui-kit/observables';\nimport { fromEvent, Subject } from 'rxjs';\nimport { filter, map, takeUntil, throttleTime } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class NgDocOverlayStrategy implements ScrollStrategy {\n private documentRef = inject<Document>(DOCUMENT);\n private ngZone = inject(NgZone);\n\n private overlayRef: OverlayRef | null = null;\n private destroy$: Subject<void> = new Subject<void>();\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\n\n constructor() {}\n\n attach(overlayRef: OverlayRef): void {\n this.overlayRef = overlayRef;\n }\n\n enable(): void {\n fromEvent(this.documentRef, 'scroll', { capture: true })\n .pipe(\n ngDocZoneDetach(this.ngZone),\n throttleTime(10),\n map((scrollEvent: Event) =>\n scrollEvent.target instanceof Document\n ? scrollEvent.target.scrollingElement\n : scrollEvent.target,\n ),\n filter((target: EventTarget | null) =>\n target instanceof Node ? target.contains(this.origin) || !this.origin : false,\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(() => this.detach());\n }\n\n private get origin(): HTMLElement | null {\n const config: NgDocOverlayConfig | undefined =\n this.overlayRef?.getConfig() as NgDocOverlayConfig;\n return config?.viewContainerRef\n ? (toElement(config.viewContainerRef.element) as HTMLElement)\n : null;\n }\n\n disable(): void {\n this.destroy$.next();\n }\n\n detach(): void {\n this.disable();\n if (this.overlayRef?.hasAttached()) {\n this.ngZone.run(() => {\n this.overlayRef?.detach();\n });\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MASa,oBAAoB,CAAA;AAU/B,IAAA,WAAA,GAAA;AATQ,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAW,QAAQ,CAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAEvB,IAAA,CAAA,UAAU,GAAsB,IAAI;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAQ;IAKtC;AAEf,IAAA,MAAM,CAAC,UAAsB,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;IAC9B;IAEA,MAAM,GAAA;AACJ,QAAA,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aACpD,IAAI,CACH,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAC5B,YAAY,CAAC,EAAE,CAAC,EAChB,GAAG,CAAC,CAAC,WAAkB,KACrB,WAAW,CAAC,MAAM,YAAY;AAC5B,cAAE,WAAW,CAAC,MAAM,CAAC;cACnB,WAAW,CAAC,MAAM,CACvB,EACD,MAAM,CAAC,CAAC,MAA0B,KAChC,MAAM,YAAY,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAC9E,EACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IACnC;AAEA,IAAA,IAAY,MAAM,GAAA;QAChB,MAAM,MAAM,GACV,IAAI,CAAC,UAAU,EAAE,SAAS,EAAwB;QACpD,OAAO,MAAM,EAAE;cACV,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO;cAC1C,IAAI;IACV;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;IACtB;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,gBAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AAC3B,YAAA,CAAC,CAAC;QACJ;IACF;8GArDW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA,CAAA;;2FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACRlC;;AAEG;;;;"}