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,n as u,r as d,s as f,u as p}from"./Input-DI_ErAU0.js";import{i as m,n as h,t as g}from"./file-vPGnhPr-.js";var _,v,y,b;function x(){return(x=e((()=>{_=`EV-Vji`,v=`A5-T93`,y=`V1Rhiv`,b={control:_,fileName:v,hiddenInput:y}})))()}function S({value:e,onChange:t,onClear:n,onReadError:i,allowedMime:s,maxBytes:l,readMode:p,label:m,description:_,placeholder:v=`Выберите изображение`,disabled:y,size:x,error:S,onClearError:T,className:E}){let D=(0,C.useRef)(null),{controlId:O,labelId:k,descriptionId:A,errorId:j,describedBy:M}=c({hasLabel:m!=null,hasDescription:!!_,hasError:!!S}),N=(0,C.useCallback)(e=>p===`array-buffer`?g(e,{allowedMime:s,maxBytes:l,mode:`array-buffer`}):g(e,{allowedMime:s,maxBytes:l}),[s,l,p]),P=(0,C.useMemo)(()=>s&&s.length>0?s.join(`,`):`image/*`,[s]),F=(0,C.useCallback)(async e=>{let n=e.target.files?.[0];if(n){e.target.value=``,S&&T&&T();try{t(await N(n))}catch(e){e instanceof h&&i&&i(e)}}},[N,t,i,S,T]),I=(0,C.useCallback)(()=>{D.current?.click()},[]);return(0,w.jsxs)(f,{label:m,description:_,disabled:y,className:E,size:x,error:S,controlId:O,labelId:k,descriptionId:A,errorId:j,children:[(0,w.jsx)(`input`,{ref:D,id:O,type:`file`,accept:P,disabled:y,className:b.hiddenInput,onChange:F,tabIndex:-1}),(0,w.jsx)(d,{endAdornment:n?(0,w.jsx)(u,{onClick:n,disabled:y}):void 0,endAdornmentWidth:n?`var(--control-height)`:void 0,children:({controlClassName:t})=>(0,w.jsx)(`div`,{role:`button`,tabIndex:y?-1:0,onClick:I,onKeyDown:e=>a(e,I,{disabled:y}),className:r(o.uiInputControl,b.control,t,!!S&&`invalid`),"data-disabled":y||void 0,"aria-invalid":!!S||void 0,"aria-disabled":y,"aria-labelledby":k,"aria-describedby":M,children:e?(0,w.jsx)(`span`,{className:b.fileName,children:e.meta.name}):(0,w.jsx)(`span`,{className:o.uiPlaceholder,children:v})})})]})}var C,w;function T(){return(T=e((()=>{C=t(),m(),i(),l(),p(),s(),x(),w=n(),S.__docgenInfo={description:`InputImage — компонент выбора одного изображения.

Визуально идентичен InputText. Под капотом использует readImageFile,
который валидирует что файл — изображение и извлекает его размеры.

HTML-атрибут accept формируется автоматически из allowedMime
или по умолчанию равен "image/*".`,methods:[],displayName:`InputImage`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите изображение"`,computed:!1}},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},onClear:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Callback очистки выбранного изображения. Если передан — отображается кнопка «крестик»`},onReadError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(error: ReadImageError) => void`,signature:{arguments:[{type:{name:`ReadImageError`},name:`error`}],return:{name:`void`}}},description:`Callback ошибки чтения (невалидный формат, не изображение, превышение размера и т.д.)`},allowedMime:{required:!1,tsType:{name:`unknown`},description:`Допустимые MIME-типы изображений — передаётся в readImageFile`},maxBytes:{required:!1,tsType:{name:`number`},description:`Максимальный размер файла в байтах — передаётся в readImageFile`},readMode:{required:!1,tsType:{name:`ReadMode`},description:`Режим чтения: "data-url" (по умолчанию, с извлечением dimensions) или "array-buffer"`},error:{required:!1,tsType:{name:`string`},description:`Текст ошибки под полем`},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Callback сброса ошибки (вызывается при повторном выборе изображения)`},className:{required:!1,tsType:{name:`string`},description:`CSS-класс обёртки`}}}})))()}export{T as n,S as t};