{"version":3,"sources":["../src/helpers/suins.ts","../src/components/AddressInput.tsx"],"names":[],"mappings":"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","file":"chunk-FKRC7PI3.mjs","sourcesContent":["import type { SuinsClient } from '@mysten/suins'\n\nexport const resolveSuinsName = async (\n  suinsClient: SuinsClient,\n  name: string\n): Promise<string | null> => {\n  const nameRecord = await suinsClient.getNameRecord(name)\n  return nameRecord?.targetAddress || null\n}\n","import { isValidSuiAddress } from '@mysten/sui/utils'\nimport type { SuinsClient } from '@mysten/suins'\nimport debounce from 'lodash.debounce'\nimport { ChangeEvent, FC, useCallback, useEffect, useState } from 'react'\nimport { resolveSuinsName } from '~~/helpers/suins'\n\nconst DEBOUNCE_DELAY = 500\n\nexport interface IAddressInput {\n  value: string\n  onChange: (value: string) => void\n  placeholder?: string\n  className?: string\n  disabled?: boolean\n  suinsClient?: SuinsClient\n}\n\nconst AddressInput: FC<IAddressInput> = ({\n  value,\n  onChange,\n  placeholder,\n  className = '',\n  disabled = false,\n  suinsClient,\n}) => {\n  const [inputValue, setInputValue] = useState(value)\n  const [error, setError] = useState<string | null>(null)\n\n  // Debounced SuiNS resolution\n  const debouncedResolve = useCallback(\n    debounce(async (name: string) => {\n      if (!suinsClient) {\n        setError(\n          'SuinsClient is not available. Pass it through component props to make SuiNS name resolving work.'\n        )\n        return\n      }\n\n      try {\n        const resolvedAddress = await resolveSuinsName(suinsClient, name)\n        if (resolvedAddress) {\n          setError(null)\n          onChange(resolvedAddress)\n        } else {\n          setError('Invalid SuiNS name')\n        }\n      } catch (err) {\n        setError('Failed to resolve SuiNS name')\n      }\n    }, DEBOUNCE_DELAY),\n    [suinsClient, onChange]\n  )\n\n  const handleChange = async (e: ChangeEvent<HTMLInputElement>) => {\n    const newValue = e.target.value.trim()\n    setInputValue(newValue)\n\n    // Handle SuiNS names.\n    if (newValue.endsWith('.sui') || newValue.startsWith('@')) {\n      debouncedResolve(newValue)\n      return\n    }\n\n    // Handle regular Sui addresses.\n    if (newValue && !isValidSuiAddress(newValue)) {\n      setError('Invalid Sui address')\n      onChange(newValue)\n      return\n    }\n\n    setError(null)\n    onChange(newValue)\n  }\n\n  useEffect(() => {\n    setInputValue(value)\n  }, [value])\n\n  // Cleanup debounce on unmount\n  useEffect(() => {\n    return () => {\n      debouncedResolve.cancel()\n    }\n  }, [debouncedResolve])\n\n  return (\n    <div className={`sk-address-input ${className}`}>\n      <input\n        type=\"text\"\n        value={inputValue}\n        onChange={handleChange}\n        placeholder={\n          placeholder ||\n          'Enter Sui address' + (suinsClient != null ? ' or SuiNS name' : '')\n        }\n        disabled={disabled}\n        className={error ? 'error' : ''}\n      />\n      {error && <span>{error}</span>}\n    </div>\n  )\n}\n\nexport default AddressInput\n"]}