@ng-web-apis/mutation-observer
Version:
A library for declarative use of Mutation Observer API with Angular
1 lines • 7.94 kB
Source Map (JSON)
{"version":3,"file":"ng-web-apis-mutation-observer.mjs","sources":["../../../libs/mutation-observer/src/classes/safe-observer.ts","../../../libs/mutation-observer/src/tokens/mutation-observer-init.ts","../../../libs/mutation-observer/src/utils/boolean-attribute.ts","../../../libs/mutation-observer/src/utils/mutation-observer-init-factory.ts","../../../libs/mutation-observer/src/directives/mutation-observer.directive.ts","../../../libs/mutation-observer/src/services/mutation-observer.service.ts","../../../libs/mutation-observer/src/ng-web-apis-mutation-observer.ts"],"sourcesContent":["export const SafeObserver =\n typeof MutationObserver === 'undefined'\n ? class implements MutationObserver {\n public observe(): void {}\n public disconnect(): void {}\n public takeRecords(): MutationRecord[] {\n return [];\n }\n }\n : MutationObserver;\n","import {InjectionToken, type Provider} from '@angular/core';\n\nexport const WA_MUTATION_OBSERVER_INIT = new InjectionToken<MutationObserverInit>(\n ngDevMode ? '[WA_MUTATION_OBSERVER_INIT]' : '',\n);\n\nexport function provideMutationObserverInit(useValue: MutationObserverInit): Provider {\n return {provide: WA_MUTATION_OBSERVER_INIT, useValue};\n}\n","export function booleanAttribute(element: Element, attribute: string): true | undefined {\n return element.getAttribute(attribute) !== null || undefined;\n}\n","import {ElementRef, inject} from '@angular/core';\n\nimport {booleanAttribute} from './boolean-attribute';\n\nexport function mutationObserverInitFactory(): MutationObserverInit {\n const {nativeElement} = inject(ElementRef);\n const attributeFilter: string | null = nativeElement.getAttribute('attributeFilter');\n\n return {\n attributeFilter: attributeFilter?.split(',').map((attr) => attr.trim()),\n attributeOldValue: booleanAttribute(nativeElement, 'attributeOldValue'),\n attributes: booleanAttribute(nativeElement, 'attributes'),\n characterData: booleanAttribute(nativeElement, 'characterData'),\n characterDataOldValue: booleanAttribute(nativeElement, 'characterDataOldValue'),\n childList: booleanAttribute(nativeElement, 'childList'),\n subtree: booleanAttribute(nativeElement, 'subtree'),\n };\n}\n","import {Directive, ElementRef, inject, type OnDestroy, output} from '@angular/core';\n\nimport {SafeObserver} from '../classes/safe-observer';\nimport {WA_MUTATION_OBSERVER_INIT} from '../tokens/mutation-observer-init';\nimport {mutationObserverInitFactory} from '../utils/mutation-observer-init-factory';\n\n@Directive({\n selector: '[waMutationObserver]',\n inputs: [\n 'attributeFilter',\n 'attributeOldValue',\n 'attributes',\n 'characterData',\n 'characterDataOldValue',\n 'childList',\n 'subtree',\n ],\n providers: [\n {provide: WA_MUTATION_OBSERVER_INIT, useFactory: mutationObserverInitFactory},\n ],\n exportAs: 'MutationObserver',\n})\nexport class WaMutationObserver extends SafeObserver implements OnDestroy {\n private readonly nativeElement: Node = inject(ElementRef).nativeElement;\n private readonly config = inject(WA_MUTATION_OBSERVER_INIT);\n public attributeFilter = '';\n public attributeOldValue = '' as const;\n public attributes = '' as const;\n public characterData = '' as const;\n public characterDataOldValue = '' as const;\n public childList = '' as const;\n public subtree = '' as const;\n public readonly waMutationObserver = output<MutationRecord[]>();\n\n constructor() {\n super((records) => {\n this.waMutationObserver.emit(records);\n });\n\n this.observe(this.nativeElement, this.config);\n }\n\n public ngOnDestroy(): void {\n this.disconnect();\n }\n}\n","import {ElementRef, inject, Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {SafeObserver} from '../classes/safe-observer';\nimport {WA_MUTATION_OBSERVER_INIT} from '../tokens/mutation-observer-init';\n\n@Injectable()\nexport class WaMutationObserverService extends Observable<readonly MutationRecord[]> {\n constructor() {\n const nativeElement: Node = inject(ElementRef).nativeElement;\n const config = inject(WA_MUTATION_OBSERVER_INIT);\n\n super((subscriber) => {\n const observer = new SafeObserver((records) => {\n subscriber.next(records);\n });\n\n observer.observe(nativeElement, config);\n\n return () => {\n observer.disconnect();\n };\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}