{"version":3,"file":"takeWhile.cjs","names":["purry"],"sources":["../src/takeWhile.ts"],"sourcesContent":["import type { IterableContainer } from \"./internal/types/IterableContainer\";\nimport type { NarrowedArray } from \"./internal/types/NarrowedArray\";\nimport type { NonRefinedFilteredArray } from \"./internal/types/NonRefinedFilteredArray\";\nimport { purry } from \"./purry\";\n\n/**\n * Returns elements from the array until predicate returns false.\n *\n * @param data - The array.\n * @param predicate - A function to execute for each element in the array. It\n * should return `true` to keep taking elements, and `false` to stop. A\n * type-predicate can also be used to narrow the result.\n * @signature\n *    takeWhile(data, predicate)\n * @example\n *    takeWhile([1, 2, 3, 4, 3, 2, 1], x => x !== 4) // => [1, 2, 3]\n * @dataFirst\n * @category Array\n */\nexport function takeWhile<T extends IterableContainer, Condition>(\n  data: T,\n  predicate: (item: T[number], index: number, data: T) => item is Condition,\n): NarrowedArray<T, Condition>;\n\nexport function takeWhile<\n  T extends IterableContainer,\n  IsItemIncluded extends boolean,\n>(\n  data: T,\n  predicate: (item: T[number], index: number, data: T) => IsItemIncluded,\n): NonRefinedFilteredArray<T, IsItemIncluded>;\n\n/**\n * Returns elements from the array until predicate returns false.\n *\n * @param predicate - A function to execute for each element in the array. It\n * should return `true` to keep taking elements, and `false` to stop. A\n * type-predicate can also be used to narrow the result.\n * @signature\n *    takeWhile(predicate)(data)\n * @example\n *    pipe([1, 2, 3, 4, 3, 2, 1], takeWhile(x => x !== 4))  // => [1, 2, 3]\n * @dataLast\n * @category Array\n */\nexport function takeWhile<T extends IterableContainer, Condition>(\n  predicate: (item: T[number], index: number, data: T) => item is Condition,\n): (data: T) => NarrowedArray<T, Condition>;\n\nexport function takeWhile<\n  T extends IterableContainer,\n  IsItemIncluded extends boolean,\n>(\n  predicate: (item: T[number], index: number, data: T) => IsItemIncluded,\n): (data: T) => NonRefinedFilteredArray<T, IsItemIncluded>;\n\nexport function takeWhile(...args: readonly unknown[]): unknown {\n  return purry(takeWhileImplementation, args);\n}\n\nfunction takeWhileImplementation<T extends IterableContainer>(\n  data: T,\n  predicate: (item: T[number], index: number, data: T) => boolean,\n): T[number][] {\n  const ret: T[number][] = [];\n  for (const [index, item] of data.entries()) {\n    if (!predicate(item, index, data)) {\n      break;\n    }\n    ret.push(item);\n  }\n  return ret;\n}\n"],"mappings":"kGAwDA,SAAgB,EAAU,GAAG,EAAmC,CAC9D,OAAOA,EAAAA,MAAM,EAAyB,CAAI,CAC5C,CAEA,SAAS,EACP,EACA,EACa,CACb,IAAM,EAAmB,CAAC,EAC1B,IAAK,GAAM,CAAC,EAAO,KAAS,EAAK,QAAQ,EAAG,CAC1C,GAAI,CAAC,EAAU,EAAM,EAAO,CAAI,EAC9B,MAEF,EAAI,KAAK,CAAI,CACf,CACA,OAAO,CACT"}