{"version":3,"file":"components/Form/keyword.mjs","sources":["../../../src/components/Form/keyword.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Button, Input, InputRef, Typography } from 'antd';\n\ninterface KeywordProps {\n  style?: React.CSSProperties;\n  labelStyle?: React.CSSProperties;\n  icon?: React.ReactNode;\n  label?: string;\n  placeholder?: string;\n  delay?: number;\n  className?: string;\n  width?: number;\n  onChange: (keyword: string) => void;\n}\n\nexport const KeywordInput: React.FC<KeywordProps> = ({\n  icon: Icon,\n  label,\n  labelStyle: ls = {},\n  placeholder,\n  onChange,\n  style,\n  className,\n  width,\n  delay = 300,\n}) => {\n  const labelWidth = 120;\n  const [filename, setFilename] = useState('');\n  const labelStyle: React.CSSProperties = { width: labelWidth, ...ls };\n\n  const ref = useRef<InputRef>(null);\n\n  let timer: NodeJS.Timeout;\n\n  useEffect(() => {\n    onChange(filename);\n  }, [filename]);\n\n  return (\n    <Input.Group compact style={style} className={className}>\n      {label || Icon ? (\n        <Button\n          style={labelStyle}\n          onClick={() => {\n            if (ref && ref.current) {\n              ref.current.focus();\n            }\n          }}\n        >\n          {Icon || null}\n          <Typography.Text>{label}</Typography.Text>\n        </Button>\n      ) : null}\n      <Input\n        ref={ref}\n        allowClear\n        defaultValue={filename}\n        style={{ width: width ? width - labelWidth : 250 }}\n        placeholder={placeholder}\n        onChange={(e) => {\n          if (timer) clearTimeout(timer);\n          const v = e.target.value.trim();\n          timer = setTimeout(() => {\n            setFilename(v);\n          }, delay);\n        }}\n      />\n    </Input.Group>\n  );\n};\n"],"names":["KeywordInput","Icon","label","ls","placeholder","onChange","style","className","width","delay","labelWidth","filename","setFilename","useState","labelStyle","ref","useRef","timer","useEffect","Input","Button","Typography","e","clearTimeout","v","setTimeout"],"mappings":";;;AAeO,MAAMA,eAAuC,CAAC,EACnD,MAAMC,IAAI,EACVC,KAAK,EACL,YAAYC,KAAK,CAAC,CAAC,EACnBC,WAAW,EACXC,QAAQ,EACRC,KAAK,EACLC,SAAS,EACTC,KAAK,EACLC,QAAQ,GAAG,EACZ;IACC,MAAMC,aAAa;IACnB,MAAM,CAACC,UAAUC,YAAY,GAAGC,SAAS;IACzC,MAAMC,aAAkC;QAAE,OAAOJ;QAAY,GAAGP,EAAE;IAAC;IAEnE,MAAMY,MAAMC,OAAiB;IAE7B,IAAIC;IAEJC,UAAU;QACRb,SAASM;IACX,GAAG;QAACA;KAAS;IAEb,OAAO,WAAP,GACE,KAACQ,MAAM,KAAK;QAAC,SAAO;QAAC,OAAOb;QAAO,WAAWC;;YAC3CL,SAASD,OAAO,WAAPA,GACR,KAACmB,QAAMA;gBACL,OAAON;gBACP,SAAS;oBACP,IAAIC,OAAOA,IAAI,OAAO,EACpBA,IAAI,OAAO,CAAC,KAAK;gBAErB;;oBAECd,QAAQ;kCACT,IAACoB,WAAW,IAAI;kCAAEnB;;;iBAElB;0BACJ,IAACiB,OAAKA;gBACJ,KAAKJ;gBACL,YAAU;gBACV,cAAcJ;gBACd,OAAO;oBAAE,OAAOH,QAAQA,QAAQE,aAAa;gBAAI;gBACjD,aAAaN;gBACb,UAAU,CAACkB;oBACT,IAAIL,OAAOM,aAAaN;oBACxB,MAAMO,IAAIF,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;oBAC7BL,QAAQQ,WAAW;wBACjBb,YAAYY;oBACd,GAAGf;gBACL;;;;AAIR"}