{"version":3,"sources":["../src/helpers/suins.ts","../src/components/AddressInput.tsx"],"names":[],"mappings":"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","file":"chunk-Q7UZRD3B.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"]}