1 line
6.7 KiB
JSON
1 line
6.7 KiB
JSON
{"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 <div className=\"fileWrap\">\n <input\n type=\"file\"\n id={inputId}\n className=\"fileInput\"\n onChange={handleChange}\n />\n <label htmlFor={inputId} className=\"fileLabel\">\n {label}\n </label>\n <span className=\"fileName\" ref={fileNameRef}>\n {displayName}\n </span>\n </div>\n );\n}\n"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,MAAM,EAAEC,SAAS,QAAQ,OAAO;AAAC,SAAAC,MAAA,IAAAC,OAAA;AAE3D,eAAe,SAASC,UAAUA,CAAC;EAAEC,KAAK,GAAG,OAAO;EAAEC;AAAQ,CAAC,EAAE;EAAAC,EAAA;EAC/D,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGV,QAAQ,CAAC,EAAE,CAAC;EAC5C,MAAM,CAACW,WAAW,EAAEC,cAAc,CAAC,GAAGZ,QAAQ,CAAC,EAAE,CAAC;EAClD,MAAMa,WAAW,GAAGZ,MAAM,CAAC,IAAI,CAAC;EAEhC,MAAMa,cAAc,GAAGA,CAACC,GAAG,EAAEC,SAAS,GAAG,EAAE,KAAK;IAC9C,IAAI,CAACD,GAAG,EAAE,OAAO,EAAE;IACnB,IAAIA,GAAG,CAACE,MAAM,IAAID,SAAS,EAAE,OAAOD,GAAG;IACvC,MAAMG,IAAI,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACJ,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAOD,GAAG,CAACM,KAAK,CAAC,CAAC,EAAEH,IAAI,CAAC,GAAG,KAAK,GAAGH,GAAG,CAACM,KAAK,CAACN,GAAG,CAACE,MAAM,GAAGC,IAAI,CAAC;EAClE,CAAC;EAED,MAAMI,YAAY,GAAIC,CAAC,IAAK;IAAA,IAAAC,gBAAA;IAC1B,MAAMC,IAAI,GAAG,EAAAD,gBAAA,GAAAD,CAAC,CAACG,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC,cAAAH,gBAAA,uBAAjBA,gBAAA,CAAmBC,IAAI,KAAI,EAAE;IAC1Cf,WAAW,CAACe,IAAI,CAAC;EACnB,CAAC;;EAED;EACAvB,SAAS,CAAC,MAAM;IACd,IAAIW,WAAW,CAACe,OAAO,EAAE;MACvB,MAAMC,EAAE,GAAGhB,WAAW,CAACe,OAAO;MAC9B,IAAIC,EAAE,CAACC,WAAW,GAAGD,EAAE,CAACE,WAAW,EAAE;QACnCnB,cAAc,CAACE,cAAc,CAACL,QAAQ,EAAE,EAAE,CAAC,CAAC;MAC9C,CAAC,MAAM;QACLG,cAAc,CAACH,QAAQ,CAAC;MAC1B;IACF;EACF,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,oBACEL,OAAA;IAAK4B,SAAS,EAAC,UAAU;IAAAC,QAAA,gBACvB7B,OAAA;MACE8B,IAAI,EAAC,MAAM;MACXC,EAAE,EAAE5B,OAAQ;MACZyB,SAAS,EAAC,WAAW;MACrBI,QAAQ,EAAEd;IAAa;MAAAb,QAAA,EAAA4B,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACxB,CAAC,eACFnC,OAAA;MAAOoC,OAAO,EAAEjC,OAAQ;MAACyB,SAAS,EAAC,WAAW;MAAAC,QAAA,EAC3C3B;IAAK;MAAAG,QAAA,EAAA4B,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACD,CAAC,eACRnC,OAAA;MAAM4B,SAAS,EAAC,UAAU;MAACS,GAAG,EAAE5B,WAAY;MAAAoB,QAAA,EACzCtB;IAAW;MAAAF,QAAA,EAAA4B,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACR,CAAC;EAAA;IAAA9B,QAAA,EAAA4B,YAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,OACJ,CAAC;AAEV;AAAC/B,EAAA,CA7CuBH,UAAU;AAAAqC,EAAA,GAAVrC,UAAU;AAAA,IAAAqC,EAAA;AAAAC,YAAA,CAAAD,EAAA","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |