{"version":3,"file":"sebgroup-green-angular-src-v-angular-core.mjs","sources":["../../../../libs/angular/src/v-angular/core/core.globals.ts","../../../../libs/angular/src/v-angular/core/core.utils.ts","../../../../libs/angular/src/v-angular/core/sebgroup-green-angular-src-v-angular-core.ts"],"sourcesContent":["// We must force tsc to interpret this file as a module, resolves\n// \"Augmentations for the global scope can only be directly nested in external modules or ambient module declarations.\"\nexport {}\n\ndeclare global {\n  interface Window {\n    /** Counter for unique identifiers */\n    nggv: {\n      ids: { [namespace: string]: number; default: number }\n      nextId: (namespace?: string) => string\n    }\n  }\n}\n\n;(() => {\n  // Make sure there is an incremental ID each component can use\n  if (typeof window !== 'undefined' && !window.nggv) {\n    window.nggv = {\n      ids: { default: -1 },\n      nextId(namespace = 'default'): string {\n        let id = this.ids[namespace] || 0\n        if (typeof this.ids[namespace] === 'number') id++\n        this.ids[namespace] = id\n        return namespace === 'default'\n          ? `nggv-${id}`\n          : `nggv-${namespace}-${id}`\n      },\n    }\n  }\n})()\n","import { Injectable } from '@angular/core'\n\nexport interface Option<K, V> {\n  key: K\n  label: V\n  disabled?: boolean\n}\n\nexport interface OptionGroup<T extends Option<any, any>> {\n  label: string\n  options: T[]\n  disabled?: boolean\n}\n\nexport type OptionBase<T extends Option<any, any>> = T | OptionGroup<T>\n\n@Injectable()\nexport class DropdownUtils<\n  K = string | null,\n  V = string,\n  T extends Option<K, V> = Option<K, V>,\n> {\n  public flattenOptions(\n    options: OptionBase<T>[] | undefined,\n    mustHaveLabel: boolean,\n  ): T[] {\n    if (!options) return [] as T[]\n    return options.reduce((acc, current) => {\n      if (this.isGroup(current))\n        return acc.concat(this.flattenOptions(current.options, mustHaveLabel))\n      if (!current.disabled && !(mustHaveLabel && !current.label))\n        acc.push(current) // skip disabled\n      return acc\n    }, [] as T[])\n  }\n\n  /**\n   * Returns true if argument is an {@link OptionGroup}.\n   * @param option the object to check.\n   */\n  public isGroup(option: OptionBase<T>): option is OptionGroup<T> {\n    return 'options' in option\n  }\n\n  public deepEqual(original: any, change: any): boolean {\n    if (original === change) return true\n\n    // breaks early if either original or change is a primitive value\n    if (\n      typeof original !== 'object' ||\n      typeof change !== 'object' ||\n      original == null ||\n      change == null\n    )\n      return false\n\n    const keysOriginal = Object.keys(original)\n    const keysChange = Object.keys(change)\n\n    if (keysOriginal.length !== keysChange.length) return false\n\n    for (const key of keysOriginal) {\n      if (!keysChange.includes(key)) return false\n\n      switch (true) {\n        case Array.isArray(original[key]) && Array.isArray(change[key]):\n          if (\n            JSON.stringify(original[key].sort()) !==\n            JSON.stringify(change[key].sort())\n          )\n            return false\n          break\n        case typeof original[key] === 'function':\n        case typeof change[key] === 'function':\n          if (original[key].toString() !== change[key].toString()) return false\n          break\n        default:\n          if (!this.deepEqual(original[key], change[key])) return false\n      }\n    }\n\n    return true\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAcA;AAAC,CAAC,MAAK;;IAEL,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACjD,MAAM,CAAC,IAAI,GAAG;AACZ,YAAA,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;YACpB,MAAM,CAAC,SAAS,GAAG,SAAS,EAAA;gBAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;gBACjC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ;AAAE,oBAAA,EAAE,EAAE;AACjD,gBAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACxB,OAAO,SAAS,KAAK;sBACjB,CAAA,KAAA,EAAQ,EAAE,CAAA;AACZ,sBAAE,CAAA,KAAA,EAAQ,SAAS,CAAA,CAAA,EAAI,EAAE,EAAE;YAC/B,CAAC;SACF;IACH;AACF,CAAC,GAAG;;MCZS,aAAa,CAAA;IAKjB,cAAc,CACnB,OAAoC,EACpC,aAAsB,EAAA;AAEtB,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,EAAS;QAC9B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;AACrC,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACvB,gBAAA,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACxE,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,aAAa,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACzD,gBAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACnB,YAAA,OAAO,GAAG;QACZ,CAAC,EAAE,EAAS,CAAC;IACf;AAEA;;;AAGG;AACI,IAAA,OAAO,CAAC,MAAqB,EAAA;QAClC,OAAO,SAAS,IAAI,MAAM;IAC5B;IAEO,SAAS,CAAC,QAAa,EAAE,MAAW,EAAA;QACzC,IAAI,QAAQ,KAAK,MAAM;AAAE,YAAA,OAAO,IAAI;;QAGpC,IACE,OAAO,QAAQ,KAAK,QAAQ;YAC5B,OAAO,MAAM,KAAK,QAAQ;AAC1B,YAAA,QAAQ,IAAI,IAAI;AAChB,YAAA,MAAM,IAAI,IAAI;AAEd,YAAA,OAAO,KAAK;QAEd,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAEtC,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;AAE3D,QAAA,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,KAAK;YAE3C,QAAQ,IAAI;AACV,gBAAA,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,IACE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;wBACpC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAElC,wBAAA,OAAO,KAAK;oBACd;AACF,gBAAA,KAAK,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,UAAU;AACxC,gBAAA,KAAK,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,UAAU;AACpC,oBAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AAAE,wBAAA,OAAO,KAAK;oBACrE;AACF,gBAAA;AACE,oBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAAE,wBAAA,OAAO,KAAK;;QAEnE;AAEA,QAAA,OAAO,IAAI;IACb;+GAjEW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAb,aAAa,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;AChBD;;AAEG;;;;"}