import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n}from"./iframe-GrlyTB2d.js";import{n as r,t as i}from"./createControlledStoryRender-DHsyXc1B.js";import{n as a,t as o}from"./InputImage-Bg4aW2tu.js";var s=t({ArrayBufferMode:()=>g,Controlled:()=>m,WithInitialImage:()=>h,__namedExportsOrder:()=>_,default:()=>f}),c,l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{r(),a(),c=n(),{useArgs:l}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:u}=__STORYBOOK_MODULE_TEST__,d=(e=`avatar.png`)=>{let t=new File([`image-demo`],e,{type:`image/png`,lastModified:17040672e5});return{mode:`data-url`,meta:{name:t.name,mime:t.type,size:t.size,lastModified:t.lastModified},dataUrl:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAusB9YxM9a0AAAAASUVORK5CYII=`,file:t,dimensions:{width:1,height:1}}},f={title:`Shared/UI/InputImage`,component:o,args:{value:void 0,onChange:u(),readMode:`data-url`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля выбора изображения.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст до выбора изображения.`,control:`text`},value:{description:`Результат чтения выбранного изображения.`,control:!1},onChange:{description:`Вызывается после успешного чтения изображения.`,control:!1},onReadError:{description:`Вызывается при ошибке валидации или чтения изображения.`,control:!1},onClear:{description:`Очищает выбранное изображение.`,control:!1},allowedMime:{description:`Разрешенные MIME-типы изображений.`,control:!1},maxBytes:{description:`Максимальный размер изображения в байтах.`,control:`number`},readMode:{description:`Режим чтения: data-url или array-buffer.`,control:`inline-radio`,options:[`data-url`,`array-buffer`]},error:{description:`Текст ошибки под полем.`,control:`text`},onClearError:{description:`Сброс ошибки при повторном выборе изображения.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер визуального контрола.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},p=i((e,t)=>(0,c.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})},onClear:()=>{e.onClear?.(),t({value:void 0})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}})),m={render:p,args:{label:`Аватар`,description:`Выберите одно изображение профиля.`,placeholder:`Выберите изображение`,readMode:`data-url`,allowedMime:[`image/png`,`image/jpeg`,`image/webp`],value:void 0}},h={render:function(e){let[,t]=l(),n=e.value;return(0,c.jsxs)(`div`,{style:{display:`grid`,gap:12},children:[(0,c.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})},onClear:()=>{e.onClear?.(),t({value:void 0})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}}),n?.mode===`data-url`&&(0,c.jsx)(`img`,{src:n.dataUrl,alt:`Предпросмотр`,style:{width:96,height:96,objectFit:`cover`,border:`1px solid var(--border-0)`}})]})},args:{label:`Изображение с предпросмотром`,description:`Сторис показывает, что значение можно использовать для preview.`,value:d()}},g={render:p,args:{label:`Двоичный режим`,description:`Используется, когда изображение нужно обработать как бинарные данные.`,readMode:`array-buffer`,value:void 0}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
  render: renderInputImageStory,
  args: {
    label: "Аватар",
    description: "Выберите одно изображение профиля.",
    placeholder: "Выберите изображение",
    readMode: "data-url",
    allowedMime: ["image/png", "image/jpeg", "image/webp"],
    value: undefined
  }
}`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
  render: function Render(args) {
    const [, updateArgs] = useArgs<InputImageProps>();
    const value = args.value;
    return <div style={{
      display: "grid",
      gap: 12
    }}>
                <InputImage {...args} onChange={nextValue => {
        args.onChange(nextValue);
        updateArgs({
          value: nextValue
        });
      }} onClear={() => {
        args.onClear?.();
        updateArgs({
          value: undefined
        });
      }} onClearError={() => {
        args.onClearError?.();
        updateArgs({
          error: undefined
        });
      }} />
                {value?.mode === "data-url" && <img src={value.dataUrl} alt="Предпросмотр" style={{
        width: 96,
        height: 96,
        objectFit: "cover",
        border: "1px solid var(--border-0)"
      }} />}
            </div>;
  },
  args: {
    label: "Изображение с предпросмотром",
    description: "Сторис показывает, что значение можно использовать для preview.",
    value: createMockReadImageResult()
  }
}`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
  render: renderInputImageStory,
  args: {
    label: "Двоичный режим",
    description: "Используется, когда изображение нужно обработать как бинарные данные.",
    readMode: "array-buffer",
    value: undefined
  }
}`,...g.parameters?.docs?.source}}},_=[`Controlled`,`WithInitialImage`,`ArrayBufferMode`]})))()}export{v as a,h as i,m as n,s as r,g as t};