{ "version": 3, "sources": ["apps/partner-center-client/src/app/core/utils/array-utils.ts", "apps/partner-center-client/src/app/core/utils/clipboard.ts", "apps/partner-center-client/src/app/core/utils/time-utils.ts", "apps/partner-center-client/src/app/core/utils/case-transform.ts"], "sourcesContent": ["export interface Updatable {\n updatedDate: Date;\n}\n\n/**\n * Given two arrays, merge them into one, containing only the unique items returned from the\n * callback function.\n */\nexport function mergeArrays(\n array1: T[],\n array2: T[],\n keyName: string,\n callbackfn: (item1: T, item2: T) => T,\n): any[] {\n const hash = {};\n for (const item of array1) {\n if (typeof item[keyName] === 'string') {\n hash[item[keyName]] = item;\n } else {\n hash[JSON.stringify(item[keyName])] = item;\n }\n }\n\n for (const item of array2) {\n let stringKey = '';\n if (typeof item[keyName] === 'string') {\n stringKey = item[keyName];\n } else {\n stringKey = JSON.stringify(item[keyName]);\n }\n if (!hash[stringKey]) {\n hash[stringKey] = item;\n } else {\n const existingItem = hash[stringKey];\n hash[stringKey] = callbackfn(item, existingItem);\n }\n }\n return Object.keys(hash).map((key) => hash[key]);\n}\n\n/**\n * Given two arrays, merge them into one, containing only the newest unique items from each.\n */\nexport function mergeUpdatedArrays(array1: T[], array2: T[], keyName: string): T[] {\n return mergeArrays(array1, array2, keyName, (item1, item2) => {\n return item1.updatedDate > item2.updatedDate ? item1 : item2;\n });\n}\n", "export function copyTextToClipboard(textToCopy: string): boolean {\n let success = true;\n let inputElementRef = document.getElementById('copyTextInput') as HTMLInputElement;\n\n if (!inputElementRef) {\n inputElementRef = document.createElement('input');\n inputElementRef.setAttribute('id', 'copyTextInput');\n document.body.appendChild(inputElementRef);\n }\n inputElementRef.value = textToCopy;\n inputElementRef.select();\n try {\n document.execCommand('copy');\n } catch (err) {\n success = false;\n }\n return success;\n}\n", "import moment from 'moment';\n\n/**\n * Converts a Date object to UTC Time.\n *\n * @param date - Date to convert to UTC.\n * @returns Converted Date object.\n */\nexport function toUTCTime(date: Date): Date {\n const year: number = date.getFullYear();\n const month: number = date.getMonth();\n const day: number = date.getDate();\n const hour: number = date.getHours();\n const min: number = date.getMinutes();\n const sec: number = date.getSeconds();\n return new Date(Date.UTC(year, month, day, hour, min, sec));\n}\n\n/**\n * Determines whether or not a timestamp is in the past.\n *\n * @param expiryDatestamp - Date time string to validate.\n * @returns True if expired/in the past.\n */\nexport function isDateInPast(expiryDatestamp = ''): boolean {\n return moment(expiryDatestamp).isSameOrBefore(moment.utc());\n}\n\n/**\n * Determines whether or not a timestamp is in the past.\n *\n * @param expiryDatestamp - Date time to validate.\n * @returns True if expired/in the past.\n */\nexport function isDatePast(expiryDatestamp: Date): boolean {\n return moment(expiryDatestamp).isSameOrBefore(moment.utc());\n}\n\n/**\n * Given a date timestamp string, return a Date object or null.\n *\n * @param datestamp - Date string\n * @returns A date object if valid, otherwise null\n */\nexport function getDateOrNull(datestamp: string): Date | null {\n if (datestamp) {\n return moment.utc(datestamp).toDate();\n }\n return null;\n}\n\n/**\n * Convert a Date object into a localized string.\n *\n * @param d - Date object to localize.\n * @returns The formatted Date time string like this: September 4, 1986.\n */\nexport function localizedDisplayDate(d: Date): string {\n return moment(d).format('LL');\n}\n\n/**\n * Convert a Date object into a localized string, for yesterday.\n *\n * @param d - Date object to localize, yesterday.\n * @returns The formatted Date time string, for yesterday.\n */\nexport function localizedDisplayYesterday(d: Date): string {\n return localizedDisplayDate(moment(d).subtract(24, 'h').toDate());\n}\n\n/**\n * Validates that a given date is greater than Jan 1, 1900.\n *\n * @param d - Date to validate.\n * @returns True if the date is after Jan 1, 1900.\n */\nexport function isValidDate(d: Date): boolean {\n if (!d) {\n return false;\n }\n\n const earlyDate = new Date();\n earlyDate.setUTCFullYear(1900, 1, 1);\n earlyDate.setUTCHours(0, 0, 0, 0);\n\n return d > earlyDate;\n}\n", "export class CaseTransform {\n static objectPropertiesSnakeToCamel(o: any): any {\n for (const property in o) {\n if (Object.prototype.hasOwnProperty.call(o, property)) {\n o[this.snakeToCamelCase(property)] = o[property];\n }\n }\n return o;\n }\n\n static snakeToCamelCase(value: string): string {\n return value\n ? value\n .replace(new RegExp(/_/g), ' ')\n .replace(/\\b\\w/g, (l) => l.toUpperCase())\n .replace(/\\b\\w/, (l) => l.toLowerCase())\n .replace(/\\s/g, '')\n : value;\n }\n\n static lowerToTitleCase(value: string): string {\n // Code taken from https://github.com/gouch/to-title-case to support the proper spec.\n const smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\n\n return value\n ? value.replace(\n /[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g,\n function (match: string, index: number, title: string): string {\n if (\n index > 0 &&\n index + match.length !== title.length &&\n match.search(smallWords) > -1 &&\n title.charAt(index - 2) !== ':' &&\n (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') &&\n title.charAt(index - 1).search(/[^\\s-]/) < 0\n ) {\n return match.toLowerCase();\n }\n\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n\n return match.charAt(0).toUpperCase() + match.substr(1);\n },\n )\n : value;\n }\n}\n"], "mappings": "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", "names": ["mergeArrays", "array1", "array2", "keyName", "callbackfn", "hash", "item", "JSON", "stringify", "stringKey", "existingItem", "Object", "keys", "map", "key", "mergeUpdatedArrays", "item1", "item2", "updatedDate", "copyTextToClipboard", "textToCopy", "success", "inputElementRef", "document", "getElementById", "createElement", "setAttribute", "body", "appendChild", "value", "select", "execCommand", "import_moment", "toUTCTime", "date", "year", "getFullYear", "month", "getMonth", "day", "getDate", "hour", "getHours", "min", "getMinutes", "sec", "getSeconds", "Date", "UTC", "isDatePast", "expiryDatestamp", "moment", "isSameOrBefore", "utc", "localizedDisplayDate", "d", "moment", "format", "localizedDisplayYesterday", "subtract", "toDate", "isValidDate", "earlyDate", "Date", "setUTCFullYear", "setUTCHours", "CaseTransform", "objectPropertiesSnakeToCamel", "o", "property", "Object", "prototype", "hasOwnProperty", "call", "snakeToCamelCase", "value", "replace", "RegExp", "l", "toUpperCase", "toLowerCase", "lowerToTitleCase", "smallWords", "match", "index", "title", "length", "search", "charAt", "substr"] }