import type { Preview } from "@storybook/react"; import React from "react"; import "../src/app/globals.css" /** * * This function will expand the object with nested properties * @param obj refrence Object to that * @param leftKeys keys to be nested object keys * @param value value to be nested * */ export const recursiveNestedProps = ( obj: Record, leftKeys: string[], value: unknown, ): Record => { if (leftKeys.length <= 0) return obj; if (leftKeys.length === 1) { // eslint-disable-next-line no-param-reassign obj[leftKeys[0]] = value; return obj; } const key = leftKeys.shift(); if (!key) return obj; if (!obj[key]) { // eslint-disable-next-line no-param-reassign obj[key] = {}; } return recursiveNestedProps( obj[key] as Record, leftKeys, value, ); }; const preview: Preview = { decorators: [ (Story, data) => { const parsedProps = {} as Record; const props = data.allArgs; Object.entries(props).forEach((prop) => { const [key, value] = prop; if (!key.includes("vm")) { parsedProps[key] = value; return; } const splitedKey = key.split("."); recursiveNestedProps(parsedProps, splitedKey, value); }); return (
); }, ], parameters: { controls: { matchers: { color: /(background|color)$/i, date: /Date$/i, }, }, }, }; export default preview;