PageSourceSearch

https://www.radioatlantida.net/assets/AdminMedia-C5QNJ9vG.js

js radioatlantida.net collected 2026-09-25 00:26:48 UTC 18,905 bytes, 11 lines download raw bytes

1import{c as q,r as o,t as g,g as l,j as e}from"./index-DG8YForO.js";import{I as ce}from"./input-BuQ1uCzV.js";import{B as re}from"./button-BCi1_mRF.js";import{u as oe,U as B,f as le}from"./useImageDimensions-DyHraaH2.js";import{F as $}from"./folder-open-DIC49Cde.js";import{L as h}from"./loader-circle-DGCQiY8t.js";import{S as me}from"./search-BTTXPEQa.js";import{I as ge}from"./image-CDw1R9g5.js";import{C as E}from"./check-DvnqirNl.js";import{T as D}from"./trash-2-CfzUA3-P.js";import{M as O}from"./music-DVh89x-j.js";import{F as P}from"./file-text-B92_4zbK.js";import"./useComposition-BVivkLMT.js";import"./index-CEj3dtXq.js";import"./index-Y5OkxtNi.js";import"./x-cO8Rb8LL.js";/**
2 * @license lucide-react v0.453.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const S=q("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/**
7 * @license lucide-react v0.453.0 - ISC
8 *
9 * This source code is licensed under the ISC license.
10 * See the LICENSE file in the root directory of this source tree.
11 */const xe=q("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]),z={"image/jpeg":"jpg","image/jpg":"jpg","image/png":"png","image/webp":"webp","image/gif":"gif","image/avif":"avif","image/svg+xml":"svg"},pe=new Set([...Object.values(z),"jpeg"]);function ue(s){return s.replace(/[\\/]/g,"-").trim()}function f(s){return s.toLowerCase().match(/\.([a-z0-9]+)$/)?.[1]??null}function he(s){if(!s)return null;try{const c=new URL(s,window.location.origin).pathname;return f(c)}catch{return f(s)}}function _(s){return s?z[s.toLowerCase()]??null:null}function fe(s){const c=ue(s.nome||`imagem-${s.id}`)||`imagem-${s.id}`,n=f(c);if(n&&pe.has(n))return c;const p=_(s.mimeType)||he(s.url)||"jpg";return`${c}.${p}`}function je(s){return`/api/media/download/${encodeURIComponent(String(s))}`}function Me(s){const c=s.headers.get("content-type")?.toLowerCase()??"";return s.ok&&c.startsWith("image/")}function ye(s,c){const n=_(s)||f(c??"")||"jpg";return[{description:"Imagem",accept:{[s?.toLowerCase().startsWith("image/")?s.toLowerCase():"image/jpeg"]:[`.${n}`]}}]}function G(s){return s<1024?`${s} B`:s<1024*1024?`${(s/1024).toFixed(1)} KB`:`${(s/(1024*1024)).toFixed(1)} MB`}function W(s){return s?new Date(s).toLocaleDateString("pt-PT",{day:"2-digit",month:"short",year:"numeric"}):"-"}function Be(){const[s,c]=o.useState(""),[n,p]=o.useState("todos"),[j,F]=o.useState(null),[L,T]=o.useState(null),[Q,M]=o.useState(!1),[y,A]=o.useState(!1),w=o.useRef(null),u=g.useUtils(),{data:m=[],isLoading:H}=g.site.media.list.useQuery({search:s||void 0,tipo:n!=="todos"?n:void 0}),V=oe(m),{data:X}=g.site.media.count.useQuery({tipo:"imagem"}),{data:J}=g.site.media.count.useQuery({tipo:"audio"}),{data:K}=g.site.media.count.useQuery({tipo:"documento"}),U=g.site.media.upload.useMutation({onSuccess:()=>{u.site.media.list.invalidate(),u.site.media.count.invalidate(),l.success("Ficheiro carregado com sucesso"),A(!1)},onError:a=>{l.error(`Erro ao carregar: ${a.message}`),A(!1)}}),Y=g.site.media.delete.useMutation({onSuccess:()=>{u.site.media.list.invalidate(),u.site.media.count.invalidate(),l.success("Ficheiro eliminado")},onError:a=>l.error(`Erro ao eliminar: ${a.message}`)}),v=o.useCallback(async a=>{if(a.size>50*1024*1024){l.error("Tamanho máximo: 50MB");return}A(!0);const t=new FileReader;t.onload=async()=>{const d=t.result.split(",")[1];await U.mutateAsync({fileName:a.name,fileData:d,mimeType:a.type})},t.readAsDataURL(a)},[U]),Z=o.useCallback(a=>{a.preventDefault(),M(!1),Array.from(a.dataTransfer.files).forEach(v)},[v]),N=(a,t)=>{navigator.clipboard.writeText(t),F(a),setTimeout(()=>F(null),2e3)},ee=(a,t,d=!1)=>{const i=document.createElement("a");i.href=a,i.download=t,d&&(i.target="_blank"),i.rel="noopener noreferrer",document.body.appendChild(i),i.click(),i.remove()},ae=(a,t)=>{const d=URL.createObjectURL(a);ee(d,t),window.setTimeout(()=>URL.revokeObjectURL(d),1e3)},se=async(a,t,d)=>{const i=window.showSaveFilePicker;if(!i||!window.isSecureContext)return"unsupported";try{const x=await(await i.call(window,{suggestedName:t,types:ye(d.mimeType,t),excludeAcceptAllOption:!1})).createWritable();return await x.write(a),await x.close(),"saved"}catch(r){return r instanceof DOMException&&r.name==="AbortError"?"cancelled":"unsupported"}},te=async a=>{const t=fe(a),d=je(a.id);T(a.id);try{const i=await fetch(d,{credentials:"same-origin"});if(!Me(i))throw new Error("A resposta recebida não é uma imagem");const r=await i.blob(),x=r.type.startsWith("image/")?r:new Blob([r],{type:a.mimeType}),R=await se(x,t,a);if(R==="saved"){l.success("Imagem guardada");return}if(R==="cancelled")return;ae(x,t),l.success("Transferência iniciada")}catch{l.error("Não foi possível guardar a imagem. O servidor não devolveu um ficheiro de imagem válido.")}finally{T(null)}},b=(a,t)=>{confirm(`Eliminar "${t}"? Esta acção não pode ser desfeita.`)&&Y.mutate({id:a})}
11,k=m.filter(a=>a.tipo==="imagem"),C=m.filter(a=>a.tipo==="audio"),I=m.filter(a=>a.tipo==="documento"),ie=X?.total??0,ne=J?.total??0,de=K?.total??0;return e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:217",className:"p-6 space-y-6",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:219",className:"flex items-center justify-between",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:220",children:[e.jsxs("h1",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:221",className:"text-2xl font-bold text-gray-900 flex items-center gap-2",children:[e.jsx($,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:222",className:"w-6 h-6 text-indigo-600"}),"Biblioteca de Média"]}),e.jsxs("p",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:225",className:"text-sm text-gray-500 mt-1",children:[m.length," ficheiro",m.length!==1?"s":""," — imagens, áudios e documentos armazenados no R2"]})]}),e.jsx("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:229",className:"flex gap-2",children:e.jsxs(re,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:230",onClick:()=>w.current?.click(),disabled:y,className:"bg-indigo-600 hover:bg-indigo-700",children:[y?e.jsx(h,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:235",className:"w-4 h-4 mr-2 animate-spin"}):e.jsx(B,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:235",className:"w-4 h-4 mr-2"}),"Carregar Ficheiro"]})})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:242",onDrop:Z,onDragOver:a=>{a.preventDefault(),M(!0)},onDragLeave:()=>M(!1),onClick:()=>w.current?.click(),className:`border-2 border-dashed rounded-xl p-8 text-center cursor-pointer transition-all ${Q?"border-indigo-500 bg-indigo-50":"border-gray-200 hover:border-indigo-300 hover:bg-gray-50"}`,children:[y?e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:252",className:"flex items-center justify-center gap-2 text-indigo-600",children:[e.jsx(h,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:253",className:"w-6 h-6 animate-spin"}),e.jsx("span",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:254",className:"text-sm font-medium",children:"A carregar..."})]}):e.jsxs(e.Fragment,{children:[e.jsx(B,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:258",className:"w-8 h-8 text-gray-400 mx-auto mb-2"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:259",className:"text-sm text-gray-500",children:"Arraste ficheiros aqui ou clique para seleccionar"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:260",className:"text-xs text-gray-400 mt-1",children:"Imagens (JPG, PNG, WebP, GIF), Áudio (MP3, WAV, OGG, M4A), Documentos (PDF) — máx. 50MB"})]}),e.jsx("input",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:263",ref:w,type:"file",multiple:!0,accept:"image/*,audio/*,.pdf",className:"hidden",onChange:a=>{Array.from(a.target.files??[]).forEach(v),a.target.value=""}})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:278",className:"flex gap-3 flex-wrap",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:279",className:"relative flex-1 min-w-[200px]",children:[e.jsx(me,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:280",className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),e.jsx(ce,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:281",placeholder:"Pesquisar por nome...",value:s,onChange:a=>c(a.target.value),className:"pl-10"})]}),e.jsx("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:288",className:"flex gap-2",children:["todos","imagem","audio","documento"].map(a=>e.jsxs("button",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:290",onClick:()=>p(a),className:`px-3 py-2 rounded-lg text-sm font-medium transition-colors ${n===a?"bg-indigo-600 text-white":"bg-gray-100 text-gray-600 hover:bg-gray-200"}`,children:[a==="todos"?"Todos":a==="imagem"?"Imagens":a==="audio"?"Áudios":"Documentos",a!=="todos"&&e.jsxs("span",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:301",className:"ml-1.5 text-xs opacity-75",children:["(",a==="imagem"?ie:a==="audio"?ne:de,")"]})]},a))})]}),H?e.jsx("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:312",className:"flex items-center justify-center py-16",children:e.jsx(h,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:313",className:"w-8 h-8 text-indigo-500 animate-spin"})}):m.length===0?e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:316",className:"text-center py-16 text-gray-400",children:[e.jsx($,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:317",className:"w-12 h-12 mx-auto mb-3 opacity-40"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:318",className:"text-sm",children:"Nenhum ficheiro encontrado"})]}):e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:321",className:"space-y-6",children:[(n==="todos"||n==="imagem")&&k.length>0&&e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:324",children:[e.jsxs("h2",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:325",className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-3 flex items-center gap-2",children:[e.jsx(ge,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:326",className:"w-4 h-4"}),"Imagens (",k.length,")"]}),e.jsx("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:329",className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 xl:grid-cols-6 gap-3",children:k.map(a=>e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:331",className:"group relative bg-white border border-gray-200 rounded-xl overflow-hidden hover:shadow-md transition-shadow",children:[e.jsx("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:332",className:"aspect-square bg-gray-50 flex items-center justify-center",children:e.jsx("img",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:333",src:a.url,alt:a.nome,className:"w-full h-full object-cover",loading:"lazy",onError:t=>{const d=t.currentTarget;d.style.display="none";const i=d.parentElement;if(i&&!i.querySelector(".img-broken")){const r=document.createElement("div");r.className="img-broken flex flex-col items-center justify-center w-full h-full text-gray-300",r.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/>
11<path d="m21 15-5-5L5 21"/></svg><span style="font-size:10px;margin-top:4px">Sem imagem</span>',i.appendChild(r)}}})}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:351",className:"p-2",children:[e.jsx("p",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:352",className:"text-xs text-gray-700 font-medium truncate",title:a.nome,children:a.nome}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:353",className:"text-xs text-gray-400",children:le(V[a.id])})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:355",className:"absolute inset-0 bg-black/60 opacity-0 group-hover:opacity-100 transition-opacity flex items-center justify-center gap-2",children:[e.jsx("button",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:356",onClick:()=>N(a.id,a.url),className:"p-2 bg-white rounded-lg text-gray-700 hover:bg-gray-100 transition-colors",title:"Copiar URL",children:j===a.id?e.jsx(E,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:361",className:"w-4 h-4 text-green-600"}):e.jsx(S,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:361",className:"w-4 h-4"})}),e.jsx("button",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:363",onClick:()=>void te(a),disabled:L===a.id,className:"p-2 bg-white rounded-lg text-gray-700 hover:bg-gray-100 transition-colors disabled:opacity-60 disabled:cursor-wait",title:"Guardar como",children:L===a.id?e.jsx(h,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:369",className:"w-4 h-4 animate-spin"}):e.jsx(xe,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:369",className:"w-4 h-4"})}),e.jsx("button",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:371",onClick:()=>b(a.id,a.nome),className:"p-2 bg-red-500 rounded-lg text-white hover:bg-red-600 transition-colors",title:"Eliminar",children:e.jsx(D,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:376",className:"w-4 h-4"})})]})]},a.id))})]}),(n==="todos"||n==="audio")&&C.length>0&&e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:387",children:[e.jsxs("h2",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:388",className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-3 flex items-center gap-2",children:[e.jsx(O,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:389",className:"w-4 h-4"}),"Áudios (",C.length,")"]}),e.jsx("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:392",className:"space-y-2",children:C.map(a=>e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:394",className:"flex items-center gap-3 bg-white border border-gray-200 rounded-xl p-3 hover:shadow-sm transition-shadow",children:[e.jsx("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:395",className:"w-10 h-10 bg-purple-100 rounded-lg flex items-center justify-center flex-shrink-0",children:e.jsx(O,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:396",className:"w-5 h-5 text-purple-600"})}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:398",className:"flex-1 min-w-0",children:[e.jsx("p",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:399",className:"text-sm font-medium text-gray-800 truncate",children:a.nome}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:400",className:"flex items-center gap-3 mt-0.5",children:[e.jsx("span",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:401",className:"text-xs text-gray-400",children:G(a.tamanho??0)}),e.jsx("span",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:402",className:"text-xs text-gray-400",children:W(a.createdAt)})]})]}),e.jsx("audio",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:405",controls:!0,className:"h-8 max-w-[200px]",src:a.url}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:406",className:"flex gap-1 flex-shrink-0",children:[e.jsx("button",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:407",onClick:()=>N(a.id,a.url),className:"p-2 text-gray-400 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors",title:"Copiar URL",children:j===a.id?e.jsx(E,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:412",className:"w-4 h-4 text-green-600"}):e.jsx(S,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:412",className:"w-4 h-4"})}),e.jsx("button",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:414",onClick:()=>b(a.id,a.nome),className:"p-2 text-red-400 hover:text-red-600 hover:bg-red-50 rounded-lg transition-colors",title:"Eliminar",children:e.jsx(D,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:419",className:"w-4 h-4"})})]})]},a.id))})]}),(n==="todos"||n==="documento")&&I.length>0&&e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:430",children:[e.jsxs("h2",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:431",className:"text-sm font-semibold text-gray-500 uppercase tracking-wide mb-3 flex items-center gap-2",children:[e.jsx(P,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:432",className:"w-4 h-4"}),"Documentos (",I.length,")"]}),e.jsx("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:435",className:"space-y-2",children:I.map(a=>e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:437",className:"flex items-center gap-3 bg-white border border-gray-200 rounded-xl p-3 hover:shadow-sm transition-shadow",children:[e.jsx("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:438",className:"w-10 h-10 bg-gray-100 rounded-lg flex items-center justify-center flex-shrink-0",children:e.jsx(P,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:439",className:"w-5 h-5 text-gray-500"})}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:441",className:"flex-1 min-w-0",children:[e.jsx("p",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:442",className:"text-sm font-medium text-gray-800 truncate",children:a.nome}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:443",className:"flex items-center gap-3 mt-0.5",children:[e.jsx("span",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:444",className:"text-xs text-gray-400",children:G(a.tamanho??0)}),e.jsx("span",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:445",className:"text-xs text-gray-400",children:W(a.createdAt)})]})]}),e.jsx("a",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:448",href:a.url,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-indigo-600 hover:text-indigo-800 font-medium px-2 py-1 rounded hover:bg-indigo-50 transition-colors",children:"Abrir"}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:456",className:"flex gap-1 flex-shrink-0",children:[e.jsx("button",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:457",onClick:()=>N(a.id,a.url),className:"p-2 text-gray-400 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors",title:"Copiar URL",children:j===a.id?e.jsx(E,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:462",className:"w-4 h-4 text-green-600"}):e.jsx(S,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:462",className:"w-4 h-4"})}),e.jsx("button",{"data-loc":"client/src/pages/admin/AdminMedia.tsx:464",onClick:()=>b(a.id,a.nome),className:"p-2 text-red-400 hover:text-red-600 hover:bg-red-50 rounded-lg transition-colors",title:"Eliminar",children:e.jsx(D,{"data-loc":"client/src/pages/admin/AdminMedia.tsx:469",className:"w-4 h-4"})})]})]},a.id))})]})]})]})}export{Be 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.