{"version":3,"file":"vakhramoff-angular-utils.mjs","sources":["../../../projects/angular-utils/src/lib/services/event-bus/event-bus.service.ts","../../../projects/angular-utils/src/lib/decorators/http-error-handler.decorator.ts","../../../projects/angular-utils/src/lib/directives/cursor/cursor.directive.ts","../../../projects/angular-utils/src/lib/directives/debounce-time/debounce-time.directive.ts","../../../projects/angular-utils/src/lib/pipes/to-locale-string/to-locale-string.pipe.ts","../../../projects/angular-utils/src/lib/injection-tokens/window.injection-token.ts","../../../projects/angular-utils/src/lib/injection-tokens/local-storage.injection-token.ts","../../../projects/angular-utils/src/lib/injection-tokens/session-storage.injection-token.ts","../../../projects/angular-utils/src/public-api.ts","../../../projects/angular-utils/src/vakhramoff-angular-utils.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { BusEvent } from './bus-event.type';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class EventBusService {\n  private eventBus$ = new Subject<BusEvent>();\n\n  /**\n   * Subscribe for event\n   * @param type (EventType) Тип события\n   */\n  public on<P = any>(type: string): Observable<P> {\n    return this.eventBus$.pipe(\n      filter((event) => event.type === type),\n      map((event) => event.payload)\n    );\n  }\n\n  /**\n   * Emit new event\n   * @param event (BusEvent) Событие\n   */\n  public emit<P = any>(event: BusEvent<P>): void {\n    this.eventBus$.next(event);\n  }\n}\n","import { HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\n/**\n * TypeScript Decorator @HandleHttpErrors()\n * Must be applied to methods which return Observable\n * @param showAlert=true Show browser alert with error text\n * @description Allows to catch HTTP-request errors in Observables\n *              Shows error in console and in browser alerts\n */\nexport function HandleHttpErrors(showAlert: boolean = true): MethodDecorator {\n  return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n    const originalFunction = descriptor.value;\n\n    descriptor.value = function decoratedFunction(): Observable<\n      HttpResponse<any> | HttpErrorResponse\n    > {\n      const result = originalFunction.apply(this, arguments);\n\n      if (result instanceof Observable) {\n        return result.pipe(\n          catchError((error: HttpErrorResponse) => {\n            const errorTitle = error.status ?? 'HTTP Request Error';\n            const errorText = error.message ?? 'unknown error';\n            const errorMessage = `${errorTitle}: ${errorText}`;\n\n            if (showAlert) {\n              alert(errorMessage);\n            }\n\n            console.error('HTTP Error: ', error);\n\n            throw error;\n          })\n        );\n      } else {\n        throw new Error(\n          `The @HandleHttpErrors() decorator must be applied only to methods which return Observable!`\n        );\n      }\n    };\n  };\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\nimport { TCursorType } from './cursor.type';\n\n@Directive({\n  selector: '[cursor]',\n  standalone: true,\n})\nexport class CursorDirective {\n  @Input()\n  cursor?: TCursorType = 'auto';\n\n  @HostBinding('style.cursor')\n  get currentCursor() {\n    return this.cursor;\n  }\n}\n","import {\n  Directive,\n  Input,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\n\n@Directive({\n  selector: '[debounceTime]',\n  standalone: true,\n})\nexport class DebounceTimeDirective implements OnChanges, OnDestroy {\n  private timeoutId?: number;\n\n  @Input()\n  debounceTime = 0;\n\n  constructor(\n    private templateRef: TemplateRef<any>,\n    private viewContainerRef: ViewContainerRef\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('debounceTime' in changes) {\n      this.clearTimer();\n      this.createTimer(this.debounceTime);\n    }\n  }\n\n  ngOnDestroy() {\n    this.clearTimer();\n  }\n\n  private createTimer(ms: number) {\n    this.timeoutId = setTimeout(() => {\n      this.viewContainerRef.createEmbeddedView(this.templateRef);\n    }, ms);\n  }\n\n  private clearTimer() {\n    clearTimeout(this.timeoutId);\n    this.viewContainerRef.clear();\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'toLocaleString',\n  standalone: true,\n})\nexport class ToLocaleStringPipe<T> implements PipeTransform {\n  transform<T>(value: T): string | T {\n    return value?.toLocaleString() ?? value;\n  }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const WINDOW = new InjectionToken<Window>('Window Object', {\n  factory: () => window\n});\n","import { inject, InjectionToken } from \"@angular/core\";\nimport { WINDOW } from \"./window.injection-token\";\n\nexport const LOCAL_STORAGE = new InjectionToken<Storage>('Local Storage Object', {\n  factory: () => inject(WINDOW).localStorage\n});\n","import { inject, InjectionToken } from \"@angular/core\";\nimport { WINDOW } from \"./window.injection-token\";\n\nexport const SESSION_STORAGE = new InjectionToken<Storage>('Session Storage Object', {\n  factory: () => inject(WINDOW).sessionStorage\n});\n","/*\n * Public API Surface of angular-utils\n */\n\n/** [SERVICES] */\nexport * from './lib/services/';\n\n/** [DECORATORS] */\nexport * from './lib/decorators/';\n\n/** [DIRECTIVES] */\nexport * from './lib/directives/';\n\n/** [PIPES] */\nexport * from './lib/pipes/';\n\n/** [INJECTION TOKENS] */\nexport * from './lib/injection-tokens/';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}