UNPKG

2.88 kBSource Map (JSON)View Raw
1{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../src/lib/utils/array.ts"],"names":[],"mappings":";;AAMA,SAAgB,oBAAoB,CAAiC,GAAQ,EAAE,IAAO;IAClF,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzE,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC;AACf,CAAC;AAJD,oDAIC;AASD,SAAgB,mBAAmB,CAAI,GAAiB,EAAE,SAA+B;IACrF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QAClB,OAAO,CAAC,CAAC,CAAC;KACb;IAED,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAEnC,OAAO,IAAI,GAAG,GAAG,EAAE;QACf,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;YACrB,IAAI,GAAG,GAAG,CAAC;SACd;aAAM;YACH,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;SACjB;KACJ;IAED,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAjBD,kDAiBC;AAQD,SAAgB,eAAe,CAAI,GAAoB,EAAE,IAAO;IAC5D,IAAI,CAAC,GAAG,EAAE;QACN,OAAO;KACV;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QACd,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACxB;AACL,CAAC;AARD,0CAQC","sourcesContent":["/**\n * Inserts an item into an array sorted by priority. If two items have the same priority,\n * the item will be inserted later will be placed earlier in the array.\n * @param arr modified by inserting item.\n * @param item\n */\nexport function insertPrioritySorted<T extends { priority: number }>(arr: T[], item: T): T[] {\n const index = binaryFindPartition(arr, v => v.priority >= item.priority);\n arr.splice(index === -1 ? arr.length : index, 0, item);\n return arr;\n}\n\n/**\n * Performs a binary search of a given array, returning the index of the first item\n * for which `partition` returns true. Returns the -1 if there are no items in `arr`\n * such that `partition(item)` is true.\n * @param arr\n * @param partition should return true while less than the partition point.\n */\nexport function binaryFindPartition<T>(arr: readonly T[], partition: (item: T) => boolean): number {\n if (arr.length === 0) {\n return -1;\n }\n\n let low = 0, high = arr.length - 1;\n\n while (high > low) {\n let mid = low + Math.floor((high - low) / 2);\n if (partition(arr[mid])) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n return partition(arr[low]) ? low : -1;\n}\n\n/**\n * Removes an item from the array if the array exists and the item is included\n * within it.\n * @param arr\n * @param item\n */\nexport function removeIfPresent<T>(arr: T[] | undefined, item: T) {\n if (!arr) {\n return;\n }\n const index = arr.indexOf(item);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n"]}
\No newline at end of file