remeda
Version:
A utility library for JavaScript and Typescript.
1 lines • 1.77 kB
Source Map (JSON)
{"version":3,"file":"splitWhen.cjs","names":["purry"],"sources":["../src/splitWhen.ts"],"sourcesContent":["import { purry } from \"./purry\";\n\n/**\n * Splits a given array at the first index where the given predicate returns true.\n *\n * @param data - The array to split.\n * @param predicate - The predicate.\n * @signature\n * R.splitWhen(array, fn)\n * @example\n * R.splitWhen([1, 2, 3], x => x === 2) // => [[1], [2, 3]]\n * @dataFirst\n * @category Array\n */\nexport function splitWhen<T>(\n data: ReadonlyArray<T>,\n predicate: (item: T, index: number, data: ReadonlyArray<T>) => boolean,\n): [Array<T>, Array<T>];\n\n/**\n * Splits a given array at an index where the given predicate returns true.\n *\n * @param predicate - The predicate.\n * @signature\n * R.splitWhen(fn)(array)\n * @example\n * R.splitWhen(x => x === 2)([1, 2, 3]) // => [[1], [2, 3]]\n * @dataLast\n * @category Array\n */\nexport function splitWhen<T>(\n predicate: (item: T, index: number, data: ReadonlyArray<T>) => boolean,\n): (array: ReadonlyArray<T>) => [Array<T>, Array<T>];\n\nexport function splitWhen(...args: ReadonlyArray<unknown>): unknown {\n return purry(splitWhenImplementation, args);\n}\n\nfunction splitWhenImplementation<T>(\n data: ReadonlyArray<T>,\n predicate: (item: T, index: number, data: ReadonlyArray<T>) => boolean,\n): [Array<T>, Array<T>] {\n const index = data.findIndex(predicate);\n return index === -1\n ? [[...data], []]\n : [data.slice(0, index), data.slice(index)];\n}\n"],"mappings":"wCAkCA,SAAgB,EAAU,GAAG,EAAuC,CAClE,OAAOA,EAAAA,EAAM,EAAyB,EAAK,CAG7C,SAAS,EACP,EACA,EACsB,CACtB,IAAM,EAAQ,EAAK,UAAU,EAAU,CACvC,OAAO,IAAU,GACb,CAAC,CAAC,GAAG,EAAK,CAAE,EAAE,CAAC,CACf,CAAC,EAAK,MAAM,EAAG,EAAM,CAAE,EAAK,MAAM,EAAM,CAAC"}