ui-ingredients
Version:
Headless component library for Svelte powered by zag
38 lines (37 loc) • 794 B
JavaScript
/* Credits to https://github.com/chakra-ui/zag/blob/main/packages/utilities/core/src/split-props.ts */
function splitProps(props, keys) {
const rest = {};
const result = {};
const keySet = new Set(keys);
for (const key in props) {
if (keySet.has(key)) {
result[key] = props[key];
}
else {
rest[key] = props[key];
}
}
return [result, rest];
}
/**
* @example
* ```ts
* const props = {
* a: 1,
* b: 2,
* c: 3,
* d: 4,
* e: 5
* };
*
* const [i, j] = createSplitProps(['a', 'b'])(props);
*
* console.log(i); // {a: 1, b: 2}
* console.log(j); // {c: 3, d: 4, e: 5}
* ```
*/
export function createSplitProps(keys) {
return function split(props) {
return splitProps(props, keys);
};
}