import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{i as n,n as r,r as i}from"./iframe-GrlyTB2d.js";import{a,i as o,n as s}from"./utils-DUM89eIj.js";import{a as c,i as l,o as u,r as d,s as f}from"./file-vPGnhPr-.js";import{n as p,t as m}from"./InputFilesList-G9rSY7Ew.js";var h,g;function _(){return(_=e((()=>{n(),h=[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]],g=i(`upload`,h)})))()}var v,y,b,x,S,C;function w(){return(w=e((()=>{v=`q2D6Pw`,y=`QVgB0d`,b=`-nyQKp`,x=`kY0O9g`,S=`F5K1bE`,C={zone:v,dragOver:y,disabled:b,icon:x,hint:S}})))()}function T({value:e,onChange:t,onChangeError:n,accept:r,allowedMime:i,maxBytes:o,readMode:l,multiple:p=!0,disabled:h,className:_,children:v}){c(i),u(r);let y=(0,E.useRef)(0),b=(0,E.useRef)(null),[x,S]=(0,E.useState)(!1),w=(0,E.useMemo)(()=>r&&r.length>0?r.join(`,`):i&&i.length>0?i.join(`,`):`*`,[i,r]),T=(0,E.useCallback)(e=>l===`array-buffer`?f(e,{allowedMime:i,maxBytes:o,mode:`array-buffer`}):f(e,{allowedMime:i,maxBytes:o}),[i,o,l]),O=(0,E.useCallback)(async e=>{if(h||e.length===0)return;let r=p?e:e.slice(0,1),i=[];for(let e of r)try{let t=await T(e);i.push(t)}catch(e){e instanceof d&&n&&n(e)}i.length>0&&t(i)},[h,p,t,n,T]),k=(0,E.useCallback)(()=>{h||b.current?.click()},[h]),A=(0,E.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),!h&&(y.current+=1,y.current===1&&S(!0))},[h]),j=(0,E.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),!h&&(e.dataTransfer.dropEffect=`copy`)},[h]),M=(0,E.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),!h&&(--y.current,y.current===0&&S(!1))},[h]),N=(0,E.useCallback)(async e=>{if(e.preventDefault(),e.stopPropagation(),y.current=0,S(!1),h)return;let t=Array.from(e.dataTransfer.files);await O(t)},[h,O]),P=(0,E.useCallback)(async e=>{let t=Array.from(e.target.files??[]);await O(t),e.target.value=``},[O]),F=(0,E.useCallback)(e=>{s(e,k,{disabled:h})},[h,k]);return(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`input`,{ref:b,type:`file`,hidden:!0,disabled:h,multiple:p,accept:w,onChange:P}),(0,D.jsx)(`div`,{className:a(C.zone,x&&C.dragOver,h&&C.disabled,_),onClick:k,onKeyDown:F,onDragEnter:A,onDragOver:j,onDragLeave:M,onDrop:N,role:`button`,tabIndex:h?-1:0,"aria-disabled":h,children:v??(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(g,{className:C.icon}),(0,D.jsx)(`span`,{className:C.hint,children:p?`Перетащите файлы сюда или нажмите для выбора`:`Перетащите файл сюда или нажмите для выбора`})]})}),(0,D.jsx)(m,{files:e,onChange:t})]})}var E,D;function O(){return(O=e((()=>{E=t(),l(),o(),_(),p(),w(),D=r(),T.__docgenInfo={description:`DropZone — зона для перетаскивания файлов и выбора по клику.

При наведении файла зона подсвечивается (пунктирная рамка меняет цвет).
При сбросе файлов каждый читается через readFile, успешные результаты
передаются в onDrop, ошибки — в onDropError.

Поддерживает кастомный контент через children.
Если children не указан — отображается иконка загрузки и подсказка.`,methods:[],displayName:`DropZone`,props:{value:{required:!0,tsType:{name:`Array`,elements:[{name:`ReadFileResult`}],raw:`ReadFileResult[]`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(results: ReadFileResult[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`ReadFileResult`}],raw:`ReadFileResult[]`},name:`results`}],return:{name:`void`}}},description:`Вызывается с массивом результатов readFile после сброса файлов`},onChangeError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(error: ReadFileError) => void`,signature:{arguments:[{type:{name:`ReadFileError`},name:`error`}],return:{name:`void`}}},description:`Callback ошибки чтения одного из файлов`},accept:{required:!1,tsType:{name:`unknown`},description:'HTML-атрибут accept для нативного input[type="file"] (например `[".pdf", ".docx"]`)'},allowedMime:{required:!1,tsType:{name:`unknown`},description:'Список допустимых MIME-типов — передаётся в readFile (например `["application/pdf", "image/png"]`)'},maxBytes:{required:!1,tsType:{name:`number`},description:`Максимальный размер одного файла в байтах`},readMode:{required:!1,tsType:{name:`ReadMode`},description:`Режим чтения: "data-url" (по умолчанию) или "array-buffer"`},multiple:{required:!1,tsType:{name:`boolean`},description:`Разрешить сброс нескольких файлов (по умолчанию true)`,defaultValue:{value:`true`,computed:!1}},disabled:{required:!1,tsType:{name:`boolean`},description:`Блокировка компонента`},className:{required:!1,tsType:{name:`string`},description:`CSS-класс обёртки`},children:{required:!1,tsType:{name:`ReactNode`},description:`Кастомный контент внутри зоны.
По умолчанию отображается иконка загрузки и текст "Перетащите файлы сюда".`}}}})))()}export{O as n,T as t};