raw-auto-table-zod 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react/jsx-runtime"),n=require("react"),t=require("@tanstack/react-table"),r=require("zod-helper");const a={text:({value:n})=>e.jsx(e.Fragment,{children:n}),number:({value:n})=>e.jsx(e.Fragment,{children:n}),enum:({value:n})=>e.jsx(e.Fragment,{children:n}),image:({value:n})=>e.jsx(e.Fragment,{children:n}),date:({value:n})=>e.jsx(e.Fragment,{children:n}),boolean:({value:n})=>e.jsx(e.Fragment,{children:n}),Table:n=>e.jsx("table",{...n,children:n.children}),TableTBody:({children:n,...t})=>e.jsx("tbody",{...t,children:n}),TableTD:({children:n,...t})=>e.jsx("td",{...t,children:n}),TableTH:({children:n,...t})=>e.jsx("th",{...t,children:n}),TableTHead:({children:n,...t})=>e.jsx("thead",{...t,children:n}),TableTR:({children:n,...t})=>e.jsx("tr",{...t,children:n}),multi_enum:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_string:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_number:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_date:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_boolean:({value:n})=>e.jsx(e.Fragment,{children:n}),FullTableLoading:()=>e.jsx(e.Fragment,{}),RowBasedLoading:()=>e.jsx(e.Fragment,{})},l=n.createContext(a),useComponentContext=()=>n.useContext(l);const decodeFieldCustomizer=e=>{try{return{decodeData:JSON.parse(e),description:null,success:!0}}catch{return{decodeData:null,description:e,success:!1}}};function useAutoTableData({schema:a,replaceColumns:l=[],data:o,changePositionOfFields:s,extraCustomColumns:i=[]}){const c=((n,t,r)=>{const a=useComponentContext(),l=new Map;for(const e of t)"accessorKey"in e&&"string"==typeof e.accessorKey&&l.set(e.accessorKey,e);const o=n.map((n=>{const t=n.key;if(l.has(t))return l.get(t);const r=(e=>{switch(e){case"date":return"date";case"enum":return"enum";case"image":return"image";case"number":return"number";case"string":return"text";case"boolean":return"boolean";case"multi-string":return"multi_string";case"multi-number":return"multi_number";case"multi-date":return"multi_date";case"multi-boolean":return"multi_boolean";case"multi-enum":return"multi_enum"}})(n.type),o=a[r],{decodeData:s}=decodeFieldCustomizer(n.description??"");return{header:(i=s?.isChangeLabel?s.label??t:t,i.split(".").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ")),accessorKey:t,cell:({getValue:r,row:a})=>{const l=r(),i=a.original;let c=l;return l instanceof Date&&(c=l.toISOString()),o?e.jsx(o,{value:c,rawData:i,defaultValue:n.enums,title:t,description:n.description,...s}):l instanceof Date?e.jsx(e.Fragment,{children:l.toISOString()}):e.jsx(e.Fragment,{children:JSON.stringify(l)})}};var i}));for(const e of t){const t="accessorKey"in e&&"string"==typeof e.accessorKey?e.accessorKey:void 0;t&&!n.some((e=>e.key===t))&&o.push(e)}if(r&&r.length>0)for(const e of r){const[n,t=null]=e.insertPosition?.split(":")??[];n&&t?"before"===t?o.splice(o.findIndex((e=>e.accessorKey===n)),0,e):"after"===t?o.splice(o.findIndex((e=>e.accessorKey===n))+1,0,e):o.push(e):o.push(e)}return o})(n.useMemo((()=>{const e=new r.ZodTableClassed(a);return s&&e.changeJsonFieldPositions(s),{columns:e.convertToTableUseableFormat()}}),[s,a]).columns,l,i);return{table:t.useReactTable({data:o,columns:c,getCoreRowModel:t.getCoreRowModel()}),Component:useComponentContext()}}exports.AutoTableComponentsProvider=({children:n,components:t})=>{const r={...a,...t};return e.jsx(l.Provider,{value:r,children:n})},exports.ComponentRegistryHelper=e=>e,exports.FieldCustomizer=function FieldCustomizer(e){return JSON.stringify({custom:!0,...e})},exports.RawAutoTable=function RawAutoTable(n){const{table:r,Component:a}=useAutoTableData(n),{onRowClick:l,isActionColumnComponentEnabled:o,actionColumnComponent:s,actionHeaderComponent:i,extraCustomColumns:c,isExtraCustomColumnsEnabled:u,isLoading:d,loadingType:m,sizeOfLoadingRows:g=10}=n;return e.jsxs(a.Table,{children:[e.jsx(a.TableTHead,{children:r.getHeaderGroups().map((n=>e.jsxs(a.TableTR,{children:[n.headers.map((n=>e.jsx(a.TableTH,{children:n.isPlaceholder?null:t.flexRender(n.column.columnDef.header,n.getContext())},n.id))),o&&e.jsx(a.TableTH,{children:i?e.jsx(i,{defaultName:"Action"}):"Action"})]},n.id)))}),d&&"full"===m?e.jsx(a.FullTableLoading,{isLoading:d}):e.jsx(a.TableTBody,{children:d&&"row-based"===m?Array.from({length:g}).map(((n,t)=>e.jsx(a.TableTR,{children:Array.from({length:r.getVisibleFlatColumns().length}).map(((n,r)=>e.jsx(a.TableTD,{children:e.jsx(a.RowBasedLoading,{isLoading:d})},`loading-cell-${t.toString()}-${r.toString()}`)))},`loading-row-${t.toString()}`))):r.getRowModel().rows.map((n=>e.jsxs(a.TableTR,{children:[n.getVisibleCells().map((r=>e.jsx(a.TableTD,{onClick:()=>{if(u){const e=c?.some((e=>e.disableOnRowClick));if(e)return}l&&l?.(n.original)},children:t.flexRender(r.column.columnDef.cell,r.getContext())},r.id))),o&&e.jsx(a.TableTD,{children:s?e.jsx(s,{row:n.original}):"Please provide a component for the action column"})]},n.id)))})]})},exports.decodeFieldCustomizer=decodeFieldCustomizer;
1
+ "use strict";var e=require("react/jsx-runtime"),n=require("react"),t=require("@tanstack/react-table"),r=require("zod-helper");const a={text:({value:n})=>e.jsx(e.Fragment,{children:n}),number:({value:n})=>e.jsx(e.Fragment,{children:n}),enum:({value:n})=>e.jsx(e.Fragment,{children:n}),image:({value:n})=>e.jsx(e.Fragment,{children:n}),date:({value:n})=>e.jsx(e.Fragment,{children:n}),boolean:({value:n})=>e.jsx(e.Fragment,{children:n}),Table:n=>e.jsx("table",{...n,children:n.children}),TableTBody:({children:n,...t})=>e.jsx("tbody",{...t,children:n}),TableTD:({children:n,...t})=>e.jsx("td",{...t,children:n}),TableTH:({children:n,...t})=>e.jsx("th",{...t,children:n}),TableTHead:({children:n,...t})=>e.jsx("thead",{...t,children:n}),TableTR:({children:n,...t})=>e.jsx("tr",{...t,children:n}),multi_enum:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_string:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_number:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_date:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_boolean:({value:n})=>e.jsx(e.Fragment,{children:n}),FullTableLoading:()=>e.jsx(e.Fragment,{}),RowBasedLoading:()=>e.jsx(e.Fragment,{})},l=n.createContext(a),useComponentContext=()=>n.useContext(l);const decodeFieldCustomizer=e=>{try{return{decodeData:JSON.parse(e),description:null,success:!0}}catch{return{decodeData:null,description:e,success:!1}}};function useAutoTableData({schema:a,replaceColumns:l=[],data:o,changePositionOfFields:s,extraCustomColumns:i=[]}){const c=((n,t,r)=>{const a=useComponentContext(),l=new Map;for(const e of t)"accessorKey"in e&&"string"==typeof e.accessorKey&&l.set(e.accessorKey,e);const o=n.map((n=>{const t=n.key;if(l.has(t))return l.get(t);const r=(e=>{switch(e){case"date":return"date";case"enum":return"enum";case"image":return"image";case"number":return"number";case"string":return"text";case"boolean":return"boolean";case"multi-string":return"multi_string";case"multi-number":return"multi_number";case"multi-date":return"multi_date";case"multi-boolean":return"multi_boolean";case"multi-enum":return"multi_enum"}})(n.type),{decodeData:o}=decodeFieldCustomizer(n.description??""),s=o?.isImage,i=a[s?"image":r];return{header:(c=o?.isChangeLabel?o.label??t:t,c.split(".").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ")),accessorKey:t,cell:({getValue:r,row:a})=>{const l=r(),s=a.original;let c=l;return l instanceof Date&&(c=l.toISOString()),i?e.jsx(i,{value:c,rawData:s,defaultValue:n.enums,title:t,description:n.description,...o}):l instanceof Date?e.jsx(e.Fragment,{children:l.toISOString()}):e.jsx(e.Fragment,{children:JSON.stringify(l)})}};var c}));for(const e of t){const t="accessorKey"in e&&"string"==typeof e.accessorKey?e.accessorKey:void 0;t&&!n.some((e=>e.key===t))&&o.push(e)}if(r&&r.length>0)for(const e of r){const[n,t=null]=e.insertPosition?.split(":")??[];n&&t?"before"===t?o.splice(o.findIndex((e=>e.accessorKey===n)),0,e):"after"===t?o.splice(o.findIndex((e=>e.accessorKey===n))+1,0,e):o.push(e):o.push(e)}return o})(n.useMemo((()=>{const e=new r.ZodTableClassed(a);return s&&e.changeJsonFieldPositions(s),{columns:e.convertToTableUseableFormat()}}),[s,a]).columns,l,i);return{table:t.useReactTable({data:o,columns:c,getCoreRowModel:t.getCoreRowModel()}),Component:useComponentContext()}}exports.AutoTableComponentsProvider=({children:n,components:t})=>{const r={...a,...t};return e.jsx(l.Provider,{value:r,children:n})},exports.ComponentRegistryHelper=e=>e,exports.FieldCustomizer=function FieldCustomizer(e){return JSON.stringify({custom:!0,...e})},exports.RawAutoTable=function RawAutoTable(n){const{table:r,Component:a}=useAutoTableData(n),{onRowClick:l,isActionColumnComponentEnabled:o,actionColumnComponent:s,actionHeaderComponent:i,extraCustomColumns:c,isExtraCustomColumnsEnabled:u,isLoading:d,loadingType:m,sizeOfLoadingRows:g=10}=n;return e.jsxs(a.Table,{children:[e.jsx(a.TableTHead,{children:r.getHeaderGroups().map((n=>e.jsxs(a.TableTR,{children:[n.headers.map((n=>e.jsx(a.TableTH,{children:n.isPlaceholder?null:t.flexRender(n.column.columnDef.header,n.getContext())},n.id))),o&&e.jsx(a.TableTH,{children:i?e.jsx(i,{defaultName:"Action"}):"Action"})]},n.id)))}),d&&"full"===m?e.jsx(a.FullTableLoading,{isLoading:d}):e.jsx(a.TableTBody,{children:d&&"row-based"===m?Array.from({length:g}).map(((n,t)=>e.jsx(a.TableTR,{children:Array.from({length:r.getVisibleFlatColumns().length}).map(((n,r)=>e.jsx(a.TableTD,{children:e.jsx(a.RowBasedLoading,{isLoading:d})},`loading-cell-${t.toString()}-${r.toString()}`)))},`loading-row-${t.toString()}`))):r.getRowModel().rows.map((n=>e.jsxs(a.TableTR,{children:[n.getVisibleCells().map((r=>e.jsx(a.TableTD,{onClick:()=>{if(u){const e=c?.some((e=>e.disableOnRowClick));if(e)return}l&&l?.(n.original)},children:t.flexRender(r.column.columnDef.cell,r.getContext())},r.id))),o&&e.jsx(a.TableTD,{children:s?e.jsx(s,{row:n.original}):"Please provide a component for the action column"})]},n.id)))})]})},exports.decodeFieldCustomizer=decodeFieldCustomizer;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../package/auto-table/context/useComponentContext.tsx","../package/auto-table/utils/FieldChanger.tsx","../package/auto-table/hooks/useAutoTableData.tsx","../package/auto-table/core/useGenerate-columns.tsx","../package/auto-table/utils/ComponentRegistryHelper.tsx","../package/auto-table/index.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\r\nimport { type ReactNode, createContext, useContext } from \"react\";\r\n\r\nimport type {\r\n\tAutoTableComponentContextType,\r\n\tTableType,\r\n\tTable_TBody_Type,\r\n\tTable_TD_Type,\r\n\tTable_TH_Type,\r\n\tTable_THead_Type,\r\n\tTable_TR_Type,\r\n} from \"../types/base-components\";\r\n\r\nconst defaultComponents: AutoTableComponentContextType = {\r\n\ttext: ({ value }) => <>{value}</>,\r\n\tnumber: ({ value }) => <>{value}</>,\r\n\tenum: ({ value }) => <>{value}</>,\r\n\timage: ({ value }) => <>{value}</>,\r\n\tdate: ({ value }) => <>{value}</>,\r\n\tboolean: ({ value }) => <>{value}</>,\r\n\tTable: (props: TableType) => <table {...props}>{props.children}</table>,\r\n\tTableTBody: ({ children, ...props }: Table_TBody_Type) => (\r\n\t\t<tbody {...props}>{children}</tbody>\r\n\t),\r\n\tTableTD: ({ children, ...props }: Table_TD_Type) => (\r\n\t\t<td {...props}>{children}</td>\r\n\t),\r\n\tTableTH: ({ children, ...props }: Table_TH_Type) => (\r\n\t\t<th {...props}>{children}</th>\r\n\t),\r\n\tTableTHead: ({ children, ...props }: Table_THead_Type) => (\r\n\t\t<thead {...props}>{children}</thead>\r\n\t),\r\n\tTableTR: ({ children, ...props }: Table_TR_Type) => (\r\n\t\t<tr {...props}>{children}</tr>\r\n\t),\r\n\tmulti_enum: ({ value }) => <>{value}</>,\r\n\tmulti_string: ({ value }) => <>{value}</>,\r\n\tmulti_number: ({ value }) => <>{value}</>,\r\n\tmulti_date: ({ value }) => <>{value}</>,\r\n\tmulti_boolean: ({ value }) => <>{value}</>,\r\n\tFullTableLoading: () => <></>,\r\n\tRowBasedLoading: () => <></>,\r\n};\r\n\r\nconst ComponentContext =\r\n\tcreateContext<AutoTableComponentContextType>(defaultComponents);\r\n\r\nexport const useComponentContext = () => useContext(ComponentContext);\r\n\r\ntype ComponentProviderProps = {\r\n\tchildren: ReactNode;\r\n\tcomponents?: Partial<AutoTableComponentContextType>;\r\n};\r\n\r\nexport const AutoTableComponentsProvider = ({\r\n\tchildren,\r\n\tcomponents,\r\n}: ComponentProviderProps) => {\r\n\tconst value = {\r\n\t\t...defaultComponents,\r\n\t\t...components,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ComponentContext.Provider value={value}>\r\n\t\t\t{children}\r\n\t\t</ComponentContext.Provider>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\ninterface FieldChangerProps {\r\n\tisChangeLabel?: boolean;\r\n\tlabel?: string;\r\n\tisImage?: boolean;\r\n\taddValueTextAfter?: string;\r\n\taddValueTextBefore?: string;\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\trandomData?: Record<string, any>;\r\n}\r\n\r\nexport function FieldCustomizer(props: FieldChangerProps) {\r\n\treturn JSON.stringify({\r\n\t\tcustom: true,\r\n\t\t...props,\r\n\t});\r\n}\r\nexport const decodeFieldCustomizer = (\r\n\tfieldCustomizer: string,\r\n): {\r\n\tdecodeData: FieldChangerProps | null;\r\n\tdescription: string | null;\r\n\tsuccess: boolean;\r\n} => {\r\n\ttry {\r\n\t\treturn {\r\n\t\t\tdecodeData: JSON.parse(fieldCustomizer) as FieldChangerProps,\r\n\t\t\tdescription: null,\r\n\t\t\tsuccess: true,\r\n\t\t};\r\n\t} catch {\r\n\t\treturn {\r\n\t\t\tdecodeData: null,\r\n\t\t\tdescription: fieldCustomizer,\r\n\t\t\tsuccess: false,\r\n\t\t};\r\n\t}\r\n};\r\n","import { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\r\nimport { useMemo } from \"react\";\r\nimport type { z } from \"zod\";\r\nimport { ZodTableClassed } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport { useGenerateColumns } from \"../core/useGenerate-columns\";\r\nimport type { RawAutoTableProps } from \"../types/AutoTable-types\";\r\n\r\nexport default function useAutoTableData<T extends z.ZodTypeAny>({\r\n\tschema,\r\n\treplaceColumns = [],\r\n\tdata,\r\n\tchangePositionOfFields,\r\n\textraCustomColumns = [],\r\n}: RawAutoTableProps<T>) {\r\n\tconst zodAutoTable = useMemo(() => {\r\n\t\tconst zodAutoTable = new ZodTableClassed(schema);\r\n\t\tif (changePositionOfFields) {\r\n\t\t\tzodAutoTable.changeJsonFieldPositions(changePositionOfFields);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcolumns: zodAutoTable.convertToTableUseableFormat(),\r\n\t\t};\r\n\t}, [changePositionOfFields, schema]);\r\n\tconst columns = useGenerateColumns(\r\n\t\tzodAutoTable.columns,\r\n\t\treplaceColumns,\r\n\t\textraCustomColumns,\r\n\t);\r\n\tconst table = useReactTable({\r\n\t\tdata,\r\n\t\tcolumns,\r\n\t\tgetCoreRowModel: getCoreRowModel(),\r\n\t});\r\n\tconst Component = useComponentContext();\r\n\treturn { table, Component };\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { ColumnDef } from \"@tanstack/react-table\";\r\nimport type { FlattenSchemaWithKeyAndTypes } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport type { ExtraColumnConfig } from \"../types/AutoTable-types\";\r\nimport { decodeFieldCustomizer } from \"../utils/FieldChanger\";\r\ntype fieldDataType =\r\n\t| \"string\"\r\n\t| \"number\"\r\n\t| \"boolean\"\r\n\t| \"date\"\r\n\t| \"enum\"\r\n\t| \"image\"\r\n\t| \"multi-string\"\r\n\t| \"multi-number\"\r\n\t| \"multi-date\"\r\n\t| \"multi-boolean\"\r\n\t| \"multi-enum\";\r\n\r\nconst getComponentKey = (type: fieldDataType) => {\r\n\tswitch (type) {\r\n\t\tcase \"date\":\r\n\t\t\treturn \"date\";\r\n\t\tcase \"enum\":\r\n\t\t\treturn \"enum\";\r\n\t\tcase \"image\":\r\n\t\t\treturn \"image\";\r\n\t\tcase \"number\":\r\n\t\t\treturn \"number\";\r\n\t\tcase \"string\":\r\n\t\t\treturn \"text\";\r\n\t\tcase \"boolean\":\r\n\t\t\treturn \"boolean\";\r\n\t\tcase \"multi-string\":\r\n\t\t\treturn \"multi_string\";\r\n\t\tcase \"multi-number\":\r\n\t\t\treturn \"multi_number\";\r\n\t\tcase \"multi-date\":\r\n\t\t\treturn \"multi_date\";\r\n\t\tcase \"multi-boolean\":\r\n\t\t\treturn \"multi_boolean\";\r\n\t\tcase \"multi-enum\":\r\n\t\t\treturn \"multi_enum\";\r\n\t}\r\n};\r\nconst getColumnName = (name: string) => {\r\n\t// name to Name , address.street to Address Street , address.owner.name to Address Owner Name\r\n\tconst words = name.split(\".\");\r\n\treturn words\r\n\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n\t\t.join(\" \");\r\n};\r\nexport const useGenerateColumns = (\r\n\tfields: FlattenSchemaWithKeyAndTypes[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\treplaceColumns: ColumnDef<any>[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\textraCustomColumns: ExtraColumnConfig<any>[\"extraCustomColumns\"],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n): ColumnDef<any>[] => {\r\n\tconst Components = useComponentContext();\r\n\t// Step 1: Create a map of replace columns where accessorKey exists\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst replaceMap = new Map<string, ColumnDef<any>>();\r\n\tfor (const col of replaceColumns) {\r\n\t\tif (\"accessorKey\" in col && typeof col.accessorKey === \"string\") {\r\n\t\t\treplaceMap.set(col.accessorKey, col);\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 2: Generate columns from fields\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst columns: ColumnDef<any>[] = fields.map((field) => {\r\n\t\tconst key = field.key;\r\n\t\tif (replaceMap.has(key)) {\r\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\r\n\t\t\treturn replaceMap.get(key)!;\r\n\t\t}\r\n\r\n\t\tconst componentKey = getComponentKey(field.type as fieldDataType);\r\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\t\tconst Component = Components[componentKey] as React.FC<any>;\r\n\t\tconst { decodeData } = decodeFieldCustomizer(field.description ?? \"\");\r\n\r\n\t\treturn {\r\n\t\t\theader: getColumnName(\r\n\t\t\t\tdecodeData?.isChangeLabel ? (decodeData.label ?? key) : key,\r\n\t\t\t),\r\n\t\t\taccessorKey: key,\r\n\t\t\tcell: ({ getValue, row }) => {\r\n\t\t\t\tconst value = getValue();\r\n\t\t\t\tconst rawData = row.original;\r\n\r\n\t\t\t\t// Convert Date objects to strings before passing to components\r\n\t\t\t\tlet processedValue = value;\r\n\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\tprocessedValue = value.toISOString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!Component) {\r\n\t\t\t\t\t// Handle Date objects or other non-renderable values\r\n\t\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\t\treturn <>{value.toISOString()}</>;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn <>{JSON.stringify(value)}</>;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Component\r\n\t\t\t\t\t\tvalue={processedValue}\r\n\t\t\t\t\t\trawData={rawData}\r\n\t\t\t\t\t\tdefaultValue={field.enums}\r\n\t\t\t\t\t\ttitle={key}\r\n\t\t\t\t\t\tdescription={field.description}\r\n\t\t\t\t\t\t{...decodeData}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n\r\n\t// Step 3: Add additional replaceColumns that don't conflict with fields\r\n\tfor (const col of replaceColumns) {\r\n\t\tconst key =\r\n\t\t\t\"accessorKey\" in col && typeof col.accessorKey === \"string\"\r\n\t\t\t\t? col.accessorKey\r\n\t\t\t\t: undefined;\r\n\t\tif (key && !fields.some((f) => f.key === key)) {\r\n\t\t\tcolumns.push(col);\r\n\t\t}\r\n\t}\r\n\tif (extraCustomColumns && extraCustomColumns.length > 0) {\r\n\t\tfor (const col of extraCustomColumns) {\r\n\t\t\t// insertPosition split by : and get the first part as the accessorKey and the second part as the insertPosition after,before\r\n\t\t\tconst [accessorKey, insertPosition = null] =\r\n\t\t\t\t// @ts-expect-error - insertPosition is not always defined and\r\n\t\t\t\tcol.insertPosition?.split(\":\") ?? [];\r\n\t\t\t// if accessorKey and insertPosition both exist then insert the column after the accessorKey\r\n\t\t\tif (accessorKey && insertPosition) {\r\n\t\t\t\t// columns.splice(\r\n\t\t\t\t// \tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t// \t0,\r\n\t\t\t\t// \tcol,\r\n\t\t\t\t// );\r\n\t\t\t\tif (insertPosition === \"before\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey),\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (insertPosition === \"after\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\tcolumns.push(col);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\tcolumns.push(col);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn columns;\r\n};\r\n","import type { AutoTableComponentContextType } from \"../types/base-components\";\r\n\r\nexport const ComponentRegistryHelper = (\r\n\tprops: AutoTableComponentContextType,\r\n) => {\r\n\treturn props;\r\n};\r\n","import { flexRender } from \"@tanstack/react-table\";\r\nimport type { z } from \"zod\";\r\nimport useAutoTableData from \"./hooks/useAutoTableData\";\r\nimport type { RawAutoTableProps } from \"./types/AutoTable-types\";\r\n\r\nexport default function RawAutoTable<T extends z.ZodTypeAny>(\r\n\tprops: RawAutoTableProps<T>,\r\n) {\r\n\tconst { table, Component } = useAutoTableData(props);\r\n\tconst {\r\n\t\tonRowClick,\r\n\t\tisActionColumnComponentEnabled,\r\n\t\tactionColumnComponent: ActionColumnComponent,\r\n\t\tactionHeaderComponent: ActionHeaderComponent,\r\n\t\textraCustomColumns,\r\n\t\tisExtraCustomColumnsEnabled,\r\n\t\tisLoading,\r\n\t\tloadingType,\r\n\t\tsizeOfLoadingRows = 10,\r\n\t} = props;\r\n\treturn (\r\n\t\t<Component.Table>\r\n\t\t\t<Component.TableTHead>\r\n\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\r\n\t\t\t\t\t<Component.TableTR key={headerGroup.id}>\r\n\t\t\t\t\t\t{headerGroup.headers.map((header) => (\r\n\t\t\t\t\t\t\t<Component.TableTH key={header.id}>\r\n\t\t\t\t\t\t\t\t{header.isPlaceholder\r\n\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t: flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\r\n\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t<Component.TableTH>\r\n\t\t\t\t\t\t\t\t{ActionHeaderComponent ? (\r\n\t\t\t\t\t\t\t\t\t<ActionHeaderComponent defaultName=\"Action\" />\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\"Action\"\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t))}\r\n\t\t\t</Component.TableTHead>\r\n\t\t\t{isLoading && loadingType === \"full\" ? (\r\n\t\t\t\t<Component.FullTableLoading isLoading={isLoading} />\r\n\t\t\t) : (\r\n\t\t\t\t<Component.TableTBody>\r\n\t\t\t\t\t{isLoading && loadingType === \"row-based\"\r\n\t\t\t\t\t\t? Array.from({ length: sizeOfLoadingRows }).map((_, index) => (\r\n\t\t\t\t\t\t\t\t<Component.TableTR key={`loading-row-${index.toString()}`}>\r\n\t\t\t\t\t\t\t\t\t{Array.from({\r\n\t\t\t\t\t\t\t\t\t\tlength: table.getVisibleFlatColumns().length,\r\n\t\t\t\t\t\t\t\t\t}).map((__, colIndex) => (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\t\tkey={`loading-cell-${index.toString()}-${colIndex.toString()}`}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t<Component.RowBasedLoading isLoading={isLoading} />\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t: table.getRowModel().rows.map((row) => (\r\n\t\t\t\t\t\t\t\t<Component.TableTR key={row.id}>\r\n\t\t\t\t\t\t\t\t\t{row.getVisibleCells().map((cell) => (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\t\tkey={cell.id}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (isExtraCustomColumnsEnabled) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// check if rowClick is Allowed for the extra custom columns\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst disableOnRowClick = extraCustomColumns?.some(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(column) => column.disableOnRowClick,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (disableOnRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (onRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonRowClick?.(row.original);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\t\tcell.column.columnDef.cell,\r\n\t\t\t\t\t\t\t\t\t\t\t\tcell.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t\t\t{ActionColumnComponent ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<ActionColumnComponent row={row.original} />\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"Please provide a component for the action column\"\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t</Component.TableTBody>\r\n\t\t\t)}\r\n\t\t</Component.Table>\r\n\t);\r\n}\r\n"],"names":["defaultComponents","text","value","_jsx","_Fragment","children","number","enum","image","date","boolean","Table","props","TableTBody","TableTD","TableTH","TableTHead","TableTR","multi_enum","multi_string","multi_number","multi_date","multi_boolean","FullTableLoading","Fragment","RowBasedLoading","ComponentContext","createContext","useComponentContext","useContext","decodeFieldCustomizer","fieldCustomizer","decodeData","JSON","parse","description","success","useAutoTableData","schema","replaceColumns","data","changePositionOfFields","extraCustomColumns","columns","fields","Components","replaceMap","Map","col","accessorKey","set","map","field","key","has","get","componentKey","type","getComponentKey","Component","header","name","isChangeLabel","label","split","word","charAt","toUpperCase","slice","join","cell","getValue","row","rawData","original","processedValue","Date","toISOString","defaultValue","enums","title","stringify","undefined","some","f","push","length","insertPosition","splice","findIndex","c","useGenerateColumns","useMemo","zodAutoTable","ZodTableClassed","changeJsonFieldPositions","convertToTableUseableFormat","table","useReactTable","getCoreRowModel","components","jsx","Provider","FieldCustomizer","custom","RawAutoTable","onRowClick","isActionColumnComponentEnabled","actionColumnComponent","ActionColumnComponent","actionHeaderComponent","ActionHeaderComponent","isExtraCustomColumnsEnabled","isLoading","loadingType","sizeOfLoadingRows","_jsxs","getHeaderGroups","headerGroup","headers","isPlaceholder","flexRender","column","columnDef","getContext","id","defaultName","Array","from","_","index","getVisibleFlatColumns","__","colIndex","toString","getRowModel","rows","jsxs","getVisibleCells","onClick","disableOnRowClick"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../package/auto-table/context/useComponentContext.tsx","../package/auto-table/utils/FieldChanger.tsx","../package/auto-table/hooks/useAutoTableData.tsx","../package/auto-table/core/useGenerate-columns.tsx","../package/auto-table/utils/ComponentRegistryHelper.tsx","../package/auto-table/index.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\r\nimport { type ReactNode, createContext, useContext } from \"react\";\r\n\r\nimport type {\r\n\tAutoTableComponentContextType,\r\n\tTableType,\r\n\tTable_TBody_Type,\r\n\tTable_TD_Type,\r\n\tTable_TH_Type,\r\n\tTable_THead_Type,\r\n\tTable_TR_Type,\r\n} from \"../types/base-components\";\r\n\r\nconst defaultComponents: AutoTableComponentContextType = {\r\n\ttext: ({ value }) => <>{value}</>,\r\n\tnumber: ({ value }) => <>{value}</>,\r\n\tenum: ({ value }) => <>{value}</>,\r\n\timage: ({ value }) => <>{value}</>,\r\n\tdate: ({ value }) => <>{value}</>,\r\n\tboolean: ({ value }) => <>{value}</>,\r\n\tTable: (props: TableType) => <table {...props}>{props.children}</table>,\r\n\tTableTBody: ({ children, ...props }: Table_TBody_Type) => (\r\n\t\t<tbody {...props}>{children}</tbody>\r\n\t),\r\n\tTableTD: ({ children, ...props }: Table_TD_Type) => (\r\n\t\t<td {...props}>{children}</td>\r\n\t),\r\n\tTableTH: ({ children, ...props }: Table_TH_Type) => (\r\n\t\t<th {...props}>{children}</th>\r\n\t),\r\n\tTableTHead: ({ children, ...props }: Table_THead_Type) => (\r\n\t\t<thead {...props}>{children}</thead>\r\n\t),\r\n\tTableTR: ({ children, ...props }: Table_TR_Type) => (\r\n\t\t<tr {...props}>{children}</tr>\r\n\t),\r\n\tmulti_enum: ({ value }) => <>{value}</>,\r\n\tmulti_string: ({ value }) => <>{value}</>,\r\n\tmulti_number: ({ value }) => <>{value}</>,\r\n\tmulti_date: ({ value }) => <>{value}</>,\r\n\tmulti_boolean: ({ value }) => <>{value}</>,\r\n\tFullTableLoading: () => <></>,\r\n\tRowBasedLoading: () => <></>,\r\n};\r\n\r\nconst ComponentContext =\r\n\tcreateContext<AutoTableComponentContextType>(defaultComponents);\r\n\r\nexport const useComponentContext = () => useContext(ComponentContext);\r\n\r\ntype ComponentProviderProps = {\r\n\tchildren: ReactNode;\r\n\tcomponents?: Partial<AutoTableComponentContextType>;\r\n};\r\n\r\nexport const AutoTableComponentsProvider = ({\r\n\tchildren,\r\n\tcomponents,\r\n}: ComponentProviderProps) => {\r\n\tconst value = {\r\n\t\t...defaultComponents,\r\n\t\t...components,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ComponentContext.Provider value={value}>\r\n\t\t\t{children}\r\n\t\t</ComponentContext.Provider>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\ninterface FieldChangerProps {\r\n\tisChangeLabel?: boolean;\r\n\tlabel?: string;\r\n\tisImage?: boolean;\r\n\taddValueTextAfter?: string;\r\n\taddValueTextBefore?: string;\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\trandomData?: Record<string, any>;\r\n}\r\n\r\nexport function FieldCustomizer(props: FieldChangerProps) {\r\n\treturn JSON.stringify({\r\n\t\tcustom: true,\r\n\t\t...props,\r\n\t});\r\n}\r\nexport const decodeFieldCustomizer = (\r\n\tfieldCustomizer: string,\r\n): {\r\n\tdecodeData: FieldChangerProps | null;\r\n\tdescription: string | null;\r\n\tsuccess: boolean;\r\n} => {\r\n\ttry {\r\n\t\treturn {\r\n\t\t\tdecodeData: JSON.parse(fieldCustomizer) as FieldChangerProps,\r\n\t\t\tdescription: null,\r\n\t\t\tsuccess: true,\r\n\t\t};\r\n\t} catch {\r\n\t\treturn {\r\n\t\t\tdecodeData: null,\r\n\t\t\tdescription: fieldCustomizer,\r\n\t\t\tsuccess: false,\r\n\t\t};\r\n\t}\r\n};\r\n","import { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\r\nimport { useMemo } from \"react\";\r\nimport type { z } from \"zod\";\r\nimport { ZodTableClassed } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport { useGenerateColumns } from \"../core/useGenerate-columns\";\r\nimport type { RawAutoTableProps } from \"../types/AutoTable-types\";\r\n\r\nexport default function useAutoTableData<T extends z.ZodTypeAny>({\r\n\tschema,\r\n\treplaceColumns = [],\r\n\tdata,\r\n\tchangePositionOfFields,\r\n\textraCustomColumns = [],\r\n}: RawAutoTableProps<T>) {\r\n\tconst zodAutoTable = useMemo(() => {\r\n\t\tconst zodAutoTable = new ZodTableClassed(schema);\r\n\t\tif (changePositionOfFields) {\r\n\t\t\tzodAutoTable.changeJsonFieldPositions(changePositionOfFields);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcolumns: zodAutoTable.convertToTableUseableFormat(),\r\n\t\t};\r\n\t}, [changePositionOfFields, schema]);\r\n\tconst columns = useGenerateColumns(\r\n\t\tzodAutoTable.columns,\r\n\t\treplaceColumns,\r\n\t\textraCustomColumns,\r\n\t);\r\n\tconst table = useReactTable({\r\n\t\tdata,\r\n\t\tcolumns,\r\n\t\tgetCoreRowModel: getCoreRowModel(),\r\n\t});\r\n\tconst Component = useComponentContext();\r\n\treturn { table, Component };\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { ColumnDef } from \"@tanstack/react-table\";\r\nimport type { FlattenSchemaWithKeyAndTypes } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport type { ExtraColumnConfig } from \"../types/AutoTable-types\";\r\nimport { decodeFieldCustomizer } from \"../utils/FieldChanger\";\r\ntype fieldDataType =\r\n\t| \"string\"\r\n\t| \"number\"\r\n\t| \"boolean\"\r\n\t| \"date\"\r\n\t| \"enum\"\r\n\t| \"image\"\r\n\t| \"multi-string\"\r\n\t| \"multi-number\"\r\n\t| \"multi-date\"\r\n\t| \"multi-boolean\"\r\n\t| \"multi-enum\";\r\n\r\nconst getComponentKey = (type: fieldDataType) => {\r\n\tswitch (type) {\r\n\t\tcase \"date\":\r\n\t\t\treturn \"date\";\r\n\t\tcase \"enum\":\r\n\t\t\treturn \"enum\";\r\n\t\tcase \"image\":\r\n\t\t\treturn \"image\";\r\n\t\tcase \"number\":\r\n\t\t\treturn \"number\";\r\n\t\tcase \"string\":\r\n\t\t\treturn \"text\";\r\n\t\tcase \"boolean\":\r\n\t\t\treturn \"boolean\";\r\n\t\tcase \"multi-string\":\r\n\t\t\treturn \"multi_string\";\r\n\t\tcase \"multi-number\":\r\n\t\t\treturn \"multi_number\";\r\n\t\tcase \"multi-date\":\r\n\t\t\treturn \"multi_date\";\r\n\t\tcase \"multi-boolean\":\r\n\t\t\treturn \"multi_boolean\";\r\n\t\tcase \"multi-enum\":\r\n\t\t\treturn \"multi_enum\";\r\n\t}\r\n};\r\nconst getColumnName = (name: string) => {\r\n\t// name to Name , address.street to Address Street , address.owner.name to Address Owner Name\r\n\tconst words = name.split(\".\");\r\n\treturn words\r\n\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n\t\t.join(\" \");\r\n};\r\nexport const useGenerateColumns = (\r\n\tfields: FlattenSchemaWithKeyAndTypes[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\treplaceColumns: ColumnDef<any>[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\textraCustomColumns: ExtraColumnConfig<any>[\"extraCustomColumns\"],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n): ColumnDef<any>[] => {\r\n\tconst Components = useComponentContext();\r\n\t// Step 1: Create a map of replace columns where accessorKey exists\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst replaceMap = new Map<string, ColumnDef<any>>();\r\n\tfor (const col of replaceColumns) {\r\n\t\tif (\"accessorKey\" in col && typeof col.accessorKey === \"string\") {\r\n\t\t\treplaceMap.set(col.accessorKey, col);\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 2: Generate columns from fields\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst columns: ColumnDef<any>[] = fields.map((field) => {\r\n\t\tconst key = field.key;\r\n\t\tif (replaceMap.has(key)) {\r\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\r\n\t\t\treturn replaceMap.get(key)!;\r\n\t\t}\r\n\r\n\t\tconst componentKey = getComponentKey(field.type as fieldDataType);\r\n\t\tconst { decodeData } = decodeFieldCustomizer(field.description ?? \"\");\r\n\t\tconst isImage = decodeData?.isImage;\r\n\t\tconst Component = Components[\r\n\t\t\tisImage ? \"image\" : componentKey\r\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\t\t] as React.FC<any>;\r\n\r\n\t\treturn {\r\n\t\t\theader: getColumnName(\r\n\t\t\t\tdecodeData?.isChangeLabel ? (decodeData.label ?? key) : key,\r\n\t\t\t),\r\n\t\t\taccessorKey: key,\r\n\t\t\tcell: ({ getValue, row }) => {\r\n\t\t\t\tconst value = getValue();\r\n\t\t\t\tconst rawData = row.original;\r\n\r\n\t\t\t\t// Convert Date objects to strings before passing to components\r\n\t\t\t\tlet processedValue = value;\r\n\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\tprocessedValue = value.toISOString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!Component) {\r\n\t\t\t\t\t// Handle Date objects or other non-renderable values\r\n\t\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\t\treturn <>{value.toISOString()}</>;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn <>{JSON.stringify(value)}</>;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Component\r\n\t\t\t\t\t\tvalue={processedValue}\r\n\t\t\t\t\t\trawData={rawData}\r\n\t\t\t\t\t\tdefaultValue={field.enums}\r\n\t\t\t\t\t\ttitle={key}\r\n\t\t\t\t\t\tdescription={field.description}\r\n\t\t\t\t\t\t{...decodeData}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n\r\n\t// Step 3: Add additional replaceColumns that don't conflict with fields\r\n\tfor (const col of replaceColumns) {\r\n\t\tconst key =\r\n\t\t\t\"accessorKey\" in col && typeof col.accessorKey === \"string\"\r\n\t\t\t\t? col.accessorKey\r\n\t\t\t\t: undefined;\r\n\t\tif (key && !fields.some((f) => f.key === key)) {\r\n\t\t\tcolumns.push(col);\r\n\t\t}\r\n\t}\r\n\tif (extraCustomColumns && extraCustomColumns.length > 0) {\r\n\t\tfor (const col of extraCustomColumns) {\r\n\t\t\t// insertPosition split by : and get the first part as the accessorKey and the second part as the insertPosition after,before\r\n\t\t\tconst [accessorKey, insertPosition = null] =\r\n\t\t\t\t// @ts-expect-error - insertPosition is not always defined and\r\n\t\t\t\tcol.insertPosition?.split(\":\") ?? [];\r\n\t\t\t// if accessorKey and insertPosition both exist then insert the column after the accessorKey\r\n\t\t\tif (accessorKey && insertPosition) {\r\n\t\t\t\t// columns.splice(\r\n\t\t\t\t// \tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t// \t0,\r\n\t\t\t\t// \tcol,\r\n\t\t\t\t// );\r\n\t\t\t\tif (insertPosition === \"before\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey),\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (insertPosition === \"after\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\tcolumns.push(col);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\tcolumns.push(col);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn columns;\r\n};\r\n","import type { AutoTableComponentContextType } from \"../types/base-components\";\r\n\r\nexport const ComponentRegistryHelper = (\r\n\tprops: AutoTableComponentContextType,\r\n) => {\r\n\treturn props;\r\n};\r\n","import { flexRender } from \"@tanstack/react-table\";\r\nimport type { z } from \"zod\";\r\nimport useAutoTableData from \"./hooks/useAutoTableData\";\r\nimport type { RawAutoTableProps } from \"./types/AutoTable-types\";\r\n\r\nexport default function RawAutoTable<T extends z.ZodTypeAny>(\r\n\tprops: RawAutoTableProps<T>,\r\n) {\r\n\tconst { table, Component } = useAutoTableData(props);\r\n\tconst {\r\n\t\tonRowClick,\r\n\t\tisActionColumnComponentEnabled,\r\n\t\tactionColumnComponent: ActionColumnComponent,\r\n\t\tactionHeaderComponent: ActionHeaderComponent,\r\n\t\textraCustomColumns,\r\n\t\tisExtraCustomColumnsEnabled,\r\n\t\tisLoading,\r\n\t\tloadingType,\r\n\t\tsizeOfLoadingRows = 10,\r\n\t} = props;\r\n\treturn (\r\n\t\t<Component.Table>\r\n\t\t\t<Component.TableTHead>\r\n\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\r\n\t\t\t\t\t<Component.TableTR key={headerGroup.id}>\r\n\t\t\t\t\t\t{headerGroup.headers.map((header) => (\r\n\t\t\t\t\t\t\t<Component.TableTH key={header.id}>\r\n\t\t\t\t\t\t\t\t{header.isPlaceholder\r\n\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t: flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\r\n\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t<Component.TableTH>\r\n\t\t\t\t\t\t\t\t{ActionHeaderComponent ? (\r\n\t\t\t\t\t\t\t\t\t<ActionHeaderComponent defaultName=\"Action\" />\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\"Action\"\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t))}\r\n\t\t\t</Component.TableTHead>\r\n\t\t\t{isLoading && loadingType === \"full\" ? (\r\n\t\t\t\t<Component.FullTableLoading isLoading={isLoading} />\r\n\t\t\t) : (\r\n\t\t\t\t<Component.TableTBody>\r\n\t\t\t\t\t{isLoading && loadingType === \"row-based\"\r\n\t\t\t\t\t\t? Array.from({ length: sizeOfLoadingRows }).map((_, index) => (\r\n\t\t\t\t\t\t\t\t<Component.TableTR key={`loading-row-${index.toString()}`}>\r\n\t\t\t\t\t\t\t\t\t{Array.from({\r\n\t\t\t\t\t\t\t\t\t\tlength: table.getVisibleFlatColumns().length,\r\n\t\t\t\t\t\t\t\t\t}).map((__, colIndex) => (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\t\tkey={`loading-cell-${index.toString()}-${colIndex.toString()}`}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t<Component.RowBasedLoading isLoading={isLoading} />\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t: table.getRowModel().rows.map((row) => (\r\n\t\t\t\t\t\t\t\t<Component.TableTR key={row.id}>\r\n\t\t\t\t\t\t\t\t\t{row.getVisibleCells().map((cell) => (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\t\tkey={cell.id}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (isExtraCustomColumnsEnabled) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// check if rowClick is Allowed for the extra custom columns\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst disableOnRowClick = extraCustomColumns?.some(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(column) => column.disableOnRowClick,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (disableOnRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (onRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonRowClick?.(row.original);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\t\tcell.column.columnDef.cell,\r\n\t\t\t\t\t\t\t\t\t\t\t\tcell.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t\t\t{ActionColumnComponent ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<ActionColumnComponent row={row.original} />\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"Please provide a component for the action column\"\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t</Component.TableTBody>\r\n\t\t\t)}\r\n\t\t</Component.Table>\r\n\t);\r\n}\r\n"],"names":["defaultComponents","text","value","_jsx","_Fragment","children","number","enum","image","date","boolean","Table","props","TableTBody","TableTD","TableTH","TableTHead","TableTR","multi_enum","multi_string","multi_number","multi_date","multi_boolean","FullTableLoading","Fragment","RowBasedLoading","ComponentContext","createContext","useComponentContext","useContext","decodeFieldCustomizer","fieldCustomizer","decodeData","JSON","parse","description","success","useAutoTableData","schema","replaceColumns","data","changePositionOfFields","extraCustomColumns","columns","fields","Components","replaceMap","Map","col","accessorKey","set","map","field","key","has","get","componentKey","type","getComponentKey","isImage","Component","header","name","isChangeLabel","label","split","word","charAt","toUpperCase","slice","join","cell","getValue","row","rawData","original","processedValue","Date","toISOString","defaultValue","enums","title","stringify","undefined","some","f","push","length","insertPosition","splice","findIndex","c","useGenerateColumns","useMemo","zodAutoTable","ZodTableClassed","changeJsonFieldPositions","convertToTableUseableFormat","table","useReactTable","getCoreRowModel","components","jsx","Provider","FieldCustomizer","custom","RawAutoTable","onRowClick","isActionColumnComponentEnabled","actionColumnComponent","ActionColumnComponent","actionHeaderComponent","ActionHeaderComponent","isExtraCustomColumnsEnabled","isLoading","loadingType","sizeOfLoadingRows","_jsxs","getHeaderGroups","headerGroup","headers","isPlaceholder","flexRender","column","columnDef","getContext","id","defaultName","Array","from","_","index","getVisibleFlatColumns","__","colIndex","toString","getRowModel","rows","jsxs","getVisibleCells","onClick","disableOnRowClick"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{jsx as e,Fragment as n,jsxs as t}from"react/jsx-runtime";import{createContext as l,useContext as o,useMemo as r}from"react";import{useReactTable as a,getCoreRowModel as i,flexRender as c}from"@tanstack/react-table";import{ZodTableClassed as s}from"zod-helper";const u={text:({value:t})=>e(n,{children:t}),number:({value:t})=>e(n,{children:t}),enum:({value:t})=>e(n,{children:t}),image:({value:t})=>e(n,{children:t}),date:({value:t})=>e(n,{children:t}),boolean:({value:t})=>e(n,{children:t}),Table:n=>e("table",{...n,children:n.children}),TableTBody:({children:n,...t})=>e("tbody",{...t,children:n}),TableTD:({children:n,...t})=>e("td",{...t,children:n}),TableTH:({children:n,...t})=>e("th",{...t,children:n}),TableTHead:({children:n,...t})=>e("thead",{...t,children:n}),TableTR:({children:n,...t})=>e("tr",{...t,children:n}),multi_enum:({value:t})=>e(n,{children:t}),multi_string:({value:t})=>e(n,{children:t}),multi_number:({value:t})=>e(n,{children:t}),multi_date:({value:t})=>e(n,{children:t}),multi_boolean:({value:t})=>e(n,{children:t}),FullTableLoading:()=>e(n,{}),RowBasedLoading:()=>e(n,{})},d=l(u),useComponentContext=()=>o(d),AutoTableComponentsProvider=({children:n,components:t})=>{const l={...u,...t};return e(d.Provider,{value:l,children:n})};function FieldCustomizer(e){return JSON.stringify({custom:!0,...e})}const decodeFieldCustomizer=e=>{try{return{decodeData:JSON.parse(e),description:null,success:!0}}catch{return{decodeData:null,description:e,success:!1}}};function useAutoTableData({schema:t,replaceColumns:l=[],data:o,changePositionOfFields:c,extraCustomColumns:u=[]}){const d=((t,l,o)=>{const r=useComponentContext(),a=new Map;for(const e of l)"accessorKey"in e&&"string"==typeof e.accessorKey&&a.set(e.accessorKey,e);const i=t.map((t=>{const l=t.key;if(a.has(l))return a.get(l);const o=(e=>{switch(e){case"date":return"date";case"enum":return"enum";case"image":return"image";case"number":return"number";case"string":return"text";case"boolean":return"boolean";case"multi-string":return"multi_string";case"multi-number":return"multi_number";case"multi-date":return"multi_date";case"multi-boolean":return"multi_boolean";case"multi-enum":return"multi_enum"}})(t.type),i=r[o],{decodeData:c}=decodeFieldCustomizer(t.description??"");return{header:(s=c?.isChangeLabel?c.label??l:l,s.split(".").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ")),accessorKey:l,cell:({getValue:o,row:r})=>{const a=o(),s=r.original;let u=a;return a instanceof Date&&(u=a.toISOString()),i?e(i,{value:u,rawData:s,defaultValue:t.enums,title:l,description:t.description,...c}):a instanceof Date?e(n,{children:a.toISOString()}):e(n,{children:JSON.stringify(a)})}};var s}));for(const e of l){const n="accessorKey"in e&&"string"==typeof e.accessorKey?e.accessorKey:void 0;n&&!t.some((e=>e.key===n))&&i.push(e)}if(o&&o.length>0)for(const e of o){const[n,t=null]=e.insertPosition?.split(":")??[];n&&t?"before"===t?i.splice(i.findIndex((e=>e.accessorKey===n)),0,e):"after"===t?i.splice(i.findIndex((e=>e.accessorKey===n))+1,0,e):i.push(e):i.push(e)}return i})(r((()=>{const e=new s(t);return c&&e.changeJsonFieldPositions(c),{columns:e.convertToTableUseableFormat()}}),[c,t]).columns,l,u);return{table:a({data:o,columns:d,getCoreRowModel:i()}),Component:useComponentContext()}}function RawAutoTable(n){const{table:l,Component:o}=useAutoTableData(n),{onRowClick:r,isActionColumnComponentEnabled:a,actionColumnComponent:i,actionHeaderComponent:s,extraCustomColumns:u,isExtraCustomColumnsEnabled:d,isLoading:m,loadingType:h,sizeOfLoadingRows:b=10}=n;return t(o.Table,{children:[e(o.TableTHead,{children:l.getHeaderGroups().map((n=>t(o.TableTR,{children:[n.headers.map((n=>e(o.TableTH,{children:n.isPlaceholder?null:c(n.column.columnDef.header,n.getContext())},n.id))),a&&e(o.TableTH,{children:s?e(s,{defaultName:"Action"}):"Action"})]},n.id)))}),m&&"full"===h?e(o.FullTableLoading,{isLoading:m}):e(o.TableTBody,{children:m&&"row-based"===h?Array.from({length:b}).map(((n,t)=>e(o.TableTR,{children:Array.from({length:l.getVisibleFlatColumns().length}).map(((n,l)=>e(o.TableTD,{children:e(o.RowBasedLoading,{isLoading:m})},`loading-cell-${t.toString()}-${l.toString()}`)))},`loading-row-${t.toString()}`))):l.getRowModel().rows.map((n=>t(o.TableTR,{children:[n.getVisibleCells().map((t=>e(o.TableTD,{onClick:()=>{if(d){const e=u?.some((e=>e.disableOnRowClick));if(e)return}r&&r?.(n.original)},children:c(t.column.columnDef.cell,t.getContext())},t.id))),a&&e(o.TableTD,{children:i?e(i,{row:n.original}):"Please provide a component for the action column"})]},n.id)))})]})}const ComponentRegistryHelper=e=>e;export{AutoTableComponentsProvider,ComponentRegistryHelper,FieldCustomizer,RawAutoTable,decodeFieldCustomizer};
1
+ import{jsx as e,Fragment as n,jsxs as t}from"react/jsx-runtime";import{createContext as l,useContext as o,useMemo as r}from"react";import{useReactTable as a,getCoreRowModel as i,flexRender as c}from"@tanstack/react-table";import{ZodTableClassed as s}from"zod-helper";const u={text:({value:t})=>e(n,{children:t}),number:({value:t})=>e(n,{children:t}),enum:({value:t})=>e(n,{children:t}),image:({value:t})=>e(n,{children:t}),date:({value:t})=>e(n,{children:t}),boolean:({value:t})=>e(n,{children:t}),Table:n=>e("table",{...n,children:n.children}),TableTBody:({children:n,...t})=>e("tbody",{...t,children:n}),TableTD:({children:n,...t})=>e("td",{...t,children:n}),TableTH:({children:n,...t})=>e("th",{...t,children:n}),TableTHead:({children:n,...t})=>e("thead",{...t,children:n}),TableTR:({children:n,...t})=>e("tr",{...t,children:n}),multi_enum:({value:t})=>e(n,{children:t}),multi_string:({value:t})=>e(n,{children:t}),multi_number:({value:t})=>e(n,{children:t}),multi_date:({value:t})=>e(n,{children:t}),multi_boolean:({value:t})=>e(n,{children:t}),FullTableLoading:()=>e(n,{}),RowBasedLoading:()=>e(n,{})},d=l(u),useComponentContext=()=>o(d),AutoTableComponentsProvider=({children:n,components:t})=>{const l={...u,...t};return e(d.Provider,{value:l,children:n})};function FieldCustomizer(e){return JSON.stringify({custom:!0,...e})}const decodeFieldCustomizer=e=>{try{return{decodeData:JSON.parse(e),description:null,success:!0}}catch{return{decodeData:null,description:e,success:!1}}};function useAutoTableData({schema:t,replaceColumns:l=[],data:o,changePositionOfFields:c,extraCustomColumns:u=[]}){const d=((t,l,o)=>{const r=useComponentContext(),a=new Map;for(const e of l)"accessorKey"in e&&"string"==typeof e.accessorKey&&a.set(e.accessorKey,e);const i=t.map((t=>{const l=t.key;if(a.has(l))return a.get(l);const o=(e=>{switch(e){case"date":return"date";case"enum":return"enum";case"image":return"image";case"number":return"number";case"string":return"text";case"boolean":return"boolean";case"multi-string":return"multi_string";case"multi-number":return"multi_number";case"multi-date":return"multi_date";case"multi-boolean":return"multi_boolean";case"multi-enum":return"multi_enum"}})(t.type),{decodeData:i}=decodeFieldCustomizer(t.description??""),c=i?.isImage,s=r[c?"image":o];return{header:(u=i?.isChangeLabel?i.label??l:l,u.split(".").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ")),accessorKey:l,cell:({getValue:o,row:r})=>{const a=o(),c=r.original;let u=a;return a instanceof Date&&(u=a.toISOString()),s?e(s,{value:u,rawData:c,defaultValue:t.enums,title:l,description:t.description,...i}):a instanceof Date?e(n,{children:a.toISOString()}):e(n,{children:JSON.stringify(a)})}};var u}));for(const e of l){const n="accessorKey"in e&&"string"==typeof e.accessorKey?e.accessorKey:void 0;n&&!t.some((e=>e.key===n))&&i.push(e)}if(o&&o.length>0)for(const e of o){const[n,t=null]=e.insertPosition?.split(":")??[];n&&t?"before"===t?i.splice(i.findIndex((e=>e.accessorKey===n)),0,e):"after"===t?i.splice(i.findIndex((e=>e.accessorKey===n))+1,0,e):i.push(e):i.push(e)}return i})(r((()=>{const e=new s(t);return c&&e.changeJsonFieldPositions(c),{columns:e.convertToTableUseableFormat()}}),[c,t]).columns,l,u);return{table:a({data:o,columns:d,getCoreRowModel:i()}),Component:useComponentContext()}}function RawAutoTable(n){const{table:l,Component:o}=useAutoTableData(n),{onRowClick:r,isActionColumnComponentEnabled:a,actionColumnComponent:i,actionHeaderComponent:s,extraCustomColumns:u,isExtraCustomColumnsEnabled:d,isLoading:m,loadingType:h,sizeOfLoadingRows:b=10}=n;return t(o.Table,{children:[e(o.TableTHead,{children:l.getHeaderGroups().map((n=>t(o.TableTR,{children:[n.headers.map((n=>e(o.TableTH,{children:n.isPlaceholder?null:c(n.column.columnDef.header,n.getContext())},n.id))),a&&e(o.TableTH,{children:s?e(s,{defaultName:"Action"}):"Action"})]},n.id)))}),m&&"full"===h?e(o.FullTableLoading,{isLoading:m}):e(o.TableTBody,{children:m&&"row-based"===h?Array.from({length:b}).map(((n,t)=>e(o.TableTR,{children:Array.from({length:l.getVisibleFlatColumns().length}).map(((n,l)=>e(o.TableTD,{children:e(o.RowBasedLoading,{isLoading:m})},`loading-cell-${t.toString()}-${l.toString()}`)))},`loading-row-${t.toString()}`))):l.getRowModel().rows.map((n=>t(o.TableTR,{children:[n.getVisibleCells().map((t=>e(o.TableTD,{onClick:()=>{if(d){const e=u?.some((e=>e.disableOnRowClick));if(e)return}r&&r?.(n.original)},children:c(t.column.columnDef.cell,t.getContext())},t.id))),a&&e(o.TableTD,{children:i?e(i,{row:n.original}):"Please provide a component for the action column"})]},n.id)))})]})}const ComponentRegistryHelper=e=>e;export{AutoTableComponentsProvider,ComponentRegistryHelper,FieldCustomizer,RawAutoTable,decodeFieldCustomizer};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../package/auto-table/context/useComponentContext.tsx","../package/auto-table/utils/FieldChanger.tsx","../package/auto-table/hooks/useAutoTableData.tsx","../package/auto-table/core/useGenerate-columns.tsx","../package/auto-table/index.tsx","../package/auto-table/utils/ComponentRegistryHelper.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\r\nimport { type ReactNode, createContext, useContext } from \"react\";\r\n\r\nimport type {\r\n\tAutoTableComponentContextType,\r\n\tTableType,\r\n\tTable_TBody_Type,\r\n\tTable_TD_Type,\r\n\tTable_TH_Type,\r\n\tTable_THead_Type,\r\n\tTable_TR_Type,\r\n} from \"../types/base-components\";\r\n\r\nconst defaultComponents: AutoTableComponentContextType = {\r\n\ttext: ({ value }) => <>{value}</>,\r\n\tnumber: ({ value }) => <>{value}</>,\r\n\tenum: ({ value }) => <>{value}</>,\r\n\timage: ({ value }) => <>{value}</>,\r\n\tdate: ({ value }) => <>{value}</>,\r\n\tboolean: ({ value }) => <>{value}</>,\r\n\tTable: (props: TableType) => <table {...props}>{props.children}</table>,\r\n\tTableTBody: ({ children, ...props }: Table_TBody_Type) => (\r\n\t\t<tbody {...props}>{children}</tbody>\r\n\t),\r\n\tTableTD: ({ children, ...props }: Table_TD_Type) => (\r\n\t\t<td {...props}>{children}</td>\r\n\t),\r\n\tTableTH: ({ children, ...props }: Table_TH_Type) => (\r\n\t\t<th {...props}>{children}</th>\r\n\t),\r\n\tTableTHead: ({ children, ...props }: Table_THead_Type) => (\r\n\t\t<thead {...props}>{children}</thead>\r\n\t),\r\n\tTableTR: ({ children, ...props }: Table_TR_Type) => (\r\n\t\t<tr {...props}>{children}</tr>\r\n\t),\r\n\tmulti_enum: ({ value }) => <>{value}</>,\r\n\tmulti_string: ({ value }) => <>{value}</>,\r\n\tmulti_number: ({ value }) => <>{value}</>,\r\n\tmulti_date: ({ value }) => <>{value}</>,\r\n\tmulti_boolean: ({ value }) => <>{value}</>,\r\n\tFullTableLoading: () => <></>,\r\n\tRowBasedLoading: () => <></>,\r\n};\r\n\r\nconst ComponentContext =\r\n\tcreateContext<AutoTableComponentContextType>(defaultComponents);\r\n\r\nexport const useComponentContext = () => useContext(ComponentContext);\r\n\r\ntype ComponentProviderProps = {\r\n\tchildren: ReactNode;\r\n\tcomponents?: Partial<AutoTableComponentContextType>;\r\n};\r\n\r\nexport const AutoTableComponentsProvider = ({\r\n\tchildren,\r\n\tcomponents,\r\n}: ComponentProviderProps) => {\r\n\tconst value = {\r\n\t\t...defaultComponents,\r\n\t\t...components,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ComponentContext.Provider value={value}>\r\n\t\t\t{children}\r\n\t\t</ComponentContext.Provider>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\ninterface FieldChangerProps {\r\n\tisChangeLabel?: boolean;\r\n\tlabel?: string;\r\n\tisImage?: boolean;\r\n\taddValueTextAfter?: string;\r\n\taddValueTextBefore?: string;\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\trandomData?: Record<string, any>;\r\n}\r\n\r\nexport function FieldCustomizer(props: FieldChangerProps) {\r\n\treturn JSON.stringify({\r\n\t\tcustom: true,\r\n\t\t...props,\r\n\t});\r\n}\r\nexport const decodeFieldCustomizer = (\r\n\tfieldCustomizer: string,\r\n): {\r\n\tdecodeData: FieldChangerProps | null;\r\n\tdescription: string | null;\r\n\tsuccess: boolean;\r\n} => {\r\n\ttry {\r\n\t\treturn {\r\n\t\t\tdecodeData: JSON.parse(fieldCustomizer) as FieldChangerProps,\r\n\t\t\tdescription: null,\r\n\t\t\tsuccess: true,\r\n\t\t};\r\n\t} catch {\r\n\t\treturn {\r\n\t\t\tdecodeData: null,\r\n\t\t\tdescription: fieldCustomizer,\r\n\t\t\tsuccess: false,\r\n\t\t};\r\n\t}\r\n};\r\n","import { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\r\nimport { useMemo } from \"react\";\r\nimport type { z } from \"zod\";\r\nimport { ZodTableClassed } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport { useGenerateColumns } from \"../core/useGenerate-columns\";\r\nimport type { RawAutoTableProps } from \"../types/AutoTable-types\";\r\n\r\nexport default function useAutoTableData<T extends z.ZodTypeAny>({\r\n\tschema,\r\n\treplaceColumns = [],\r\n\tdata,\r\n\tchangePositionOfFields,\r\n\textraCustomColumns = [],\r\n}: RawAutoTableProps<T>) {\r\n\tconst zodAutoTable = useMemo(() => {\r\n\t\tconst zodAutoTable = new ZodTableClassed(schema);\r\n\t\tif (changePositionOfFields) {\r\n\t\t\tzodAutoTable.changeJsonFieldPositions(changePositionOfFields);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcolumns: zodAutoTable.convertToTableUseableFormat(),\r\n\t\t};\r\n\t}, [changePositionOfFields, schema]);\r\n\tconst columns = useGenerateColumns(\r\n\t\tzodAutoTable.columns,\r\n\t\treplaceColumns,\r\n\t\textraCustomColumns,\r\n\t);\r\n\tconst table = useReactTable({\r\n\t\tdata,\r\n\t\tcolumns,\r\n\t\tgetCoreRowModel: getCoreRowModel(),\r\n\t});\r\n\tconst Component = useComponentContext();\r\n\treturn { table, Component };\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { ColumnDef } from \"@tanstack/react-table\";\r\nimport type { FlattenSchemaWithKeyAndTypes } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport type { ExtraColumnConfig } from \"../types/AutoTable-types\";\r\nimport { decodeFieldCustomizer } from \"../utils/FieldChanger\";\r\ntype fieldDataType =\r\n\t| \"string\"\r\n\t| \"number\"\r\n\t| \"boolean\"\r\n\t| \"date\"\r\n\t| \"enum\"\r\n\t| \"image\"\r\n\t| \"multi-string\"\r\n\t| \"multi-number\"\r\n\t| \"multi-date\"\r\n\t| \"multi-boolean\"\r\n\t| \"multi-enum\";\r\n\r\nconst getComponentKey = (type: fieldDataType) => {\r\n\tswitch (type) {\r\n\t\tcase \"date\":\r\n\t\t\treturn \"date\";\r\n\t\tcase \"enum\":\r\n\t\t\treturn \"enum\";\r\n\t\tcase \"image\":\r\n\t\t\treturn \"image\";\r\n\t\tcase \"number\":\r\n\t\t\treturn \"number\";\r\n\t\tcase \"string\":\r\n\t\t\treturn \"text\";\r\n\t\tcase \"boolean\":\r\n\t\t\treturn \"boolean\";\r\n\t\tcase \"multi-string\":\r\n\t\t\treturn \"multi_string\";\r\n\t\tcase \"multi-number\":\r\n\t\t\treturn \"multi_number\";\r\n\t\tcase \"multi-date\":\r\n\t\t\treturn \"multi_date\";\r\n\t\tcase \"multi-boolean\":\r\n\t\t\treturn \"multi_boolean\";\r\n\t\tcase \"multi-enum\":\r\n\t\t\treturn \"multi_enum\";\r\n\t}\r\n};\r\nconst getColumnName = (name: string) => {\r\n\t// name to Name , address.street to Address Street , address.owner.name to Address Owner Name\r\n\tconst words = name.split(\".\");\r\n\treturn words\r\n\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n\t\t.join(\" \");\r\n};\r\nexport const useGenerateColumns = (\r\n\tfields: FlattenSchemaWithKeyAndTypes[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\treplaceColumns: ColumnDef<any>[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\textraCustomColumns: ExtraColumnConfig<any>[\"extraCustomColumns\"],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n): ColumnDef<any>[] => {\r\n\tconst Components = useComponentContext();\r\n\t// Step 1: Create a map of replace columns where accessorKey exists\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst replaceMap = new Map<string, ColumnDef<any>>();\r\n\tfor (const col of replaceColumns) {\r\n\t\tif (\"accessorKey\" in col && typeof col.accessorKey === \"string\") {\r\n\t\t\treplaceMap.set(col.accessorKey, col);\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 2: Generate columns from fields\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst columns: ColumnDef<any>[] = fields.map((field) => {\r\n\t\tconst key = field.key;\r\n\t\tif (replaceMap.has(key)) {\r\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\r\n\t\t\treturn replaceMap.get(key)!;\r\n\t\t}\r\n\r\n\t\tconst componentKey = getComponentKey(field.type as fieldDataType);\r\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\t\tconst Component = Components[componentKey] as React.FC<any>;\r\n\t\tconst { decodeData } = decodeFieldCustomizer(field.description ?? \"\");\r\n\r\n\t\treturn {\r\n\t\t\theader: getColumnName(\r\n\t\t\t\tdecodeData?.isChangeLabel ? (decodeData.label ?? key) : key,\r\n\t\t\t),\r\n\t\t\taccessorKey: key,\r\n\t\t\tcell: ({ getValue, row }) => {\r\n\t\t\t\tconst value = getValue();\r\n\t\t\t\tconst rawData = row.original;\r\n\r\n\t\t\t\t// Convert Date objects to strings before passing to components\r\n\t\t\t\tlet processedValue = value;\r\n\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\tprocessedValue = value.toISOString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!Component) {\r\n\t\t\t\t\t// Handle Date objects or other non-renderable values\r\n\t\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\t\treturn <>{value.toISOString()}</>;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn <>{JSON.stringify(value)}</>;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Component\r\n\t\t\t\t\t\tvalue={processedValue}\r\n\t\t\t\t\t\trawData={rawData}\r\n\t\t\t\t\t\tdefaultValue={field.enums}\r\n\t\t\t\t\t\ttitle={key}\r\n\t\t\t\t\t\tdescription={field.description}\r\n\t\t\t\t\t\t{...decodeData}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n\r\n\t// Step 3: Add additional replaceColumns that don't conflict with fields\r\n\tfor (const col of replaceColumns) {\r\n\t\tconst key =\r\n\t\t\t\"accessorKey\" in col && typeof col.accessorKey === \"string\"\r\n\t\t\t\t? col.accessorKey\r\n\t\t\t\t: undefined;\r\n\t\tif (key && !fields.some((f) => f.key === key)) {\r\n\t\t\tcolumns.push(col);\r\n\t\t}\r\n\t}\r\n\tif (extraCustomColumns && extraCustomColumns.length > 0) {\r\n\t\tfor (const col of extraCustomColumns) {\r\n\t\t\t// insertPosition split by : and get the first part as the accessorKey and the second part as the insertPosition after,before\r\n\t\t\tconst [accessorKey, insertPosition = null] =\r\n\t\t\t\t// @ts-expect-error - insertPosition is not always defined and\r\n\t\t\t\tcol.insertPosition?.split(\":\") ?? [];\r\n\t\t\t// if accessorKey and insertPosition both exist then insert the column after the accessorKey\r\n\t\t\tif (accessorKey && insertPosition) {\r\n\t\t\t\t// columns.splice(\r\n\t\t\t\t// \tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t// \t0,\r\n\t\t\t\t// \tcol,\r\n\t\t\t\t// );\r\n\t\t\t\tif (insertPosition === \"before\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey),\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (insertPosition === \"after\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\tcolumns.push(col);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\tcolumns.push(col);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn columns;\r\n};\r\n","import { flexRender } from \"@tanstack/react-table\";\r\nimport type { z } from \"zod\";\r\nimport useAutoTableData from \"./hooks/useAutoTableData\";\r\nimport type { RawAutoTableProps } from \"./types/AutoTable-types\";\r\n\r\nexport default function RawAutoTable<T extends z.ZodTypeAny>(\r\n\tprops: RawAutoTableProps<T>,\r\n) {\r\n\tconst { table, Component } = useAutoTableData(props);\r\n\tconst {\r\n\t\tonRowClick,\r\n\t\tisActionColumnComponentEnabled,\r\n\t\tactionColumnComponent: ActionColumnComponent,\r\n\t\tactionHeaderComponent: ActionHeaderComponent,\r\n\t\textraCustomColumns,\r\n\t\tisExtraCustomColumnsEnabled,\r\n\t\tisLoading,\r\n\t\tloadingType,\r\n\t\tsizeOfLoadingRows = 10,\r\n\t} = props;\r\n\treturn (\r\n\t\t<Component.Table>\r\n\t\t\t<Component.TableTHead>\r\n\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\r\n\t\t\t\t\t<Component.TableTR key={headerGroup.id}>\r\n\t\t\t\t\t\t{headerGroup.headers.map((header) => (\r\n\t\t\t\t\t\t\t<Component.TableTH key={header.id}>\r\n\t\t\t\t\t\t\t\t{header.isPlaceholder\r\n\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t: flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\r\n\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t<Component.TableTH>\r\n\t\t\t\t\t\t\t\t{ActionHeaderComponent ? (\r\n\t\t\t\t\t\t\t\t\t<ActionHeaderComponent defaultName=\"Action\" />\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\"Action\"\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t))}\r\n\t\t\t</Component.TableTHead>\r\n\t\t\t{isLoading && loadingType === \"full\" ? (\r\n\t\t\t\t<Component.FullTableLoading isLoading={isLoading} />\r\n\t\t\t) : (\r\n\t\t\t\t<Component.TableTBody>\r\n\t\t\t\t\t{isLoading && loadingType === \"row-based\"\r\n\t\t\t\t\t\t? Array.from({ length: sizeOfLoadingRows }).map((_, index) => (\r\n\t\t\t\t\t\t\t\t<Component.TableTR key={`loading-row-${index.toString()}`}>\r\n\t\t\t\t\t\t\t\t\t{Array.from({\r\n\t\t\t\t\t\t\t\t\t\tlength: table.getVisibleFlatColumns().length,\r\n\t\t\t\t\t\t\t\t\t}).map((__, colIndex) => (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\t\tkey={`loading-cell-${index.toString()}-${colIndex.toString()}`}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t<Component.RowBasedLoading isLoading={isLoading} />\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t: table.getRowModel().rows.map((row) => (\r\n\t\t\t\t\t\t\t\t<Component.TableTR key={row.id}>\r\n\t\t\t\t\t\t\t\t\t{row.getVisibleCells().map((cell) => (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\t\tkey={cell.id}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (isExtraCustomColumnsEnabled) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// check if rowClick is Allowed for the extra custom columns\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst disableOnRowClick = extraCustomColumns?.some(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(column) => column.disableOnRowClick,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (disableOnRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (onRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonRowClick?.(row.original);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\t\tcell.column.columnDef.cell,\r\n\t\t\t\t\t\t\t\t\t\t\t\tcell.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t\t\t{ActionColumnComponent ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<ActionColumnComponent row={row.original} />\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"Please provide a component for the action column\"\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t</Component.TableTBody>\r\n\t\t\t)}\r\n\t\t</Component.Table>\r\n\t);\r\n}\r\n","import type { AutoTableComponentContextType } from \"../types/base-components\";\r\n\r\nexport const ComponentRegistryHelper = (\r\n\tprops: AutoTableComponentContextType,\r\n) => {\r\n\treturn props;\r\n};\r\n"],"names":["defaultComponents","text","value","_jsx","_Fragment","children","number","enum","image","date","boolean","Table","props","TableTBody","TableTD","TableTH","TableTHead","TableTR","multi_enum","multi_string","multi_number","multi_date","multi_boolean","FullTableLoading","RowBasedLoading","ComponentContext","createContext","useComponentContext","useContext","AutoTableComponentsProvider","components","Provider","FieldCustomizer","JSON","stringify","custom","decodeFieldCustomizer","fieldCustomizer","decodeData","parse","description","success","useAutoTableData","schema","replaceColumns","data","changePositionOfFields","extraCustomColumns","columns","fields","Components","replaceMap","Map","col","accessorKey","set","map","field","key","has","get","componentKey","type","getComponentKey","Component","header","name","isChangeLabel","label","split","word","charAt","toUpperCase","slice","join","cell","getValue","row","rawData","original","processedValue","Date","toISOString","defaultValue","enums","title","undefined","some","f","push","length","insertPosition","splice","findIndex","c","useGenerateColumns","useMemo","zodAutoTable","ZodTableClassed","changeJsonFieldPositions","convertToTableUseableFormat","table","useReactTable","getCoreRowModel","RawAutoTable","onRowClick","isActionColumnComponentEnabled","actionColumnComponent","ActionColumnComponent","actionHeaderComponent","ActionHeaderComponent","isExtraCustomColumnsEnabled","isLoading","loadingType","sizeOfLoadingRows","_jsxs","getHeaderGroups","headerGroup","headers","isPlaceholder","flexRender","column","columnDef","getContext","id","defaultName","Array","from","_","index","getVisibleFlatColumns","__","colIndex","toString","getRowModel","rows","getVisibleCells","onClick","disableOnRowClick","ComponentRegistryHelper"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../package/auto-table/context/useComponentContext.tsx","../package/auto-table/utils/FieldChanger.tsx","../package/auto-table/hooks/useAutoTableData.tsx","../package/auto-table/core/useGenerate-columns.tsx","../package/auto-table/index.tsx","../package/auto-table/utils/ComponentRegistryHelper.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\r\nimport { type ReactNode, createContext, useContext } from \"react\";\r\n\r\nimport type {\r\n\tAutoTableComponentContextType,\r\n\tTableType,\r\n\tTable_TBody_Type,\r\n\tTable_TD_Type,\r\n\tTable_TH_Type,\r\n\tTable_THead_Type,\r\n\tTable_TR_Type,\r\n} from \"../types/base-components\";\r\n\r\nconst defaultComponents: AutoTableComponentContextType = {\r\n\ttext: ({ value }) => <>{value}</>,\r\n\tnumber: ({ value }) => <>{value}</>,\r\n\tenum: ({ value }) => <>{value}</>,\r\n\timage: ({ value }) => <>{value}</>,\r\n\tdate: ({ value }) => <>{value}</>,\r\n\tboolean: ({ value }) => <>{value}</>,\r\n\tTable: (props: TableType) => <table {...props}>{props.children}</table>,\r\n\tTableTBody: ({ children, ...props }: Table_TBody_Type) => (\r\n\t\t<tbody {...props}>{children}</tbody>\r\n\t),\r\n\tTableTD: ({ children, ...props }: Table_TD_Type) => (\r\n\t\t<td {...props}>{children}</td>\r\n\t),\r\n\tTableTH: ({ children, ...props }: Table_TH_Type) => (\r\n\t\t<th {...props}>{children}</th>\r\n\t),\r\n\tTableTHead: ({ children, ...props }: Table_THead_Type) => (\r\n\t\t<thead {...props}>{children}</thead>\r\n\t),\r\n\tTableTR: ({ children, ...props }: Table_TR_Type) => (\r\n\t\t<tr {...props}>{children}</tr>\r\n\t),\r\n\tmulti_enum: ({ value }) => <>{value}</>,\r\n\tmulti_string: ({ value }) => <>{value}</>,\r\n\tmulti_number: ({ value }) => <>{value}</>,\r\n\tmulti_date: ({ value }) => <>{value}</>,\r\n\tmulti_boolean: ({ value }) => <>{value}</>,\r\n\tFullTableLoading: () => <></>,\r\n\tRowBasedLoading: () => <></>,\r\n};\r\n\r\nconst ComponentContext =\r\n\tcreateContext<AutoTableComponentContextType>(defaultComponents);\r\n\r\nexport const useComponentContext = () => useContext(ComponentContext);\r\n\r\ntype ComponentProviderProps = {\r\n\tchildren: ReactNode;\r\n\tcomponents?: Partial<AutoTableComponentContextType>;\r\n};\r\n\r\nexport const AutoTableComponentsProvider = ({\r\n\tchildren,\r\n\tcomponents,\r\n}: ComponentProviderProps) => {\r\n\tconst value = {\r\n\t\t...defaultComponents,\r\n\t\t...components,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ComponentContext.Provider value={value}>\r\n\t\t\t{children}\r\n\t\t</ComponentContext.Provider>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\ninterface FieldChangerProps {\r\n\tisChangeLabel?: boolean;\r\n\tlabel?: string;\r\n\tisImage?: boolean;\r\n\taddValueTextAfter?: string;\r\n\taddValueTextBefore?: string;\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\trandomData?: Record<string, any>;\r\n}\r\n\r\nexport function FieldCustomizer(props: FieldChangerProps) {\r\n\treturn JSON.stringify({\r\n\t\tcustom: true,\r\n\t\t...props,\r\n\t});\r\n}\r\nexport const decodeFieldCustomizer = (\r\n\tfieldCustomizer: string,\r\n): {\r\n\tdecodeData: FieldChangerProps | null;\r\n\tdescription: string | null;\r\n\tsuccess: boolean;\r\n} => {\r\n\ttry {\r\n\t\treturn {\r\n\t\t\tdecodeData: JSON.parse(fieldCustomizer) as FieldChangerProps,\r\n\t\t\tdescription: null,\r\n\t\t\tsuccess: true,\r\n\t\t};\r\n\t} catch {\r\n\t\treturn {\r\n\t\t\tdecodeData: null,\r\n\t\t\tdescription: fieldCustomizer,\r\n\t\t\tsuccess: false,\r\n\t\t};\r\n\t}\r\n};\r\n","import { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\r\nimport { useMemo } from \"react\";\r\nimport type { z } from \"zod\";\r\nimport { ZodTableClassed } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport { useGenerateColumns } from \"../core/useGenerate-columns\";\r\nimport type { RawAutoTableProps } from \"../types/AutoTable-types\";\r\n\r\nexport default function useAutoTableData<T extends z.ZodTypeAny>({\r\n\tschema,\r\n\treplaceColumns = [],\r\n\tdata,\r\n\tchangePositionOfFields,\r\n\textraCustomColumns = [],\r\n}: RawAutoTableProps<T>) {\r\n\tconst zodAutoTable = useMemo(() => {\r\n\t\tconst zodAutoTable = new ZodTableClassed(schema);\r\n\t\tif (changePositionOfFields) {\r\n\t\t\tzodAutoTable.changeJsonFieldPositions(changePositionOfFields);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcolumns: zodAutoTable.convertToTableUseableFormat(),\r\n\t\t};\r\n\t}, [changePositionOfFields, schema]);\r\n\tconst columns = useGenerateColumns(\r\n\t\tzodAutoTable.columns,\r\n\t\treplaceColumns,\r\n\t\textraCustomColumns,\r\n\t);\r\n\tconst table = useReactTable({\r\n\t\tdata,\r\n\t\tcolumns,\r\n\t\tgetCoreRowModel: getCoreRowModel(),\r\n\t});\r\n\tconst Component = useComponentContext();\r\n\treturn { table, Component };\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { ColumnDef } from \"@tanstack/react-table\";\r\nimport type { FlattenSchemaWithKeyAndTypes } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport type { ExtraColumnConfig } from \"../types/AutoTable-types\";\r\nimport { decodeFieldCustomizer } from \"../utils/FieldChanger\";\r\ntype fieldDataType =\r\n\t| \"string\"\r\n\t| \"number\"\r\n\t| \"boolean\"\r\n\t| \"date\"\r\n\t| \"enum\"\r\n\t| \"image\"\r\n\t| \"multi-string\"\r\n\t| \"multi-number\"\r\n\t| \"multi-date\"\r\n\t| \"multi-boolean\"\r\n\t| \"multi-enum\";\r\n\r\nconst getComponentKey = (type: fieldDataType) => {\r\n\tswitch (type) {\r\n\t\tcase \"date\":\r\n\t\t\treturn \"date\";\r\n\t\tcase \"enum\":\r\n\t\t\treturn \"enum\";\r\n\t\tcase \"image\":\r\n\t\t\treturn \"image\";\r\n\t\tcase \"number\":\r\n\t\t\treturn \"number\";\r\n\t\tcase \"string\":\r\n\t\t\treturn \"text\";\r\n\t\tcase \"boolean\":\r\n\t\t\treturn \"boolean\";\r\n\t\tcase \"multi-string\":\r\n\t\t\treturn \"multi_string\";\r\n\t\tcase \"multi-number\":\r\n\t\t\treturn \"multi_number\";\r\n\t\tcase \"multi-date\":\r\n\t\t\treturn \"multi_date\";\r\n\t\tcase \"multi-boolean\":\r\n\t\t\treturn \"multi_boolean\";\r\n\t\tcase \"multi-enum\":\r\n\t\t\treturn \"multi_enum\";\r\n\t}\r\n};\r\nconst getColumnName = (name: string) => {\r\n\t// name to Name , address.street to Address Street , address.owner.name to Address Owner Name\r\n\tconst words = name.split(\".\");\r\n\treturn words\r\n\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n\t\t.join(\" \");\r\n};\r\nexport const useGenerateColumns = (\r\n\tfields: FlattenSchemaWithKeyAndTypes[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\treplaceColumns: ColumnDef<any>[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\textraCustomColumns: ExtraColumnConfig<any>[\"extraCustomColumns\"],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n): ColumnDef<any>[] => {\r\n\tconst Components = useComponentContext();\r\n\t// Step 1: Create a map of replace columns where accessorKey exists\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst replaceMap = new Map<string, ColumnDef<any>>();\r\n\tfor (const col of replaceColumns) {\r\n\t\tif (\"accessorKey\" in col && typeof col.accessorKey === \"string\") {\r\n\t\t\treplaceMap.set(col.accessorKey, col);\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 2: Generate columns from fields\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst columns: ColumnDef<any>[] = fields.map((field) => {\r\n\t\tconst key = field.key;\r\n\t\tif (replaceMap.has(key)) {\r\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\r\n\t\t\treturn replaceMap.get(key)!;\r\n\t\t}\r\n\r\n\t\tconst componentKey = getComponentKey(field.type as fieldDataType);\r\n\t\tconst { decodeData } = decodeFieldCustomizer(field.description ?? \"\");\r\n\t\tconst isImage = decodeData?.isImage;\r\n\t\tconst Component = Components[\r\n\t\t\tisImage ? \"image\" : componentKey\r\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\t\t] as React.FC<any>;\r\n\r\n\t\treturn {\r\n\t\t\theader: getColumnName(\r\n\t\t\t\tdecodeData?.isChangeLabel ? (decodeData.label ?? key) : key,\r\n\t\t\t),\r\n\t\t\taccessorKey: key,\r\n\t\t\tcell: ({ getValue, row }) => {\r\n\t\t\t\tconst value = getValue();\r\n\t\t\t\tconst rawData = row.original;\r\n\r\n\t\t\t\t// Convert Date objects to strings before passing to components\r\n\t\t\t\tlet processedValue = value;\r\n\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\tprocessedValue = value.toISOString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!Component) {\r\n\t\t\t\t\t// Handle Date objects or other non-renderable values\r\n\t\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\t\treturn <>{value.toISOString()}</>;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn <>{JSON.stringify(value)}</>;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Component\r\n\t\t\t\t\t\tvalue={processedValue}\r\n\t\t\t\t\t\trawData={rawData}\r\n\t\t\t\t\t\tdefaultValue={field.enums}\r\n\t\t\t\t\t\ttitle={key}\r\n\t\t\t\t\t\tdescription={field.description}\r\n\t\t\t\t\t\t{...decodeData}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n\r\n\t// Step 3: Add additional replaceColumns that don't conflict with fields\r\n\tfor (const col of replaceColumns) {\r\n\t\tconst key =\r\n\t\t\t\"accessorKey\" in col && typeof col.accessorKey === \"string\"\r\n\t\t\t\t? col.accessorKey\r\n\t\t\t\t: undefined;\r\n\t\tif (key && !fields.some((f) => f.key === key)) {\r\n\t\t\tcolumns.push(col);\r\n\t\t}\r\n\t}\r\n\tif (extraCustomColumns && extraCustomColumns.length > 0) {\r\n\t\tfor (const col of extraCustomColumns) {\r\n\t\t\t// insertPosition split by : and get the first part as the accessorKey and the second part as the insertPosition after,before\r\n\t\t\tconst [accessorKey, insertPosition = null] =\r\n\t\t\t\t// @ts-expect-error - insertPosition is not always defined and\r\n\t\t\t\tcol.insertPosition?.split(\":\") ?? [];\r\n\t\t\t// if accessorKey and insertPosition both exist then insert the column after the accessorKey\r\n\t\t\tif (accessorKey && insertPosition) {\r\n\t\t\t\t// columns.splice(\r\n\t\t\t\t// \tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t// \t0,\r\n\t\t\t\t// \tcol,\r\n\t\t\t\t// );\r\n\t\t\t\tif (insertPosition === \"before\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey),\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (insertPosition === \"after\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\tcolumns.push(col);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\tcolumns.push(col);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn columns;\r\n};\r\n","import { flexRender } from \"@tanstack/react-table\";\r\nimport type { z } from \"zod\";\r\nimport useAutoTableData from \"./hooks/useAutoTableData\";\r\nimport type { RawAutoTableProps } from \"./types/AutoTable-types\";\r\n\r\nexport default function RawAutoTable<T extends z.ZodTypeAny>(\r\n\tprops: RawAutoTableProps<T>,\r\n) {\r\n\tconst { table, Component } = useAutoTableData(props);\r\n\tconst {\r\n\t\tonRowClick,\r\n\t\tisActionColumnComponentEnabled,\r\n\t\tactionColumnComponent: ActionColumnComponent,\r\n\t\tactionHeaderComponent: ActionHeaderComponent,\r\n\t\textraCustomColumns,\r\n\t\tisExtraCustomColumnsEnabled,\r\n\t\tisLoading,\r\n\t\tloadingType,\r\n\t\tsizeOfLoadingRows = 10,\r\n\t} = props;\r\n\treturn (\r\n\t\t<Component.Table>\r\n\t\t\t<Component.TableTHead>\r\n\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\r\n\t\t\t\t\t<Component.TableTR key={headerGroup.id}>\r\n\t\t\t\t\t\t{headerGroup.headers.map((header) => (\r\n\t\t\t\t\t\t\t<Component.TableTH key={header.id}>\r\n\t\t\t\t\t\t\t\t{header.isPlaceholder\r\n\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t: flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\r\n\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t<Component.TableTH>\r\n\t\t\t\t\t\t\t\t{ActionHeaderComponent ? (\r\n\t\t\t\t\t\t\t\t\t<ActionHeaderComponent defaultName=\"Action\" />\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\"Action\"\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t))}\r\n\t\t\t</Component.TableTHead>\r\n\t\t\t{isLoading && loadingType === \"full\" ? (\r\n\t\t\t\t<Component.FullTableLoading isLoading={isLoading} />\r\n\t\t\t) : (\r\n\t\t\t\t<Component.TableTBody>\r\n\t\t\t\t\t{isLoading && loadingType === \"row-based\"\r\n\t\t\t\t\t\t? Array.from({ length: sizeOfLoadingRows }).map((_, index) => (\r\n\t\t\t\t\t\t\t\t<Component.TableTR key={`loading-row-${index.toString()}`}>\r\n\t\t\t\t\t\t\t\t\t{Array.from({\r\n\t\t\t\t\t\t\t\t\t\tlength: table.getVisibleFlatColumns().length,\r\n\t\t\t\t\t\t\t\t\t}).map((__, colIndex) => (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\t\tkey={`loading-cell-${index.toString()}-${colIndex.toString()}`}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t<Component.RowBasedLoading isLoading={isLoading} />\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t: table.getRowModel().rows.map((row) => (\r\n\t\t\t\t\t\t\t\t<Component.TableTR key={row.id}>\r\n\t\t\t\t\t\t\t\t\t{row.getVisibleCells().map((cell) => (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\t\tkey={cell.id}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (isExtraCustomColumnsEnabled) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// check if rowClick is Allowed for the extra custom columns\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst disableOnRowClick = extraCustomColumns?.some(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(column) => column.disableOnRowClick,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (disableOnRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (onRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonRowClick?.(row.original);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\t\tcell.column.columnDef.cell,\r\n\t\t\t\t\t\t\t\t\t\t\t\tcell.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t\t\t\t<Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t\t\t{ActionColumnComponent ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<ActionColumnComponent row={row.original} />\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"Please provide a component for the action column\"\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t</Component.TableTBody>\r\n\t\t\t)}\r\n\t\t</Component.Table>\r\n\t);\r\n}\r\n","import type { AutoTableComponentContextType } from \"../types/base-components\";\r\n\r\nexport const ComponentRegistryHelper = (\r\n\tprops: AutoTableComponentContextType,\r\n) => {\r\n\treturn props;\r\n};\r\n"],"names":["defaultComponents","text","value","_jsx","_Fragment","children","number","enum","image","date","boolean","Table","props","TableTBody","TableTD","TableTH","TableTHead","TableTR","multi_enum","multi_string","multi_number","multi_date","multi_boolean","FullTableLoading","RowBasedLoading","ComponentContext","createContext","useComponentContext","useContext","AutoTableComponentsProvider","components","Provider","FieldCustomizer","JSON","stringify","custom","decodeFieldCustomizer","fieldCustomizer","decodeData","parse","description","success","useAutoTableData","schema","replaceColumns","data","changePositionOfFields","extraCustomColumns","columns","fields","Components","replaceMap","Map","col","accessorKey","set","map","field","key","has","get","componentKey","type","getComponentKey","isImage","Component","header","name","isChangeLabel","label","split","word","charAt","toUpperCase","slice","join","cell","getValue","row","rawData","original","processedValue","Date","toISOString","defaultValue","enums","title","undefined","some","f","push","length","insertPosition","splice","findIndex","c","useGenerateColumns","useMemo","zodAutoTable","ZodTableClassed","changeJsonFieldPositions","convertToTableUseableFormat","table","useReactTable","getCoreRowModel","RawAutoTable","onRowClick","isActionColumnComponentEnabled","actionColumnComponent","ActionColumnComponent","actionHeaderComponent","ActionHeaderComponent","isExtraCustomColumnsEnabled","isLoading","loadingType","sizeOfLoadingRows","_jsxs","getHeaderGroups","headerGroup","headers","isPlaceholder","flexRender","column","columnDef","getContext","id","defaultName","Array","from","_","index","getVisibleFlatColumns","__","colIndex","toString","getRowModel","rows","getVisibleCells","onClick","disableOnRowClick","ComponentRegistryHelper"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "raw-auto-table-zod",
3
3
  "description": "Auto-generate typed React tables from Zod schemas",
4
- "version": "0.0.5",
4
+ "version": "0.0.6",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
7
7
  "types": "dist/index.d.ts",