UNPKG

@tapie-kr/inspire-react

Version:

React Component Collection for INSPIRE

20 lines (16 loc) 1.99 kB
/* eslint-disable */ /* * INSPIRE : Creative Kit * React Component Collection for INSPIRE * * This file is generated automatically. Do not modify it manually * Generated at : 2025. 3. 4. 오후 6:18:13 * @tapie-kr/inspire-react version: 0.2.15 * * (c) 2025 TAPIE. All rights reserved. * MIT License */ 'use strict'; var React = require('react'); function useDraggableFileInputController(inputProps){const[files,setFiles]=React.useState(null);const[isDragging,setIsDragging]=React.useState(false);const handleFileChange=React.useCallback(e=>{const fileList=e.target.files;if(inputProps.onChange){inputProps.onChange(e);}if(fileList&&fileList.length>0&&!fileList[0].webkitRelativePath){setFiles(Array.from(fileList));}},[]);const removeFile=React.useCallback(index=>{setFiles(prev=>{if(!prev)return null;const newFiles=[...prev];newFiles.splice(index,1);return newFiles.length>0?newFiles:null});},[]);const handleDragEnter=React.useCallback(e=>{e.preventDefault();e.stopPropagation();setIsDragging(true);},[]);const handleDragLeave=React.useCallback(e=>{e.preventDefault();e.stopPropagation();setIsDragging(false);},[]);const handleDragOver=React.useCallback(e=>{e.preventDefault();e.stopPropagation();},[]);const handleDrop=React.useCallback(e=>{e.preventDefault();e.stopPropagation();setIsDragging(false);if(e.dataTransfer.items){const items=Array.from(e.dataTransfer.items);const filesOnly=items.reduce((acc,item)=>{const entry=item.webkitGetAsEntry();if(item.kind==="file"&&!entry?.isDirectory){const file=item.getAsFile();if(file)acc.push(file);}return acc},[]);if(filesOnly.length>0){setFiles(filesOnly);}}},[]);const clearFiles=React.useCallback(()=>setFiles(null),[]);const controller={files,onChange:handleFileChange,onDragEnter:handleDragEnter,onDragLeave:handleDragLeave,onDragOver:handleDragOver,onDrop:handleDrop};const tools={clearFiles,removeFile};return {files,isDragging,tools,controller}} exports.useDraggableFileInputController = useDraggableFileInputController;