miniflare
Version:
Fun, full-featured, fully-local simulator for Cloudflare Workers
1 lines • 5.01 kB
JavaScript
import{n as e,r as t,t as n}from"./format-1KsnZgl0.js";import{n as r,t as i}from"./dialog-oqh8l3l3zutpibxx-TbiRttKB.js";import{t as a}from"./Breadcrumbs-7fG3Aw2e.js";import{Gn as o,Vn as s,Wn as c,lt as l,qn as u,rt as d,t as f,wt as p,zn as m}from"./index-BwGGYgiP.js";import{t as h}from"./CopyButton-BsxIOLQg.js";var g=u(c()),_=o();function v({object:t}){let r=t.http_metadata?.contentType??`application/octet-stream`,i=n(t.last_modified),[a,o]=i.includes(`UTC`)?[i.replace(/ \d{2}:\d{2}:\d{2} UTC$/,``),i.match(/\d{2}:\d{2}:\d{2} UTC$/)?.[0]||``]:[i,``];return(0,_.jsxs)(`div`,{className:`rounded-lg border border-kumo-fill bg-kumo-base p-6`,children:[(0,_.jsx)(`h3`,{className:`mb-4 text-base font-semibold text-kumo-default`,children:`Object Details`}),(0,_.jsxs)(`dl`,{className:`grid grid-cols-3 gap-x-8 gap-y-2 text-sm`,children:[(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`dt`,{className:`text-kumo-subtle`,children:`Date Created`}),(0,_.jsxs)(`dd`,{className:`mt-1`,children:[(0,_.jsx)(`span`,{className:`text-kumo-default`,children:a}),o&&(0,_.jsx)(`span`,{className:`ml-1 text-kumo-subtle`,children:o})]})]}),(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`dt`,{className:`text-kumo-subtle`,children:`Type`}),(0,_.jsx)(`dd`,{className:`mt-1 text-kumo-default`,children:r})]}),(0,_.jsxs)(`div`,{children:[(0,_.jsx)(`dt`,{className:`text-kumo-subtle`,children:`Size`}),(0,_.jsx)(`dd`,{className:`mt-1 text-kumo-default`,children:e(t.size)})]})]})]})}function y({metadata:e}){let t=e?Object.entries(e):[];return(0,_.jsxs)(`div`,{className:`rounded-lg border border-kumo-fill bg-kumo-base p-6`,children:[(0,_.jsx)(`h3`,{className:`mb-4 text-base font-semibold text-kumo-default`,children:`Custom Metadata`}),t.length===0?(0,_.jsx)(`p`,{className:`text-sm text-kumo-subtle`,children:`No custom metadata set`}):(0,_.jsx)(`dl`,{className:`space-y-2 text-sm`,children:t.map(([e,t])=>(0,_.jsxs)(`div`,{className:`flex gap-4`,children:[(0,_.jsx)(`dt`,{className:`min-w-30 font-mono text-kumo-subtle`,children:e}),(0,_.jsx)(`dd`,{className:`font-mono text-kumo-default`,children:t})]},e))})]})}function b(){let e=f.useParams(),n=f.useLoaderData(),o=f.useSearch(),c=s(),[u,b]=(0,g.useState)(!1),[x,S]=(0,g.useState)(!1),[C,w]=(0,g.useState)(null);function T(){let t=`/cdn-cgi/explorer/api/r2/buckets/${encodeURIComponent(e.bucketName)}/objects/${encodeURIComponent(n.objectKey)}`,r=document.createElement(`a`);r.href=t,r.download=n.objectKey.split(`/`).pop()||`download`,document.body.appendChild(r),r.click(),document.body.removeChild(r)}async function E(){try{S(!0),await l({path:{bucket_name:e.bucketName},body:[n.objectKey]});let t=n.objectKey.includes(`/`)?n.objectKey.substring(0,n.objectKey.lastIndexOf(`/`)+1):void 0;c({params:{bucketName:e.bucketName},search:e=>({...e,prefix:t}),to:`/r2/$bucketName`})}catch(e){w(e instanceof Error?e.message:`Failed to delete object`),b(!1)}finally{S(!1)}}let D=o.delimiter!==!1,O=D?n.objectKey.split(`/`).filter(Boolean):[],k=D&&O.pop()||n.objectKey;return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(a,{icon:d,title:`R2`,items:[(0,_.jsx)(m,{className:`text-kumo-default no-underline hover:text-kumo-link`,params:{bucketName:e.bucketName},search:e=>({...e,prefix:void 0}),to:`/r2/$bucketName`,children:e.bucketName},`bucket`),...O.map((t,n)=>{let r=O.slice(0,n+1).join(`/`)+`/`;return(0,_.jsxs)(m,{className:`text-kumo-default no-underline hover:text-kumo-link`,params:{bucketName:e.bucketName},search:e=>({...e,prefix:r}),to:`/r2/$bucketName`,children:[t,`/`]},r)}),(0,_.jsx)(`span`,{children:k},`file`)]}),(0,_.jsxs)(`div`,{className:`px-6 py-6`,children:[C&&(0,_.jsx)(`div`,{className:`mb-4 rounded-md border border-kumo-danger/20 bg-kumo-danger/8 p-4 text-kumo-danger`,children:C}),(0,_.jsxs)(`div`,{className:`mb-6 flex items-center justify-between`,children:[(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,_.jsx)(`h1`,{className:`truncate text-base text-kumo-default`,title:n.objectKey,children:n.objectKey}),(0,_.jsx)(h,{text:n.objectKey})]}),(0,_.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,_.jsx)(p,{icon:t,onClick:T,variant:`secondary`,children:`Download`}),(0,_.jsx)(p,{icon:r,onClick:()=>b(!0),variant:`secondary-destructive`,children:`Delete`})]})]}),(0,_.jsxs)(`div`,{className:`space-y-6`,children:[(0,_.jsx)(v,{object:n.object}),(0,_.jsx)(y,{metadata:n.object.custom_metadata})]}),(0,_.jsx)(i.Root,{onOpenChange:e=>!e&&b(!1),open:u,children:(0,_.jsxs)(i,{className:`p-6`,children:[(0,_.jsx)(i.Title,{className:`mb-4 text-lg font-semibold`,children:`Delete object?`}),(0,_.jsxs)(i.Description,{className:`mb-2 text-kumo-subtle`,children:[`Are you sure you want to delete “`,n.objectKey,`”? This cannot be undone.`]}),(0,_.jsxs)(`div`,{className:`mt-6 flex justify-end gap-2`,children:[(0,_.jsx)(p,{disabled:x,onClick:()=>b(!1),variant:`secondary`,children:`Cancel`}),(0,_.jsx)(p,{disabled:x,loading:x,onClick:E,variant:`destructive`,children:x?`Deleting...`:`Delete`})]})]})})]})]})}export{b as component};