{"version":3,"file":"matheo-datasource.mjs","sources":["../../../../libs/datasource/src/lib/messages.ts","../../../../libs/datasource/src/lib/datasource-config.ts","../../../../libs/datasource/src/lib/datasource-intl.ts","../../../../libs/datasource/src/lib/datasource-logger.ts","../../../../libs/datasource/src/lib/datasource-streamer.ts","../../../../libs/datasource/src/lib/datasource.ts","../../../../libs/datasource/src/lib/directives.ts","../../../../libs/datasource/src/lib/overlay.ts","../../../../libs/datasource/src/lib/overlay.html","../../../../libs/datasource/src/lib/container.ts","../../../../libs/datasource/src/lib/container.html","../../../../libs/datasource/src/lib/datasource-pipe.ts","../../../../libs/datasource/src/lib/datasource-module.ts","../../../../libs/datasource/src/lib/mappers.ts","../../../../libs/datasource/src/lib/datasource-reactive.ts","../../../../libs/datasource/src/matheo-datasource.ts"],"sourcesContent":["/**\n * Config Texts\n */\n\nexport function emptyMsg(): string {\n  return 'No data available';\n}\n\nexport function waitMsg(): string {\n  return 'Please wait...';\n}\n\nexport function delayMsg(): string {\n  return 'The data is still loading...';\n}\n\nexport function timeoutMsg(): string {\n  return 'Loading has timed out, please try again.';\n}\n\n/**\n * Debug Messages\n */\n\nexport function removingStream(): string {\n  return `SETUP Removing stream`;\n}\n\nexport function setValue(name: string): string {\n  return `SETUP ${name} =`;\n}\n\nexport function srcAdding(src: any): any[] {\n  return [`SETUP Adding stream`, src];\n}\n\nexport function srcEmpty(name: string): string {\n  return `SETUP Adding empty stream '${name}'`;\n}\n\nexport function srcInvalid(): string {\n  return `SETUP Empty stream provided!`;\n}\n\nexport function srcConnect(): string {\n  return `REQ Connected`;\n}\n\nexport function srcEmitted(src: any): string {\n  return `REQ Stream ${src} emitted`;\n}\n\nexport function srcOutput(): string {\n  return `REQ Streams output`;\n}\n\nexport function isAutoStarting(): string {\n  return `REQ DataSource starting automatically`;\n}\n\nexport function notAutoStarting(length: number): string {\n  return `REQ DataSource not auto starting with ${length} streams`;\n}\n\nexport function resolvedArgs(distinct: boolean): string {\n  return `REQ Resolved ${distinct ? 'the SAME' : ''} request`;\n}\n\nexport function queryResponse(): string {\n  return 'RAW Query response:';\n}\n\nexport function queryTimeout(): string {\n  return 'RAW Query timeout count:';\n}\n\nexport function responseTotal(): string {\n  return 'RAW Calculated total:';\n}\n\nexport function responseSuccess(result: any): Array<any> {\n  const len = result.length;\n  return [`RES succeed with ${len} item${len === 1 ? '' : 's'}`, result];\n}\n\nexport function responseError(errors: any): Array<any> {\n  return ['RES failed', errors];\n}\n\nexport function disconnecting(): string {\n  return 'Disconnecting';\n}\n\n/**\n * Error Messages\n */\n\nexport function addWhenRunning(item: any): string {\n  return `Adding \"${item}\" after the DataSource is already running.`;\n}\n\nexport function rmWhenRunning(item: string): string {\n  return `Trying to remove \"${item}\" after the DataSource is already running.`;\n}\n\nexport function nonNumeric(name: string): string {\n  return 'Non numeric ${name} passed';\n}\n\nexport function missingDataSourceInput(): string {\n  return 'mat-datasource must receive a dataSource input';\n}\n\nexport function resException(): string {\n  return 'Exception processing the result';\n}\n","import { ProgressSpinnerMode } from '@angular/material/progress-spinner';\nimport { delayMsg, emptyMsg, timeoutMsg, waitMsg } from './messages';\n\n/**\n * DataSource Config\n */\n\nexport interface DataSourceConfig {\n  debug?: boolean;\n  autoStart: boolean;\n  errorHandler?: (err: any) => string;\n  showErrors: boolean;\n  emptyMsg?: ((args?: any) => string) | string;\n  waitMsg?: string;\n  delayMsg?: string;\n  timeoutMsg?: string;\n  waitMs: number; // ms to wait before show the waitMsg\n  intervalMs: number; // timer interval to timeout the request\n  progressMode: ProgressSpinnerMode;\n}\n\nexport const defaultConfig: DataSourceConfig = {\n  debug: false,\n  autoStart: true,\n  showErrors: true,\n  emptyMsg: emptyMsg,\n  waitMsg: waitMsg(),\n  delayMsg: delayMsg(),\n  timeoutMsg: timeoutMsg(),\n  waitMs: 5000,\n  intervalMs: 10000,\n  progressMode: 'indeterminate',\n};\n","import { Injectable } from '@angular/core';\n\n/** DataSource messages that requires internationalization. */\n@Injectable({\n  providedIn: 'root',\n})\nexport class MatDataSourceIntl<REQ = any> {\n  /** A message to show when there's no resulting data. */\n  emptyMsg: ((args?: REQ) => string) | string = 'No data available';\n\n  /** A waiting message to show while loading the data. */\n  waitMsg: string = 'Please wait...';\n\n  /** A waiting message when the data is taking too long. */\n  delayMsg: string = 'The data is still loading...';\n\n  /** A timeout message if there's no response. */\n  timeoutMsg: string = 'Loading has timed out, please try again.';\n}\n","import { DataSourceConfig } from './datasource-config';\nimport { MatDataSourceIntl } from './datasource-intl';\n\n/**\n * Logging Handler\n */\nexport class DataSourceLogger {\n  /**\n   * Errors Collection\n   */\n  private _errors: { [errorCode: string]: string } = {};\n\n  set config(config: DataSourceConfig) {\n    this._config = config;\n  }\n  private _config!: DataSourceConfig;\n\n  constructor(private sourceName: string, private _intl?: MatDataSourceIntl) {}\n\n  /**\n   * Error Management Methods\n   */\n\n  getErrors() {\n    return this._errors;\n  }\n\n  addError(errorCode: string, error: string | { message: string }): void {\n    this._errors[errorCode] = typeof error === 'string' ? error : error.message;\n  }\n\n  handleError(errorCode: string, error: any): void {\n    this._config.errorHandler\n      ? this.addError(errorCode, this._config.errorHandler(error))\n      : this.addError(errorCode, error);\n  }\n\n  hasError(errorCode: string): boolean {\n    return this._errors.hasOwnProperty(errorCode);\n  }\n\n  hasErrors(force = false): boolean {\n    return (\n      (this._config.showErrors || force) && !!Object.keys(this._errors).length\n    );\n  }\n\n  getTimeoutError(attempt: number): string {\n    switch (attempt) {\n      case 0:\n        return this._intl?.waitMsg || this._config.waitMsg || '';\n      case 1:\n        return this._intl?.delayMsg || this._config.delayMsg || '';\n      default:\n        throw new Error(this._intl?.timeoutMsg || this._config.timeoutMsg);\n    }\n  }\n\n  clearErrors() {\n    this._errors = {};\n  }\n\n  /**\n   * Debug Utils\n   */\n\n  // display a message according a condition\n  debug(truthy: any, falsy?: any, condition: any = true) {\n    if (this._config.debug) {\n      if (condition) {\n        truthy = Array.isArray(truthy) ? truthy : [truthy];\n        console.log(`${this.sourceName}:`, ...truthy);\n      } else if (falsy) {\n        falsy = Array.isArray(falsy) ? falsy : [falsy];\n        console.log(`${this.sourceName}:`, ...falsy);\n      }\n    }\n  }\n\n  // logs an object if debug mode is enabled\n  print(message: string, obj: any) {\n    if (this._config.debug) {\n      console.log(`${this.sourceName}:`, message, obj);\n    }\n  }\n\n  // throw an error if the condition is truthy\n  check(condition: any, message: string) {\n    if (condition) {\n      throw new Error(`${this.sourceName}: ${message}`);\n    }\n  }\n}\n","import { combineLatest, isObservable, merge, of } from 'rxjs';\nimport { first, map, scan, startWith, switchMap, tap } from 'rxjs/operators';\nimport { DataSourceLogger } from './datasource-logger';\nimport { srcConnect, srcEmitted, srcInvalid, srcOutput } from './messages';\nimport { DataSourceStream } from './types';\n\nexport class DataSourceStreamer<T> {\n  // streams to listen\n  streams: Array<DataSourceStream<T>> = [];\n\n  get length() {\n    return this.streams.length;\n  }\n\n  constructor(private logger: DataSourceLogger) {}\n\n  add(src: DataSourceStream<T>) {\n    this.logger.check(!src.stream, srcInvalid());\n    if (src.stream && isObservable(src.stream)) {\n      this.streams.push(src);\n    }\n    return src.name;\n  }\n\n  remove(name: string) {\n    this.streams = this.streams.filter((s) => s.name !== name);\n  }\n\n  connect() {\n    this.logger.print(\n      srcConnect(),\n      this.streams.map((src, i) => src.name || i)\n    );\n\n    const required = this.streams\n      .filter((src) => !src.optional)\n      .sort((a, b) => ((a.weight || 0) < (b.weight || 0) ? -1 : 1))\n      .map(this.logEmittedValue());\n\n    const optional = this.streams\n      .filter((src) => src.optional)\n      .map(this.logEmittedValue());\n\n    return combineLatest([\n      required.length\n        ? combineLatest(required).pipe(\n            // waits the first emission of the required ones\n            map((args) => args.reduce(this.reducePartials, {} as Partial<T>)),\n            first(),\n            // and from there it accumulates the emissions\n            switchMap((args) =>\n              merge(...required).pipe(\n                startWith(args),\n                scan(this.reducePartials, {} as Partial<T>)\n              )\n            )\n          )\n        : of({} as Partial<T>),\n      optional.length\n        ? merge(...optional).pipe(\n            startWith({}),\n            scan(this.reducePartials, {} as Partial<T>)\n          )\n        : of({} as Partial<T>),\n    ]).pipe(\n      map((args) => args.reduce(this.reducePartials, {} as Partial<T>)),\n      tap((v) => this.logger.print(srcOutput(), v))\n    );\n  }\n\n  private logEmittedValue() {\n    return (src: DataSourceStream<T>, i: number) =>\n      src.stream.pipe(\n        tap((output) => this.logger.print(srcEmitted(src.name || i), output))\n      );\n  }\n\n  private reducePartials(a: Partial<T>, b: Partial<T>) {\n    return { ...a, ...b };\n  }\n}\n","import { DataSource } from '@angular/cdk/table';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { isEqual } from 'lodash';\nimport {\n  BehaviorSubject,\n  isObservable,\n  merge,\n  Observable,\n  of,\n  Subject,\n  timer,\n} from 'rxjs';\nimport {\n  catchError,\n  distinctUntilChanged,\n  filter,\n  map,\n  skipWhile,\n  switchMap,\n  take,\n  takeUntil,\n  tap,\n  throttleTime,\n} from 'rxjs/operators';\nimport { DataSourceConfig, defaultConfig } from './datasource-config';\nimport { MatDataSourceIntl } from './datasource-intl';\nimport { DataSourceLogger } from './datasource-logger';\nimport { DataSourceStreamer } from './datasource-streamer';\nimport {\n  addWhenRunning,\n  disconnecting,\n  emptyMsg,\n  isAutoStarting,\n  notAutoStarting,\n  queryResponse,\n  queryTimeout,\n  removingStream,\n  resolvedArgs,\n  responseError,\n  responseSuccess,\n  responseTotal,\n  rmWhenRunning,\n  srcAdding,\n  srcEmpty,\n} from './messages';\nimport { DataSourceOpts, DataSourceStream } from './types';\n\n@Injectable()\nexport abstract class MatDataSource<REQ = any, RAW = any, RES = any>\n  extends DataSource<RES>\n  implements OnDestroy {\n  /**\n   * State to control outside behavior like css classes and components.\n   * Updated by pre/postQuery to show/hide the loading overlay and empty message.\n   */\n  private _reloading = true;\n\n  get isLoading() {\n    return this._loading;\n  }\n  private _loading = true;\n\n  get isLoaded() {\n    return this._loaded;\n  }\n  private _loaded = false;\n\n  get isEmpty() {\n    return this._empty;\n  }\n  private _empty = true;\n\n  set skipSave(val: any) {\n    this._skip = !!val;\n  }\n  private _skip = false;\n\n  /**\n   * Number used to calculate the pagination length.\n   * Updated after the rawResult method according to the response data.\n   */\n  get total() {\n    return this._total;\n  }\n  private _total = 0;\n\n  get data() {\n    return this._data ? this._data : [];\n  }\n  private _data: Array<RES> = [];\n\n  /**\n   * Number used to calculate the loading progress.\n   * Updated while loading the query and triggering change$.\n   */\n  get progress() {\n    return this._progress;\n  }\n  protected _progress = 0;\n\n  /**\n   * Output message getter.\n   */\n  get outputMsg() {\n    return this._outputMsg;\n  }\n  protected _outputMsg: string = '';\n\n  /**\n   * Accessors\n   */\n  get args(): REQ {\n    return this.arguments || ({} as REQ);\n  }\n\n  get progressMode() {\n    return this._config.progressMode;\n  }\n\n  get change$() {\n    return this._change$.asObservable();\n  }\n\n  get data$() {\n    return this._data$.asObservable();\n  }\n\n  get hasErrors() {\n    return this._logger.hasErrors(true);\n  }\n\n  get getErrors() {\n    return this._logger.getErrors();\n  }\n\n  /**\n   * Setters\n   */\n\n  // config settings\n  get config() {\n    return this._config;\n  }\n  set config(config: Partial<DataSourceConfig>) {\n    this._config = {\n      ...this._config,\n      ...config,\n    };\n    this._logger.config = this._config;\n  }\n  protected _config = defaultConfig;\n\n  /**\n   * Control members for the datasource processing.\n   */\n  protected defaults: Partial<REQ> = {};\n  protected overrides: Partial<REQ> = {};\n  protected arguments?: REQ & DataSourceOpts;\n\n  /**\n   * Error control vars.\n   */\n  protected readonly _logger = new DataSourceLogger(\n    this.constructor.name,\n    this.intl\n  );\n\n  /**\n   * Stream only used to trigger a refresh on the data.\n   * Can receive some Criteria overrides for a temporary update.\n   * It has to be used outside the datasource to prevent infinite loops.\n   */\n  protected readonly _trigger$ = new BehaviorSubject<\n    Partial<REQ> | DataSourceOpts\n  >({});\n\n  /** Executions counter */\n  private _triggered = 0;\n\n  /** Registered streams */\n  private readonly _streams = new DataSourceStreamer<REQ | DataSourceOpts>(\n    this._logger\n  );\n\n  /** Output Emitter to refresh the UI. */\n  protected readonly _change$ = new BehaviorSubject<any>({});\n\n  /** Output Emitter of the latest Data. */\n  protected readonly _data$ = new Subject<Array<RES>>();\n\n  /** Disconnect internal observable. */\n  protected readonly _disconnect$ = new Subject<void>();\n\n  /**\n   * DataSource.\n   */\n  constructor(protected intl?: MatDataSourceIntl<REQ>) {\n    super();\n\n    // update i18n if present\n    if (this.intl) {\n      this.config = this.intl;\n    }\n\n    // initial config sync\n    this._logger.config = this._config;\n\n    // listen the internal trigger\n    this.addStream(this._trigger$);\n  }\n\n  ngOnDestroy() {\n    this._logger.print(disconnecting(), '');\n    this.disconnect();\n  }\n\n  /**\n   * Streams\n   */\n\n  addArguments(args: Partial<REQ>) {\n    this.defaults = { ...this.defaults, ...args };\n  }\n\n  addStream(\n    stream: Observable<Partial<REQ | DataSourceOpts>> | DataSourceStream<REQ>\n  ): string {\n    const src: DataSourceStream<REQ | DataSourceOpts> = isObservable(stream)\n      ? {\n        name: this._streams.length.toString(),\n        stream,\n      }\n      : stream;\n\n    this._logger.check(this._triggered, addWhenRunning(src.name || src.stream));\n    this._logger.debug(srcAdding(src.name), srcEmpty(src.name), stream);\n\n    return this._streams.add(src);\n  }\n\n  remStream(name: string) {\n    this._logger.check(this._triggered, rmWhenRunning(name));\n    this._logger.print(removingStream(), name);\n    this._streams.remove(name);\n  }\n\n  /**\n   * Triggers\n   */\n\n  refresh(overrides: Partial<REQ> = {}) {\n    this.overrides = overrides;\n    this._trigger$.next(overrides);\n  }\n\n  reload() {\n    this._reloading = true;\n    this._trigger$.next({ forceReload: new Date().getTime() });\n  }\n\n  restart() {\n    this._triggered = 0;\n  }\n\n  /**\n   * Data processing that can be completely customized.\n   */\n  reqArguments(args: REQ): REQ {\n    return args;\n  }\n\n  abstract rawDefault(): RAW;\n\n  abstract rawFetch(args: REQ): Observable<RAW>;\n\n  abstract rawTotal(result: RAW): Observable<number>;\n\n  rawFilter(result: RAW) {\n    return true;\n  }\n\n  abstract rawResult(result: RAW): Array<RES>;\n\n  /**\n   * Data Fetching Methods\n   */\n  private _blockStart(): boolean {\n    // check if it's not configured to start after the first trigger\n    const block = this._triggered === 1 && !this._config.autoStart;\n\n    if (this._triggered === 1) {\n      this._logger.debug(\n        isAutoStarting(),\n        notAutoStarting(this._streams.length),\n        !block\n      );\n    }\n\n    if (block) {\n      this._loading = false;\n    }\n\n    return block;\n  }\n\n  private _getArgs(output: Partial<REQ | DataSourceOpts>): REQ {\n    // merge all the stream outputs\n    this.arguments = {\n      ...this.defaults,\n      ...output,\n      ...this.overrides,\n    } as any;\n\n    delete this.arguments?.forceReload;\n\n    return this.args;\n  }\n\n  private _isEqual(): (prev: REQ, curr: REQ) => boolean {\n    return (prev, curr) => {\n      const isDistinct = !this._reloading && isEqual(prev, curr);\n\n      this._logger.print(resolvedArgs(isDistinct), curr);\n\n      return isDistinct;\n    };\n  }\n\n  private _preQuery(): void {\n    // state update\n    this._loading = true;\n    this._reloading = false;\n    this._outputMsg = '';\n    this._logger.clearErrors();\n    this._change$.next({});\n    this.overrides = {};\n  }\n\n  private _execQuery(args: REQ): Observable<RAW> {\n    const query = this.rawFetch(args);\n\n    return merge(\n      query,\n      // timers check\n      timer(this.config.waitMs ?? 5000, this.config.intervalMs || 10000).pipe(\n        takeUntil(query),\n        take(3), // by default: 5s, 15s, 25s\n        tap((sequence) => {\n          this._logger.print(queryTimeout(), sequence);\n          try {\n            this._outputMsg = this._logger.getTimeoutError(sequence);\n          } catch (e: unknown) {\n            if (e instanceof Error) {\n              this._logger.addError('timeout', e.message);\n            }\n            this._loading = false;\n          }\n          this._change$.next({});\n        }),\n        filter((result: number | RAW): result is RAW => {\n          return typeof result !== 'number';\n        })\n      )\n    ).pipe(\n      tap((result) => this._logger.print(queryResponse(), result)),\n      catchError((err) => {\n        // isolate query error\n        this._logger.handleError('query', err);\n        return of(this.rawDefault());\n      })\n    );\n  }\n\n  private _updateTotal(res: RAW): void {\n    if (!this.hasErrors) {\n      // microtask as workaround for change detection\n      this.rawTotal(res)\n        .pipe(\n          take(1),\n          tap((total) => this._logger.print(responseTotal(), total))\n        )\n        .subscribe((total) => {\n          this._total = total;\n          this._change$.next({});\n        });\n    }\n  }\n\n  private _processException(err: any) {\n    console.error(`${this.constructor.name} Exception`, err);\n    return of(false);\n  }\n\n  private _postQuery(res: RAW): Array<RES> {\n    const hasErrors = this.hasErrors;\n    const data = !hasErrors ? this.rawResult(res) : [];\n\n    this._logger.debug(\n      responseSuccess(data),\n      responseError(this.getErrors),\n      !hasErrors\n    );\n\n    this._empty = !data || !data.length;\n\n    if (!hasErrors && this._empty) {\n      this._outputMsg = this._emptyMessage();\n    }\n\n    if (!this._skip) {\n      this._data = data;\n      this._data$.next(data);\n    }\n\n    this._loaded = !hasErrors;\n    this._loading = false;\n    this._skip = false;\n    this._change$.next({});\n\n    return data;\n  }\n\n  private _emptyMessage() {\n    if (this.intl?.emptyMsg) {\n      if (typeof this.intl.emptyMsg === 'function') {\n        return this.intl.emptyMsg(this.args);\n      } else {\n        return this.intl.emptyMsg;\n      }\n    }\n    if (this._config.emptyMsg) {\n      if (typeof this._config.emptyMsg === 'function') {\n        return this._config.emptyMsg(this.args);\n      } else {\n        return this._config.emptyMsg;\n      }\n    }\n    return emptyMsg();\n  }\n\n  /**\n   * Data API\n   */\n\n  connect() {\n    return this._streams.connect().pipe(\n      takeUntil(this._disconnect$),\n      throttleTime(10),\n      tap(() => this._triggered++),\n      skipWhile(() => this._blockStart()),\n      map((args) => this._getArgs(args)),\n      map((req) => this.reqArguments(req)),\n      distinctUntilChanged(this._isEqual()),\n      tap(() => this._preQuery()),\n      switchMap((req) => this._execQuery(req)),\n      takeUntil(this._disconnect$),\n      filter((raw) => this.rawFilter(raw)),\n      tap((raw) => this._updateTotal(raw)),\n      catchError((err) => this._processException(err)),\n      map((raw) => this._postQuery(raw))\n    ) as Observable<RES[]>;\n  }\n\n  disconnect() {\n    this._trigger$.complete();\n    this._change$.complete();\n    this._disconnect$.next();\n    this._disconnect$.complete();\n  }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n  selector: 'mat-datasource-content',\n  host: {\n    class: 'mat-datasource-content'\n  }\n})\nexport class DataSourceContent {}\n\n@Directive({\n  selector: 'mat-datasource-empty',\n  host: {\n    class: 'mat-datasource-empty'\n  }\n})\nexport class DataSourceEmpty {}\n\n@Directive({\n  selector: 'mat-datasource-error',\n  host: {\n    class: 'mat-datasource-error'\n  }\n})\nexport class DataSourceError {}\n\n@Directive({\n  selector: 'mat-datasource-loading',\n  host: {\n    class: 'mat-datasource-loading'\n  }\n})\nexport class DataSourceLoading {}\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  HostBinding,\n  Input,\n  OnDestroy,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MatDataSource } from './datasource';\nimport { missingDataSourceInput } from './messages';\n\n@Component({\n  selector: 'mat-datasource-overlay',\n  templateUrl: './overlay.html',\n  host: {\n    class: 'mat-datasource-overlay',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataSourceOverlay<REQ, RAW, RES>\n  implements AfterContentInit, OnDestroy\n{\n  @Input({ required: true }) dataSource!: MatDataSource<REQ, RAW, RES>;\n\n  @Input() diameter?: number;\n  @Input() strokeWidth?: number;\n\n  @HostBinding('style.display')\n  _display?: string;\n\n  private onDestroy = new Subject<void>();\n\n  constructor(private readonly cdr: ChangeDetectorRef) {}\n\n  ngAfterContentInit() {\n    this._validateSource();\n\n    // listen source changes\n    this.dataSource.change$.pipe(takeUntil(this.onDestroy)).subscribe(() => {\n      this._display =\n        this.dataSource.isLoading ||\n        this.dataSource.hasErrors ||\n        this.dataSource.isEmpty\n          ? 'flex'\n          : 'none';\n\n      this.cdr.markForCheck();\n    });\n  }\n\n  private _validateSource() {\n    if (!this.dataSource) {\n      throw Error(missingDataSourceInput());\n    }\n  }\n\n  ngOnDestroy() {\n    this.onDestroy.next();\n    this.onDestroy.complete();\n  }\n}\n","<ng-container *ngIf=\"dataSource.isLoading then loading; else loaded\"></ng-container>\n\n<ng-template #loading>\n  <mat-progress-spinner\n    [mode]=\"dataSource.progressMode\"\n    [value]=\"dataSource.progress\"\n    [diameter]=\"diameter\"\n    [strokeWidth]=\"strokeWidth\"\n  ></mat-progress-spinner>\n\n  <div #out>\n    <ng-content select=\"mat-datasource-loading\"></ng-content>\n  </div>\n  <ng-container *ngIf=\"!out.childNodes.length\">\n    <mat-datasource-loading *ngIf=\"dataSource.outputMsg\">{{ dataSource.outputMsg }}</mat-datasource-loading>\n  </ng-container>\n</ng-template>\n\n<ng-template #loaded>\n  <ng-container *ngIf=\"dataSource.hasErrors then errors; else empty\"></ng-container>\n\n  <ng-template #errors>\n    <div class=\"mat-datasource-overlay\" #err>\n      <ng-content select=\"mat-datasource-error\"></ng-content>\n    </div>\n    <ng-container *ngIf=\"!err.childNodes.length\">\n      <mat-datasource-error *ngFor=\"let error of dataSource.getErrors | keyvalue\">{{ error.value }}</mat-datasource-error>\n    </ng-container>\n  </ng-template>\n\n  <ng-template #empty>\n    <div class=\"mat-datasource-overlay\" #emp>\n      <ng-content select=\"mat-datasource-empty\"></ng-content>\n    </div>\n    <ng-container *ngIf=\"!emp.childNodes.length\">\n      <mat-datasource-empty>{{ dataSource.outputMsg }}</mat-datasource-empty>\n    </ng-container>\n  </ng-template>\n</ng-template>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { MatDataSource } from './datasource';\nimport { missingDataSourceInput } from './messages';\n\n@Component({\n  selector: 'mat-datasource',\n  templateUrl: './container.html',\n  styleUrls: ['./container.scss', './directives.scss', './overlay.scss'],\n  host: {\n    class: 'mat-datasource',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataSourceContainer<REQ, RAW, RES> implements AfterContentInit {\n  @Input({ required: true }) dataSource!: MatDataSource<REQ, RAW, RES>;\n\n  @Input() diameter = 40;\n  @Input() strokeWidth = 5;\n\n  constructor() {}\n\n  ngAfterContentInit() {\n    this._validateSource();\n  }\n\n  private _validateSource() {\n    if (!this.dataSource) {\n      throw Error(missingDataSourceInput());\n    }\n  }\n}\n","<div class=\"mat-datasource-container\">\n  <div class=\"mat-datasource-output\" [attr.hidden]=\"dataSource.isLoading || dataSource.isEmpty ? '' : null\">\n    <ng-content select=\"mat-table,table,[mat-datasource-content]\"></ng-content>\n  </div>\n\n  <mat-datasource-overlay [dataSource]=\"dataSource\" [diameter]=\"diameter\" [strokeWidth]=\"strokeWidth\">\n    <ng-content select=\"mat-datasource-empty\" ngProjectAs=\"mat-datasource-empty\"></ng-content>\n    <ng-content select=\"mat-datasource-error\" ngProjectAs=\"mat-datasource-error\"></ng-content>\n    <ng-content select=\"mat-datasource-loading\" ngProjectAs=\"mat-datasource-loading\"></ng-content>\n  </mat-datasource-overlay>\n</div>\n\n<div [attr.hidden]=\"dataSource.isLoading || dataSource.isEmpty ? '' : null\">\n  <ng-content></ng-content>\n</div>\n","import {\n  ChangeDetectorRef,\n  OnDestroy,\n  Pipe,\n  PipeTransform,\n  Type,\n  ɵstringify as stringify,\n} from '@angular/core';\nimport { Observable, SubscriptionLike, isObservable } from 'rxjs';\nimport { ReactiveDataSource } from './datasource-reactive';\n\nexport function invalidPipeArgumentError(type: Type<any>, value: Object) {\n  return Error(`InvalidPipeArgument: '${value}' for pipe '${stringify(type)}'`);\n}\n\ninterface SubscriptionStrategy {\n  createSubscription(\n    async: Observable<any>,\n    updateLatestValue: any\n  ): SubscriptionLike;\n  dispose(subscription: SubscriptionLike): void;\n  onDestroy(subscription: SubscriptionLike): void;\n}\n\nclass ObservableStrategy implements SubscriptionStrategy {\n  createSubscription(\n    async: Observable<any>,\n    updateLatestValue: any\n  ): SubscriptionLike {\n    return async.subscribe({\n      next: updateLatestValue,\n      error: (e: any) => {\n        throw e;\n      },\n    });\n  }\n\n  dispose(subscription: SubscriptionLike): void {\n    subscription.unsubscribe();\n  }\n\n  onDestroy(subscription: SubscriptionLike): void {\n    subscription.unsubscribe();\n  }\n}\n\nconst _observableStrategy = new ObservableStrategy();\n\n/**\n * Unwraps a value from an asynchronous primitive.\n *\n * The `dataSource` pipe subscribes to a `DataSource` and returns the latest value it has\n * emitted. When a new value is emitted, the `dataSource` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `dataSource` pipe disconnects automatically to avoid\n * potential memory leaks.\n */\n@Pipe({ name: 'dataSource', pure: false })\nexport class DataSourcePipe implements OnDestroy, PipeTransform {\n  private _latestValue: any = null;\n\n  private _subscription: SubscriptionLike | null = null;\n  private _obj: ReactiveDataSource<any, any, any> | null = null;\n  private _strategy: SubscriptionStrategy = null!;\n\n  constructor(private _ref: ChangeDetectorRef) {}\n\n  ngOnDestroy(): void {\n    if (this._subscription) {\n      this._dispose();\n    }\n  }\n\n  transform<T>(obj: null): null;\n  transform<T>(obj: undefined): undefined;\n  transform(obj: ReactiveDataSource<any, any, any> | null | undefined): any {\n    if (!this._obj) {\n      if (obj) {\n        this._subscribe(obj);\n      }\n      return this._latestValue;\n    }\n\n    if (obj !== this._obj) {\n      this._dispose();\n      return this.transform(obj as any);\n    }\n\n    return this._latestValue;\n  }\n\n  private _subscribe(obj: ReactiveDataSource<any, any, any>): void {\n    this._obj = obj;\n    this._strategy = this._selectStrategy(obj);\n    const stream = obj.connect();\n    this._subscription = this._strategy.createSubscription(\n      stream,\n      (value: Object) => this._updateLatestValue(obj, value)\n    );\n  }\n\n  private _selectStrategy(obj: ReactiveDataSource<any, any, any>): any {\n    if (isObservable(obj.change$)) {\n      return _observableStrategy;\n    }\n\n    throw invalidPipeArgumentError(DataSourcePipe, obj);\n  }\n\n  private _dispose(): void {\n    this._strategy.dispose(this._subscription!);\n    this._obj?.disconnect();\n    this._latestValue = null;\n    this._subscription = null;\n    this._obj = null;\n  }\n\n  private _updateLatestValue(async: any, value: Object): void {\n    if (async === this._obj) {\n      this._latestValue = value;\n      this._ref.markForCheck();\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { DataSourceContainer } from './container';\nimport { MatDataSourceIntl } from './datasource-intl';\nimport { DataSourcePipe } from './datasource-pipe';\nimport {\n  DataSourceContent,\n  DataSourceEmpty,\n  DataSourceError,\n  DataSourceLoading,\n} from './directives';\nimport { DataSourceOverlay } from './overlay';\n\n@NgModule({\n  imports: [CommonModule, MatProgressSpinnerModule],\n  declarations: [\n    DataSourceContainer,\n    DataSourceContent,\n    DataSourceEmpty,\n    DataSourceError,\n    DataSourceLoading,\n    DataSourceOverlay,\n    DataSourcePipe,\n  ],\n  exports: [\n    MatProgressSpinnerModule,\n    DataSourceContainer,\n    DataSourceContent,\n    DataSourceEmpty,\n    DataSourceError,\n    DataSourceLoading,\n    DataSourcePipe,\n  ],\n  providers: [MatDataSourceIntl],\n})\nexport class MatDataSourceModule {}\n","import { PageEvent } from '@angular/material/paginator';\nimport { Sort } from '@angular/material/sort';\nimport { pipe } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\n\n/**\n * Pre-made Mappers\n */\n\nexport function mapPaginator(pageSize: number) {\n  return pipe(\n    map((page: PageEvent) => ({\n      pageIndex: page.pageIndex,\n      pageSize: page.pageSize,\n    })),\n    startWith({\n      pageIndex: 0,\n      pageSize,\n    })\n  );\n}\n\nexport function mapSort() {\n  return pipe(\n    map((sort: Sort) => ({\n      orderBy: sort.active,\n      orderDir: sort.direction || undefined,\n    })),\n    startWith({})\n  );\n}\n","import { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatSort, Sort } from '@angular/material/sort';\nimport { Observable, UnaryFunction } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MatDataSource } from './datasource';\nimport { mapPaginator, mapSort } from './mappers';\nimport { nonNumeric, setValue } from './messages';\nimport { DataSourceItem } from './types';\n\nexport abstract class ReactiveDataSource<REQ, RAW, RES> extends MatDataSource<\n  REQ,\n  RAW,\n  RES\n> {\n  /**\n   * Pagination Settings\n   */\n  get pageIndex() {\n    return this._pageIndex;\n  }\n  set pageIndex(size: number) {\n    this._logger.check(isNaN(Number(size)), nonNumeric('pageIndex'));\n    this._logger.print(setValue('PageIndex'), Number(size));\n    this._pageIndex = Number(size);\n  }\n  private _pageIndex = 0;\n\n  get pageSize() {\n    return this._pageSize;\n  }\n  set pageSize(size: number) {\n    if (size) {\n      this._logger.check(isNaN(Number(size)), nonNumeric('pageSize'));\n      this._logger.print(setValue('PageSize'), Number(size));\n      this._pageSize = Number(size);\n    }\n  }\n  private _pageSize = 10;\n\n  // be sure the paginator's view has been initialized\n  setPaginator(\n    paginator: MatPaginator,\n    mapper?: (\n      pageSize: number\n    ) => UnaryFunction<Observable<PageEvent>, Observable<any>>\n  ) {\n    this.addStream({\n      name: 'MatPaginator',\n      stream: paginator.page.pipe<any>(\n        mapper ? mapper(this.pageSize) : mapPaginator(this.pageSize)\n      ),\n    });\n  }\n\n  // sort changes emitted will trigger an update\n  setSort(\n    sort: MatSort,\n    mapper?: () => UnaryFunction<Observable<Sort>, Observable<any>>\n  ) {\n    this.addStream({\n      name: 'MatSort',\n      stream: sort.sortChange.pipe<any>(mapper ? mapper() : mapSort()),\n    });\n  }\n\n  /**\n   * Attachs an autocompleter with this data source filtered. Note that\n   * the stream provided will be accessed during change detection and should not directly change\n   * values that are bound in template views.\n   * @returns Observable that emits a new value when the data changes.\n   */\n  attach(): Observable<Array<DataSourceItem>> {\n    return this.connect().pipe(map((res) => this.resFilter(res)));\n  }\n\n  // customized filter trigger\n  abstract filter(query: string, limit: number): void;\n\n  // customized result mapper\n  abstract resFilter(result: Array<RES>): Array<DataSourceItem>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.MatDataSourceIntl","i3.DataSourceEmpty","i3.DataSourceError","i3.DataSourceLoading","i1.DataSourceOverlay","stringify"],"mappings":"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"}