{"version":3,"file":"bootkit-ng1-utils.mjs","sources":["../../../projects/ng1/utils/counter.ts","../../../projects/ng1/utils/style-manager.ts","../../../projects/ng1/utils/bootkit-ng1-utils.ts"],"sourcesContent":["\nimport { signal } from '@angular/core';\nimport { animationFrameScheduler, interval, map, Subscription, takeWhile } from 'rxjs';\n\n/**\n * Easing function type definition.\n */\nexport type EasingFn = (t: number) => number;\n\n/**\n * A counter that animates a numeric value from a start to an end value over a specified duration using an easing function.\n */\nexport class Counter {\n  private _subscription?: Subscription;\n  public readonly value = signal(0);\n  public readonly running = signal(false);\n  public readonly easing: EasingFn;\n\n  constructor(\n    public readonly from: number,\n    public readonly to: number,\n    public readonly duration = 1000,\n    easing?: EasingFn,\n    currentValue?: number) {\n\n    if (to < from || duration <= 0) {\n      throw new Error('Invalid params');\n    }\n\n    this.easing = easing ?? easingFunctions.linear;\n    this.value.set(currentValue != null ? currentValue : this.from);\n  }\n\n  /**\n   * Resets the counter and starts it.\n   * This method should be called in a browser environment.\n   * @returns void\n   */\n  public start() {\n    if (this.running()) return;\n\n    this.value.set(this.from);\n    this.running.set(true);\n\n    const startTime = performance.now();\n    const from = this.from;\n    const change = this.to - this.from;\n\n    this._subscription = interval(0, animationFrameScheduler)\n      .pipe(\n        map(() => performance.now() - startTime),\n        takeWhile(time => time <= this.duration, true),\n        map(elapsed => {\n          const t = Math.min(1, elapsed / this.duration);\n          return from + change * this.easing(t);\n        })\n      )\n      .subscribe({\n        next: val => this.value.set(val),\n        complete: () => {\n          this.running.set(false)\n        }\n      });\n  }\n\n  /**\n   * Stops the counter animation.\n   */\n  public stop() {\n    this._subscription?.unsubscribe();\n    this.running.set(false);\n  }\n}\n\n/**\n * A collection of common easing functions for animations.\n */\nexport const easingFunctions = {\n  linear: (t: number) => t,\n  easeIn: (t: number) => t * t,\n  easeOut: (t: number) => t * (2 - t),\n  easeInOut: (t: number) => t < 0.5 ? (2 * t * t) : (-1 + (4 - 2 * t) * t),\n  smooth: (t: number) => t * t * (3 - 2 * t),\n  // smoother: (t: number) => t * t * t * (t * (6 - 15 * t) + 10)\n};","import { Injectable, RendererFactory2, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class StyleManager {\n  private readonly _rendererFactory = inject(RendererFactory2);\n  private readonly _document: Document = inject(DOCUMENT);\n  private readonly _renderer = this._rendererFactory.createRenderer(null, null);\n  private readonly _loadedStyles = new Map<string, HTMLLinkElement>();\n\n  /**\n   * Loads a CSS\n   * @param url \n   * @returns Promise<HTMLLinkElement>\n   */\n  public load(url: string): Promise<HTMLLinkElement> {\n    return new Promise<HTMLLinkElement>((resolve, reject) => {\n\n      if (this._loadedStyles.has(url)) {\n        return resolve(this._loadedStyles.get(url)!);\n      }\n\n      const elm = this._renderer.createElement('link');\n      elm.rel = 'stylesheet';\n      elm.href = url;\n\n      elm.onload = (res: any) => {\n        this._loadedStyles.set(url, elm);\n        return resolve(elm);\n      }\n\n      this._document.head.append(elm);\n    });\n  }\n\n  /**\n   * Unloads a CSS from the DOM\n   * @param url \n   * @returns void\n   */\n  public unload(url: string): void {\n    this._document.head.childNodes.forEach(x => {\n      // if(x.nodeName)\n    });\n  }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}