{"version":3,"file":"herlhay-helpers.mjs","sources":["../../../herlhay-helpers/src/lib/shared/prototypes/prototypes.ts","../../../herlhay-helpers/src/lib/shared/models/index.model.ts","../../../herlhay-helpers/src/lib/config/index.config.ts","../../../herlhay-helpers/src/lib/shared/classes/page-loader.class.ts","../../../herlhay-helpers/src/lib/shared/classes/environment.class.lite.ts","../../../herlhay-helpers/src/lib/shared/classes/environment.class.ts","../../../herlhay-helpers/src/lib/config/validation-messages.config.ts","../../../herlhay-helpers/src/environments/environment.ts","../../../herlhay-helpers/src/lib/services/app.class.ts","../../../herlhay-helpers/src/lib/services/encryptor.class.ts","../../../herlhay-helpers/src/lib/services/encryptor.service.ts","../../../herlhay-helpers/src/lib/services/cache.class.ts","../../../herlhay-helpers/src/lib/services/cache.service.ts","../../../herlhay-helpers/src/lib/services/local-cache.class.ts","../../../herlhay-helpers/src/lib/services/storage.class.ts","../../../herlhay-helpers/src/lib/services/storage.service.ts","../../../herlhay-helpers/src/lib/services/local-cache.service.ts","../../../herlhay-helpers/src/lib/services/api.service.ts","../../../herlhay-helpers/src/lib/services/app.service.ts","../../../herlhay-helpers/src/lib/services/utility.class.ts","../../../herlhay-helpers/src/lib/shared/functions/base-functions.ts","../../../herlhay-helpers/src/lib/services/number-to-words.service.ts","../../../herlhay-helpers/src/lib/shared/pipes/utility.pipe.ts","../../../herlhay-helpers/src/lib/services/utility.service.lite.ts","../../../herlhay-helpers/src/lib/services/page-loader.service.ts","../../../herlhay-helpers/src/lib/shared/models/IMenuItem.ts","../../../herlhay-helpers/src/public-api.tsh.ts","../../../herlhay-helpers/src/public-api.lite.ts","../../../herlhay-helpers/src/herlhay-helpers.ts"],"sourcesContent":["\ndeclare global {\n  interface String {\n    stripChar(character?: string): string;\n    lastStripChar(character?: string): string;\n    unChar(character?: string, replacement?: string): string;\n    /**\n     * Converts Pascal case to Sentence case\n     * @example 'smallBook'.toSentenceCase() = 'Small Book'\n     */\n    toSentenceCase(): string;\n    /**\n     * Replaces all occurrences of a substring\n     * @returns The string after replacement\n     */\n    replaceAllSubStr(character?: string, replacement?: string): string;\n    /**\n     *\n     * @param character Character to add before string\n     * @param expectedLength Expected length of the string after addition of the character\n     */\n    addPrecedingChar(character: string, expectedLength: number): string;\n    /**\n     * Convert a text into camel case\n     * @param text\n     */\n    toCamelCase(): string;\n    /**\n     * To title case\n     * @param text\n     */\n    toTitleCase(): string;\n  }\n\n  interface Array<T> {\n    merge(): T;\n    /**\n     * @param index The index to select from the end.\n     * @defaultValue 0\n     * @example ['a','b','c'].reverseIndex(1) returns 'b'\n     * @example ['a','b','c','d','e'].reverseIndex(2) returns 'c'\n     */\n    reverseIndex(index?: number): T;\n    lastItem(): T;\n    /**\n     * Shuffles the content of an array\n     */\n    shuffle(): T[];\n\n    /**\n     * Sort by the length of the field specified in ascending order\n     * @param field Field name to compare with\n     * @param reverse Should it be in a descending order\n     */\n    sortByFieldLength(field: keyof T, reverse?: boolean): T[];\n\n    /**\n     *\n     * @param field Field name to compare with\n     * @param isString Is the data type of the field a string\n     * @param reverse Should it be in a descending order\n     */\n    sort2(field: keyof T, isString?: boolean, reverse?: boolean): T[];\n    /**\n     * Detects the data type of the field to sort by\n     * @param field Field name to compare with\n     * @param reverse Should it be in a descending order\n     */\n    sort3(field: keyof T, reverse?: boolean): T[];\n    /**\n     * Remove items from an array that don't have values in any of its fields\n     * @param expectedFields Fields to check for emptiness, the function will remove the items that don't have any value in all the fields specified\n     */\n    removeEmptyItems(\n      expectedFields?: (keyof T)[],\n      config?: {\n        /**\n         * Specify whether to check the value in boolean fields.\n         * @defaultValue `false`\n         */\n        ignoreBooleanFields?: boolean;\n        /**\n         * Specify whether to check for emptiness in the 'expectedFields' or check for emptiness in the other fields excluding the fields specified\n         * @defaultValue `included`\n         */\n        fieldsType?: 'included' | 'excluded';\n      },\n    ): T[];\n\n    /**\n     * Converts an array to a key value pair.\n     * @param keyField The field to be used as the key\n     * @returns An index object containing the keyField as the index key and each item of the array as value assigned to each index\n     */\n    toMap(keyField: keyof T): { [x: string]: T };\n    /**\n     * Converts an array to a key value pair.\n     * @param keyMap Function to set the key of the map\n     */\n    toMap(keyMap: (row: T) => string | number): { [x: string]: T };\n    /**\n     * Converts an array to a key value pair.\n     * @param keyField The field to be used as the key\n     * @param valueMap Function to set the values of each key in the map\n     * @returns An index object containing the keyField as the index key and each item of the array as value assigned to each index\n     */\n    toMap<NT>(keyField: keyof T, valueMap: (item: T) => NT): { [x: string]: NT };\n\n    /**\n     * Groups an array by unique entries in a field.\n     * @param arr Array to be grouped\n     * @param keyField The field to be used as the key\n     */\n    groupBy(keyField: keyof T, keyMap?: (value) => string): { [x: string]: T[] };\n\n    /**\n     * Turns an array to a map.\n     */\n    toBooleanMap(): { [x: string]: boolean };\n  }\n  interface Function {\n    clone: any;\n  }\n}\n//#region  string */\nString.prototype.stripChar = function (this: string, character = '/') {\n  return (this + '').replace(character, '');\n};\nString.prototype.lastStripChar = function (this: string, character = '/') {\n  return this[this?.length - 1] == character ? this.slice(0, this.length - 1) : this;\n};\nString.prototype.unChar = function (this: string, character = '/', replacement = '') {\n  let te = '';\n  for (let i = 0; i < this.length; i++) {\n    const e = this[i];\n    te += e != character ? e : '';\n  }\n  return te.split(character).join(replacement);\n};\nString.prototype.toSentenceCase = function (this: string) {\n  return this.replace(/([A-Z])/g, ' $1');\n};\nString.prototype.replaceAllSubStr = function (this: string, character = '/', replacement = '') {\n  return this.split(character).join(replacement);\n};\nString.prototype.addPrecedingChar = function (\n  this: string,\n  character: string,\n  expectedLength: number,\n) {\n  if (this.length >= expectedLength) return this;\n  return character.repeat(expectedLength - this.length) + this;\n};\nString.prototype.toCamelCase = function (this: string) {\n  return this.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, function (match, index) {\n    if (+match === 0) return ''; // or if (/\\s+/.test(match)) for white spaces\n    return index === 0 ? match.toLowerCase() : match.toUpperCase();\n  });\n};\nString.prototype.toTitleCase = function (this: string) {\n  const result = this.replace(/([A-Z])/g, ' $1');\n  return result.charAt(0).toUpperCase() + result.slice(1);\n};\n//#endregion\n\n//#region  array */\nArray.prototype.merge = function <T>(this: Array<T>) {\n  let r = '';\n  for (const i of this) {\n    r += i;\n  }\n  return r;\n};\nArray.prototype.reverseIndex = function <T>(this: Array<T>, index = 0) {\n  return this[this?.length - (1 + index)];\n};\nArray.prototype.lastItem = function <T>(this: Array<T>) {\n  return this.reverseIndex();\n};\nArray.prototype.sortByFieldLength = function <T>(\n  this: Array<T>,\n  field: keyof T,\n  reverse: boolean = false,\n) {\n  if (reverse) {\n    return this.filter((x) => x != null).sort(\n      (b, a) => (a[field as any]?.length || 0) - (b[field as any]?.length || 0),\n    );\n  } else {\n    return this.filter((x) => x != null).sort(\n      (a, b) => (a[field as any]?.length || 0) - (b[field as any]?.length || 0),\n    );\n  }\n};\nArray.prototype.sort2 = function <T>(\n  this: Array<T>,\n  field: keyof T,\n  isString: boolean = false,\n  reverse: boolean = false,\n) {\n  if (reverse)\n    return isString\n      ? this.filter((x) => x != null).sort((b, a) =>\n          sortAlphaNum(a[field]?.toString(), b[field]?.toString()),\n        )\n      : this.filter((x) => x != null).sort(\n          (b, a) => (a[field as any] || 0) - (b[field as any] || 0),\n        );\n  else\n    return isString\n      ? this.filter((x) => x != null).sort((a, b) =>\n          sortAlphaNum(a[field]?.toString(), b[field]?.toString()),\n        )\n      : this.filter((x) => x != null).sort(\n          (a, b) => (a[field as any] || 0) - (b[field as any] || 0),\n        );\n};\nArray.prototype.sort3 = function <T>(this: Array<T>, field: keyof T, reverse: boolean = false) {\n  let isString: boolean = this.some((x) => isNaN(x[field] as any));\n  return isString ? this.sort2(field, true, reverse) : this.sort2(field, false, reverse);\n};\nvar reA = /[^a-zA-Z]/g;\nvar reN = /[^0-9]/g;\n\nfunction sortAlphaNum(a: string, b: string) {\n  var aA = a?.toUpperCase()?.replace(reA, '');\n  var bA = b?.toUpperCase()?.replace(reA, '');\n  if (aA === bA) {\n    var aN = parseInt(a?.replace(reN, ''), 10);\n    var bN = parseInt(b?.replace(reN, ''), 10);\n    return aN === bN ? 0 : aN > bN ? 1 : -1;\n  } else {\n    return aA > bA ? 1 : -1;\n  }\n}\n\nArray.prototype.removeEmptyItems = function <T>(\n  this: Array<T>,\n  expectedFields?: (keyof T)[],\n  config?: {\n    ignoreBooleanFields?: boolean;\n    fieldsType?: 'included' | 'excluded';\n  },\n) {\n  // debugger;\n  const ignoreBooleanFields = config?.ignoreBooleanFields == true;\n  const fieldsType = config?.fieldsType || 'included';\n  if (!this.length) return this;\n  let fieldList: string[];\n  if (fieldsType == 'included')\n    fieldList = expectedFields?.length ? (expectedFields as string[]) : Object.keys(this[0]);\n  else if (fieldsType == 'excluded')\n    fieldList = expectedFields?.length\n      ? Object.keys(this[0]).filter((x) => !expectedFields.includes(x as any))\n      : Object.keys(this[0]);\n  const removedItems: T[] = [];\n  if (fieldList) {\n    for (let i = 0; i < this.length; i++) {\n      if (ignoreBooleanFields && i == 0) {\n        fieldList = fieldList.filter((f) => typeof this[0][f] != 'boolean');\n      }\n      const item = this[i];\n      if (fieldList.some((f) => item[f] != null)) continue;\n      removedItems.push(...this.splice(i, 1));\n      i = i--;\n    }\n  }\n  return removedItems;\n};\nArray.prototype.toMap = function <T, NT>(\n  this: Array<T>,\n  arg1: keyof T | ((row: T) => string | number),\n  valueMap?: (item: T) => NT,\n) {\n  // debugger;\n  const ret: { [x: string]: T | NT } = {};\n  if (typeof arg1 == 'function') for (const item of this) ret[arg1(item)] = item;\n  else if (valueMap) for (const item of this) ret[item[arg1?.toString()]] = valueMap(item);\n  else for (const item of this) ret[item[arg1?.toString()]] = item;\n\n  return ret;\n};\nArray.prototype.groupBy = function <T>(\n  this: Array<T>,\n  keyField: keyof T,\n  keyMap?: (value) => string,\n): { [x: string]: T[] } {\n  // debugger;\n  const ret: { [x: string]: T[] } = {};\n  for (const iterator of this) {\n    const group = keyMap ? keyMap(iterator[keyField]) : (iterator[keyField] as string);\n    if (ret[group]) ret[group].push(iterator);\n    else ret[group] = [iterator];\n  }\n\n  return ret;\n};\nArray.prototype.toBooleanMap = function (this: Array<any>): { [x: string]: boolean } {\n  // debugger;\n  const ret: { [x: string]: boolean } = {};\n  for (const iterator of this) {\n    ret[iterator] = true;\n  }\n  return ret;\n};\n\nArray.prototype.shuffle = function <T>(this: Array<T>) {\n  // debugger;\n  const newArr: T[] = [];\n  while (this.length) {\n    newArr.push(...this.splice(Math.floor(Math.random() * this.length - 1), 1));\n  }\n  return newArr;\n};\n\n//#endregion\n\n//#region Function\nFunction.prototype.clone = function () {\n  var that = this;\n  var temp = function temporary() {\n    return that.apply(this, arguments);\n  };\n  for (var key in this) {\n    if (this.hasOwnProperty(key)) {\n      temp[key] = this[key];\n    }\n  }\n  return temp;\n};\n//#endregion\n\nexport {};\n","import { Observable } from 'rxjs';\nimport { SVGIconType } from '../components/svg-icon/svg-icon.model';\nimport { FormControl } from '@angular/forms';\n\n//#region inputs\nexport type InputType =\n  | 'autocomplete'\n  | 'button'\n  | 'buttonToggle'\n  | 'checkbox'\n  | 'checkedbox'\n  | 'date'\n  | 'date-range'\n  | 'datetime-local'\n  | 'dhm'\n  | 'email'\n  | 'file'\n  | 'form'\n  | 'formgroup'\n  | 'fileButton'\n  | 'number'\n  | 'password'\n  | 'progress'\n  | 'percentage'\n  | 'radio'\n  | 'select'\n  | 'tel'\n  | 'text'\n  | 'textarea'\n  | 'time'\n  | 'toggle'\n  | 'viewer';\n//#endregion\n\n//#region key value pair\nexport interface IKVP {\n  readonly key?: any;\n  value?: string | boolean | number;\n  cls?: string;\n}\nexport class KVP implements IKVP {\n  readonly key: string;\n  value?: string | boolean | number;\n  cls?: string;\n  constructor(key: string, value?: string | boolean | number, cls?: string) {\n    this.key = key;\n    this.value = value;\n    this.cls = cls;\n  }\n}\nexport class FKVP extends KVP {\n  label: string;\n  editable?: boolean;\n  editing?: boolean;\n  route?: string;\n  routeFunc?: (item) => Promise<string> | Observable<string>;\n  hint?: string;\n  action?: any;\n  isPhone?: boolean;\n  isEmail?: boolean;\n  formatter?: (val: any) => string | Promise<string> | Observable<string>;\n  constructor(\n    key: string,\n    label: string,\n    editable?: boolean,\n    value?: string | boolean | number,\n    public inputType?: InputType,\n    hint?: string,\n    action?: any,\n    formatter?: (val: any) => string | Promise<string>,\n    cls?: string,\n    route?: string\n  ) {\n    super(key, value, cls);\n    this.label = label;\n    this.hint = hint;\n    this.editable = editable;\n    this.action = action;\n    this.formatter = formatter;\n    this.route = route;\n  }\n}\n//#endregion\n\n//#region lbl\nexport interface ILbl extends IKVP {\n  hint?: string;\n}\nexport class Lbl implements ILbl {\n  readonly key: string;\n  value: string | boolean | number;\n  hint?: string;\n  cls?: string;\n  constructor(key: string, value?: string | boolean | number, hint?: string, cls?: string) {\n    this.key = key;\n    this.value = value || '-';\n    this.hint = hint;\n    this.cls = cls;\n  }\n}\n//#endregion\n//#region btn\nexport interface IBtn extends IKVP {\n  action?: (...args) => void;\n  group?: BtnGroup;\n  help?: string;\n  icon?: SVGIconType;\n  iconBtn?: boolean;\n  disabled?: boolean;\n  loading?: boolean;\n  showHelpIcon?: boolean;\n  label?: string;\n  type?: BtnType;\n  extra?: any;\n}\nexport class Btn implements IBtn {\n  cls?: string;\n  group?: BtnGroup;\n  help?: string;\n  icon?: SVGIconType;\n  iconBtn?: boolean;\n  readonly action?: (data?, ...args) => void;\n  readonly key?: string;\n  showHelpIcon?: boolean;\n  label?: string;\n  route?: string;\n  type?: BtnType;\n  extra?: any;\n  loading?: boolean;\n  disabled?: boolean;\n\n  constructor(\n    key: string,\n    action?: (data?, ...args) => any,\n    type?: BtnType,\n    icon?: SVGIconType,\n    cls?: string,\n    help?: string,\n    showHelpIcon?: boolean,\n    loading?: boolean,\n    disabled?: boolean\n  ) {\n    this.key = key;\n    this.action = action;\n    this.type = type;\n    this.icon = icon;\n    this.cls = cls;\n    this.help = help;\n    this.showHelpIcon = showHelpIcon;\n    this.loading = loading;\n    this.disabled = disabled;\n  }\n}\nexport class BtnLg implements IBtn {\n  readonly key: string;\n  value: string | boolean | number;\n  readonly action?: () => void;\n  cls?: string;\n  extra?: any;\n  constructor(key: string, value?: string | boolean | number, action?: any, cls?: string, extra?) {\n    this.key = key;\n    this.value = value || '-';\n    this.action = action;\n    this.cls = cls;\n    this.extra = extra;\n  }\n}\nexport type BtnType =\n  | 'clear'\n  | 'clear-pm'\n  | 'close'\n  | 'danger-outline'\n  | 'danger'\n  | 'dark-outline'\n  | 'dark'\n  | 'light'\n  | 'outline-nm'\n  | 'outline'\n  | 'outline-light'\n  | 'primary'\n  | 'secondary'\n  | 'success';\nexport type BtnGroup =\n  | 'add'\n  | 'clone'\n  | 'close'\n  | 'create'\n  | 'delete'\n  | 'download'\n  | 'edit'\n  | 'link'\n  | 'search'\n  | 'show'\n  | 'submit'\n  | 'upload';\nexport type IconType =\n  | 'access'\n  | 'add'\n  | 'adjust'\n  | 'calendar'\n  | 'cash'\n  | 'checked'\n  | 'checklist'\n  | 'clone'\n  | 'close'\n  | 'cogs'\n  | 'delete'\n  | 'download'\n  | 'edit'\n  | 'export'\n  | 'file'\n  | 'filter'\n  | 'generate'\n  | 'guard'\n  | 'history'\n  | 'home'\n  | 'import'\n  | 'info'\n  | 'link'\n  | 'lock'\n  | 'next'\n  | 'pen'\n  | 'post'\n  | 'previous'\n  | 'renew'\n  | 'save'\n  | 'search'\n  | 'show'\n  | 'snooze'\n  | 'unlock'\n  | 'upload'\n  | 'view'\n  | 'users'\n  | 'recycle'\n  | 'truck'\n  | 'tag'\n  | 'receipt'\n  | 'bank'\n  | 'arrowh';\n//#endregion\n\nexport interface ICodeTitle {\n  code: string;\n  title: string;\n}\n\nexport interface ICodeDescription {\n  code: string;\n  description: string;\n}\n\nexport interface IMktDescription {\n  mktEventCode: string;\n  description: string;\n}\n\nexport interface ICode {\n  code: string;\n}\nexport enum EMenuLocation {\n  viewPage1 = 'viewPage',\n}\nexport enum Day {\n  sunday = 'Sunday',\n  monday = 'Monday',\n  tuesday = 'Tuesday',\n  wednesday = 'Wednesday',\n  thursday = 'Thursday',\n  friday = 'Friday',\n  saturday = 'Saturday',\n}\nexport enum EPageType {\n  clonePage = 'Clone',\n  editPage = 'Edit',\n  viewPage = 'View',\n  createPage = 'Create',\n  indexPage = 'Index',\n}\nexport enum ELanguage {\n  EN = 'EN',\n  FR = 'FR',\n}\n\nexport enum EValidationType {\n  email = 'email',\n  entityNumber = 'entityNumber',\n  maxlength = 'maxlength',\n  minlength = 'minlength',\n  mobile = 'mobile',\n  name = 'name',\n  normal = 'normal',\n  passwordNotMatch = 'passwordNotMatch',\n  pattern = 'pattern',\n  required = 'required',\n  unique = 'unique',\n  custom = 'custom',\n}\nexport interface IValidationMessage {\n  type: EValidationType;\n  message: string;\n}\n\ninterface Sort {\n  sorted: boolean;\n  unsorted: boolean;\n  empty: boolean;\n}\n\ninterface IPage<T> {\n  content: T[];\n  number: number;\n  size: number;\n  totalElements: number;\n  totalPages: number;\n  last: boolean;\n  first: boolean;\n  sort: Sort;\n  numberOfElements: number;\n  empty: boolean;\n}\n\nexport interface ISearchQuery {\n  /**\n   * Starts at 1\n   */\n  page?: number;\n  limit?: number;\n  search?: string;\n  [x: string]: string | number | boolean;\n}\nexport interface ISearchResponse<T = any> {\n  page: IPage<T>;\n  listSize: number;\n  pageNumber?: number;\n  pageSize?: number;\n  searchCriteria: any;\n}\n\nexport interface ISearchResponse<T = any> {\n  page: IPage<T>;\n  listSize: number;\n  pageNumber?: number;\n  pageSize?: number;\n  searchCriteria: any;\n}\n\nexport interface ISearchResponse2<T = any> {\n  content: T[];\n  empty: boolean;\n  first: boolean;\n  last: boolean;\n  number: number;\n  numberOfElements: number;\n  size: number;\n  totalElements: number;\n  totalPages: number;\n  sort: {\n    sorted: boolean;\n    unsorted: boolean;\n    empty: boolean;\n  };\n}\n\nexport type ImageType = 'pp' | 'other';\nexport interface ITab {\n  id?: string;\n  target?: string;\n  label: string;\n  form?: string;\n  postFunction?: (\n    data: any,\n    productCode?: string\n  ) => Observable<{\n    data: any;\n    productCode: string;\n  }>;\n  putFunction?: (\n    data: any,\n    productCode: string\n  ) => Observable<{\n    data: any;\n    productCode: string;\n  }>;\n  data?: any;\n}\nexport interface CustomValidationError {\n  custom?: string;\n  maxlength?: boolean;\n  maxLength?: boolean;\n  minlength?: boolean;\n  minLength?: boolean;\n  notFound?: boolean;\n  notUnique?: boolean;\n  pattern?: boolean;\n  required?: boolean;\n  used?: boolean;\n}\nexport enum EMenuType {\n  horizontal = 'H',\n  vertical = 'V',\n}\nexport interface IValueLabel<T = string> {\n  value: T;\n  label: string;\n}\n\nexport interface IConfigImages {\n  favicon: string;\n  watermark: string;\n  logo: {\n    dark: string;\n    light: string;\n  };\n  pp: {\n    src: string;\n    min: string;\n  };\n  other: {\n    src: string;\n    min: string;\n  };\n}\nexport class Constant {\n  //   constructor() {}\n}\n\nexport interface ITableName {\n  schema: string;\n  primaryTable: string;\n}\nexport interface IState extends IListValue<number> {\n  alias: string;\n}\n\nexport interface IListValue<TID = string, TValue = any> {\n  name: string;\n  value?: TValue;\n  id?: TID;\n}\n\nexport enum EPeriod {\n  daily = 'daily',\n  weekly = 'weekly',\n  monthly = 'monthly',\n  annually = 'annually',\n  yearly = 'yearly',\n\n  today = 'today',\n  week = 'week',\n  month = 'month',\n  year = 'year',\n  annual = 'annual',\n}\n\nexport type PartialNull<T> = {\n  [P in keyof T]: T[P] | null;\n};\n\nexport type IStrictFormGroup<T> = {\n  [x in keyof T]: FormControl<T[x]>;\n};\n\nexport interface IObjectLiteral {\n  [x: string]: any;\n}\n","import { Day, EPeriod, ICodeTitle, IListValue, IValueLabel } from '../shared/models/index.model';\nimport '../shared/prototypes/prototypes';\n\nexport class Config {\n  static logoLightPath: string;\n  static logoDarkPath: string;\n  static Optioner: { num: number; letter: string }[] = [\n    { num: 1, letter: 'a' },\n    { num: 2, letter: 'b' },\n    { num: 3, letter: 'c' },\n    { num: 4, letter: 'd' },\n    { num: 5, letter: 'e' },\n    { num: 6, letter: 'f' },\n    { num: 7, letter: 'g' },\n    { num: 8, letter: 'h' },\n    { num: 9, letter: 'i' },\n    { num: 10, letter: 'j' },\n  ];\n  static Months: { id: number; short: string; isoStr: string; long: string }[] = [\n    { id: 0, short: 'Jan', isoStr: '01', long: 'January' },\n    { id: 1, short: 'Feb', isoStr: '02', long: 'February' },\n    { id: 2, short: 'Mar', isoStr: '03', long: 'March' },\n    { id: 3, short: 'Apr', isoStr: '04', long: 'April' },\n    { id: 4, short: 'May', isoStr: '05', long: 'May' },\n    { id: 5, short: 'Jun', isoStr: '06', long: 'June' },\n    { id: 6, short: 'Jul', isoStr: '07', long: 'July' },\n    { id: 7, short: 'Aug', isoStr: '08', long: 'August' },\n    { id: 8, short: 'Sep', isoStr: '09', long: 'September' },\n    { id: 9, short: 'Oct', isoStr: '10', long: 'October' },\n    { id: 10, short: 'Nov', isoStr: '11', long: 'November' },\n    { id: 11, short: 'Dec', isoStr: '12', long: 'December' },\n  ];\n  static ShortMonthsMap = Config.Months.toMap((x) => x.short?.toLowerCase());\n  static readonly boolList: IValueLabel<boolean>[] = [\n    { value: true, label: 'Yes' },\n    { value: false, label: 'No' },\n  ];\n  static Days = [\n    { index: 0, day: Day.sunday },\n    { index: 1, day: Day.monday },\n    { index: 2, day: Day.tuesday },\n    { index: 3, day: Day.wednesday },\n    { index: 4, day: Day.thursday },\n    { index: 5, day: Day.friday },\n    { index: 6, day: Day.saturday },\n  ];\n\n  static Numbers: { num: number; label: string }[] = [\n    { num: 1, label: 'First' },\n    { num: 2, label: 'Second' },\n    { num: 3, label: 'Third' },\n    { num: 4, label: 'Fourth' },\n    { num: 5, label: 'Fifth' },\n    { num: 6, label: 'Sixth' },\n    { num: 7, label: 'Seventh' },\n    { num: 8, label: 'Eighth' },\n    { num: 9, label: 'Ninth' },\n    { num: 10, label: 'Tenth' },\n  ];\n\n  static sexes = ['Female', 'Male'];\n\n  static Currency = '₦';\n  static TimeStampDay = 86400000;\n  static TimeStampWeek = 604800000;\n  static placeholderImage = `/assets/images/placeholder.jpg`;\n\n  static periods: IListValue<EPeriod>[] = [\n    { id: EPeriod.today, name: 'Today' },\n    { id: EPeriod.week, name: 'This Week' },\n    { id: EPeriod.month, name: 'This Month' },\n    { id: EPeriod.year, name: 'This Year' },\n  ];\n  static periodsWithAnnual: IListValue<EPeriod>[] = [\n    { id: EPeriod.today, name: 'Today' },\n    { id: EPeriod.week, name: 'This Week' },\n    { id: EPeriod.month, name: 'This Month' },\n    { id: EPeriod.annual, name: 'This Year' },\n  ];\n  static periodAdverbs: IListValue<EPeriod>[] = [\n    { id: EPeriod.daily, name: 'Daily' },\n    { id: EPeriod.weekly, name: 'Weekly' },\n    { id: EPeriod.monthly, name: 'Monthly' },\n    { id: EPeriod.annually, name: 'Annually' },\n  ];\n\n  static organisationPlaceholder = '{{org}}';\n  static infoMail: string;\n  static salesMail: string;\n  static supportMail: string;\n  static supportURL: string;\n  static authBaseRoute: string;\n  static appName: string;\n  static states = [\n    {\n      isoCode: 'NG-FC',\n      name: 'Abuja Federal Capital Territory',\n    },\n    { isoCode: 'NG-AB', name: 'Abia' },\n    { isoCode: 'NG-AD', name: 'Adamawa' },\n    { isoCode: 'NG-AK', name: 'Akwa Ibom' },\n    { isoCode: 'NG-AN', name: 'Anambra' },\n    { isoCode: 'NG-BA', name: 'Bauchi' },\n    { isoCode: 'NG-BY', name: 'Bayelsa' },\n    { isoCode: 'NG-BE', name: 'Benue' },\n    { isoCode: 'NG-BO', name: 'Borno' },\n    { isoCode: 'NG-CR', name: 'Cross River' },\n    { isoCode: 'NG-DE', name: 'Delta' },\n    { isoCode: 'NG-EB', name: 'Ebonyi' },\n    { isoCode: 'NG-ED', name: 'Edo' },\n    { isoCode: 'NG-EK', name: 'Ekiti' },\n    { isoCode: 'NG-EN', name: 'Enugu' },\n    { isoCode: 'NG-GO', name: 'Gombe' },\n    { isoCode: 'NG-IM', name: 'Imo' },\n    { isoCode: 'NG-JI', name: 'Jigawa' },\n    { isoCode: 'NG-KD', name: 'Kaduna' },\n    { isoCode: 'NG-KN', name: 'Kano' },\n    { isoCode: 'NG-KT', name: 'Katsina' },\n    { isoCode: 'NG-KE', name: 'Kebbi' },\n    { isoCode: 'NG-KO', name: 'Kogi' },\n    { isoCode: 'NG-KW', name: 'Kwara' },\n    { isoCode: 'NG-LA', name: 'Lagos' },\n    { isoCode: 'NG-NA', name: 'Nasarawa' },\n    { isoCode: 'NG-NI', name: 'Niger' },\n    { isoCode: 'NG-OG', name: 'Ogun' },\n    { isoCode: 'NG-ON', name: 'Ondo' },\n    { isoCode: 'NG-OS', name: 'Osun' },\n    { isoCode: 'NG-OY', name: 'Oyo' },\n    { isoCode: 'NG-PL', name: 'Plateau' },\n    { isoCode: 'NG-RI', name: 'Rivers' },\n    { isoCode: 'NG-SO', name: 'Sokoto' },\n    { isoCode: 'NG-TA', name: 'Taraba' },\n    { isoCode: 'NG-YO', name: 'Yobe' },\n    { isoCode: 'NG-ZA', name: 'Zamfara' },\n  ];\n}\n","export class Loader {\n  loaderText: string;\n  private _pageLoaders: 1[] = [];\n\n  constructor() {}\n\n  get isLoading() {\n    return this._pageLoaders?.length > 0;\n  }\n\n  startPl(value = 1) {\n    for (let index = 0; index < value; index++) {\n      this._pageLoaders.push(1);\n    }\n    // console.log('length at start',this._pageLoaders.length)\n    return this._pageLoaders?.length;\n  }\n\n  restartPl() {\n    this._pageLoaders = [];\n    this.startPl();\n  }\n\n  stopPl(value = 1) {\n    for (let index = 0; index < value; index++) {\n      this._pageLoaders.pop();\n    }\n    if (!this._pageLoaders?.length && this.onLoaderStopped)\n      this.onLoaderStopped();\n    // console.log('length at end', this._pageLoaders.length)\n    return this._pageLoaders?.length;\n  }\n\n  /**\n   * Function to call when the loader stack is empty\n   */\n  onLoaderStopped: (...args) => any;\n  stopAllPls() {\n    this._pageLoaders = [];\n  }\n}\n","import { Config } from '../../config/index.config';\nimport { IMenuItem } from '../models/IMenuItem';\nimport { Loader } from './page-loader.class';\n\n/**\n * Class for the environment object\n */\nexport class EnvironmentClass {\n  /**\n   * List of menu items\n   */\n  menus: IMenuItem[];\n  /**\n   * Current page title\n   */\n  pageTitle: string;\n  /**\n   * Defualt app currency\n   */\n  currency = '₦';\n  /**\n   * Environment name\n   */\n  readonly name: string;\n  /**\n   * name of local storage location\n   */\n  storageKey: 'localStorage' | 'sessionStorage' = 'localStorage';\n  /**\n   * Name of the app\n   */\n  appName: string;\n  /**\n   * Whether to use authentication\n   */\n  authenticate?: boolean;\n  /**\n   * Whether to product logs or not. True means produce logs\n   */\n  debug?: boolean;\n  organisationName: string;\n  /**\n   * storage key for user object\n   */\n  readonly userStorageKey = 'user';\n  /**\n   * storage key for embedded user object\n   */\n  readonly enbeddedUserStorageKey = 'enbedded-user';\n  /**\n   * storage key for super user object\n   */\n  readonly adminUserStorageKey = 'super-user';\n  /**\n   * page loader object\n   */\n  pageLoader = new Loader();\n  /** API Request timeout period\n   *  Enter value in millisecond or Date object\n   */\n  requestTimeout: number | Date = new Date(Config.TimeStampDay * 365 + Date.now());\n  versionNo: string;\n  mixPanelToken: string;\n  activeSubdomainSite: string;\n  useWebSocket: boolean;\n  isSuperAdmin: boolean;\n  clientAdminUrl: any;\n  encryptAPIRequests: boolean;\n  isEmbedMode: boolean;\n  readonly embedKey = 'weffwdfuion';\n  tawkIOConfig: {\n    propertyId: string;\n    widgetId: string;\n  };\n  /**\n   * User's auth token\n   */\n  token: string;\n  domain?: string;\n  /**\n   * Set the value of the page loader\n   */\n  set loading(v: boolean) {\n    if (v) this.pageLoader.startPl();\n    else this.pageLoader.stopPl();\n  }\n\n  /**\n   *\n   * @param production Specify whether it is a production environment\n   * @param name Name of the environment\n   * @param apiBaseUrl Base url of the server api\n   */\n  constructor(public production: boolean, name: string, public apiBaseUrl?: string) {\n    if (!production) this.debug = true;\n    this.name = name;\n  }\n\n  updateEnvironment(env: EnvironmentClass) {\n    Object.assign(this, env);\n  }\n\n  /**\n   * Whether it is the dev environment or not\n   */\n  get isDev() {\n    return !this.production;\n  }\n}\n \n","import { ActivatedRoute } from '@angular/router';\nimport { WebSocketSubject } from 'rxjs/webSocket';\nimport { EnvironmentClass } from './environment.class.lite';\n \n/**\n * Class for the environment object\n */\nexport class Environment extends EnvironmentClass {\n  /**\n   * Current activated route\n   */\n  activatedRoute: ActivatedRoute;\n  socket: WebSocketSubject<any>;\n  /**\n   *\n   * @param production Specify whether it is a production environment\n   * @param name Name of the environment\n   * @param apiBaseUrl Base url of the server api\n   */\n  constructor(public override production: boolean, name: string, public override apiBaseUrl?: string) {\n    super(production, name, apiBaseUrl);\n  }\n \n}\n","\n\nexport const configValidationMessages = {\n  normal: [ \n    { type: 'required', message: ' is required.' },\n    {\n      type: 'maxLength',\n      message: ' must be at most {{maxLength}} characters long.',\n    },\n    {\n      type: 'maxlength',\n      message: ' must be at most {{maxLength}} characters long.',\n    },\n    {\n      type: 'minLength',\n      message: ' must be at least {{minLength}} characters long.',\n    },\n    {\n      type: 'minlength',\n      message: ' must be at least {{minLength}} characters long.',\n    },\n    {\n      type: 'notUnique',\n      message: ' already exists.',\n    },\n    {\n      type: 'date',\n      message: 'Date should be in the dd/mm/yyyy format',\n    },\n    {\n      type: 'used',\n      message: ' has already been used.',\n    },\n    { type: 'email', message: ' is invalid.' },\n    { type: 'pattern', message: ' is invalid.' },\n    { type: 'notFound', message: \" doesn't exist\" },\n    { type: 'custom' },\n  ],\n  address: [\n    { type: 'required', message: 'Address is required.' },\n    {\n      type: 'minlength',\n      message: 'Address must be at least 3 characters long.',\n    },\n  ],\n  addressLGA: [\n    {\n      type: 'required',\n      message: 'Local government of address is required.',\n    },\n    {\n      type: 'minlength',\n      message:\n        'Local government of address must be at least 2 characters long.',\n    },\n  ],\n  className: [\n    { type: 'required', message: 'Class name is required.' },\n    {\n      type: 'minlength',\n      message: 'Class name must be at least 2 characters long.',\n    },\n  ],\n  classSection: [\n    { type: 'required', message: 'Class section is required.' },\n    {\n      type: 'minlength',\n      message: 'Class section must be at least 1 character long.',\n    },\n  ],\n  email: [\n    { type: 'required', message: 'Email is required.' },\n    {\n      type: 'minlength',\n      message: 'Email must be at least 5 characters long.',\n    },\n    { type: 'pattern', message: 'Email must be valid.' },\n    { type: 'email', message: 'Email must be valid' },\n    {\n      type: 'notUnique',\n      message: 'Email already exists.',\n    },\n    {\n      type: 'equalToOther',\n      message: \"Alternate email can't be the same as email\",\n    },\n  ],\n  entityNumber: [\n    { type: 'required', message: ' is required.' },\n    {\n      type: 'invalid',\n      message: ' is invalid.',\n    },\n    { type: 'notFound', message: ' was not found.' },\n    {\n      type: 'notUnique',\n      message: ' already exists.',\n    },\n  ],\n  firstname: [\n    { type: 'required', message: 'First Name is required.' },\n    {\n      type: 'minlength',\n      message: 'Name must be at least 2 characters long.',\n    },\n  ],\n  lastname: [\n    { type: 'required', message: 'Last Name is required.' },\n    {\n      type: 'minlength',\n      message: 'Name must be at least 2 characters long.',\n    },\n  ],\n  lga: [\n    {\n      type: 'required',\n      message: 'Local government of origin is required.',\n    },\n    {\n      type: 'minlength',\n      message: 'Local government of origin must be at least 2 characters long.',\n    },\n  ],\n  maidenName: [\n    { type: 'required', message: 'Maiden Name is required.' },\n    {\n      type: 'minlength',\n      message: 'Maiden Name must be at least 2 characters long.',\n    },\n  ],\n\n  mobile: [\n    { type: 'required', message: 'Phone number is required.' },\n    {\n      type: 'minlength',\n      message: 'Phone number must be at least 11 characters long.',\n    },\n    {\n      type: 'notUnique',\n      message: 'Phone number already exists.',\n    },\n    {\n      type: 'equalToOther',\n      message: \"Alternate phone number can't be the same as phone number\",\n    },\n    {\n      type: 'invalid',\n      message: 'Phone number is invalid',\n    },\n    {\n      type: 'countryCode',\n      message: 'Country code is invalid',\n    },\n  ],\n  name: [\n    { type: 'required', message: ' is required.' },\n    {\n      type: 'pattern',\n      message: \" can only contain letters, numbers and '-'.\",\n    },\n    {\n      type: 'minlength',\n      message: ' must be at least 2 characters long.',\n    },\n  ],\n  numbers: [\n    {\n      type: 'pattern',\n      message: 'This field must be a number.',\n    },\n    { type: 'required', message: 'A value is required.' },\n  ],\n\n  occupation: [\n    { type: 'required', message: 'Occupation is required.' },\n    {\n      type: 'minlength',\n      message: 'Occupation must be at least 2 characters long.',\n    },\n  ],\n\n  othername: [\n    { type: 'required', message: 'Other Name is required.' },\n    {\n      type: 'minlength',\n      message: 'Name must be at least 2 characters long.',\n    },\n  ],\n  password: [\n    { type: 'required', message: 'Password is required.' },\n    {\n      type: 'minlength',\n      message: 'Password must be at least 6 characters long.',\n    },\n    {\n      type: 'maxlength',\n      message: 'Password must be at most 6 characters long.',\n    },\n    { type: 'passwordNotMatch', message: 'Passwords are not the same' },\n  ],\n  pattern: [\n    { type: 'required', message: 'Field is required.' },\n\n    { type: 'pattern', message: 'Field is invalid.' },\n  ],\n  required: [\n    {\n      type: 'required',\n      message: ' is required.',\n    },\n    {\n      type: 'minlength',\n      message: ' must be at least 2 characters long.',\n    },\n  ],\n  sex: [\n    {\n      type: 'required',\n      message: 'Sex is required.',\n    },\n  ],\n  subjectName: [\n    { type: 'required', message: 'Subject name is required.' },\n    {\n      type: 'minlength',\n      message: 'Subject name must be at least 2 characters long.',\n    },\n  ],\n  unique: [\n    {\n      type: 'notUnique',\n      message: ' already exists.',\n    },\n  ],\n  username: [\n    {\n      type: 'required',\n      message: 'is required.',\n    },\n    {\n      type: 'pattern',\n      message: \"Only letters,numbers and '_' are allowed.\",\n    },\n  ],\n  url: [\n    {\n      type: 'required',\n      message: 'URL is required.',\n    },\n    {\n      type: 'pattern',\n      message: 'It does not match a URL',\n    },\n  ],\n};\n","import { Environment } from \"../lib/shared/classes/environment.class\";\n\n\n/**\n * Environment object\n */\nexport const HHenvironment = new Environment(false, 'dev');\n","import { BehaviorSubject } from 'rxjs';\nimport { IMenuItem, MenuItem } from '../shared/models/IMenuItem';\nimport { HHenvironment } from '../../environments/environment';\n\nexport class AppClass {\n  topMenu: IMenuItem[];\n  protected _currentTopMenu: MenuItem;\n  protected _pageName: string;\n  public get currentTopMenu(): MenuItem {\n    return this._currentTopMenu;\n  }\n  public set currentTopMenu(value: MenuItem) {\n    this._currentTopMenu = value;\n    // debugger\n  }\n  setFullscreenMode = new BehaviorSubject<boolean>(false);\n  appLoading = new BehaviorSubject<boolean>(false);\n\n  constructor(menus: IMenuItem[]) {\n    this.topMenu = menus;\n  }\n\n  startAppLoader() {\n    this.appLoading.next(true);\n  }\n  stopAppLoader() {\n    this.appLoading.next(false);\n  }\n\n  setDefaultClass() {}\n  //#region pagename\n  get pageName() {\n    return this._pageName;\n  }\n  set pageName(value: string) {\n    this._pageName = value;\n    this.addTitle(this._pageName);\n  }\n  addTitle: (title: any) => void;\n  //#endregion\n}\n","import { AES, enc } from 'crypto-js';\nexport class EncryptorClass {\n  RESPONSE_AESKEY = 'prao7lqjpgymv60eltc6tbdiahe69wf4';\n  secret: string = this.RESPONSE_AESKEY;\n  plusDelimiter = '~---~~';\n\n  /**\n   * Encryption Decryption service\n   */\n  constructor() {}\n\n  encryptText = (data, key = this.secret) => {\n    let encText = AES.encrypt(JSON.stringify(data), key).toString();\n    // enc = enc.split('/').join(this.delimiter);\n    encText = encText.split('+').join(this.plusDelimiter);\n    return encText;\n  };\n  decryptText = (data: string, key = this.secret) => {\n    const encText = data.split(this.plusDelimiter).join('+');\n    return JSON.parse(AES.decrypt(encText, key).toString(enc.Utf8));\n  };\n  /**\n   * Encrypts an item\n   * @param data Item\n   * @returns Encrypted Object\n   */\n  encryptItem = (data) => {\n    try {\n      if (this.RESPONSE_AESKEY) {\n        return AES.encrypt(JSON.stringify(data), this.RESPONSE_AESKEY).toString();\n      }\n      throw new Error('AES and IV keys must be set');\n    } catch (error) {\n      throw error;\n    }\n  };\n\n  /**\n   * Decrypts an encrypted item\n   * @param data Encrypted string\n   * @returns Decrypted Object\n   */\n  decryptItem = <T = any>(data: string) => {\n    try {\n      if (this.RESPONSE_AESKEY) {\n        // debugger\n        if (typeof data != 'string') return data as T;\n        const decryptedData = AES.decrypt(data, this.RESPONSE_AESKEY || '');\n        const d = JSON.parse(decryptedData.toString(enc.Utf8)) as T;\n        console.log(d);\n        return d;\n      }\n      throw new Error('AES and IV keys must be set');\n    } catch (error) {\n      throw error;\n    }\n  };\n} ","import { Injectable } from '@angular/core';\nimport { AES, enc } from 'crypto-js'; \nimport { EncryptorClass } from './encryptor.class';\n/**\n * Encryption Decryption service\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class EncryptorService extends EncryptorClass {}\n","import { Observable } from 'rxjs';\nexport abstract class CacheClass {\n  protected _cache: { [x: string]: any } = {};\n\n  constructor() {}\n\n  get cache() {\n    return this._cache;\n  }\n\n  has = (key: string) => !!this._cache[key];\n\n  getItem = <T>(key: string) => this._cache[key] as T;\n\n  setItem<T>(key: string, data: T) {\n    this._cache[key] = data;\n    // return this._cache;\n  }\n\n  getAndSet<T>(key: string, newValue?: T | Promise<T>) {\n    return new Observable<T>((next) => {\n      next.next(this.getItem(key));\n      if (newValue) {\n        Promise.resolve(newValue).then(async (res) => {\n          this.setItem(key, res);\n          next.next(res);\n          next.complete();\n        });\n      } else next.complete();\n    });\n  }\n}\n ","import { Injectable } from '@angular/core'; \nimport { CacheClass } from './cache.class';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CacheService extends CacheClass {\n  constructor() {\n    super();\n  }\n}\n","import { tap } from 'rxjs/operators';\nimport { StorageClass } from './storage.class';\nimport { CacheClass } from './cache.class';\n\nexport class LocalCacheClass extends CacheClass {\n  protected readonly cacheKey = 'cacheKey';\n  protected readonly cacheCreatedDateKey = 'cacheCreatedDateKey';\n  protected readonly validityDays = 7;\n  protected readonly oneDayTimestamp = 86400000;\n  constructor(public sS: StorageClass) {\n    super();\n    try {\n      const createdDate: number = sS.getItem(this.cacheCreatedDateKey);\n      if (!createdDate) this.sS.saveItem(this.cacheCreatedDateKey, Date.now());\n      else if (createdDate + this.validityDays * this.oneDayTimestamp <= Date.now()) {\n        this.sS.saveItem(this.cacheCreatedDateKey, Date.now());\n        this.sS.removeItem(this.cacheKey);\n      }\n      sS.getItemA(this.cacheKey).then((r) => {\n        try {\n          for (const key in r) {\n            if (Object.prototype.hasOwnProperty.call(r, key)) {\n              this.setItem(key, r[key]);\n            }\n          }\n        } catch (error) {\n          console.error(error);\n        }\n      });\n    } catch (e) {\n      console.error(e);\n      this.sS.removeItem(this.cacheKey);\n    }\n  }\n  saveToLocal() {\n    // console.log('saving to cache', JSON.stringify(super.cache));\n    this.sS.saveItemA(this.cacheKey, super.cache);\n  }\n  override setItem<T>(key: string, data: T) {\n    super.setItem(key, data);\n    this.saveToLocal();\n  }\n\n  override getAndSet<T>(key: string, addFunc?: T | Promise<T>) {\n    // debugger;\n    return super.getAndSet<T>(key, addFunc).pipe(tap((r) => this.saveToLocal()));\n  }\n}\n ","import { EncryptorClass } from './encryptor.class';\nexport class StorageClass {\n  protected customConfig: IStorageConfig;\n\n  constructor(\n    protected eS: EncryptorClass,\n    /**\n     * Specify whether it is a production environment\n     */\n    public readonly isProduction: boolean,\n    /**\n     * name of local storage location\n     */\n    public readonly storageKey: 'localStorage' | 'sessionStorage' = 'localStorage'\n  ) {}\n\n  setup(config: IStorageConfig) {\n    this.customConfig = config;\n  }\n\n  /**\n   * Encrypts an item\n   * @param data Item\n   * @returns Encrypted Object\n   */\n  encrypt = this.eS.encryptItem;\n\n  /**\n   * Decrypts an encrypted item\n   * @param data Encrypted string\n   * @returns Decrypted Object\n   */\n  decrypt = this.eS.decryptItem;\n\n  /**\n   * Saves an item to the app storage\n   * @param key Name of item\n   * @param data Item\n   * @returns Item\n   */\n  saveItem = <T>(key: string, data: T) => {\n    try {\n      if (this.customConfig?.saveFunc) return this.customConfig?.saveFunc(key, data);\n      else\n        window[this.storageKey].setItem(\n          key,\n          !(data == null || data == undefined)\n            ? this.isProduction\n              ? this.encrypt(data)\n              : JSON.stringify(data)\n            : ''\n        );\n      return data;\n    } catch (error) {\n      console.error(error);\n      if (error?.name == 'QuotaExceededError') {\n        // this.clear();\n        // return this.saveItem(key, data);\n        throw error?.name;\n      } else {\n        throw error?.name || error;\n      }\n    }\n  };\n\n  /**\n   * Saves an item to the app storage asynchronously\n   * @param key Name of item\n   * @param data Item\n   * @returns Item\n   */\n  saveItemA = <T>(key: string, data: T) =>\n    this.customConfig?.saveAsyncFunc\n      ? this.customConfig?.saveAsyncFunc(key, data)\n      : new Promise<T>((resolve) => {\n          resolve(this.saveItem(key, data));\n        });\n\n  /**\n   * Get an item from the app storage\n   * @param key name of item\n   * @param shouldThrow Whether to throw an error if it is not found\n   * @returns Item\n   */\n  getItem = <T = any>(key: string, shouldThrow = false) => {\n    if (!key) return null;\n\n    if (this.customConfig?.getFunc) return this.customConfig?.getFunc<T>(key);\n    else {\n      const encryptedRes = window[this.storageKey].getItem(key);\n      try {\n        return this.isProduction\n          ? encryptedRes\n            ? <T>this.decrypt(encryptedRes)\n            : null\n          : <T>JSON.parse(encryptedRes);\n      } catch (e) {\n        console.error(e);\n        this.saveItem('_temp' + key, encryptedRes);\n        this.removeItem(key);\n        if (shouldThrow) {\n          throw new Error('Item not found');\n        } else {\n          return null;\n        }\n      }\n    }\n  };\n\n  /**\n   * Get an item from the app storage asynchronously\n   * @param key name of item\n   * @param shouldThrow  Whether to throw an error if it is not found\n   * @returns item\n   */\n  getItemA = <T = any>(key: string, shouldThrow = false) =>\n    this.customConfig?.getAsyncFunc\n      ? this.customConfig?.getAsyncFunc<T>(key)\n      : new Promise<T>((resolve, reject) => {\n          try {\n            resolve(this.getItem(key, shouldThrow));\n          } catch (error) {\n            reject(error);\n          }\n        });\n\n  /**\n   * Remove and item from the app storage\n   * @param key name of item\n   * @returns\n   */\n  removeItem = (key: string) => {\n    if (this.customConfig?.removeAsyncFunc) this.customConfig?.removeAsyncFunc(key);\n    else\n      try {\n        window[this.storageKey].removeItem(key);\n      } catch (error) {}\n  };\n\n  /**\n   * Clear the app storage\n   * @returns\n   */\n  clear = () => {\n    return this.customConfig?.clearAsyncFunc\n      ? this.customConfig?.clearAsyncFunc()\n      : window[this.storageKey].clear();\n  };\n}\n\ninterface IStorageConfig {\n  saveAsyncFunc?: <T>(key: string, data: T) => Promise<any>;\n  getAsyncFunc?: <T>(key: string) => Promise<T>;\n  removeAsyncFunc: (key: string) => Promise<any>;\n  clearAsyncFunc: () => Promise<any>;\n  saveFunc?: <T>(key: string, data: T) => any;\n  getFunc?: <T>(key: string) => T;\n}\n","import { Injectable } from '@angular/core';\nimport { EncryptorService } from './encryptor.service';\nimport { StorageClass } from './storage.class';\nimport { HHenvironment } from '../../environments/environment';\n/**\n * Storage service\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class StorageService extends StorageClass {\n  constructor(public override eS: EncryptorService) {\n    super(eS, HHenvironment.production, HHenvironment.storageKey);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { StorageService } from './storage.service';\nimport { LocalCacheClass } from './local-cache.class';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LocalCacheService extends LocalCacheClass {\n  constructor(public override sS: StorageService) {\n    super(sS);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { EncryptorService } from './encryptor.service';\nimport { HttpClient, HttpErrorResponse, HttpEventType, HttpHeaders, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map, retry, tap } from 'rxjs/operators';\nimport { CacheService } from './cache.service';\nimport { LocalCacheService } from './local-cache.service';\nimport { HHenvironment } from '../../environments/environment';\nimport { isEqual } from 'lodash';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ApiService {\n  protected get baseURL() {\n    return HHenvironment.apiBaseUrl || '';\n  }\n  protected showRoutes = 0;\n  protected get headers() {\n    return {\n      'Content-Type': 'application/json',\n    };\n  }\n  protected get fileHeaders() {\n    return {\n      enctype: 'multipart/form-data',\n    };\n  }\n  protected retryCount = 0;\n\n  constructor(\n    public eS: EncryptorService,\n    public http: HttpClient,\n    public cacheS: CacheService,\n    public lCacheS: LocalCacheService\n  ) {}\n\n  /**\n   * Encrypts an item\n   * @param data Item\n   * @returns Encrypted Object\n   */\n  encrypt = (obj: any) => {\n    if (!HHenvironment.encryptAPIRequests) return obj;\n    const ret = {\n      data: this.eS.encryptItem(obj),\n    };\n    console.log(ret);\n    return ret;\n  };\n\n  /**\n   * Decrypts an encrypted item\n   * @param data Encrypted string\n   * @returns Decrypted Object\n   */\n  decrypt = (obj: { data: string; status: 'success' | 'error' }) => {\n    if (!HHenvironment.encryptAPIRequests) return obj;\n    if (typeof obj?.data == 'string')\n      if (obj.status == 'success') return this.eS.decryptItem(obj?.data);\n      else throw this.eS.decryptItem(obj?.data);\n    else return obj;\n  };\n\n  private logRoutes(method: 'get' | 'post' | 'put' | 'delete', route, ...extras) {\n    if (this.showRoutes) {\n      console.log(method, route, ...extras);\n    }\n  }\n  handleResponse(response: any, extras: IExtras): any {\n    return extras?.fieldToPickAsResponse ? response[extras?.fieldToPickAsResponse] : response;\n  }\n  handleRequestError = (err: HttpErrorResponse) => {\n    // debugger;\n    const error = err.error.data\n      ? this.eS.decryptItem(err.error.data)\n      : { message: err.statusText };\n    return throwError(() => error?.message);\n  };\n\n  //#region PATCH\n  patch<T = any>(route: string, body?: object | null, extras?: IExtras): Observable<T> {\n    this.logRoutes('post', route, body);\n    console.log(body);\n    return this.http\n      .patch(\n        encodeURI(this.baseURL + route),\n        !HHenvironment.encryptAPIRequests || extras?.dontEncrypt ? body : this.encrypt(body),\n        {\n          headers: new HttpHeaders(this.headers),\n          responseType: 'json',\n          ...extras?.options,\n        }\n      )\n      .pipe(\n        map((r: any) =>\n          this.handleResponse(HHenvironment.encryptAPIRequests ? this.decrypt(r) : r, extras)\n        ),\n        catchError(this.handleRequestError)\n      ) as Observable<any>;\n  }\n  patchFile<T = any>(route: string, body: FormData) {\n    return this.patch<T>(route, body, {\n      options: {\n        headers: new HttpHeaders(this.fileHeaders),\n        responseType: 'json',\n      },\n      dontEncrypt: true,\n    });\n  }\n  //#endregion\n\n  //#region POST\n  post<T = any>(route: string, body?: object | null, extras?: IExtras): Observable<T> {\n    this.logRoutes('post', route, body);\n    console.log(body);\n    return this.http\n      .post(\n        encodeURI(this.baseURL + route),\n        !HHenvironment.encryptAPIRequests || extras?.dontEncrypt ? body : this.encrypt(body),\n        {\n          headers: new HttpHeaders(this.headers),\n          responseType: 'json',\n          ...extras?.options,\n        }\n      )\n      .pipe(\n        map((r: any) =>\n          this.handleResponse(HHenvironment.encryptAPIRequests ? this.decrypt(r) : r, extras)\n        ),\n        catchError(this.handleRequestError)\n      ) as Observable<any>;\n  }\n  postWithProgress<T = any>(route: string, body?: { [x: string]: File | any } | null) {\n    return new Observable<{ body?: T; progress?: number; uploaded?: boolean }>((sub) => {\n      const fd = new FormData();\n      this.logRoutes('post', route, body);\n\n      Object.keys(body).forEach((key) => fd.append(key, body[key]));\n      this.http\n        .post(encodeURI(this.baseURL + route), fd, {\n          headers: new HttpHeaders(this.fileHeaders),\n          reportProgress: true,\n          observe: 'events',\n        })\n        .subscribe({\n          next: (event) => {\n            // debugger\n            if (event.type === HttpEventType.UploadProgress)\n              sub.next({\n                progress: (100 * event.loaded) / event.total,\n                uploaded: event.loaded == event.total,\n              });\n            else if (event.type === HttpEventType.Response) {\n              // debugger\n              sub.next({\n                body: this.decrypt(event.body as any),\n                uploaded: true,\n              });\n            }\n          },\n          error: (error: HttpErrorResponse) => {\n            sub.error(error?.error?.message || error?.statusText);\n            sub.complete();\n          },\n        });\n    });\n  }\n\n  postFile<T = any>(route: string, body: FormData) {\n    return this.post<T>(route, body, {\n      options: {\n        headers: new HttpHeaders(this.fileHeaders),\n        responseType: 'json',\n      },\n      dontEncrypt: true,\n    });\n  }\n  postString(route: string, body?) {\n    return this.post<string>(route, body, {\n      options: {\n        headers: new HttpHeaders({\n          'Content-Type': 'text/plain',\n        }),\n        responseType: 'text',\n      },\n    });\n  }\n  //#endregion\n\n  //#region GET\n  get = <T = any>(route: string, parameters?: object | null, extras?: IExtras): Observable<T> => {\n    this.logRoutes('get', route, parameters);\n    return new Observable<T>((res) => {\n      const query = route + this.getRequestParse(parameters);\n      // if (this.cacheS.has(query)) {\n      //   res.next(this.cacheS.getItem<T>(route));\n      // }\n      this.http\n        .get(this.baseURL + query, {\n          headers: new HttpHeaders(this.headers),\n          responseType: 'json',\n          ...extras?.options,\n        })\n        .pipe(\n          retry(this.retryCount),\n          map((r: any) =>\n            this.handleResponse(extras?.dontDecryptResponse ? r : this.decrypt(r), extras)\n          ),\n          tap((x) => (this.showRoutes ? console.log(x) : null)),\n          catchError(this.handleRequestError)\n        )\n        .toPromise()\n        .then((r) => {\n          res.next(r);\n          this.cacheS.setItem(query, r);\n          res.complete();\n        })\n        .catch((err) => res.error(err));\n    });\n  };\n\n  getText = <T = string>(route: string, parameters?: Object) =>\n    this.get<T>(route, parameters, {\n      options: {\n        headers: new HttpHeaders(this.headers),\n        responseType: 'text',\n      },\n    });\n  getFile = <T = string>(route: string, parameters?: Object) =>\n    this.get<T>(route, parameters, {\n      options: {\n        headers: new HttpHeaders(this.headers),\n        responseType: 'arrayBuffer',\n      },\n    });\n  getWithBody = <T = any>(route: string, body?: any | null, extras?: IExtras) => {\n    this.logRoutes('get', route);\n    // debugger\n    const req = new HttpRequest(\n      'GET',\n      this.baseURL + route,\n      HHenvironment.encryptAPIRequests ? this.encrypt(body) : body,\n      extras?.options || {\n        headers: new HttpHeaders(this.headers),\n        responseType: 'json',\n      }\n    );\n    return this.http.request<T>(req).pipe(\n      map((r: any) =>\n        this.handleResponse(HHenvironment.encryptAPIRequests ? this.decrypt(r) : r, extras)\n      ),\n      catchError(this.handleRequestError)\n    ) as Observable<T>;\n  };\n\n  getFromlocal = <T = any>(route: string, parameters?: object | null, extras?: IExtras) => {\n    return new Observable<T>((res) => {\n      const query = route + this.getRequestParse(parameters);\n      if (this.lCacheS.has(query)) {\n        res.next(this.lCacheS.getItem(query));\n        res.complete();\n      } else\n        this.get(query, null, extras)\n          .toPromise()\n          .then((r) => {\n            // if (!this.cS.has(route))\n            res.next(r);\n            this.lCacheS.setItem(query, r);\n            res.complete();\n          });\n    });\n  };\n  getWithLocalCache = <T = any>(route: string, parameters?: object | null, extras?: IExtras) => {\n    return new Observable<T>((res) => {\n      const query = route + this.getRequestParse(parameters);\n      if (this.lCacheS.has(query)) {\n        res.next(this.lCacheS.getItem(query));\n      }\n      this.get(query, null, extras)\n        .toPromise()\n        .then((r) => {\n          // if (!this.cS.has(route))\n          if (!this.lCacheS.has(query) || !isEqual(r, this.lCacheS.getItem(query))) {\n            res.next(r);\n            this.lCacheS.setItem(query, r);\n          }\n          res.complete();\n        })\n        .catch((e) => {\n          res.error(e);\n          res.complete();\n        });\n    });\n  };\n  getRequestParse(parameters?: Object) {\n    if (!parameters) return '';\n    return (\n      '?' +\n      Object.keys(parameters)\n        .filter((key) => parameters[key]?.toString()?.trim() != null)\n        .map((key) => `${key}=${parameters[key]?.toString()?.trim()}`)\n        .join('&')\n    );\n  }\n  getAll = <T = any>(\n    route: string,\n    query: { limit: number; [x: string]: any },\n    dataFieldName: string,\n    extras?: IExtras\n  ) => {\n    return new Observable<T[]>((sub) => {\n      let data: T[] = [];\n      // debugger;\n      const fetchdata = (page: number) =>\n        this.get<{\n          [x: string]: {\n            data: T[];\n            total: number;\n          };\n        }>(route, { ...query, page }).subscribe((r) => {\n          // debugger;\n          data = data.concat(r[dataFieldName]?.data);\n          sub.next(data);\n          // const d1 = data?.length;\n          // const d2 = !!data?.length;\n          // const d3 = r[dataFieldName];\n          // const d4 = r[dataFieldName]?.total;\n          // const d5 = data?.length <= r[dataFieldName]?.total;\n          // const d6 = !!data?.length && data?.length <= r[dataFieldName]?.total;\n          // debugger;\n          if (!!r[dataFieldName]?.data?.length && data?.length < r[dataFieldName]?.total)\n            fetchdata(++page);\n          else sub.complete();\n        });\n      fetchdata(1);\n    });\n  };\n  //#endregion\n\n  //#region PUT\n  put<T = any>(route: string, body?: object | null, extras?: IExtras): Observable<T> {\n    this.logRoutes('put', route, body);\n    let query = route + '',\n      nbody = body;\n    if (extras?.requestType == 'queryParams') {\n      query += this.getRequestParse(body);\n      nbody = null;\n    }\n    console.log(body);\n    return this.http\n      .put(this.baseURL + query, extras?.dontEncrypt ? body : this.encrypt(nbody), {\n        headers: new HttpHeaders(this.headers),\n        responseType: 'json',\n        ...extras?.options,\n      })\n      .pipe(\n        map((r: any) => this.handleResponse(this.decrypt(r), extras)),\n        catchError(this.handleRequestError)\n      ) as Observable<any>;\n  }\n\n  putFile<T = any>(route: string, body: FormData, extras?: IExtras) {\n    return this.put<T>(route, body, {\n      ...extras,\n      options: {\n        headers: new HttpHeaders(this.fileHeaders),\n        responseType: 'json',\n      },\n      dontEncrypt: true,\n    });\n  }\n  //#endregion\n\n  //#region DELETE\n  delete = <T = any>(route: string, extras?: IExtras) => {\n    this.logRoutes('delete', route);\n    return this.http\n      .delete<T>(\n        this.baseURL + route,\n        extras?.options || {\n          headers: new HttpHeaders(this.headers),\n          responseType: 'json',\n        }\n      )\n      .pipe(\n        map((r: any) => this.handleResponse(this.decrypt(r), extras)),\n        catchError(this.handleRequestError)\n      ) as Observable<any>;\n  };\n  deleteWithBody = <T = any>(route: string, body?: any | null, extras?: IExtras) => {\n    this.logRoutes('delete', route);\n    const req = new HttpRequest(\n      'DELETE',\n      this.baseURL + route,\n      HHenvironment.encryptAPIRequests ? this.encrypt(body) : body,\n      extras?.options || {\n        headers: new HttpHeaders(this.headers),\n        responseType: 'json',\n      }\n    );\n    return this.http.request<T>(req).pipe(\n      map((r: any) => this.handleResponse(this.decrypt(r), extras)),\n      catchError(this.handleRequestError)\n    ) as Observable<any>;\n  };\n\n  deleteText = (route: string) =>\n    this.delete<string>(route, {\n      options: {\n        headers: new HttpHeaders(this.headers),\n        responseType: 'text',\n      },\n    });\n  //#endregion\n}\n\ninterface IExtras {\n  noFormat?: boolean;\n  dontEncrypt?: boolean;\n  dontDecryptResponse?: boolean;\n  options?: any;\n  requestType?: 'queryParams';\n  dontFormatResponse?: boolean;\n  fieldToPickAsResponse?: string;\n}\n\nexport interface IResponse {\n  message: string;\n  result: any;\n  status: 'success' | 'error' | 'failure';\n  statusCode: 'SM000' | 'SM001' | 'SM002' | 'SM003';\n}\n\ntype Resp<T> = T & { status: 'success' | 'error'; data: T; message: string };\n\nexport type IAPIExtra = IExtras;\n","import { Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ApiService } from './api.service';\nimport { StorageService } from './storage.service';\nimport { HHenvironment } from '../../environments/environment';\nimport { AppClass } from './app.class';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AppService extends AppClass {\n  constructor(public titleS: Title, public apiS: ApiService, public sS: StorageService) {\n    super(HHenvironment.menus);\n\n    this.addTitle = (title) => {\n      HHenvironment.pageTitle = title;\n      this.titleS.setTitle(\n        (title ? title + ' | ' : '') + HHenvironment.appName + ' | ' + HHenvironment.name\n      );\n    };\n  }\n}\n","import { Config } from '../config/index.config';\nimport jsPDF from 'jspdf';\nimport html2canvas from 'html2canvas';\nimport Papa from 'papaparse';\nimport jfd from 'js-file-download';\nimport { Observable, catchError, isObservable, merge, of, tap } from 'rxjs';\nimport { cloneDeep } from 'lodash';\nimport { EPeriod, EValidationType } from '../shared/models/index.model';\nimport { EnvironmentClass } from '../shared/classes/environment.class.lite';\n\nexport class UtilityClass {\n  downloader = jfd;\n  config = Config;\n  eValidationType = EValidationType;\n  ePeriod = EPeriod;\n\n  constructor(public environment: EnvironmentClass) {}\n\n  imageTypes: { [type: string]: boolean } = {\n    'image/apng': true,\n    'image/avif': true,\n    'image/gif': true,\n    'image/jpeg': true,\n    'image/png': true,\n    'image/svg+xml': true,\n    'image/webp': true,\n  };\n\n  /**\n   * Uses a web worker to perform a task\n   * @example new Worker(new URL('./upload-csv.worker', import.meta.url))\n   * @param worker Web worker object\n   * @param inputData Data being passed into web worker\n   * @returns Data gotten from web worker\n   */\n  useWebWorker<T = any>(\n    worker: Worker,\n    inputData: any,\n    conditions?: { stop: (res) => boolean; error: (res) => boolean },\n  ) {\n    return new Observable<T>((sub) => {\n      try {\n        if (typeof Worker !== 'undefined') {\n          worker.postMessage(inputData);\n          worker.onmessage = (r) => {\n            // debugger\n            // console.log(e);\n            const data = r.data;\n            if (conditions) {\n              if (conditions.error(data)) {\n                sub.error(data);\n                sub.complete();\n                worker.terminate();\n              } else if (conditions.stop(data)) {\n                sub.next(data);\n                sub.complete();\n                worker.terminate();\n              } else {\n                sub.next(data);\n              }\n            } else {\n              sub.next(data as any);\n              sub.complete();\n              worker.terminate();\n            }\n          };\n        } else {\n          throw 'noWorker';\n        }\n      } catch (e) {\n        console.log(e);\n        sub.error(e);\n        sub.complete();\n      }\n    });\n  }\n  /**\n   * Converts an array to a key value pair.\n   * @param arr Array to be converted\n   * @param keyField The field to be used as the key\n   * @returns An index object containing the keyField as the index key and each item of the array as value assigned to each index\n   */\n  arrayToMap<T>(arr: T[], keyField: keyof T): { [x: string]: T };\n  arrayToMap<T, NT>(arr: T[], keyField: keyof T, map: (item: T) => NT): { [x: string]: NT };\n  arrayToMap<T, NT>(arr: T[], keyField: keyof T, map?: (item: T) => NT) {\n    const ret: { [x: string]: T | NT } = {};\n    for (const iterator of arr) {\n      ret[iterator[keyField?.toString()]] = map ? map(iterator) : iterator;\n    }\n    return ret;\n  }\n  /**\n   * Gets all the fields in all the items in an array\n   * @param arr\n   * @returns The index map of the fields with the fields serving as the index keys. Each entry contains the count of the times that a value was found for the field\n   */\n  getAllFieldsInArray = <T>(arr: T[]) => {\n    const ret: { [field: string]: { field: keyof T; count: number } } = {};\n    for (const item of arr) {\n      for (const key in item) {\n        if (Object.prototype.hasOwnProperty.call(item, key)) {\n          const element = item[key];\n          const existingItem = ret[key];\n          if (existingItem && element != null) existingItem.count++;\n          ret[key] = { field: key, count: element != null ? 1 : 0 };\n        }\n      }\n    }\n    return ret;\n  };\n  sortObjectFields = <T>(obj: T) => {\n    if (obj == null || typeof obj != 'object') return obj;\n    const nObj: T = {} as any;\n    const fieldNames = Object.keys(obj);\n    fieldNames.sort();\n    // console.log(fieldNames);\n    for (const key of fieldNames) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        let element = obj[key];\n        if (Array.isArray(element)) {\n          nObj[key] = cloneDeep(element);\n          for (let index = 0; index < element.length; index++) {\n            nObj[key][index] = this.sortObjectFields(element[index]);\n          }\n        } else if (typeof element == 'object' && element != null) {\n          nObj[key] = this.sortObjectFields(element);\n        } else nObj[key] = element;\n      }\n    }\n    return nObj;\n  };\n\n  async copyString(str: string) {\n    try {\n      const elem = document.createElement('textarea');\n      elem.value = str;\n      document.body.appendChild(elem);\n      elem.select();\n      document.execCommand('copy');\n      document.body.removeChild(elem);\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  async copyObject(payload: Object) {\n    try {\n      return this.copyString(JSON.stringify(payload));\n    } catch (e) {\n      console.error(e);\n    }\n  }\n  xOrY = (x, y = '-') => `${x == null ? y : x}`;\n\n  /**\n   * Convert Date string to Date Time string\n   * @param dateStr Date string\n   * @example '2022-01-25'\n   * @param config Configuration for the conversion\n   * @returns Returns a Date Time string\n   * @example '2022-01-25T00:00:00Z' or '2022-01-25 00:00:00'\n   */\n  dateToDateTime = (\n    dateStr: string,\n    config?: {\n      /**\n       * Use the yyyy-mm-dd hh:mm:ss format\n       */\n      omitT?: boolean;\n    },\n  ) => {\n    const omitT = !!config?.omitT;\n    if (!dateStr) return null;\n    if (dateStr.includes('T')) return dateStr;\n    return dateStr + (omitT ? ' 00:00:00' : 'T00:00:00Z');\n  };\n\n  /**\n   * Set an Object's field if the object exists or don't if the object doesn't\n   * @param obj Object holding the field\n   * @param fieldName Name of the field to set\n   * @param val Value to set the field with\n   * @returns Returns the object holding the data\n   */\n  setterWithNull<T>(obj: T, kvps: Partial<T>) {\n    if (!obj) return null;\n    for (const key in kvps) {\n      obj[key] = kvps[key];\n    }\n    return obj;\n  }\n\n  /**\n   * (Set an Object's field if the object exists or don't if the object doesn't) for multiple entries\n   * @param items Array of objects and their modifications\n   */\n  setterWithNullArray<T>(items: { obj: T; kvps: Partial<T> }[]) {\n    for (const item of items) {\n      this.setterWithNull(item.obj, item.kvps);\n    }\n  }\n\n  /**\n   * Handles the deletion of rows from an array\n   * @param index Index of the row to delete\n   * @param arr The array that holds the rows\n   * @param deleteService The deletion service to be called (It should be an anonymous function)\n   * @param addRowFunc The function (anonymous) that adds a new row to the array\n   * @param cb The function to callback with the response of the deletion service as the input parameter\n   */\n  handleRowDelete = async <T>(\n    index: number,\n    arr: any[],\n    deleteService: (...args) => Promise<T> | Observable<T>,\n    addRowFunc: (...args) => any,\n    cb?: (any) => any,\n  ) => {\n    const id = arr[index]?.id;\n    // debugger;\n\n    if (id && deleteService) {\n      const req = deleteService(id);\n      if (typeof req['toPromise'] == 'function')\n        cb ? cb(await req['toPromise']()) : req['toPromise']();\n      else cb ? cb(await req) : null;\n    }\n\n    if (arr.length == 1) {\n      arr.splice(index, 1);\n      addRowFunc();\n    } else if (arr.length > 1) arr.splice(index, 1);\n  };\n\n  private isPromise = (func) => {\n    return typeof func === 'object' && typeof func.then === 'function';\n  };\n  isAsync = (func) => {\n    return (\n      func.constructor.name === 'AsyncFunction' ||\n      (typeof func === 'function' && this.isPromise(func()))\n    );\n  };\n\n  isObservable = <T>(func) => {\n    // return typeof func === 'object' && typeof func.subscribe === 'function';\n    // return typeof func === 'object' && func instanceof Observable;\n    // return typeof func === 'object' && func instanceof Observable<T>;\n    return typeof func === 'object' && isObservable(func);\n    return typeof func === 'object' && typeof func.toPromise === 'function';\n  };\n  promisifyVal = <T>(val: T | Promise<T> | Observable<T>) => {\n    if (this.isAsync(val)) {\n      return Promise.resolve(val as Promise<T>);\n    } else if (this.isObservable(val)) {\n      return Promise.resolve((val as Observable<T>).toPromise());\n    } else {\n      return Promise.resolve(val as T);\n    }\n  };\n\n  /**\n   * @param arr Array of observables to fetch\n   * @returns An array of the responses merged together. It emits the merged responses as they are fetched and closes once alll the responses have been fetched\n   */\n  mergeArrObservables = <T>(arr: { $func: Observable<T[]> }[]) => {\n    return new Observable<T[]>((sub) => {\n      const ret: T[] = [];\n      let responseCount = 0;\n      merge(\n        ...arr.map(\n          (x) =>\n            x.$func?.pipe(\n              catchError((e) => {\n                console.error(e);\n                return of([]);\n              }),\n              tap((r) => {\n                responseCount++;\n              }),\n            ),\n        ),\n      ).subscribe((r) => {\n        ret.push(...r);\n        sub.next(ret);\n        if (responseCount == arr.filter((x) => x.$func).length) {\n          // debugger\n          sub.complete();\n        }\n      });\n    });\n  };\n  removeDuplicate<T>(list: T[], keyField = 'code') {\n    if (!list) return null;\n    list = list.filter((x) => x);\n    const ret: T[] = [],\n      duplicateMap: { [x: string]: any } = {};\n    for (const item of list) {\n      if (duplicateMap[item[keyField]]) continue;\n      ret.push(item);\n      duplicateMap[item[keyField]] = item;\n    }\n    return ret;\n  }\n  get genRandomID() {\n    return this.generateUUID();\n    // return Math.round(Math.random() * 1000000000000000);\n  }\n\n  objIsEmpty = (obj, exclusionFields?: string[]) => {\n    if (!obj) return true;\n    for (const key in obj) {\n      if (exclusionFields?.includes(key)) continue;\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        if (obj[key]) return false;\n      }\n    }\n    return true;\n  };\n  dataGen = <T = any>(keys: string[], length = 10) => {\n    const ret: any[] = [];\n    for (let i = 0; i < length; i++) {\n      let t: any = {};\n      for (const key of keys) {\n        t[key] = this.textGen();\n      }\n      ret.push(t);\n    }\n    return ret as T[];\n  };\n  textGen = () => 'random' + Math.round(Math.random() * 1000);\n  trackByCustomID = (index, item) => {\n    if (!item.__id) {\n      item.__id = this.generateUUID();\n      console.log('set custom id');\n    }\n    return item.__id;\n  };\n\n  trackByCode(index: number, item: any) {\n    return item?.code;\n  }\n  trackByID(index: number, item: any) {\n    return item?.id;\n  }\n\n  findLabelByItem = (item, arr: any[], labelField?: string, keyField: string = 'code') => {\n    if (!item) return null;\n    const obj = arr?.find((x) => x[keyField] == item);\n    if (!obj) return item;\n    else return `${item} - ${obj[labelField || 'title'] || obj[labelField || 'description']}`;\n  };\n\n  /**\n   * Converts object to query parameters\n   * @param parameters Query object\n   * @returns\n   */\n  objectToQueryParams(parameters?: Object) {\n    if (!parameters) return '';\n    return (\n      '?' +\n      Object.keys(parameters)\n        .filter((key) => parameters[key]?.toString()?.trim() != null)\n        .map((key) => `${key}=${parameters[key]?.toString()?.trim()}`)\n        .join('&')\n    );\n  }\n\n  base64toBlob = (base64Data: string, contentType = '', sliceSize = 512) => {\n    const byteCharacters = atob(base64Data);\n    const byteArrays = [];\n\n    for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n      const slice = byteCharacters.slice(offset, offset + sliceSize);\n\n      const byteNumbers = new Array(slice.length);\n      for (let i = 0; i < slice.length; i++) {\n        byteNumbers[i] = slice.charCodeAt(i);\n      }\n\n      const byteArray = new Uint8Array(byteNumbers);\n      byteArrays.push(byteArray);\n    }\n\n    const blob = new Blob(byteArrays, { type: contentType });\n    return blob;\n  };\n  base64toFile = (\n    base64Data: string,\n    fileName: string = Date.now() + '',\n    contentType = '',\n    sliceSize = 512,\n  ) => {\n    return new File([this.base64toBlob(base64Data, contentType, sliceSize)], fileName);\n  };\n\n  extractUpload(event: any) {\n    return (event.target.files as File[]) || [];\n  }\n\n  secondsToHourMinSec = (seconds: number) => {\n    if (!seconds) return { secs: null, hours: null, mins: null };\n    const hours = Math.floor(seconds / 3600) || 0,\n      secondsExHours = seconds % 3600 || 0,\n      mins = Math.floor(secondsExHours / 60) || 0,\n      secs = secondsExHours % 60;\n    return { hours, mins, secs };\n  };\n  minutesToDayHourMin = (minutes: number) => {\n    if (!minutes) return { days: null, hours: null, mins: null };\n    const days = Math.floor(minutes / 1440) || 0,\n      miniutesExDays = minutes % 1440 || 0,\n      hours = Math.floor(miniutesExDays / 60) || 0,\n      mins = miniutesExDays % 60 || 0;\n    return { days, hours, mins };\n  };\n  minutesToDayHourMinStr = (minutes: number) => {\n    if (!minutes) return null;\n    const ret = this.minutesToDayHourMin(minutes);\n    return `${ret.days} ${ret.hours}:${ret.mins}`.trim();\n  };\n  minutesToDayHourMinStr2 = (minutes: number) => {\n    if (!minutes) return null;\n    const ret = this.minutesToDayHourMin(minutes);\n    return `${ret.days}days ${ret.hours}hrs ${ret.mins}mins`.trim();\n  };\n  dayHourMinToHourMinutes = (dys: number, hrs: number, mins: number) => {\n    if (!dys && !hrs && !mins) return '';\n    const dysToHrs = (dys || 0) * 24;\n    hrs = (+hrs || 0) + dysToHrs;\n    return (hrs || '00') + ':' + (mins || '00');\n  };\n  dayHourMinToMinutes = (dys: number, hrs: number, mins: number) => {\n    if (!dys && !hrs && !mins) return 0;\n    const dysToHrs = (dys || 0) * 24;\n    hrs = (+hrs || 0) + dysToHrs;\n    return (hrs || 0) * 60 + mins;\n  };\n  hourMinToMinutes = (hrs: number, mins: number) => {\n    if (!hrs && !mins) return null;\n    return (hrs || 0) * 60 + mins;\n  };\n  hourMinToMinutes2 = (hrsMins: string) => {\n    const [hrs, mins] = hrsMins?.split(':') || [0, 0];\n    return this.hourMinToMinutes(+hrs, +mins);\n  };\n\n  scrollToTop = (timeout = 100) =>\n    setTimeout(() => {\n      document.querySelector('.ddd')?.scrollIntoView({ behavior: 'smooth' });\n      // this.uS.scrollToTop();\n    }, timeout);\n\n  cellStatusFormatter = (guide: { successVal?: any; errorVal?: any; inertVal?: any }) => (v) =>\n    `<span class='${\n      v == guide.successVal ? 'successCell' : v == guide.errorVal ? 'errorCell' : 'inertCell'\n    }'>${v}</span>`;\n  /**\n   *\n   * @returns The current date time local that can be used to set the datetime-local input\n   */\n  getLocalDateTimeNow = () => {\n    const dt = new Date().toISOString().split('T');\n    return dt[0] + 'T' + dt[1].split(':').slice(0, 2).join(':');\n  };\n  /** @returns The current date local that can be used to set the date input */\n  localDateNow = () => {\n    return new Date().toISOString().split('T')[0];\n  };\n  dateFormat = (date: any, format = 1) => {\n    if (!date) return null;\n    const d = new Date(date);\n    if (format == 1) {\n      return d.toDateString();\n    } else if (format == 2) {\n      return d.getDate() + ' ' + Config.Months[d.getMonth()];\n    } else if (format == 3) {\n      return d.toDateString() + ', ' + this.timeFormat(d.toLocaleTimeString());\n    } else if (format == 4) {\n      return Config.Months[d.getMonth()] + ' ' + d.getDate();\n    } else {\n      return '';\n    }\n  };\n  toJavaDateString = (isoDateString: string = new Date().toISOString()) => {\n    if (!isoDateString) return null;\n    return `${isoDateString.slice(0, 19)}`;\n    return `${isoDateString.slice(0, 10)} ${isoDateString.slice(11, 19)}`;\n  };\n  timeFormat = (time?: any) => {\n    const timeArr: any[] = time.split(' ');\n    timeArr[0] = timeArr[0].split(':').splice(0, 2).join(':');\n    return timeArr.join(' ');\n  };\n\n  dateFormatter = (date: any) => {\n    return this.dateFormat(date, 1);\n  };\n  daysFormatter = (days: number) => {\n    if (!days) {\n      return '-';\n    }\n    let yr: number,\n      mt: number,\n      dy: number,\n      ret: string,\n      _yr = 365,\n      _mt = 30;\n    if (days > _yr) {\n      yr = Math.floor(days / _yr);\n    }\n    if (days > _mt) {\n      mt = Math.floor((days % _yr) / _mt);\n    }\n    dy = (days % _yr) % _mt;\n    ret = `${yr ? this.pluarlizer(yr, 'yr') : ''} ${\n      mt ? this.pluarlizer(mt, 'mth') : ''\n    } ${this.pluarlizer(dy, 'dy')}`;\n    return ret;\n  };\n  monthsFormatter = (months: number) => {\n    if (!months) {\n      return '-';\n    }\n    let yr: number,\n      mt: number,\n      ret: string,\n      _yr = 12;\n    if (months > _yr) {\n      yr = Math.floor(months / _yr);\n    }\n    mt = months % _yr;\n    ret = `${yr ? this.pluarlizer(yr, 'yr') : ''} ${mt ? this.pluarlizer(mt, 'mth') : ''}`;\n    return ret;\n  };\n  pluarlizer = (val: number, txt: string, plural?: string) => {\n    plural = plural || txt + 's';\n    return val + (val == 1 ? txt : plural);\n  };\n  decimalToPercentage = (dec: number) => {\n    return dec * 100 + '%';\n  };\n  logForm = (form) => {\n    console.log('FORM', form, 'VALUES', form.value as any);\n  };\n\n  isPictureFormat(fileName: string) {\n    if (!fileName) return false;\n    const PICTURE_FORMATS = ['.jpg', '.jpeg', '.png', '.gif'];\n    return PICTURE_FORMATS.some((format) => fileName.endsWith(format));\n  }\n  objectToArray<T>(obj: any) {\n    const ret = [];\n    for (const key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        ret.push(obj[key]);\n      }\n    }\n    return ret as T[];\n  }\n  onlyUnique = <T>(value: T, index: number, self: T[]) => {\n    return self.indexOf(value) === index;\n  };\n\n  /**\n   * Delete null or undefined fields from an object\n   * @param obj Object to delete from\n   * @returns\n   */\n  deleteNull = <T>(obj: T) => {\n    for (const key in obj) {\n      if (typeof obj[key] == 'object' && obj != null) obj[key] = this.deleteNull(obj[key]);\n      if (obj[key] === null || obj[key] === undefined || obj[key] === '') delete obj[key];\n    }\n    if (!obj || !Object.keys(obj).length) return null;\n    else return obj;\n  };\n  /**\n   * Convert an object into textshowing the field and values\n   * @param obj\n   * @returns\n   */\n  objectToText = (obj) => {\n    return Object.entries(this.deleteNull(cloneDeep(obj)))\n      .map((r) => r[0] + ' ' + r[1])\n      .join(' / ');\n  };\n  /**\n   * Download file from link\n   * @param url Link to download file\n   * @param filename Name of file including extension\n   */\n  async downloadFromLink(url: string, filename: string) {\n    console.log('download link', url);\n    // debugger\n    let downloadLink = document.createElement('a');\n    downloadLink.href = url;\n    downloadLink.target = '_blank';\n    downloadLink.setAttribute('download', filename);\n    document.body.appendChild(downloadLink);\n    downloadLink.click();\n  }\n\n  exportHTMLToPDF(\n    content: HTMLElement,\n    fileName: string,\n    config: {\n      width?: number;\n      height?: number;\n      orientation?: 'p' | 'portrait' | 'l' | 'landscape';\n    },\n  ) {\n    return html2canvas(content, { useCORS: true }).then(async (canvas) => {\n      let fileWidth = config?.width;\n      let fileHeight = config?.height || (canvas.height * fileWidth) / canvas.width;\n      // fileHeight = canvas.height\n      // fileWidth = canvas.width\n      // debugger\n      console.log(canvas.width, canvas.height, [fileWidth, fileHeight]);\n      const FILEURI = canvas.toDataURL('image/png', 1);\n      let PDF = new jsPDF(config?.orientation || 'p', 'px', [fileWidth, fileHeight], true);\n      let position = 0;\n      PDF.addImage(FILEURI, 'PNG', 0, position, fileWidth, fileHeight);\n      return await PDF.save(fileName + '.pdf', {\n        returnPromise: true,\n      });\n    });\n  }\n\n  exportHTMLToPDFObject(\n    content: HTMLElement,\n    fileName: string,\n    config: {\n      width?: number;\n      height?: number;\n      orientation?: 'p' | 'portrait' | 'l' | 'landscape';\n    },\n  ) {\n    return html2canvas(content, { useCORS: true }).then(async (canvas) => {\n      let fileWidth = config?.width;\n      let fileHeight = config?.height || (canvas.height * fileWidth) / canvas.width;\n      // fileHeight = canvas.height\n      // fileWidth = canvas.width\n      // debugger\n      console.log(canvas.width, canvas.height, [fileWidth, fileHeight]);\n      const FILEURI = canvas.toDataURL('image/png', 1);\n      let PDF = new jsPDF(config?.orientation || 'p', 'px', [fileWidth, fileHeight], true);\n      let position = 0;\n      PDF.addImage(FILEURI, 'PNG', 0, position, fileWidth, fileHeight);\n      return new File([PDF.output('blob')], fileName + '.pdf', {\n        type: 'application/pdf',\n      });\n    });\n  }\n\n  arrayToCSV(data: any[], filename: string, headerMap: { f?: string; t?: string }[]) {\n    const csv = Papa.unparse(data, {\n      header: false,\n      columns: headerMap?.map((x) => x.f?.toString()),\n    });\n\n    this.downloader(\n      headerMap.map((fieldName) => fieldName.t).join(',') + `\\r\\n` + csv,\n      filename?.endsWith('.csv') ? filename : filename + '.csv',\n    );\n  }\n\n  addDaysToDate(days: number, date: Date | string | number) {\n    if (!date) return undefined;\n    return new Date(new Date(date).getTime() + Config.TimeStampDay * +days)\n      .toISOString()\n      .split('T')[0];\n  }\n  get genPhoneNumber() {\n    return (\n      '0' +\n      new Array(10)\n        .fill(1)\n        .map((x) => Math.round(Math.random() * 9))\n        .join('')\n    );\n  }\n  generateUUID() {\n    let d = new Date().getTime();\n    let d2 =\n      (typeof performance !== 'undefined' && performance.now && performance.now() * 1000) || 0; //Time in microseconds since page-load or 0 if unsupported\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n      let r = Math.random() * 16; //random number between 0 and 16\n      if (d > 0) {\n        //Use timestamp until depleted\n        r = (d + r) % 16 | 0;\n        d = Math.floor(d / 16);\n      } else {\n        //Use microseconds since page-load if supported\n        r = (d2 + r) % 16 | 0;\n        d2 = Math.floor(d2 / 16);\n      }\n      return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n    });\n  }\n}\n","import { Type } from '@angular/core';\nimport { LoadChildrenCallback, Route, Routes } from '@angular/router';\nimport { EPageType } from '../models/index.model';\nexport namespace HHFunctions {\n  /**\n   *\n   * @param route\n   * @param indexComponent\n   * @param indexLazyModule\n   * @example\n   * ```ts\n   * Functions.extendRoute(\n   *  {\n   *     path: '',\n   *     data: { title: 'Title' },\n   *     loadChildren: () => import('./create-item/create-item.module')\n   *       .then((m) => m.CreateItemModule),\n   *  },\n   *  null,\n   *  () => import('./item-index/item-index.module')\n   *     .then((m) => m.ItemIndexModule));\n   * ```\n   * @returns\n   */\n  export function extendRoute(\n    route: Route,\n    index?: {\n      lazyModule?: Route['loadChildren'];\n      lazyComponent?: Route['loadComponent'];\n      component?: Route['component'];\n    },\n  ) {\n    const routes: Routes = [\n      ...(index\n        ? <Routes>[\n            {\n              ...route,\n              path: 'index',\n              data: {\n                ...route.data,\n                title: route.data['title'],\n                type: EPageType.indexPage,\n              }, \n              component: index.component,\n              loadChildren: index.lazyModule,\n              loadComponent: index.lazyComponent,\n            },\n          ]\n        : []),\n      {\n        ...route,\n        path: 'add',\n        data: {\n          ...route.data,\n          title: pageTitler(route.data['title'], 'Add'),\n          type: EPageType.createPage,\n        },\n        component: route.component,\n        loadChildren: route.loadChildren,\n      },\n      { path: 'create', redirectTo: 'add' },\n      { path: '', redirectTo: 'index', pathMatch: 'full' },\n      {\n        ...route,\n        path: 'edit',\n        data: {\n          ...route.data,\n          title: pageTitler(route.data['title'], 'Edit'),\n          type: EPageType.editPage,\n        },\n        component: route.component,\n        loadChildren: route.loadChildren,\n      },\n      {\n        ...route,\n        path: 'view',\n        data: {\n          ...route.data,\n          title: pageTitler(route.data['title'], 'View'),\n          type: EPageType.viewPage,\n        },\n        component: route.component,\n        loadChildren: route.loadChildren,\n      },\n    ];\n    return routes;\n  }\n  export function strConcatenator(field1?: string, field2?: string, joiner = ' '): string {\n    // debugger\n    // console.log('field1',field1)\n    field1 = field1?.toString()?.trim();\n    field2 = field2?.toString()?.trim();\n    if (field1 != null && field2 != null) return field1 + joiner + field2;\n    else return field1 || field2;\n  }\n  export function nameExtractor(obj: any) {\n    return (obj?.name ||\n      obj?.fullName ||\n      obj?.fullname ||\n      strConcatenator(obj?.firstName, obj?.lastName)) as string;\n  }\n\n  function pageTitler(title: string, infix: string) {\n    return strConcatenator(infix, title);\n    if (!title) return '';\n    if (!infix) return title;\n    const split = title.split('/'),\n      lastSplit = split.pop(),\n      prefix = split.join('/');\n    return (prefix ? prefix + ' / ' : ' ') + infix + ' ' + lastSplit;\n  }\n  export function redirectRouteForUM(route: Route, prefix: string) {\n    const oPath = route?.path + '',\n      nPath = prefix + oPath;\n    route.path = nPath;\n    const routes: Routes = [\n      {\n        path: oPath,\n        redirectTo: nPath,\n      },\n      route,\n    ];\n    return routes;\n  }\n}\n","import { Injectable } from '@angular/core';\n \nexport class NumberToWordsClass { \n  num: (x: any) => number;\n  isEmpty: (xs: any) => boolean;\n  not: (x: any) => boolean;\n  chunk: (n: any) => (xs: any) => any[];\n  comp: (f: any) => (g: any) => (x: any) => any;\n  reverse: (xs: any) => any;\n  arr: (x: any) => unknown[];\n  constructor() {\n    this.arr = (x) => Array.from(x);\n    this. num = (x) => Number(x) || 0;\n    const str = (x) => String(x);\n    this.isEmpty = (xs) => xs.length === 0;\n    const take = (n) => (xs) => xs.slice(0, n);\n    const drop = (n) => (xs) => xs.slice(n);\n    this.reverse = (xs) => xs.slice(0).reverse();\n    this.comp = (f) => (g) => (x) => f(g(x));\n    this.not = (x) => !x;\n    this.chunk = (n) => (xs) =>\n      this.isEmpty(xs) ? [] : [take(n)(xs), ...this.chunk(n)(drop(n)(xs))];\n  }\n  transform(value: any): string {\n    if (value && this.isInteger(value)) return this. numToWords(value);\n\n    return value;\n  }\n\n  isInteger = (x: any) => {\n    return x % 1 === 0;\n  };\n\n  numToWords = (n) => {\n    let a = [\n      '',\n      'one',\n      'two',\n      'three',\n      'four',\n      'five',\n      'six',\n      'seven',\n      'eight',\n      'nine',\n      'ten',\n      'eleven',\n      'twelve',\n      'thirteen',\n      'fourteen',\n      'fifteen',\n      'sixteen',\n      'seventeen',\n      'eighteen',\n      'nineteen',\n    ];\n    let b = [\n      '',\n      '',\n      'twenty',\n      'thirty',\n      'forty',\n      'fifty',\n      'sixty',\n      'seventy',\n      'eighty',\n      'ninety',\n    ];\n    let g = [\n      '',\n      'thousand',\n      'million',\n      'billion',\n      'trillion',\n      'quadrillion',\n      'quintillion',\n      'sextillion',\n      'septillion',\n      'octillion',\n      'nonillion',\n    ];\n    // this part is really nasty still\n    // it might edit this again later to show how Monoids could fix this up\n    let makeGroup = ([ones, tens, huns]) => {\n      return [\n        this.num(huns) === 0 ? '' : a[huns] + ' hundred ',\n        this.num(ones) === 0 ? b[tens] : (b[tens] && b[tens] + '-') || '',\n        a[tens + ones] || a[ones],\n      ].join('');\n    };\n    // \"thousands\" constructor; no real good names for this, i guess\n    let thousand = (group, i) => (group === '' ? group : `${group} ${g[i]}`);\n    // execute !\n    if (typeof n === 'number') return this.numToWords(String(n));\n    if (n === '0') return 'zero';\n    return this.comp(this.chunk(3))(this.reverse)(this.arr(n))\n      .map(makeGroup)\n      .map(thousand)\n      .filter(this.comp(this.not)(this.isEmpty))\n      .reverse()\n      .join(' ');\n  };\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NumberToWordsService extends NumberToWordsClass{ \n  \n}\n","import { CommonModule, DatePipe } from '@angular/common';\nimport { NgModule, Pipe, PipeTransform } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { EPageType } from '../models/index.model';\nimport { HHFunctions } from '../functions/base-functions';\nimport { UtilityServiceLite } from '../../services/utility.service.lite';\nimport { NumberToWordsService } from '../../services/number-to-words.service';\n\n@Pipe({\n  name: 'numberToWords',\n  standalone: true,\n})\nexport class NumberToWordsPipe implements PipeTransform {\n  transform(value: any, suffix: string): string {\n    if (value && this.ntw.isInteger(value)) return this.ntw.numToWords(value) + suffix;\n\n    return value;\n  }\n  constructor(public ntw: NumberToWordsService) {}\n}\n\n@Pipe({\n  name: 'arraySplitter',\n  standalone: true,\n})\nexport class ArraySplitter implements PipeTransform {\n  transform<T>(arr: T[], arrLength: number, startIndex: number, endIndex?: number) {\n    return arr ? arr.slice(startIndex, endIndex ? endIndex + 1 : undefined) : [];\n  }\n}\n\n@Pipe({\n  name: 'gender',\n  standalone: true,\n})\nexport class GenderPipe implements PipeTransform {\n  transform(value: string) {\n    return value == 'M' ? 'Male' : value == 'F' ? 'Female' : value;\n  }\n}\n@Pipe({\n  name: 'round',\n  standalone: true,\n})\nexport class RoundPipe implements PipeTransform {\n  /**\n   * Use the Math.round function\n   */\n  transform(value: number) {\n    return Math.round(value);\n  }\n}\n@Pipe({\n  name: 'secondsToTime',\n  standalone: true,\n})\nexport class SecondsToTimePipe implements PipeTransform {\n  transform(value: number) {\n    const timeLeft = this.uS.secondsToHourMinSec(value);\n    return `${timeLeft.hours ? timeLeft.hours + 'hrs' : ''}\n  ${timeLeft.mins ? timeLeft.mins + 'min' : ''} ${timeLeft.secs ? timeLeft.secs + 's' : ''}`;\n  }\n  constructor(public uS: UtilityServiceLite) {}\n}\n\n@Pipe({\n  name: 'formatCount',\n  standalone: true,\n})\nexport class FormatCountPipe implements PipeTransform {\n  transform(value: number) {\n    return +value ? this.uS.formatCount(+value) : value;\n  }\n  constructor(public uS: UtilityServiceLite) {}\n}\n\n@Pipe({\n  name: 'getValueLabel',\n  standalone: true,\n})\nexport class GetValueLabel implements PipeTransform {\n  /**\n   * Converts a string into a Select option\n   * @param value The value to search for in the options list\n   * @param options The list of items to search in\n   * @param labelField The field that holds the description field\n   * @param valueField The field that holds the value field\n   * @returns A concatenation of the value and description (value - description)\n   */\n  transform(\n    value: string,\n    options: any[],\n    labelField = 'description',\n    valueField = 'code',\n  ): string {\n    if (!value) return '';\n    if (!options) return value;\n    const item = options.find((x) => x[valueField] == value);\n    if (!item) return value;\n    return value + ' - ' + item[labelField] || item['title'];\n  }\n}\n\n@Pipe({\n  name: 'valueFormatter',\n  standalone: true,\n})\nexport class ValueFormatterPipe implements PipeTransform {\n  async transform(val, formatter: any) {\n    return formatter ? formatter(val) : val;\n  }\n}\n@Pipe({\n  name: 'functionCaller',\n  standalone: true,\n})\nexport class FunctionCaller implements PipeTransform {\n  /**\n   * Calls a function in the template\n   * @param func Function to be called\n   * @param args\n   * @returns\n   */\n  transform<T, P>(func: (...args: P[]) => T, ...args: P[]) {\n    return func ? func(...args) : null;\n  }\n}\n@Pipe({\n  name: 'functionCaller1',\n  standalone: true,\n})\nexport class FunctionCaller1 extends FunctionCaller {\n  override transform<T, P1>(func: (param: P1) => T, param: P1) {\n    return super.transform(func, param);\n    // return param ? func(param) : null;\n  }\n}\n@Pipe({\n  name: 'functionCaller2',\n  standalone: true,\n})\nexport class FunctionCaller2 extends FunctionCaller {\n  override transform<T, P1, P2>(func: (param1: P1, param2: P2) => T, param1: P1, param2: P2) {\n    return super.transform(func, param1, param2);\n    // console.log('using')\n    // if(func) debugger\n    return func ? func(param1, param2) : null;\n    // return param1 ? (param2 ? func(param1, param2) : null) : null;\n  }\n}\n@Pipe({\n  name: 'functionCaller3',\n  standalone: true,\n})\nexport class FunctionCaller3 implements PipeTransform {\n  transform<T, P1, P2, P3>(\n    func: (param1: P1, param2: P2, param3: P3) => T,\n    param1: P1,\n    param2: P2,\n    param3: P3,\n  ) {\n    return func(param1, param2, param3);\n    // return param1 ? (param2 ? func(param1, param2) : null) : null;\n  }\n}\n@Pipe({\n  name: 'httpListCaller',\n  standalone: true,\n})\nexport class HttpListCaller implements PipeTransform {\n  // transform<T>(httpObservable: any) {\n  transform<T>(httpObservable: () => Observable<T>) {\n    // console.log('ran functionCaller', httpObservable);\n    return httpObservable();\n  }\n}\n\n@Pipe({\n  name: 'httpListCaller1',\n  standalone: true,\n})\nexport class HttpListCaller1 implements PipeTransform {\n  transform<T>(httpObservable: (param: any) => Observable<T>, param: any) {\n    // console.log('ran functionCaller1', httpObservable);\n    return httpObservable(param);\n    // return param ? httpObservable(param) : null;\n  }\n}\n@Pipe({\n  name: 'httpListCaller2',\n  standalone: true,\n})\nexport class HttpListCaller2 implements PipeTransform {\n  transform<T>(\n    httpObservable: (param1: string, param2: string) => Observable<T>,\n    param1: string,\n    param2: string,\n  ) {\n    // console.log('ran httpListCaller2', httpObservable);\n    return httpObservable(param1, param2);\n    // return param1 ? (param2 ? httpObservable(param1, param2) : null) : null;\n  }\n}\n@Pipe({\n  name: 'isShowPage',\n  standalone: true,\n})\nexport class IsShowPage implements PipeTransform {\n  transform(type: EPageType) {\n    return type == EPageType.viewPage ? true : false;\n  }\n}\n@Pipe({\n  name: 'isClonePage',\n  standalone: true,\n})\nexport class IsClonePage implements PipeTransform {\n  transform(type: EPageType) {\n    return type == EPageType.clonePage ? true : null;\n  }\n}\n\n@Pipe({\n  name: 'filterArray',\n  standalone: true,\n})\nexport class FilterArrayPipe implements PipeTransform {\n  transform<T>(\n    arr: T[],\n    value: any,\n    key: keyof T,\n    filterFunction?: (value: T, index?: number, array?: T[]) => boolean,\n  ) {\n    if (!arr) {\n      return [];\n    }\n    if (filterFunction) return arr.filter(filterFunction);\n    else return arr.filter((x) => x[key] == value);\n  }\n}\n\n@Pipe({\n  name: 'filterArrayByString',\n  standalone: true,\n})\nexport class FilterArrayByStringPipe implements PipeTransform {\n  /**\n   * Filter array using a pipe\n   * @param arr Array to filter\n   * @param value Value to filter for\n   * @param keys Fields to check for match in\n   * @param filterFunction Fitler function to use instead of value and keys\n   * @returns\n   */\n  transform<T>(\n    arr: T[],\n    value: string,\n    keys: (keyof T)[],\n    filterFunction?: (value: T, index?: number, array?: T[]) => boolean,\n  ) {\n    if (!arr) {\n      return [];\n    }\n    if (!value) return arr;\n    if (filterFunction) return arr.filter(filterFunction);\n    else {\n      // debugger;\n      const vl = value?.toString()?.trim()?.toLowerCase();\n      const ret: T[] = [];\n      const addedMap: { [id: string]: boolean } = {};\n      for (const key of keys) {\n        for (const item of arr) {\n          if (addedMap[item['id']]) continue;\n          if ((<string>item[key])?.toString()?.toLowerCase()?.startsWith(vl)) {\n            ret.push(item);\n            addedMap[item['id']] = true;\n          }\n        }\n      }\n      for (const key of keys) {\n        for (const item of arr) {\n          if (addedMap[item['id']]) continue;\n          if ((<string>item[key])?.toString()?.toLowerCase()?.includes(vl)) {\n            ret.push(item);\n            addedMap[item['id']] = true;\n          }\n        }\n      }\n      return ret;\n    }\n  }\n}\n\n@Pipe({\n  name: 'filterFormArray',\n  standalone: true,\n})\nexport class FilterFormArrayPipe implements PipeTransform {\n  transform(arr: AbstractControl[], value: any, key = 'id') {\n    if (!arr || !arr.length) return arr;\n    debugger;\n    return arr.filter((x) => x.value[key] == value);\n  }\n}\n\n@Pipe({\n  name: 'sort',\n  standalone: true,\n})\nexport class SortPipe implements PipeTransform {\n  transform<T>(arr: T[], direction: 0 | 1 = 0, sortField?: keyof T) {\n    //    console.log('SORTTER', arr, direction, sortField);\n    // debugger;\n    if (!arr) {\n      return null;\n    }\n    if (direction > -1 && direction < 2) {\n      return this.sort(arr, direction, sortField as any);\n    } else {\n      return arr;\n    }\n  }\n  sort<T>(arr: T[], direction: 0 | 1, sortField?: keyof T) {\n    if (sortField) {\n      return arr.sort2(sortField, true, direction ? true : false);\n    } else {\n      return arr.sort((x: any, y: any) => (direction ? y - x : x - y));\n    }\n  }\n}\n@Pipe({\n  name: 'toAny',\n  standalone: true,\n})\nexport class ToAnyPipe implements PipeTransform {\n  transform(value: any, isArray = false) {\n    return isArray ? (value as any[]) : value;\n  }\n}\n\n@Pipe({\n  name: 'toAnyArray',\n  standalone: true,\n})\nexport class ToAnyArrayPipe implements PipeTransform {\n  transform(value: any) {\n    return value as any[];\n  }\n}\n\n@Pipe({\n  name: 'trimText',\n  standalone: true,\n})\nexport class TrimTextPipe implements PipeTransform {\n  /**\n   * Trims a string based on a specified length\n   * @param value String to trim\n   * @param length Length to begin trimming\n   * @returns Trimmed string\n   */\n  transform(value: string, length: number) {\n    return !value || length == null || value.length < length\n      ? value\n      : value.substring(0, length) + '...';\n  }\n}\n\n@Pipe({\n  name: 'trim',\n  standalone: true,\n})\nexport class TrimPipe implements PipeTransform {\n  transform(value?: string) {\n    return value?.trim();\n  }\n}\n\n@Pipe({\n  name: 'xOrY',\n  standalone: true,\n})\nexport class XOrYPipe implements PipeTransform {\n  transform(x: string, y = '-') {\n    return this.uS.xOrY(x, y);\n  }\n  constructor(private uS: UtilityServiceLite) {}\n}\n\n@Pipe({\n  name: 'replaceAll',\n  standalone: true,\n})\nexport class ReplaceAllPipe implements PipeTransform {\n  transform(text: string, search: string, replacement: string) {\n    return text ? text.split(search).join(replacement) : text;\n  }\n}\n\n@Pipe({\n  name: 'valueOrX',\n  standalone: true,\n})\nexport class ValueOrXPipe implements PipeTransform {\n  /**\n   *\n   * @param value Variable that holds the value to be checked for emptiness\n   * @param replacement This is the value that will be set if the subject field is empty\n   * @returns Return the value or the replacement value if value is empty\n   */\n  transform<TV>(value: TV): string;\n  transform<TV, TR>(value: TV, replacement?: TR): TV | TR;\n  transform<TV, TR>(value: TV, replacement: TR = '-' as any) {\n    return value == null || value == undefined ? replacement : value;\n  }\n}\n\n@Pipe({\n  name: 'strConcatenator',\n  standalone: true,\n})\nexport class StrConcatenatorPipe implements PipeTransform {\n  transform<T>(text1: string, text2: string, joiner: string = ' - ') {\n    return HHFunctions.strConcatenator(text1, text2, joiner);\n  }\n}\n@Pipe({\n  name: 'customDate',\n  standalone: true,\n})\nexport class CustomDatePipe implements PipeTransform {\n  transform(date: string, showTime = false) {\n    let d = showTime ? 'dd MMM.' : 'dd MMM. YYYY';\n    let fulldate: string = '';\n    if (new Date(date).getDate() == new Date().getDate()) {\n      fulldate = 'Today';\n      d = '';\n    } else if (new Date().getDate() - new Date(date).getDate() == 1) {\n      fulldate = 'Yesterday';\n      d = '';\n    }\n    return (fulldate + this.datePipe.transform(date, showTime ? d + ' hh:mma' : d))?.trim();\n  }\n  transform2(date: string, formatStr: string) {\n    return this.datePipe.transform(date, formatStr);\n  }\n  constructor(public datePipe: DatePipe) {}\n}\n@Pipe({\n  name: 'dateAgo',\n  standalone: true,\n  pure: false,\n})\nexport class DateAgoPipe implements PipeTransform {\n  /**\n   *\n   * @param value\n   * @param startFrom less than startFrom in seconds ago will show as 'Just now'\n   * @returns\n   */\n  transform(\n    value: string | Date | number,\n    /**\n  @default 30 \n  */\n    startFrom = 30,\n  ): any {\n    if (value) {\n      const seconds = Math.floor((+new Date() - +new Date(value)) / 1000);\n      if (seconds < startFrom - 1)\n        // less than 30 seconds ago will show as 'Just now'\n        return 'Just now';\n      const intervals = {\n        year: 31536000,\n        month: 2592000,\n        week: 604800,\n        day: 86400,\n        hour: 3600,\n        minute: 60,\n        second: 1,\n      };\n      let counter;\n      for (const i in intervals) {\n        counter = Math.floor(seconds / intervals[i]);\n        if (counter > 0)\n          if (counter === 1) {\n            return counter + ' ' + i + ' ago'; // singular (1 day ago)\n          } else {\n            return counter + ' ' + i + 's ago'; // plural (2 days ago)\n          }\n      }\n    }\n    return value;\n  }\n}\n\nconst comps = [\n  ArraySplitter,\n  CustomDatePipe,\n  DateAgoPipe,\n  FilterArrayByStringPipe,\n  FilterArrayPipe,\n  FilterFormArrayPipe,\n  FormatCountPipe,\n  FunctionCaller,\n  FunctionCaller1,\n  FunctionCaller2,\n  FunctionCaller3,\n  GenderPipe,\n  GetValueLabel,\n  HttpListCaller,\n  HttpListCaller1,\n  HttpListCaller2,\n  IsClonePage,\n  IsShowPage,\n  NumberToWordsPipe,\n  TrimPipe,\n  ReplaceAllPipe,\n  RoundPipe,\n  SecondsToTimePipe,\n  SortPipe,\n  StrConcatenatorPipe,\n  ToAnyArrayPipe,\n  ToAnyPipe,\n  TrimTextPipe,\n  ValueFormatterPipe,\n  ValueOrXPipe,\n  XOrYPipe,\n];\nconst modules = [];\n@NgModule({\n  imports: [CommonModule, ...modules, ...comps],\n  exports: [...comps, ...modules],\n  providers: [DatePipe],\n})\nexport class UtilityPipesModule {}\n","import { CurrencyPipe, DecimalPipe, Location, TitleCasePipe } from '@angular/common';\nimport { ElementRef, Injectable, QueryList, inject } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport {\n  Router,\n  NavigationExtras,\n  ActivatedRoute,\n  NavigationCancel,\n  NavigationEnd,\n  NavigationStart,\n} from '@angular/router';\nimport { HHenvironment } from '../../environments/environment';\nimport {\n  AbstractControl,\n  FormArray,\n  FormControl,\n  FormGroup,\n  UntypedFormArray,\n} from '@angular/forms';\nimport { cloneDeep } from 'lodash';\nimport { merge, Observable, ReplaySubject, Subscription } from 'rxjs';\nimport { filter, map, mergeMap, tap } from 'rxjs/operators';\nimport { CustomValidationError } from '../shared/models/index.model';\nimport jsPDF from 'jspdf';\nimport html2canvas from 'html2canvas';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { UtilityClass } from './utility.class';\nimport { CustomDatePipe } from '../shared/pipes/utility.pipe';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class UtilityServiceLite extends UtilityClass {\n  /**\n   * Emits true if mobile\n   */\n  mobileQueryChanged = new ReplaySubject<boolean>();\n  isMobile: boolean;\n  override environment = HHenvironment;\n  public router = inject(Router);\n  public titleS = inject(Title);\n  public location = inject(Location);\n  public numberPipe = inject(DecimalPipe);\n  public currencyPipe = inject(CurrencyPipe);\n  public customDatePipe = inject(CustomDatePipe);\n  public titleCasePipe = inject(TitleCasePipe);\n  public responsive = inject(BreakpointObserver);\n\n  isMobileSignal = toSignal(\n    this.responsive\n      .observe([Breakpoints.HandsetPortrait, Breakpoints.WebLandscape])\n      .pipe(map((r) => r.breakpoints[Breakpoints.HandsetPortrait])),\n  );\n\n  constructor() {\n    super(HHenvironment);\n    this.responsive\n      .observe([Breakpoints.HandsetPortrait, Breakpoints.WebLandscape])\n      .subscribe((result) => {\n        const breakpoints = result.breakpoints;\n\n        if (breakpoints[Breakpoints.HandsetPortrait]) {\n          this.isMobile = true;\n          this.mobileQueryChanged.next(true);\n        } else {\n          this.isMobile = false;\n          this.mobileQueryChanged.next(false);\n        }\n      });\n  }\n  back = () => this.location.back();\n  createSubscriptionManager = (...subs: Subscription[]) => {\n    let _subs: Subscription[] = subs || [];\n    const clear = () => {\n      _subs.forEach((x) => x.unsubscribe());\n      _subs = [];\n    };\n    const push = (...subs: Subscription[]) => {\n      _subs.push(...subs);\n    };\n\n    return { clear, push };\n  };\n  onlyOneInput(inputs: FormControl[]) {\n    const nInputs = inputs?.map((inp) => ({ id: this.genRandomID, inp })) || [];\n    merge(\n      ...nInputs.map((i) => i.inp.valueChanges.pipe(map((val) => ({ id: i.id, val })))),\n    ).subscribe((r) => {\n      // debugger\n      if (r.val)\n        nInputs.filter((x) => x.id != r.id).forEach((x) => x.inp.disable({ emitEvent: false }));\n      else nInputs.filter((x) => x.id != r.id).forEach((x) => x.inp.enable({ emitEvent: false }));\n    });\n  }\n\n  toTitleCase(text: string) {\n    return this.titleCasePipe.transform(text);\n  }\n\n  /**\n   * Handles the deletion of rows from a FormArray\n   * @param index Index of the row to delete\n   * @param fa The FormArray that holds the rows\n   * @param deleteService The deletion service to be called (It should be an anonymous function)\n   * @param addRowFunc The function (anonymous) that adds a new row to the FormArray\n   * @param emitEvent Specify whether to emit an event when manipulating the FormArray\n   * @returns\n   */\n  handleFormRowDelete = (\n    index: number,\n    fa: UntypedFormArray,\n    deleteService: ((...args) => Promise<any> | Observable<any>) | null,\n    addRowFunc: (...args) => any,\n    emitEvent = true,\n  ) => {\n    return new Promise<any>((sub) => {\n      const id = cloneDeep(fa.controls[index]?.value?.id);\n      // debugger;\n      if (fa.controls.length == 1 && id) {\n        fa.removeAt(index, { emitEvent });\n        addRowFunc();\n      } else if (fa.controls.length > 1) fa.removeAt(index, { emitEvent });\n      else if (fa.controls.length == 1) fa.controls[0].reset();\n\n      if (id && deleteService) {\n        const req = deleteService(id);\n        if (req['toPromise']) {\n          sub(req['toPromise']());\n        } else {\n          sub(req as any);\n        }\n      } else {\n        sub(null);\n      }\n    });\n  };\n  countMap = {\n    thousand: {\n      min1: 1000,\n      max1: 9999,\n      min2: 10000,\n      max2: 999999,\n    },\n    mil: {\n      min1: 1000000,\n      max1: 9999999,\n      min2: 10000000,\n      max2: 999999999,\n    },\n    bil: {\n      min1: 1000000000,\n      max1: 9999999999,\n      min2: 10000000000,\n      max2: 999999999999,\n    },\n    tril: {\n      min1: 1000000000000,\n      max1: 9999999999999,\n      min2: 10000000000000,\n      max2: 999999999999999,\n    },\n  };\n  formatCount = (num: number) => {\n    const countMap = this.countMap;\n    if (!num) {\n      return 0 + '';\n    } else {\n      // hundreds\n      if (num <= 999) {\n        return num + '';\n      }\n      // thousands\n      else if (num >= countMap.thousand.min1 && num <= countMap.thousand.max1) {\n        return this.numberPipe.transform(num / countMap.thousand.min1, '1.0-3') + 'K';\n      } else if (num >= countMap.thousand.min2 && num <= countMap.thousand.max2) {\n        return this.numberPipe.transform(num / countMap.thousand.min1, '1.0-1') + 'K';\n      }\n      // millions\n      else if (num >= countMap.mil.min1 && num <= countMap.mil.max1) {\n        return this.numberPipe.transform(num / countMap.mil.min1, '1.0-3') + 'M';\n      } else if (num >= countMap.mil.min2 && num <= countMap.mil.max2) {\n        return this.numberPipe.transform(num / countMap.mil.min1, '1.0-1') + 'M';\n      }\n      // billions\n      else if (num >= countMap.bil.min1 && num <= countMap.bil.max1) {\n        return this.numberPipe.transform(num / countMap.bil.min1, '1.0-3') + 'B';\n      } else if (num >= countMap.bil.min2 && num <= countMap.bil.max2) {\n        return this.numberPipe.transform(num / countMap.bil.min1, '1.0-1') + 'B';\n      }\n      // trillions\n      else if (num >= countMap.tril.min1 && num <= countMap.tril.max1) {\n        return this.numberPipe.transform(num / countMap.tril.min1, '1.0-3') + 'TR';\n      } else if (num >= countMap.tril.min2 && num <= countMap.tril.max2) {\n        return this.numberPipe.transform(num / countMap.tril.min1, '1.0-1') + 'TR';\n      } else return num + '';\n    }\n  };\n\n  /**\n   * To handle the patching of a FormArray\n   * @param arr The array that contains the data\n   * @param addFunc The function that performs addition of single entries\n   * @param formArr The FormArray that will hold the array's data\n   */\n  initPatchFormArray = (\n    arr: any[],\n    addFunc: (i: number, data?: any, formArr?: FormArray) => void,\n    formArr: FormArray,\n  ) => {\n    // debugger\n    if (arr?.length) {\n      if (formArr.length) formArr.clear();\n      for (const item of arr) {\n        addFunc(formArr.length, item, formArr);\n      }\n    } else {\n      if (!formArr.length) addFunc(formArr.length, null, formArr);\n    }\n  };\n\n  trackByForForms = (index, item: FormGroup) => {\n    if (!item.controls.__id) item.addControl('__id', new FormControl(this.generateUUID()));\n    return item.controls.__id.value;\n  };\n\n  go = (value: string, extra?: NavigationExtras) => {\n    this.router.navigate([value], extra);\n  };\n\n  relativeRouter() {\n    const router = inject(Router),\n      route = inject(ActivatedRoute);\n    return {\n      route,\n      router,\n      navigate: (link: string, config?: NavigationExtras | undefined) =>\n        router.navigate([link], { relativeTo: route, ...config }),\n      queryParams: route.snapshot.queryParams,\n      pathParams: route.snapshot.params,\n    };\n  }\n  /**\n   * Route to component\n   * @param route Route of path to component\n   * @param extra\n   */\n  goR = (route: string, extra?: NavigationExtras) => {\n    // if (!environment.activatedRoute) debugger;\n    this.router.navigate([route], {\n      relativeTo: HHenvironment.activatedRoute,\n      ...extra,\n    });\n    // debugger;\n  };\n  /**\n   * Route to the redirect component\n   * @param route Absolute path to redirect to\n   * @param config Configuration for the redirection\n   */\n  redirect = (\n    route: string,\n    config?: {\n      /**\n       * Specify if the redirect route is an app route or external route\n       */\n      isExternal?: boolean;\n      /**\n       * Specify if to open in a new tab or current tab\n       */\n      newTab?: boolean;\n    },\n  ) => {\n    // if (!environment.activatedRoute) debugger;\n    const queryParams = { i: (config?.isExternal ? 1 : 0) || 0, r: route };\n    if (config?.newTab) this.openInTab('/redirect', queryParams);\n    else\n      this.router.navigate([`/redirect`], {\n        relativeTo: HHenvironment.activatedRoute,\n        queryParams,\n      });\n    // debugger;\n  };\n  /**\n   * Open route in a new tab\n   * @param route Route path\n   */\n  openInTab(route: string, queryParams?: { [x: string]: string | number }) {\n    // debugger;\n    const _route = route + this.objectToQueryParams(queryParams);\n    HHenvironment.isEmbedMode ? this.goR(route, { queryParams }) : window.open(_route, '_blank');\n  }\n\n  moneyParser = (amount: string | number, currency = HHenvironment.currency) => {\n    if (amount == 'NaN' || amount == undefined || amount == null) return undefined;\n    return this.currencyPipe.transform(amount, currency || ' ');\n  };\n\n  disableOrEnableInputs = (controls: AbstractControl[], disable: boolean) => {\n    if (disable) this.disableInputs(controls);\n    else this.enableInputs(controls);\n  };\n  disableInputs = (controls: AbstractControl[]) => {\n    for (const control of controls) {\n      control?.disable({ emitEvent: false });\n    }\n  };\n  enableInputs = (controls: AbstractControl[]) => {\n    for (const control of controls) {\n      control?.enable({ emitEvent: false });\n    }\n  };\n\n  notify: (\n    message: string,\n    cls?: 0 | 1 | 2 | 3,\n    duration?: number,\n    title?: string,\n    extraConfig?: {\n      [x: string]: any;\n    },\n  ) => any;\n\n  /**\n   *\n   * @param timestamp\n   * @returns @example `Fri Feb 03 2023, 11:59 pm`\n   */\n  fullDateTime = (timestamp: string | number, format = 'EE, MMMM d, y, hh:mm:ss a') =>\n    this.customDatePipe.datePipe.transform(timestamp, format);\n\n  /**\n   *\n   * @param timestamp\n   * @returns\n   */\n  fullDateTimeLean = (timestamp: string | number) => {\n    return this.customDatePipe.transform2(timestamp as any, 'dd/MM/yyyy hh:mm a');\n  };\n  dateFormatterUX = (date: any) => {\n    if (!date) return undefined;\n    return this.customDatePipe.transform(date, false);\n  };\n\n  dateTimeFormatter = (date: any) => {\n    return this.customDatePipe.transform(date, true);\n  };\n\n  async exportHTMLsToPDF(\n    contents: QueryList<ElementRef<HTMLDivElement>>,\n    fileName: string,\n    config: {\n      width?: number;\n      height?: number;\n      orientation?: 'p' | 'portrait' | 'l' | 'landscape';\n    },\n  ) {\n    if (!contents) return;\n\n    let PDF = new jsPDF(config?.orientation || 'p', 'px');\n    let position = 0;\n    await Promise.all(\n      contents.map((el, i) => {\n        const content = el.nativeElement;\n        return html2canvas(content).then(async (canvas) => {\n          let fileWidth = config?.width;\n          let fileHeight = config?.height || (canvas.height * fileWidth) / canvas.width;\n          console.log(canvas.width, canvas.height, [fileWidth, fileHeight]);\n          const FILEURI = canvas.toDataURL('image/png', 1);\n          PDF.addPage();\n          PDF.addImage(FILEURI, 'PNG', 0, position, fileWidth, fileHeight);\n        });\n      }),\n    );\n    return await PDF.save(fileName + '.pdf', {\n      returnPromise: true,\n    });\n  }\n\n  noAccessNotify() {\n    this.notify(`Sorry, you don't have access to the module`, 0);\n  }\n\n  validatePhonenumber(control: FormControl<string>): CustomValidationError {\n    return control.value?.startsWith('0')\n      ? /^\\d+$/.test(control?.value)\n        ? null\n        : { custom: `Telephone number must be in digits` }\n      : { custom: `Telephone number must start with 0 and 11 digits` };\n  }\n\n  onRouteChange = (\n    route: ActivatedRoute,\n    router: Router,\n    onRouteChangeCB: (routeDataParams: any) => any,\n  ) =>\n    router.events\n      .pipe(\n        tap((event) => {\n          if (event instanceof NavigationStart) {\n            HHenvironment.loading = true;\n          } else if (event instanceof NavigationCancel) {\n            HHenvironment.loading = false;\n          }\n        }),\n        filter((event) => event instanceof NavigationEnd),\n        tap((event) => {\n          HHenvironment.loading = false;\n        }),\n        map(() => route),\n        map((route) => {\n          while (route.firstChild) {\n            route = route.firstChild;\n          }\n          // debugger\n          HHenvironment.activatedRoute = route;\n          return route;\n        }),\n        filter((route) => route.outlet === 'primary'),\n        mergeMap((route) => route.data),\n      )\n      .subscribe((params) => {\n        onRouteChangeCB(params);\n      });\n  // track = this.mixPanelService.track;\n}\n","import { Injectable, computed, signal } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class PageLoaderService {\n  protected readonly _pageLoaders = signal<1[]>([]);\n  readonly pageLoaders = computed(() => this._pageLoaders());\n\n  constructor() {}\n\n  isLoading = computed<boolean>(() => this._pageLoaders()?.length > 0);\n  isLoading$ = toObservable(this.isLoading);\n\n  startPl = (value = 1) => {\n    for (let index = 0; index < value; index++) {\n      this._pageLoaders.update((pls) => pls.concat(1));\n    }\n    // console.log('length at start',this._pageLoaders.length)\n    return this._pageLoaders()?.length;\n  };\n\n  restartPl = () => {\n    this.stopAllPls();\n    return this.startPl();\n  };\n\n  stopPl = (value = 1) => {\n    for (let index = 0; index < value; index++) {\n      this._pageLoaders.update((pl) => {\n        pl.pop();\n        return [...pl];\n      });\n    }\n    // console.log('length at end', this._pageLoaders.length)\n    return this._pageLoaders()?.length;\n  };\n\n  stopAllPls = () => {\n    this._pageLoaders.set([]);\n  };\n}\n"," \nimport { SVGIconType } from '../components/svg-icon/svg-icon.model';\n\nexport interface IMenuItemBase {\n  breadcrumbs?: KeyValue<string, string>[];\n  breadcrumbsStr?: string;\n  hasSub?: boolean;\n  icon?: SVGIconType|string;\n  id?: string|number;\n  index?: number;\n  isDivider?: boolean;\n  isP?: boolean;\n  label?: string;\n  labelLowerCase?: string;\n  link?: string;\n  action?: () => any;\n  queryParams?: { [x: string]: string | number | boolean };\n  parentID?: string|number;\n  submenuPosition?: 'before' | 'after';\n  systemIcon?: string;\n  systemLink?: string;\n  isReady?: boolean;\n}\nexport interface IMenuItemRawBase {\n  [x: string]: IMenuItemRaw;\n}\nexport interface IMenuItemRaw extends IMenuItemBase {\n  subs?: { [x: string]: IMenuItemRaw }; \n}\nexport interface IMenuItem extends IMenuItemBase {\n  canAccess?: boolean;\n  expanded?: boolean;\n  queryParamsHandling?:  'merge' | 'preserve' | ''; \n  subs?: IMenuItem[]; \n}\nexport class MenuItem implements IMenuItem {\n  breadcrumbs?: KeyValue<string, string>[];\n  breadcrumbsStr?: string; \n  canAccess?: boolean; \n  dbID: number;\n  disabled: boolean;\n  hasButtons: boolean;\n  hasSub?: boolean;\n  icon: string;\n  id: string|number;\n  index?: number;\n  isDivider?: boolean;\n  isP?: boolean;\n  label: string;\n  labelLowerCase?: string;\n  level?: number;\n  link: string;\n  parentID: string|number;\n  submenuPosition?: 'before' | 'after';\n  subs: MenuItem[];\n  systemIcon?: string;\n  systemLink?: string;\n  viewAccess: boolean;\n  editAccess: boolean;\n  public get _editAccess(): boolean {\n    console.log(this.editAccess);\n    return this.editAccess;\n  }\n  public set _editAccess(value: boolean) {\n    this.editAccess = value;\n    this.toggleEditAllSubMenus();\n  }\n  public get _viewAccess(): boolean {\n    return this.viewAccess;\n  }\n  public set _viewAccess(value: boolean) {\n    this.viewAccess = value;\n    this.toggleViewAllSubMenus();\n  }\n  constructor(menuItem: IMenuItem, parent?: IMenuItem) {\n    Object.assign(this, menuItem);\n    this.labelLowerCase = menuItem?.label?.toLowerCase();\n    this.hasSub = !!menuItem?.subs?.length; \n    this.isP = true;\n    this.parentID = parent?.id;\n    // debugger\n    this.subs = menuItem?.subs?.map((m) => new MenuItem(m, this));\n  }\n  toggle() {\n    this.disabled = !this.disabled;\n  }\n  toggleView() {\n    this.viewAccess = !this.viewAccess;\n    if (this.editAccess) this.viewAccess = true;\n  }\n  toggleCreate() {\n    this.editAccess = !this.editAccess;\n    if (this.editAccess) this.viewAccess = true;\n  }\n  allowEditAllSubMenus() {\n    this.subs?.forEach((x) => x?.allowEditAllSubMenus()); \n    //debugger;\n    this.viewAccess = true;\n    this.editAccess = true;\n  }\n  disableEditAllSubMenus() {\n    this.subs?.forEach((x) => x?.disableEditAllSubMenus()); \n    this.editAccess = false;\n  }\n  allowViewAllSubMenus() {\n    this.subs?.forEach((x) => x?.allowViewAllSubMenus()); \n    //debugger;\n    this.viewAccess = true;\n    this.editAccess = false;\n  }\n  disableViewAllSubMenus() {\n    this.subs?.forEach((x) => x?.disableViewAllSubMenus()); \n    this.viewAccess = false;\n    this.editAccess = false;\n  }\n  toggleEditAllSubMenus() {\n    // if (this.editAccess == undefined) return;\n    !this.editAccess\n      ? this.allowEditAllSubMenus()\n      : this.disableEditAllSubMenus();\n    console.log(this.subs);\n  }\n  toggleViewAllSubMenus() {\n    // if (this.viewAccess == undefined) return;\n    // debugger\n    !this.viewAccess\n      ? this.allowViewAllSubMenus()\n      : this.disableViewAllSubMenus();\n    console.log(this.subs);\n  }\n  allowAuthorization() {\n    this.viewAccess = true;\n    this.editAccess = true;\n  }\n  disableAuthorization() {\n    this.viewAccess = false;\n    this.viewAccess = false;\n  }\n  toggleAuthorization() {\n    this.viewAccess = !this.viewAccess;\n    this.editAccess = !this.editAccess;\n  }\n}\n\nexport class MenuItemDivider extends MenuItem {\n  constructor() {\n    super(null);\n    this.isDivider = true;\n  }\n}\n\nexport enum EPageBtnID {\n  agentCommissions = 'PAC8',\n  agentCreditNotes = 'PACN10',\n  agentDocuments = 'PAD2',\n  agentEndorsements = 'PAE3',\n  agentLoan = 'PAL1',\n  agentNotes = 'PAN6',\n  agentPendingQuotes = 'PAPQ11',\n  agentPolicies = 'PAP7',\n  agentProduction = 'PAP9',\n  agentWebLogIn = 'PAWL4',\n  agentWorkflows = 'PAW5',\n  agentCalendar = 'PAC6',\n\n  clientCalendar = 'PCC11',\n  clientDocuments = 'PCD12',\n  clientEndorsements = 'PCE13',\n  clientNotes = 'PCN14',\n  clientOtherBusiness = 'PCOB15',\n  clientPendingPayments = 'PCPP16',\n  clientPendingQuotes = 'PCPQ17',\n  clientPolicies = 'PCP18',\n  clientRelationships = 'PCR19',\n  clientUnderwritingEvents = 'PCUE20',\n  clientWebLogIn = 'PCWL21',\n  clientWorkflows = 'PCW22',\n}\nexport   interface KeyValue<K, V> {\n  key: K;\n  value: V;\n}\n","/*\n * Public API Surface of ts-helpers\n */\n\nexport * as Prototypes from './lib/shared/prototypes/prototypes';\n\n// export * from './environments/environment';\n\nexport { EnvironmentClass } from './lib/shared/classes/environment.class.lite';\n\nexport { Config as HHConfig } from './lib/config/index.config';\nexport * from './lib/config/validation-messages.config';\n\nexport { CacheClass } from './lib/services/cache.class';\nexport { EncryptorClass } from './lib/services/encryptor.class';\nexport { LocalCacheClass } from './lib/services/local-cache.class';\n// export { NumberToWordsClass } from './lib/services/number-to-words.service';\nexport { StorageClass } from './lib/services/storage.class';\nexport { UtilityClass } from './lib/services/utility.class';\n\n// export { EnvironmentClass } from './lib/shared/classes/environment.class';\n// export * from './lib/shared/classes/form.class';\n// export * from './lib/shared/classes/page-loader.class';\n// export * from './lib/shared/classes/progress-loader.class';\n// export * from './lib/shared/classes/selector.class';\n\n// export * from './lib/shared/functions/base-functions';\n\nexport * from './lib/shared/models/IMenuItem';\nexport * from './lib/shared/models/index.model';\nexport * from './lib/services/app.class'; \nexport {\n  IFormSchemaLite,\n  IFormOptions,\n} from './lib/shared/components/form-generator/form-generator.class';\n","/*\n * Public API Surface of herlhay-helpers\n */\nexport * as Prototypes from './lib/shared/prototypes/prototypes';\n\n// export * from './environments/environment';\n\nexport * from './lib/shared/classes/environment.class';\n\nexport { Config as HHConfig } from './lib/config/index.config';\nexport * from './lib/config/validation-messages.config';\n\nexport * from './lib/services/app.service';\nexport * from './lib/services/api.service';\nexport * from './lib/services/cache.service';\nexport * from './lib/services/encryptor.service';\nexport * from './lib/services/local-cache.service';\n// export { NumberToWordsClass } from './lib/services/number-to-words.service';\nexport * from './lib/services/storage.service';\nexport * from './lib/services/utility.service.lite';\nexport * from './lib/services/page-loader.service';\n\nexport * from './lib/shared/pipes/utility.pipe';\n\n\nexport * from './lib/shared/functions/base-functions';\n\nexport * from './lib/shared/models/IMenuItem';\nexport * from './lib/shared/models/index.model';\n\nexport * from './public-api.tsh';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api.lite';\n"],"names":["i1.EncryptorService","i1.StorageService","i3.CacheService","i4.LocalCacheService","i2.ApiService","i3.StorageService","catchError","tap","i1.NumberToWordsService","i2.UtilityServiceLite"],"mappings":"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"}