import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-GrlyTB2d.js";import{a as r,i,n as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./ui.module-CiLQZm_L.js";import{d as c,l,r as u,s as d,u as f}from"./Input-DI_ErAU0.js";import{a as p,i as m,o as h,r as g,s as _}from"./file-vPGnhPr-.js";import{i as v,n as y,r as b,t as x}from"./InputFilesList-G9rSY7Ew.js";function S(e){let{value:t,onReadError:n,accept:i,allowedMime:s,maxBytes:l,maxFiles:f,label:m,description:v,placeholder:y=`Выберите файлы`,disabled:S,size:T,error:E,onClearError:D,className:O}=e;p(s),h(i);let k=(0,C.useRef)(null),{controlId:A,labelId:j,descriptionId:M,errorId:N,describedBy:P}=c({hasLabel:m!=null,hasDescription:!!v,hasError:!!E}),F=typeof f==`number`&&t.length>=f,I=(0,C.useCallback)(async r=>{let i=r.target.files;if(!i||i.length===0)return;let a=Array.from(i);r.target.value=``,E&&D&&D();let o=typeof f==`number`?f-t.length:a.length,c=a.slice(0,o);if(e.readMode===`array-buffer`){let t=[];for(let e of c)try{let n=await _(e,{allowedMime:s,maxBytes:l,mode:`array-buffer`});t.push(n)}catch(e){e instanceof g&&n&&n(e)}t.length>0&&e.onChange([...e.value,...t]);return}let u=[];for(let e of c)try{let t=await _(e,{allowedMime:s,maxBytes:l});u.push(t)}catch(e){e instanceof g&&n&&n(e)}u.length>0&&e.onChange([...e.value,...u])},[e,f,t.length,s,l,n,E,D]),L=(0,C.useCallback)(()=>{k.current?.click()},[]),R=(e.readMode,(0,w.jsx)(x,{files:e.value,onChange:e.onChange}));return(0,w.jsxs)(d,{label:m,description:v,disabled:S,className:O,size:T,error:E,controlId:A,labelId:j,descriptionId:M,errorId:N,children:[(0,w.jsx)(`input`,{ref:k,id:A,type:`file`,accept:(i??s)?.join(`,`),multiple:!0,disabled:S||F,className:b.hiddenInput,onChange:I,tabIndex:-1}),(0,w.jsx)(u,{children:()=>(0,w.jsx)(`div`,{role:`button`,tabIndex:S||F?-1:0,onClick:L,onKeyDown:e=>a(e,L,{disabled:S||F}),className:r(o.uiInputControl,b.control,!!E&&`invalid`),"data-disabled":S||void 0,"aria-invalid":!!E||void 0,"aria-disabled":S||F,"aria-labelledby":j,"aria-describedby":P,children:(0,w.jsx)(`span`,{className:o.uiPlaceholder,children:F?`Максимум ${f} файлов`:y})})}),R]})}var C,w;function T(){return(T=e((()=>{C=t(),m(),i(),l(),f(),s(),v(),y(),w=n(),S.__docgenInfo={description:'InputFiles — компонент выбора нескольких файлов.\n\nПоле стилизовано как InputText. При клике открывается нативный\nдиалог с multiple. Каждый выбранный файл читается через readFile\nи добавляется в массив value.\n\nСписок выбранных файлов отображается под полем.\nКаждый файл можно удалить кнопкой «крестик».\n\nInputFiles типизирует массив по `readMode`.\nЕсли `readMode` не задан или равен `"data-url"`, в `value` и `onChange`\nиспользуется массив объектов с `dataUrl`. Если `readMode` равен\n`"array-buffer"`, используется массив объектов с `buffer`.',methods:[],displayName:`InputFiles`}})))()}export{T as n,S as t};