@igo2/utils 20.1.0-next.9 → 20.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/igo2-utils.mjs +1 -1
- package/fesm2022/igo2-utils.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/package.json +1 -1
package/fesm2022/igo2-utils.mjs
CHANGED
|
@@ -810,7 +810,7 @@ function strEnum(o) {
|
|
|
810
810
|
}, Object.create(null));
|
|
811
811
|
}
|
|
812
812
|
|
|
813
|
-
const PATH_PREBUILT_THEMES = '
|
|
813
|
+
const PATH_PREBUILT_THEMES = 'igo2/core/theming/prebuilt-themes';
|
|
814
814
|
const LINK_ID = 'theme-styles';
|
|
815
815
|
function loadTheme(doc, themeName, path = PATH_PREBUILT_THEMES) {
|
|
816
816
|
const src = `${path}/${themeName}.css`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igo2-utils.mjs","sources":["../../../packages/utils/src/lib/base64.ts","../../../packages/utils/src/lib/cache.utils.ts","../../../packages/utils/src/lib/compression/compression.utils.ts","../../../packages/utils/src/lib/change.interface.ts","../../../packages/utils/src/lib/string-utils.ts","../../../packages/utils/src/lib/change.ts","../../../packages/utils/src/lib/date.utils.ts","../../../packages/utils/src/lib/dom.utils.ts","../../../packages/utils/src/lib/files/excel.ts","../../../packages/utils/src/lib/files/file.ts","../../../packages/utils/src/lib/object-utils.ts","../../../packages/utils/src/lib/number-utils.ts","../../../packages/utils/src/lib/strenum.ts","../../../packages/utils/src/lib/theme.utils.ts","../../../packages/utils/src/lib/tree/tree.ts","../../../packages/utils/src/lib/uuid.ts","../../../packages/utils/src/lib/watcher.ts","../../../packages/utils/src/public_api.ts","../../../packages/utils/src/igo2-utils.ts"],"sourcesContent":["/* eslint-disable */\n\nconst ALPHA =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nexport class Base64 {\n private static PADCHAR: string = '=';\n private static ALPHA: string = ALPHA;\n\n private static getByte(s: string, i: number): number {\n const x = s.charCodeAt(i);\n return x;\n }\n\n private static getByte64(s: string, i: number): number {\n const idx = this.ALPHA.indexOf(s.charAt(i));\n return idx;\n }\n\n public static decode(s: string): string {\n let pads = 0,\n i,\n b10,\n imax = s.length,\n x = [];\n\n s = String(s);\n\n if (imax === 0) {\n return s;\n }\n\n if (s.charAt(imax - 1) === this.PADCHAR) {\n pads = 1;\n if (s.charAt(imax - 2) === this.PADCHAR) {\n pads = 2;\n }\n imax -= 4;\n }\n\n for (i = 0; i < imax; i += 4) {\n b10 =\n (this.getByte64(s, i) << 18) |\n (this.getByte64(s, i + 1) << 12) |\n (this.getByte64(s, i + 2) << 6) |\n this.getByte64(s, i + 3);\n x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255, b10 & 255));\n }\n\n switch (pads) {\n case 1:\n b10 =\n (this.getByte64(s, i) << 18) |\n (this.getByte64(s, i + 1) << 12) |\n (this.getByte64(s, i + 2) << 6);\n x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255));\n break;\n case 2:\n b10 = (this.getByte64(s, i) << 18) | (this.getByte64(s, i + 1) << 12);\n x.push(String.fromCharCode(b10 >> 16));\n break;\n }\n\n return x.join('');\n }\n\n public static encode(s: string): string {\n s = String(s);\n\n let i,\n b10,\n x = [],\n imax = s.length - (s.length % 3);\n\n if (s.length === 0) {\n return s;\n }\n\n for (i = 0; i < imax; i += 3) {\n b10 =\n (this.getByte(s, i) << 16) |\n (this.getByte(s, i + 1) << 8) |\n this.getByte(s, i + 2);\n x.push(this.ALPHA.charAt(b10 >> 18));\n x.push(this.ALPHA.charAt((b10 >> 12) & 63));\n x.push(this.ALPHA.charAt((b10 >> 6) & 63));\n x.push(this.ALPHA.charAt(b10 & 63));\n }\n\n switch (s.length - imax) {\n case 1:\n b10 = this.getByte(s, i) << 16;\n x.push(\n this.ALPHA.charAt(b10 >> 18) +\n this.ALPHA.charAt((b10 >> 12) & 63) +\n this.PADCHAR +\n this.PADCHAR\n );\n break;\n case 2:\n b10 = (this.getByte(s, i) << 16) | (this.getByte(s, i + 1) << 8);\n x.push(\n this.ALPHA.charAt(b10 >> 18) +\n this.ALPHA.charAt((b10 >> 12) & 63) +\n this.ALPHA.charAt((b10 >> 6) & 63) +\n this.PADCHAR\n );\n break;\n }\n\n return x.join('');\n }\n}\n","export function customCacheHasher(parameters: unknown[]): unknown[] {\n return parameters.map((param) => {\n if (\n typeof param === 'object' &&\n param != null &&\n typeof param.toString === 'function'\n ) {\n return param.toString();\n }\n return param !== undefined ? JSON.parse(JSON.stringify(param)) : param;\n });\n}\n","import { Observable, Observer } from 'rxjs';\n\nimport { CompressedData } from './compressedData.interface';\n\nfunction getNumber(v: number, endposition: number, length: number) {\n const mask = (1 << length) - 1;\n return (v >> endposition) & mask;\n}\n\nexport class Compression {\n private base64Index = new Map<string, number>();\n private indexBase64 = new Map<number, string>();\n\n constructor() {\n this.generateBase64Index();\n }\n\n private generateBase64Index() {\n // https://fr.wikipedia.org/wiki/Base64\n // A-Z => [0, 25]\n for (let i = 0; i < 26; i++) {\n this.base64Index.set(String.fromCharCode('A'.charCodeAt(0) + i), i);\n this.indexBase64.set(i, String.fromCharCode('A'.charCodeAt(0) + i));\n }\n // a-z => [26, 51]\n for (let i = 0; i < 26; i++) {\n this.base64Index.set(String.fromCharCode('a'.charCodeAt(0) + i), i + 26);\n this.indexBase64.set(i + 26, String.fromCharCode('a'.charCodeAt(0) + i));\n }\n // 0-9 => [52, 61]\n for (let i = 0; i < 10; i++) {\n this.base64Index.set(String.fromCharCode('0'.charCodeAt(0) + i), i + 52);\n this.indexBase64.set(i + 52, String.fromCharCode('0'.charCodeAt(0) + i));\n }\n // + / => [62, 63]\n this.base64Index.set('+', 62);\n this.base64Index.set('/', 63);\n this.indexBase64.set(62, '+');\n this.indexBase64.set(63, '/');\n }\n\n compressBlob(blob: Blob): Observable<CompressedData> {\n if (!blob) {\n return;\n }\n\n const observable = new Observable((observer: Observer<CompressedData>) => {\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onload = () => {\n const base64 = reader.result.valueOf() as string;\n const text64 = base64.substr(base64.indexOf(',') + 1);\n const compressed = this.compressStringBase64(text64);\n const compressedData: CompressedData = {\n length: text64.length,\n type: blob.type,\n object: compressed\n };\n observer.next(compressedData);\n };\n });\n return observable;\n }\n\n decompressBlob(compressedData: CompressedData): Blob {\n const object = compressedData.object;\n const length = compressedData.length;\n const decompressed: string = this.decompressStringBase64(object, length);\n const byteCharacters = atob(decompressed);\n const byteNumbers = new Array(byteCharacters.length);\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: compressedData.type });\n return blob;\n }\n\n private compressStringBase64(s: string): string {\n let out = '';\n let bits = 16;\n let chr = 0;\n let rem = 0;\n for (const c of s) {\n const value = this.base64Index.get(c);\n if (bits > 6) {\n bits -= 6;\n chr += value << bits;\n } else {\n rem = 6 - bits;\n chr += value >> rem;\n out += String.fromCharCode(chr);\n chr = value << (16 - rem);\n bits = 16 - rem;\n }\n }\n if (s.length % 8 !== 0) {\n out += String.fromCharCode(chr);\n }\n return String.fromCharCode(9731) + out;\n }\n\n private decompressStringBase64(c: string, length: number): string {\n if (!c) {\n return;\n }\n\n if (c.charCodeAt(0) !== 9731) {\n return c;\n }\n\n let chr = 0;\n let rem = 0;\n let bits = 16;\n let out = '';\n let j = 1;\n let value = c.charCodeAt(j);\n for (let i = 0; i < length; i++) {\n if (bits > 6) {\n bits -= 6;\n chr = getNumber(value, bits, 6);\n out += this.indexBase64.get(chr);\n } else {\n rem = 6 - bits;\n chr = getNumber(value, 0, bits) << rem;\n value = c.charCodeAt(++j);\n chr += getNumber(value, 16 - rem, rem);\n out += this.indexBase64.get(chr);\n bits = 16 - rem;\n }\n }\n return out;\n }\n}\n","export enum ChangeType {\n ADDED = 'added',\n DELETED = 'deleted',\n MODIFIED = 'modified'\n}\n\nexport interface Change {\n type: ChangeType;\n keysChanged?: {\n key: string;\n newValue: any;\n oldValue: any;\n }[];\n}\n\nexport interface GroupingChanges {\n added: ChangeItem[];\n deleted: ChangeItem[];\n modified: ChangeItem[];\n}\n\nexport interface ChangeItem {\n change: Change;\n value: any;\n oldValue?: any;\n newValue?: any;\n}\n","export class StringUtils {\n static diff(s1: string, s2: string, p = 4): string {\n if (!s1 && !s2) {\n return '';\n }\n if (!s1) {\n return '<span class=\"inserted\">' + s2 + '</span>';\n }\n if (!s2) {\n return '<span class=\"deleted\">' + s1 + '</span>';\n }\n s1 = s1.toString();\n s2 = s2.toString();\n const changeData = StringUtils.getChanges(s1, s2, '', p);\n const nextS = s2.slice(\n changeData.mtc.length + changeData.ins.length + changeData.sbs.length\n ); // remaining part of \"s\"\n const nextThis = s1.slice(\n changeData.mtc.length + changeData.del.length + changeData.sbs.length\n ); // remaining part of \"this\"\n let result = ''; // the glorious result\n if (changeData.del.length > 0) {\n changeData.del = '<span class=\"deleted\">' + changeData.del + '</span>';\n }\n if (changeData.ins.length > 0) {\n changeData.ins = '<span class=\"inserted\">' + changeData.ins + '</span>';\n }\n result = changeData.mtc + changeData.del + changeData.ins + changeData.sbs;\n result +=\n nextThis !== '' || nextS !== ''\n ? StringUtils.diff(nextThis, nextS, p)\n : '';\n return result;\n }\n\n private static getMatchingSubstring(s, l, m) {\n // returns the first matching substring in-between the two strings\n let i = 0;\n let match = false;\n const slen = s.length;\n const o = { fis: slen, mtc: m, sbs: '' }; // temporary object used to construct the cd (change data) object\n\n while (i < slen) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n l[i] === s[i]\n ? match\n ? (o.sbs += s[i]) // o.sbs holds the matching substring itsef\n : ((match = true), (o.fis = i), (o.sbs = s[i]))\n : match\n ? (i = slen) // stop after the first found substring\n : // eslint-disable-next-line no-self-assign\n (i = i);\n ++i;\n }\n return o;\n }\n\n private static getChanges(s1, s2, m, p) {\n const isThisLonger = s1.length >= s1.length ? true : false;\n let [longer, shorter] = isThisLonger ? [s1, s2] : [s2, s1]; // assignment of longer and shorter by es6 destructuring\n let bi = 0; // base index designating the index of first mismacthing character in both strings\n\n while (shorter[bi] === longer[bi] && bi < shorter.length) {\n ++bi;\n } // make bi the index of first mismatching character\n longer = longer.split('').slice(bi); // as the longer string will be rotated it is converted into array\n shorter = shorter.slice(bi); // shorter and longer now starts from the first mismatching character\n\n const len = longer.length; // length of the longer string\n let cd: any = {\n fis: shorter.length, // the index of matching string in the shorter string\n fil: len, // the index of matching string in the longer string\n sbs: '', // the matching substring itself\n mtc: m + s2.slice(0, bi)\n }; // if exists mtc holds the matching string at the front\n let sub: any = { sbs: '' }; // returned substring per 1 character rotation of the longer string\n\n if (shorter !== '') {\n for (let rc = 0; rc < len && sub.sbs.length < p; rc++) {\n // rc -> rotate count, p -> precision factor\n sub = StringUtils.getMatchingSubstring(\n shorter,\n StringUtils.rotateArray(longer, rc),\n cd.mtc\n ); // rotate longer string 1 char and get substring\n sub.fil =\n rc < len - sub.fis\n ? sub.fis + rc // mismatch is longer than the mismatch in short\n : sub.fis - len + rc; // mismatch is shorter than the mismatch in short\n if (sub.sbs.length > cd.sbs.length) {\n cd = sub; // only keep the one with the longest substring.\n }\n }\n }\n // insert the mismatching delete subsrt and insert substr to the cd object and attach the previous substring\n [cd.del, cd.ins] = isThisLonger\n ? [longer.slice(0, cd.fil).join(''), shorter.slice(0, cd.fis)]\n : [shorter.slice(0, cd.fis), longer.slice(0, cd.fil).join('')];\n return cd.del.indexOf(' ') === -1 ||\n cd.ins.indexOf(' ') === -1 ||\n cd.del === '' ||\n cd.ins === '' ||\n cd.sbs === ''\n ? cd\n : StringUtils.getChanges(cd.del, cd.ins, cd.mtc, p);\n }\n\n private static rotateArray(array, n) {\n const len = array.length;\n const res = new Array(array.length);\n if (n % len === 0) {\n return array.slice();\n } else {\n for (let i = 0; i < len; i++) {\n res[i] = array[(i + (len + (n % len))) % len];\n }\n }\n return res;\n }\n\n static isValidNumber(value: string): boolean {\n return !isNaN(Number(value));\n }\n\n static isOctalNumber(value: string): boolean {\n return (\n StringUtils.isValidNumber(value) &&\n value.startsWith('0') &&\n value.length > 1\n );\n }\n}\n","import { ChangeType, GroupingChanges } from './change.interface';\nimport { StringUtils } from './string-utils';\n\nexport class ChangeUtils {\n static findChanges(\n obj1: any[],\n obj2: any[],\n ignoreKeys: string[] = []\n ): GroupingChanges {\n const items: GroupingChanges = {\n added: [],\n deleted: [],\n modified: []\n };\n\n if (!obj1 || !obj2) {\n return items;\n }\n\n const obj1Clone: any = [...obj1];\n const obj2Clone: any = [...obj2];\n\n for (const fromItem of obj1Clone) {\n const index = obj2Clone.findIndex((s) => s.id === fromItem.id);\n\n if (index === -1) {\n items.deleted.push({\n change: { type: ChangeType.DELETED },\n value: fromItem\n });\n continue;\n }\n\n const toItem = obj2Clone.splice(index, 1)[0];\n const fromItemClone = JSON.parse(JSON.stringify(fromItem));\n const toItemClone = JSON.parse(JSON.stringify(toItem));\n\n const keysChanged = ChangeUtils.compareObject(\n fromItemClone,\n toItemClone,\n undefined,\n ignoreKeys\n );\n\n if (keysChanged.length) {\n items.modified.push({\n change: {\n type: ChangeType.MODIFIED,\n keysChanged\n },\n value: fromItemClone,\n oldValue: fromItem,\n newValue: toItem\n });\n }\n }\n\n items.added = obj2Clone.map((itemAdded) => {\n return {\n change: { type: ChangeType.ADDED },\n value: itemAdded\n };\n });\n\n return items;\n }\n\n private static compareObject(fromItem, toItem, baseKey?, ignoreKeys = []) {\n const fromItemClone = JSON.parse(JSON.stringify(fromItem));\n const toItemClone = JSON.parse(JSON.stringify(toItem));\n\n const keys: any = new Set([\n ...Object.keys(fromItem),\n ...Object.keys(toItem)\n ]);\n let keysChanged = [];\n keys.forEach((key) => {\n const keyString = baseKey ? `${baseKey}.${key}` : key;\n if (ignoreKeys.indexOf(keyString) !== -1) {\n return;\n }\n\n if (Array.isArray(fromItem[key])) {\n fromItem[key] = fromItem[key].join(',<br>');\n }\n if (Array.isArray(toItem[key])) {\n toItem[key] = toItem[key].join(',<br>');\n }\n\n if (\n typeof fromItem[key] === 'object' &&\n typeof toItem[key] === 'object' &&\n fromItem[key] !== null &&\n toItem[key] !== null\n ) {\n keysChanged = keysChanged.concat(\n this.compareObject(fromItem[key], toItem[key], keyString)\n );\n } else {\n if (fromItem[key] !== toItem[key]) {\n keysChanged.push({\n key: keyString,\n oldValue: fromItemClone[key],\n newValue: toItemClone[key]\n });\n fromItem[key] = StringUtils.diff(fromItem[key], toItem[key]);\n }\n }\n });\n\n return keysChanged;\n }\n}\n","const ISO8601_REGEX = new RegExp(\n '(d{4}-[01]d-[0-3]dT[0-2]d:[0-5]d:[0-5]d.d+)|(d{4}-[01]d-[0-3]dT[0-2]d:[0-5]d:[0-5]d)|(d{4}-[01]d-[0-3]dT[0-2]d:[0-5]d)'\n);\nconst ISO8601_UTCTIME_REGEX = new RegExp(\n '(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\\\.[0-9]+)?(Z)?'\n);\n\nexport function isIsoDate(value: string): boolean {\n if (!ISO8601_REGEX.test(value) && !ISO8601_UTCTIME_REGEX.test(value)) {\n return false;\n }\n const d = new Date(value);\n return d instanceof Date && !isNaN(d.getTime());\n}\n\nexport const TimeFrame = ['now', 'today'] as const;\nexport type TimeFrame = (typeof TimeFrame)[number];\n\nexport function isTimeFrame(\n value: Date | TimeFrame | string | number\n): value is TimeFrame {\n return (\n typeof value === 'string' &&\n TimeFrame.includes(value.toLowerCase() as TimeFrame)\n );\n}\n\nexport function resolveDate(input?: Date | TimeFrame): Date | undefined {\n if (isTimeFrame(input)) {\n return new Date();\n }\n return input instanceof Date ? input : undefined;\n}\n","export class DomUtils {\n static create<K extends keyof HTMLElementTagNameMap>(\n doc: Document,\n tagName: K,\n options?: Partial<HTMLElementTagNameMap[K]>\n ): HTMLElementTagNameMap[K] {\n const el = doc.createElement(tagName);\n\n for (const key in options) {\n el[key] = options[key];\n }\n\n return el;\n }\n\n static remove(node: HTMLElement | SVGElement): void {\n if (!node.parentNode) {\n return;\n }\n node.parentNode.removeChild(node);\n }\n}\n","import type {\n ColInfo,\n JSON2SheetOpts,\n WorkBook,\n WorkSheet,\n WritingOptions\n} from 'xlsx';\n\nexport async function createExcelWorkBook(\n workSheet?: WorkSheet,\n workSheetName?: string\n): Promise<WorkBook> {\n const { utils } = await import('xlsx');\n\n return utils.book_new(workSheet, workSheetName);\n}\nexport async function addExcelSheetToWorkBook<T = Record<string, unknown>>(\n title: string,\n rows: T[],\n workBook: WorkBook,\n opts?: {\n json2SheetOpts?: JSON2SheetOpts;\n bookAppendSheetOpts?: { roll?: boolean };\n }\n): Promise<void> {\n const { utils } = await import('xlsx');\n\n const worksheet = utils.json_to_sheet(rows, opts?.json2SheetOpts);\n\n /* calculate column width */\n if (rows?.length) {\n worksheet['!cols'] = getColumnsInfo(rows);\n }\n\n const SHEET_NAME_MAX_LENGTH = 31;\n let sheetName =\n title.length >= SHEET_NAME_MAX_LENGTH\n ? title.substring(0, SHEET_NAME_MAX_LENGTH)\n : title;\n\n if (workBook.SheetNames.includes(sheetName)) {\n sheetName = `${sheetName.substring(0, SHEET_NAME_MAX_LENGTH - 3)}_${workBook.SheetNames.length}`;\n }\n\n utils.book_append_sheet(\n workBook,\n worksheet,\n sheetName,\n opts?.bookAppendSheetOpts?.roll\n );\n}\n\nexport async function writeExcelFile(\n workBook: WorkBook,\n filename: string,\n opts?: WritingOptions\n) {\n const cleanedFileName = filename.toLowerCase().endsWith('.xlsx')\n ? filename.slice(0, -5)\n : filename;\n const { writeFile } = await import('xlsx');\n writeFile(workBook, `${cleanedFileName}.xlsx`, opts);\n}\n\nfunction getColumnsInfo<T = Record<string, unknown>>(rows: T[]): ColInfo[] {\n const columns = Object.keys(rows[0]);\n return columns.map((column) => ({\n wch: getColumnMaxWidth(column, rows)\n }));\n}\n\nfunction getColumnMaxWidth<T = Record<string, unknown>>(\n column: string,\n rows: T[]\n): number {\n return rows.reduce(\n (width, row) => Math.max(width, row[column]?.toString().length ?? 0),\n column.length\n );\n}\n","/**\n * Trigger download of a file\n *\n * @param content File content\n * @param mimeType File mime type\n * @param fileName File name\n */\nexport function downloadContent(\n content: string,\n mimeType: string,\n fileName: string\n) {\n const uri = `data:${mimeType},${encodeURIComponent(content)}`;\n downloadFromUri(uri, fileName);\n}\n\nexport function downloadBlob(blob: Blob, fileName: string) {\n const url = window.URL.createObjectURL(blob);\n downloadFromUri(url, fileName);\n}\n\n/**\n * Trigger download of a file\n *\n * @param content File content\n * @param mimeType File mime type\n * @param fileName File name\n */\nexport function downloadFromUri(uri: string, fileName: string) {\n const element = document.createElement('a');\n element.setAttribute('href', uri);\n element.setAttribute('download', fileName);\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n}\n\n/**\n * Validate if string is valid json object\n * @param jsonString\n * @return boolean\n */\nexport function isValidJSON(jsonString: string): boolean {\n try {\n return JSON.parse(jsonString) && !!jsonString;\n } catch {\n return false;\n }\n}\n","/* eslint-disable no-prototype-builtins */\nexport class ObjectUtils {\n static resolve(obj: object, key: string): any {\n const keysArray = key.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n let current = obj;\n while (keysArray.length) {\n if (typeof current !== 'object') {\n return undefined;\n }\n current = current[keysArray.shift()];\n }\n\n return current;\n }\n\n static isObject(item: object) {\n return (\n item &&\n typeof item === 'object' &&\n !Array.isArray(item) &&\n item !== null &&\n !(item instanceof Date)\n );\n }\n\n static mergeDeep(\n target: object,\n source: object,\n ignoreUndefined = false\n ): any {\n const output = Object.assign({}, target);\n if (ObjectUtils.isObject(target) && ObjectUtils.isObject(source)) {\n Object.keys(source)\n .filter((key) => !ignoreUndefined || source[key] !== undefined)\n .forEach((key) => {\n if (ObjectUtils.isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] });\n } else {\n output[key] = ObjectUtils.mergeDeep(\n target[key],\n source[key],\n ignoreUndefined\n );\n }\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n }\n\n static copyDeep(src): any {\n const target = Array.isArray(src) ? [] : {};\n for (const prop in src) {\n if (src.hasOwnProperty(prop)) {\n const value = src[prop];\n if (value && typeof value === 'object') {\n target[prop] = this.copyDeep(value);\n } else {\n target[prop] = value;\n }\n }\n }\n return target;\n }\n\n static removeDuplicateCaseInsensitive(obj: object) {\n const summaryCapitalizeObject = {};\n const capitalizeObject = {};\n const upperCaseCount = [];\n\n for (const property in obj) {\n if (obj.hasOwnProperty(property)) {\n const upperCaseProperty = property.toUpperCase();\n if (!summaryCapitalizeObject.hasOwnProperty(upperCaseProperty)) {\n summaryCapitalizeObject[upperCaseProperty] = [\n { [property]: obj[property] }\n ];\n } else {\n summaryCapitalizeObject[upperCaseProperty].push({\n [property]: obj[property]\n });\n }\n // counting the number of uppercase lettersMna\n upperCaseCount.push({\n key: property,\n count: property.replace(/[^A-Z]/g, '').length\n });\n }\n }\n for (const capitalizedProperty in summaryCapitalizeObject) {\n if (summaryCapitalizeObject.hasOwnProperty(capitalizedProperty)) {\n if (summaryCapitalizeObject.hasOwnProperty(capitalizedProperty)) {\n const capitalizedPropertyObject =\n summaryCapitalizeObject[capitalizedProperty];\n if (capitalizedPropertyObject.length === 1) {\n // for single params (no duplicates)\n const singlePossibility = capitalizedPropertyObject[0];\n capitalizeObject[capitalizedProperty] =\n singlePossibility[Object.keys(singlePossibility)[0]];\n } else if (capitalizedPropertyObject.length > 1) {\n // defining the closest to lowercase property\n const paramClosestToLowercase = upperCaseCount\n .filter(\n (f) => f.key.toLowerCase() === capitalizedProperty.toLowerCase()\n )\n .reduce((prev, current) => {\n return prev.y < current.y ? prev : current;\n });\n capitalizeObject[paramClosestToLowercase.key.toUpperCase()] =\n obj[paramClosestToLowercase.key];\n }\n }\n }\n }\n for (const property in obj) {\n if (obj.hasOwnProperty(property)) {\n delete obj[property];\n }\n }\n\n for (const property in capitalizeObject) {\n if (capitalizeObject.hasOwnProperty(property)) {\n obj[property] = capitalizeObject[property];\n }\n }\n }\n\n static removeUndefined(obj: object): any {\n const output = {};\n if (ObjectUtils.isObject(obj)) {\n Object.keys(obj)\n .filter((key) => obj[key] !== undefined)\n .forEach((key) => {\n if (ObjectUtils.isObject(obj[key]) || Array.isArray(obj[key])) {\n output[key] = ObjectUtils.removeUndefined(obj[key]);\n } else {\n output[key] = obj[key];\n }\n });\n\n return output;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((o) => ObjectUtils.removeUndefined(o));\n }\n\n return obj;\n }\n\n static removeNull(obj: object): any {\n const output = {};\n if (ObjectUtils.isObject(obj)) {\n Object.keys(obj)\n .filter((key) => obj[key] !== null)\n .forEach((key) => {\n if (ObjectUtils.isObject(obj[key]) || Array.isArray(obj[key])) {\n output[key] = ObjectUtils.removeNull(obj[key]);\n } else {\n output[key] = obj[key];\n }\n });\n\n return output;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((o) => ObjectUtils.removeNull(o));\n }\n\n return obj;\n }\n\n static naturalCompare(a, b, direction = 'asc', nullsFirst?: boolean) {\n if (direction === 'desc') {\n b = [a, (a = b)][0];\n }\n\n // nullsFirst = undefined : end if direction = 'asc', first if direction = 'desc'\n // nullsFirst = true : always first\n // nullsFirst = false : always end\n if (\n a === null ||\n a === '' ||\n a === undefined ||\n b === null ||\n b === '' ||\n b === undefined\n ) {\n const nullScore =\n a === b\n ? 0\n : a === undefined\n ? 3\n : b === undefined\n ? -3\n : a === null\n ? 2\n : b === null\n ? -2\n : a === ''\n ? 1\n : -1;\n if (direction === 'desc') {\n return nullsFirst !== false ? nullScore : nullScore * -1;\n }\n return nullsFirst === true ? nullScore * -1 : nullScore;\n }\n\n const ax = [];\n const bx = [];\n a = '' + a;\n b = '' + b;\n\n a.replace(/(\\d+)|(\\D+)/g, (_, $1, $2) => {\n ax.push([$1 || Infinity, $2 || '']);\n });\n\n b.replace(/(\\d+)|(\\D+)/g, (_, $1, $2) => {\n bx.push([$1 || Infinity, $2 || '']);\n });\n\n while (ax.length && bx.length) {\n const an = ax.shift();\n const bn = bx.shift();\n const nn = an[0] - bn[0] || an[1].localeCompare(bn[1]);\n if (nn) {\n return nn;\n }\n }\n\n return ax.length - bx.length;\n }\n\n /**\n * Return true if two object are equivalent.\n * Objects are considered equivalent if they have the same properties and\n * if all of their properties (first-level only) share the same value.\n * @param obj1 First object\n * @param obj2 Second object\n * @returns Whether two objects arer equivalent\n */\n static objectsAreEquivalent(obj1: object, obj2: object): boolean {\n if (obj1 === obj2) {\n return true;\n }\n\n const obj1Props = Object.getOwnPropertyNames(obj1);\n const obj2Props = Object.getOwnPropertyNames(obj2);\n if (obj1Props.length !== obj2Props.length) {\n return false;\n }\n\n for (const prop of obj1Props) {\n if (obj1[prop] !== obj2[prop]) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Return a new object with an array of keys removed\n * @param obj Source object\n * @param keys Keys to remove\n * @returns A new object\n */\n static removeKeys(obj: object, keys: string[]): object {\n const newObj = Object.keys(obj)\n .filter((key) => keys.indexOf(key) < 0)\n .reduce((_obj, key) => {\n _obj[key] = obj[key];\n return _obj;\n }, {});\n\n return newObj;\n }\n\n static isEmpty(obj: object): boolean {\n return Object.keys(obj).length === 0;\n }\n}\n","export class NumberUtils {\n static roundToNDecimal(num: number, decimal = 3): number {\n const roundFactor = Math.pow(10, decimal);\n return Math.round(num * roundFactor) / roundFactor;\n }\n}\n","/** Utility function to create a K:V from a list of strings */\nexport function strEnum<T extends string>(o: T[]): { [K in T]: K } {\n return o.reduce((res, key) => {\n res[key] = key;\n return res;\n }, Object.create(null));\n}\n","import { DomUtils } from './dom.utils';\n\nconst PATH_PREBUILT_THEMES = 'assets/igo2/core/theming/prebuilt-themes';\nconst LINK_ID = 'theme-styles';\n\nexport function loadTheme(\n doc: Document,\n themeName: string,\n path: string = PATH_PREBUILT_THEMES\n): void {\n const src = `${path}/${themeName}.css`;\n const head = doc.getElementsByTagName('head')[0];\n\n const themeLink = doc.getElementById(LINK_ID) as HTMLLinkElement;\n\n if (themeLink) {\n themeLink.href = src;\n } else {\n createHtmlLink(doc, src, head);\n }\n}\n\nfunction createHtmlLink(doc: Document, src: string, parent: HTMLElement): void {\n const element = DomUtils.create(doc, 'link', {\n id: LINK_ID,\n rel: 'stylesheet',\n href: src\n });\n parent.appendChild(element);\n}\n","type TreeId = string | number;\nexport interface ITreeConfig<T> {\n getChildren: (dataNode: T) => T[] | undefined | null;\n getId: (dataNode: T) => TreeId;\n getLevel: (dataNode: T) => number;\n reverse?: boolean;\n}\n\nexport const TREE_SEPERATOR = '.';\n\nexport class Tree<T> {\n private _data: T[];\n\n getChildren: (dataNode: T) => T[] | undefined | null;\n getId: (dataNode: T) => TreeId;\n getLevel: (dataNode: T) => number;\n\n constructor(\n initialData: T[],\n private config: ITreeConfig<T>\n ) {\n this.getChildren = config.getChildren;\n this.getId = config.getId;\n this.getLevel = config.getLevel;\n\n this._data = this.sortDeep(initialData);\n }\n\n get data(): readonly T[] {\n return this._data;\n }\n\n get flattened(): readonly T[] {\n return this.flatten([...this.data]);\n }\n\n add(...nodes: T[]): T[] {\n this.sortDeep(nodes);\n this._data.unshift(...nodes);\n return nodes;\n }\n\n addBefore(beforeId: string | undefined, ...nodes: T[]): void {\n this.sortDeep(nodes);\n this._addBefore(beforeId, this._data, ...nodes);\n }\n\n remove(...nodes: T[]): T[] {\n return this._remove(...nodes);\n }\n\n clear(): void {\n this._data = [];\n }\n\n exist(node: T): boolean {\n const id = this.getId(node);\n return this.flattened.some((layer) => this.getId(layer) === id);\n }\n\n /**\n * Move a node to a different position\n * @param node\n * @param beforeTo The position of index into the tree. If -1 move at the end\n */\n moveTo(beforeTo: number[], ...nodes: T[]): T[] {\n const clonedBeforeTo = [...beforeTo];\n const lastIndex = clonedBeforeTo.pop();\n const recipient = this.getAncestorAtPosition(clonedBeforeTo);\n const beforeId =\n lastIndex === -1 || lastIndex >= recipient.length\n ? null\n : this.getId(recipient[lastIndex]);\n\n const nodesToMove = nodes.filter((node) => beforeId !== this.getId(node));\n return this.move(beforeId, recipient, ...nodesToMove);\n }\n\n getPosition(node: T): number[] {\n const id = this.getId(node);\n return this._getPosition(id);\n }\n\n private _addBefore(\n beforeId: TreeId | undefined,\n recipient = this._data,\n ...nodes: T[]\n ): T[] {\n if (!beforeId) {\n recipient.push(...nodes);\n return nodes;\n }\n\n const beforeIndex = this.getIndex(beforeId, recipient);\n recipient.splice(beforeIndex, 0, ...nodes);\n\n return nodes;\n }\n\n private _remove(...nodes: T[]): T[] {\n return nodes.reduce((acc: T[], node) => {\n const ancestor = this.getNodeAncestor(node);\n if (!ancestor) {\n return;\n }\n\n const index = this.getIndex(this.getId(node), ancestor);\n if (index === -1) {\n return;\n }\n ancestor.splice(index, 1);\n\n return acc.concat(node);\n }, []);\n }\n\n /**\n * Move an node before an id\n * @param node Node to be move\n * @param recipient\n * @param beforeId\n */\n private move(\n beforeId: TreeId | undefined,\n recipient: T[],\n ...nodes: T[]\n ): T[] {\n this._remove(...nodes);\n return this._addBefore(beforeId, recipient, ...nodes);\n }\n\n private _getPosition(\n id: TreeId,\n ancestorsIndex: number[] = [],\n values = this._data\n ) {\n let indexList: number[];\n values.some((value, index) => {\n if (this.getId(value) === id) {\n indexList = ancestorsIndex.concat(index);\n return true;\n }\n\n const children = this.getChildren(value);\n if (children) {\n const groupIndexList = this._getPosition(\n id,\n ancestorsIndex.concat(index),\n children\n );\n if (groupIndexList) {\n indexList = groupIndexList;\n return true;\n }\n }\n\n return false;\n });\n return indexList;\n }\n\n private getAncestorAtPosition(position: number[]) {\n if (!position.length) {\n return this._data;\n }\n const node = this.getNodeByPosition(position);\n return this.getChildren(node);\n }\n\n /** Recursive */\n private sortDeep(data = this._data): T[] {\n data.forEach((node) => {\n const children = this.getChildren(node);\n if (children) {\n this.sortDeep(children);\n }\n });\n return this.sort(data);\n }\n\n private sort(children: T[]): T[] {\n const sorted = children.sort((a, b) => this.getLevel(a) - this.getLevel(b));\n return this.config.reverse ? sorted.reverse() : sorted;\n }\n\n /** Recursive */\n private _getNodeById(id: string, data = this._data): T {\n let node: T;\n data.some((item) => {\n if (this.getId(item) === id) {\n node = item;\n return true;\n }\n\n const children = this.getChildren(item);\n if (children) {\n node = this._getNodeById(id, children);\n if (node) {\n return true;\n }\n }\n\n return false;\n });\n return node;\n }\n\n getNodeByPosition(indexes: number[]): T {\n if (indexes.length > 1) {\n return indexes.reduce((previousValue: T, index) => {\n const ancestor = previousValue\n ? this.getChildren(previousValue)\n : this._data;\n return this._getByIndex(index, ancestor);\n }, null);\n } else {\n return this._getByIndex(indexes[0]);\n }\n }\n\n private _getByIndex(index: number, ancestor = this._data) {\n return ancestor[index];\n }\n\n private getNodeAncestor(node: T): T[] {\n const id = this.getId(node);\n return this.getAncestorById(id);\n }\n\n /** Recursive */\n private getAncestorById(id: TreeId, data = this._data): T[] | undefined {\n let ancestor: T[];\n data.some((item) => {\n if (this.getId(item) === id) {\n ancestor = data;\n return true;\n }\n\n const children = this.getChildren(item);\n if (children) {\n ancestor = this.getAncestorById(id, children);\n if (ancestor) {\n return true;\n }\n }\n\n return false;\n });\n return ancestor;\n }\n\n /** Recursive */\n private flatten(nodes: T[]): T[] {\n return nodes.reduce((list, node) => {\n const children = this.getChildren(node);\n if (children) {\n const flattened = this.flatten(children);\n list.push(node, ...flattened);\n } else {\n list.push(node);\n }\n return list;\n }, [] as T[]);\n }\n\n private getIndex(id: TreeId, ancestor: T[]): number {\n return ancestor.findIndex((node) => this.getId(node) === id);\n }\n}\n","export function S4() {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n}\n\nexport function uuid() {\n const id = `${S4()}${S4()}-${S4()}-${S4()}-${S4()}-${S4()}${S4()}${S4()}`;\n return id.toLowerCase();\n}\n","import { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nexport enum SubjectStatus {\n Error = 0,\n Done = 1,\n Working = 2,\n Waiting = 3\n}\n\nexport abstract class Watcher {\n public status$ = new Subject<SubjectStatus>();\n protected status$$: Subscription;\n\n get status(): SubjectStatus {\n return this._status;\n }\n set status(value: SubjectStatus) {\n this._status = value;\n this.status$.next(value);\n }\n private _status: SubjectStatus;\n\n protected abstract watch();\n\n protected abstract unwatch();\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n subscribe(callback: Function, scope?: any) {\n this.watch();\n\n this.status$$ = this.status$.pipe(distinctUntilChanged()).subscribe(() => {\n callback.call(scope, this);\n });\n }\n\n unsubscribe() {\n this.unwatch();\n if (this.status$$ !== undefined) {\n this.status$$.unsubscribe();\n this.status$$ = undefined;\n }\n this.status = SubjectStatus.Waiting;\n }\n}\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igo2-utils.mjs","sources":["../../../packages/utils/src/lib/base64.ts","../../../packages/utils/src/lib/cache.utils.ts","../../../packages/utils/src/lib/compression/compression.utils.ts","../../../packages/utils/src/lib/change.interface.ts","../../../packages/utils/src/lib/string-utils.ts","../../../packages/utils/src/lib/change.ts","../../../packages/utils/src/lib/date.utils.ts","../../../packages/utils/src/lib/dom.utils.ts","../../../packages/utils/src/lib/files/excel.ts","../../../packages/utils/src/lib/files/file.ts","../../../packages/utils/src/lib/object-utils.ts","../../../packages/utils/src/lib/number-utils.ts","../../../packages/utils/src/lib/strenum.ts","../../../packages/utils/src/lib/theme.utils.ts","../../../packages/utils/src/lib/tree/tree.ts","../../../packages/utils/src/lib/uuid.ts","../../../packages/utils/src/lib/watcher.ts","../../../packages/utils/src/public_api.ts","../../../packages/utils/src/igo2-utils.ts"],"sourcesContent":["/* eslint-disable */\n\nconst ALPHA =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nexport class Base64 {\n private static PADCHAR: string = '=';\n private static ALPHA: string = ALPHA;\n\n private static getByte(s: string, i: number): number {\n const x = s.charCodeAt(i);\n return x;\n }\n\n private static getByte64(s: string, i: number): number {\n const idx = this.ALPHA.indexOf(s.charAt(i));\n return idx;\n }\n\n public static decode(s: string): string {\n let pads = 0,\n i,\n b10,\n imax = s.length,\n x = [];\n\n s = String(s);\n\n if (imax === 0) {\n return s;\n }\n\n if (s.charAt(imax - 1) === this.PADCHAR) {\n pads = 1;\n if (s.charAt(imax - 2) === this.PADCHAR) {\n pads = 2;\n }\n imax -= 4;\n }\n\n for (i = 0; i < imax; i += 4) {\n b10 =\n (this.getByte64(s, i) << 18) |\n (this.getByte64(s, i + 1) << 12) |\n (this.getByte64(s, i + 2) << 6) |\n this.getByte64(s, i + 3);\n x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255, b10 & 255));\n }\n\n switch (pads) {\n case 1:\n b10 =\n (this.getByte64(s, i) << 18) |\n (this.getByte64(s, i + 1) << 12) |\n (this.getByte64(s, i + 2) << 6);\n x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 255));\n break;\n case 2:\n b10 = (this.getByte64(s, i) << 18) | (this.getByte64(s, i + 1) << 12);\n x.push(String.fromCharCode(b10 >> 16));\n break;\n }\n\n return x.join('');\n }\n\n public static encode(s: string): string {\n s = String(s);\n\n let i,\n b10,\n x = [],\n imax = s.length - (s.length % 3);\n\n if (s.length === 0) {\n return s;\n }\n\n for (i = 0; i < imax; i += 3) {\n b10 =\n (this.getByte(s, i) << 16) |\n (this.getByte(s, i + 1) << 8) |\n this.getByte(s, i + 2);\n x.push(this.ALPHA.charAt(b10 >> 18));\n x.push(this.ALPHA.charAt((b10 >> 12) & 63));\n x.push(this.ALPHA.charAt((b10 >> 6) & 63));\n x.push(this.ALPHA.charAt(b10 & 63));\n }\n\n switch (s.length - imax) {\n case 1:\n b10 = this.getByte(s, i) << 16;\n x.push(\n this.ALPHA.charAt(b10 >> 18) +\n this.ALPHA.charAt((b10 >> 12) & 63) +\n this.PADCHAR +\n this.PADCHAR\n );\n break;\n case 2:\n b10 = (this.getByte(s, i) << 16) | (this.getByte(s, i + 1) << 8);\n x.push(\n this.ALPHA.charAt(b10 >> 18) +\n this.ALPHA.charAt((b10 >> 12) & 63) +\n this.ALPHA.charAt((b10 >> 6) & 63) +\n this.PADCHAR\n );\n break;\n }\n\n return x.join('');\n }\n}\n","export function customCacheHasher(parameters: unknown[]): unknown[] {\n return parameters.map((param) => {\n if (\n typeof param === 'object' &&\n param != null &&\n typeof param.toString === 'function'\n ) {\n return param.toString();\n }\n return param !== undefined ? JSON.parse(JSON.stringify(param)) : param;\n });\n}\n","import { Observable, Observer } from 'rxjs';\n\nimport { CompressedData } from './compressedData.interface';\n\nfunction getNumber(v: number, endposition: number, length: number) {\n const mask = (1 << length) - 1;\n return (v >> endposition) & mask;\n}\n\nexport class Compression {\n private base64Index = new Map<string, number>();\n private indexBase64 = new Map<number, string>();\n\n constructor() {\n this.generateBase64Index();\n }\n\n private generateBase64Index() {\n // https://fr.wikipedia.org/wiki/Base64\n // A-Z => [0, 25]\n for (let i = 0; i < 26; i++) {\n this.base64Index.set(String.fromCharCode('A'.charCodeAt(0) + i), i);\n this.indexBase64.set(i, String.fromCharCode('A'.charCodeAt(0) + i));\n }\n // a-z => [26, 51]\n for (let i = 0; i < 26; i++) {\n this.base64Index.set(String.fromCharCode('a'.charCodeAt(0) + i), i + 26);\n this.indexBase64.set(i + 26, String.fromCharCode('a'.charCodeAt(0) + i));\n }\n // 0-9 => [52, 61]\n for (let i = 0; i < 10; i++) {\n this.base64Index.set(String.fromCharCode('0'.charCodeAt(0) + i), i + 52);\n this.indexBase64.set(i + 52, String.fromCharCode('0'.charCodeAt(0) + i));\n }\n // + / => [62, 63]\n this.base64Index.set('+', 62);\n this.base64Index.set('/', 63);\n this.indexBase64.set(62, '+');\n this.indexBase64.set(63, '/');\n }\n\n compressBlob(blob: Blob): Observable<CompressedData> {\n if (!blob) {\n return;\n }\n\n const observable = new Observable((observer: Observer<CompressedData>) => {\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n reader.onload = () => {\n const base64 = reader.result.valueOf() as string;\n const text64 = base64.substr(base64.indexOf(',') + 1);\n const compressed = this.compressStringBase64(text64);\n const compressedData: CompressedData = {\n length: text64.length,\n type: blob.type,\n object: compressed\n };\n observer.next(compressedData);\n };\n });\n return observable;\n }\n\n decompressBlob(compressedData: CompressedData): Blob {\n const object = compressedData.object;\n const length = compressedData.length;\n const decompressed: string = this.decompressStringBase64(object, length);\n const byteCharacters = atob(decompressed);\n const byteNumbers = new Array(byteCharacters.length);\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n const byteArray = new Uint8Array(byteNumbers);\n const blob = new Blob([byteArray], { type: compressedData.type });\n return blob;\n }\n\n private compressStringBase64(s: string): string {\n let out = '';\n let bits = 16;\n let chr = 0;\n let rem = 0;\n for (const c of s) {\n const value = this.base64Index.get(c);\n if (bits > 6) {\n bits -= 6;\n chr += value << bits;\n } else {\n rem = 6 - bits;\n chr += value >> rem;\n out += String.fromCharCode(chr);\n chr = value << (16 - rem);\n bits = 16 - rem;\n }\n }\n if (s.length % 8 !== 0) {\n out += String.fromCharCode(chr);\n }\n return String.fromCharCode(9731) + out;\n }\n\n private decompressStringBase64(c: string, length: number): string {\n if (!c) {\n return;\n }\n\n if (c.charCodeAt(0) !== 9731) {\n return c;\n }\n\n let chr = 0;\n let rem = 0;\n let bits = 16;\n let out = '';\n let j = 1;\n let value = c.charCodeAt(j);\n for (let i = 0; i < length; i++) {\n if (bits > 6) {\n bits -= 6;\n chr = getNumber(value, bits, 6);\n out += this.indexBase64.get(chr);\n } else {\n rem = 6 - bits;\n chr = getNumber(value, 0, bits) << rem;\n value = c.charCodeAt(++j);\n chr += getNumber(value, 16 - rem, rem);\n out += this.indexBase64.get(chr);\n bits = 16 - rem;\n }\n }\n return out;\n }\n}\n","export enum ChangeType {\n ADDED = 'added',\n DELETED = 'deleted',\n MODIFIED = 'modified'\n}\n\nexport interface Change {\n type: ChangeType;\n keysChanged?: {\n key: string;\n newValue: any;\n oldValue: any;\n }[];\n}\n\nexport interface GroupingChanges {\n added: ChangeItem[];\n deleted: ChangeItem[];\n modified: ChangeItem[];\n}\n\nexport interface ChangeItem {\n change: Change;\n value: any;\n oldValue?: any;\n newValue?: any;\n}\n","export class StringUtils {\n static diff(s1: string, s2: string, p = 4): string {\n if (!s1 && !s2) {\n return '';\n }\n if (!s1) {\n return '<span class=\"inserted\">' + s2 + '</span>';\n }\n if (!s2) {\n return '<span class=\"deleted\">' + s1 + '</span>';\n }\n s1 = s1.toString();\n s2 = s2.toString();\n const changeData = StringUtils.getChanges(s1, s2, '', p);\n const nextS = s2.slice(\n changeData.mtc.length + changeData.ins.length + changeData.sbs.length\n ); // remaining part of \"s\"\n const nextThis = s1.slice(\n changeData.mtc.length + changeData.del.length + changeData.sbs.length\n ); // remaining part of \"this\"\n let result = ''; // the glorious result\n if (changeData.del.length > 0) {\n changeData.del = '<span class=\"deleted\">' + changeData.del + '</span>';\n }\n if (changeData.ins.length > 0) {\n changeData.ins = '<span class=\"inserted\">' + changeData.ins + '</span>';\n }\n result = changeData.mtc + changeData.del + changeData.ins + changeData.sbs;\n result +=\n nextThis !== '' || nextS !== ''\n ? StringUtils.diff(nextThis, nextS, p)\n : '';\n return result;\n }\n\n private static getMatchingSubstring(s, l, m) {\n // returns the first matching substring in-between the two strings\n let i = 0;\n let match = false;\n const slen = s.length;\n const o = { fis: slen, mtc: m, sbs: '' }; // temporary object used to construct the cd (change data) object\n\n while (i < slen) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n l[i] === s[i]\n ? match\n ? (o.sbs += s[i]) // o.sbs holds the matching substring itsef\n : ((match = true), (o.fis = i), (o.sbs = s[i]))\n : match\n ? (i = slen) // stop after the first found substring\n : // eslint-disable-next-line no-self-assign\n (i = i);\n ++i;\n }\n return o;\n }\n\n private static getChanges(s1, s2, m, p) {\n const isThisLonger = s1.length >= s1.length ? true : false;\n let [longer, shorter] = isThisLonger ? [s1, s2] : [s2, s1]; // assignment of longer and shorter by es6 destructuring\n let bi = 0; // base index designating the index of first mismacthing character in both strings\n\n while (shorter[bi] === longer[bi] && bi < shorter.length) {\n ++bi;\n } // make bi the index of first mismatching character\n longer = longer.split('').slice(bi); // as the longer string will be rotated it is converted into array\n shorter = shorter.slice(bi); // shorter and longer now starts from the first mismatching character\n\n const len = longer.length; // length of the longer string\n let cd: any = {\n fis: shorter.length, // the index of matching string in the shorter string\n fil: len, // the index of matching string in the longer string\n sbs: '', // the matching substring itself\n mtc: m + s2.slice(0, bi)\n }; // if exists mtc holds the matching string at the front\n let sub: any = { sbs: '' }; // returned substring per 1 character rotation of the longer string\n\n if (shorter !== '') {\n for (let rc = 0; rc < len && sub.sbs.length < p; rc++) {\n // rc -> rotate count, p -> precision factor\n sub = StringUtils.getMatchingSubstring(\n shorter,\n StringUtils.rotateArray(longer, rc),\n cd.mtc\n ); // rotate longer string 1 char and get substring\n sub.fil =\n rc < len - sub.fis\n ? sub.fis + rc // mismatch is longer than the mismatch in short\n : sub.fis - len + rc; // mismatch is shorter than the mismatch in short\n if (sub.sbs.length > cd.sbs.length) {\n cd = sub; // only keep the one with the longest substring.\n }\n }\n }\n // insert the mismatching delete subsrt and insert substr to the cd object and attach the previous substring\n [cd.del, cd.ins] = isThisLonger\n ? [longer.slice(0, cd.fil).join(''), shorter.slice(0, cd.fis)]\n : [shorter.slice(0, cd.fis), longer.slice(0, cd.fil).join('')];\n return cd.del.indexOf(' ') === -1 ||\n cd.ins.indexOf(' ') === -1 ||\n cd.del === '' ||\n cd.ins === '' ||\n cd.sbs === ''\n ? cd\n : StringUtils.getChanges(cd.del, cd.ins, cd.mtc, p);\n }\n\n private static rotateArray(array, n) {\n const len = array.length;\n const res = new Array(array.length);\n if (n % len === 0) {\n return array.slice();\n } else {\n for (let i = 0; i < len; i++) {\n res[i] = array[(i + (len + (n % len))) % len];\n }\n }\n return res;\n }\n\n static isValidNumber(value: string): boolean {\n return !isNaN(Number(value));\n }\n\n static isOctalNumber(value: string): boolean {\n return (\n StringUtils.isValidNumber(value) &&\n value.startsWith('0') &&\n value.length > 1\n );\n }\n}\n","import { ChangeType, GroupingChanges } from './change.interface';\nimport { StringUtils } from './string-utils';\n\nexport class ChangeUtils {\n static findChanges(\n obj1: any[],\n obj2: any[],\n ignoreKeys: string[] = []\n ): GroupingChanges {\n const items: GroupingChanges = {\n added: [],\n deleted: [],\n modified: []\n };\n\n if (!obj1 || !obj2) {\n return items;\n }\n\n const obj1Clone: any = [...obj1];\n const obj2Clone: any = [...obj2];\n\n for (const fromItem of obj1Clone) {\n const index = obj2Clone.findIndex((s) => s.id === fromItem.id);\n\n if (index === -1) {\n items.deleted.push({\n change: { type: ChangeType.DELETED },\n value: fromItem\n });\n continue;\n }\n\n const toItem = obj2Clone.splice(index, 1)[0];\n const fromItemClone = JSON.parse(JSON.stringify(fromItem));\n const toItemClone = JSON.parse(JSON.stringify(toItem));\n\n const keysChanged = ChangeUtils.compareObject(\n fromItemClone,\n toItemClone,\n undefined,\n ignoreKeys\n );\n\n if (keysChanged.length) {\n items.modified.push({\n change: {\n type: ChangeType.MODIFIED,\n keysChanged\n },\n value: fromItemClone,\n oldValue: fromItem,\n newValue: toItem\n });\n }\n }\n\n items.added = obj2Clone.map((itemAdded) => {\n return {\n change: { type: ChangeType.ADDED },\n value: itemAdded\n };\n });\n\n return items;\n }\n\n private static compareObject(fromItem, toItem, baseKey?, ignoreKeys = []) {\n const fromItemClone = JSON.parse(JSON.stringify(fromItem));\n const toItemClone = JSON.parse(JSON.stringify(toItem));\n\n const keys: any = new Set([\n ...Object.keys(fromItem),\n ...Object.keys(toItem)\n ]);\n let keysChanged = [];\n keys.forEach((key) => {\n const keyString = baseKey ? `${baseKey}.${key}` : key;\n if (ignoreKeys.indexOf(keyString) !== -1) {\n return;\n }\n\n if (Array.isArray(fromItem[key])) {\n fromItem[key] = fromItem[key].join(',<br>');\n }\n if (Array.isArray(toItem[key])) {\n toItem[key] = toItem[key].join(',<br>');\n }\n\n if (\n typeof fromItem[key] === 'object' &&\n typeof toItem[key] === 'object' &&\n fromItem[key] !== null &&\n toItem[key] !== null\n ) {\n keysChanged = keysChanged.concat(\n this.compareObject(fromItem[key], toItem[key], keyString)\n );\n } else {\n if (fromItem[key] !== toItem[key]) {\n keysChanged.push({\n key: keyString,\n oldValue: fromItemClone[key],\n newValue: toItemClone[key]\n });\n fromItem[key] = StringUtils.diff(fromItem[key], toItem[key]);\n }\n }\n });\n\n return keysChanged;\n }\n}\n","const ISO8601_REGEX = new RegExp(\n '(d{4}-[01]d-[0-3]dT[0-2]d:[0-5]d:[0-5]d.d+)|(d{4}-[01]d-[0-3]dT[0-2]d:[0-5]d:[0-5]d)|(d{4}-[01]d-[0-3]dT[0-2]d:[0-5]d)'\n);\nconst ISO8601_UTCTIME_REGEX = new RegExp(\n '(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\\\.[0-9]+)?(Z)?'\n);\n\nexport function isIsoDate(value: string): boolean {\n if (!ISO8601_REGEX.test(value) && !ISO8601_UTCTIME_REGEX.test(value)) {\n return false;\n }\n const d = new Date(value);\n return d instanceof Date && !isNaN(d.getTime());\n}\n\nexport const TimeFrame = ['now', 'today'] as const;\nexport type TimeFrame = (typeof TimeFrame)[number];\n\nexport function isTimeFrame(\n value: Date | TimeFrame | string | number\n): value is TimeFrame {\n return (\n typeof value === 'string' &&\n TimeFrame.includes(value.toLowerCase() as TimeFrame)\n );\n}\n\nexport function resolveDate(input?: Date | TimeFrame): Date | undefined {\n if (isTimeFrame(input)) {\n return new Date();\n }\n return input instanceof Date ? input : undefined;\n}\n","export class DomUtils {\n static create<K extends keyof HTMLElementTagNameMap>(\n doc: Document,\n tagName: K,\n options?: Partial<HTMLElementTagNameMap[K]>\n ): HTMLElementTagNameMap[K] {\n const el = doc.createElement(tagName);\n\n for (const key in options) {\n el[key] = options[key];\n }\n\n return el;\n }\n\n static remove(node: HTMLElement | SVGElement): void {\n if (!node.parentNode) {\n return;\n }\n node.parentNode.removeChild(node);\n }\n}\n","import type {\n ColInfo,\n JSON2SheetOpts,\n WorkBook,\n WorkSheet,\n WritingOptions\n} from 'xlsx';\n\nexport async function createExcelWorkBook(\n workSheet?: WorkSheet,\n workSheetName?: string\n): Promise<WorkBook> {\n const { utils } = await import('xlsx');\n\n return utils.book_new(workSheet, workSheetName);\n}\nexport async function addExcelSheetToWorkBook<T = Record<string, unknown>>(\n title: string,\n rows: T[],\n workBook: WorkBook,\n opts?: {\n json2SheetOpts?: JSON2SheetOpts;\n bookAppendSheetOpts?: { roll?: boolean };\n }\n): Promise<void> {\n const { utils } = await import('xlsx');\n\n const worksheet = utils.json_to_sheet(rows, opts?.json2SheetOpts);\n\n /* calculate column width */\n if (rows?.length) {\n worksheet['!cols'] = getColumnsInfo(rows);\n }\n\n const SHEET_NAME_MAX_LENGTH = 31;\n let sheetName =\n title.length >= SHEET_NAME_MAX_LENGTH\n ? title.substring(0, SHEET_NAME_MAX_LENGTH)\n : title;\n\n if (workBook.SheetNames.includes(sheetName)) {\n sheetName = `${sheetName.substring(0, SHEET_NAME_MAX_LENGTH - 3)}_${workBook.SheetNames.length}`;\n }\n\n utils.book_append_sheet(\n workBook,\n worksheet,\n sheetName,\n opts?.bookAppendSheetOpts?.roll\n );\n}\n\nexport async function writeExcelFile(\n workBook: WorkBook,\n filename: string,\n opts?: WritingOptions\n) {\n const cleanedFileName = filename.toLowerCase().endsWith('.xlsx')\n ? filename.slice(0, -5)\n : filename;\n const { writeFile } = await import('xlsx');\n writeFile(workBook, `${cleanedFileName}.xlsx`, opts);\n}\n\nfunction getColumnsInfo<T = Record<string, unknown>>(rows: T[]): ColInfo[] {\n const columns = Object.keys(rows[0]);\n return columns.map((column) => ({\n wch: getColumnMaxWidth(column, rows)\n }));\n}\n\nfunction getColumnMaxWidth<T = Record<string, unknown>>(\n column: string,\n rows: T[]\n): number {\n return rows.reduce(\n (width, row) => Math.max(width, row[column]?.toString().length ?? 0),\n column.length\n );\n}\n","/**\n * Trigger download of a file\n *\n * @param content File content\n * @param mimeType File mime type\n * @param fileName File name\n */\nexport function downloadContent(\n content: string,\n mimeType: string,\n fileName: string\n) {\n const uri = `data:${mimeType},${encodeURIComponent(content)}`;\n downloadFromUri(uri, fileName);\n}\n\nexport function downloadBlob(blob: Blob, fileName: string) {\n const url = window.URL.createObjectURL(blob);\n downloadFromUri(url, fileName);\n}\n\n/**\n * Trigger download of a file\n *\n * @param content File content\n * @param mimeType File mime type\n * @param fileName File name\n */\nexport function downloadFromUri(uri: string, fileName: string) {\n const element = document.createElement('a');\n element.setAttribute('href', uri);\n element.setAttribute('download', fileName);\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n}\n\n/**\n * Validate if string is valid json object\n * @param jsonString\n * @return boolean\n */\nexport function isValidJSON(jsonString: string): boolean {\n try {\n return JSON.parse(jsonString) && !!jsonString;\n } catch {\n return false;\n }\n}\n","/* eslint-disable no-prototype-builtins */\nexport class ObjectUtils {\n static resolve(obj: object, key: string): any {\n const keysArray = key.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n let current = obj;\n while (keysArray.length) {\n if (typeof current !== 'object') {\n return undefined;\n }\n current = current[keysArray.shift()];\n }\n\n return current;\n }\n\n static isObject(item: object) {\n return (\n item &&\n typeof item === 'object' &&\n !Array.isArray(item) &&\n item !== null &&\n !(item instanceof Date)\n );\n }\n\n static mergeDeep(\n target: object,\n source: object,\n ignoreUndefined = false\n ): any {\n const output = Object.assign({}, target);\n if (ObjectUtils.isObject(target) && ObjectUtils.isObject(source)) {\n Object.keys(source)\n .filter((key) => !ignoreUndefined || source[key] !== undefined)\n .forEach((key) => {\n if (ObjectUtils.isObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] });\n } else {\n output[key] = ObjectUtils.mergeDeep(\n target[key],\n source[key],\n ignoreUndefined\n );\n }\n } else {\n Object.assign(output, { [key]: source[key] });\n }\n });\n }\n return output;\n }\n\n static copyDeep(src): any {\n const target = Array.isArray(src) ? [] : {};\n for (const prop in src) {\n if (src.hasOwnProperty(prop)) {\n const value = src[prop];\n if (value && typeof value === 'object') {\n target[prop] = this.copyDeep(value);\n } else {\n target[prop] = value;\n }\n }\n }\n return target;\n }\n\n static removeDuplicateCaseInsensitive(obj: object) {\n const summaryCapitalizeObject = {};\n const capitalizeObject = {};\n const upperCaseCount = [];\n\n for (const property in obj) {\n if (obj.hasOwnProperty(property)) {\n const upperCaseProperty = property.toUpperCase();\n if (!summaryCapitalizeObject.hasOwnProperty(upperCaseProperty)) {\n summaryCapitalizeObject[upperCaseProperty] = [\n { [property]: obj[property] }\n ];\n } else {\n summaryCapitalizeObject[upperCaseProperty].push({\n [property]: obj[property]\n });\n }\n // counting the number of uppercase lettersMna\n upperCaseCount.push({\n key: property,\n count: property.replace(/[^A-Z]/g, '').length\n });\n }\n }\n for (const capitalizedProperty in summaryCapitalizeObject) {\n if (summaryCapitalizeObject.hasOwnProperty(capitalizedProperty)) {\n if (summaryCapitalizeObject.hasOwnProperty(capitalizedProperty)) {\n const capitalizedPropertyObject =\n summaryCapitalizeObject[capitalizedProperty];\n if (capitalizedPropertyObject.length === 1) {\n // for single params (no duplicates)\n const singlePossibility = capitalizedPropertyObject[0];\n capitalizeObject[capitalizedProperty] =\n singlePossibility[Object.keys(singlePossibility)[0]];\n } else if (capitalizedPropertyObject.length > 1) {\n // defining the closest to lowercase property\n const paramClosestToLowercase = upperCaseCount\n .filter(\n (f) => f.key.toLowerCase() === capitalizedProperty.toLowerCase()\n )\n .reduce((prev, current) => {\n return prev.y < current.y ? prev : current;\n });\n capitalizeObject[paramClosestToLowercase.key.toUpperCase()] =\n obj[paramClosestToLowercase.key];\n }\n }\n }\n }\n for (const property in obj) {\n if (obj.hasOwnProperty(property)) {\n delete obj[property];\n }\n }\n\n for (const property in capitalizeObject) {\n if (capitalizeObject.hasOwnProperty(property)) {\n obj[property] = capitalizeObject[property];\n }\n }\n }\n\n static removeUndefined(obj: object): any {\n const output = {};\n if (ObjectUtils.isObject(obj)) {\n Object.keys(obj)\n .filter((key) => obj[key] !== undefined)\n .forEach((key) => {\n if (ObjectUtils.isObject(obj[key]) || Array.isArray(obj[key])) {\n output[key] = ObjectUtils.removeUndefined(obj[key]);\n } else {\n output[key] = obj[key];\n }\n });\n\n return output;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((o) => ObjectUtils.removeUndefined(o));\n }\n\n return obj;\n }\n\n static removeNull(obj: object): any {\n const output = {};\n if (ObjectUtils.isObject(obj)) {\n Object.keys(obj)\n .filter((key) => obj[key] !== null)\n .forEach((key) => {\n if (ObjectUtils.isObject(obj[key]) || Array.isArray(obj[key])) {\n output[key] = ObjectUtils.removeNull(obj[key]);\n } else {\n output[key] = obj[key];\n }\n });\n\n return output;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((o) => ObjectUtils.removeNull(o));\n }\n\n return obj;\n }\n\n static naturalCompare(a, b, direction = 'asc', nullsFirst?: boolean) {\n if (direction === 'desc') {\n b = [a, (a = b)][0];\n }\n\n // nullsFirst = undefined : end if direction = 'asc', first if direction = 'desc'\n // nullsFirst = true : always first\n // nullsFirst = false : always end\n if (\n a === null ||\n a === '' ||\n a === undefined ||\n b === null ||\n b === '' ||\n b === undefined\n ) {\n const nullScore =\n a === b\n ? 0\n : a === undefined\n ? 3\n : b === undefined\n ? -3\n : a === null\n ? 2\n : b === null\n ? -2\n : a === ''\n ? 1\n : -1;\n if (direction === 'desc') {\n return nullsFirst !== false ? nullScore : nullScore * -1;\n }\n return nullsFirst === true ? nullScore * -1 : nullScore;\n }\n\n const ax = [];\n const bx = [];\n a = '' + a;\n b = '' + b;\n\n a.replace(/(\\d+)|(\\D+)/g, (_, $1, $2) => {\n ax.push([$1 || Infinity, $2 || '']);\n });\n\n b.replace(/(\\d+)|(\\D+)/g, (_, $1, $2) => {\n bx.push([$1 || Infinity, $2 || '']);\n });\n\n while (ax.length && bx.length) {\n const an = ax.shift();\n const bn = bx.shift();\n const nn = an[0] - bn[0] || an[1].localeCompare(bn[1]);\n if (nn) {\n return nn;\n }\n }\n\n return ax.length - bx.length;\n }\n\n /**\n * Return true if two object are equivalent.\n * Objects are considered equivalent if they have the same properties and\n * if all of their properties (first-level only) share the same value.\n * @param obj1 First object\n * @param obj2 Second object\n * @returns Whether two objects arer equivalent\n */\n static objectsAreEquivalent(obj1: object, obj2: object): boolean {\n if (obj1 === obj2) {\n return true;\n }\n\n const obj1Props = Object.getOwnPropertyNames(obj1);\n const obj2Props = Object.getOwnPropertyNames(obj2);\n if (obj1Props.length !== obj2Props.length) {\n return false;\n }\n\n for (const prop of obj1Props) {\n if (obj1[prop] !== obj2[prop]) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Return a new object with an array of keys removed\n * @param obj Source object\n * @param keys Keys to remove\n * @returns A new object\n */\n static removeKeys(obj: object, keys: string[]): object {\n const newObj = Object.keys(obj)\n .filter((key) => keys.indexOf(key) < 0)\n .reduce((_obj, key) => {\n _obj[key] = obj[key];\n return _obj;\n }, {});\n\n return newObj;\n }\n\n static isEmpty(obj: object): boolean {\n return Object.keys(obj).length === 0;\n }\n}\n","export class NumberUtils {\n static roundToNDecimal(num: number, decimal = 3): number {\n const roundFactor = Math.pow(10, decimal);\n return Math.round(num * roundFactor) / roundFactor;\n }\n}\n","/** Utility function to create a K:V from a list of strings */\nexport function strEnum<T extends string>(o: T[]): { [K in T]: K } {\n return o.reduce((res, key) => {\n res[key] = key;\n return res;\n }, Object.create(null));\n}\n","import { DomUtils } from './dom.utils';\n\nconst PATH_PREBUILT_THEMES = 'igo2/core/theming/prebuilt-themes';\nconst LINK_ID = 'theme-styles';\n\nexport function loadTheme(\n doc: Document,\n themeName: string,\n path: string = PATH_PREBUILT_THEMES\n): void {\n const src = `${path}/${themeName}.css`;\n const head = doc.getElementsByTagName('head')[0];\n\n const themeLink = doc.getElementById(LINK_ID) as HTMLLinkElement;\n\n if (themeLink) {\n themeLink.href = src;\n } else {\n createHtmlLink(doc, src, head);\n }\n}\n\nfunction createHtmlLink(doc: Document, src: string, parent: HTMLElement): void {\n const element = DomUtils.create(doc, 'link', {\n id: LINK_ID,\n rel: 'stylesheet',\n href: src\n });\n parent.appendChild(element);\n}\n","type TreeId = string | number;\nexport interface ITreeConfig<T> {\n getChildren: (dataNode: T) => T[] | undefined | null;\n getId: (dataNode: T) => TreeId;\n getLevel: (dataNode: T) => number;\n reverse?: boolean;\n}\n\nexport const TREE_SEPERATOR = '.';\n\nexport class Tree<T> {\n private _data: T[];\n\n getChildren: (dataNode: T) => T[] | undefined | null;\n getId: (dataNode: T) => TreeId;\n getLevel: (dataNode: T) => number;\n\n constructor(\n initialData: T[],\n private config: ITreeConfig<T>\n ) {\n this.getChildren = config.getChildren;\n this.getId = config.getId;\n this.getLevel = config.getLevel;\n\n this._data = this.sortDeep(initialData);\n }\n\n get data(): readonly T[] {\n return this._data;\n }\n\n get flattened(): readonly T[] {\n return this.flatten([...this.data]);\n }\n\n add(...nodes: T[]): T[] {\n this.sortDeep(nodes);\n this._data.unshift(...nodes);\n return nodes;\n }\n\n addBefore(beforeId: string | undefined, ...nodes: T[]): void {\n this.sortDeep(nodes);\n this._addBefore(beforeId, this._data, ...nodes);\n }\n\n remove(...nodes: T[]): T[] {\n return this._remove(...nodes);\n }\n\n clear(): void {\n this._data = [];\n }\n\n exist(node: T): boolean {\n const id = this.getId(node);\n return this.flattened.some((layer) => this.getId(layer) === id);\n }\n\n /**\n * Move a node to a different position\n * @param node\n * @param beforeTo The position of index into the tree. If -1 move at the end\n */\n moveTo(beforeTo: number[], ...nodes: T[]): T[] {\n const clonedBeforeTo = [...beforeTo];\n const lastIndex = clonedBeforeTo.pop();\n const recipient = this.getAncestorAtPosition(clonedBeforeTo);\n const beforeId =\n lastIndex === -1 || lastIndex >= recipient.length\n ? null\n : this.getId(recipient[lastIndex]);\n\n const nodesToMove = nodes.filter((node) => beforeId !== this.getId(node));\n return this.move(beforeId, recipient, ...nodesToMove);\n }\n\n getPosition(node: T): number[] {\n const id = this.getId(node);\n return this._getPosition(id);\n }\n\n private _addBefore(\n beforeId: TreeId | undefined,\n recipient = this._data,\n ...nodes: T[]\n ): T[] {\n if (!beforeId) {\n recipient.push(...nodes);\n return nodes;\n }\n\n const beforeIndex = this.getIndex(beforeId, recipient);\n recipient.splice(beforeIndex, 0, ...nodes);\n\n return nodes;\n }\n\n private _remove(...nodes: T[]): T[] {\n return nodes.reduce((acc: T[], node) => {\n const ancestor = this.getNodeAncestor(node);\n if (!ancestor) {\n return;\n }\n\n const index = this.getIndex(this.getId(node), ancestor);\n if (index === -1) {\n return;\n }\n ancestor.splice(index, 1);\n\n return acc.concat(node);\n }, []);\n }\n\n /**\n * Move an node before an id\n * @param node Node to be move\n * @param recipient\n * @param beforeId\n */\n private move(\n beforeId: TreeId | undefined,\n recipient: T[],\n ...nodes: T[]\n ): T[] {\n this._remove(...nodes);\n return this._addBefore(beforeId, recipient, ...nodes);\n }\n\n private _getPosition(\n id: TreeId,\n ancestorsIndex: number[] = [],\n values = this._data\n ) {\n let indexList: number[];\n values.some((value, index) => {\n if (this.getId(value) === id) {\n indexList = ancestorsIndex.concat(index);\n return true;\n }\n\n const children = this.getChildren(value);\n if (children) {\n const groupIndexList = this._getPosition(\n id,\n ancestorsIndex.concat(index),\n children\n );\n if (groupIndexList) {\n indexList = groupIndexList;\n return true;\n }\n }\n\n return false;\n });\n return indexList;\n }\n\n private getAncestorAtPosition(position: number[]) {\n if (!position.length) {\n return this._data;\n }\n const node = this.getNodeByPosition(position);\n return this.getChildren(node);\n }\n\n /** Recursive */\n private sortDeep(data = this._data): T[] {\n data.forEach((node) => {\n const children = this.getChildren(node);\n if (children) {\n this.sortDeep(children);\n }\n });\n return this.sort(data);\n }\n\n private sort(children: T[]): T[] {\n const sorted = children.sort((a, b) => this.getLevel(a) - this.getLevel(b));\n return this.config.reverse ? sorted.reverse() : sorted;\n }\n\n /** Recursive */\n private _getNodeById(id: string, data = this._data): T {\n let node: T;\n data.some((item) => {\n if (this.getId(item) === id) {\n node = item;\n return true;\n }\n\n const children = this.getChildren(item);\n if (children) {\n node = this._getNodeById(id, children);\n if (node) {\n return true;\n }\n }\n\n return false;\n });\n return node;\n }\n\n getNodeByPosition(indexes: number[]): T {\n if (indexes.length > 1) {\n return indexes.reduce((previousValue: T, index) => {\n const ancestor = previousValue\n ? this.getChildren(previousValue)\n : this._data;\n return this._getByIndex(index, ancestor);\n }, null);\n } else {\n return this._getByIndex(indexes[0]);\n }\n }\n\n private _getByIndex(index: number, ancestor = this._data) {\n return ancestor[index];\n }\n\n private getNodeAncestor(node: T): T[] {\n const id = this.getId(node);\n return this.getAncestorById(id);\n }\n\n /** Recursive */\n private getAncestorById(id: TreeId, data = this._data): T[] | undefined {\n let ancestor: T[];\n data.some((item) => {\n if (this.getId(item) === id) {\n ancestor = data;\n return true;\n }\n\n const children = this.getChildren(item);\n if (children) {\n ancestor = this.getAncestorById(id, children);\n if (ancestor) {\n return true;\n }\n }\n\n return false;\n });\n return ancestor;\n }\n\n /** Recursive */\n private flatten(nodes: T[]): T[] {\n return nodes.reduce((list, node) => {\n const children = this.getChildren(node);\n if (children) {\n const flattened = this.flatten(children);\n list.push(node, ...flattened);\n } else {\n list.push(node);\n }\n return list;\n }, [] as T[]);\n }\n\n private getIndex(id: TreeId, ancestor: T[]): number {\n return ancestor.findIndex((node) => this.getId(node) === id);\n }\n}\n","export function S4() {\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n}\n\nexport function uuid() {\n const id = `${S4()}${S4()}-${S4()}-${S4()}-${S4()}-${S4()}${S4()}${S4()}`;\n return id.toLowerCase();\n}\n","import { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nexport enum SubjectStatus {\n Error = 0,\n Done = 1,\n Working = 2,\n Waiting = 3\n}\n\nexport abstract class Watcher {\n public status$ = new Subject<SubjectStatus>();\n protected status$$: Subscription;\n\n get status(): SubjectStatus {\n return this._status;\n }\n set status(value: SubjectStatus) {\n this._status = value;\n this.status$.next(value);\n }\n private _status: SubjectStatus;\n\n protected abstract watch();\n\n protected abstract unwatch();\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n subscribe(callback: Function, scope?: any) {\n this.watch();\n\n this.status$$ = this.status$.pipe(distinctUntilChanged()).subscribe(() => {\n callback.call(scope, this);\n });\n }\n\n unsubscribe() {\n this.unwatch();\n if (this.status$$ !== undefined) {\n this.status$$.unsubscribe();\n this.status$$ = undefined;\n }\n this.status = SubjectStatus.Waiting;\n }\n}\n","/*\n * Public API Surface of utils\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED