@algorithm-shift/design-system 1.2.967 → 1.2.968
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.js +16 -3
- package/dist/client.js.map +1 -1
- package/dist/client.mjs +16 -3
- package/dist/client.mjs.map +1 -1
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -159,8 +159,11 @@ function applyDependencyRules(schema, fields) {
|
|
|
159
159
|
fieldValue = isNumber ? Number(fieldValue) : 0;
|
|
160
160
|
}
|
|
161
161
|
const matchedRules = f.dependencyRules.filter((rule) => {
|
|
162
|
-
|
|
163
|
-
return
|
|
162
|
+
if (!rule.conditions || rule.conditions.length === 0) return false;
|
|
163
|
+
return rule.conditions.every((cond) => {
|
|
164
|
+
const depVal = values[cond.dependsOn];
|
|
165
|
+
return evaluateOperator(depVal, cond.value, cond.operator);
|
|
166
|
+
});
|
|
164
167
|
});
|
|
165
168
|
if (matchedRules.length === 0) return;
|
|
166
169
|
const ruleToApply = matchedRules[0];
|
|
@@ -223,7 +226,17 @@ var FormWrapper = ({
|
|
|
223
226
|
if (!formValidation || formValidation.length === 0) return null;
|
|
224
227
|
return generateZodSchema(formValidation);
|
|
225
228
|
}, [props.validation]);
|
|
229
|
+
const onError = (errors) => {
|
|
230
|
+
const firstKey = Object.keys(errors)[0];
|
|
231
|
+
const errorField = document.querySelector(`[name="${firstKey}"]`);
|
|
232
|
+
if (errorField instanceof HTMLElement) {
|
|
233
|
+
errorField.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
234
|
+
errorField.focus();
|
|
235
|
+
}
|
|
236
|
+
};
|
|
226
237
|
const form = (0, import_react_hook_form.useForm)({
|
|
238
|
+
shouldUnregister: true,
|
|
239
|
+
shouldFocusError: true,
|
|
227
240
|
resolver: schema ? (0, import_zod.zodResolver)(schema) : void 0,
|
|
228
241
|
defaultValues
|
|
229
242
|
});
|
|
@@ -247,7 +260,7 @@ var FormWrapper = ({
|
|
|
247
260
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
248
261
|
"form",
|
|
249
262
|
{
|
|
250
|
-
onSubmit: form.handleSubmit(formSubmit),
|
|
263
|
+
onSubmit: form.handleSubmit(formSubmit, onError),
|
|
251
264
|
onReset: handleReset,
|
|
252
265
|
className: cn(
|
|
253
266
|
"space-y-4 min-h-[100px] h-auto flex justify-between flex-col"
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client.ts","../src/components/Form/Wrapper.tsx","../src/lib/utils.ts","../src/components/Form/Form.tsx","../src/components/StateManagment/stateReducer.ts","../src/components/StateManagment/StateContext.tsx"],"sourcesContent":["'use client';\r\n\r\nexport { default as FormWrapper } from './components/Form/Wrapper';\r\nexport { default as Form } from './components/Form/Form';\r\nexport { stateReducer } from './components/StateManagment/stateReducer';\r\nexport * from './components/StateManagment/StateContext';","'use client';\r\nimport React, { useEffect, useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, UseFormReturn, useWatch } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface FormWrapperProps<T extends z.ZodObject<any>> {\r\n validation?: Record<string, any>;\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode | ((form: UseFormReturn<z.infer<T>>) => React.ReactNode);\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n onValuesChange?: (values: z.infer<T>) => void;\r\n}\r\n\r\n// -------------------------\r\n// Operator Matching Utility\r\n// -------------------------\r\nfunction evaluateOperator(depValue: any, ruleValue: any, operator: string) {\r\n switch (operator) {\r\n case 'equals':\r\n return depValue === ruleValue;\r\n\r\n case 'not_equals':\r\n return depValue !== ruleValue;\r\n\r\n case 'greater_than':\r\n return Number(depValue) > Number(ruleValue);\r\n\r\n case 'less_than':\r\n return Number(depValue) < Number(ruleValue);\r\n\r\n case 'contains':\r\n if (Array.isArray(depValue)) return depValue.includes(ruleValue);\r\n if (typeof depValue === 'string') return depValue.includes(String(ruleValue));\r\n return false;\r\n\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\n// -------------------------\r\n// Field Schema Generator\r\n// -------------------------\r\nfunction buildFieldSchema(field: any) {\r\n const message = field.message || `${field.name} is invalid`;\r\n\r\n switch (field.type) {\r\n case 'Text':\r\n case 'Search': {\r\n let schema = z.string({ message });\r\n\r\n if (field.min) schema = schema.min(field.min);\r\n else if (field.isRequired) schema = schema.min(1, { message: `${message}. Cannot be empty` });\r\n\r\n if (field.max) schema = schema.max(field.max);\r\n if (field.email) schema = schema.email();\r\n if (field.url) schema = schema.url();\r\n if (field.regex) schema = schema.regex(new RegExp(field.regex));\r\n\r\n return schema;\r\n }\r\n\r\n case 'Email':\r\n return field.isRequired ? z.string().email({ message }) : z.string().nullable();\r\n\r\n case 'Password':\r\n return z\r\n .string({ message })\r\n .min(field.passwordLength, {\r\n message: `Password must be at least ${field.passwordLength} characters long`,\r\n });\r\n\r\n case 'Phone':\r\n if (!field.isRequired) return z.string().nullable();\r\n return z\r\n .string()\r\n .transform((v) => v.replace(/\\D/g, '').slice(-10))\r\n .refine((val) => val.length === 10, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n\r\n case 'DatePicker':\r\n return z\r\n .string({ message })\r\n .trim()\r\n .refine((v) => {\r\n if (field.isRequired && !v) return false;\r\n if (!v) return true;\r\n const d = new Date(v);\r\n return !isNaN(d.getTime());\r\n }, { message });\r\n\r\n case 'FileInput': {\r\n let schema: any = z.instanceof(File, { message: 'Please select a file' });\r\n\r\n if (field.maxSize) {\r\n schema = schema.refine((file: File) => file.size <= field.maxSize, {\r\n message: `File size must be less than ${field.maxSize / 1024 / 1024} MB`,\r\n });\r\n }\r\n\r\n if (field.acceptedTypes) {\r\n schema = schema.refine(\r\n (file: File) => field.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${field.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n return schema;\r\n }\r\n\r\n case 'Checkbox':\r\n return z.boolean({ message });\r\n\r\n case 'Dropdown':\r\n return field.isRequired\r\n ? z.string({ message }).min(1, { message })\r\n : z.string().nullable();\r\n\r\n case 'NumberInput': {\r\n let numberSchema = z.number({ message });\r\n if (field.min !== '' && field.min !== undefined)\r\n numberSchema = numberSchema.min(field.min, {\r\n message: `Minimum value is ${field.min}`,\r\n });\r\n\r\n if (field.max !== '' && field.max !== undefined && field.max > 0)\r\n numberSchema = numberSchema.max(field.max, {\r\n message: `Maximum value is ${field.max}`,\r\n });\r\n\r\n return z.preprocess(\r\n (v) => {\r\n if (v === '' || v === null || v === undefined) return null;\r\n const n = Number(v);\r\n return isNaN(n) ? v : n;\r\n },\r\n numberSchema.nullable()\r\n );\r\n }\r\n\r\n default:\r\n return z.any();\r\n }\r\n}\r\n\r\n// -------------------------\r\n// Dependency Rule Validator with OR Operation\r\n// -------------------------\r\nfunction applyDependencyRules(schema: any, fields: any[]) {\r\n fields.forEach((f) => {\r\n if (!f.enableDependencyRules || !Array.isArray(f.dependencyRules)) return;\r\n\r\n const fieldName = f.name;\r\n const fieldType = f.type;\r\n\r\n schema = schema.superRefine((values: any, ctx: any) => {\r\n let fieldValue = values[fieldName];\r\n\r\n if (fieldType === 'NumberInput') {\r\n const isNumber = !isNaN(Number(fieldValue));\r\n fieldValue = isNumber ? Number(fieldValue) : 0;\r\n }\r\n\r\n // Collect all rules that match (OR condition)\r\n const matchedRules = f.dependencyRules.filter((rule: any) => {\r\n const depVal = values[rule.dependsOn];\r\n return evaluateOperator(depVal, rule.value, rule.operator);\r\n });\r\n\r\n // If no rule matches → skip validation\r\n if (matchedRules.length === 0) return;\r\n\r\n // Apply ONLY the first matched rule (OR behavior)\r\n const ruleToApply = matchedRules[0];\r\n\r\n // ---- Apply min / max / regex ----\r\n if (ruleToApply.min !== '' && ruleToApply.min !== undefined &&\r\n Number(fieldValue) < Number(ruleToApply.min)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} must be >= ${ruleToApply.min}`,\r\n });\r\n }\r\n\r\n if (ruleToApply.max !== '' && ruleToApply.max !== undefined && ruleToApply.max > 0 &&\r\n Number(fieldValue) > Number(ruleToApply.max)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} must be <= ${ruleToApply.max}`,\r\n });\r\n }\r\n\r\n if (ruleToApply.regex) {\r\n const re = new RegExp(ruleToApply.regex);\r\n if (!re.test(fieldValue)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} does not match required pattern`,\r\n });\r\n }\r\n }\r\n\r\n });\r\n });\r\n\r\n return schema;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]) {\r\n const fieldMap: Record<string, any> = {};\r\n\r\n // Build individual field schemas\r\n data.forEach((field) => {\r\n let schema = buildFieldSchema(field);\r\n\r\n if (!field.isRequired) {\r\n schema = schema.nullable().optional();\r\n }\r\n\r\n fieldMap[field.name] = schema;\r\n });\r\n\r\n // Create object schema\r\n let schema = z.object(fieldMap);\r\n\r\n // Apply dependency rules\r\n schema = applyDependencyRules(schema, data);\r\n\r\n return schema;\r\n}\r\n\r\nconst FormWrapper = <T extends z.ZodObject<any>>({\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n onValuesChange,\r\n ...props\r\n}: FormWrapperProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (Array.isArray(props.validation)) return null;\r\n // Transform validation to ensure isRequired is boolean\r\n const validation = Object.values(props.validation || {}).map(v => ({\r\n ...v,\r\n isRequired: !!v.isRequired\r\n }));\r\n\r\n const formValidation = validation?.filter(i => i);\r\n if (!formValidation || formValidation.length === 0) return null;\r\n return generateZodSchema(formValidation);\r\n }, [props.validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const form = useForm<FormData>({\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formValues = useWatch({ control: form.control }) as FormData;\r\n\r\n useEffect(() => {\r\n onValuesChange?.(formValues);\r\n }, [formValues]);\r\n\r\n useEffect(() => {\r\n if (!defaultValues) return;\r\n // Only reset if defaultValues is an object (not null, undefined, or array)\r\n if (typeof defaultValues === 'object' && defaultValues !== null && !Array.isArray(defaultValues)) {\r\n form.reset(defaultValues);\r\n }\r\n }, [defaultValues]);\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n form.reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={form.handleSubmit(formSubmit)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {typeof children === 'function'\r\n ? (children as (form: UseFormReturn<FormData>) => React.ReactNode)(form)\r\n : children}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default FormWrapper;","import { clsx, type ClassValue } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n\r\nexport function getInitials(name: string) {\r\n const words = name.split(' ');\r\n if (words.length === 0) {\r\n return '';\r\n }\r\n if (words.length === 1) {\r\n return words[0].charAt(0);\r\n }\r\n return words[0].charAt(0) + words[1].charAt(0);\r\n}","'use client';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, Controller } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\n// ****************** THIS COMPONENT NOT USED IN EXPORT CODE OR ANYWHERE ELSE YET. ************************\r\n\r\ninterface FormProps<T extends z.ZodObject<any>> {\r\n validation?: any[];\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode;\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]): z.ZodObject<any> {\r\n const fields = data.reduce((acc, f) => {\r\n const name = f.name || 'unnamed';\r\n const message = f.message || `${name} is invalid`;\r\n const passwordLen = f.passwordLength;\r\n\r\n let fieldSchema: any = z.string({ message });\r\n\r\n switch (f.type) {\r\n case 'Text':\r\n case 'Search':\r\n fieldSchema = z.string({ message });\r\n if (f?.min && f?.min !== '') fieldSchema = fieldSchema.min(f.min);\r\n else if (f.isRequired) fieldSchema = fieldSchema.min(1, { message: `${message}. Cannot be empty` });\r\n if (f?.max && f?.max !== '') fieldSchema = fieldSchema.max(f.max);\r\n if (f?.email) fieldSchema = fieldSchema.email();\r\n if (f?.url) fieldSchema = fieldSchema.url();\r\n if (f?.regex) fieldSchema = fieldSchema.regex(new RegExp(f.regex));\r\n break;\r\n case 'Email':\r\n fieldSchema = z.email({ message });\r\n break;\r\n case 'Password':\r\n fieldSchema = z.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });\r\n break;\r\n case 'Phone':\r\n fieldSchema = z.string().transform(val => val.replace(/\\D/g, '')).transform(val => val.slice(-10)).refine(val => {\r\n return val.length === 10;\r\n }, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n break;\r\n case 'DatePicker':\r\n fieldSchema = z.string({\r\n message: message || 'Date is required',\r\n }).trim().refine((val) => {\r\n if (f.isRequired && !val) return false;\r\n if (!f.isRequired && !val) return true;\r\n const date = new Date(val);\r\n return !isNaN(date.getTime());\r\n }, { message: message || 'Invalid date' });\r\n break;\r\n case 'FileInput':\r\n fieldSchema = z.instanceof(File, { message: 'Please select a file' });\r\n if (f?.maxSize) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => file.size <= f.maxSize,\r\n { message: `File size must be less than ${f.maxSize / 1024 / 1024}MB` }\r\n );\r\n }\r\n if (f?.acceptedTypes) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => f.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${f.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n break;\r\n case 'Checkbox':\r\n fieldSchema = z.boolean({ message });\r\n break;\r\n case 'Dropdown':\r\n if (f.isRequired) {\r\n fieldSchema = z.string({ message }).min(1, { message });\r\n } else {\r\n fieldSchema = z.string().nullable();\r\n }\r\n break;\r\n case 'NumberInput':\r\n let numberSchema = z.number({ message });\r\n\r\n if (f.min !== undefined)\r\n numberSchema = numberSchema.min(f.min, {\r\n message: `Minimum value is ${f.min}`,\r\n });\r\n\r\n if (f.max !== undefined)\r\n numberSchema = numberSchema.max(f.max, {\r\n message: `Maximum value is ${f.max}`,\r\n });\r\n\r\n // Preprocess empty string/null → null and cast strings to numbers\r\n fieldSchema = z.preprocess(\r\n (val) => {\r\n if (val === '' || val === null || val === undefined) return null;\r\n const num = Number(val);\r\n return isNaN(num) ? val : num;\r\n },\r\n numberSchema.nullable()\r\n );\r\n break;\r\n default:\r\n fieldSchema = z.any();\r\n }\r\n\r\n if (!f.isRequired) fieldSchema = fieldSchema.nullable().optional();\r\n\r\n acc[name] = fieldSchema;\r\n return acc;\r\n }, {} as Record<string, any>);\r\n\r\n return z.object(fields);\r\n}\r\n\r\nconst Form = <T extends z.ZodObject<any>>({\r\n validation,\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n}: FormProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (!validation || validation.length === 0) return null;\r\n return generateZodSchema(validation);\r\n }, [validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const {\r\n handleSubmit,\r\n control,\r\n formState: { errors },\r\n reset,\r\n } = useForm<FormData>({\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={handleSubmit(formSubmit)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {React.Children.map(children, child => {\r\n const processChild = (child: React.ReactNode): React.ReactNode => {\r\n if (React.isValidElement(child)) {\r\n const node = (child.props as any)?.node;\r\n\r\n if (node?.category === 'Form Controls') {\r\n const name = node.properties?.name || 'unnamed';\r\n return (\r\n <div key={node.id} className=\"flex flex-col\">\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field: controllerField }) => {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode, input?: any }>;\r\n return React.cloneElement(childElement, {\r\n input: {\r\n ...controllerField,\r\n value: controllerField.value || '',\r\n hasFormContainer: true,\r\n validateOnMount: true,\r\n errorMessage: errors[name]?.message || null\r\n },\r\n children: undefined\r\n });\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n // Recursively process children of this element\r\n if ((child as React.ReactElement<{ children?: React.ReactNode }>).props?.children) {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode }>;\r\n return React.cloneElement(childElement, {\r\n children: React.Children.map(childElement.props.children, processChild),\r\n });\r\n }\r\n\r\n return React.cloneElement(child);\r\n }\r\n return child;\r\n };\r\n\r\n return processChild(child);\r\n })}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default Form;","export type CanvasState = Record<string, any>;\r\n\r\nexport type CanvasAction =\r\n | { type: 'SET_STATE'; key: string; value: any }\r\n | { type: 'SET_MULTIPLE_STATES'; values: Record<string, any> }\r\n | { type: 'SET_FORM_STATE'; formName: string; values: Record<string, any> };\r\n\r\nexport function stateReducer(state: CanvasState, action: CanvasAction): CanvasState {\r\n switch (action.type) {\r\n case 'SET_STATE':\r\n return { ...state, [action.key]: action.value };\r\n\r\n case 'SET_MULTIPLE_STATES':\r\n return { ...state, ...action.values };\r\n\r\n case 'SET_FORM_STATE':\r\n return {\r\n ...state,\r\n form: {\r\n ...(state.form || {}),\r\n [action.formName]: {\r\n ...(state.form && state.form[action.formName] ? state.form[action.formName] : {}),\r\n ...action.values\r\n }\r\n }\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","'use client';\r\nimport React, { createContext, useContext, useReducer } from 'react';\r\n\r\nimport { stateReducer, CanvasState } from './stateReducer';\r\n\r\nconst StateContext = createContext<any>(null);\r\n\r\nexport function StateProvider({ children, initialState = {} }: { children: React.ReactNode, initialState?: CanvasState }) {\r\n const [state, dispatch] = useReducer(stateReducer, initialState);\r\n return (\r\n <StateContext.Provider value={{ state, dispatch }}>\r\n {children}\r\n </StateContext.Provider>\r\n );\r\n}\r\n\r\nexport function useAppState() {\r\n return useContext(StateContext);\r\n}\r\n"],"mappings":"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","names":["import_zod","schema","import_react","import_zod","import_react_hook_form","import_jsx_runtime","generateZodSchema","React","child","import_react","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/components/Form/Wrapper.tsx","../src/lib/utils.ts","../src/components/Form/Form.tsx","../src/components/StateManagment/stateReducer.ts","../src/components/StateManagment/StateContext.tsx"],"sourcesContent":["'use client';\r\n\r\nexport { default as FormWrapper } from './components/Form/Wrapper';\r\nexport { default as Form } from './components/Form/Form';\r\nexport { stateReducer } from './components/StateManagment/stateReducer';\r\nexport * from './components/StateManagment/StateContext';","'use client';\r\nimport React, { useEffect, useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, UseFormReturn, useWatch } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface FormWrapperProps<T extends z.ZodObject<any>> {\r\n validation?: Record<string, any>;\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode | ((form: UseFormReturn<z.infer<T>>) => React.ReactNode);\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n onValuesChange?: (values: z.infer<T>) => void;\r\n}\r\n\r\n// -------------------------\r\n// Operator Matching Utility\r\n// -------------------------\r\nfunction evaluateOperator(depValue: any, ruleValue: any, operator: string) {\r\n switch (operator) {\r\n case 'equals':\r\n return depValue === ruleValue;\r\n\r\n case 'not_equals':\r\n return depValue !== ruleValue;\r\n\r\n case 'greater_than':\r\n return Number(depValue) > Number(ruleValue);\r\n\r\n case 'less_than':\r\n return Number(depValue) < Number(ruleValue);\r\n\r\n case 'contains':\r\n if (Array.isArray(depValue)) return depValue.includes(ruleValue);\r\n if (typeof depValue === 'string') return depValue.includes(String(ruleValue));\r\n return false;\r\n\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\n// -------------------------\r\n// Field Schema Generator\r\n// -------------------------\r\nfunction buildFieldSchema(field: any) {\r\n const message = field.message || `${field.name} is invalid`;\r\n\r\n switch (field.type) {\r\n case 'Text':\r\n case 'Search': {\r\n let schema = z.string({ message });\r\n\r\n if (field.min) schema = schema.min(field.min);\r\n else if (field.isRequired) schema = schema.min(1, { message: `${message}. Cannot be empty` });\r\n\r\n if (field.max) schema = schema.max(field.max);\r\n if (field.email) schema = schema.email();\r\n if (field.url) schema = schema.url();\r\n if (field.regex) schema = schema.regex(new RegExp(field.regex));\r\n\r\n return schema;\r\n }\r\n\r\n case 'Email':\r\n return field.isRequired ? z.string().email({ message }) : z.string().nullable();\r\n\r\n case 'Password':\r\n return z\r\n .string({ message })\r\n .min(field.passwordLength, {\r\n message: `Password must be at least ${field.passwordLength} characters long`,\r\n });\r\n\r\n case 'Phone':\r\n if (!field.isRequired) return z.string().nullable();\r\n return z\r\n .string()\r\n .transform((v) => v.replace(/\\D/g, '').slice(-10))\r\n .refine((val) => val.length === 10, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n\r\n case 'DatePicker':\r\n return z\r\n .string({ message })\r\n .trim()\r\n .refine((v) => {\r\n if (field.isRequired && !v) return false;\r\n if (!v) return true;\r\n const d = new Date(v);\r\n return !isNaN(d.getTime());\r\n }, { message });\r\n\r\n case 'FileInput': {\r\n let schema: any = z.instanceof(File, { message: 'Please select a file' });\r\n\r\n if (field.maxSize) {\r\n schema = schema.refine((file: File) => file.size <= field.maxSize, {\r\n message: `File size must be less than ${field.maxSize / 1024 / 1024} MB`,\r\n });\r\n }\r\n\r\n if (field.acceptedTypes) {\r\n schema = schema.refine(\r\n (file: File) => field.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${field.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n return schema;\r\n }\r\n\r\n case 'Checkbox':\r\n return z.boolean({ message });\r\n\r\n case 'Dropdown':\r\n return field.isRequired\r\n ? z.string({ message }).min(1, { message })\r\n : z.string().nullable();\r\n\r\n case 'NumberInput': {\r\n let numberSchema = z.number({ message });\r\n if (field.min !== '' && field.min !== undefined)\r\n numberSchema = numberSchema.min(field.min, {\r\n message: `Minimum value is ${field.min}`,\r\n });\r\n\r\n if (field.max !== '' && field.max !== undefined && field.max > 0)\r\n numberSchema = numberSchema.max(field.max, {\r\n message: `Maximum value is ${field.max}`,\r\n });\r\n\r\n return z.preprocess(\r\n (v) => {\r\n if (v === '' || v === null || v === undefined) return null;\r\n const n = Number(v);\r\n return isNaN(n) ? v : n;\r\n },\r\n numberSchema.nullable()\r\n );\r\n }\r\n\r\n default:\r\n return z.any();\r\n }\r\n}\r\n\r\n// -------------------------\r\n// Dependency Rule Validator with OR Operation\r\n// -------------------------\r\nfunction applyDependencyRules(schema: any, fields: any[]) {\r\n fields.forEach((f) => {\r\n if (!f.enableDependencyRules || !Array.isArray(f.dependencyRules)) return;\r\n\r\n const fieldName = f.name;\r\n const fieldType = f.type;\r\n\r\n schema = schema.superRefine((values: any, ctx: any) => {\r\n let fieldValue = values[fieldName];\r\n\r\n if (fieldType === 'NumberInput') {\r\n const isNumber = !isNaN(Number(fieldValue));\r\n fieldValue = isNumber ? Number(fieldValue) : 0;\r\n }\r\n\r\n // Collect all rules that match (OR condition)\r\n const matchedRules = f.dependencyRules.filter((rule: any) => {\r\n if (!rule.conditions || rule.conditions.length === 0) return false;\r\n\r\n // AND logic for conditions inside the rule\r\n return rule.conditions.every((cond: any) => {\r\n const depVal = values[cond.dependsOn];\r\n return evaluateOperator(depVal, cond.value, cond.operator);\r\n });\r\n });\r\n\r\n // If no rule matches → skip validation\r\n if (matchedRules.length === 0) return;\r\n\r\n // Apply ONLY the first matched rule (OR behavior)\r\n const ruleToApply = matchedRules[0];\r\n\r\n // ---- Apply min / max / regex ----\r\n if (ruleToApply.min !== '' && ruleToApply.min !== undefined &&\r\n Number(fieldValue) < Number(ruleToApply.min)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} must be >= ${ruleToApply.min}`,\r\n });\r\n }\r\n\r\n if (ruleToApply.max !== '' && ruleToApply.max !== undefined && ruleToApply.max > 0 &&\r\n Number(fieldValue) > Number(ruleToApply.max)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} must be <= ${ruleToApply.max}`,\r\n });\r\n }\r\n\r\n if (ruleToApply.regex) {\r\n const re = new RegExp(ruleToApply.regex);\r\n if (!re.test(fieldValue)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} does not match required pattern`,\r\n });\r\n }\r\n }\r\n });\r\n });\r\n\r\n return schema;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]) {\r\n const fieldMap: Record<string, any> = {};\r\n\r\n // Build individual field schemas\r\n data.forEach((field) => {\r\n let schema = buildFieldSchema(field);\r\n\r\n if (!field.isRequired) {\r\n schema = schema.nullable().optional();\r\n }\r\n\r\n fieldMap[field.name] = schema;\r\n });\r\n\r\n // Create object schema\r\n let schema = z.object(fieldMap);\r\n\r\n // Apply dependency rules\r\n schema = applyDependencyRules(schema, data);\r\n\r\n return schema;\r\n}\r\n\r\nconst FormWrapper = <T extends z.ZodObject<any>>({\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n onValuesChange,\r\n ...props\r\n}: FormWrapperProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (Array.isArray(props.validation)) return null;\r\n // Transform validation to ensure isRequired is boolean\r\n const validation = Object.values(props.validation || {}).map(v => ({\r\n ...v,\r\n isRequired: !!v.isRequired\r\n }));\r\n\r\n const formValidation = validation?.filter(i => i);\r\n if (!formValidation || formValidation.length === 0) return null;\r\n return generateZodSchema(formValidation);\r\n }, [props.validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const onError = (errors: any) => {\r\n const firstKey = Object.keys(errors)[0];\r\n const errorField = document.querySelector(`[name=\"${firstKey}\"]`);\r\n\r\n if (errorField instanceof HTMLElement) {\r\n errorField.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n errorField.focus();\r\n }\r\n };\r\n\r\n const form = useForm<FormData>({\r\n shouldUnregister: true,\r\n shouldFocusError: true,\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formValues = useWatch({ control: form.control }) as FormData;\r\n\r\n useEffect(() => {\r\n onValuesChange?.(formValues);\r\n }, [formValues]);\r\n\r\n useEffect(() => {\r\n if (!defaultValues) return;\r\n // Only reset if defaultValues is an object (not null, undefined, or array)\r\n if (typeof defaultValues === 'object' && defaultValues !== null && !Array.isArray(defaultValues)) {\r\n form.reset(defaultValues);\r\n }\r\n }, [defaultValues]);\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n form.reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={form.handleSubmit(formSubmit, onError)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {typeof children === 'function'\r\n ? (children as (form: UseFormReturn<FormData>) => React.ReactNode)(form)\r\n : children}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default FormWrapper;","import { clsx, type ClassValue } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n\r\nexport function getInitials(name: string) {\r\n const words = name.split(' ');\r\n if (words.length === 0) {\r\n return '';\r\n }\r\n if (words.length === 1) {\r\n return words[0].charAt(0);\r\n }\r\n return words[0].charAt(0) + words[1].charAt(0);\r\n}","'use client';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, Controller } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\n// ****************** THIS COMPONENT NOT USED IN EXPORT CODE OR ANYWHERE ELSE YET. ************************\r\n\r\ninterface FormProps<T extends z.ZodObject<any>> {\r\n validation?: any[];\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode;\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]): z.ZodObject<any> {\r\n const fields = data.reduce((acc, f) => {\r\n const name = f.name || 'unnamed';\r\n const message = f.message || `${name} is invalid`;\r\n const passwordLen = f.passwordLength;\r\n\r\n let fieldSchema: any = z.string({ message });\r\n\r\n switch (f.type) {\r\n case 'Text':\r\n case 'Search':\r\n fieldSchema = z.string({ message });\r\n if (f?.min && f?.min !== '') fieldSchema = fieldSchema.min(f.min);\r\n else if (f.isRequired) fieldSchema = fieldSchema.min(1, { message: `${message}. Cannot be empty` });\r\n if (f?.max && f?.max !== '') fieldSchema = fieldSchema.max(f.max);\r\n if (f?.email) fieldSchema = fieldSchema.email();\r\n if (f?.url) fieldSchema = fieldSchema.url();\r\n if (f?.regex) fieldSchema = fieldSchema.regex(new RegExp(f.regex));\r\n break;\r\n case 'Email':\r\n fieldSchema = z.email({ message });\r\n break;\r\n case 'Password':\r\n fieldSchema = z.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });\r\n break;\r\n case 'Phone':\r\n fieldSchema = z.string().transform(val => val.replace(/\\D/g, '')).transform(val => val.slice(-10)).refine(val => {\r\n return val.length === 10;\r\n }, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n break;\r\n case 'DatePicker':\r\n fieldSchema = z.string({\r\n message: message || 'Date is required',\r\n }).trim().refine((val) => {\r\n if (f.isRequired && !val) return false;\r\n if (!f.isRequired && !val) return true;\r\n const date = new Date(val);\r\n return !isNaN(date.getTime());\r\n }, { message: message || 'Invalid date' });\r\n break;\r\n case 'FileInput':\r\n fieldSchema = z.instanceof(File, { message: 'Please select a file' });\r\n if (f?.maxSize) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => file.size <= f.maxSize,\r\n { message: `File size must be less than ${f.maxSize / 1024 / 1024}MB` }\r\n );\r\n }\r\n if (f?.acceptedTypes) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => f.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${f.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n break;\r\n case 'Checkbox':\r\n fieldSchema = z.boolean({ message });\r\n break;\r\n case 'Dropdown':\r\n if (f.isRequired) {\r\n fieldSchema = z.string({ message }).min(1, { message });\r\n } else {\r\n fieldSchema = z.string().nullable();\r\n }\r\n break;\r\n case 'NumberInput':\r\n let numberSchema = z.number({ message });\r\n\r\n if (f.min !== undefined)\r\n numberSchema = numberSchema.min(f.min, {\r\n message: `Minimum value is ${f.min}`,\r\n });\r\n\r\n if (f.max !== undefined)\r\n numberSchema = numberSchema.max(f.max, {\r\n message: `Maximum value is ${f.max}`,\r\n });\r\n\r\n // Preprocess empty string/null → null and cast strings to numbers\r\n fieldSchema = z.preprocess(\r\n (val) => {\r\n if (val === '' || val === null || val === undefined) return null;\r\n const num = Number(val);\r\n return isNaN(num) ? val : num;\r\n },\r\n numberSchema.nullable()\r\n );\r\n break;\r\n default:\r\n fieldSchema = z.any();\r\n }\r\n\r\n if (!f.isRequired) fieldSchema = fieldSchema.nullable().optional();\r\n\r\n acc[name] = fieldSchema;\r\n return acc;\r\n }, {} as Record<string, any>);\r\n\r\n return z.object(fields);\r\n}\r\n\r\nconst Form = <T extends z.ZodObject<any>>({\r\n validation,\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n}: FormProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (!validation || validation.length === 0) return null;\r\n return generateZodSchema(validation);\r\n }, [validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const {\r\n handleSubmit,\r\n control,\r\n formState: { errors },\r\n reset,\r\n } = useForm<FormData>({\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={handleSubmit(formSubmit)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {React.Children.map(children, child => {\r\n const processChild = (child: React.ReactNode): React.ReactNode => {\r\n if (React.isValidElement(child)) {\r\n const node = (child.props as any)?.node;\r\n\r\n if (node?.category === 'Form Controls') {\r\n const name = node.properties?.name || 'unnamed';\r\n return (\r\n <div key={node.id} className=\"flex flex-col\">\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field: controllerField }) => {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode, input?: any }>;\r\n return React.cloneElement(childElement, {\r\n input: {\r\n ...controllerField,\r\n value: controllerField.value || '',\r\n hasFormContainer: true,\r\n validateOnMount: true,\r\n errorMessage: errors[name]?.message || null\r\n },\r\n children: undefined\r\n });\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n // Recursively process children of this element\r\n if ((child as React.ReactElement<{ children?: React.ReactNode }>).props?.children) {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode }>;\r\n return React.cloneElement(childElement, {\r\n children: React.Children.map(childElement.props.children, processChild),\r\n });\r\n }\r\n\r\n return React.cloneElement(child);\r\n }\r\n return child;\r\n };\r\n\r\n return processChild(child);\r\n })}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default Form;","export type CanvasState = Record<string, any>;\r\n\r\nexport type CanvasAction =\r\n | { type: 'SET_STATE'; key: string; value: any }\r\n | { type: 'SET_MULTIPLE_STATES'; values: Record<string, any> }\r\n | { type: 'SET_FORM_STATE'; formName: string; values: Record<string, any> };\r\n\r\nexport function stateReducer(state: CanvasState, action: CanvasAction): CanvasState {\r\n switch (action.type) {\r\n case 'SET_STATE':\r\n return { ...state, [action.key]: action.value };\r\n\r\n case 'SET_MULTIPLE_STATES':\r\n return { ...state, ...action.values };\r\n\r\n case 'SET_FORM_STATE':\r\n return {\r\n ...state,\r\n form: {\r\n ...(state.form || {}),\r\n [action.formName]: {\r\n ...(state.form && state.form[action.formName] ? state.form[action.formName] : {}),\r\n ...action.values\r\n }\r\n }\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","'use client';\r\nimport React, { createContext, useContext, useReducer } from 'react';\r\n\r\nimport { stateReducer, CanvasState } from './stateReducer';\r\n\r\nconst StateContext = createContext<any>(null);\r\n\r\nexport function StateProvider({ children, initialState = {} }: { children: React.ReactNode, initialState?: CanvasState }) {\r\n const [state, dispatch] = useReducer(stateReducer, initialState);\r\n return (\r\n <StateContext.Provider value={{ state, dispatch }}>\r\n {children}\r\n </StateContext.Provider>\r\n );\r\n}\r\n\r\nexport function useAppState() {\r\n return useContext(StateContext);\r\n}\r\n"],"mappings":"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","names":["import_zod","schema","import_react","import_zod","import_react_hook_form","import_jsx_runtime","generateZodSchema","React","child","import_react","import_jsx_runtime"]}
|
package/dist/client.mjs
CHANGED
|
@@ -114,8 +114,11 @@ function applyDependencyRules(schema, fields) {
|
|
|
114
114
|
fieldValue = isNumber ? Number(fieldValue) : 0;
|
|
115
115
|
}
|
|
116
116
|
const matchedRules = f.dependencyRules.filter((rule) => {
|
|
117
|
-
|
|
118
|
-
return
|
|
117
|
+
if (!rule.conditions || rule.conditions.length === 0) return false;
|
|
118
|
+
return rule.conditions.every((cond) => {
|
|
119
|
+
const depVal = values[cond.dependsOn];
|
|
120
|
+
return evaluateOperator(depVal, cond.value, cond.operator);
|
|
121
|
+
});
|
|
119
122
|
});
|
|
120
123
|
if (matchedRules.length === 0) return;
|
|
121
124
|
const ruleToApply = matchedRules[0];
|
|
@@ -178,7 +181,17 @@ var FormWrapper = ({
|
|
|
178
181
|
if (!formValidation || formValidation.length === 0) return null;
|
|
179
182
|
return generateZodSchema(formValidation);
|
|
180
183
|
}, [props.validation]);
|
|
184
|
+
const onError = (errors) => {
|
|
185
|
+
const firstKey = Object.keys(errors)[0];
|
|
186
|
+
const errorField = document.querySelector(`[name="${firstKey}"]`);
|
|
187
|
+
if (errorField instanceof HTMLElement) {
|
|
188
|
+
errorField.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
189
|
+
errorField.focus();
|
|
190
|
+
}
|
|
191
|
+
};
|
|
181
192
|
const form = useForm({
|
|
193
|
+
shouldUnregister: true,
|
|
194
|
+
shouldFocusError: true,
|
|
182
195
|
resolver: schema ? zodResolver(schema) : void 0,
|
|
183
196
|
defaultValues
|
|
184
197
|
});
|
|
@@ -202,7 +215,7 @@ var FormWrapper = ({
|
|
|
202
215
|
return /* @__PURE__ */ jsx(
|
|
203
216
|
"form",
|
|
204
217
|
{
|
|
205
|
-
onSubmit: form.handleSubmit(formSubmit),
|
|
218
|
+
onSubmit: form.handleSubmit(formSubmit, onError),
|
|
206
219
|
onReset: handleReset,
|
|
207
220
|
className: cn(
|
|
208
221
|
"space-y-4 min-h-[100px] h-auto flex justify-between flex-col"
|
package/dist/client.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Form/Wrapper.tsx","../src/components/Form/Form.tsx","../src/components/StateManagment/stateReducer.ts","../src/components/StateManagment/StateContext.tsx"],"sourcesContent":["'use client';\r\nimport React, { useEffect, useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, UseFormReturn, useWatch } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface FormWrapperProps<T extends z.ZodObject<any>> {\r\n validation?: Record<string, any>;\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode | ((form: UseFormReturn<z.infer<T>>) => React.ReactNode);\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n onValuesChange?: (values: z.infer<T>) => void;\r\n}\r\n\r\n// -------------------------\r\n// Operator Matching Utility\r\n// -------------------------\r\nfunction evaluateOperator(depValue: any, ruleValue: any, operator: string) {\r\n switch (operator) {\r\n case 'equals':\r\n return depValue === ruleValue;\r\n\r\n case 'not_equals':\r\n return depValue !== ruleValue;\r\n\r\n case 'greater_than':\r\n return Number(depValue) > Number(ruleValue);\r\n\r\n case 'less_than':\r\n return Number(depValue) < Number(ruleValue);\r\n\r\n case 'contains':\r\n if (Array.isArray(depValue)) return depValue.includes(ruleValue);\r\n if (typeof depValue === 'string') return depValue.includes(String(ruleValue));\r\n return false;\r\n\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\n// -------------------------\r\n// Field Schema Generator\r\n// -------------------------\r\nfunction buildFieldSchema(field: any) {\r\n const message = field.message || `${field.name} is invalid`;\r\n\r\n switch (field.type) {\r\n case 'Text':\r\n case 'Search': {\r\n let schema = z.string({ message });\r\n\r\n if (field.min) schema = schema.min(field.min);\r\n else if (field.isRequired) schema = schema.min(1, { message: `${message}. Cannot be empty` });\r\n\r\n if (field.max) schema = schema.max(field.max);\r\n if (field.email) schema = schema.email();\r\n if (field.url) schema = schema.url();\r\n if (field.regex) schema = schema.regex(new RegExp(field.regex));\r\n\r\n return schema;\r\n }\r\n\r\n case 'Email':\r\n return field.isRequired ? z.string().email({ message }) : z.string().nullable();\r\n\r\n case 'Password':\r\n return z\r\n .string({ message })\r\n .min(field.passwordLength, {\r\n message: `Password must be at least ${field.passwordLength} characters long`,\r\n });\r\n\r\n case 'Phone':\r\n if (!field.isRequired) return z.string().nullable();\r\n return z\r\n .string()\r\n .transform((v) => v.replace(/\\D/g, '').slice(-10))\r\n .refine((val) => val.length === 10, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n\r\n case 'DatePicker':\r\n return z\r\n .string({ message })\r\n .trim()\r\n .refine((v) => {\r\n if (field.isRequired && !v) return false;\r\n if (!v) return true;\r\n const d = new Date(v);\r\n return !isNaN(d.getTime());\r\n }, { message });\r\n\r\n case 'FileInput': {\r\n let schema: any = z.instanceof(File, { message: 'Please select a file' });\r\n\r\n if (field.maxSize) {\r\n schema = schema.refine((file: File) => file.size <= field.maxSize, {\r\n message: `File size must be less than ${field.maxSize / 1024 / 1024} MB`,\r\n });\r\n }\r\n\r\n if (field.acceptedTypes) {\r\n schema = schema.refine(\r\n (file: File) => field.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${field.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n return schema;\r\n }\r\n\r\n case 'Checkbox':\r\n return z.boolean({ message });\r\n\r\n case 'Dropdown':\r\n return field.isRequired\r\n ? z.string({ message }).min(1, { message })\r\n : z.string().nullable();\r\n\r\n case 'NumberInput': {\r\n let numberSchema = z.number({ message });\r\n if (field.min !== '' && field.min !== undefined)\r\n numberSchema = numberSchema.min(field.min, {\r\n message: `Minimum value is ${field.min}`,\r\n });\r\n\r\n if (field.max !== '' && field.max !== undefined && field.max > 0)\r\n numberSchema = numberSchema.max(field.max, {\r\n message: `Maximum value is ${field.max}`,\r\n });\r\n\r\n return z.preprocess(\r\n (v) => {\r\n if (v === '' || v === null || v === undefined) return null;\r\n const n = Number(v);\r\n return isNaN(n) ? v : n;\r\n },\r\n numberSchema.nullable()\r\n );\r\n }\r\n\r\n default:\r\n return z.any();\r\n }\r\n}\r\n\r\n// -------------------------\r\n// Dependency Rule Validator with OR Operation\r\n// -------------------------\r\nfunction applyDependencyRules(schema: any, fields: any[]) {\r\n fields.forEach((f) => {\r\n if (!f.enableDependencyRules || !Array.isArray(f.dependencyRules)) return;\r\n\r\n const fieldName = f.name;\r\n const fieldType = f.type;\r\n\r\n schema = schema.superRefine((values: any, ctx: any) => {\r\n let fieldValue = values[fieldName];\r\n\r\n if (fieldType === 'NumberInput') {\r\n const isNumber = !isNaN(Number(fieldValue));\r\n fieldValue = isNumber ? Number(fieldValue) : 0;\r\n }\r\n\r\n // Collect all rules that match (OR condition)\r\n const matchedRules = f.dependencyRules.filter((rule: any) => {\r\n const depVal = values[rule.dependsOn];\r\n return evaluateOperator(depVal, rule.value, rule.operator);\r\n });\r\n\r\n // If no rule matches → skip validation\r\n if (matchedRules.length === 0) return;\r\n\r\n // Apply ONLY the first matched rule (OR behavior)\r\n const ruleToApply = matchedRules[0];\r\n\r\n // ---- Apply min / max / regex ----\r\n if (ruleToApply.min !== '' && ruleToApply.min !== undefined &&\r\n Number(fieldValue) < Number(ruleToApply.min)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} must be >= ${ruleToApply.min}`,\r\n });\r\n }\r\n\r\n if (ruleToApply.max !== '' && ruleToApply.max !== undefined && ruleToApply.max > 0 &&\r\n Number(fieldValue) > Number(ruleToApply.max)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} must be <= ${ruleToApply.max}`,\r\n });\r\n }\r\n\r\n if (ruleToApply.regex) {\r\n const re = new RegExp(ruleToApply.regex);\r\n if (!re.test(fieldValue)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} does not match required pattern`,\r\n });\r\n }\r\n }\r\n\r\n });\r\n });\r\n\r\n return schema;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]) {\r\n const fieldMap: Record<string, any> = {};\r\n\r\n // Build individual field schemas\r\n data.forEach((field) => {\r\n let schema = buildFieldSchema(field);\r\n\r\n if (!field.isRequired) {\r\n schema = schema.nullable().optional();\r\n }\r\n\r\n fieldMap[field.name] = schema;\r\n });\r\n\r\n // Create object schema\r\n let schema = z.object(fieldMap);\r\n\r\n // Apply dependency rules\r\n schema = applyDependencyRules(schema, data);\r\n\r\n return schema;\r\n}\r\n\r\nconst FormWrapper = <T extends z.ZodObject<any>>({\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n onValuesChange,\r\n ...props\r\n}: FormWrapperProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (Array.isArray(props.validation)) return null;\r\n // Transform validation to ensure isRequired is boolean\r\n const validation = Object.values(props.validation || {}).map(v => ({\r\n ...v,\r\n isRequired: !!v.isRequired\r\n }));\r\n\r\n const formValidation = validation?.filter(i => i);\r\n if (!formValidation || formValidation.length === 0) return null;\r\n return generateZodSchema(formValidation);\r\n }, [props.validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const form = useForm<FormData>({\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formValues = useWatch({ control: form.control }) as FormData;\r\n\r\n useEffect(() => {\r\n onValuesChange?.(formValues);\r\n }, [formValues]);\r\n\r\n useEffect(() => {\r\n if (!defaultValues) return;\r\n // Only reset if defaultValues is an object (not null, undefined, or array)\r\n if (typeof defaultValues === 'object' && defaultValues !== null && !Array.isArray(defaultValues)) {\r\n form.reset(defaultValues);\r\n }\r\n }, [defaultValues]);\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n form.reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={form.handleSubmit(formSubmit)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {typeof children === 'function'\r\n ? (children as (form: UseFormReturn<FormData>) => React.ReactNode)(form)\r\n : children}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default FormWrapper;","'use client';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, Controller } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\n// ****************** THIS COMPONENT NOT USED IN EXPORT CODE OR ANYWHERE ELSE YET. ************************\r\n\r\ninterface FormProps<T extends z.ZodObject<any>> {\r\n validation?: any[];\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode;\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]): z.ZodObject<any> {\r\n const fields = data.reduce((acc, f) => {\r\n const name = f.name || 'unnamed';\r\n const message = f.message || `${name} is invalid`;\r\n const passwordLen = f.passwordLength;\r\n\r\n let fieldSchema: any = z.string({ message });\r\n\r\n switch (f.type) {\r\n case 'Text':\r\n case 'Search':\r\n fieldSchema = z.string({ message });\r\n if (f?.min && f?.min !== '') fieldSchema = fieldSchema.min(f.min);\r\n else if (f.isRequired) fieldSchema = fieldSchema.min(1, { message: `${message}. Cannot be empty` });\r\n if (f?.max && f?.max !== '') fieldSchema = fieldSchema.max(f.max);\r\n if (f?.email) fieldSchema = fieldSchema.email();\r\n if (f?.url) fieldSchema = fieldSchema.url();\r\n if (f?.regex) fieldSchema = fieldSchema.regex(new RegExp(f.regex));\r\n break;\r\n case 'Email':\r\n fieldSchema = z.email({ message });\r\n break;\r\n case 'Password':\r\n fieldSchema = z.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });\r\n break;\r\n case 'Phone':\r\n fieldSchema = z.string().transform(val => val.replace(/\\D/g, '')).transform(val => val.slice(-10)).refine(val => {\r\n return val.length === 10;\r\n }, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n break;\r\n case 'DatePicker':\r\n fieldSchema = z.string({\r\n message: message || 'Date is required',\r\n }).trim().refine((val) => {\r\n if (f.isRequired && !val) return false;\r\n if (!f.isRequired && !val) return true;\r\n const date = new Date(val);\r\n return !isNaN(date.getTime());\r\n }, { message: message || 'Invalid date' });\r\n break;\r\n case 'FileInput':\r\n fieldSchema = z.instanceof(File, { message: 'Please select a file' });\r\n if (f?.maxSize) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => file.size <= f.maxSize,\r\n { message: `File size must be less than ${f.maxSize / 1024 / 1024}MB` }\r\n );\r\n }\r\n if (f?.acceptedTypes) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => f.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${f.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n break;\r\n case 'Checkbox':\r\n fieldSchema = z.boolean({ message });\r\n break;\r\n case 'Dropdown':\r\n if (f.isRequired) {\r\n fieldSchema = z.string({ message }).min(1, { message });\r\n } else {\r\n fieldSchema = z.string().nullable();\r\n }\r\n break;\r\n case 'NumberInput':\r\n let numberSchema = z.number({ message });\r\n\r\n if (f.min !== undefined)\r\n numberSchema = numberSchema.min(f.min, {\r\n message: `Minimum value is ${f.min}`,\r\n });\r\n\r\n if (f.max !== undefined)\r\n numberSchema = numberSchema.max(f.max, {\r\n message: `Maximum value is ${f.max}`,\r\n });\r\n\r\n // Preprocess empty string/null → null and cast strings to numbers\r\n fieldSchema = z.preprocess(\r\n (val) => {\r\n if (val === '' || val === null || val === undefined) return null;\r\n const num = Number(val);\r\n return isNaN(num) ? val : num;\r\n },\r\n numberSchema.nullable()\r\n );\r\n break;\r\n default:\r\n fieldSchema = z.any();\r\n }\r\n\r\n if (!f.isRequired) fieldSchema = fieldSchema.nullable().optional();\r\n\r\n acc[name] = fieldSchema;\r\n return acc;\r\n }, {} as Record<string, any>);\r\n\r\n return z.object(fields);\r\n}\r\n\r\nconst Form = <T extends z.ZodObject<any>>({\r\n validation,\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n}: FormProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (!validation || validation.length === 0) return null;\r\n return generateZodSchema(validation);\r\n }, [validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const {\r\n handleSubmit,\r\n control,\r\n formState: { errors },\r\n reset,\r\n } = useForm<FormData>({\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={handleSubmit(formSubmit)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {React.Children.map(children, child => {\r\n const processChild = (child: React.ReactNode): React.ReactNode => {\r\n if (React.isValidElement(child)) {\r\n const node = (child.props as any)?.node;\r\n\r\n if (node?.category === 'Form Controls') {\r\n const name = node.properties?.name || 'unnamed';\r\n return (\r\n <div key={node.id} className=\"flex flex-col\">\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field: controllerField }) => {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode, input?: any }>;\r\n return React.cloneElement(childElement, {\r\n input: {\r\n ...controllerField,\r\n value: controllerField.value || '',\r\n hasFormContainer: true,\r\n validateOnMount: true,\r\n errorMessage: errors[name]?.message || null\r\n },\r\n children: undefined\r\n });\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n // Recursively process children of this element\r\n if ((child as React.ReactElement<{ children?: React.ReactNode }>).props?.children) {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode }>;\r\n return React.cloneElement(childElement, {\r\n children: React.Children.map(childElement.props.children, processChild),\r\n });\r\n }\r\n\r\n return React.cloneElement(child);\r\n }\r\n return child;\r\n };\r\n\r\n return processChild(child);\r\n })}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default Form;","export type CanvasState = Record<string, any>;\r\n\r\nexport type CanvasAction =\r\n | { type: 'SET_STATE'; key: string; value: any }\r\n | { type: 'SET_MULTIPLE_STATES'; values: Record<string, any> }\r\n | { type: 'SET_FORM_STATE'; formName: string; values: Record<string, any> };\r\n\r\nexport function stateReducer(state: CanvasState, action: CanvasAction): CanvasState {\r\n switch (action.type) {\r\n case 'SET_STATE':\r\n return { ...state, [action.key]: action.value };\r\n\r\n case 'SET_MULTIPLE_STATES':\r\n return { ...state, ...action.values };\r\n\r\n case 'SET_FORM_STATE':\r\n return {\r\n ...state,\r\n form: {\r\n ...(state.form || {}),\r\n [action.formName]: {\r\n ...(state.form && state.form[action.formName] ? state.form[action.formName] : {}),\r\n ...action.values\r\n }\r\n }\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","'use client';\r\nimport React, { createContext, useContext, useReducer } from 'react';\r\n\r\nimport { stateReducer, CanvasState } from './stateReducer';\r\n\r\nconst StateContext = createContext<any>(null);\r\n\r\nexport function StateProvider({ children, initialState = {} }: { children: React.ReactNode, initialState?: CanvasState }) {\r\n const [state, dispatch] = useReducer(stateReducer, initialState);\r\n return (\r\n <StateContext.Provider value={{ state, dispatch }}>\r\n {children}\r\n </StateContext.Provider>\r\n );\r\n}\r\n\r\nexport function useAppState() {\r\n return useContext(StateContext);\r\n}\r\n"],"mappings":"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","names":["schema","React","useMemo","zodResolver","useForm","z","jsx","generateZodSchema","z","useMemo","useForm","zodResolver","React","child","jsx"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Form/Wrapper.tsx","../src/components/Form/Form.tsx","../src/components/StateManagment/stateReducer.ts","../src/components/StateManagment/StateContext.tsx"],"sourcesContent":["'use client';\r\nimport React, { useEffect, useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, UseFormReturn, useWatch } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface FormWrapperProps<T extends z.ZodObject<any>> {\r\n validation?: Record<string, any>;\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode | ((form: UseFormReturn<z.infer<T>>) => React.ReactNode);\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n onValuesChange?: (values: z.infer<T>) => void;\r\n}\r\n\r\n// -------------------------\r\n// Operator Matching Utility\r\n// -------------------------\r\nfunction evaluateOperator(depValue: any, ruleValue: any, operator: string) {\r\n switch (operator) {\r\n case 'equals':\r\n return depValue === ruleValue;\r\n\r\n case 'not_equals':\r\n return depValue !== ruleValue;\r\n\r\n case 'greater_than':\r\n return Number(depValue) > Number(ruleValue);\r\n\r\n case 'less_than':\r\n return Number(depValue) < Number(ruleValue);\r\n\r\n case 'contains':\r\n if (Array.isArray(depValue)) return depValue.includes(ruleValue);\r\n if (typeof depValue === 'string') return depValue.includes(String(ruleValue));\r\n return false;\r\n\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\n// -------------------------\r\n// Field Schema Generator\r\n// -------------------------\r\nfunction buildFieldSchema(field: any) {\r\n const message = field.message || `${field.name} is invalid`;\r\n\r\n switch (field.type) {\r\n case 'Text':\r\n case 'Search': {\r\n let schema = z.string({ message });\r\n\r\n if (field.min) schema = schema.min(field.min);\r\n else if (field.isRequired) schema = schema.min(1, { message: `${message}. Cannot be empty` });\r\n\r\n if (field.max) schema = schema.max(field.max);\r\n if (field.email) schema = schema.email();\r\n if (field.url) schema = schema.url();\r\n if (field.regex) schema = schema.regex(new RegExp(field.regex));\r\n\r\n return schema;\r\n }\r\n\r\n case 'Email':\r\n return field.isRequired ? z.string().email({ message }) : z.string().nullable();\r\n\r\n case 'Password':\r\n return z\r\n .string({ message })\r\n .min(field.passwordLength, {\r\n message: `Password must be at least ${field.passwordLength} characters long`,\r\n });\r\n\r\n case 'Phone':\r\n if (!field.isRequired) return z.string().nullable();\r\n return z\r\n .string()\r\n .transform((v) => v.replace(/\\D/g, '').slice(-10))\r\n .refine((val) => val.length === 10, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n\r\n case 'DatePicker':\r\n return z\r\n .string({ message })\r\n .trim()\r\n .refine((v) => {\r\n if (field.isRequired && !v) return false;\r\n if (!v) return true;\r\n const d = new Date(v);\r\n return !isNaN(d.getTime());\r\n }, { message });\r\n\r\n case 'FileInput': {\r\n let schema: any = z.instanceof(File, { message: 'Please select a file' });\r\n\r\n if (field.maxSize) {\r\n schema = schema.refine((file: File) => file.size <= field.maxSize, {\r\n message: `File size must be less than ${field.maxSize / 1024 / 1024} MB`,\r\n });\r\n }\r\n\r\n if (field.acceptedTypes) {\r\n schema = schema.refine(\r\n (file: File) => field.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${field.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n return schema;\r\n }\r\n\r\n case 'Checkbox':\r\n return z.boolean({ message });\r\n\r\n case 'Dropdown':\r\n return field.isRequired\r\n ? z.string({ message }).min(1, { message })\r\n : z.string().nullable();\r\n\r\n case 'NumberInput': {\r\n let numberSchema = z.number({ message });\r\n if (field.min !== '' && field.min !== undefined)\r\n numberSchema = numberSchema.min(field.min, {\r\n message: `Minimum value is ${field.min}`,\r\n });\r\n\r\n if (field.max !== '' && field.max !== undefined && field.max > 0)\r\n numberSchema = numberSchema.max(field.max, {\r\n message: `Maximum value is ${field.max}`,\r\n });\r\n\r\n return z.preprocess(\r\n (v) => {\r\n if (v === '' || v === null || v === undefined) return null;\r\n const n = Number(v);\r\n return isNaN(n) ? v : n;\r\n },\r\n numberSchema.nullable()\r\n );\r\n }\r\n\r\n default:\r\n return z.any();\r\n }\r\n}\r\n\r\n// -------------------------\r\n// Dependency Rule Validator with OR Operation\r\n// -------------------------\r\nfunction applyDependencyRules(schema: any, fields: any[]) {\r\n fields.forEach((f) => {\r\n if (!f.enableDependencyRules || !Array.isArray(f.dependencyRules)) return;\r\n\r\n const fieldName = f.name;\r\n const fieldType = f.type;\r\n\r\n schema = schema.superRefine((values: any, ctx: any) => {\r\n let fieldValue = values[fieldName];\r\n\r\n if (fieldType === 'NumberInput') {\r\n const isNumber = !isNaN(Number(fieldValue));\r\n fieldValue = isNumber ? Number(fieldValue) : 0;\r\n }\r\n\r\n // Collect all rules that match (OR condition)\r\n const matchedRules = f.dependencyRules.filter((rule: any) => {\r\n if (!rule.conditions || rule.conditions.length === 0) return false;\r\n\r\n // AND logic for conditions inside the rule\r\n return rule.conditions.every((cond: any) => {\r\n const depVal = values[cond.dependsOn];\r\n return evaluateOperator(depVal, cond.value, cond.operator);\r\n });\r\n });\r\n\r\n // If no rule matches → skip validation\r\n if (matchedRules.length === 0) return;\r\n\r\n // Apply ONLY the first matched rule (OR behavior)\r\n const ruleToApply = matchedRules[0];\r\n\r\n // ---- Apply min / max / regex ----\r\n if (ruleToApply.min !== '' && ruleToApply.min !== undefined &&\r\n Number(fieldValue) < Number(ruleToApply.min)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} must be >= ${ruleToApply.min}`,\r\n });\r\n }\r\n\r\n if (ruleToApply.max !== '' && ruleToApply.max !== undefined && ruleToApply.max > 0 &&\r\n Number(fieldValue) > Number(ruleToApply.max)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} must be <= ${ruleToApply.max}`,\r\n });\r\n }\r\n\r\n if (ruleToApply.regex) {\r\n const re = new RegExp(ruleToApply.regex);\r\n if (!re.test(fieldValue)) {\r\n ctx.addIssue({\r\n code: 'custom',\r\n path: [fieldName],\r\n message: ruleToApply.message || `${fieldName} does not match required pattern`,\r\n });\r\n }\r\n }\r\n });\r\n });\r\n\r\n return schema;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]) {\r\n const fieldMap: Record<string, any> = {};\r\n\r\n // Build individual field schemas\r\n data.forEach((field) => {\r\n let schema = buildFieldSchema(field);\r\n\r\n if (!field.isRequired) {\r\n schema = schema.nullable().optional();\r\n }\r\n\r\n fieldMap[field.name] = schema;\r\n });\r\n\r\n // Create object schema\r\n let schema = z.object(fieldMap);\r\n\r\n // Apply dependency rules\r\n schema = applyDependencyRules(schema, data);\r\n\r\n return schema;\r\n}\r\n\r\nconst FormWrapper = <T extends z.ZodObject<any>>({\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n onValuesChange,\r\n ...props\r\n}: FormWrapperProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (Array.isArray(props.validation)) return null;\r\n // Transform validation to ensure isRequired is boolean\r\n const validation = Object.values(props.validation || {}).map(v => ({\r\n ...v,\r\n isRequired: !!v.isRequired\r\n }));\r\n\r\n const formValidation = validation?.filter(i => i);\r\n if (!formValidation || formValidation.length === 0) return null;\r\n return generateZodSchema(formValidation);\r\n }, [props.validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const onError = (errors: any) => {\r\n const firstKey = Object.keys(errors)[0];\r\n const errorField = document.querySelector(`[name=\"${firstKey}\"]`);\r\n\r\n if (errorField instanceof HTMLElement) {\r\n errorField.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n errorField.focus();\r\n }\r\n };\r\n\r\n const form = useForm<FormData>({\r\n shouldUnregister: true,\r\n shouldFocusError: true,\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formValues = useWatch({ control: form.control }) as FormData;\r\n\r\n useEffect(() => {\r\n onValuesChange?.(formValues);\r\n }, [formValues]);\r\n\r\n useEffect(() => {\r\n if (!defaultValues) return;\r\n // Only reset if defaultValues is an object (not null, undefined, or array)\r\n if (typeof defaultValues === 'object' && defaultValues !== null && !Array.isArray(defaultValues)) {\r\n form.reset(defaultValues);\r\n }\r\n }, [defaultValues]);\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n form.reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={form.handleSubmit(formSubmit, onError)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {typeof children === 'function'\r\n ? (children as (form: UseFormReturn<FormData>) => React.ReactNode)(form)\r\n : children}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default FormWrapper;","'use client';\r\nimport React, { useMemo } from 'react';\r\n\r\nimport { zodResolver } from '@hookform/resolvers/zod';\r\nimport { useForm, Controller } from 'react-hook-form';\r\nimport { z } from 'zod';\r\n\r\nimport { cn } from '@/lib/utils';\r\n\r\n// ****************** THIS COMPONENT NOT USED IN EXPORT CODE OR ANYWHERE ELSE YET. ************************\r\n\r\ninterface FormProps<T extends z.ZodObject<any>> {\r\n validation?: any[];\r\n formName?: string;\r\n defaultValues?: Partial<z.infer<T>> | any;\r\n children?: React.ReactNode;\r\n onSubmit?: (data: z.infer<T>) => void;\r\n onReset?: () => void;\r\n}\r\n\r\nfunction generateZodSchema(data: any[]): z.ZodObject<any> {\r\n const fields = data.reduce((acc, f) => {\r\n const name = f.name || 'unnamed';\r\n const message = f.message || `${name} is invalid`;\r\n const passwordLen = f.passwordLength;\r\n\r\n let fieldSchema: any = z.string({ message });\r\n\r\n switch (f.type) {\r\n case 'Text':\r\n case 'Search':\r\n fieldSchema = z.string({ message });\r\n if (f?.min && f?.min !== '') fieldSchema = fieldSchema.min(f.min);\r\n else if (f.isRequired) fieldSchema = fieldSchema.min(1, { message: `${message}. Cannot be empty` });\r\n if (f?.max && f?.max !== '') fieldSchema = fieldSchema.max(f.max);\r\n if (f?.email) fieldSchema = fieldSchema.email();\r\n if (f?.url) fieldSchema = fieldSchema.url();\r\n if (f?.regex) fieldSchema = fieldSchema.regex(new RegExp(f.regex));\r\n break;\r\n case 'Email':\r\n fieldSchema = z.email({ message });\r\n break;\r\n case 'Password':\r\n fieldSchema = z.string({ message }).min(passwordLen, { message: `Password must be at least ${passwordLen} characters long` });\r\n break;\r\n case 'Phone':\r\n fieldSchema = z.string().transform(val => val.replace(/\\D/g, '')).transform(val => val.slice(-10)).refine(val => {\r\n return val.length === 10;\r\n }, {\r\n message: 'Phone number must be 10 digits long',\r\n });\r\n break;\r\n case 'DatePicker':\r\n fieldSchema = z.string({\r\n message: message || 'Date is required',\r\n }).trim().refine((val) => {\r\n if (f.isRequired && !val) return false;\r\n if (!f.isRequired && !val) return true;\r\n const date = new Date(val);\r\n return !isNaN(date.getTime());\r\n }, { message: message || 'Invalid date' });\r\n break;\r\n case 'FileInput':\r\n fieldSchema = z.instanceof(File, { message: 'Please select a file' });\r\n if (f?.maxSize) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => file.size <= f.maxSize,\r\n { message: `File size must be less than ${f.maxSize / 1024 / 1024}MB` }\r\n );\r\n }\r\n if (f?.acceptedTypes) {\r\n fieldSchema = fieldSchema.refine(\r\n (file: File) => f.acceptedTypes.includes(file.type),\r\n { message: `File type must be one of: ${f.acceptedTypes.join(', ')}` }\r\n );\r\n }\r\n break;\r\n case 'Checkbox':\r\n fieldSchema = z.boolean({ message });\r\n break;\r\n case 'Dropdown':\r\n if (f.isRequired) {\r\n fieldSchema = z.string({ message }).min(1, { message });\r\n } else {\r\n fieldSchema = z.string().nullable();\r\n }\r\n break;\r\n case 'NumberInput':\r\n let numberSchema = z.number({ message });\r\n\r\n if (f.min !== undefined)\r\n numberSchema = numberSchema.min(f.min, {\r\n message: `Minimum value is ${f.min}`,\r\n });\r\n\r\n if (f.max !== undefined)\r\n numberSchema = numberSchema.max(f.max, {\r\n message: `Maximum value is ${f.max}`,\r\n });\r\n\r\n // Preprocess empty string/null → null and cast strings to numbers\r\n fieldSchema = z.preprocess(\r\n (val) => {\r\n if (val === '' || val === null || val === undefined) return null;\r\n const num = Number(val);\r\n return isNaN(num) ? val : num;\r\n },\r\n numberSchema.nullable()\r\n );\r\n break;\r\n default:\r\n fieldSchema = z.any();\r\n }\r\n\r\n if (!f.isRequired) fieldSchema = fieldSchema.nullable().optional();\r\n\r\n acc[name] = fieldSchema;\r\n return acc;\r\n }, {} as Record<string, any>);\r\n\r\n return z.object(fields);\r\n}\r\n\r\nconst Form = <T extends z.ZodObject<any>>({\r\n validation,\r\n defaultValues,\r\n children,\r\n onSubmit,\r\n onReset,\r\n}: FormProps<T>) => {\r\n\r\n const schema = useMemo(() => {\r\n if (!validation || validation.length === 0) return null;\r\n return generateZodSchema(validation);\r\n }, [validation]);\r\n\r\n type FormData = z.infer<T>;\r\n\r\n const {\r\n handleSubmit,\r\n control,\r\n formState: { errors },\r\n reset,\r\n } = useForm<FormData>({\r\n resolver: schema ? zodResolver(schema) as any : undefined,\r\n defaultValues,\r\n });\r\n\r\n const formSubmit = (data: FormData) => {\r\n if (onSubmit) onSubmit(data);\r\n };\r\n\r\n const handleReset = () => {\r\n reset();\r\n if (onReset) onReset();\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={handleSubmit(formSubmit)}\r\n onReset={handleReset}\r\n className={cn(\r\n 'space-y-4 min-h-[100px] h-auto flex justify-between flex-col'\r\n )}\r\n >\r\n <div className='min-h-[50px]'>\r\n {React.Children.map(children, child => {\r\n const processChild = (child: React.ReactNode): React.ReactNode => {\r\n if (React.isValidElement(child)) {\r\n const node = (child.props as any)?.node;\r\n\r\n if (node?.category === 'Form Controls') {\r\n const name = node.properties?.name || 'unnamed';\r\n return (\r\n <div key={node.id} className=\"flex flex-col\">\r\n <Controller\r\n name={name}\r\n control={control}\r\n render={({ field: controllerField }) => {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode, input?: any }>;\r\n return React.cloneElement(childElement, {\r\n input: {\r\n ...controllerField,\r\n value: controllerField.value || '',\r\n hasFormContainer: true,\r\n validateOnMount: true,\r\n errorMessage: errors[name]?.message || null\r\n },\r\n children: undefined\r\n });\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n // Recursively process children of this element\r\n if ((child as React.ReactElement<{ children?: React.ReactNode }>).props?.children) {\r\n const childElement = child as React.ReactElement<{ children?: React.ReactNode }>;\r\n return React.cloneElement(childElement, {\r\n children: React.Children.map(childElement.props.children, processChild),\r\n });\r\n }\r\n\r\n return React.cloneElement(child);\r\n }\r\n return child;\r\n };\r\n\r\n return processChild(child);\r\n })}\r\n </div>\r\n </form>\r\n );\r\n};\r\n\r\nexport default Form;","export type CanvasState = Record<string, any>;\r\n\r\nexport type CanvasAction =\r\n | { type: 'SET_STATE'; key: string; value: any }\r\n | { type: 'SET_MULTIPLE_STATES'; values: Record<string, any> }\r\n | { type: 'SET_FORM_STATE'; formName: string; values: Record<string, any> };\r\n\r\nexport function stateReducer(state: CanvasState, action: CanvasAction): CanvasState {\r\n switch (action.type) {\r\n case 'SET_STATE':\r\n return { ...state, [action.key]: action.value };\r\n\r\n case 'SET_MULTIPLE_STATES':\r\n return { ...state, ...action.values };\r\n\r\n case 'SET_FORM_STATE':\r\n return {\r\n ...state,\r\n form: {\r\n ...(state.form || {}),\r\n [action.formName]: {\r\n ...(state.form && state.form[action.formName] ? state.form[action.formName] : {}),\r\n ...action.values\r\n }\r\n }\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","'use client';\r\nimport React, { createContext, useContext, useReducer } from 'react';\r\n\r\nimport { stateReducer, CanvasState } from './stateReducer';\r\n\r\nconst StateContext = createContext<any>(null);\r\n\r\nexport function StateProvider({ children, initialState = {} }: { children: React.ReactNode, initialState?: CanvasState }) {\r\n const [state, dispatch] = useReducer(stateReducer, initialState);\r\n return (\r\n <StateContext.Provider value={{ state, dispatch }}>\r\n {children}\r\n </StateContext.Provider>\r\n );\r\n}\r\n\r\nexport function useAppState() {\r\n return useContext(StateContext);\r\n}\r\n"],"mappings":"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","names":["schema","React","useMemo","zodResolver","useForm","z","jsx","generateZodSchema","z","useMemo","useForm","zodResolver","React","child","jsx"]}
|