{"version":3,"file":"antd.mjs","names":[],"sources":["../src/antd/useHookFormMaskAntd.ts","../src/antd/useMaskInputAntd.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { applyMaskToElement, resolveInputRef } from '../core';\nimport { makeMaskCacheKey, setPrevRef } from '../utils';\n\nimport type { InputRef } from 'antd';\nimport type { RefCallback } from 'react';\nimport type {\n  FieldValues, Path,\n  RegisterOptions,\n  UseFormRegister,\n} from 'react-hook-form';\n\nimport type { Mask, Options, UseHookFormMaskReturn } from '../types';\n\nexport type UseHookFormMaskAntdReturn<T extends FieldValues> = Omit<\n  UseHookFormMaskReturn<T>,\n  'ref'\n> & { ref: RefCallback<InputRef | null> };\n\n/**\n * Ant Design version of useHookFormMask.\n * Creates a masked register that works with Ant Design Input (ref receives InputRef).\n *\n * @template T - The form data type\n * @template D - The register options type\n * @param registerFn - The register function from useForm hook\n * @returns A function that registers a field with mask support for Ant Design Input\n */\nexport default function useHookFormMaskAntd<\n  T extends FieldValues, D extends RegisterOptions,\n>(registerFn: UseFormRegister<T>): ((fieldName: Path<T>, mask: Mask, options?: (\n  D & Options) | Options | D) => UseHookFormMaskAntdReturn<T>) {\n  //\n  return useMemo(() => {\n    const refCache = new Map<string, RefCallback<InputRef | null>>();\n\n    return (fieldName: Path<T>, mask: Mask, options?: (\n      D & Options) | Options | D): UseHookFormMaskAntdReturn<T> => {\n      if (!registerFn) throw new Error('registerFn is required');\n\n      const registerReturn = registerFn(fieldName, options as Options);\n      const { ref } = registerReturn as UseHookFormMaskReturn<T>;\n\n      const cacheKey = makeMaskCacheKey(fieldName, mask);\n\n      if (!refCache.has(cacheKey)) {\n        const refWithMask: RefCallback<InputRef | null> = (inputRef) => {\n          const element = inputRef ? resolveInputRef(inputRef.input) : null;\n          if (element) applyMaskToElement(element, mask, options as Options);\n          if (ref) ref(element);\n        };\n        refCache.set(cacheKey, refWithMask);\n      }\n\n      const result = {\n        ...registerReturn,\n        ref: refCache.get(cacheKey),\n      } as UseHookFormMaskAntdReturn<T>;\n\n      setPrevRef(result, ref);\n\n      return result;\n    };\n  }, [registerFn]);\n}\n","import { useCallback, useEffect, useRef } from 'react';\n\nimport withMask from '../api/withMask';\nimport { resolveInputRef } from '../core';\nimport isServer from '../utils/isServer';\nimport { getUnmaskedValue, setUnmaskedValue } from '../utils';\n\nimport type { InputRef } from 'antd';\n\nimport type { Mask, Options, UnmaskedValueApi } from '../types';\n\ntype UseMaskInputAntdReturn = ((input: InputRef | null) => void) & UnmaskedValueApi;\n\ninterface UseMaskInputOptions {\n  mask: Mask;\n  register?: (element: HTMLElement) => void;\n  options?: Options;\n}\n\n/**\n * React hook for applying input masks to Ant Design form elements.\n *\n * @param props - Configuration object\n * @param props.mask - The mask pattern to apply\n * @param props.register - Optional callback that receives the element\n * @param props.options - Optional mask configuration options\n * @returns A ref callback function to attach to the Ant Design Input element\n */\nexport default function useMaskInputAntd(props: UseMaskInputOptions): UseMaskInputAntdReturn {\n  const { mask, register, options } = props;\n  const ref = useRef<HTMLInputElement | null>(null);\n  const maskRef = useRef(mask);\n  const optionsRef = useRef(options);\n  const maskedElementRef = useRef<HTMLInputElement | null>(null);\n  const unmaskedValue = useCallback(() => getUnmaskedValue(ref.current), []);\n\n  maskRef.current = mask;\n  optionsRef.current = options;\n\n  const refCallback = useCallback((input: InputRef | null): void => {\n    if (!input) {\n      ref.current = null;\n      return;\n    }\n\n    ref.current = resolveInputRef(input.input);\n\n    if (ref.current && ref.current !== maskedElementRef.current) {\n      withMask(maskRef.current, optionsRef.current)(ref.current);\n      maskedElementRef.current = ref.current;\n    }\n  }, []);\n\n  useEffect(() => {\n    if (isServer || !ref.current || !register) return;\n    register(ref.current);\n  }, [register]);\n\n  if (isServer) {\n    const noop = (() => {\n      // server doesn't have dom, so just do nothing\n    }) as unknown as UseMaskInputAntdReturn;\n\n    return setUnmaskedValue(noop, () => '');\n  }\n\n  return setUnmaskedValue(refCallback as UseMaskInputAntdReturn, unmaskedValue);\n}\n"],"mappings":"yKA6BA,SAAwB,EAEtB,EAC6D,CAE7D,OAAO,MAAc,CACnB,IAAM,EAAW,IAAI,IAErB,OAAQ,EAAoB,EAAY,IACuB,CAC7D,GAAI,CAAC,EAAY,MAAU,MAAM,wBAAwB,EAEzD,IAAM,EAAiB,EAAW,EAAW,CAAkB,EACzD,CAAE,OAAQ,EAEV,EAAW,EAAiB,EAAW,CAAI,EAE5C,EAAS,IAAI,CAAQ,GAMxB,EAAS,IAAI,EALsC,GAAa,CAC9D,IAAM,EAAU,EAAW,EAAgB,EAAS,KAAK,EAAI,KACzD,GAAS,EAAmB,EAAS,EAAM,CAAkB,EAC7D,GAAK,EAAI,CAAO,CACtB,CACkC,EAGpC,IAAM,EAAS,CACb,GAAG,EACH,IAAK,EAAS,IAAI,CAAQ,CAC5B,EAIA,OAFA,EAAW,EAAQ,CAAG,EAEf,CACT,CACF,EAAG,CAAC,CAAU,CAAC,CACjB,CCrCA,SAAwB,EAAiB,EAAoD,CAC3F,GAAM,CAAE,OAAM,WAAU,WAAY,EAC9B,EAAM,EAAgC,IAAI,EAC1C,EAAU,EAAO,CAAI,EACrB,EAAa,EAAO,CAAO,EAC3B,EAAmB,EAAgC,IAAI,EACvD,EAAgB,MAAkB,EAAiB,EAAI,OAAO,EAAG,CAAC,CAAC,EAEzE,EAAQ,QAAU,EAClB,EAAW,QAAU,EAErB,IAAM,EAAc,EAAa,GAAiC,CAChE,GAAI,CAAC,EAAO,CACV,EAAI,QAAU,KACd,MACF,CAEA,EAAI,QAAU,EAAgB,EAAM,KAAK,EAErC,EAAI,SAAW,EAAI,UAAY,EAAiB,UAClD,EAAS,EAAQ,QAAS,EAAW,OAAO,EAAE,EAAI,OAAO,EACzD,EAAiB,QAAU,EAAI,QAEnC,EAAG,CAAC,CAAC,EAeL,OAbA,MAAgB,CACV,GAAY,CAAC,EAAI,SAAW,CAAC,GACjC,EAAS,EAAI,OAAO,CACtB,EAAG,CAAC,CAAQ,CAAC,EAET,EAKK,OAJa,CAEpB,OAEoC,EAAE,EAGjC,EAAiB,EAAuC,CAAa,CAC9E"}