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