{"version":3,"file":"code-workers.io-ngx-block-ui.mjs","sources":["../../../../libs/ngx-block-ui/src/lib/core/constants/block-ui-default-name.constant.ts","../../../../libs/ngx-block-ui/src/lib/core/constants/block-ui-actions.constant.ts","../../../../libs/ngx-block-ui/src/lib/core/services/block-ui-instance.service.ts","../../../../libs/ngx-block-ui/src/lib/core/components/block-ui-content/block-ui-content.component.template.ts","../../../../libs/ngx-block-ui/src/lib/core/components/block-ui-content/block-ui-content.component.ts","../../../../libs/ngx-block-ui/src/lib/core/components/block-ui/block-ui.component.ts","../../../../libs/ngx-block-ui/src/lib/core/services/block-ui.service.ts","../../../../libs/ngx-block-ui/src/lib/core/directives/block-ui.directive.ts","../../../../libs/ngx-block-ui/src/lib/ngx-block-ui.module.ts","../../../../libs/ngx-block-ui/src/lib/core/decorators/block-ui.decorator.ts","../../../../libs/ngx-block-ui/src/index.ts","../../../../libs/ngx-block-ui/src/code-workers.io-ngx-block-ui.ts"],"sourcesContent":["export const BLOCKUI_DEFAULT: string = 'block-ui-main';\n","export class BlockUIActions {\n  static START = 'start';\n  static STOP = 'stop';\n  static UPDATE = 'update';\n  static RESET = 'reset';\n  static RESET_GLOBAL = 'reset_global';\n  static UNSUBSCRIBE = 'unsubscribe';\n}","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { BlockUIActions } from '../constants/block-ui-actions.constant';\nimport { BLOCKUI_DEFAULT } from '../constants/block-ui-default-name.constant';\nimport { NgBlockUI } from '../models/block-ui.model';\nimport { BlockUISettings } from '../models/block-ui-settings.model';\nimport { BlockUIEvent } from '../models/block-ui-event.model';\n\n\n@Injectable()\nexport class BlockUIInstanceService {\n  blockUISettings: BlockUISettings | any = {};\n  blockUIInstances: any = {};\n  private blockUISubject: ReplaySubject<any> = new ReplaySubject(1);\n  blockUIObservable$: Observable<any> = this.blockUISubject.asObservable();\n\n  constructor() {\n    this.blockUIObservable$.subscribe(this.blockUIMiddleware.bind(this));\n  }\n\n  getSettings(): BlockUISettings | any {\n    return this.blockUISettings;\n  }\n\n  updateSettings(settings: BlockUISettings | any = {}): void {\n    this.blockUISettings = { ...this.blockUISettings, ...settings };\n  }\n\n  decorate(name: string = BLOCKUI_DEFAULT): NgBlockUI {\n    const blockUI = {\n      name,\n      isActive: false,\n      blockCount: 0,\n      start: this.dispatch(this.blockUISubject, BlockUIActions.START, name),\n      update: this.dispatch(this.blockUISubject, BlockUIActions.UPDATE, name),\n      stop: this.dispatch(this.blockUISubject, BlockUIActions.STOP, name),\n      reset: this.dispatch(this.blockUISubject, BlockUIActions.RESET, name),\n      resetGlobal: this.dispatch(this.blockUISubject, BlockUIActions.RESET_GLOBAL, name),\n      unsubscribe: this.dispatch(this.blockUISubject, BlockUIActions.UNSUBSCRIBE, name)\n    } as NgBlockUI;\n\n    this.blockUIInstances[name] = this.blockUIInstances[name] || blockUI;\n\n    return blockUI;\n  }\n\n  observe(): Observable<any> {\n    return this.blockUIObservable$;\n  }\n\n  clearInstance(instanceName: string) {\n    this.dispatch(this.blockUISubject, BlockUIActions.RESET, instanceName);\n  }\n\n  private blockUIMiddleware({ action, name }: BlockUIEvent): void {\n    let isActive: boolean | null = null;\n\n    switch (action) {\n      case (BlockUIActions.START):\n        isActive = true;\n        break;\n\n      case (BlockUIActions.STOP):\n      case (BlockUIActions.RESET):\n        isActive = false;\n        break;\n    }\n\n    if (isActive !== null) {\n      this.blockUIInstances[name].isActive = isActive;\n    }\n  }\n\n  private dispatch(subject: ReplaySubject<any>, action: BlockUIActions, name: string = BLOCKUI_DEFAULT): (message?: any) => void {\n    return (message?: any): void => {\n      subject.next({\n        name,\n        action,\n        message\n      });\n    };\n  }\n}\n","export const template = `\n<div class=\"block-ui-wrapper {{name}} {{className}}\" [ngClass]=\"{ 'active': state.blockCount > 0 }\">\n  <div class=\"block-ui-spinner\" *ngIf=\"!templateCmp\">\n    <div class=\"loader\"></div>\n    <div *ngIf=\"message || defaultMessage\" class=\"message\">\n      {{ message || defaultMessage }}\n    </div>\n  </div>\n  <ng-template *ngIf=\"templateCmp\" #templateOutlet></ng-template>\n</div>\n`;\n","import {\n  Component,\n  OnInit,\n  AfterViewInit,\n  AfterViewChecked,\n  OnDestroy,\n  ViewEncapsulation,\n  Input,\n  ViewChild,\n  ComponentRef,\n  TemplateRef,\n  ComponentFactoryResolver,\n  ViewContainerRef,\n  ChangeDetectorRef\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { BlockUIInstanceService } from '../../services/block-ui-instance.service';\nimport { BlockUIEvent } from '../../models/block-ui-event.model';\nimport { BlockUIActions } from '../../constants/block-ui-actions.constant';\nimport { BLOCKUI_DEFAULT } from '../../constants/block-ui-default-name.constant';\nimport { styles } from './block-ui-content.component.style';\nimport { template } from './block-ui-content.component.template';\nimport { BlockUISettings } from '../../models/block-ui-settings.model';\n\nexport type BlockState = {\n  startTimeouts: Array<any>;\n  stopTimeouts: Array<any>;\n  updateTimeouts: Array<any>;\n  blockCount: number;\n  startCallCount: number;\n  stopCallCount: number;\n};\n\n@Component({\n  selector: 'block-ui-content',\n  template: template,\n  styles: [styles], // TODO: Find how to bundle styles for npm\n  encapsulation: ViewEncapsulation.None\n})\nexport class BlockUIContentComponent implements OnInit, AfterViewInit, AfterViewChecked, OnDestroy {\n  @Input() name: string = BLOCKUI_DEFAULT;\n  @Input() delayStart: number | undefined;\n  @Input() delayStop: number | undefined;\n  @Input('message') defaultMessage: string | undefined;\n  @Input('template') templateCmp: any;\n  @ViewChild('templateOutlet', { read: ViewContainerRef })\n  templateOutlet: ViewContainerRef | undefined;\n\n  defaultBlockState: BlockState = {\n    startTimeouts: [],\n    stopTimeouts: [],\n    updateTimeouts: [],\n    blockCount: 0,\n    startCallCount: 0,\n    stopCallCount: 0\n  };\n  state: BlockState = { ...this.defaultBlockState };\n  className: string | undefined;\n  templateCompRef: ComponentRef<{ message?: any; }> | TemplateRef<unknown> | undefined;\n  message: any;\n\n  private blockUISubscription!: Subscription\n  private settings: BlockUISettings | undefined;\n\n  constructor(\n    private blockUI: BlockUIInstanceService,\n    private resolver: ComponentFactoryResolver,\n    private changeDetectionRef: ChangeDetectorRef\n  ) { }\n\n  ngOnInit() {\n    this.settings = this.blockUI.getSettings();\n    this.blockUISubscription = this.subscribeToBlockUI(this.blockUI.observe());\n  }\n\n  ngAfterViewInit() {\n    try {\n      if (!this.templateCmp) {\n        return;\n      }\n\n      if (this.templateCmp instanceof TemplateRef) {\n        this.templateOutlet?.createEmbeddedView(this.templateCmp);\n      } else {\n        const templateComp = this.resolver.resolveComponentFactory(this.templateCmp);\n        // @ts-ignore\n        this.templateCompRef = this.templateOutlet.createComponent(templateComp);\n        this.updateBlockTemplate(this.message);\n      }\n    } catch (error) {\n      console.error('ng-block-ui:', error);\n    }\n  }\n\n  ngAfterViewChecked() {\n    this.detectChanges();\n  }\n\n  private subscribeToBlockUI(blockUI$: Observable<any>): Subscription {\n    return blockUI$.subscribe(event => this.onDispatchedEvent(event));\n  }\n\n  private onDispatchedEvent(event: BlockUIEvent) {\n    switch (event.action) {\n      case BlockUIActions.START:\n        this.onStart(event);\n        break;\n\n      case BlockUIActions.STOP:\n        this.onStop(event);\n        break;\n\n      case BlockUIActions.UPDATE:\n        this.onUpdate(event);\n        break;\n\n      case BlockUIActions.RESET:\n        this.onReset(event);\n        break;\n\n      case BlockUIActions.RESET_GLOBAL:\n        this.resetState();\n        break;\n\n      case BlockUIActions.UNSUBSCRIBE:\n        this.onStop(event);\n        this.onUnsubscribe(event.name);\n        break;\n    }\n  }\n\n  private onStart({ name, message }: BlockUIEvent) {\n    if (name === this.name) {\n      const delay = this.delayStart ?? this.settings?.delayStart ?? 0;\n\n      this.state.startCallCount += 1;\n      const startTimeout = setTimeout(() => {\n        this.state.blockCount += 1;\n        this.showBlock(message);\n        this.updateInstanceBlockCount();\n      }, delay);\n      this.state.startTimeouts.push(startTimeout);\n    }\n  }\n\n  private onStop({ name }: BlockUIEvent) {\n    if (name === this.name) {\n      const stopCount = this.state.stopCallCount + 1;\n\n      if (this.state.startCallCount - stopCount >= 0) {\n        const delay = this.delayStop ?? this.settings?.delayStop ?? 0;\n\n        this.state.stopCallCount = stopCount;\n        const stopTimeout = setTimeout(() => {\n          this.state.blockCount -= 1;\n          this.updateInstanceBlockCount();\n          this.detectChanges();\n        }, delay);\n        this.state.stopTimeouts.push(stopTimeout);\n      }\n    }\n  }\n\n  private onUpdate({ name, message }: BlockUIEvent) {\n    if (name === this.name) {\n      const delay = this.delayStart || this.settings?.delayStart || 0;\n\n      clearTimeout(this.state.updateTimeouts[0]);\n      const updateTimeout = setTimeout(() => {\n        this.updateMessage(message);\n      }, delay);\n      this.state.updateTimeouts.push(updateTimeout);\n    }\n  }\n\n  private onReset({ name }: BlockUIEvent) {\n    if (name === this.name) {\n      this.resetState();\n    }\n  }\n\n  private updateMessage(message: string) {\n    this.showBlock(message);\n  }\n\n  private showBlock(message: any) {\n    this.message = message || this.defaultMessage || this.settings?.message;\n    this.updateBlockTemplate(this.message);\n    this.detectChanges();\n  }\n\n  private updateBlockTemplate(msg: any): void {\n    if (this.templateCompRef && this.templateCompRef instanceof ComponentRef) {\n      this.templateCompRef.instance.message = msg;\n    }\n  }\n\n  private resetState() {\n    [\n      ...this.state.startTimeouts,\n      ...this.state.stopTimeouts,\n      ...this.state.updateTimeouts\n    ].forEach(clearTimeout);\n    this.state = { ...this.defaultBlockState };\n    this.updateInstanceBlockCount();\n    this.detectChanges();\n  }\n\n  private onUnsubscribe(name: string) {\n    if (this.blockUISubscription && name === this.name) {\n      this.blockUISubscription.unsubscribe();\n    }\n  }\n\n  private updateInstanceBlockCount() {\n    if (this.blockUI.blockUIInstances[this.name]) {\n      const { blockCount } = this.state;\n      this.blockUI.blockUIInstances[this.name].blockCount = blockCount;\n    }\n  }\n\n  private detectChanges() {\n    // @ts-ignore\n    if (!this.changeDetectionRef['destroyed']) {\n      this.changeDetectionRef.detectChanges();\n    }\n  }\n\n  ngOnDestroy() {\n    this.resetState();\n    this.onUnsubscribe(this.name);\n    this.blockUI.clearInstance(this.name);\n  }\n}\n","import {\n  Component,\n  Input,\n  ViewEncapsulation,\n  OnInit,\n  ComponentRef\n} from '@angular/core';\nimport { BlockUIInstanceService } from '../../services/block-ui-instance.service';\nimport { BLOCKUI_DEFAULT } from '../../constants/block-ui-default-name.constant';\n\n@Component({\n  selector: 'block-ui',\n  template: `\n    <ng-content></ng-content>\n    <block-ui-content\n      [name]=\"name\"\n      [message]=\"message\"\n      [template]=\"template\"\n      [delayStart]=\"delayStart\"\n      [delayStop]=\"delayStop\"\n    >\n    </block-ui-content>\n  `,\n  encapsulation: ViewEncapsulation.None\n})\nexport class BlockUIComponent implements OnInit {\n  @Input() name!: string;\n  @Input() message: any;\n  @Input() delayStart: number | undefined;\n  @Input() delayStop: number | undefined;\n  @Input() template: any;\n\n  constructor(\n    private blockUI: BlockUIInstanceService,\n  ) { }\n\n  ngOnInit() {\n    this.name = this.name || BLOCKUI_DEFAULT;\n    this.template = this.template || this.blockUI.blockUISettings.template;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BlockUIActions } from '../constants/block-ui-actions.constant';\nimport { BlockUIInstanceService } from './block-ui-instance.service';\nimport { NgBlockUI } from '../models/block-ui.model';\n\n\n@Injectable()\nexport class BlockUIService {\n  globalDispatch: NgBlockUI = this.blockUIInstance.decorate();\n\n  constructor(\n    private blockUIInstance: BlockUIInstanceService\n  ) { }\n\n  /**\n  * Starts blocking for given BlockUI instance or instances\n  */\n  start(target: string | string[], message?: any): void {\n    this.dispatch(target, BlockUIActions.START, message);\n  }\n\n  /**\n  * Stops blocking for given BlockUI instance or instances\n  */\n  stop(target: string | string[]): void {\n    this.dispatch(target, BlockUIActions.STOP);\n  }\n\n  /**\n  * Reset blocking for given BlockUI instance or instances\n  */\n  reset(target: string | string[]): void {\n    this.dispatch(target, BlockUIActions.RESET);\n  }\n\n  /**\n  * Reset blocking for all BlockUI instances\n  */\n  resetGlobal(): void {\n    this.globalDispatch.resetGlobal();\n  }\n\n  /**\n  * Updates message for given BlockUI instance or instances\n  */\n  update(target: string | string[], message?: any): void {\n    this.dispatch(target, BlockUIActions.UPDATE, message);\n  }\n\n  /**\n  * Unsubscribes for given BlockUI instance or instances\n  */\n  unsubscribe(target: string | string[]): void {\n    this.dispatch(target, BlockUIActions.UNSUBSCRIBE);\n  }\n\n  /**\n  * Checks if BlockUI is actively blocking\n  */\n  isActive(target: string | string[] | null = null): boolean {\n    const targets = target ? this.toArray(target) : null;\n    const instances = this.blockUIInstance.blockUIInstances;\n\n    return Object.keys(instances).some((key: string) => {\n      if (!targets) {\n        return instances[key].isActive;\n      }\n\n      return targets.indexOf(instances[key].name) >= 0 && instances[key].isActive;\n    });\n  }\n\n  private dispatch(target: string | string[] = [], type: string, message?: any) {\n    const instances = this.toArray(target);\n    instances.forEach(i => this.blockUIInstance.decorate(i)[type](message));\n  }\n\n  private toArray(target: string | string[] = []) {\n    return typeof target === 'string' ? [target] : target;\n  }\n}\n","import {\n  Directive,\n  Input,\n  OnInit,\n  OnDestroy,\n  ComponentRef,\n  ComponentFactoryResolver,\n  ViewContainerRef,\n  TemplateRef,\n  Renderer2,\n  EmbeddedViewRef\n} from '@angular/core';\nimport { BlockUIContentComponent } from '../components/block-ui-content/block-ui-content.component';\nimport { BlockUIInstanceService } from '../services/block-ui-instance.service';\nimport { BLOCKUI_DEFAULT } from '../constants/block-ui-default-name.constant';\nimport { BlockUIService } from '../services/block-ui.service';\n\n@Directive({ selector: '[blockUI]' })\nexport class BlockUIDirective implements OnInit, OnDestroy {\n  private blockUIComponentRef: ComponentRef<BlockUIContentComponent> | undefined;\n  blockTarget!: string;\n  message: any;\n  template: any;\n  delayStart: any;\n  delayStop: any;\n\n  @Input()\n  set blockUI(name: any) { this.blockTarget = name; }\n  @Input()\n  set blockUIMessage(message: any) { this.message = message; }\n  @Input()\n  set blockUITemplate(template: any) { this.template = template; }\n  @Input()\n  set blockUIDelayStart(delayStart: any) {\n    this.delayStart = delayStart ? Number(delayStart) : null;\n  }\n  @Input()\n  set blockUIDelayStop(delayStop: any) {\n    this.delayStop = delayStop ? Number(delayStop) : null;\n  }\n\n  constructor(\n    private blockUIService: BlockUIService,\n    private blockUIInstanceService: BlockUIInstanceService,\n    private viewRef: ViewContainerRef,\n    private templateRef: TemplateRef<any>,\n    private renderer: Renderer2,\n    private componentFactoryResolver: ComponentFactoryResolver\n  ) { }\n\n  ngOnInit() {\n    try {\n      this.viewRef.createEmbeddedView(this.templateRef);\n      const parentElement = this.getParentElement();\n\n      if (parentElement && !this.isComponentInTemplate(parentElement)) {\n        this.renderer.addClass(parentElement, 'block-ui__element');\n        this.blockUIComponentRef = this.createComponent();\n        const blockUIContent = this.findContentNode(this.viewRef.element.nativeElement);\n\n        if (blockUIContent) {\n          const settings = this.blockUIInstanceService.getSettings();\n\n          parentElement.appendChild(blockUIContent);\n          this.blockUIComponentRef.instance.className = 'block-ui-wrapper--element';\n          this.blockUIComponentRef.instance.name = this.blockTarget || BLOCKUI_DEFAULT;\n          if (this.message) this.blockUIComponentRef.instance.defaultMessage = this.message;\n          if (this.delayStart) this.blockUIComponentRef.instance.delayStart = this.delayStart;\n          if (this.delayStop) this.blockUIComponentRef.instance.delayStop = this.delayStop;\n          if (this.template || settings.template)\n            this.blockUIComponentRef.instance.templateCmp = this.template || settings.template;\n        }\n      }\n    } catch (error) {\n      console.error('ng-block-ui:', error);\n    }\n  }\n\n  private isComponentInTemplate(element: any): boolean {\n    // Needed because of https://github.com/microsoft/TypeScript/issues/26235\n    const targetElement = element || {};\n    let { children } = targetElement;\n    children = Array.from(children || []).reverse();\n    return children.some((el: any) => el && el.localName === 'block-ui');\n  }\n\n  private getParentElement(): Element {\n    const embeddedView = this.viewRef.get(0) as EmbeddedViewRef<any>;\n\n    return embeddedView.rootNodes[0];\n\n  }\n\n  // Needed for IE (#17)\n  private findContentNode(element: any) {\n    const nextSibling = element.nextSibling || {};\n    const previousSibling = element.previousSibling || {};\n\n    return [\n      nextSibling,\n      nextSibling.nextSibling,\n      previousSibling,\n      previousSibling.previousSibling\n    ].find((e) => e && e.localName === 'block-ui-content');\n  }\n\n  private createComponent() {\n    const resolvedBlockUIComponent = this.componentFactoryResolver.resolveComponentFactory(BlockUIContentComponent);\n    return this.viewRef.createComponent(resolvedBlockUIComponent);\n  }\n\n  ngOnDestroy() {\n    if (this.blockTarget) {\n      this.blockUIService.reset(this.blockTarget);\n    }\n  }\n}\n","import { NgModule, ModuleWithProviders, InjectionToken } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BlockUIComponent } from './core/components/block-ui/block-ui.component';\nimport { BlockUIContentComponent } from './core/components/block-ui-content/block-ui-content.component';\nimport { BlockUIInstanceService } from './core/services/block-ui-instance.service';\nimport { BlockUIService } from './core/services/block-ui.service';\nimport { BlockUIDirective } from './core/directives/block-ui.directive';\nimport { BlockUISettings } from './core/models/block-ui-settings.model';\n\nexport const BlockUIServiceInstance = new BlockUIInstanceService();\n\n// Needed for AOT compiling\nexport const BlockUIModuleSettings = new InjectionToken<string>(\n  'BlockUIModuleSettings'\n);\n\nexport function provideInstance(\n  settings: BlockUISettings\n): BlockUIInstanceService {\n  BlockUIServiceInstance.updateSettings(settings);\n  return BlockUIServiceInstance;\n}\n\n@NgModule({\n  imports: [CommonModule],\n  entryComponents: [BlockUIComponent, BlockUIContentComponent],\n  declarations: [BlockUIComponent, BlockUIDirective, BlockUIContentComponent],\n  exports: [BlockUIComponent, BlockUIDirective, BlockUIContentComponent],\n})\nexport class NgxBlockUiModule {\n  public static forRoot(\n    settings: BlockUISettings = {}\n  ): ModuleWithProviders<NgxBlockUiModule> {\n    return {\n      ngModule: NgxBlockUiModule,\n      providers: [\n        {\n          provide: BlockUIModuleSettings,\n          useValue: settings,\n        },\n        {\n          provide: BlockUIInstanceService,\n          useFactory: provideInstance,\n          deps: [BlockUIModuleSettings],\n        },\n        BlockUIService,\n      ],\n    };\n  }\n}\n","\nimport { BlockUIDecoratorSettings } from '../models/block-ui-decorator-settings.model';\nimport {BlockUIServiceInstance} from \"../../ngx-block-ui.module\";\n\nexport let blockInstanceGuid = 1;\n\nexport function BlockUI(blockName?: string, settings: BlockUIDecoratorSettings = {}) {\n  if (!settings.scopeToInstance) {\n    return function (target?: any, propertyKey?: string) {\n      target[propertyKey ?? ''] = BlockUIServiceInstance.decorate(blockName);\n    };\n  }\n\n\n  return function (target?: any, key?: string) {\n    const secret = `_${key}-block-ui`;\n\n    Object.defineProperty(target, key ?? '', {\n      get: function () {\n        if (this[secret]) {\n          return this[secret];\n        }\n\n        const instanceName = `${blockName}-${blockInstanceGuid++}`;\n        this[secret] = BlockUIServiceInstance.decorate(instanceName);\n\n        return this[secret];\n      },\n      set: function (value: any) {\n        this[secret] = value;\n      },\n    });\n  };\n}\n","export * from './lib/ngx-block-ui.module';\nexport * from './lib/core/components/block-ui/block-ui.component';\nexport * from './lib/core/components/block-ui-content/block-ui-content.component';\nexport * from './lib/core/decorators/block-ui.decorator';\nexport * from './lib/core/models/block-ui.model';\nexport * from './lib/core/models/block-ui-http-settings.model';\nexport * from './lib/core/services/block-ui.service';\nexport * from './lib/core/constants/block-ui-default-name.constant';\nexport * from './lib/core/directives/block-ui.directive';\n\n//import { BlockUIDefaultName as BLOCKUI_DEFAULT } from './constants/block-ui-default-name.constant';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.BlockUIInstanceService","i2.BlockUIContentComponent","i1.BlockUIService","i2.BlockUIInstanceService"],"mappings":"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"}