From 0df45acba3fa957c3b66fad6e987ab245f974ef3 Mon Sep 17 00:00:00 2001 From: itsMapleLeaf <19603573+itsMapleLeaf@users.noreply.github.com> Date: Wed, 27 Jul 2022 18:31:20 -0500 Subject: [PATCH] keep this helper for later maybe --- .../helpers/generate-prop-combinations.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 packages/reacord/helpers/generate-prop-combinations.ts diff --git a/packages/reacord/helpers/generate-prop-combinations.ts b/packages/reacord/helpers/generate-prop-combinations.ts new file mode 100644 index 0000000..7ec5a97 --- /dev/null +++ b/packages/reacord/helpers/generate-prop-combinations.ts @@ -0,0 +1,21 @@ +export function generatePropCombinations

(values: { + [K in keyof P]: ReadonlyArray +}) { + return generatePropCombinationsRecursive(values) as P[] +} + +function generatePropCombinationsRecursive( + value: Record, +): Array> { + const [key] = Object.keys(value) + if (!key) return [{}] + + const { [key]: values = [], ...otherValues } = value + const result: Array> = [] + for (const value of values) { + for (const otherValue of generatePropCombinationsRecursive(otherValues)) { + result.push({ [key]: value, ...otherValue }) + } + } + return result +}