{"version":3,"file":"annuadvent-ngx-core-utils.mjs","sources":["../../../projects/ngx-core/utils/src/services/utils.service.ts","../../../projects/ngx-core/utils/src/utils.module.ts","../../../projects/ngx-core/utils/public-api.ts","../../../projects/ngx-core/utils/annuadvent-ngx-core-utils.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * UtilsService exports all the methods that provides some common utility.\r\n *\r\n * @export\r\n * @class UtilsService\r\n * @typedef {UtilsService}\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class UtilsService {\r\n  constructor() {}\r\n\r\n  //\r\n\r\n  /**\r\n   * Replaces all upperCase letters to lowercase precided with '-' dash\r\n   * @param str\r\n   * @returns dashed string\r\n   */\r\n  public camelCaseToDashCase(str: string): string {\r\n    if (!str) return '';\r\n    return str\r\n      .split('')\r\n      .map((c) => (c === c.toUpperCase() ? `-${c.toLowerCase()}` : c))\r\n      .join('');\r\n  }\r\n\r\n  /**\r\n   * Joins the Url segments and forms a url, stripes out any trailing extra slashes from the segments before joing them.\r\n   * @param urlSegments\r\n   * @returns joined Urls\r\n   */\r\n  public joinUrl(urlSegments: Array<string>): string {\r\n    const cleanedSegmenmts = urlSegments.map((str, index) => {\r\n      let cleanSegment = str;\r\n\r\n      switch (index) {\r\n        case 0:\r\n          if (str.endsWith('/')) {\r\n            cleanSegment = str.substring(0, str.length - 2);\r\n          }\r\n          break;\r\n        case urlSegments.length - 1:\r\n          if (str.startsWith('/')) {\r\n            cleanSegment = str.substring(1, str.length);\r\n          }\r\n          break;\r\n        default:\r\n          if (cleanSegment.endsWith('/')) {\r\n            cleanSegment = cleanSegment.substring(0, cleanSegment.length - 2);\r\n          }\r\n\r\n          if (cleanSegment.startsWith('/')) {\r\n            cleanSegment = cleanSegment.substring(1, cleanSegment.length);\r\n          }\r\n      }\r\n\r\n      return cleanSegment;\r\n    });\r\n\r\n    return cleanedSegmenmts.join('/');\r\n  }\r\n\r\n  /**\r\n   * Returns the current Date from browser in the ISO format.\r\n   *\r\n   * @public\r\n   * @readonly\r\n   * @type {string}\r\n   */\r\n  public get currentDate(): string {\r\n    return new Date().toISOString();\r\n  }\r\n\r\n  /**\r\n   * Returns a local date string\r\n   * @date 26/2/2022 - 9:48:21 am\r\n   *\r\n   * @public\r\n   * @param {string} date\r\n   * @returns {string}\r\n   */\r\n  public dateToLocalString(date: string = ''): string {\r\n    if (!date) return '';\r\n    const options: any = { year: 'numeric', month: 'short', day: 'numeric' };\r\n    const dt = new Date(date);\r\n    return dt.toLocaleDateString('en-US', options);\r\n  }\r\n\r\n  /**\r\n   * Converts ISOString date string to its equivalent time in milliseconds since 1970, returns numeric value as a string.\r\n   * @date 12/28/2022 - 6:04:39 PM\r\n   *\r\n   * @public\r\n   * @param {string} dateStr\r\n   * @returns {string}\r\n   */\r\n  public dateStringToTotalTimeString(dateStr: string): string {\r\n    let timeStr = '';\r\n\r\n    try {\r\n      if (dateStr) {\r\n        const dt = new Date(dateStr);\r\n        timeStr = dt.getTime().toString();\r\n      }\r\n    } catch (err) {}\r\n\r\n    return timeStr;\r\n  }\r\n\r\n  /**\r\n   * Converts total time in milliseconds since 1970 (numbered string) to its equivalent ISOString date string.\r\n   * @date 12/28/2022 - 6:04:39 PM\r\n   *\r\n   * @public\r\n   * @param {string} timeStr\r\n   * @returns {string}\r\n   */\r\n  public totalTimeStringToUTCdateString(timeStr: string): string {\r\n    let dateStr = '';\r\n\r\n    try {\r\n      if (timeStr) {\r\n        dateStr = new Date(Number(timeStr)).toISOString();\r\n      }\r\n    } catch (err) {}\r\n\r\n    return dateStr;\r\n  }\r\n\r\n  /**\r\n   * Stripe out all special characters from the string too except A-Z, a-z, 0-9.\r\n   * @date 2/12/2023 - 2:01:20 PM\r\n   *\r\n   * @public\r\n   * @param {string} str\r\n   * @returns {string}\r\n   */\r\n  public getStringWithNoSpecialChars(str: string): string {\r\n    if (!str) return '';\r\n    const strArr = str.split('');\r\n    const filteredStr = strArr.filter((char) => {\r\n      if (\r\n        (char >= 'A' && char <= 'Z') ||\r\n        (char >= 'a' && char <= 'z') ||\r\n        (char >= '0' && char <= '9') ||\r\n        char === ' '\r\n      ) {\r\n        return true;\r\n      } else {\r\n        return false;\r\n      }\r\n    });\r\n\r\n    return filteredStr.join('');\r\n  }\r\n\r\n  /**\r\n   * Trims out additional consecutive spaces from a string, also trims spaces from end of the string.\r\n   * @date 2/12/2023 - 9:54:48 PM\r\n   *\r\n   * @public\r\n   * @param {string} str\r\n   * @returns {string}\r\n   */\r\n  public trimConsecutiveSpaces(str: string): string {\r\n    if (!str) return '';\r\n\r\n    return str\r\n      .split('')\r\n      .filter((char, index) => {\r\n        if (char === ' ') {\r\n          if (index === str.length - 1) {\r\n            return false;\r\n          } else if (str[index + 1] === ' ') {\r\n            return false;\r\n          } else {\r\n            return true;\r\n          }\r\n        } else {\r\n          return true;\r\n        }\r\n      })\r\n      .join('');\r\n  }\r\n\r\n  /**\r\n   * Converts a string into dashed string. All spaces are replaced with dashes.\r\n   * This converted string can be used for getting a unique name for a title of any content like, article etc.\r\n   *\r\n   * @param title\r\n   * @returns\r\n   */\r\n  public toDashedString(title: string = ''): string {\r\n    // trims additional spaces from a string.\r\n    const spacesTrimmedStr = this.trimConsecutiveSpaces(title);\r\n    // Stripe out all special characters from the string too except A-Z, a-z, 0-9.\r\n    const titleWithNoSpecialChars =\r\n      this.getStringWithNoSpecialChars(spacesTrimmedStr);\r\n    return titleWithNoSpecialChars.split(' ').join('-').toLocaleLowerCase();\r\n  }\r\n\r\n  /**\r\n   * Scrolls the page to the desired top position.\r\n   * @date 25/2/2022 - 5:28:11 pm\r\n   *\r\n   * @public\r\n   * @param {number} top\r\n   */\r\n  public scrollTo(top: number = 0) {\r\n    if (typeof window !== 'undefined') {\r\n      window.scrollTo({ top: top });\r\n    }\r\n  }\r\n\r\n  public getTrimmedStringByChars(str: string, count: number = 0): string {\r\n    if (!str || typeof str !== 'string' || !count || count <= 0) {\r\n      return str;\r\n    }\r\n\r\n    return str.substring(0, count) + '...';\r\n  }\r\n\r\n  /**\r\n   * Generates a unique ID from a string by adding dashes for spaces and adding a unique string.\r\n   * @date 14/4/2022 - 2:39:05 pm\r\n   *\r\n   * @public\r\n   * @param {string} [str='']\r\n   * @returns {string}\r\n   */\r\n  public getUniqueFromString(str: string = ''): string {\r\n    const dashed = this.toDashedString(str);\r\n    const rndStr = Math.random().toString(36).substring(2);\r\n    const uniqueId =\r\n      Date.now().toString(36) + rndStr.substring(rndStr.length / 3);\r\n\r\n    return `${dashed}-${uniqueId}`;\r\n  }\r\n\r\n  /**\r\n   * Deep copy an object or an array\r\n   * @date 2/28/2023 - 3:22:38 AM\r\n   *\r\n   * @public\r\n   * @param {(any)} value\r\n   * @returns {(any)}\r\n   */\r\n  public deepCopy(value: any): any {\r\n    try {\r\n      return JSON.parse(JSON.stringify(value));\r\n    } catch (err) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  public delay(miliseconds: number): Promise<unknown> {\r\n    return new Promise((resolve) => setTimeout(resolve, miliseconds));\r\n  }\r\n\r\n  /**\r\n   * Generates Image source urls to be displayed from API.\r\n   * Note: Do not provide base url, while saving urls to db, but while displaying only.\r\n   * @date 6/4/2023 - 12:27:34 AM\r\n   *\r\n   * @public\r\n   * @param {string} imageFullPath\r\n   * @param {string} imageApiEndpoint\r\n   * @param {string} [baseUrl='']\r\n   * @returns {string}\r\n   */\r\n  public getImageUrl(\r\n    imageFullPath: string,\r\n    imageApiEndpoint: string,\r\n    baseUrl: string = ''\r\n  ): string {\r\n    const imageApiUrl = `${imageApiEndpoint}${imageFullPath}`;\r\n    return baseUrl ? this.joinUrl([baseUrl, imageApiUrl]) : imageApiUrl;\r\n  }\r\n\r\n  /**\r\n   * Generates the canonical categiry or article url.\r\n   * Note: Do not provide base url, while saving urls to db, but while displaying only.\r\n   * @date 6/4/2023 - 12:17:52 AM\r\n   *\r\n   * @public\r\n   * @param {string} categoryid\r\n   * @param {string} [articleId='']\r\n   * Provide only when displaying the url, and not while saving to db.\r\n   * @param {string} [baseUrl='']\r\n   * @returns {string}\r\n   */\r\n  public getCanonicalUrl(\r\n    categoryid: string,\r\n    articleId: string = '',\r\n    baseUrl: string = ''\r\n  ): string {\r\n    const articleSegment = articleId ? `/${articleId}` : '';\r\n    const catId = categoryid.indexOf('/') === 0 ? categoryid : `/${categoryid}`;\r\n    return baseUrl\r\n      ? this.joinUrl([baseUrl, catId, articleSegment])\r\n      : `${catId}${articleSegment}`;\r\n  }\r\n\r\n  /**\r\n   * Replaces single quotes in a string with double quotes.\r\n   * @param str\r\n   * @returns\r\n   */\r\n  public replaceSingleWithDoubleQuotes(str: string): string {\r\n    if (!str) return str;\r\n    str = str.replace(/'/g, '\"');\r\n\r\n    return str;\r\n  }\r\n\r\n  /**\r\n   * Strips out starting and ending single/double quotes from a string.\r\n   * @param str\r\n   * @returns\r\n   */\r\n  public stripsOutQuotesFromStartAndEnd(str: string): string {\r\n    if (!str) return str;\r\n\r\n    if (\r\n      (str.startsWith(\"'\") && str.endsWith(\"'\")) ||\r\n      (str.startsWith('\"') && str.endsWith('\"'))\r\n    ) {\r\n      str = str.substring(1);\r\n      str = str.substring(0, str.length - 1);\r\n    }\r\n\r\n    return str;\r\n  }\r\n\r\n  /**\r\n   * Gives a natural comma separetd string from an array of strings.\r\n   * Last comma in the string is replaced with 'and', being a natural language string.\r\n   * @param stringArray\r\n   * @returns string\r\n   */\r\n  public nauturalJoinArray(stringArray: Array<string>): string {\r\n    return `${stringArray.slice(0, stringArray.length - 1).join(', ')} and ${\r\n      stringArray[stringArray.length - 1]\r\n    }`;\r\n  }\r\n}\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UtilsService } from './services/utils.service';\r\n\r\n\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  providers: [UtilsService],\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  exports: []\r\n})\r\nexport class UtilsModule { }\r\n","\r\n    // Export all exposable angular assets from ./src folder, like components, services, pipes, directives etc.\r\n    export * from './src/utils.module';\r\nexport * from './src/services/utils.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}