{"version":3,"file":"mergeForm.cjs","sources":["../../src/mergeForm.ts"],"sourcesContent":["import type {\n  FormApi,\n  FormAsyncValidateOrFn,\n  FormValidateOrFn,\n} from './FormApi'\n\nfunction isValidKey(key: string | number | symbol): boolean {\n  const dangerousProps = ['__proto__', 'constructor', 'prototype']\n  return !dangerousProps.includes(String(key))\n}\n\n/**\n * @private\n */\nexport function mutateMergeDeep(\n  target: object | null | undefined,\n  source: object | null | undefined,\n): object {\n  // Early return if either is not an object\n  if (target === null || target === undefined || typeof target !== 'object')\n    return {} as object\n  if (source === null || source === undefined || typeof source !== 'object')\n    return target\n\n  const targetKeys = Object.keys(target)\n  const sourceKeys = Object.keys(source)\n  const keySet = new Set([...targetKeys, ...sourceKeys])\n\n  for (const key of keySet) {\n    if (!isValidKey(key)) continue\n\n    const targetKey = key as keyof typeof target\n    const sourceKey = key as keyof typeof source\n\n    if (!Object.hasOwn(source, sourceKey)) continue\n\n    const sourceValue = source[sourceKey] as unknown\n    const targetValue = target[targetKey] as unknown\n\n    // Handle arrays\n    if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n      Object.defineProperty(target, key, {\n        value: [...sourceValue],\n        enumerable: true,\n        writable: true,\n        configurable: true,\n      })\n      continue\n    }\n\n    // Handle nested objects (type assertion to satisfy ESLint)\n    const isTargetObj = typeof targetValue === 'object' && targetValue !== null\n    const isSourceObj = typeof sourceValue === 'object' && sourceValue !== null\n    const areObjects =\n      isTargetObj &&\n      isSourceObj &&\n      !Array.isArray(targetValue) &&\n      !Array.isArray(sourceValue)\n\n    if (areObjects) {\n      mutateMergeDeep(targetValue as object, sourceValue as object)\n      continue\n    }\n\n    // Handle all other cases\n    Object.defineProperty(target, key, {\n      value: sourceValue,\n      enumerable: true,\n      writable: true,\n      configurable: true,\n    })\n  }\n\n  return target\n}\n\nexport function mergeForm<\n  TFormData,\n  TOnMount extends undefined | FormValidateOrFn<TFormData>,\n  TOnChange extends undefined | FormValidateOrFn<TFormData>,\n  TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n  TOnBlur extends undefined | FormValidateOrFn<TFormData>,\n  TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n  TOnSubmit extends undefined | FormValidateOrFn<TFormData>,\n  TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n  TOnDynamic extends undefined | FormValidateOrFn<TFormData>,\n  TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,\n  TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,\n  TSubmitMeta = never,\n>(\n  baseForm: FormApi<\n    TFormData,\n    TOnMount,\n    TOnChange,\n    TOnChangeAsync,\n    TOnBlur,\n    TOnBlurAsync,\n    TOnSubmit,\n    TOnSubmitAsync,\n    TOnDynamic,\n    TOnDynamicAsync,\n    TOnServer,\n    TSubmitMeta\n  >,\n  state: Partial<\n    FormApi<\n      TFormData,\n      TOnMount,\n      TOnChange,\n      TOnChangeAsync,\n      TOnBlur,\n      TOnBlurAsync,\n      TOnSubmit,\n      TOnSubmitAsync,\n      TOnDynamic,\n      TOnDynamicAsync,\n      TOnServer,\n      TSubmitMeta\n    >['state']\n  >,\n) {\n  mutateMergeDeep(baseForm.state, state)\n  return baseForm\n}\n"],"names":[],"mappings":";;AAMA,SAAS,WAAW,KAAwC;AAC1D,QAAM,iBAAiB,CAAC,aAAa,eAAe,WAAW;AAC/D,SAAO,CAAC,eAAe,SAAS,OAAO,GAAG,CAAC;AAC7C;AAKO,SAAS,gBACd,QACA,QACQ;AAER,MAAI,WAAW,QAAQ,WAAW,UAAa,OAAO,WAAW;AAC/D,WAAO,CAAA;AACT,MAAI,WAAW,QAAQ,WAAW,UAAa,OAAO,WAAW;AAC/D,WAAO;AAET,QAAM,aAAa,OAAO,KAAK,MAAM;AACrC,QAAM,aAAa,OAAO,KAAK,MAAM;AACrC,QAAM,6BAAa,IAAI,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC;AAErD,aAAW,OAAO,QAAQ;AACxB,QAAI,CAAC,WAAW,GAAG,EAAG;AAEtB,UAAM,YAAY;AAClB,UAAM,YAAY;AAElB,QAAI,CAAC,OAAO,OAAO,QAAQ,SAAS,EAAG;AAEvC,UAAM,cAAc,OAAO,SAAS;AACpC,UAAM,cAAc,OAAO,SAAS;AAGpC,QAAI,MAAM,QAAQ,WAAW,KAAK,MAAM,QAAQ,WAAW,GAAG;AAC5D,aAAO,eAAe,QAAQ,KAAK;AAAA,QACjC,OAAO,CAAC,GAAG,WAAW;AAAA,QACtB,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,cAAc;AAAA,MAAA,CACf;AACD;AAAA,IACF;AAGA,UAAM,cAAc,OAAO,gBAAgB,YAAY,gBAAgB;AACvE,UAAM,cAAc,OAAO,gBAAgB,YAAY,gBAAgB;AACvE,UAAM,aACJ,eACA,eACA,CAAC,MAAM,QAAQ,WAAW,KAC1B,CAAC,MAAM,QAAQ,WAAW;AAE5B,QAAI,YAAY;AACd,sBAAgB,aAAuB,WAAqB;AAC5D;AAAA,IACF;AAGA,WAAO,eAAe,QAAQ,KAAK;AAAA,MACjC,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,cAAc;AAAA,IAAA,CACf;AAAA,EACH;AAEA,SAAO;AACT;AAEO,SAAS,UAcd,UAcA,OAgBA;AACA,kBAAgB,SAAS,OAAO,KAAK;AACrC,SAAO;AACT;;;"}