UNPKG

angular-busy2

Version:
1 lines 20.4 kB
{"version":3,"file":"angular-busy2.mjs","sources":["../../../projects/angular-busy2/src/lib/cgBusy.service.ts","../../../projects/angular-busy2/src/lib/cgBusy.component.ts","../../../projects/angular-busy2/src/lib/cgBusy.component.html","../../../projects/angular-busy2/src/lib/cgBusyDefaults.service.ts","../../../projects/angular-busy2/src/lib/cgBusy.directive.ts","../../../projects/angular-busy2/src/lib/cgBusy.module.ts","../../../projects/angular-busy2/src/public_api.ts","../../../projects/angular-busy2/src/angular-busy2.ts"],"sourcesContent":["import {effect, inject, Injector, isSignal} from '@angular/core';\nimport {finalize, Observable, Subscription} from 'rxjs';\n\nexport interface TrackerOptions {\n minDuration: number;\n delay: number;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n promises: any[];\n}\n\nexport class CgBusyService {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n promises: any[];\n subscriptions: Subscription[];\n delayPromise: number;\n durationPromise: number;\n minDuration: number;\n detectChanges: () => void | null;\n private injector = inject(Injector);\n\n constructor() {\n this.promises = [];\n this.subscriptions = [];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static isPromise(promiseThing: PromiseLike<any>): boolean {\n return promiseThing && (promiseThing instanceof Promise || promiseThing instanceof Observable || promiseThing instanceof Subscription || isSignal(promiseThing));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callThen(promiseThing: any, callback: () => void): void {\n if (promiseThing.finally) {\n promiseThing.finally(callback);\n } else if (promiseThing.then) {\n promiseThing.then(callback, callback);\n } else if (promiseThing instanceof Observable) {\n promiseThing.pipe(finalize(callback));\n } else if (promiseThing instanceof Subscription) {\n promiseThing.add(callback);\n } else if (isSignal(promiseThing)) {\n let init = true;\n const effectRef = effect(() => {\n const v = promiseThing();\n // ignore initial value if is undefined;\n if (init && v === undefined) {\n init = false;\n } else {\n callback();\n effectRef.destroy();\n }\n }, {injector: this.injector});\n } else {\n throw new Error('cgBusy expects a Promise ,an Observable, a Subscription, a number or a boolean');\n }\n }\n\n reset(options: TrackerOptions): void {\n this.minDuration = options.minDuration;\n\n this.promises = [];\n options.promises.forEach((p) => {\n if (!p || p.$cgBusyFulfilled) {\n return;\n }\n this.addPromiseLikeThing(p);\n });\n\n if (this.promises.length === 0) {\n // if we have no promises then don't do the delay or duration stuff\n return;\n }\n\n if (options.delay) {\n this.delayPromise = window.setTimeout(() => {\n this.delayPromise = null;\n if (this.detectChanges) {\n this.detectChanges();\n }\n this.createMinDuration(options);\n }, options.delay);\n } else {\n this.createMinDuration(options);\n }\n }\n\n createMinDuration(options: TrackerOptions): void {\n if (options.minDuration) {\n this.durationPromise = window.setTimeout(() => {\n this.durationPromise = null;\n if (this.detectChanges) {\n this.detectChanges();\n }\n }, options.minDuration);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n addPromiseLikeThing(promise: any): void {\n\n if (!CgBusyService.isPromise(promise)) {\n throw new Error('cgBusy expects a Promise ,an Observable, a Subscription, a Signal, a number or a boolean');\n }\n\n if (this.promises.indexOf(promise) !== -1) {\n return;\n }\n this.promises.push(promise);\n\n this.callThen(promise, () => {\n promise.$cgBusyFulfilled = true;\n if (this.promises.indexOf(promise) === -1) {\n return;\n }\n this.promises.splice(this.promises.indexOf(promise), 1);\n if (this.delayPromise && this.promises.length === 0) {\n clearTimeout(this.delayPromise);\n this.delayPromise = null;\n }\n if (this.detectChanges) {\n this.detectChanges();\n }\n });\n }\n\n active(): boolean {\n return !this.delayPromise && (!!this.durationPromise || this.promises.length > 0);\n }\n\n destroy(): void {\n if (this.delayPromise) {\n clearTimeout(this.delayPromise);\n this.delayPromise = null;\n }\n if (this.durationPromise) {\n clearTimeout(this.durationPromise);\n this.durationPromise = null;\n }\n this.promises = [];\n this.detectChanges = null;\n }\n}\n","import {NgTemplateOutlet} from '@angular/common';\nimport {Component, Input, ViewEncapsulation} from '@angular/core';\nimport type {CgBusyOptions} from './cgBusy.interface';\nimport {CgBusyService} from './cgBusy.service';\n\n@Component({\n templateUrl: './cgBusy.component.html',\n styleUrls: ['./cgBusy.component.css'],\n selector: 'cg-busy',\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet]\n})\nexport class CgBusyComponent {\n @Input() options: CgBusyOptions;\n @Input() tracker: CgBusyService;\n\n}\n","<div class=\"cg-busy cg-busy-animation {{options.wrapperClass}}\" [hidden]=\"!tracker.active()\">\n <div class=\"cg-busy-backdrop cg-busy-backdrop-animation\" [hidden]=\"!options.backdrop\"></div>\n <ng-container class=\"cg-busy-template\"\n [ngTemplateOutlet]=\"options.templateRef ? options.templateRef : defaultTemplate\"\n [ngTemplateOutletContext]=\"{options: options}\"></ng-container>\n</div>\n<ng-template #defaultTemplate>\n <div class=\"cg-busy-default-sign\">\n <div class=\"cg-busy-default-spinner\">\n <div class=\"bar1\"></div>\n <div class=\"bar2\"></div>\n <div class=\"bar3\"></div>\n <div class=\"bar4\"></div>\n <div class=\"bar5\"></div>\n <div class=\"bar6\"></div>\n <div class=\"bar7\"></div>\n <div class=\"bar8\"></div>\n <div class=\"bar9\"></div>\n <div class=\"bar10\"></div>\n <div class=\"bar11\"></div>\n <div class=\"bar12\"></div>\n </div>\n <div class=\"cg-busy-default-text\" [innerHtml]=\"options.message\"></div>\n </div>\n</ng-template>\n","import {Inject, Injectable, InjectionToken, TemplateRef} from '@angular/core';\nimport type {CgBusyOptions} from './cgBusy.interface';\n\nexport const BUSY_OPTIONS = new InjectionToken<CgBusyOptions>('BUSY_OPTIONS');\n\n@Injectable()\nexport class CgBusyDefaults implements CgBusyOptions {\n delay: number;\n minDuration: number;\n backdrop: boolean;\n message: string;\n wrapperClass: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n templateRef: TemplateRef<any>;\n\n constructor(@Inject(BUSY_OPTIONS) busyOptions?: CgBusyOptions) {\n\n if (!busyOptions) {\n busyOptions = {};\n }\n\n this.delay = busyOptions.delay || 0;\n this.minDuration = busyOptions.minDuration || 0;\n this.backdrop = busyOptions.backdrop !== undefined ? busyOptions.backdrop : true;\n this.message = busyOptions.message || 'Please Wait...';\n this.wrapperClass = busyOptions.wrapperClass || '';\n }\n}\n","import {ComponentRef, Directive, ElementRef, Input, OnChanges, OnDestroy, Renderer2, Signal, SimpleChanges, ViewContainerRef} from '@angular/core';\nimport {Observable, Subscription} from 'rxjs';\nimport {CgBusyComponent} from './cgBusy.component';\nimport type {CgBusyOptions} from './cgBusy.interface';\nimport {CgBusyService} from './cgBusy.service';\nimport {CgBusyDefaults} from './cgBusyDefaults.service';\n\n@Directive({selector: '[cgBusy]', standalone: true, exportAs: 'cgBusy'})\nexport class CgBusyDirective implements OnChanges, OnDestroy {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() cgBusy: boolean | number | Promise<any> | Subscription | Observable<any> | Signal<any> | (Promise<any> | Subscription | Observable<any> | Signal<any>)[];\n @Input() cgBusyConfig: CgBusyOptions;\n tracker: CgBusyService;\n fakePromise: Promise<void>;\n fakePromiseResolve: () => void;\n $options: CgBusyOptions;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n $promise: (Promise<any> | Subscription | Observable<any> | Signal<any>)[];\n componentRef: ComponentRef<CgBusyComponent>;\n\n constructor(private viewContainer: ViewContainerRef, private defaultOptions: CgBusyDefaults,\n private renderer: Renderer2, private el: ElementRef) {\n this.$options = {...this.defaultOptions};\n this.$promise = [];\n this.renderer.setStyle(this.el.nativeElement.parentNode, 'position', 'relative');\n this.componentRef = this.viewContainer.createComponent(CgBusyComponent);\n this.tracker = new CgBusyService();\n this.tracker.detectChanges = () => this.componentRef.changeDetectorRef.detectChanges();\n this.componentRef.instance.tracker = this.tracker;\n this.componentRef.instance.options = this.$options;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.cgBusyConfig) {\n this.$options = {\n ...this.defaultOptions,\n ...this.$options,\n ...this.cgBusyConfig\n };\n this.componentRef.instance.options = this.$options;\n }\n if (changes.cgBusy) {\n if (this.fakePromise) {\n this.fakePromiseResolve();\n this.fakePromise = undefined;\n this.fakePromiseResolve = undefined;\n }\n\n if (Number.isFinite(this.cgBusy) || this.cgBusy === true || this.cgBusy === false) {\n this.fakePromise = new Promise((resolve) => {\n this.fakePromiseResolve = resolve;\n if (!this.cgBusy) {\n resolve();\n }\n });\n this.$promise = [this.fakePromise];\n } else if (Array.isArray(this.cgBusy)) {\n this.$promise = this.cgBusy;\n } else {\n // @ts-ignore\n this.$promise = [this.cgBusy];\n }\n }\n this.tracker.reset({\n promises: this.$promise,\n delay: this.$options.delay || 0,\n minDuration: this.$options.minDuration || 0\n });\n }\n\n ngOnDestroy(): void {\n this.tracker.destroy();\n delete this.tracker;\n this.componentRef.destroy();\n delete this.componentRef;\n this.$promise = [];\n this.fakePromise = undefined;\n this.fakePromiseResolve = undefined;\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CgBusyDirective } from './cgBusy.directive';\nimport { CgBusyOptions } from './cgBusy.interface';\nimport { BUSY_OPTIONS, CgBusyDefaults } from './cgBusyDefaults.service';\n\nexport function cgBusyDefaultsFactory(busyOptions?: CgBusyOptions): CgBusyDefaults {\n return new CgBusyDefaults(busyOptions);\n}\n\n@NgModule({\n imports: [CgBusyDirective],\n exports: [CgBusyDirective]\n})\nexport class CgBusyModule {\n static forRoot(busyOptions?: CgBusyOptions): ModuleWithProviders<CgBusyModule> {\n return {\n ngModule: CgBusyModule,\n providers: [\n {\n provide: CgBusyDefaults,\n useFactory: cgBusyDefaultsFactory,\n deps: [BUSY_OPTIONS]\n },\n {\n provide: BUSY_OPTIONS,\n useValue: busyOptions\n }\n ]\n };\n }\n}\n","/*\n * Public API Surface of angular-busy2\n */\n\nexport type {CgBusyOptions} from './lib/cgBusy.interface';\nexport {CgBusyModule} from './lib/cgBusy.module';\nexport {CgBusyDefaults} from './lib/cgBusyDefaults.service';\nexport {CgBusyDirective} from './lib/cgBusy.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.CgBusyDefaults"],"mappings":"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"}