PageSourceSearch

http://aquagroup.ru/admin/assets/FilesView-B1361nZg.js

js aquagroup.ru collected 2026-10-04 13:27:49 UTC 13,347 bytes, 1 lines download raw bytes

1import{d as ie,J as j,K as ue,L as he,e as U,f as _,H as b,n as m,b as e,t as o,a as c,c as v,a3 as F,j as g,m as G,r as w,q as de,o as u,_ as re,u as Ce,k as K,l as ne,y as se,x as $e,F as A,a5 as O,aD as te,w as xe,i as Ee}from"./index-DBAIXX39.js";import{b as ce,c as ve}from"./format-BK2JONJ5.js";import{V as qe,a as Ie}from"./VDialog-BVJy90fW.js";import"./index-CvneU2GP.js";import"./VOverlay-BxLjFlP9.js";async function me(B,h){if(B)try{const p=await fetch(B);if(!p.ok)throw new Error("http "+p.status);const C=await p.blob(),$=URL.createObjectURL(C),r=document.createElement("a");r.href=$,r.download=h||"file",document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL($),5e3)}catch{window.open(B,"_blank","noopener")}}const De={class:"fpd-head"},Ve={class:"fpd-titlewrap"},ze=["title"],Se={class:"aq-mono aq-muted fpd-mime"},Ue={class:"fpd-counter aq-mono aq-muted"},Be={class:"fpd-body"},Le={class:"fpd-stage"},Ae=["disabled"],Ge=["src","alt"],Me=["src"],Te=["src"],Pe=["src"],Fe={key:4,class:"fpd-fallback"},Ne={class:"aq-mono"},Re={class:"aq-muted"},We=["disabled"],Ke={class:"fpd-side"},Oe={class:"fpd-meta"},je={class:"aq-mono"},He={class:"aq-mono fpd-id"},Je={class:"fpd-actions"},Qe=ie({__name:"FilePreviewDialog",props:{modelValue:{type:Boolean},items:{},startIndex:{},myEmail:{}},emits:["update:modelValue","delete"],setup(B,{emit:h}){const p=B,C=h,$=de(),r=b({get:()=>p.modelValue,set:n=>C("update:modelValue",n)}),y=m(0);j(()=>p.modelValue,n=>{n&&(y.value=p.startIndex)}),j(()=>p.startIndex,n=>{y.value=n});const L=b(()=>p.items.length),s=b(()=>p.items[y.value]??null),M=b(()=>!!s.value&&!!p.myEmail&&s.value.ownerEmail===p.myEmail),E=b(()=>y.value>0),V=b(()=>y.value<L.value-1);function z(){E.value&&y.value--}function q(){V.value&&y.value++}const I=m(!1);j(()=>{var n;return(n=s.value)==null?void 0:n.publicId},()=>{I.value=!1});const x=b(()=>{var l;const n=((l=s.value)==null?void 0:l.mime)||"";return n.startsWith("image/")?"image":n.startsWith("video/")?"video":n.startsWith("audio/")?"audio":n==="application/pdf"||n.startsWith("text/")?"frame":"other"}),d=b(()=>{var n;return((n=s.value)==null?void 0:n.downloadUrl)||""}),H=b(()=>{var n;return(((n=s.value)==null?void 0:n.mime.split("/")[1])||"file").toUpperCase().slice(0,6)});function N(n){p.modelValue&&(n.key==="ArrowLeft"?(n.preventDefault(),z()):n.key==="ArrowRight"?(n.preventDefault(),q()):n.key==="Escape"&&(n.preventDefault(),r.value=!1))}ue(()=>window.addEventListener("keydown",N)),he(()=>window.removeEventListener("keydown",N));function J(n){const l=document.createElement("textarea");l.value=n,l.style.position="fixed",l.style.opacity="0",document.body.appendChild(l),l.select();try{document.execCommand("copy")}finally{document.body.removeChild(l)}}async function D(){if(d.value)try{navigator.clipboard&&window.isSecureContext?await navigator.clipboard.writeText(d.value):J(d.value),$.success("Ссылка скопирована (действует ~1ч)")}catch{$.error("Не удалось скопировать")}}function Q(){s.value&&me(d.value,s.value.name)}function R(){s.value&&C("delete",s.value),r.value=!1}return(n,l)=>{const S=w("AqIcon"),T=w("GlassButton");return u(),U(qe,{modelValue:r.value,"onUpdate:modelValue":l[2]||(l[2]=P=>r.value=P),width:"94vw","max-width":"1280",scrollable:""},{default:_(()=>[s.value?(u(),U(Ie,{key:0,class:"fpd"},{default:_(()=>[e("header",De,[e("div",Ve,[e("span",{class:"fpd-name",title:s.value.name},o(s.value.name),9,ze),e("span",Se,o(s.value.mime),1)]),e("span",Ue,o(y.value+1)+" / "+o(L.value),1),e("button",{type:"button",class:"fpd-x","aria-label":"Закрыть",onClick:l[0]||(l[0]=P=>r.value=!1)},[c(S,{name:"close",size:20})])]),e("div",Be,[e("div",Le,[e("button",{type:"button",class:"fpd-nav fpd-nav--prev","aria-label":"Предыдущий",disabled:!E.value,onClick:z},[c(S,{name:"chevron",size:26})],8,Ae),x.value==="image"&&d.value&&!I.value?(u(),v("img",{key:0,src:d.value,alt:s.value.name,class:"fpd-img",onError:l[1]||(l[1]=P=>I.value=!0)},null,40,Ge)):x.value==="video"&&d.value?(u(),v("video",{key:s.value.publicId,src:d.value,class:"fpd-media",controls:"",preload:"metadata"},null,8,Me)):x.value==="audio"&&d.value?(u(),v("audio",{key:s.value.publicId,src:d.value,class:"fpd-audio",controls:""},null,8,Te)):x.value==="frame"&&d.value?(u(),v("iframe",{key:s.value.publicId,src:d.value,class:"fpd-frame",title:"Просмотр файла"},null,8,Pe)):(u(),v("div",Fe,[c(S,{name:"doc",size:46}),e("span",Ne,o(H.value),1),e("span",Re,o(I.value?"Не удалось загрузить файл":"Предпросмотр недоступен"),1)])),e("button",{type:"button",class:"fpd-nav fpd-nav--next","aria-label":"Следующий",disabled:!V.value,onClick:q},[c(S,{name:"chevron",size:26})],8,We)]),e("aside",Ke,[e("dl",Oe,[e("div",null,[l[3]||(l[3]=e("dt",null,"Имя",-1)),e("dd",null,o(s.value.name),1)]),e("div",null,[l[4]||(l[4]=e("dt",null,"Размер",-1)),e("dd",null,o(F(ce)(s.value.size)),1)]),e("div",null,[l[5]||
1(l[5]=e("dt",null,"Тип",-1)),e("dd",je,o(s.value.mime),1)]),e("div",null,[l[6]||(l[6]=e("dt",null,"Статус",-1)),e("dd",null,o(s.value.status),1)]),e("div",null,[l[7]||(l[7]=e("dt",null,"Владелец",-1)),e("dd",null,o(s.value.ownerEmail||"—"),1)]),e("div",null,[l[8]||(l[8]=e("dt",null,"Создан",-1)),e("dd",null,o(F(ve)(s.value.createdAt)),1)]),e("div",null,[l[9]||(l[9]=e("dt",null,"ID",-1)),e("dd",He,o(s.value.publicId),1)])]),e("div",Je,[c(T,{variant:"primary","icon-name":"download",disabled:!d.value,onClick:Q},{default:_(()=>[...l[10]||(l[10]=[g("Скачать",-1)])]),_:1},8,["disabled"]),c(T,{variant:"ghost","icon-name":"copy",disabled:!d.value,onClick:D},{default:_(()=>[...l[11]||(l[11]=[g("Ссылка",-1)])]),_:1},8,["disabled"]),M.value&&s.value.status==="active"?(u(),U(T,{key:0,variant:"danger","icon-name":"trash",onClick:R},{default:_(()=>[...l[12]||(l[12]=[g(" Удалить ",-1)])]),_:1})):G("",!0)])])])]),_:1})):G("",!0)]),_:1},8,["modelValue"])}}}),Xe=re(Qe,[["__scopeId","data-v-7b1b23e7"]]),Ye={key:0,class:"dropzone__up"},Ze={class:"row"},ea={class:"aq-mono"},aa={class:"aq-meter",style:{"margin-top":"10px"}},ta={class:"files-filters"},la={class:"aq-segmented"},na=["onClick"],sa={class:"files-mimes"},oa={class:"aq-muted aq-mono files-count"},ia={key:1,class:"files-grid",style:{"margin-top":"16px"}},ua={class:"files-grid",style:{"margin-top":"16px"}},da=["aria-label","onClick"],ra=["src","alt","onError"],ca={key:1,class:"file-card__ext"},va={class:"aq-mono"},ma={class:"file-card__body"},pa=["title"],fa={class:"file-card__meta aq-muted"},_a={class:"file-card__sub aq-muted aq-mono"},ya=["title"],ba={class:"file-card__date aq-muted"},ka={class:"file-card__act"},wa={key:0,class:"files-more"},oe=24,ga=ie({__name:"FilesView",setup(B){const h=de(),p=Ce(),C=b(()=>p.can("catalog.write")),$=b(()=>{var i;return((i=p.principal)==null?void 0:i.email)??""}),r=m([]),y=m(0),L=m(0),s=m(!0),M=m(!1),E=m("active"),V=m(""),z=m(!1),q=m(0),I=m(""),x=m(!1),d=m(null),H=b(()=>r.value.length<y.value),N=[{v:"active",label:"Активные"},{v:"trashed",label:"Корзина"}],J=[{v:"",label:"Все"},{v:"image/",label:"Изображения"},{v:"application/",label:"Документы"},{v:"video/",label:"Видео"}];async function D(i=!0){i?(s.value=!0,L.value=0,W.value=new Set):M.value=!0;try{const a=await te.list({status:E.value,mime:V.value,limit:oe,offset:L.value});r.value=i?a.files:[...r.value,...a.files],y.value=Number(a.total)}catch(a){h.fromError(a)}finally{s.value=!1,M.value=!1}}function Q(){L.value+=oe,D(!1)}j([E,V],()=>D(!0)),ue(()=>D(!0));async function R(i){const a=Array.from(i);if(a.length){z.value=!0;try{for(const k of a)I.value=k.name,q.value=0,await te.upload(k,Y=>q.value=Y),h.success(`Загружен ${k.name}`);E.value="active",await D(!0)}catch(k){h.fromError(k)}finally{z.value=!1,q.value=0,I.value=""}}}function n(i){const a=i.target;a.files&&R(a.files),a.value=""}function l(i){var a;x.value=!1,(a=i.dataTransfer)!=null&&a.files&&R(i.dataTransfer.files)}async function S(i){try{await te.delete(i.publicId),h.success("Файл удалён"),await D(!0)}catch(a){h.fromError(a)}}const T=i=>i.startsWith("image/"),P=i=>(i.mime.split("/")[1]||"file").toUpperCase().slice(0,5),pe=i=>!!$.value&&i.ownerEmail===$.value,W=m(new Set);function fe(i){const a=new Set(W.value);a.add(i),W.value=a}const le=m(0),X=m(!1);function _e(i){le.value=i,X.value=!0}return(i,a)=>{const k=w("GlassButton"),Y=w("PageHeader"),Z=w("AqIcon"),ye=w("GlassChip"),be=w("SkeletonBlock"),ee=w("GlassCard"),ke=w("EmptyState"),we=w("StatusBadge"),ge=Ee("reveal");return u(),v("div",null,[c(Y,{title:"Файлы",desc:"Контент-адресуемое хранилище (MinIO): дедуп по sha256, прямая presigned-загрузка."},{actions:_(()=>[c(k,{"icon-name":"refresh",loading:s.value,onClick:a[0]||(a[0]=t=>D(!0))},{default:_(()=>[...a[8]||(a[8]=[g("Обновить",-1)])]),_:1},8,["loading"]),C.value?(u(),U(k,{key:0,variant:"primary","icon-name":"upload",loading:z.value,onClick:a[1]||(a[1]=t=>{var f;return(f=d.value)==null?void 0:f.click()})},{default:_(()=>[...a[9]||(a[9]=[g(" Загрузить ",-1)])]),_:1},8,["loading"])):G("",!0)]),_:1}),e("input",{ref_key:"fileInput",ref:d,type:"file",multiple:"",hidden:"",onCh
1ange:n},null,544),C.value?(u(),v("div",{key:0,class:se(["dropzone aq-glass",{over:x.value}]),role:"button",tabindex:"0","aria-label":"Зона загрузки файлов: нажмите, чтобы выбрать, или перетащите файлы",onClick:a[2]||(a[2]=t=>{var f;return(f=d.value)==null?void 0:f.click()}),onKeyup:a[3]||(a[3]=ne(t=>{var f;return(f=d.value)==null?void 0:f.click()},["enter"])),onKeydown:a[4]||(a[4]=ne(K(t=>{var f;return(f=d.value)==null?void 0:f.click()},["prevent"]),["space"])),onDragover:a[5]||(a[5]=K(t=>x.value=!0,["prevent"])),onDragleave:a[6]||(a[6]=K(t=>x.value=!1,["prevent"])),onDrop:K(l,["prevent"])},[z.value?(u(),v("div",Ye,[e("div",Ze,[c(Z,{name:"upload",size:20}),e("span",null,[a[10]||(a[10]=g("Загрузка: ",-1)),e("b",null,o(I.value),1)]),e("span",ea,o(Math.round(q.value*100))+"%",1)]),e("div",aa,[e("span",{style:$e({width:q.value*100+"%"})},null,4)])])):(u(),v(A,{key:1},[c(Z,{name:"upload",size:26}),a[11]||(a[11]=e("div",null,[e("b",null,"Перетащите файлы сюда"),e("span",{class:"aq-muted"}," или нажмите, чтобы выбрать")],-1)),a[12]||(a[12]=e("span",{class:"aq-muted dropzone__hint"},"Тело грузится напрямую в хранилище по presigned-URL, мимо ядра.",-1))],64))],34)):G("",!0),e("div",ta,[e("div",la,[(u(),v(A,null,O(N,t=>e("button",{key:t.v,class:se({"aq-on":E.value===t.v}),onClick:f=>E.value=t.v},o(t.label),11,na)),64))]),e("div",sa,[(u(),v(A,null,O(J,t=>c(ye,{key:t.v,clickable:"",active:V.value===t.v,onClick:f=>V.value=t.v},{default:_(()=>[g(o(t.label),1)]),_:2},1032,["active","onClick"])),64))]),e("span",oa,o(y.value),1)]),s.value?(u(),v("div",ia,[(u(),v(A,null,O(4,t=>c(ee,{key:t},{default:_(()=>[c(be,{height:"150px"})]),_:1})),64))])):r.value.length?(u(),v(A,{key:3},[e("div",ua,[(u(!0),v(A,null,O(r.value,(t,f)=>xe((u(),U(ee,{key:t.publicId,hover:"",pad:!1,class:"file-card"},{default:_(()=>[e("button",{type:"button",class:"file-card__preview","aria-label":`Просмотр: ${t.name}`,onClick:ae=>_e(f)},[T(t.mime)&&t.downloadUrl&&!W.value.has(t.publicId)?(u(),v("img",{key:0,src:t.downloadUrl,alt:t.name,loading:"lazy",onError:ae=>fe(t.publicId)},null,40,ra)):(u(),v("div",ca,[c(Z,{name:"doc",size:30}),e("span",va,o(P(t)),1)]))],8,da),e("div",ma,[e("b",{class:"file-card__name",title:t.name},o(t.name),9,pa),e("div",fa,[e("span",null,o(F(ce)(t.size)),1),c(we,{variant:t.status==="active"?"ok":"warn"},{default:_(()=>[g(o(t.status),1)]),_:2},1032,["variant"])]),e("div",_a,o(t.mime),1),e("div",{class:"file-card__owner aq-muted",title:t.ownerEmail},o(t.ownerEmail||"—"),9,ya),e("div",ba,o(F(ve)(t.createdAt)),1),e("div",ka,[c(k,{size:"sm",variant:"ghost","icon-name":"download",disabled:!t.downloadUrl,onClick:ae=>F(me)(t.downloadUrl,t.name)},{default:_(()=>[...a[13]||(a[13]=[g(" Скачать ",-1)])]),_:1},8,["disabled","onClick"]),pe(t)&&t.status==="active"?(u(),U(k,{key:0,size:"sm",variant:"ghost","icon-only":"","icon-name":"trash","aria-label":"Удалить",onClick:ae=>S(t)},null,8,["onClick"])):G("",!0)])])]),_:2},1024)),[[ge,f*30]])),128))]),H.value?(u(),v("div",wa,[c(k,{loading:M.value,onClick:Q},{default:_(()=>[g("Показать ещё · "+o(r.value.length)+" из "+o(y.value),1)]),_:1},8,["loading"])])):G("",!0)],64)):(u(),U(ee,{key:2,style:{"margin-top":"16px"}},{default:_(()=>[c(ke,{icon:"files",title:C.value?"Файлов пока нет":"Раздел доступен администраторам",hint:C.value?"Загрузите первый файл - он появится здесь.":"Список файлов хранилища виден пользователям с правом catalog.write."},null,8,["title","hint"])]),_:1})),c(Xe,{modelValue:X.value,"onUpdate:modelValue":a[7]||(a[7]=t=>X.value=t),items:r.value,"start-index":le.value,"my-email":$.value,onDelete:S},null,8,["modelValue","items","start-index","my-email"])])}}}),qa=re(ga,[["__scopeId","data-v-f66151fa"]]);export{qa as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.