{"version":3,"file":"zoneless-library.mjs","sources":["../../../projects/zoneless-library/src/lib/directive/zoneless.directive.ts","../../../projects/zoneless-library/src/lib/pipes/custom-async.pipe.ts","../../../projects/zoneless-library/src/lib/services/changeDetector.service.ts","../../../projects/zoneless-library/src/lib/services/EventZonelessDetectChanges.service.ts","../../../projects/zoneless-library/src/lib/zoneless.module.ts","../../../projects/zoneless-library/src/public-api.ts","../../../projects/zoneless-library/src/zoneless-library.ts"],"sourcesContent":["\r\nimport {\r\n    AfterViewInit,\r\n    ChangeDetectorRef,\r\n    Directive,\r\n    NgZone,\r\n    TemplateRef,\r\n    ViewContainerRef,\r\n  } from '@angular/core';\r\n  \r\n  @Directive({\r\n    selector: '[zoneLess]',\r\n  })\r\n  export class ZoneLessDirective implements AfterViewInit {\r\n    constructor(\r\n      private readonly _templateRef: TemplateRef<any>,\r\n      private readonly _viewContainer: ViewContainerRef,\r\n      private readonly _ngzone: NgZone,\r\n      private readonly _cd: ChangeDetectorRef\r\n    ) {\r\n      if(!(_ngzone instanceof NgZone)) {\r\n        throw new Error('Need the project be in Zone')\r\n      }\r\n    }\r\n  \r\n    ngAfterViewInit() {\r\n      setTimeout(() => {\r\n        this._ngzone.runOutsideAngular(() => {\r\n          this._viewContainer.createEmbeddedView(this._templateRef);\r\n        });\r\n        this._cd.detectChanges();\r\n      })\r\n    }\r\n  }","import {ChangeDetectorRef, EventEmitter, OnDestroy, Pipe, PipeTransform, untracked, ɵisPromise, ɵisSubscribable} from '@angular/core';\r\nimport {Observable, Subscribable, Unsubscribable} from 'rxjs';\r\n\r\n\r\ninterface SubscriptionStrategy {\r\n  createSubscription(async: Subscribable<any>|Promise<any>, updateLatestValue: any): Unsubscribable\r\n      |Promise<any>;\r\n  dispose(subscription: Unsubscribable|Promise<any>): void;\r\n}\r\n\r\nclass SubscribableStrategy implements SubscriptionStrategy {\r\n  createSubscription(async: Subscribable<any>, updateLatestValue: any): Unsubscribable {\r\n    return untracked(() => async.subscribe({\r\n      next: updateLatestValue,\r\n      error: (e: any) => {\r\n        throw e;\r\n      }\r\n    }));\r\n  }\r\n\r\n  dispose(subscription: Unsubscribable): void {\r\n    untracked(() => subscription.unsubscribe());\r\n  }\r\n}\r\n\r\nclass PromiseStrategy implements SubscriptionStrategy {\r\n  createSubscription(async: Promise<any>, updateLatestValue: (v: any) => any): Promise<any> {\r\n    return async.then(updateLatestValue, e => {\r\n      throw e;\r\n    });\r\n  }\r\n\r\n  dispose(subscription: Promise<any>): void {}\r\n}\r\n\r\nconst _promiseStrategy = new PromiseStrategy();\r\nconst _subscribableStrategy = new SubscribableStrategy();\r\n\r\n/**\r\n * The code is exactly the same as native pipe async only have in the refresh method a detectChanges for work in Zoneless mode\r\n */\r\n@Pipe({\r\n  name: 'asyncZoneless',\r\n  pure: false,\r\n})\r\nexport class AsyncPipeZoneless implements OnDestroy, PipeTransform {\r\n  private _ref: ChangeDetectorRef|null;\r\n  private _latestValue: any = null;\r\n\r\n  private _subscription: Unsubscribable|Promise<any>|null = null;\r\n  private _obj: Subscribable<any>|Promise<any>|EventEmitter<any>|null = null;\r\n  private _strategy: SubscriptionStrategy|null = null;\r\n\r\n  constructor(ref: ChangeDetectorRef) {\r\n    this._ref = ref;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this._subscription) {\r\n      this._dispose();\r\n    }\r\n    this._ref = null;\r\n  }\r\n\r\n\r\n  transform<T>(obj: Observable<T>|Subscribable<T>|Promise<T>): T|null;\r\n  transform<T>(obj: null|undefined): null;\r\n  transform<T>(obj: Observable<T>|Subscribable<T>|Promise<T>|null|undefined): T|null;\r\n  transform<T>(obj: Observable<T>|Subscribable<T>|Promise<T>|null|undefined): T|null {\r\n    if (!this._obj) {\r\n      if (obj) {\r\n        this._subscribe(obj);\r\n      }\r\n      return this._latestValue;\r\n    }\r\n\r\n    if (obj !== this._obj) {\r\n      this._dispose();\r\n      return this.transform(obj);\r\n    }\r\n\r\n    return this._latestValue;\r\n  }\r\n\r\n  private _subscribe(obj: Subscribable<any>|Promise<any>|EventEmitter<any>): void {\r\n    this._obj = obj;\r\n    this._strategy = this._selectStrategy(obj);\r\n    this._subscription = this._strategy.createSubscription(\r\n        obj, (value: Object) => this._updateLatestValue(obj, value));\r\n  }\r\n\r\n  private _selectStrategy(obj: Subscribable<any>|Promise<any>|\r\n                          EventEmitter<any>): SubscriptionStrategy {\r\n    if (ɵisPromise(obj)) {\r\n      return _promiseStrategy;\r\n    }\r\n\r\n    if (ɵisSubscribable(obj)) {\r\n      return _subscribableStrategy;\r\n    }\r\n\r\n    throw Error(`${AsyncPipeZoneless}`, obj);\r\n  }\r\n\r\n  private _dispose(): void {\r\n    this._strategy!.dispose(this._subscription!);\r\n    this._latestValue = null;\r\n    this._subscription = null;\r\n    this._obj = null;\r\n  }\r\n\r\n  private _updateLatestValue(async: any, value: Object): void {\r\n    if (async === this._obj) {\r\n      this._latestValue = value;\r\n      this._ref!.detectChanges();\r\n    }\r\n  }\r\n}","import { ApplicationRef, Injectable, ɵdetectChanges } from '@angular/core';\r\n\r\n// this is where we have the id in the lview\r\nconst CONTEXT_KEY = '__ngContext__';\r\nconst PARENT_ID = 3;\r\nconst CONTEXT = 8;\r\n\r\ntype detectChangeFn = () => void;\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class CustomChangeDetectorService {\r\n  private readonly _cacheCd = new Map<HTMLElement, detectChangeFn>();\r\n\r\n  /**\r\n   * Given an element, i will go up the parent node and look for the node of the\r\n   * Hosting component\r\n   * @param element\r\n   */\r\n  private _findDomHostingComponent(element: HTMLElement): HTMLElement | null {\r\n    let current: any = element;\r\n    while (current) {\r\n      if (current[CONTEXT_KEY] !== current.parentNode[CONTEXT_KEY]) {\r\n        return current.parentNode;\r\n      } else {\r\n        current = current.parentNode[CONTEXT_KEY];\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  /**\r\n   * Traverse the application views and search for the lview of the element\r\n   * you should send the dom element of the component\r\n   * @param element\r\n   */\r\n  private _findLView(\r\n    element: HTMLElement,\r\n    lview: Array<any>\r\n  ): Array<any> | null {\r\n    if (lview[0] === element) return lview;\r\n\r\n    for (let i = 0; i < lview.length; i++) {\r\n      const current = lview[i];\r\n      if (Array.isArray(current) && i !== PARENT_ID) {\r\n        const found = this._findLView(element, current);\r\n        if (found) return found;\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  /**\r\n   * did not find the component so will application tick\r\n   * @param element\r\n   */\r\n  private _failedCdFallback(element: HTMLElement) {\r\n    this._cacheCd.set(element, () => {\r\n      this._app.tick();\r\n    });\r\n    this._app.tick();\r\n  }\r\n\r\n  constructor(private _app: ApplicationRef) {}\r\n\r\n  /**\r\n   * given an element\r\n   * find the hosting component and call detect changes on the component\r\n   */\r\n  detectChanges(element: HTMLElement) {\r\n    // if cache provide the detect changes function then simply call it\r\n    const cachedCd = this._cacheCd.get(element);\r\n    if (cachedCd) {\r\n      return cachedCd();\r\n    }\r\n\r\n    // find hosting component dom element\r\n    const componentElement = this._findDomHostingComponent(element);\r\n    if (!componentElement) {\r\n      this._failedCdFallback(componentElement as any);\r\n    }\r\n\r\n    // get the lview of the component\r\n    let foundLView: any;\r\n    const views = (this._app as any)._views;\r\n    for (let i = 0; i < views.length; i++) {\r\n      const current = (views[i] as any)._lView;\r\n      foundLView = this._findLView(componentElement as any, current);\r\n      if (foundLView) break;\r\n    }\r\n    if (!foundLView) {\r\n      this._failedCdFallback(componentElement as any);\r\n    }\r\n\r\n    // get the component instance and context\r\n    const context = foundLView[CONTEXT];\r\n    if (!context) {\r\n      this._failedCdFallback(componentElement as any);\r\n    }\r\n\r\n    this._cacheCd.set(element, () => {\r\n      ɵdetectChanges(context);\r\n    });\r\n    ɵdetectChanges(context);\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CustomChangeDetectorService } from './changeDetector.service';\r\n\r\n@Injectable()\r\nexport class EventZonelessDetectChanges {\r\n  private _splitEvent(eventName: string): [string, string] {\r\n    const prefix = eventName.substring(0, 1);\r\n    const event = eventName.substring(1);\r\n    return [prefix, this.camelCase(event)];\r\n  }\r\n\r\n  constructor(private _cd: CustomChangeDetectorService) {}\r\n\r\n  supports(eventName: string): boolean {\r\n    return true;\r\n\r\n  }\r\n\r\n  addEventListener(\r\n    element: HTMLElement,\r\n    eventName: string,\r\n    handler: Function\r\n  ): Function {\r\n    const [_, event] = this._splitEvent(eventName);\r\n\r\n    const monkeyPatchHandler = (...args: any) => {\r\n      handler.apply(element, args);\r\n      this._cd.detectChanges(element);\r\n    };\r\n\r\n    element.addEventListener(\r\n      event,\r\n      monkeyPatchHandler as EventListener,\r\n      false\r\n    );\r\n    return () =>\r\n      this.removeEventListener(\r\n        element,\r\n        event,\r\n        monkeyPatchHandler as EventListener\r\n      );\r\n  }\r\n\r\n  removeEventListener(\r\n    target: any,\r\n    eventName: string,\r\n    callback: Function\r\n  ): void {\r\n    const [_, eventRealName] = this._splitEvent(eventName);\r\n    return target.removeEventListener(eventRealName, callback as EventListener);\r\n  }\r\n\r\n  camelCase(str: string): string {\r\n    return str\r\n      .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (word, index) {\r\n        return index === 0 ? word.toLowerCase() : word.toUpperCase();\r\n      })\r\n      .replace(/\\s+/g, '');\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { ZoneLessDirective } from './directive/zoneless.directive';\r\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\r\nimport { EventZonelessDetectChanges } from './services/EventZonelessDetectChanges.service';\r\nimport { AsyncPipeZoneless } from './pipes/custom-async.pipe';\r\n\r\n@NgModule({\r\n  declarations: [ZoneLessDirective, AsyncPipeZoneless],\r\n  exports: [ZoneLessDirective, AsyncPipeZoneless],\r\n  providers: [\r\n    {\r\n      provide: EVENT_MANAGER_PLUGINS,\r\n      multi: true,\r\n      useClass: EventZonelessDetectChanges,\r\n    }\r\n  ],\r\n})\r\nexport class ZonelessModule {}\r\n","/*\r\n * Public API Surface of zoneless-library\r\n */\r\n\r\n\r\nexport * from './lib/directive/zoneless.directive';\r\nexport * from './lib/pipes/custom-async.pipe';\r\nexport * from './lib/services/changeDetector.service';\r\nexport * from './lib/services/EventZonelessDetectChanges.service';\r\nexport * from './lib/zoneless.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CustomChangeDetectorService"],"mappings":"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"}