{"ast":null,"code":"var _jsxFileName = \"/Users/laurynj/Desktop/\\u1112\\u1162\\u110B\\u1163\\u11BC\\u1100\\u1167\\u11BC\\u110E\\u1161\\u11AF\\u110B\\u1165\\u11B8 \\u1100\\u1169\\u11BC\\u1100\\u1169\\u11BC\\u1109\\u1161\\u110B\\u1165\\u11B8/@GIS_\\u1112\\u1161\\u11B7\\u110C\\u1165\\u11BC\\u110B\\u116D\\u11BC/GIS_\\u1112\\u1161\\u11B7\\u110C\\u1165\\u11BC\\u110B\\u116D\\u11BC_\\u1105\\u1175\\u110B\\u1162\\u11A8\\u1110\\u1173/dark/src/component/common/FileUpload.jsx\",\n _s = $RefreshSig$();\nimport React, { useState, useRef, useEffect } from 'react';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nexport default function FileUpload({\n label = \"파일 선택\",\n inputId\n}) {\n _s();\n const [fileName, setFileName] = useState('');\n const [displayName, setDisplayName] = useState('');\n const fileNameRef = useRef(null);\n const truncateMiddle = (str, maxLength = 25) => {\n if (!str) return '';\n if (str.length <= maxLength) return str;\n const keep = Math.floor((maxLength - 3) / 2);\n return str.slice(0, keep) + '...' + str.slice(str.length - keep);\n };\n const handleChange = e => {\n var _e$target$files$;\n const name = ((_e$target$files$ = e.target.files[0]) === null || _e$target$files$ === void 0 ? void 0 : _e$target$files$.name) || '';\n setFileName(name);\n };\n\n // 파일명 변경 시, span이 넘치면 중간생략\n useEffect(() => {\n if (fileNameRef.current) {\n const el = fileNameRef.current;\n if (el.scrollWidth > el.offsetWidth) {\n setDisplayName(truncateMiddle(fileName, 25));\n } else {\n setDisplayName(fileName);\n }\n }\n }, [fileName]);\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"fileWrap\",\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"file\",\n id: inputId,\n className: \"fileInput\",\n onChange: handleChange\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 34,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n htmlFor: inputId,\n className: \"fileLabel\",\n children: label\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 40,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"fileName\",\n ref: fileNameRef,\n children: displayName\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 43,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 33,\n columnNumber: 5\n }, this);\n}\n_s(FileUpload, \"jTdonFBZZuvu01n2HCMY0pA8iGA=\");\n_c = FileUpload;\nvar _c;\n$RefreshReg$(_c, \"FileUpload\");","map":{"version":3,"names":["React","useState","useRef","useEffect","jsxDEV","_jsxDEV","FileUpload","label","inputId","_s","fileName","setFileName","displayName","setDisplayName","fileNameRef","truncateMiddle","str","maxLength","length","keep","Math","floor","slice","handleChange","e","_e$target$files$","name","target","files","current","el","scrollWidth","offsetWidth","className","children","type","id","onChange","_jsxFileName","lineNumber","columnNumber","htmlFor","ref","_c","$RefreshReg$"],"sources":["/Users/laurynj/Desktop/해양경찰업 공공사업/@GIS_함정용/GIS_함정용_리액트/dark/src/component/common/FileUpload.jsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\n\nexport default function FileUpload({ label = \"파일 선택\", inputId }) {\n const [fileName, setFileName] = useState('');\n const [displayName, setDisplayName] = useState('');\n const fileNameRef = useRef(null);\n\n const truncateMiddle = (str, maxLength = 25) => {\n if (!str) return '';\n if (str.length <= maxLength) return str;\n const keep = Math.floor((maxLength - 3) / 2);\n return str.slice(0, keep) + '...' + str.slice(str.length - keep);\n };\n\n const handleChange = (e) => {\n const name = e.target.files[0]?.name || '';\n setFileName(name);\n };\n\n // 파일명 변경 시, span이 넘치면 중간생략\n useEffect(() => {\n if (fileNameRef.current) {\n const el = fileNameRef.current;\n if (el.scrollWidth > el.offsetWidth) {\n setDisplayName(truncateMiddle(fileName, 25));\n } else {\n setDisplayName(fileName);\n }\n }\n }, [fileName]);\n\n return (\n