{"version":3,"file":"angular-extensions-core.mjs","sources":["../../../projects/angular-extensions/core/src/object.extensions.ts","../../../projects/angular-extensions/core/src/array.extensions.ts","../../../projects/angular-extensions/core/src/enum.extensions.ts","../../../projects/angular-extensions/core/src/observable.extensions.ts","../../../projects/angular-extensions/core/src/angular.extensions.ts","../../../projects/angular-extensions/core/src/router.extensions.ts","../../../projects/angular-extensions/core/src/sequential.guard.ts","../../../projects/angular-extensions/core/src/angular-extensions-core.ts"],"sourcesContent":["import { format, parseISO } from \"date-fns\";\r\nimport { reduce, upperFirst, words } from \"lodash-es\";\r\n\r\nexport interface StartCaseOptions {\r\n  /**\r\n   * Should insert a space before digit present in string. E.g. \"every10Month\" => \"Every 10 Month\"\r\n   */\r\n  insertSpaceBeforeDigits?: boolean;\r\n\r\n  /**\r\n   * Should insert a space after digit present in string. E.g. \"calculate10e\" => \"Calculate 10 e\"\r\n   */\r\n  insertSpaceAfterDigits?: boolean;\r\n\r\n  /**\r\n   * Should insert a space before abbreviation present in string. E.g. \"FaceID\" => \"Face ID\"\r\n   */\r\n  insertSpaceBeforeAbbreviations?: boolean;\r\n\r\n  /**\r\n   * Should make single letter part present in string. E.g. \"pH\" => \"PH\"\r\n   */\r\n  capitalizeSingleLetters?: boolean;\r\n}\r\n\r\ndeclare global {\r\n  interface StartCaseOptions {\r\n    /**\r\n     * Should insert a space before digit present in string. E.g. \"every10Month\" => \"Every 10 Month\"\r\n     */\r\n    insertSpaceBeforeDigits?: boolean;\r\n\r\n    /**\r\n     * Should insert a space after digit present in string. E.g. \"calculate10e\" => \"Calculate 10 e\"\r\n     */\r\n    insertSpaceAfterDigits?: boolean;\r\n\r\n    /**\r\n     * Should insert a space before abbreviation present in string. E.g. \"FaceID\" => \"Face ID\"\r\n     */\r\n    insertSpaceBeforeAbbreviations?: boolean;\r\n\r\n    /**\r\n     * Should make single letter part present in string. E.g. \"pH\" => \"PH\"\r\n     */\r\n    capitalizeSingleLetters?: boolean;\r\n  }\r\n\r\n  interface String {\r\n    trim(this: string, charList?: string): string;\r\n    trimStart(this: string, charList?: string): string;\r\n    trimEnd(this: string, charList?: string): string;\r\n    toStartCase(this: string, options?: StartCaseOptions): string;\r\n  }\r\n\r\n  interface Dictionary<T> {\r\n    [index: string]: T;\r\n  }\r\n\r\n  interface Group<TKey, TValue> {\r\n    key: TKey;\r\n\r\n    items: TValue[];\r\n  }\r\n\r\n  interface FormData {\r\n    fromObject(data: { [key: string]: File | File[] | any }): FormData;\r\n  }\r\n\r\n  interface Date {\r\n\r\n    /**\r\n     * Returns zero-based index of day of week assuming that week starts with Monday\r\n     *\r\n     * @param this\r\n     * @returns Local date without changing time\r\n     */\r\n    getDayOfWeek(this: Date): number;\r\n\r\n    /**\r\n     * Date wont provide Timezone information during serialization.\r\n     *\r\n     * @example\r\n     *  new Date(\"2020-01-01T00:00:00.000+02:00\").toJSON();                   // returns \"2019-12-31T22:00:00.000Z\"\r\n     *  new Date(\"2020-01-01T00:00:00.000+02:00\").withoutTimezone().toJSON(); // returns \"2020-01-01T00:00:00.000\"\r\n     *\r\n     * @param this\r\n     * @returns UTC date keeping local time\r\n     */\r\n    withoutTimezone(this: Date): Date;\r\n\r\n    /**\r\n     * Converts local date to UTC date keeping local time\r\n     *\r\n     * @param this\r\n     * @returns UTC date keeping local time\r\n     */\r\n    asUtcDate(this: Date): Date;\r\n\r\n    /**\r\n     * Converts local date to UTC date with shifted local time\r\n     *\r\n     * @param this\r\n     * @returns UTC date with shifted local time\r\n     */\r\n    toUtcDate(this: Date): Date;\r\n\r\n    /**\r\n     * Converts UTC date to local date without changing time\r\n     *\r\n     * @param this\r\n     * @returns Local date without changing time\r\n     */\r\n    asLocalDate(this: Date): Date;\r\n  }\r\n\r\n  function nameOf<T>(func: Func<T> | Class<T>): string;\r\n  function nameOfFull<T>(func: Func<T>): string;\r\n}\r\n\r\nexport type Func<T> = (obj: T) => any;\r\nexport type Class<T> = new (...params: any[]) => T;\r\n\r\nconst ISO8601Regex = /^\\d{4}-\\d{2}-\\d{2}(?:[T ]\\d{2}:\\d{2}:\\d{2}(?:.\\d{1,})?(?:[Z]?|[+-]\\d{2}:\\d{2}))?$/;\r\n\r\nexport function nameOf<T>(func: Func<T> | Class<T>) {\r\n  let str = func.toString();\r\n  let classNameRegex = new RegExp(/(?:function|class) ([^ ({]+)[ ({]/);\r\n\r\n  if (classNameRegex.test(str)) {\r\n    let classNameParts = classNameRegex.exec(str);\r\n\r\n    return classNameParts[classNameParts.length - 1] as string;\r\n  }\r\n\r\n  let parts = str.match(/\\.([^.;}]+)[;}]?/g);\r\n\r\n  return parts[parts.length - 1].replace(\".\", \"\") as string;\r\n}\r\n\r\nexport function nameOfFull<T>(func: Func<T>) {\r\n  return /\\.([^;}]+)[;}]?/.exec(func.toString())?.[1] as string;\r\n}\r\n\r\ntype FunctionLike = (...args: any) => any;\r\n\r\nexport function overrideFunction<TIntance extends { [prop: string]: TFunc | any }, TFunc extends FunctionLike>(\r\n  context: TIntance,\r\n  funcProvider: (instance: TIntance) => TFunc,\r\n  newFunc: (originalFunc: TFunc, functionContext: TIntance, ...args: Parameters<TFunc>) => ReturnType<TFunc>\r\n) {\r\n  let functionName = nameOf<TIntance>(funcProvider);\r\n  let originalFunction = context[functionName] as TFunc;\r\n\r\n  (context[functionName] as any) = function (this: any, ...args: Parameters<TFunc>) {\r\n    let originalFuncInstance = (...newArgs: Parameters<TFunc>) => originalFunction.call(this, ...newArgs);\r\n\r\n    return newFunc(originalFuncInstance as any, this, ...args);\r\n  };\r\n}\r\n\r\nexport function overrideProperty<TIntance extends { [prop: string]: TProp | any }, TProp extends Object>(\r\n  context: TIntance,\r\n  propertyProvider: (instance: TIntance) => TProp,\r\n  propertyConfig: {\r\n    get?: (originalProperty: TProp, propertyContext: TIntance) => TProp;\r\n    set?: (originalProperty: ((value: TProp) => void) | null, propertyContext: TIntance, value: TProp) => void;\r\n  }\r\n) {\r\n  let propertyName = nameOf<TIntance>(propertyProvider);\r\n\r\n  let originalProperty = Object.getOwnPropertyDescriptor(context, propertyName) ||\r\n    Object.getOwnPropertyDescriptor(context.__proto__, propertyName);\r\n\r\n  let newProperty: PropertyDescriptor = Object.assign({}, originalProperty);\r\n\r\n  if (propertyConfig.get) {\r\n    let propertyValue = newProperty.value as TProp;\r\n\r\n    delete newProperty.value;\r\n\r\n    Object.assign(newProperty, {\r\n      get() {\r\n        return propertyConfig.get(\r\n          originalProperty?.get\r\n            ? Object.setPrototypeOf(Object.assign({}, originalProperty), this).get()\r\n            : propertyValue,\r\n          context);\r\n      },\r\n    });\r\n  }\r\n\r\n  if (propertyConfig.set) {\r\n    delete newProperty.value;\r\n    delete newProperty.writable;\r\n\r\n    Object.assign(newProperty, {\r\n      set(value: TProp) {\r\n        propertyConfig.set(\r\n          originalProperty?.set\r\n            ? Object.setPrototypeOf(Object.assign({}, originalProperty), this).set\r\n            : null,\r\n          context,\r\n          value);\r\n      },\r\n    });\r\n  }\r\n\r\n  Object.defineProperty(context, propertyName, newProperty);\r\n}\r\n\r\nexport function isValidDateString(date: string) {\r\n  return ISO8601Regex.test(date);\r\n}\r\n\r\nexport function parseDates(model: any, excludePaths?: RegExp[]) {\r\n  parseDatesInternal(model, excludePaths, \"\");\r\n}\r\n\r\nfunction parseDatesInternal(model: any, excludePaths?: RegExp[], path?: string) {\r\n  for (let prop in model) {\r\n    if (!model[prop]) {\r\n      continue;\r\n    }\r\n\r\n    let propertyPath = [path, prop].join(\"/\");\r\n\r\n    if (excludePaths?.some(regExp => regExp.test(propertyPath))) {\r\n      continue;\r\n    }\r\n\r\n    if (typeof (model[prop]) == \"string\") {\r\n      parseDateProperty(model, prop);\r\n    } else if (typeof (model[prop]) == \"object\") {\r\n      parseDatesInternal(model[prop], excludePaths, propertyPath);\r\n    }\r\n  }\r\n}\r\n\r\nexport function parseDateProperty<T>(object: T, prop: keyof T) {\r\n  let date = object[prop];\r\n\r\n  if (typeof date == \"string\" && isValidDateString(date)) {\r\n    object[prop] = parseISO(date) as any;\r\n  }\r\n}\r\n\r\n/**\r\n * Date wont provide Timezone information during serialization.\r\n *\r\n * @example\r\n *  new Date(\"2020-01-01T00:00:00.000+02:00\").toJSON();                   // returns \"2019-12-31T22:00:00.000Z\"\r\n *  new Date(\"2020-01-01T00:00:00.000+02:00\").withoutTimezone().toJSON(); // returns \"2020-01-01T00:00:00.000\"\r\n *\r\n * @param this\r\n * @returns UTC date keeping local time\r\n */\r\nexport function withoutTimezone(this: Date): Date {\r\n  let dateWithoutTimezone = new Date(this.valueOf());\r\n\r\n  dateWithoutTimezone.toJSON = function (this: Date, key?: any) {\r\n    return format(this, \"yyyy-MM-dd'T'HH:mm:ss\");\r\n  };\r\n\r\n  return dateWithoutTimezone;\r\n}\r\n\r\n/**\r\n * Converts local date to UTC date keeping local time\r\n *\r\n * @param this\r\n * @returns UTC date keeping local time\r\n */\r\nexport function asUtcDate(this: Date) {\r\n  return new Date(`${format(this, \"yyyy-MM-dd'T'HH:mm:ss\")}Z`);\r\n}\r\n\r\n/**\r\n * Converts local date to UTC date with shifted local time\r\n *\r\n * @param this\r\n * @returns UTC date with shifted local time\r\n */\r\nexport function toUtcDate(this: Date) {\r\n  return new Date(this.toISOString().replace(\"Z\", \"\"));\r\n}\r\n\r\n/**\r\n * Converts UTC date to local date without changing time\r\n *\r\n * @param this\r\n * @returns Local date without changing time\r\n */\r\nexport function asLocalDate(this: Date) {\r\n  return new Date(format(this, \"yyyy-MM-dd'T'HH:mm:ss\"));\r\n}\r\n\r\n/**\r\n * Returns zero-based index of day of week assuming that week starts with Monday\r\n *\r\n * @param this\r\n * @returns Local date without changing time\r\n */\r\nexport function getDayOfWeek(this: Date) {\r\n  let dayOfWeek = this.getDay();\r\n\r\n  return dayOfWeek == 0\r\n    ? 6\r\n    : dayOfWeek - 1;\r\n}\r\n\r\nconst originalTrim = String.prototype.trim;\r\n\r\nexport function trim(this: string, charlist?: string) {\r\n  return charlist\r\n    ? this?.replace(new RegExp(\"^[\" + charlist + \"]+|[\" + charlist + \"]+$\"), \"\")\r\n    : originalTrim.call(this);\r\n}\r\n\r\nconst originalTrimStart = String.prototype.trimStart;\r\n\r\nexport function trimStart(this: string, charlist?: string) {\r\n  return charlist\r\n    ? this?.replace(new RegExp(\"^[\" + charlist + \"]+\"), \"\")\r\n    : originalTrimStart.call(this);\r\n}\r\n\r\nconst originalTrimEnd = String.prototype.trimEnd;\r\n\r\nexport function trimEnd(this: string, charlist?: string) {\r\n  return charlist\r\n    ? this?.replace(new RegExp(\"[\" + charlist + \"]+$\"), \"\")\r\n    : originalTrimEnd.call(this);\r\n}\r\n\r\nexport function handleError(action: () => any) {\r\n  try {\r\n    action();\r\n  }\r\n  catch (error) {\r\n    console.error(error);\r\n  }\r\n}\r\n\r\nexport function formDataFromObject(this: FormData, data: { [key: string]: File | File[] | any }) {\r\n  Object.entries(data).forEach(([key, value]) => {\r\n    if (value instanceof File) {\r\n      this.append(key, value);\r\n    }\r\n    else if (Array.isArray(value) && value.first() instanceof File) {\r\n      value.forEach(file => this.append(key, file));\r\n    }\r\n    else {\r\n      this.append(key, JSON.stringify(value));\r\n    }\r\n  });\r\n\r\n  return this;\r\n}\r\n\r\nconst ApostropheRegex = RegExp(\"['\\u2019]\", \"g\");\r\n\r\nexport function toStartCase(this: string, options?: StartCaseOptions): string {\r\n  if (!this) {\r\n    return \"\";\r\n  }\r\n\r\n  return reduce(\r\n    words(this.replace(ApostropheRegex, \"\")),\r\n    (result, phrase, index) => {\r\n      let infix = \"\";\r\n\r\n      if (index > 0) {\r\n        if (/^\\d/.test(phrase)) {\r\n          infix = options?.insertSpaceBeforeDigits ? \" \" : \"\";\r\n        }\r\n        else if (/^[A-Z]+$/.test(phrase)) {\r\n          infix = options?.insertSpaceBeforeAbbreviations ? \" \" : \"\";\r\n        }\r\n        else if (/\\d$/.test(result)) {\r\n          infix = options?.insertSpaceAfterDigits ? \" \" : \"\";\r\n        }\r\n        else {\r\n          infix = \" \";\r\n        }\r\n      }\r\n\r\n      return result + infix + (phrase.length > 1 || options?.capitalizeSingleLetters ? upperFirst(phrase) : phrase);\r\n    },\r\n    \"\");\r\n}\r\n\r\nwindow.nameOf = nameOf;\r\nwindow.nameOfFull = nameOfFull;\r\n\r\nDate.prototype.getDayOfWeek = getDayOfWeek;\r\nDate.prototype.withoutTimezone = withoutTimezone;\r\nDate.prototype.asUtcDate = asUtcDate;\r\nDate.prototype.toUtcDate = toUtcDate;\r\nDate.prototype.asLocalDate = asLocalDate;\r\nFormData.prototype.fromObject = formDataFromObject;\r\n\r\nObject.defineProperty(String.prototype, nameOf(() => String.prototype.trim), { value: trim, configurable: true, writable: true });\r\nObject.defineProperty(String.prototype, nameOf(() => String.prototype.trimStart), { value: trimStart, configurable: true, writable: true });\r\nObject.defineProperty(String.prototype, nameOf(() => String.prototype.trimEnd), { value: trimEnd, configurable: true, writable: true });\r\n\r\nObject.defineProperty(\r\n  String.prototype,\r\n  nameOf(() => String.prototype.toStartCase),\r\n  { value: toStartCase, configurable: true, writable: true });\r\n","import { orderBy as lodashOrderBy } from \"lodash-es\";\n\ndeclare global {\n  interface Array<T> {\n    first(this: T[]): T | undefined;\n    last(this: T[]): T | undefined;\n    elementAt(this: T[], index: number): T | undefined;\n    distinct(this: T[]): T[];\n    distinctBy<TKey>(this: T[], property: (item: T) => TKey): T[];\n    contains(this: T[], item: T): boolean;\n    orderBy(this: T[], ...properties: ((item: T) => any)[]): T[];\n    orderByDesc(this: T[], property: (item: T) => any): T[];\n    move(this: T[], from: number, to: number): T[];\n    groupBy<TKey>(this: T[], property: (item: T) => TKey): Group<TKey, T>[];\n  }\n}\n\nexport function first<T>(this: T[]): T | undefined {\n  return this[0];\n}\n\nexport function last<T>(this: T[]): T | undefined {\n  return this[this.length - 1];\n}\n\nexport function elementAt<T>(this: T[], index: number): T | undefined {\n  return this[index];\n}\n\n/**\n * Removes duplicates from a collection based on a Set\n *\n * @param this Array\n * @returns Array\n */\nexport function distinct<T>(this: T[]): T[] {\n  return [...new Set<T>(this)];\n}\n\n/**\n * Removes duplicates from a collection based on a Set\n *\n * @param this Array\n * @returns Array\n */\nexport function distinctBy<T, TKey>(this: T[], property: (item: T) => TKey): T[] {\n  return [...new Map<TKey, T>(this.map(item => [property(item), item])).values()];\n}\n\nexport function contains<T>(this: T[], item: T): boolean {\n  return this.indexOf(item) >= 0;\n}\n\nexport function flatten<T>(array: T[], nestedArrayFunc: (item: T) => T[]): T[] {\n  let result: T[] = [];\n\n  array.forEach(item => {\n    result.push(item, ...flatten(nestedArrayFunc(item) || [], nestedArrayFunc));\n  });\n\n  return result;\n}\n\n/**\n * Sorts array by specified properties based on \"lodashOrderBy\" function\n *\n * @param this Array\n * @param properties List of property selectors\n * @returns Sorted array\n */\nexport function orderBy<T>(this: T[], ...properties: ((item: T) => any)[]): T[] {\n  return lodashOrderBy(this, properties);\n}\n\nexport function orderByDesc<T>(this: T[], property: (item: T) => any): T[] {\n  return lodashOrderBy(this, property, \"desc\");\n}\n\nexport function move<T>(this: T[], from: number, to: number) {\n  return this.splice(to, 0, this.splice(from, 1)[0]);\n}\n\nexport function groupBy<T, TKey>(this: T[], property: (item: T) => TKey): Group<TKey, T>[] {\n  let map = new Map<TKey, T[]>();\n\n  this.forEach(option => {\n    let group = property(option);\n\n    if (map.has(group)) {\n      map.get(group)?.push(option);\n    }\n    else {\n      map.set(group, [option]);\n    }\n  });\n\n  return Array.from(map.entries()).map(([group, items]) => {\n    return {\n      key: group,\n      items: items,\n    } as Group<TKey, T>;\n  });\n}\n\nObject.defineProperty(Array.prototype, nameOf(() => Array.prototype.first), { value: first, configurable: true, writable: true });\nObject.defineProperty(Array.prototype, nameOf(() => Array.prototype.last), { value: last, configurable: true, writable: true });\nObject.defineProperty(Array.prototype, nameOf(() => Array.prototype.elementAt), { value: elementAt, configurable: true, writable: true });\nObject.defineProperty(Array.prototype, nameOf(() => Array.prototype.distinct), { value: distinct, configurable: true, writable: true });\nObject.defineProperty(Array.prototype, nameOf(() => Array.prototype.distinctBy), { value: distinctBy, configurable: true, writable: true });\nObject.defineProperty(Array.prototype, nameOf(() => Array.prototype.contains), { value: contains, configurable: true, writable: true });\nObject.defineProperty(Array.prototype, nameOf(() => Array.prototype.orderBy), { value: orderBy, configurable: true, writable: true });\nObject.defineProperty(Array.prototype, nameOf(() => Array.prototype.move), { value: move, configurable: true, writable: true });\nObject.defineProperty(Array.prototype, nameOf(() => Array.prototype.groupBy), { value: groupBy, configurable: true, writable: true });\nObject.defineProperty(Array.prototype, nameOf(() => Array.prototype.orderByDesc), { value: orderByDesc, configurable: true, writable: true });\n","import { startCase } from \"lodash-es\";\r\n\r\nexport function getEnumValues(enumType: any) {\r\n  return Object.entries(enumType).map(([key, value]) => {\r\n    return {\r\n      label: startCase(key),\r\n      value: value,\r\n    };\r\n  });\r\n}\r\n","\r\nimport { Observable, of, Subject, timer } from \"rxjs\";\r\nimport { catchError, map, startWith, retry, shareReplay, switchMap, tap } from \"rxjs/operators\";\r\n\r\n/**\r\n * Provides additional information about Observable request. Used by {@link trackStatus}\r\n */\r\nexport interface RequestStatus<T> {\r\n  isLoading: boolean;\r\n\r\n  value?: T;\r\n\r\n  error?: any;\r\n}\r\n\r\n/**\r\n * Wraps Observable into a RequestStatus object that provides additional information: isLoading, error, etc.\r\n *\r\n * @example\r\n * <ng-container *ngIf=\"trackStatusObservable$ | async as request\">\r\n *   {{ request.isLoading ? \"loading\" : request.value }}\r\n * </ng-container>\r\n * @param observable\r\n * @returns\r\n */\r\nexport function trackStatus<T>(observable: Observable<T>): Observable<RequestStatus<T>> {\r\n  return observable.pipe(\r\n    map(value => {\r\n      return {\r\n        isLoading: !value,\r\n        value: value,\r\n      } as RequestStatus<T>;\r\n    }),\r\n    startWith({ isLoading: true }),\r\n    catchError(error => {\r\n      console.error(error);\r\n\r\n      return of({ isLoading: false, error });\r\n    }),\r\n  );\r\n}\r\n\r\n/**\r\n * Adds support of executing request retries on refresh interval with initial execution delay\r\n */\r\nexport class AsyncWrapper<TValue, TError = any> {\r\n\r\n  private isValueLoading = false;\r\n\r\n  public readonly error: Observable<TError | null>;\r\n  public readonly value: Observable<TValue>;\r\n\r\n  public get isLoading() {\r\n    return this.isValueLoading;\r\n  }\r\n\r\n  constructor(provider: () => Observable<TValue>, settings: { refreshInterval: number; initialDelay?: number }) {\r\n    let errorSubject = new Subject<TError | null>();\r\n\r\n    this.error = errorSubject.pipe(shareReplay(1));\r\n\r\n    this.value = timer(settings.initialDelay || 0, settings.refreshInterval)\r\n      .pipe(\r\n        switchMap(() => {\r\n          this.isValueLoading = true;\r\n\r\n          return provider();\r\n        }),\r\n        retry({\r\n          delay: error => {\r\n            console.error(error);\r\n\r\n            errorSubject.next(error);\r\n\r\n            return timer(settings.refreshInterval);\r\n          }\r\n        }),\r\n        tap(() => {\r\n          this.isValueLoading = false;\r\n\r\n          errorSubject.next(null);\r\n        }),\r\n        shareReplay({ refCount: true, bufferSize: 1 }));\r\n  }\r\n}\r\n","import { HttpParameterCodec, HttpParams } from \"@angular/common/http\";\r\nimport type { ChangeDetectorRef, ElementRef } from \"@angular/core\";\r\nimport type { MatOption } from \"@angular/material/core\";\r\nimport type { MatSelect as MatSelectBase, MatSelectChange as MatSelectChangeEvent } from \"@angular/material/select\";\r\n\r\n/**\r\n * Generic representation of Angular SimpleChange\r\n */\r\nexport type SimpleChange<TValue> = {\r\n  previousValue: TValue;\r\n  currentValue: TValue;\r\n  firstChange: boolean;\r\n\r\n  isFirstChange(): boolean;\r\n};\r\n\r\n/**\r\n * Generic representation of Angular SimpleChanges\r\n */\r\nexport type SimpleChanges<TComponent> = {\r\n  [key in keyof TComponent]?: SimpleChange<TComponent[key]>;\r\n};\r\n\r\n/**\r\n * Patches Angular HttpParams \"toString()\" method to handle empty array query params properly\r\n */\r\nexport function patchAngularHttpParams() {\r\n  let httpParamsToStringOriginal = HttpParams.prototype.toString;\r\n\r\n  HttpParams.prototype.toString = function () {\r\n    return httpParamsToStringOriginal\r\n      .apply(this)\r\n      .replace(/&{2,}/g, \"&\")\r\n      .replace(/^&|&$/g, \"\");\r\n  };\r\n}\r\n\r\nexport class DefaultHttpParamEncoder implements HttpParameterCodec {\r\n  public encodeKey(key: string): string {\r\n    return encodeURIComponent(key);\r\n  }\r\n\r\n  public encodeValue(value: string): string {\r\n    return encodeURIComponent(value);\r\n  }\r\n\r\n  public decodeKey(key: string): string {\r\n    return decodeURIComponent(key);\r\n  }\r\n\r\n  public decodeValue(value: string): string {\r\n    return decodeURIComponent(value);\r\n  }\r\n}\r\n\r\ndeclare module \"@angular/forms\" {\r\n  export interface FormControl<TValue = any> {\r\n    _onChange: ((newValue: any, emitModelEvent: boolean) => void)[];\r\n\r\n    _onDisabledChange: ((disabled: boolean) => any)[];\r\n  }\r\n}\r\n\r\ndeclare module \"@angular/cdk/collections\" {\r\n  export interface SelectionModel<T> {\r\n    compareBy?: ((o1: T) => any) | undefined;\r\n\r\n    values: Map<any, T>;\r\n  }\r\n}\r\n\r\ndeclare module \"@angular/material/core\" {\r\n  export interface AppMatOption<T = any> extends Omit<MatOption<T>, \"_element\" | \"_selected\" | \"_changeDetectorRef\"> {\r\n    _element: ElementRef<HTMLElement>;\r\n\r\n    _selected: boolean;\r\n\r\n    _changeDetectorRef: ChangeDetectorRef;\r\n  }\r\n}\r\n\r\ndeclare module \"@angular/material/select\" {\r\n  export interface AppMatSelect extends Omit<MatSelectBase, \"_propagateChanges\" | \"_changeDetectorRef\"> {\r\n    _value: any;\r\n\r\n    _changeDetectorRef: ChangeDetectorRef;\r\n\r\n    panel: ElementRef<HTMLElement>;\r\n\r\n    _canOpen(): boolean;\r\n\r\n    _propagateChanges(fallbackValue?: any): void;\r\n\r\n    _onSelect(matOption: MatOption<any>, isUserInput: boolean): void;\r\n\r\n    _getChangeEvent(value: any): MatSelectChangeEvent;\r\n\r\n    _initializeSelection(): void;\r\n  }\r\n}\r\n","import { parseISO } from \"date-fns\";\r\nimport { Observable } from \"rxjs\";\r\nimport { filter, map } from \"rxjs/operators\";\r\nimport { Title } from \"@angular/platform-browser\";\r\nimport { NgModuleRef } from \"@angular/core\";\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, ActivationEnd, ActivationStart, Navigation, ParamMap, Router } from \"@angular/router\";\r\n\r\nimport { isValidDateString, parseDates } from \"./object.extensions\";\r\n\r\ndeclare module \"@angular/router\" {\r\n  export interface ParamMap {\r\n    /**\r\n     * Parses Url Parameter to specified Type\r\n     *\r\n     * @template T Parameter Type\r\n     * @param name Parameter Name\r\n     * @returns Parameter casted to specified Type\r\n     */\r\n    getAs<T = string>(name: string): T | null;\r\n  }\r\n\r\n  export interface Router {\r\n    /**\r\n     * Provides ability to subscribe to Navigation event for activated routes\r\n     *\r\n     * @param route Activated Route Navigation occurred to\r\n     * @param isTarget Indicates whether specified route is target route navigation occurs to\r\n     * @returns Information about a navigation operation.\r\n     */\r\n    onRouteRetained(route: ActivatedRoute, isTarget?: boolean): Observable<Navigation>;\r\n\r\n    /**\r\n     * Gets last successful navigation. Behaves similar to {@link Router.getCurrentNavigation}.\r\n     */\r\n    getLastSuccessfulNavigation(): Navigation;\r\n  }\r\n\r\n  export interface LoadedRouterConfig {\r\n    module: NgModuleRef<any>;\r\n  }\r\n}\r\n\r\nexport type RouteTitleProvider = (route: ActivatedRouteSnapshot, navigation?: Navigation) => string;\r\n\r\n/**\r\n * Extends route config with navigation extras.\r\n *\r\n * @example Route config:\r\n  {\r\n    path: \"..\",\r\n    data: { extras: { skipLocationChange: true } as NavigationExtras }\r\n  },\r\n * @param router Angular Router\r\n */\r\nexport function extendRouteConfigWithNavigationExtras(router: Router) {\r\n  router.events.subscribe(event => {\r\n    // extend existing routes with NavigationExtras property\r\n    if (event instanceof ActivationStart && event.snapshot.data?.extras) {\r\n      Object.assign(router.getCurrentNavigation()?.extras, event.snapshot.data?.extras);\r\n    }\r\n  });\r\n}\r\n\r\n/**\r\n * Binds route config title to website title.\r\n * Set \"suppressTitleUpdate\" to true if you want to avoid title change during navigation.\r\n *\r\n * @example Route config:\r\n * {\r\n      path: \"..\",\r\n      data: { title: string | (route: ActivatedRouteSnapshot, navigation: Navigation) => string }\r\n   }\r\n * @param router Angular Router\r\n * @param title Angular Title\r\n * @param prefix Application title prefix\r\n */\r\nexport function bindRouteConfigTitle(router: Router, title: Title, prefix: string) {\r\n  router.events.subscribe(event => {\r\n    // set website title\r\n    if (event instanceof ActivationEnd) {\r\n      let navigation = router.getCurrentNavigation();\r\n\r\n      if (event.snapshot.children.length == 0 && !navigation?.extras?.state?.suppressTitleUpdate) {\r\n        let routeTitle = event.snapshot.data?.title;\r\n\r\n        if (typeof routeTitle == \"function\") {\r\n          routeTitle = (routeTitle as RouteTitleProvider)(event.snapshot, navigation);\r\n        }\r\n\r\n        title.setTitle(routeTitle ? `${prefix} - ${routeTitle}` : prefix);\r\n      }\r\n    }\r\n  });\r\n}\r\n\r\n/**\r\n * Extends param map with typed parameters.\r\n * Determines value type based on structure and parses it.\r\n *\r\n * @example (route as ActivatedRoute).snapshot.queryParamMap.getAs<Date>(\"fromDate\");\r\n * @param router Angular Router\r\n */\r\nexport function extendParamMapWithTypedParameters(router: Router) {\r\n  // extending ParamMap class to have ability to consume parsed types\r\n  (router.routerState.snapshot.root.paramMap.constructor.prototype as ParamMap).getAs = function (this: ParamMap, name: string) {\r\n    let isNumber = new RegExp(/.\\./);\r\n    let isJsonObject = new RegExp(/^{(.+)}$/);\r\n\r\n    let value = this.get(name);\r\n\r\n    switch (true) {\r\n      case value == null:\r\n      case value == \"null\":\r\n        return null;\r\n\r\n      case value === \"true\":\r\n        return true;\r\n\r\n      case value === \"false\":\r\n        return false;\r\n\r\n      case isValidDateString(value):\r\n        return parseISO(value || \"\") as any;\r\n\r\n      case isJsonObject.test(value || \"\"):\r\n        let model = JSON.parse(value || \"null\");\r\n\r\n        if (model) {\r\n          parseDates(model);\r\n        }\r\n\r\n        return model as any;\r\n\r\n      case isNumber.test(value || \"\"):\r\n        return parseFloat(value || \"\");\r\n\r\n      case isFinite(value as any):\r\n        return parseInt(value || \"\", 10) as any;\r\n\r\n      default:\r\n        return value;\r\n    }\r\n  };\r\n}\r\n\r\n/**\r\n * Adds OnRouteRetained event. When navigation occurs to already activated route,\r\n * then OnRouteRetained event will trigger.\r\n *\r\n * @example (router as Router).onRouteRetained(route, isTarget).subscribe(navigation => {});\r\n * @param router Angular Router\r\n */\r\nexport function addOnRouteRetainedEvent(router: Router) {\r\n  (router.constructor.prototype as Router).onRouteRetained = function (this: Router, route: ActivatedRoute, isTarget = true) {\r\n    return this.events\r\n      .pipe(\r\n        filter(event =>\r\n          event instanceof ActivationEnd &&\r\n          event.snapshot.routeConfig == route.snapshot.routeConfig &&\r\n          (!isTarget || route.snapshot.children.length == 0)),\r\n        map(() => this.getCurrentNavigation() as Navigation));\r\n  };\r\n}\r\n\r\nexport function addGetLastSuccessfulNavigation(router: Router) {\r\n  (router.constructor.prototype as Router).getLastSuccessfulNavigation = function (this: Router) {\r\n    return (this as any).lastSuccessfulNavigation as Navigation;\r\n  };\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { Injectable, Injector, Type } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Data, RouterStateSnapshot, UrlTree } from \"@angular/router\";\r\n\r\nexport interface SequentialRouteData extends Data {\r\n  canActivateSequence?: Type<CanActivate>[];\r\n  canActivateChildSequence?: Type<CanActivateChild>[];\r\n}\r\n\r\n@Injectable({\r\n  providedIn: \"root\",\r\n})\r\nexport class SequentialGuard implements CanActivate, CanActivateChild {\r\n\r\n  constructor(\r\n    private injector: Injector,\r\n  ) {\r\n  }\r\n\r\n  public async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    let guardTypes = (route.data as SequentialRouteData).canActivateSequence;\r\n\r\n    if (!guardTypes?.length) {\r\n      throw new Error(\"SequentialGuard: missing \\\"CanActivate\\\" guards for RouteConfig \\\"data.canActivateSequence\\\" property\");\r\n    }\r\n\r\n    let result: boolean | UrlTree;\r\n\r\n    for (let guardType of guardTypes) {\r\n      result = await this.toPromise(this.injector.get(guardType).canActivate(route, state));\r\n\r\n      // return non-successful guard result early\r\n      if (result instanceof UrlTree || result === false) {\r\n        break;\r\n      }\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  public async canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n    let guardTypes = this.getGuardTypes(route);\r\n\r\n    if (!guardTypes?.length) {\r\n      throw new Error(\"SequentialGuard: missing \\\"CanActivateChild\\\" guards for RouteConfig \\\"data.canActivateChildSequence\\\" property\");\r\n    }\r\n\r\n    let result: boolean | UrlTree;\r\n\r\n    for (let guardType of guardTypes) {\r\n      result = await this.toPromise(this.injector.get(guardType).canActivateChild(route, state));\r\n\r\n      // return non-successful guard result early\r\n      if (result instanceof UrlTree || result === false) {\r\n        break;\r\n      }\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  private toPromise<TValue>(source: Observable<TValue> | Promise<TValue> | TValue): Promise<TValue> {\r\n    if (source instanceof Observable) {\r\n      return source.toPromise();\r\n    }\r\n    else if (source instanceof Promise) {\r\n      return source;\r\n    }\r\n    else {\r\n      return Promise.resolve(source);\r\n    }\r\n  }\r\n\r\n  private getGuardTypes(route: ActivatedRouteSnapshot) {\r\n    let parentRoute = route.parent;\r\n\r\n    let guardTypes: Type<CanActivateChild>[];\r\n\r\n    do {\r\n\r\n      guardTypes = (parentRoute.data as SequentialRouteData).canActivateChildSequence;\r\n\r\n    } while (!guardTypes && parentRoute.parent);\r\n\r\n    return guardTypes;\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["nameOf","lodashOrderBy"],"mappings":"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"}