{"version":3,"file":"pvway-alpha-common.mjs","sources":["../../../projects/alpha-com/src/lib/utils/alpha-utils.ts","../../../projects/alpha-com/src/lib/utils/alpha-window.ts","../../../projects/alpha-com/src/lib/utils/alpha-ymd.ts","../../../projects/alpha-com/src/lib/http/alpha-severity-enum.ts","../../../projects/alpha-com/src/lib/http/alpha-mutation-enum.ts","../../../projects/alpha-com/src/lib/http/alpha-http-result-notification.ts","../../../projects/alpha-com/src/lib/http/alpha-http-result.ts","../../../projects/alpha-com/src/lib/api/alpha-upload-api.service.ts","../../../projects/alpha-com/src/lib/api/alpha-version-api.service.ts","../../../projects/alpha-com/src/lib/ems/alpha-ems.service.ts","../../../projects/alpha-com/src/lib/ems/alpha-ems-uso-option-set.ts","../../../projects/alpha-com/src/lib/ems/alpha-ems-edit-container.ts","../../../projects/alpha-com/src/lib/ems/alpha-ems-base-api-event.ts","../../../projects/alpha-com/src/lib/ems/alpha-ems-base-api.ts","../../../projects/alpha-com/src/lib/ems/alpha-ems-base-form-model.ts","../../../projects/alpha-com/src/lib/ems/alpha-ems-form-result.ts","../../../projects/alpha-com/src/lib/ems/alpha-ems-base-component.ts","../../../projects/alpha-com/src/lib/ems/alpha-ems-form-input.ts","../../../projects/alpha-com/src/public-api.ts","../../../projects/alpha-com/src/pvway-alpha-common.ts"],"sourcesContent":["/**\r\n * Utility class for various string and number operations.\r\n */\r\nexport class AlphaUtils {\r\n\r\n  /**\r\n   * Check if a string is null or empty.\r\n   *\r\n   * @param {string | undefined} str - The string to evaluate.\r\n   * @returns {boolean} - True if the string is null or empty, false otherwise.\r\n   */\r\n  static eon(str: string | undefined): boolean {\r\n    return (!str || str.trim() === '');\r\n  }\r\n\r\n  /**\r\n   * Checks if a value is null or undefined.\r\n   * @param {any} val - The value to check.\r\n   * @return {boolean} - True if the value is null or undefined, otherwise false.\r\n   */\r\n  static isNull(val: any): boolean {\r\n    return (val == null);\r\n  }\r\n\r\n  /**\r\n   * Converts a string to a number. It returns null when the value is undefined\r\n   * or cannot be converted to a number.\r\n   *\r\n   * @param {string | undefined} val - The value to be converted to a number.\r\n   * @returns {number | null} - The converted number value or null if the value is\r\n   * undefined or cannot be converted to a number.\r\n   */\r\n  static toNumberOrNull(val: string | undefined): number | null {\r\n    return this.eon(val) ? null : Number(val);\r\n  }\r\n\r\n  /**\r\n   * returns true if the string to find is found in the string to evaluate\r\n   * @param strToCheck the string to evaluate\r\n   * @param stringToFind the string to find within the string to evaluate\r\n   * @note this method is case-sensitive\r\n   */\r\n  static contains(strToCheck: string, stringToFind: string): boolean {\r\n    return strToCheck.indexOf(stringToFind) >= 0;\r\n  }\r\n\r\n  /**\r\n   * Converts a numerical value to a currency representation with the specified locale,\r\n   * number of digits, and currency.\r\n   * @param {number} value - The numerical value to be converted.\r\n   * @param {string} [locale] - The optional locale code to be used for formatting the currency.\r\n   * @param {number} [nbDigits] - The optional number of digits to be shown after the decimal point.\r\n   * @param {string} [currency] - The optional currency code to be used for formatting the currency.\r\n   * @returns {string} - The converted currency representation of the value.\r\n   */\r\n  static toLocaleCurrency(\r\n    value: number,\r\n    locale?: string,\r\n    nbDigits?: number,\r\n    currency?: string): string {\r\n    if (nbDigits === undefined) {\r\n      nbDigits = 2;\r\n    }\r\n    if (currency === undefined) {\r\n      currency = \"EUR\";\r\n    }\r\n\r\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat\r\n    return value.toLocaleString(\r\n      locale, {\r\n        style: \"currency\",\r\n        currencyDisplay: 'symbol',\r\n        currency: currency,\r\n        minimumFractionDigits: nbDigits,\r\n        maximumFractionDigits: nbDigits\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Rounds the given value to the specified precision.\r\n   *\r\n   * @param {number} value - The value to be rounded.\r\n   * @param {number} [precision=0] - The number of decimal places to round to.\r\n   * @returns {number} - The rounded value.\r\n   */\r\n  static round(value: number, precision?: number): number {\r\n    if (precision === undefined) {\r\n      precision = 0;\r\n    }\r\n    const str = value.toFixed(precision);\r\n    return Number(str);\r\n  }\r\n\r\n  /**\r\n   * Converts a data URL string to a Blob object.\r\n   *\r\n   * @param {string} dataUrl - The data URL to convert.\r\n   * @param {number} [sliceSize] - The slice size for splitting the base64 data. Optional, defaults to 512.\r\n   * @returns {Blob} - The converted Blob object.\r\n   */\r\n  static dataUrlToBlob(dataUrl: string, sliceSize?: number): Blob {\r\n    const scPos = dataUrl.indexOf(';')\r\n    const contentType = dataUrl.substring(5, scPos);\r\n    const header = `data:${contentType};base64,`;\r\n    const b64 = dataUrl.substring(header.length);\r\n    return this.b64ToBlob(b64, contentType, sliceSize);\r\n  }\r\n\r\n  /**\r\n   * Converts a data URL to Uint8Array.\r\n   *\r\n   * @param {string} dataUrl - The data URL to convert.\r\n   * @param {number} [sliceSize] - The slice size for dividing the base64 string into chunks. Optional.\r\n   * @return {Uint8Array} - The converted Uint8Array.\r\n   */\r\n  static dataUrlToUint8Array(dataUrl: string, sliceSize?: number): Uint8Array{\r\n    const scPos = dataUrl.indexOf(';')\r\n    const contentType = dataUrl.substring(5, scPos);\r\n    const header = `data:${contentType};base64,`;\r\n    const b64 = dataUrl.substring(header.length);\r\n    return this.b64ToUint8Array(b64, sliceSize);\r\n  }\r\n\r\n  /**\r\n   * Converts a base64 string to a Uint8Array.\r\n   *\r\n   * @param {string} b64Data - The base64 string to convert.\r\n   * @param {number} [sliceSize=512] - The size of each slice when converting the base64 string.\r\n   * @return {Uint8Array} - The converted Uint8Array.\r\n   */\r\n  static b64ToUint8Array(b64Data: string, sliceSize?: number): Uint8Array {\r\n    const byteCharacters = atob(b64Data);\r\n    if (sliceSize === undefined) {\r\n      sliceSize = 512;\r\n    }\r\n    let bytes: any[] = [];\r\n    for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n      const slice = byteCharacters\r\n        .slice(offset, offset + sliceSize);\r\n      const len = slice.length;\r\n      const byteNumbers = new Array(len);\r\n      for (let i = 0; i < len; i++) {\r\n        byteNumbers[i] =  slice.charCodeAt(i);\r\n      }\r\n      bytes = bytes.concat(byteNumbers)\r\n    }\r\n    return new Uint8Array(bytes);\r\n  }\r\n\r\n  /**\r\n   * Converts a base64 string to a Blob object.\r\n   *\r\n   * @param {string} b64Data - The base64 string to convert.\r\n   * @param {string} [contentType] - Optional content type of the Blob.\r\n   * @param {number} [sliceSize] - Optional slice size for dividing the base64 data into chunks.\r\n   * @returns {Blob} - The resulting Blob object.\r\n   */\r\n  static b64ToBlob(\r\n    b64Data: string, contentType?: string,\r\n    sliceSize?: number): Blob {\r\n    const byteCharacters = atob(b64Data);\r\n    const byteArrays = [];\r\n    if (sliceSize === undefined) {\r\n      sliceSize = 512;\r\n    }\r\n    for (let offset = 0;\r\n         offset < byteCharacters.length;\r\n         offset += sliceSize) {\r\n      const slice = byteCharacters\r\n        .slice(offset, offset + sliceSize);\r\n      const len = slice.length;\r\n      const byteNumbers = new Array(len);\r\n      for (let i = 0; i < len; i++) {\r\n        byteNumbers[i] =  slice.charCodeAt(i);\r\n      }\r\n      const byteArray =\r\n        new Uint8Array(byteNumbers);\r\n      byteArrays.push(byteArray);\r\n    }\r\n    return new Blob(byteArrays, {type: contentType});\r\n  }\r\n\r\n  /**\r\n   * Get the URL of a blob from base64 data.\r\n   *\r\n   * @param {string} b64Data - The base64 encoded data.\r\n   * @param {string} [contentType] - The type of the data.\r\n   * @param {number} [sliceSize] - The size of each slice.\r\n   * @return {string} The URL of the blob.\r\n   */\r\n  static getBlobUrl(b64Data: string, contentType?:\r\n    string, sliceSize?: number): string {\r\n    const blob = this.b64ToBlob(\r\n      b64Data, contentType, sliceSize);\r\n    return URL.createObjectURL(blob);\r\n  }\r\n\r\n}\r\n","export class AlphaWindow {\r\n\r\n  /**\r\n   * Retrieves the language code of the user's browser.\r\n   *\r\n   * @returns {string} The language code of the user's browser.\r\n   */\r\n  static get navigatorLanguageCode(): string {\r\n    const nav = window.navigator as any;\r\n    const userLang = (nav.language || nav.userLanguage) as string;\r\n    return userLang\r\n      ? userLang.substring(0, 2).toLowerCase()\r\n      : 'en';\r\n  }\r\n\r\n  /**\r\n   * Returns the media width based on the current viewport width.\r\n   * The returned value can be one of the following: 'xs', 'sm', 'md', 'lg', 'xl'.\r\n   *\r\n   * @return {string} The media width.\r\n   */\r\n  static get mediaWidth(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' {\r\n    const vw = Math\r\n      .max(document.documentElement.clientWidth || 0,\r\n        window.innerWidth || 0);\r\n    if (vw >= 1200) {\r\n      return 'xl';\r\n    } else if (vw >= 992) {\r\n      return 'lg';\r\n    } else if (vw >= 768) {\r\n      return 'md';\r\n    } else if (vw >= 576) {\r\n      return 'sm';\r\n    } else {\r\n      return 'xs';\r\n    }\r\n  }\r\n}\r\n","export class AlphaYmd {\r\n\r\n  constructor(private mDate: Date) { }\r\n\r\n  /**\r\n   * Parses a string representing a date in the format\r\n   * \"yyyy-MM-dd\" and returns a Date object.\r\n   *\r\n   * @param {string} ymd - The string representing the date in \"yyyy-MM-dd\" format.\r\n   * @return {Date} The parsed Date object.\r\n   */\r\n  static parse(ymd: string): Date {\r\n    return new Date(ymd);\r\n  }\r\n\r\n  stringify(): string {\r\n    return AlphaYmd.format(\r\n      this.mDate, 'YMD', 'Dash');\r\n  }\r\n  /**\r\n   * Takes a Date object and returns a formatted string representation of the date.\r\n   *\r\n   * @param {Date} date - The date to be converted to string.\r\n   * @return {string} - The formatted string representation of the date.\r\n   */\r\n  static stringify(date: Date): string {\r\n    return this.format(date, 'YMD', 'Dash');\r\n  }\r\n\r\n  /**\r\n   * Formats the date in the specified format and separator.\r\n   *\r\n   * @param {string} format - The format of the date. It can be 'YMD', 'DMY', 'MDY' or 'DM.\r\n   * @param {string} sep - The separator to use. It can be 'Slash' or 'Dash'.\r\n   * @returns {string} The formatted date.\r\n   */\r\n  format(format?: 'YMD' | 'DMY' | 'MDY' | 'DM',\r\n         sep?: 'Slash' | 'Dash'): string {\r\n    return AlphaYmd.format(this.mDate, format, sep);\r\n  }\r\n\r\n  /**\r\n   * Formats a date into a string based on the given format and separator.\r\n   *\r\n   * @param {Date} date - The date object to be formatted.\r\n   * @param {string} [format='DMY'] - The format of the date string. Possible values are 'YMD', 'DMY', 'MDY' or 'DM'.\r\n   * @param {string} [sep='Slash'] - The separator to be used in the date string. Possible values are 'Slash' and 'Dash'.\r\n   * @returns {string} The formatted date string.\r\n   */\r\n  static format(date: Date,\r\n                format?: 'YMD' | 'DMY' | 'MDY' | 'DM',\r\n                sep?: 'Slash' | 'Dash'): string {\r\n    if (!format) {\r\n      format = 'DMY';\r\n    }\r\n    if (!sep) {\r\n      sep = 'Slash';\r\n    }\r\n\r\n    const d = date.getDate();\r\n    const dd = d < 10 ? `0${d}`: `${d}`;\r\n    const m = date.getMonth() + 1;\r\n    const mm = m < 10 ? `0${m}`: `${m}`;\r\n    const yyyy =  date.getFullYear();\r\n    const s = sep === 'Slash' ? '/' : '-';\r\n\r\n    switch (format) {\r\n      case 'YMD':\r\n        return `${yyyy}${s}${mm}${s}${dd}`;\r\n      case 'DMY':\r\n        return `${dd}${s}${mm}${s}${yyyy}`;\r\n      case 'MDY':\r\n        return `${mm}${s}${dd}${s}${yyyy}`;\r\n      case 'DM':\r\n        return `${dd}${s}${mm}`;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Formats the range of two dates into a string.\r\n   *\r\n   * @param {Date} startDate - The start date of the range.\r\n   * @param {Date} endDate - The end date of the range.\r\n   * @param {string} [rangeSep] - The separator to use between the formatted dates. Default is '-'.\r\n   * @param {('YMD' | 'DMY' | 'MDY' | 'DM')} [format] - The format to use for the date. Default is 'YMD'.\r\n   * @param {('Slash' | 'Dash')} [sep] - The separator to use within the formatted date. Default is 'Slash'.\r\n   *\r\n   * @returns {string} - The formatted range string.\r\n   */\r\n  static formatRange(startDate: Date, endDate: Date,\r\n                     rangeSep?: string,\r\n                     format?: 'YMD' | 'DMY' | 'MDY' | 'DM',\r\n                     sep?: 'Slash' | 'Dash'): string {\r\n    const sDate = AlphaYmd.format(startDate, format, sep);\r\n    const eDate = AlphaYmd.format(endDate, format, sep);\r\n    if (!rangeSep) {\r\n      rangeSep = '-';\r\n    }\r\n    return `${sDate}${rangeSep}${eDate}`;\r\n  }\r\n\r\n  /**\r\n   * Converts the given date to a string in the format \"YYYY-MM-DD\".\r\n   *\r\n   * @param {Date} date - The date to be converted.\r\n   * @returns {Date} - The converted date in the format \"YYYY-MM-DD\".\r\n   */\r\n  static toYmd(date: Date): Date {\r\n    return this.parse(this.stringify(date));\r\n  }\r\n\r\n  /**\r\n   * Checks if a given date is within a range of minimum and maximum dates.\r\n   *\r\n   * @param {Date} date - The date to check.\r\n   * @param {Date} minDate - The minimum date of the range.\r\n   * @param {Date} maxDate - The maximum date of the range.\r\n   * @returns {boolean} - True if the date is within the range, false otherwise.\r\n   */\r\n  static inYmdRange(date: Date, minDate: Date, maxDate: Date): boolean {\r\n    const ymdDte = this.toYmd(date);\r\n    const ymdMin = this.toYmd(minDate);\r\n    const ymdMax = this.toYmd(maxDate);\r\n    const dteTs = ymdDte.getTime();\r\n    const minTs = ymdMin.getTime();\r\n    const maxTs = ymdMax.getTime();\r\n    return dteTs >= minTs && dteTs <= maxTs;\r\n  }\r\n\r\n  /**\r\n   * Checks if two dates have the same year, month, and day.\r\n   *\r\n   * @param {Date} dt0 - The first date.\r\n   * @param {Date} dt1 - The second date.\r\n   * @return {boolean} Returns true if the two dates have the same year,\r\n   * month, and day; otherwise, returns false.\r\n   */\r\n  static ymdEqual(dt0: Date, dt1: Date): boolean {\r\n    return this.ymdCompare(dt0, dt1) === 0;\r\n  }\r\n\r\n  /**\r\n   * Compares two dates and returns the comparison result.\r\n   *\r\n   * @param {Date} dt0 - The first date to compare.\r\n   * @param {Date} dt1 - The second date to compare.\r\n   * @returns {number} - Returns 0 if the dates are equal, -1 if dt0 < dt1, and 1 if dt0 > dt1.\r\n   */\r\n  static ymdCompare(dt0: Date, dt1: Date): number {\r\n    const ymdDt0 = this.toYmd(dt0);\r\n    const ymdDt1 = this.toYmd(dt1);\r\n    const dt0Ts = ymdDt0.getTime();\r\n    const dt1Ts = ymdDt1.getTime();\r\n    return dt0Ts === dt1Ts ? 0 : (dt0Ts < dt1Ts ? -1 :  1);\r\n  }\r\n\r\n}\r\n","export enum AlphaSeverityEnum {\r\n  Ok,\r\n  Debug,\r\n  Info,\r\n  Warning,\r\n  Error,\r\n  Fatal\r\n}\r\n\r\nexport class AlphaEnumSeverity {\r\n  private static readonly Ok = 'O';\r\n  private static readonly Debug = 'D';\r\n  private static readonly Info = 'I';\r\n  private static readonly Warning = 'W';\r\n  private static readonly Error = 'E';\r\n  private static readonly Fatal = 'F';\r\n\r\n  static getCode (value: AlphaSeverityEnum): string {\r\n    switch (value) {\r\n      case AlphaSeverityEnum.Ok:\r\n        return AlphaEnumSeverity.Ok;\r\n      case AlphaSeverityEnum.Debug:\r\n        return AlphaEnumSeverity.Debug;\r\n      case AlphaSeverityEnum.Info:\r\n        return AlphaEnumSeverity.Info;\r\n      case AlphaSeverityEnum.Warning:\r\n        return AlphaEnumSeverity.Warning;\r\n      case AlphaSeverityEnum.Error:\r\n        return AlphaEnumSeverity.Error;\r\n      case AlphaSeverityEnum.Fatal:\r\n        return AlphaEnumSeverity.Fatal;\r\n      default:\r\n        throw new RangeError ('invalid severityEnum value ' + value);\r\n    }\r\n  }\r\n\r\n  static getValue (code: string): AlphaSeverityEnum {\r\n    switch (code) {\r\n      case AlphaEnumSeverity.Ok:\r\n        return AlphaSeverityEnum.Ok;\r\n      case AlphaEnumSeverity.Debug:\r\n        return AlphaSeverityEnum.Debug;\r\n      case AlphaEnumSeverity.Info:\r\n        return AlphaSeverityEnum.Info;\r\n      case AlphaEnumSeverity.Warning:\r\n        return AlphaSeverityEnum.Warning;\r\n      case AlphaEnumSeverity.Error:\r\n        return AlphaSeverityEnum.Error;\r\n      case AlphaEnumSeverity.Fatal:\r\n        return AlphaSeverityEnum.Fatal;\r\n      default:\r\n        throw new RangeError ('invalid severityEnum code ' + code);\r\n    }\r\n  }\r\n}\r\n","\r\nexport enum AlphaMutationEnum {\r\n  None,\r\n  Create,\r\n  Update,\r\n  Deactivate\r\n}\r\n\r\nexport class AlphaEnumMutation {\r\n  private static readonly None = 'N';\r\n  private static readonly Create = 'C';\r\n  private static readonly Update = 'U';\r\n  private static readonly Deactivate = 'D';\r\n\r\n  static getCode(value: AlphaMutationEnum): string {\r\n    switch (value) {\r\n      case AlphaMutationEnum.None:\r\n        return AlphaEnumMutation.None;\r\n      case AlphaMutationEnum.Create:\r\n        return AlphaEnumMutation.Create;\r\n      case AlphaMutationEnum.Update:\r\n        return AlphaEnumMutation.Update;\r\n      case AlphaMutationEnum.Deactivate:\r\n        return AlphaEnumMutation.Deactivate;\r\n      default:\r\n        throw new RangeError('invalid mutationEnum value ' + value);\r\n    }\r\n  }\r\n\r\n  static getName(value: AlphaMutationEnum): string {\r\n    switch (value) {\r\n      case AlphaMutationEnum.None:\r\n        return '';\r\n      case AlphaMutationEnum.Create:\r\n        return 'Create';\r\n      case AlphaMutationEnum.Update:\r\n        return 'Update';\r\n      case AlphaMutationEnum.Deactivate:\r\n        return 'Deactivate';\r\n      default:\r\n        throw new RangeError('invalid mutationEnum value ' + value);\r\n    }\r\n  }\r\n\r\n\r\n  static getValue(code: string): AlphaMutationEnum {\r\n    switch (code) {\r\n      case AlphaEnumMutation.None:\r\n        return AlphaMutationEnum.None;\r\n      case AlphaEnumMutation.Create:\r\n        return AlphaMutationEnum.Create;\r\n      case AlphaEnumMutation.Update:\r\n        return AlphaMutationEnum.Update;\r\n      case AlphaEnumMutation.Deactivate:\r\n        return AlphaMutationEnum.Deactivate;\r\n      default:\r\n        throw new RangeError('invalid mutationEnum code ' + code);\r\n    }\r\n  }\r\n}\r\n","import {AlphaEnumSeverity, AlphaSeverityEnum} from \"./alpha-severity-enum\";\r\n\r\nexport interface DsoAlphaHttpResultNotification {\r\n  message: string;\r\n  severityCode: string;\r\n}\r\n\r\nexport interface IAlphaHttpResultNotification {\r\n  severity: AlphaSeverityEnum;\r\n  message: string;\r\n}\r\n\r\nexport class AlphaHttpResultNotification implements IAlphaHttpResultNotification {\r\n  message: string;\r\n  severity: AlphaSeverityEnum;\r\n\r\n  private constructor(item: IAlphaHttpResultNotification) {\r\n    this.message = item.message;\r\n    this.severity = item.severity;\r\n  }\r\n\r\n  static factorFromDso(dso: DsoAlphaHttpResultNotification): IAlphaHttpResultNotification {\r\n    const item = {\r\n      message: dso.message,\r\n      severity: AlphaEnumSeverity.getValue(dso.severityCode)\r\n    };\r\n    return new AlphaHttpResultNotification(item);\r\n  }\r\n\r\n}\r\n","import {AlphaEnumSeverity, AlphaSeverityEnum} from \"./alpha-severity-enum\";\r\nimport {AlphaEnumMutation, AlphaMutationEnum} from \"./alpha-mutation-enum\";\r\nimport {AlphaHttpResultNotification} from \"./alpha-http-result-notification\";\r\n\r\nexport interface IAlphaHttpResultDso {\r\n  statusCode: string,\r\n  mutationCode: string,\r\n  notifications: any[],\r\n  hasMoreResults: boolean\r\n}\r\n\r\nexport interface IAlphaHttpObjectResultDso\r\n  extends IAlphaHttpResultDso {\r\n  data: any\r\n}\r\n\r\nexport interface IAlphaHttpListResultDso\r\n  extends IAlphaHttpResultDso {\r\n  data: any[]\r\n}\r\n\r\nexport class AlphaHttpResult {\r\n  status: AlphaSeverityEnum;\r\n  mutation: AlphaMutationEnum;\r\n  notifications: AlphaHttpResultNotification[];\r\n  hasMoreResults: boolean;\r\n  get failure(): boolean {\r\n    return this.status === AlphaSeverityEnum.Error\r\n        || this.status === AlphaSeverityEnum.Fatal;\r\n  }\r\n  get success(): boolean {\r\n    return !this.failure;\r\n  }\r\n\r\n  get message(): string {\r\n    return this.notifications\r\n      .map(n => n.message)\r\n      .join(\", \");\r\n  }\r\n\r\n  protected constructor(\r\n    status: AlphaSeverityEnum,\r\n    mutation: AlphaMutationEnum,\r\n    notifications: AlphaHttpResultNotification[],\r\n    hasMoreResults: boolean) {\r\n    this.status = status;\r\n    this.mutation = mutation;\r\n    this.notifications = notifications;\r\n    this.hasMoreResults = hasMoreResults;\r\n  }\r\n\r\n  static factorFromDso(dso:IAlphaHttpResultDso): AlphaHttpResult {\r\n    return new AlphaHttpResult(\r\n      AlphaEnumSeverity.getValue(dso.statusCode),\r\n      AlphaEnumMutation.getValue(dso.mutationCode),\r\n      dso.notifications.map(\r\n        (n: any) => AlphaHttpResultNotification.factorFromDso(n)),\r\n      dso.hasMoreResults);\r\n  }\r\n\r\n  static isBaseResult(dso: any): boolean {\r\n    const isObject = typeof dso === 'object';\r\n    if (!isObject) return false;\r\n    const hasStatusCode ='statusCode' in dso && typeof dso.statusCode === 'string';\r\n    const hasMutationCode = 'mutationCode' in dso && typeof dso.mutationCode === 'string';\r\n    const hasHasMoreResult ='hasMoreResults' in dso && typeof dso.hasMoreResults === 'boolean';\r\n    const hasNotifications = 'notifications' in dso && Array.isArray(dso.notifications);\r\n    return hasStatusCode\r\n      && hasMutationCode\r\n      && hasHasMoreResult\r\n      && hasNotifications;\r\n  }\r\n\r\n  static isObjectResult(dso: any): boolean {\r\n    return AlphaHttpResult.isBaseResult(dso)\r\n    && 'data' in dso && !Array.isArray(dso.data);\r\n  }\r\n\r\n  static isListResult(dso: any): boolean {\r\n    return AlphaHttpResult.isBaseResult(dso)\r\n      && 'data' in dso && Array.isArray(dso.data);\r\n  }\r\n\r\n}\r\n\r\nexport class AlphaHttpObjectResult<T>\r\n  extends AlphaHttpResult {\r\n\r\n  data: T;\r\n\r\n  private constructor(\r\n    status: AlphaSeverityEnum,\r\n    mutation: AlphaMutationEnum,\r\n    notifications: AlphaHttpResultNotification[],\r\n    hasMoreResults: boolean,\r\n    data: T) {\r\n    super(status, mutation, notifications, hasMoreResults);\r\n    this.data = data;\r\n  }\r\n\r\n  static override factorFromDso<T>(\r\n    dso: IAlphaHttpObjectResultDso,\r\n    factor?: (dsoData: any) => T): AlphaHttpObjectResult<T>{\r\n\r\n    const data: T = dso.data == null\r\n      ? null\r\n      : factor ? factor(dso.data) : dso.data;\r\n    return new AlphaHttpObjectResult<T>(\r\n      AlphaEnumSeverity.getValue(dso.statusCode),\r\n      AlphaEnumMutation.getValue(dso.mutationCode),\r\n      dso.notifications.map(\r\n        (n: any) => AlphaHttpResultNotification.factorFromDso(n)),\r\n      dso.hasMoreResults,\r\n      data);\r\n  }\r\n\r\n}\r\n\r\nexport class AlphaHttpListResult<T> extends AlphaHttpResult {\r\n  data: T[];\r\n\r\n  constructor(\r\n    status: AlphaSeverityEnum,\r\n    mutation: AlphaMutationEnum,\r\n    notifications: AlphaHttpResultNotification[],\r\n    hasMoreResults: boolean,\r\n    data: T[]) {\r\n    super(status, mutation, notifications, hasMoreResults);\r\n    this.data = data;\r\n  }\r\n\r\n  static override factorFromDso<T>(\r\n    dso: IAlphaHttpListResultDso,\r\n    factor?: (dsoData: any) => T): AlphaHttpListResult<T> {\r\n\r\n    const dsoList = dso.data;\r\n    const data: T[] = dsoList.map(\r\n      (dsoListItem: any) => factor\r\n        ? factor(dsoListItem)\r\n        : dsoListItem);\r\n    return new AlphaHttpListResult<T>(\r\n      AlphaEnumSeverity.getValue(dso.statusCode),\r\n      AlphaEnumMutation.getValue(dso.mutationCode),\r\n      dso.notifications.map(\r\n        (n: any) => AlphaHttpResultNotification.factorFromDso(n)),\r\n      dso.hasMoreResults,\r\n      data);\r\n  }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable, Subscriber, of, mergeMap, catchError, throwError} from \"rxjs\";\r\nimport {HttpClient, HttpErrorResponse} from \"@angular/common/http\";\r\nimport {AlphaHttpObjectResult, IAlphaHttpObjectResultDso} from \"../http/alpha-http-result\";\r\n\r\nclass UsoChunkUpload {\r\n  dataChunk: string;\r\n  uploadId: string | undefined;\r\n\r\n  constructor(\r\n    dataChunk: string,\r\n    uploadId?: string) {\r\n    this.dataChunk = dataChunk;\r\n    this.uploadId = uploadId;\r\n  }\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AlphaUploadApiService{\r\n\r\n  private mHttp: HttpClient | undefined;\r\n  private mContext = \"AlphaUploadApiService\";\r\n  private mChunkSize = 3000000; // 3 Mb\r\n  private mAuthorize!: (httpRequest: Observable<any>) => Observable<any>;\r\n  private mPostErrorLog!: (context: string, method: string, error: string) => any;\r\n  private mUploadUrl!: string;\r\n  private mDeleteUploadUrl!: string;\r\n\r\n  constructor() {\r\n  }\r\n\r\n  /**\r\n   * Initializes the uploader with the given parameters.\r\n   *\r\n   * @param httpClient\r\n   * @param {string} uploadUrl - The URL to which the file uploads will be sent.\r\n   * @param {string} deleteUploadUrl - The URL to which delete requests will be sent.\r\n   * @param {number} [chunkSize] - Optional parameter for specifying the upload chunk size.\r\n   *                              If not provided, a default value will be used.\r\n   * @param {Function} authorize - A function that authorizes HTTP requests.\r\n   * @param {Function} postErrorLog - A function that posts error logs.\r\n   * @return {void} A void return type.\r\n   */\r\n  init(\r\n    httpClient: HttpClient,\r\n    uploadUrl: string,\r\n    deleteUploadUrl: string,\r\n    authorize: (httpRequest: Observable<any>) => Observable<any>,\r\n    postErrorLog: (context: string, method: string, error: string) => any,\r\n    chunkSize?: number): void {\r\n    this.mHttp = httpClient;\r\n    this.mUploadUrl = uploadUrl;\r\n    this.mDeleteUploadUrl = deleteUploadUrl;\r\n    this.mAuthorize = authorize;\r\n    this.mPostErrorLog = postErrorLog;\r\n    if (chunkSize) {\r\n      this.mChunkSize = chunkSize;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Uploads data to a specified URL.\r\n   *\r\n   * @param {*} data - The data to be uploaded.\r\n   * @param {function} notifyProgress - A callback function to notify the progress of the upload.\r\n   * @returns {Observable<string>} - An Observable that emits the id (uuid) of the upload entity created at server side as a string.\r\n   */\r\n  upload(\r\n    data: any,\r\n    notifyProgress: (progress: number) => any): Observable<string> {\r\n    if (!this.mHttp){\r\n      throw new Error('Service is not initialized');\r\n    }\r\n    return new Observable(\r\n      (subscriber: Subscriber<string>) => {\r\n        const chunks: string[] = [];\r\n        const json = JSON.stringify(data);\r\n        const len = json.length;\r\n        for (let pos = 0; pos < len; pos += this.mChunkSize) {\r\n          const chunk = json.substring(pos, pos + this.mChunkSize);\r\n          chunks.push(chunk);\r\n        }\r\n        this._chainChunk(chunks, 0, notifyProgress)\r\n          .subscribe({\r\n            next: res => subscriber.next(res),\r\n            error: error => subscriber.error(error)\r\n          });\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Deletes an upload using the specified upload ID.\r\n   *\r\n   * @param {string} uploadId - The ID of the upload to delete.\r\n   * @return {Observable<any>} - An observable that resolves with the response from the server when the upload is successfully deleted.\r\n   * If an error occurs during the delete operation, the observable will emit an HttpErrorResponse object.\r\n   */\r\n  deleteUpload(\r\n    uploadId: string): Observable<any> {\r\n    const pId = encodeURIComponent(uploadId);\r\n    const url = this.mDeleteUploadUrl\r\n      + `?uploadId=${pId}`;\r\n\r\n    if (!this.mHttp){\r\n      throw new Error('Service is not initialized');\r\n    }\r\n\r\n    const call = this.mHttp.get<any>(url)\r\n      .pipe(\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.mPostErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n    return this.mAuthorize(call);\r\n  }\r\n\r\n  private _chainChunk(\r\n    chunks: string[],\r\n    chunkIndex: number,\r\n    notifyProgress: (progress: number) => any,\r\n    uploadId?: string): Observable<string> {\r\n    const len = chunks.length;\r\n    let progress = 100 * (chunkIndex + 1) / len;\r\n    progress = Math.ceil(progress);\r\n    notifyProgress(progress);\r\n    return this._uploadChunk(chunks[chunkIndex], uploadId)\r\n      .pipe(\r\n        mergeMap((dso: IAlphaHttpObjectResultDso | string) => {\r\n          const isObjectResult = AlphaHttpObjectResult.isObjectResult(dso);\r\n          let id: string;\r\n          if (isObjectResult){\r\n            id = AlphaHttpObjectResult.factorFromDso<string>(\r\n              dso as IAlphaHttpObjectResultDso).data\r\n          } else {\r\n            id = dso as string;\r\n          }\r\n          if (chunkIndex === len - 1) {\r\n            return of(id);\r\n          } else {\r\n            uploadId = id;\r\n            return this._chainChunk(\r\n              chunks, chunkIndex + 1, notifyProgress, id);\r\n          }\r\n        }));\r\n  }\r\n\r\n  private _uploadChunk(\r\n    dataChunk: string,\r\n    uploadId?: string): Observable<IAlphaHttpObjectResultDso | string> {\r\n    const body = new UsoChunkUpload(dataChunk, uploadId);\r\n    const call =\r\n      this.mHttp!.post<string>(this.mUploadUrl, body)\r\n        .pipe(\r\n          catchError((error: HttpErrorResponse) => {\r\n            this.mPostErrorLog(\r\n              this.mContext, this.mUploadUrl, JSON.stringify(error));\r\n            return throwError(() => error);\r\n          }));\r\n    return this.mAuthorize(call);\r\n  }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {catchError, map, Observable, of, throwError} from \"rxjs\";\r\nimport {HttpClient, HttpErrorResponse} from \"@angular/common/http\";\r\nimport {AlphaHttpObjectResult} from \"../http/alpha-http-result\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AlphaVersionApiService {\r\n\r\n  private mHttp: HttpClient | undefined;\r\n  private readonly mContext = \"AlphaVersionApiService\";\r\n  private mUrl: string | undefined;\r\n  private _getVersion = this.getVersionBuiltIn;\r\n  private postErrorLog: (context: string, method: string, error: string) => any =\r\n    () => {\r\n    };\r\n\r\n  /**\r\n   * Initializes the application with the provided version URL and optional error logging function.\r\n   *\r\n   * @param httpClient\r\n   * @param {string} getVersionUrl - The URL to retrieve the version information from.\r\n   * @param postErrorLog\r\n   * @return {void}\r\n   */\r\n  init(\r\n    httpClient: HttpClient,\r\n    getVersionUrl: string,\r\n    postErrorLog: (context: string, method: string, error: string) => any):void {\r\n    this.mHttp = httpClient;\r\n    this.mUrl = getVersionUrl;\r\n    this.postErrorLog = postErrorLog;\r\n  }\r\n\r\n  /** Inject your own getVersion method  */\r\n  useGetVersion(getVersion: () => Observable<string>): void {\r\n    this._getVersion = getVersion;\r\n  }\r\n\r\n  /**\r\n   * Retrieves the version number from a source.\r\n   * @returns {Observable<string | null>} An observable that emits the version number as a string or null if not available.\r\n   */\r\n  getVersion(): Observable<string | null> {\r\n    return this._getVersion()\r\n  }\r\n\r\n  private getVersionBuiltIn(): Observable<string> {\r\n    if (!this.mUrl || this.mHttp === undefined) {\r\n      return of('');\r\n    }\r\n    return this.mHttp.get<any>(this.mUrl)\r\n      .pipe(\r\n        map(dso =>\r\n          AlphaHttpObjectResult.isObjectResult(dso)\r\n            ? AlphaHttpObjectResult\r\n              .factorFromDso<string>(dso).data\r\n            : dso as string),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.postErrorLog(this.mContext, this.mUrl!, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n  }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from \"rxjs\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AlphaEmsService {\r\n\r\n  private _httpClient: HttpClient | undefined;\r\n  /**\r\n   * Returns the instance of HttpClient.\r\n   * @throws {Error} - Error message \"AlphaEmsService is not initialized\"\r\n   * @returns {HttpClient} - The instance of HttpClient\r\n   */\r\n  get httpClient(): HttpClient {\r\n    if (!this._httpClient) {\r\n      throw new Error('AlphaEmsService is not initialized');\r\n    }\r\n    return this._httpClient;\r\n  }\r\n  authorize: (httpRequest: Observable<any>) => Observable<any> =\r\n    (httpRequest: Observable<any>) => httpRequest;\r\n  postErrorLog: (context: string, method: string, error: string) => any =\r\n    () => {\r\n    };\r\n  publish: (payload: any, channel: string) => any =\r\n    () => {\r\n    };\r\n\r\n  init(\r\n    httpClient: HttpClient,\r\n    authorize?: (httpRequest: Observable<any>) => Observable<any>,\r\n    postErrorLog?: (context: string, method: string, error: string) => any,\r\n    publish?: (payload: any, channel: string) => any): void {\r\n\r\n    this._httpClient = httpClient;\r\n\r\n    if (authorize) {\r\n      this.authorize = authorize;\r\n    }\r\n    if (postErrorLog) {\r\n      this.postErrorLog = postErrorLog;\r\n    }\r\n    if (publish) {\r\n      this.publish = publish;\r\n    }\r\n  }\r\n}\r\n","export class AlphaEmsUsoOptionSet {\r\n  keys: string[];\r\n  pairs: { key: string, value: string }[];\r\n  constructor(\r\n    keys: string[],\r\n    options?: Map<string, string>) {\r\n    this.keys = keys;\r\n    this.pairs = [];\r\n    if (options) {\r\n      options.forEach(\r\n        (value: string, key: string) => {\r\n          this.pairs.push({ key: key, value: value });\r\n        });\r\n    }\r\n  }\r\n}\r\n","export interface IAlphaEmsEditContainer<TB, TE> {\r\n  ei: TE;\r\n  body: TB | undefined;\r\n}\r\n\r\nexport class AlphaEmsEditContainer<TB, TE>\r\n  implements IAlphaEmsEditContainer<TB, TE> {\r\n  ei: TE;\r\n  body: TB | undefined;\r\n\r\n  constructor(ei: TE, body?: TB) {\r\n    this.ei = ei;\r\n    this.body = body;\r\n  }\r\n\r\n  static factorFromDso<TB, TE>(\r\n    dso: any,\r\n    factorEi: (eiDso: any) => TE,\r\n    factorBody: (bodyDso: any) => TB) {\r\n    const ei = factorEi(dso.ei);\r\n    const body = dso.body ? factorBody(dso.body) : undefined;\r\n    return new AlphaEmsEditContainer(ei, body);\r\n  }\r\n\r\n}\r\n","\r\nexport interface IAlphaEmsBaseApiEvent<TB> {\r\n  action: 'create' | 'update' | 'delete';\r\n  body: TB | null;\r\n  keys: string[];\r\n}\r\n\r\nexport class AlphaEmsBaseApiEvent<TB>\r\n  implements IAlphaEmsBaseApiEvent<TB> {\r\n  action: 'create' | 'update' | 'delete';\r\n  body: TB | null;\r\n  keys: string[];\r\n\r\n  constructor(\r\n    action: 'create' | 'update' | 'delete',\r\n    body: TB | null,\r\n    keys?: string[]) {\r\n    this.action = action;\r\n    this.body = body;\r\n    this.keys = keys ? keys : [];\r\n  }\r\n}\r\n","import {HttpErrorResponse} from \"@angular/common/http\";\r\nimport {catchError, map, Observable, throwError} from \"rxjs\";\r\nimport {AlphaEmsUsoOptionSet} from \"./alpha-ems-uso-option-set\";\r\nimport {AlphaEmsEditContainer, IAlphaEmsEditContainer} from \"./alpha-ems-edit-container\";\r\nimport {AlphaEmsBaseApiEvent} from \"./alpha-ems-base-api-event\";\r\nimport {AlphaEmsService} from \"./alpha-ems.service\";\r\nimport {AlphaHttpListResult, AlphaHttpObjectResult} from \"../http/alpha-http-result\";\r\n\r\nexport abstract class AlphaEmsBaseApi<TH, TB, TE> {\r\n\r\n  ems: AlphaEmsService;\r\n\r\n  protected constructor(\r\n    ems: AlphaEmsService,\r\n    protected mContext: string,\r\n    protected mBaseUrl: string,\r\n    private factorHead: (dso: any) => TH,\r\n    private factorBody: (dso: any) => TB,\r\n    private factorEi: (dso: any) => TE) {\r\n    this.ems = ems;\r\n  }\r\n\r\n  list(authorize: boolean, skip: number, take: number,\r\n       options?: Map<string, string>,\r\n       methodName?: string): Observable<TH[]> {\r\n    if (!options) {\r\n      options = new Map<string, string>();\r\n    }\r\n    options.set('skip', skip.toString());\r\n    options.set('take', take.toString());\r\n    const body =\r\n      new AlphaEmsUsoOptionSet([], options);\r\n    if (!methodName) {\r\n      methodName = 'list';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const call = this.ems.httpClient\r\n      .post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => AlphaHttpListResult\r\n            .factorFromDso<TH>(\r\n              hRes,\r\n              (dsoItem: any) =>\r\n                this.factorHead(dsoItem)).data\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n    return authorize ? this.ems.authorize(call) : call;\r\n  }\r\n\r\n  getBody(authorize: boolean, keys: string[],\r\n          options?: Map<string, string>,\r\n          methodName?: string): Observable<TB> {\r\n    if (!methodName) {\r\n      methodName = 'body';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const body = new AlphaEmsUsoOptionSet(keys, options);\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => AlphaHttpObjectResult\r\n            .factorFromDso<TB>(\r\n              hRes,\r\n              dso => this.factorBody(dso)).data\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n\r\n    return authorize ? this.ems.authorize(call) : call;\r\n  }\r\n\r\n  getBodyFe(keys: string[],\r\n            options?: Map<string, string>,\r\n            methodName?: string): Observable<IAlphaEmsEditContainer<TB, TE>> {\r\n    if (!methodName) {\r\n      methodName = 'bodyFe';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const body = new AlphaEmsUsoOptionSet(keys, options);\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => {\r\n            return AlphaHttpObjectResult\r\n              .factorFromDso<IAlphaEmsEditContainer<TB, TE>>(\r\n                hRes,\r\n                dso => AlphaEmsEditContainer.factorFromDso(\r\n                  dso,\r\n                  this.factorEi,\r\n                  this.factorBody)).data;\r\n          }\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n\r\n    return this.ems.authorize(call);\r\n  }\r\n\r\n  getEi(options?: Map<string, string>,\r\n        methodName?: string): Observable<TE> {\r\n    if (!options) {\r\n      options = new Map<string, string>();\r\n    }\r\n    const body = new AlphaEmsUsoOptionSet([], options);\r\n    if (!methodName) {\r\n      methodName = 'ei';\r\n    }\r\n    let url = this.mBaseUrl + `/${methodName}`;\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => AlphaHttpObjectResult\r\n            .factorFromDso<TE>(\r\n              hRes,\r\n              dso => this.factorEi(dso)).data\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n\r\n    return this.ems.authorize(call);\r\n  }\r\n\r\n  baseCreate(body: any, methodName?: string): Observable<TB> {\r\n    if (!methodName) {\r\n      methodName = 'create';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => {\r\n            const body = AlphaHttpObjectResult\r\n              .factorFromDso(\r\n                hRes,\r\n                dso => this.factorBody(dso)).data;\r\n            const event = new AlphaEmsBaseApiEvent('create', body);\r\n            this.ems.publish(event, this.mContext);\r\n            return body;\r\n          }\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n    return this.ems.authorize(call);\r\n  }\r\n\r\n  baseUpdate(body: any, methodName?: string): Observable<TB> {\r\n    if (!methodName) {\r\n      methodName = 'update';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => {\r\n            const body = AlphaHttpObjectResult\r\n              .factorFromDso(\r\n                hRes,\r\n                dso => this.factorBody(dso)).data;\r\n            const event = new AlphaEmsBaseApiEvent<TB>('update', body);\r\n            this.ems.publish(event, this.mContext);\r\n            return body;\r\n          }\r\n        ),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n    return this.ems.authorize(call);\r\n  }\r\n\r\n  /** returns undefined on physical delete\r\n   * or the updated body in case of deactivation */\r\n  delete(keys: string[],\r\n         options?: Map<string, string>,\r\n         methodName?: string): Observable<TB | undefined> {\r\n    if(!methodName) {\r\n      methodName = 'delete';\r\n    }\r\n    const url = this.mBaseUrl + `/${methodName}`;\r\n    const body = new AlphaEmsUsoOptionSet(keys, options);\r\n    const call = this.ems.httpClient.post<any>(url, body)\r\n      .pipe(\r\n        map(\r\n          hRes => {\r\n            const body = hRes.data\r\n              ? AlphaHttpObjectResult.factorFromDso(\r\n                hRes, dso => this.factorBody(dso)).data\r\n              : undefined;\r\n            const event = body\r\n              ? new AlphaEmsBaseApiEvent<TB>('update', body)\r\n              : new AlphaEmsBaseApiEvent('delete', null, keys);\r\n            this.ems.publish(event, this.mContext);\r\n            return body;\r\n          }),\r\n        catchError((error: HttpErrorResponse) => {\r\n          this.ems.postErrorLog(this.mContext, url, JSON.stringify(error));\r\n          return throwError(() => error);\r\n        }));\r\n    return this.ems.authorize(call);\r\n  }\r\n\r\n}\r\n","import {Observable} from \"rxjs\";\r\nimport {AlphaEmsBaseApi} from \"./alpha-ems-base-api\";\r\nimport {AlphaEmsFormInput} from \"./alpha-ems-form-input\";\r\n\r\ninterface IAlphaEmsFormModel<TH, TB, TE> {\r\n  api: AlphaEmsBaseApi<TH, TB, TE>;\r\n  fi: AlphaEmsFormInput<TB>;\r\n  body: TB | undefined;\r\n  ei: TE | undefined;\r\n  invalid: boolean;\r\n  populateForRead(body: TB): void;\r\n  populateForNew(ei: TE): void;\r\n  populateForEdit(ei: TE, body: TB): void;\r\n  createEntity(): Observable<TB>;\r\n  updateEntity(): Observable<TB>;\r\n}\r\n\r\nexport abstract class AlphaEmsBaseFormModel<TH, TB, TE>\r\n  implements IAlphaEmsFormModel<TH, TB, TE> {\r\n\r\n    api!: AlphaEmsBaseApi<TH, TB, TE>;\r\n    fi!: AlphaEmsFormInput<TB>;\r\n    body: TB | undefined;\r\n    ei: TE | undefined;\r\n\r\n    abstract invalid: boolean;\r\n    abstract populateForRead(body: TB): void ;\r\n    abstract populateForNew(ei: TE): void;\r\n    abstract populateForEdit(ei: TE, body: TB): void ;\r\n    abstract createEntity(): Observable<TB>;\r\n    abstract updateEntity(): Observable<TB> ;\r\n}\r\n","export class AlphaEmsFormResult<TB> {\r\n  action: 'C' | 'R' | 'U' | 'D';\r\n  data: TB | undefined;\r\n\r\n  constructor(\r\n    action: 'C' | 'R' | 'U' | 'D',\r\n    data?: TB) {\r\n    this.action = action;\r\n    this.data = data;\r\n  }\r\n}\r\n","import {AlphaEmsBaseApi} from \"./alpha-ems-base-api\";\r\nimport {AlphaEmsFormInput} from \"./alpha-ems-form-input\";\r\nimport {Observable, Subscriber} from \"rxjs\";\r\nimport {AlphaEmsFormResult} from \"./alpha-ems-form-result\";\r\nimport {AlphaEmsBaseFormModel} from \"./alpha-ems-base-form-model\";\r\n\r\nexport abstract class AlphaEmsBaseComponent<TH, TB, TE> {\r\n  busy = false;\r\n\r\n  protected verbose = false;\r\n  protected api: AlphaEmsBaseApi<TH, TB, TE>;\r\n  private _fi!: AlphaEmsFormInput<TB>;\r\n  private allowAnonymousRead = true;\r\n\r\n  /**\r\n   *\r\n   * @param api the genApi service providing the necessary methods\r\n   * @param mFactorForm a factory method that build the form model\r\n   * @param allowAnonymousRead whether or not read is allowed for anonymous (default is true)\r\n   */\r\n  constructor(\r\n    api: AlphaEmsBaseApi<TH, TB, TE>,\r\n    private mFactorForm: (fi: AlphaEmsFormInput<TB>)  =>\r\n      AlphaEmsBaseFormModel<TH, TB, TE>,\r\n    allowAnonymousRead?: boolean) {\r\n    this.api = api;\r\n    if (allowAnonymousRead !== undefined) {\r\n      this.allowAnonymousRead = allowAnonymousRead;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Loads the form based on the mode (read, edit or new) set in GenFormInput.\r\n   * Also sets the value fi within the form just before calling the appropriate populate method.\r\n   * @param {AlphaEmsFormInput} fi - The AlphaGenFormInput object containing the form mode and options.\r\n   * @returns {Observable} - An observable of the generic form that should be casted to the concrete form.\r\n   */\r\n  protected loadForm(fi: AlphaEmsFormInput<TB>):\r\n    Observable<AlphaEmsBaseFormModel<TH, TB, TE>> {\r\n    this._fi = fi;\r\n    switch (fi.mode) {\r\n      case 'read':\r\n        return this.loadForRead(fi.keys!, fi.options)\r\n      case 'new':\r\n        return this.loadForNew(fi.options)\r\n      case 'edit':\r\n        return this.loadForEdit(fi.keys!, fi.options);\r\n    }\r\n  }\r\n\r\n  private loadForRead(keys: string[], options?: Map<string, string>):\r\n    Observable<AlphaEmsBaseFormModel<TH, TB, TE>> {\r\n    return new Observable(\r\n      (subscriber: Subscriber<AlphaEmsBaseFormModel<TH, TB, TE>>) => {\r\n        if (this._fi.body !== undefined) {\r\n          const fm =\r\n            this.factorForm();\r\n          fm.populateForRead(this._fi.body);\r\n          fm.body = this._fi.body;\r\n          subscriber.next(fm);\r\n        } else {\r\n          this.busy = true;\r\n          this.api.getBody(!this.allowAnonymousRead, keys, options)\r\n            .subscribe({\r\n              next: body => {\r\n                if (this.verbose) {\r\n                  console.log(body);\r\n                }\r\n                const fm =\r\n                  this.factorForm();\r\n                fm.populateForRead(body);\r\n                fm.body = body;\r\n                this.busy = false;\r\n                subscriber.next(fm);\r\n              },\r\n              error: error => {\r\n                console.error(error);\r\n                this.busy = false;\r\n                subscriber.error(error);\r\n              }\r\n            });\r\n        }\r\n      });\r\n  }\r\n\r\n  private loadForNew(options?: Map<string, string>): Observable<AlphaEmsBaseFormModel<TH, TB, TE>> {\r\n\r\n    return new Observable(\r\n      (subscriber: Subscriber<AlphaEmsBaseFormModel<TH, TB, TE>>) => {\r\n        this.busy = true;\r\n        this.api.getEi(options)\r\n          .subscribe({\r\n            next: ei => {\r\n              if (this.verbose) {\r\n                console.log(ei);\r\n              }\r\n              const fm =\r\n                this.factorForm();\r\n              fm.populateForNew(ei);\r\n              fm.ei = ei;\r\n              this.busy = false;\r\n              subscriber.next(fm);\r\n            },\r\n            error: error => {\r\n              console.error(error);\r\n              this.busy = false;\r\n              subscriber.error(error);\r\n            }\r\n          });\r\n      });\r\n\r\n  }\r\n\r\n  private loadForEdit(keys: string[], options?: Map<string, string>):\r\n    Observable<AlphaEmsBaseFormModel<TH, TB, TE>> {\r\n    return new Observable(\r\n      (subscriber: Subscriber<AlphaEmsBaseFormModel<TH, TB, TE>>) => {\r\n        this.busy = true;\r\n        this.api.getBodyFe(keys, options)\r\n          .subscribe({\r\n            next: ec => {\r\n              if (this.verbose) {\r\n                console.log(ec);\r\n              }\r\n              const fm =\r\n                this.factorForm();\r\n              fm.populateForEdit(ec.ei, ec.body!);\r\n              fm.ei = ec.ei;\r\n              fm.body = ec.body;\r\n              this.busy = false;\r\n              subscriber.next(fm);\r\n            },\r\n            error: error => {\r\n              console.error(error);\r\n              this.busy = false;\r\n              subscriber.error(error);\r\n            }\r\n          });\r\n      });\r\n  }\r\n\r\n  /** saves the form by calling fm.updateEntity or fm.createEntity and\r\n   * returns an observable with the GenFormResult<TB>.\r\n   * This method manages the busy state\r\n   */\r\n  protected save(\r\n    fm: AlphaEmsBaseFormModel<TH, TB, TE>): Observable<AlphaEmsFormResult<TB>> {\r\n\r\n    return new Observable(\r\n      (subscriber: Subscriber<AlphaEmsFormResult<TB>>) => {\r\n        let apiCall: Observable<TB>\r\n        let action: 'C' | 'U';\r\n        switch (this._fi.mode) {\r\n          case 'read':\r\n            const r = new AlphaEmsFormResult<TB>('R');\r\n            subscriber.next(r);\r\n            return;\r\n          case 'edit':\r\n            action = 'U';\r\n            apiCall = fm.updateEntity();\r\n            break;\r\n          case 'new':\r\n            action = 'C';\r\n            apiCall = fm.createEntity();\r\n            break;\r\n        }\r\n\r\n        this.busy = true;\r\n        apiCall.subscribe({\r\n          next: b => {\r\n            const res = new AlphaEmsFormResult<TB>(\r\n              action, b);\r\n            this.busy = false;\r\n            subscriber.next(res);\r\n          },\r\n          error: error => {\r\n            console.error(error);\r\n            this.busy = false;\r\n            subscriber.error(error);\r\n          }\r\n        });\r\n      });\r\n  }\r\n\r\n  protected delete(options?: Map<string, string>): Observable<AlphaEmsFormResult<TB>> {\r\n    return new Observable(\r\n      (subscriber: Subscriber<AlphaEmsFormResult<TB>>) => {\r\n        this.busy = true;\r\n        this.api.delete(this._fi.keys!, options)\r\n          .subscribe({\r\n            next: bodyWhenSoftDeleted => {\r\n              const res = bodyWhenSoftDeleted\r\n                ? new AlphaEmsFormResult<TB>('U', bodyWhenSoftDeleted)\r\n                : new AlphaEmsFormResult<TB>('D');\r\n              subscriber.next(res);\r\n              this.busy = false;\r\n            },\r\n            error: error => {\r\n              console.error(error);\r\n              subscriber.error(error);\r\n              this.busy = false;\r\n            }\r\n          });\r\n      });\r\n  }\r\n\r\n  private factorForm(): AlphaEmsBaseFormModel<TH, TB, TE> {\r\n    const fm =\r\n      this.mFactorForm(this._fi);\r\n    fm.api = this.api;\r\n    fm.fi = this._fi;\r\n    return fm;\r\n  }\r\n\r\n\r\n}\r\n","export class AlphaEmsFormInput<TB> {\r\n  mode: 'read' | 'new' | 'edit';\r\n  keys: string[] | undefined;\r\n  options: Map<string, string> | undefined;\r\n  params: any;\r\n  body: TB | undefined;\r\n\r\n  private constructor(\r\n    mode: 'read' | 'new' | 'edit',\r\n    keys?: string[],\r\n    params?: any,\r\n    options?: Map<string, string>,\r\n    body?: TB) {\r\n    this.mode = mode;\r\n    this.keys = keys;\r\n    this.params = params;\r\n    this.options = options;\r\n    this.body = body;\r\n  }\r\n\r\n  /**\r\n   * Factor an AlphaEmsFormInput for readonly mode.\r\n   *\r\n   * @param {string[]} keys - The primary keys uniquely identifying an entity. This value will be sent to the server.\r\n   * @param {*} [params] - An object that passes parameters to the UI.\r\n   * @param {Map<string, string>} [options] - An options dictionary that will be sent to the server.\r\n   * @param [body] - The body of the form input. should have type TB\r\n   * @return {AlphaEmsFormInput} - An instance of AlphaEmsFormInput.\r\n   */\r\n  static factorForRead<TB>(\r\n    keys: string[],\r\n    params?: any,\r\n    options?: Map<string, string>,\r\n    body?: TB): AlphaEmsFormInput<TB> {\r\n    return new AlphaEmsFormInput(\r\n      'read', keys, params, options, body);\r\n  }\r\n\r\n  /**\r\n   * Factor an AlphaGenFormInput for creation.\r\n   *\r\n   * @param params {any} - An object that passes params to the UI.\r\n   * @param options {Map<string, string>} - An options dictionary that will reach the server.\r\n   *\r\n   * @return {AlphaEmsFormInput} - An instance of AlphaEmsFormInput object for new form input.\r\n   */\r\n  static factorForNew<TB>(\r\n    params?: any,\r\n    options?: Map<string, string>): AlphaEmsFormInput<TB> {\r\n    return new AlphaEmsFormInput('new', [], params, options);\r\n  }\r\n\r\n  /**\r\n   * Factor an AlphaGenFormInput for edition.\r\n   *\r\n   * @param {string[]} keys - The primary keys uniquely identifying an entity. This value will reach the server.\r\n   * @param {any} params - An object that passes parameters to the UI.\r\n   * @param {Map<string, string>} options - An options dictionary that will reach the server.\r\n   * @returns {AlphaEmsFormInput} - An instance of AlphaEmsFormInput initialized for editing.\r\n   */\r\n  static factorForEdit<TB>(\r\n    keys: string[],\r\n    params?: any,\r\n    options?: Map<string, string>): AlphaEmsFormInput<TB> {\r\n    return new AlphaEmsFormInput('edit', keys, params, options);\r\n  }\r\n\r\n\r\n}\r\n","/*\r\n * Public API Surface of alpha-com\r\n */\r\n\r\n// utils\r\nexport * from './lib/utils/alpha-utils';\r\nexport * from './lib/utils/alpha-window';\r\nexport * from './lib/utils/alpha-ymd';\r\n\r\n// http\r\nexport * from './lib/http/alpha-http-result';\r\nexport * from './lib/http/alpha-http-result-notification';\r\nexport * from './lib/http/alpha-mutation-enum';\r\nexport * from './lib/http/alpha-severity-enum';\r\n\r\n// api\r\nexport * from './lib/api/alpha-upload-api.service';\r\nexport * from './lib/api/alpha-version-api.service';\r\n\r\n// ems\r\nexport * from './lib/ems/alpha-ems.service';\r\nexport * from './lib/ems/alpha-ems-base-api';\r\nexport * from './lib/ems/alpha-ems-base-form-model';\r\nexport * from './lib/ems/alpha-ems-base-api-event';\r\nexport * from './lib/ems/alpha-ems-base-component';\r\nexport * from './lib/ems/alpha-ems-edit-container';\r\nexport * from './lib/ems/alpha-ems-form-input';\r\nexport * from './lib/ems/alpha-ems-form-result';\r\nexport * from './lib/ems/alpha-ems-uso-option-set';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}