raw-auto-table-zod 0.0.5 → 0.0.7

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/README.md CHANGED
@@ -18,6 +18,21 @@ A React table component that automatically generates tables from Zod schemas.
18
18
  npm install raw-auto-table-zod
19
19
  ```
20
20
 
21
+ ## Default Components
22
+
23
+ You can quickly get started with the default shadcn/ui components:
24
+
25
+ ```bash
26
+ # Using npm
27
+ npx shadcn@latest add https://raw.githubusercontent.com/atul7017128880/component-registry/refs/heads/master/public/registry/auto-table-component.json
28
+
29
+ # Using pnpm
30
+ pnpm dlx shadcn@latest add https://raw.githubusercontent.com/atul7017128880/component-registry/refs/heads/master/public/registry/auto-table-component.json
31
+
32
+ # Using Bun
33
+ bunx --bun shadcn@latest add https://raw.githubusercontent.com/atul7017128880/component-registry/refs/heads/master/public/registry/auto-table-component.json
34
+ ```
35
+
21
36
  ## Basic Usage
22
37
 
23
38
  ```tsx
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":"8HAaA,MAAMA,EAAmD,CACxDC,KAAM,EAAGC,WAAYC,EAAAA,IAAGC,EAAAA,SAAA,CAAAC,SAAAH,IACxBI,OAAQ,EAAGJ,WAAYC,EAAAA,IAAGC,EAAAA,SAAA,CAAAC,SAAAH,IAC1BK,KAAM,EAAGL,WAAYC,EAAAA,IAAGC,EAAAA,SAAA,CAAAC,SAAAH,IACxBM,MAAO,EAAGN,WAAYC,EAAAA,IAAGC,EAAAA,SAAA,CAAAC,SAAAH,IACzBO,KAAM,EAAGP,WAAYC,EAAAA,IAAGC,EAAAA,SAAA,CAAAC,SAAAH,IACxBQ,QAAS,EAAGR,WAAYC,EAAAA,IAAGC,EAAAA,SAAA,CAAAC,SAAAH,IAC3BS,MAAQC,GAAqBT,EAAAA,IAAW,QAAA,IAAAS,EAAQP,SAAAO,EAAMP,WACtDQ,WAAY,EAAGR,cAAaO,KAC3BT,EAAAA,IAAA,QAAA,IAAWS,EAAQP,SAAAA,IAEpBS,QAAS,EAAGT,cAAaO,KACxBT,EAAAA,IAAA,KAAA,IAAQS,EAAQP,SAAAA,IAEjBU,QAAS,EAAGV,cAAaO,KACxBT,EAAAA,IAAA,KAAA,IAAQS,EAAQP,SAAAA,IAEjBW,WAAY,EAAGX,cAAaO,KAC3BT,EAAAA,IAAA,QAAA,IAAWS,EAAQP,SAAAA,IAEpBY,QAAS,EAAGZ,cAAaO,KACxBT,EAAAA,IAAA,KAAA,IAAQS,EAAQP,SAAAA,IAEjBa,WAAY,EAAGhB,WAAYC,EAAAA,IAAGC,EAAAA,SAAA,CAAAC,SAAAH,IAC9BiB,aAAc,EAAGjB,WAAYC,EAAAA,IAAGC,EAAAA,SAAA,CAAAC,SAAAH,IAChCkB,aAAc,EAAGlB,WAAYC,EAAAA,IAAGC,EAAAA,SAAA,CAAAC,SAAAH,IAChCmB,WAAY,EAAGnB,WAAYC,EAAAA,IAAGC,EAAAA,SAAA,CAAAC,SAAAH,IAC9BoB,cAAe,EAAGpB,WAAYC,EAAAA,IAAGC,EAAAA,SAAA,CAAAC,SAAAH,IACjCqB,iBAAkB,IAAMpB,EAAAA,IAAKC,EAAAoB,SAAA,IAC7BC,gBAAiB,IAAMtB,EAAAA,IAAKC,EAAAoB,SAAA,KAGvBE,EACLC,EAAaA,cAAgC3B,GAEjC4B,oBAAsB,IAAMC,EAAUA,WAACH,GC/BvC,MAAAI,sBACZC,IAMA,IACC,MAAO,CACNC,WAAYC,KAAKC,MAAMH,GACvBI,YAAa,KACbC,SAAS,GAET,MACD,MAAO,CACNJ,WAAY,KACZG,YAAaJ,EACbK,SAAS,KC1BE,SAAUC,kBAAyCC,OAChEA,EAAMC,eACNA,EAAiB,GAAEC,KACnBA,EAAIC,uBACJA,EAAsBC,mBACtBA,EAAqB,KAErB,MASMC,EC4B2B,EACjCC,EAEAL,EAEAG,KAGA,MAAMG,EAAajB,sBAGbkB,EAAa,IAAIC,IACvB,IAAK,MAAMC,KAAOT,EACb,gBAAiBS,GAAkC,iBAApBA,EAAIC,aACtCH,EAAWI,IAAIF,EAAIC,YAAaD,GAMlC,MAAML,EAA4BC,EAAOO,KAAKC,IAC7C,MAAMC,EAAMD,EAAMC,IAClB,GAAIP,EAAWQ,IAAID,GAElB,OAAOP,EAAWS,IAAIF,GAGvB,MAAMG,EA5DgB,CAACC,IACxB,OAAQA,GACP,IAAK,OACJ,MAAO,OACR,IAAK,OACJ,MAAO,OACR,IAAK,QACJ,MAAO,QACR,IAAK,SACJ,MAAO,SACR,IAAK,SACJ,MAAO,OACR,IAAK,UACJ,MAAO,UACR,IAAK,eACJ,MAAO,eACR,IAAK,eACJ,MAAO,eACR,IAAK,aACJ,MAAO,aACR,IAAK,gBACJ,MAAO,gBACR,IAAK,aACJ,MAAO,eAqCaC,CAAgBN,EAAMK,MAErCE,EAAYd,EAAWW,IACvBxB,WAAEA,GAAeF,sBAAsBsB,EAAMjB,aAAe,IAElE,MAAO,CACNyB,QAxCoBC,EAyCnB7B,GAAY8B,cAAiB9B,EAAW+B,OAASV,EAAOA,EAvC7CQ,EAAKG,MAAM,KAEvBb,KAAKc,GAASA,EAAKC,OAAO,GAAGC,cAAgBF,EAAKG,MAAM,KACxDC,KAAK,MAsCLpB,YAAaI,EACbiB,KAAM,EAAGC,WAAUC,UAClB,MAAMtE,EAAQqE,IACRE,EAAUD,EAAIE,SAGpB,IAAIC,EAAiBzE,EAKrB,OAJIA,aAAiB0E,OACpBD,EAAiBzE,EAAM2E,eAGnBlB,EASJxD,EAAAA,IAACwD,EAAS,CACTzD,MAAOyE,EACPF,QAASA,EACTK,aAAc1B,EAAM2B,MACpBC,MAAO3B,EACPlB,YAAaiB,EAAMjB,eACfH,IAbD9B,aAAiB0E,KACbzE,EAAAA,yBAAGD,EAAM2E,gBAEV1E,EAAAA,IAAAC,EAAAA,SAAA,CAAAC,SAAG4B,KAAKgD,UAAU/E,IAWvB,GAtEe,IAAC2D,CAyEpB,IAIF,IAAK,MAAMb,KAAOT,EAAgB,CACjC,MAAMc,EACL,gBAAiBL,GAAkC,iBAApBA,EAAIC,YAChCD,EAAIC,iBACJiC,EACA7B,IAAQT,EAAOuC,MAAMC,GAAMA,EAAE/B,MAAQA,KACxCV,EAAQ0C,KAAKrC,GAGf,GAAIN,GAAsBA,EAAmB4C,OAAS,EACrD,IAAK,MAAMtC,KAAON,EAAoB,CAErC,MAAOO,EAAasC,EAAiB,MAEpCvC,EAAIuC,gBAAgBvB,MAAM,MAAQ,GAE/Bf,GAAesC,EAMK,WAAnBA,EACH5C,EAAQ6C,OAEP7C,EAAQ8C,WAAWC,GAAMA,EAAEzC,cAAgBA,IAC3C,EAEAD,GAE4B,UAAnBuC,EACV5C,EAAQ6C,OAEP7C,EAAQ8C,WAAWC,GAAMA,EAAEzC,cAAgBA,IAAe,EAC1D,EAEAD,GAIDL,EAAQ0C,KAAKrC,GAIdL,EAAQ0C,KAAKrC,GAIhB,OAAOL,CAAO,EDlJEgD,CATKC,EAAAA,SAAQ,KAC5B,MAAMC,EAAe,IAAIC,EAAeA,gBAACxD,GAIzC,OAHIG,GACHoD,EAAaE,yBAAyBtD,GAEhC,CACNE,QAASkD,EAAaG,8BACtB,GACC,CAACvD,EAAwBH,IAEdK,QACbJ,EACAG,GAQD,MAAO,CAAEuD,MANKC,EAAAA,cAAc,CAC3B1D,OACAG,UACAwD,gBAAiBA,EAAAA,oBAGFxC,UADE/B,sBAEnB,qCFmB2C,EAC1CvB,WACA+F,iBAEA,MAAMlG,EAAQ,IACVF,KACAoG,GAGJ,OACCjG,EAAAkG,IAAC3E,EAAiB4E,SAAQ,CAACpG,MAAOA,EAAKG,SACrCA,GAC0B,kCIhE7BO,GAEOA,0BHMF,SAAU2F,gBAAgB3F,GAC/B,OAAOqB,KAAKgD,UAAU,CACrBuB,QAAQ,KACL5F,GAEL,uBIXwB,SAAA6F,aACvB7F,GAEA,MAAMqF,MAAEA,EAAKtC,UAAEA,GAActB,iBAAiBzB,IACxC8F,WACLA,EAAUC,+BACVA,EACAC,sBAAuBC,EACvBC,sBAAuBC,EAAqBrE,mBAC5CA,EAAkBsE,4BAClBA,EAA2BC,UAC3BA,EAASC,YACTA,EAAWC,kBACXA,EAAoB,IACjBvG,EACJ,OACCwG,OAACzD,EAAUhD,MACV,CAAAN,SAAA,CAAAF,EAAAkG,IAAC1C,EAAU3C,WAAU,CAAAX,SACnB4F,EAAMoB,kBAAkBlE,KAAKmE,GAC7BF,EAAAA,KAACzD,EAAU1C,QACT,CAAAZ,SAAA,CAAAiH,EAAYC,QAAQpE,KAAKS,GACzBzD,EAACkG,IAAA1C,EAAU5C,QAAO,CAAAV,SAChBuD,EAAO4D,cACL,KACAC,EAAAA,WACA7D,EAAO8D,OAAOC,UAAU/D,OACxBA,EAAOgE,eALahE,EAAOiE,MAS/BlB,GACAxG,MAACwD,EAAU5C,kBACTgG,EACA5G,EAAAA,IAAC4G,EAAqB,CAACe,YAAY,WAAW,aAd1BR,EAAYO,QAuBrCZ,GAA6B,SAAhBC,EACb/G,MAACwD,EAAUpC,iBAAiB,CAAA0F,UAAWA,IAEvC9G,EAAAA,IAACwD,EAAU9C,qBACToG,GAA6B,cAAhBC,EACXa,MAAMC,KAAK,CAAE1C,OAAQ6B,IAAqBhE,KAAI,CAAC8E,EAAGC,IAClD/H,EAAAA,IAACwD,EAAU1C,QAAO,CAAAZ,SAChB0H,MAAMC,KAAK,CACX1C,OAAQW,EAAMkC,wBAAwB7C,SACpCnC,KAAI,CAACiF,EAAIC,IACXlI,EAAAA,IAACwD,EAAU7C,QAGV,CAAAT,SAAAF,EAAAkG,IAAC1C,EAAUlC,gBAAgB,CAAAwF,UAAWA,KAFjC,gBAAgBiB,EAAMI,cAAcD,EAASC,iBAL7B,eAAeJ,EAAMI,gBAY7CrC,EAAMsC,cAAcC,KAAKrF,KAAKqB,GAC9B4C,EAACqB,KAAA9E,EAAU1C,QAAO,CAAAZ,SAAA,CAChBmE,EAAIkE,kBAAkBvF,KAAKmB,GAC3BnE,EAAAkG,IAAC1C,EAAU7C,SAEV6H,QAAS,KACR,GAAI3B,EAA6B,CAEhC,MAAM4B,EAAoBlG,GAAoByC,MAC5CuC,GAAWA,EAAOkB,oBAEpB,GAAIA,EACH,OAGElC,GACHA,IAAalC,EAAIE,WAIlBrE,SAAAoH,EAAAA,WACAnD,EAAKoD,OAAOC,UAAUrD,KACtBA,EAAKsD,eAlBDtD,EAAKuD,MAsBXlB,GACAxG,EAAAkG,IAAC1C,EAAU7C,QACT,CAAAT,SAAAwG,EACA1G,EAACkG,IAAAQ,EAAsB,CAAArC,IAAKA,EAAIE,kEA5BZF,EAAIqD,UAwCpC"}
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.7",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
7
7
  "types": "dist/index.d.ts",