r2-explorer 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -47
- package/dashboard/assets/AuthLayout.47bc4d6b.js +1 -0
- package/dashboard/assets/EmailFilePage.5146dfaa.js +2 -0
- package/dashboard/assets/{ErrorNotFound.a0d3ece6.js → ErrorNotFound.2be1d090.js} +1 -1
- package/dashboard/assets/LoginPage.e449cd8d.js +1 -0
- package/dashboard/assets/auth-store.1a4593f8.js +1 -0
- package/dashboard/assets/auth.a5ffeab6.js +1 -0
- package/dashboard/assets/{bus.def2db9e.js → bus.67913454.js} +1 -1
- package/dashboard/assets/{index.073c3cc5.css → index.7e109f1f.css} +2 -2
- package/dashboard/assets/index.ddf53a58.js +104 -0
- package/dashboard/index.html +46 -3
- package/dashboard/spa/assets/AuthLayout.47bc4d6b.js +1 -0
- package/dashboard/spa/assets/EmailFilePage.5146dfaa.js +2 -0
- package/dashboard/spa/assets/EmailFilePage.c4890c9c.css +1 -0
- package/dashboard/spa/assets/ErrorNotFound.2be1d090.js +1 -0
- package/dashboard/spa/assets/KFOkCnqEu92Fr1MmgVxIIzQ.d240a9ae.woff +0 -0
- package/dashboard/spa/assets/KFOlCnqEu92Fr1MmEU9fBBc-.6ba203eb.woff +0 -0
- package/dashboard/spa/assets/KFOlCnqEu92Fr1MmSU5fBBc-.80684728.woff +0 -0
- package/dashboard/spa/assets/KFOlCnqEu92Fr1MmWUlfBBc-.2df244f6.woff +0 -0
- package/dashboard/spa/assets/KFOlCnqEu92Fr1MmYUtfBBc-.742ce02b.woff +0 -0
- package/dashboard/spa/assets/KFOmCnqEu92Fr1Mu4mxM.f00fa16d.woff +0 -0
- package/dashboard/spa/assets/LoginPage.e449cd8d.js +1 -0
- package/dashboard/spa/assets/auth-store.1a4593f8.js +1 -0
- package/dashboard/spa/assets/auth.a5ffeab6.js +1 -0
- package/dashboard/spa/assets/bus.67913454.js +1 -0
- package/dashboard/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.fd84f88b.woff +0 -0
- package/dashboard/spa/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.4a4dbc62.woff2 +0 -0
- package/dashboard/spa/assets/index.7e109f1f.css +5 -0
- package/dashboard/spa/assets/index.ddf53a58.js +104 -0
- package/dashboard/spa/favicon.ico +0 -0
- package/dashboard/spa/icons/favicon-128x128.png +0 -0
- package/dashboard/spa/icons/favicon-16x16.png +0 -0
- package/dashboard/spa/icons/favicon-32x32.png +0 -0
- package/dashboard/spa/icons/favicon-96x96.png +0 -0
- package/dashboard/spa/icons/logo.png +0 -0
- package/dashboard/spa/index.html +46 -0
- package/dashboard/spa/logo-white.svg +5 -0
- package/dashboard/spa/logo.png +0 -0
- package/dashboard/spa/robots.txt +2 -0
- package/dist/index.d.mts +0 -5
- package/dist/index.d.ts +0 -5
- package/dist/index.js +45 -64
- package/dist/index.mjs +37 -56
- package/package.json +67 -66
- package/dashboard/assets/AuthLayout.828e1213.js +0 -1
- package/dashboard/assets/EmailFilePage.148b4f84.js +0 -2
- package/dashboard/assets/EmailFolderPage.0c5be156.js +0 -1
- package/dashboard/assets/EmailFolderPage.25044e0a.css +0 -1
- package/dashboard/assets/FilesFolderPage.7cadc3fd.js +0 -72
- package/dashboard/assets/FilesFolderPage.ecacd99f.css +0 -1
- package/dashboard/assets/HomePage.fd1efdb0.js +0 -1
- package/dashboard/assets/LoginPage.5e2746c3.js +0 -1
- package/dashboard/assets/MainLayout.05d49d78.css +0 -1
- package/dashboard/assets/MainLayout.54c624c6.js +0 -1
- package/dashboard/assets/QCard.9ca85696.js +0 -1
- package/dashboard/assets/QCardActions.3d6ece78.js +0 -1
- package/dashboard/assets/QForm.1a0fa8bd.js +0 -1
- package/dashboard/assets/QInput.dbc14c53.js +0 -1
- package/dashboard/assets/QLayout.7c9341c3.js +0 -1
- package/dashboard/assets/QPage.1736cadc.js +0 -1
- package/dashboard/assets/QSeparator.d0c0fb0f.js +0 -1
- package/dashboard/assets/QSpace.3225ba0f.js +0 -1
- package/dashboard/assets/QTable.3fe6867d.js +0 -1
- package/dashboard/assets/QTd.32b217d9.js +0 -1
- package/dashboard/assets/auth-store.10a6215e.js +0 -1
- package/dashboard/assets/auth.3fb1cfd3.js +0 -1
- package/dashboard/assets/axios.d3fa833b.js +0 -6
- package/dashboard/assets/focus-manager.1ddae684.js +0 -1
- package/dashboard/assets/index.31a4681e.js +0 -25
- package/dashboard/assets/main-store.ee636e78.js +0 -1
- package/dashboard/assets/scroll.6727d3ea.js +0 -1
- package/dashboard/assets/use-checkbox.687a19bf.js +0 -1
- package/dashboard/assets/use-dark.6e19ce43.js +0 -1
- package/dashboard/assets/use-quasar.0c0b766f.js +0 -1
- package/dashboard/assets/use-transition.19980487.js +0 -1
package/package.json
CHANGED
|
@@ -1,67 +1,68 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
2
|
+
"name": "r2-explorer",
|
|
3
|
+
"version": "1.1.2",
|
|
4
|
+
"description": "A Google Drive Interface for your Cloudflare R2 Buckets",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dashboard",
|
|
10
|
+
"dist",
|
|
11
|
+
"LICENSE",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsup src/index.ts --format cjs,esm --dts && cp -R ../dashboard/dist/spa/ dashboard/ && cp ../../README.md . && cp ../../LICENSE .",
|
|
16
|
+
"lint": "npx @biomejs/biome check src/ tests/ || (npx @biomejs/biome check --write src/ tests/; exit 1)",
|
|
17
|
+
"test": "vitest run --root tests",
|
|
18
|
+
"package": "npm run build && npm pack",
|
|
19
|
+
"publish-npm": "npm publish"
|
|
20
|
+
},
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"cloudflare",
|
|
26
|
+
"worker",
|
|
27
|
+
"workers",
|
|
28
|
+
"serverless",
|
|
29
|
+
"cloudflare r2",
|
|
30
|
+
"r2",
|
|
31
|
+
"r2 storage",
|
|
32
|
+
"drive",
|
|
33
|
+
"google drive",
|
|
34
|
+
"ui",
|
|
35
|
+
"cf",
|
|
36
|
+
"typescript",
|
|
37
|
+
"npm",
|
|
38
|
+
"package",
|
|
39
|
+
"cjs",
|
|
40
|
+
"esm",
|
|
41
|
+
"umd",
|
|
42
|
+
"typed"
|
|
43
|
+
],
|
|
44
|
+
"author": "Gabriel Massadas",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"homepage": "https://r2explorer.dev",
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "git+https://github.com/G4brym/R2-Explorer.git"
|
|
50
|
+
},
|
|
51
|
+
"bugs": {
|
|
52
|
+
"url": "https://github.com/G4brym/R2-Explorer/issues"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@cloudflare/workers-types": "^4.20241127.0",
|
|
56
|
+
"@types/node": "^22.10.1",
|
|
57
|
+
"tsup": "^8.3.5",
|
|
58
|
+
"typescript": "^5.7.2",
|
|
59
|
+
"wrangler": "^3.91.0"
|
|
60
|
+
},
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"@hono/cloudflare-access": "^0.2.0",
|
|
63
|
+
"chanfana": "^2.5.1",
|
|
64
|
+
"hono": "^4.6.15",
|
|
65
|
+
"postal-mime": "^2.3.2",
|
|
66
|
+
"zod": "^3.24.1"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as a,a as r}from"./QLayout.7c9341c3.js";import{_ as n,a as s,r as c,o as p,c as _,w as e,e as o}from"./index.31a4681e.js";import"./scroll.6727d3ea.js";const i=s({name:"AuthLayout",components:{}});function u(f,m,d,l,h,v){const t=c("router-view");return p(),_(a,{view:"hHh lpR fFf"},{default:e(()=>[o(r,{class:"container"},{default:e(()=>[o(t)]),_:1})]),_:1})}var $=n(i,[["render",u]]);export{$ as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{f as te,x as W,h as _,q as x,t as D,a7 as N,a4 as j,j as F,X as _e,n as Se,k as ae,R as Te,_ as $e,a as Pe,o as u,aa as p,e as s,w as n,W as Be,J as $,G as w,ab as z,c as q,I as U,F as d,H as v,Q as R,aC as Ce}from"./index.31a4681e.js";import{y as qe,u as He,v as V,h as Ee,a as Fe,i as Me,b as Ae,j as Qe,k as Ie,d as Oe,l as Le,r as G,s as We,c as J,p as X,n as xe,f as K,w as Y,x as De,e as b,Q as Ne}from"./QSeparator.d0c0fb0f.js";import{u as H,a as je}from"./use-transition.19980487.js";import{s as ze,g as Ue}from"./scroll.6727d3ea.js";import{a as Z,Q as P}from"./QCard.9ca85696.js";import{Q as ee}from"./QCardActions.3d6ece78.js";import"./axios.d3fa833b.js";import{u as Re}from"./use-quasar.0c0b766f.js";import{u as Ve}from"./main-store.ee636e78.js";import"./focus-manager.1ddae684.js";import"./use-dark.6e19ce43.js";var E=te({name:"QTooltip",inheritAttrs:!1,props:{...qe,...He,...H,maxHeight:{type:String,default:null},maxWidth:{type:String,default:null},transitionShow:{...H.transitionShow,default:"jump-down"},transitionHide:{...H.transitionHide,default:"jump-up"},anchor:{type:String,default:"bottom middle",validator:V},self:{type:String,default:"top middle",validator:V},offset:{type:Array,default:()=>[14,14],validator:Ee},scrollTarget:ze,delay:{type:Number,default:0},hideDelay:{type:Number,default:0},persistent:Boolean},emits:[...Fe],setup(e,{slots:t,emit:f,attrs:o}){let a,l;const r=Se(),{proxy:{$q:c}}=r,g=W(null),S=W(!1),se=_(()=>X(e.anchor,c.lang.rtl)),oe=_(()=>X(e.self,c.lang.rtl)),le=_(()=>e.persistent!==!0),{registerTick:ne,removeTick:ie}=Me(),{registerTimeout:T}=Ae(),{transitionProps:re,transitionStyle:de}=je(e),{localScrollTarget:M,changeScrollEvent:ce,unconfigureScrollTarget:ue}=Qe(e,O),{anchorEl:m,canShow:me,anchorEvents:k}=Ie({showing:S,configureAnchorEl:ye}),{show:fe,hide:B}=Oe({showing:S,canShow:me,handleShow:pe,handleHide:ve,hideOnRouteChange:le,processOnMount:!0});Object.assign(k,{delayShow:ge,delayHide:ke});const{showPortal:A,hidePortal:Q,renderPortal:he}=Le(r,g,be,"tooltip");if(c.platform.is.mobile===!0){const i={anchorEl:m,innerRef:g,onClickOutside(h){return B(h),h.target.classList.contains("q-dialog__backdrop")&&Te(h),!0}},C=_(()=>e.modelValue===null&&e.persistent!==!0&&S.value===!0);x(C,h=>{(h===!0?xe:G)(i)}),D(()=>{G(i)})}function pe(i){A(),ne(()=>{l=new MutationObserver(()=>y()),l.observe(g.value,{attributes:!1,childList:!0,characterData:!0,subtree:!0}),y(),O()}),a===void 0&&(a=x(()=>c.screen.width+"|"+c.screen.height+"|"+e.self+"|"+e.anchor+"|"+c.lang.rtl,y)),T(()=>{A(!0),f("show",i)},e.transitionDuration)}function ve(i){ie(),Q(),I(),T(()=>{Q(!0),f("hide",i)},e.transitionDuration)}function I(){l!==void 0&&(l.disconnect(),l=void 0),a!==void 0&&(a(),a=void 0),ue(),N(k,"tooltipTemp")}function y(){We({targetEl:g.value,offset:e.offset,anchorEl:m.value,anchorOrigin:se.value,selfOrigin:oe.value,maxHeight:e.maxHeight,maxWidth:e.maxWidth})}function ge(i){if(c.platform.is.mobile===!0){J(),document.body.classList.add("non-selectable");const C=m.value,h=["touchmove","touchcancel","touchend","click"].map(L=>[C,L,"delayHide","passiveCapture"]);j(k,"tooltipTemp",h)}T(()=>{fe(i)},e.delay)}function ke(i){c.platform.is.mobile===!0&&(N(k,"tooltipTemp"),J(),setTimeout(()=>{document.body.classList.remove("non-selectable")},10)),T(()=>{B(i)},e.hideDelay)}function ye(){if(e.noParentEvent===!0||m.value===null)return;const i=c.platform.is.mobile===!0?[[m.value,"touchstart","delayShow","passive"]]:[[m.value,"mouseenter","delayShow","passive"],[m.value,"mouseleave","delayHide","passive"]];j(k,"anchor",i)}function O(){if(m.value!==null||e.scrollTarget!==void 0){M.value=Ue(m.value,e.scrollTarget);const i=e.noParentEvent===!0?y:B;ce(M.value,i)}}function we(){return S.value===!0?F("div",{...o,ref:g,class:["q-tooltip q-tooltip--style q-position-engine no-pointer-events",o.class],style:[o.style,de.value],role:"tooltip"},ae(t.default)):null}function be(){return F(_e,re.value,we)}return D(I),Object.assign(r.proxy,{updatePosition:y}),he}}),Ge=te({name:"QBtnGroup",props:{unelevated:Boolean,outline:Boolean,flat:Boolean,rounded:Boolean,square:Boolean,push:Boolean,stretch:Boolean,glossy:Boolean,spread:Boolean},setup(e,{slots:t}){const f=_(()=>{const o=["unelevated","outline","flat","rounded","square","push","stretch","glossy"].filter(a=>e[a]===!0).map(a=>`q-btn-group--${a}`).join(" ");return`q-btn-group row no-wrap${o.length!==0?" "+o:""}`+(e.spread===!0?" q-btn-group--spread":" inline")});return()=>F("div",{class:f.value},ae(t.default))}});const Je=Pe({name:"EmailFolderPage",data:()=>({srcdoc:null,file:null,fileHead:null,timeInterval:null,attachments:[]}),computed:{selectedBucket:function(){return this.$route.params.bucket},selectedFolder:function(){return this.$route.params.folder},selectedFile:function(){return this.$route.params.file},filePath:function(){const e=K(this.selectedFile);return`.r2-explorer/emails/${this.selectedFolder}/${e}`}},watch:{selectedBucket(e){this.$router.push({name:"email-folder",params:{bucket:e,folder:Y(this.selectedFolder)}})}},methods:{timeSince:De,contentFinishedLoading(){clearInterval(this.timeInterval),this.timeInterval=null,this.resizeIframe()},resizeIframe(){this.$refs.renderWindow&&(this.$refs.renderWindow.style.height=`${this.$refs.renderWindow.contentWindow.document.documentElement.scrollHeight}px`)},fetchEmail:async function(){const e=K(this.selectedFile),t=await b.downloadFile(this.selectedBucket,this.filePath,{}),f=e.split(".json")[0];this.file=t.data;let o=t.data.html;if(o){o=o.replaceAll(/<a(.*?)>(.*?)<\/a>/gi,'<a$1 target="_blank">$2</a>');for(const a of t.data.attachments){a.display=!0,a.downloadUrl=`${this.mainStore.serverUrl}/api/buckets/${this.selectedBucket}/${Y(`.r2-explorer/emails/${this.selectedFolder}/${f}/${a.filename}`)}`;let l=a.contentId;if(l){l.startsWith("<")&&l.endsWith(">")&&(l=l.substring(1,l.length-1));const r=`cid:${l}`;o.includes(r)&&(o=o.replaceAll(`cid:${l}`,a.downloadUrl),a.display=!1)}}this.srcdoc=o}this.attachments=t.data.attachments.filter(a=>a.display),b.headFile(this.selectedBucket,this.filePath).then(async a=>{a.customMetadata.read==="false"?this.fileHead=await b.updateMetadata(this.selectedBucket,this.filePath,{...a.customMetadata,read:!0}):this.fileHead=a}),setTimeout(()=>{this.contentFinishedLoading()},1e4),this.timeInterval=setInterval(()=>{this.resizeIframe()},400)},markAsUnread:async function(){this.fileHead=await b.updateMetadata(this.selectedBucket,this.filePath,{...this.fileHead.customMetadata,read:!1}),this.q.notify({group:!1,icon:"done",spinner:!1,message:"Email marked as unread!",timeout:2500})},markAsRead:async function(){this.fileHead=await b.updateMetadata(this.selectedBucket,this.filePath,{...this.fileHead.customMetadata,read:!0}),this.q.notify({group:!1,icon:"done",spinner:!1,message:"Email marked as read!",timeout:2500})},downloadAtt:e=>{console.log(e);const t=document.createElement("a");t.download=e.filename,t.href=e.downloadUrl,document.body.appendChild(t),t.click(),document.body.removeChild(t)}},created(){this.fetchEmail()},setup(){return{mainStore:Ve(),q:Re()}}}),Xe={key:0},Ke={class:"font-18 q-my-none"},Ye={class:"d-flex row"},Ze={class:"d-flex column"},et={class:"text-muted"},tt={class:"q-ml-auto"},at={class:""},st={class:"overflow-auto d-block email-wrapper"},ot=["srcdoc"],lt=["innerHTML"],nt={class:"row attachments"},it={key:1,class:"text-center q-my-lg"};function rt(e,t,f,o,a,l){return this.file?(u(),p("div",Xe,[s(Z,null,{default:n(()=>[s(P,{class:"bg-grey-2 text-black",vertical:""},{default:n(()=>[s(Ge,{unelevated:""},{default:n(()=>[s($,{push:"",icon:"arrow_back",to:{name:"email-folder",params:{bucket:e.$route.params.bucket,folder:e.$route.params.folder}}},{default:n(()=>[s(E,null,{default:n(()=>t[1]||(t[1]=[w("Back")])),_:1})]),_:1},8,["to"]),e.fileHead?(u(),p(z,{key:0},[e.fileHead.customMetadata.read==="true"?(u(),q($,{key:0,push:"",icon:"mark_email_unread",onClick:e.markAsUnread},{default:n(()=>[s(E,null,{default:n(()=>t[2]||(t[2]=[w("Mark email as unread")])),_:1})]),_:1},8,["onClick"])):(u(),q($,{key:1,push:"",icon:"mark_email_read",onClick:e.markAsRead},{default:n(()=>[s(E,null,{default:n(()=>t[3]||(t[3]=[w("Mark email as read")])),_:1})]),_:1},8,["onClick"]))],64)):U("",!0)]),_:1})]),_:1}),s(P,{vertical:""},{default:n(()=>[d("h5",Ke,v(e.file.subject),1)]),_:1}),s(P,{horizontal:"",class:"q-px-sm"},{default:n(()=>[d("div",Ye,[s(R,{name:"account_circle",size:"xl",class:"q-mr-sm"}),d("div",Ze,[d("span",null,[w(v(e.file.from.name)+" ",1),d("small",et,"<"+v(e.file.from.address)+">",1)]),d("span",null,"to "+v(e.file.to[0].address),1)])]),d("div",tt,[d("small",at,v(e.file.date)+" ("+v(e.timeSince(new Date(e.file.date)))+")",1)])]),_:1}),s(ee,{vertical:""},{default:n(()=>[d("div",st,[e.srcdoc?(u(),p("iframe",{key:0,frameborder:"0",scrolling:"no",class:"w-100 d-block",onLoad:t[0]||(t[0]=(...r)=>e.contentFinishedLoading&&e.contentFinishedLoading(...r)),ref:"renderWindow",id:"renderWindow",srcdoc:e.srcdoc,sandbox:"allow-popups allow-popups-to-escape-sandbox allow-same-origin",csp:"script-src 'none'"},null,40,ot)):(u(),p("div",{key:1,innerHTML:e.file.text.replaceAll(`
|
|
2
|
-
`,"<br>")},null,8,lt))])]),_:1}),e.attachments.length>0?(u(),q(ee,{key:0,vertical:""},{default:n(()=>[s(Ne),t[4]||(t[4]=d("h6",{class:"q-my-md"},"Attachments",-1)),d("div",nt,[(u(!0),p(z,null,Ce(e.file.attachments,r=>(u(),p("div",{class:"col-md-4 col-sm-12",key:r.filename},[s(Z,null,{default:n(()=>[s(P,{class:"q-pa-sm flex",style:{"align-items":"center"}},{default:n(()=>[s(R,{name:"description",size:"md",color:"blue",class:"q-mr-sm"}),w(" "+v(r.filename)+" ",1),s($,{color:"white","text-color":"black",icon:"download",class:"q-mr-0 q-ml-auto",onClick:c=>e.downloadAtt(r)},null,8,["onClick"])]),_:2},1024)]),_:2},1024)]))),128))])]),_:1})):U("",!0)]),_:1})])):(u(),p("div",it,[s(Be,{color:"primary",size:"3em"})]))}var wt=$e(Je,[["render",rt],["__scopeId","data-v-59368c26"]]);export{wt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as W,aG as ee,aH as te,j as D,x as _,h as z,q as b,O as ae,N as se,t as le,s as ie,a1 as oe,k as re,v as ne,z as A,aI as H,U as ce,n as ue,_ as de,a as fe,o as v,c as x,w as n,F as u,e as m,W as V,aD as k,G as M,H as w,J as me,Q as C,I as T,aa as U}from"./index.31a4681e.js";import{Q as S}from"./QTd.32b217d9.js";import{h as he}from"./QTable.3fe6867d.js";import{s as ve,d as N,a as $,e as q,g as ge}from"./scroll.6727d3ea.js";import{Q as pe}from"./QPage.1736cadc.js";import{api as be}from"./axios.d3fa833b.js";import{u as we}from"./main-store.ee636e78.js";import{w as R,e as Q,x as ye}from"./QSeparator.d0c0fb0f.js";import"./use-dark.6e19ce43.js";import"./use-checkbox.687a19bf.js";import"./focus-manager.1ddae684.js";import"./use-transition.19980487.js";const _e='<circle cx="15" cy="15" r="15"><animate attributeName="r" from="15" to="15" begin="0s" dur="0.8s" values="15;9;15" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcMode="linear" repeatCount="indefinite"></animate></circle><circle cx="60" cy="15" r="9" fill-opacity=".3"><animate attributeName="r" from="9" to="9" begin="0s" dur="0.8s" values="9;15;9" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="fill-opacity" from=".5" to=".5" begin="0s" dur="0.8s" values=".5;1;.5" calcMode="linear" repeatCount="indefinite"></animate></circle><circle cx="105" cy="15" r="15"><animate attributeName="r" from="15" to="15" begin="0s" dur="0.8s" values="15;9;15" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcMode="linear" repeatCount="indefinite"></animate></circle>';var xe=W({name:"QSpinnerDots",props:ee,setup(e){const{cSize:l,classes:r}=te(e);return()=>D("svg",{class:r.value,fill:"currentColor",width:l.value,height:l.value,viewBox:"0 0 120 30",xmlns:"http://www.w3.org/2000/svg",innerHTML:_e})}});const{passive:h}=ne;var ke=W({name:"QInfiniteScroll",props:{offset:{type:Number,default:500},debounce:{type:[String,Number],default:100},scrollTarget:ve,initialIndex:{type:Number,default:0},disable:Boolean,reverse:Boolean},emits:["load"],setup(e,{slots:l,emit:r}){const t=_(!1),a=_(!0),d=_(null),i=_(null);let y=e.initialIndex,s,c;const G=z(()=>"q-infinite-scroll__loading"+(t.value===!0?"":" invisible"));function g(){if(e.disable===!0||t.value===!0||a.value===!1)return;const o=N(s),f=$(s),p=H(s);e.reverse===!1?Math.round(f+p+e.offset)>=Math.round(o)&&I():Math.round(f)<=e.offset&&I()}function I(){if(e.disable===!0||t.value===!0||a.value===!1)return;y++,t.value=!0;const o=N(s);r("load",y,f=>{a.value===!0&&(t.value=!1,A(()=>{if(e.reverse===!0){const p=N(s),Y=$(s),Z=p-o;q(s,Y+Z)}f===!0?P():d.value&&d.value.closest("body")&&c()}))})}function J(){y=0}function L(){a.value===!1&&(a.value=!0,s.addEventListener("scroll",c,h)),g()}function P(){a.value===!0&&(a.value=!1,t.value=!1,s.removeEventListener("scroll",c,h),c!==void 0&&c.cancel!==void 0&&c.cancel())}function B(){if(s&&a.value===!0&&s.removeEventListener("scroll",c,h),s=ge(d.value,e.scrollTarget),a.value===!0){if(s.addEventListener("scroll",c,h),e.reverse===!0){const o=N(s),f=H(s);q(s,o-f)}g()}}function K(o){y=o}function O(o){o=parseInt(o,10);const f=c;c=o<=0?g:ce(g,isNaN(o)===!0?100:o),s&&a.value===!0&&(f!==void 0&&s.removeEventListener("scroll",f,h),s.addEventListener("scroll",c,h))}function j(o){if(F.value===!0){if(i.value===null){o!==!0&&A(()=>{j(!0)});return}const f=`${t.value===!0?"un":""}pauseAnimations`;Array.from(i.value.getElementsByTagName("svg")).forEach(p=>{p[f]()})}}const F=z(()=>e.disable!==!0&&a.value===!0);b([t,F],()=>{j()}),b(()=>e.disable,o=>{o===!0?P():L()}),b(()=>e.reverse,()=>{t.value===!1&&a.value===!0&&g()}),b(()=>e.scrollTarget,B),b(()=>e.debounce,O);let E=!1;ae(()=>{E!==!1&&s&&q(s,E)}),se(()=>{E=s?$(s):!1}),le(()=>{a.value===!0&&s.removeEventListener("scroll",c,h)}),ie(()=>{O(e.debounce),B(),t.value===!1&&j()});const X=ue();return Object.assign(X.proxy,{poll:()=>{c!==void 0&&c()},trigger:I,stop:P,reset:J,resume:L,setIndex:K,updateScrollTarget:B}),()=>{const o=oe(l.default,[]);return F.value===!0&&o[e.reverse===!1?"push":"unshift"](D("div",{ref:i,class:G.value},re(l.loading))),D("div",{class:"q-infinite-scroll",ref:d},o)}}});const Me=fe({name:"EmailFolderPage",data:()=>({timeInterval:null,indexCursors:null,loading:!1,loadMoreAutomatically:!0,hasMorePages:!0,rows:[],columns:[{name:"sender",required:!0,field:"sender",align:"left",sortable:!1},{name:"subject",required:!0,field:"subject",align:"left",sortable:!1},{name:"lastModified",required:!0,align:"left",field:"lastModified",sortable:!1},{name:"has_attachments",required:!0,align:"left",field:"has_attachments",sortable:!1}]}),computed:{selectedBucket:function(){return this.$route.params.bucket},selectedFolder:()=>"inbox"},watch:{selectedBucket(e){this.fetchFiles()}},methods:{rowClass:e=>e.row.customMetadata.read==="true"?"email-read":"email-unread",rowClick:function(e,l,r){const t=l.key.replace(/^.*[\\/]/,"");this.$router.push({name:"email-file",params:{bucket:this.selectedBucket,folder:this.selectedFolder,file:R(t)}})},createOrUpdateIndex:async function(e){let l=!0,r=null,t=0,a={version:1,cursors:[]};if(e&&(a=e,e.cursors.length>0)){const d=e.cursors.pop();t=d.page,r=d.cursor}for(;l;){console.log(`Updating index page ${t}`);const d=await be.get(`/buckets/${this.selectedBucket}?include=customMetadata&include=httpMetadata`,{params:{delimiter:"/",prefix:R(`.r2-explorer/emails/${this.selectedFolder}/`),cursor:r}});a.cursors.push({page:t,cursor:r,items:d.data.objects.length}),r=d.data.cursor,l=d.data.truncated,t++}return a},getOrCreateIndex:async function(){const e=`.r2-explorer/emails/index-${this.selectedFolder}.json`,l=await Q.downloadFile(this.selectedBucket,e,{}).then(a=>a.data).catch(a=>null),r=await this.createOrUpdateIndex(l),t=new Blob([JSON.stringify(r)],{type:"application/json"});try{await Q.uploadObjects(t,e,this.selectedBucket)}catch{}return r},loadNextPage:async function(e,l){const r=this.indexCursors[e];r?await this.loadIndexPage(r):(this.loadMoreAutomatically=!0,this.hasMorePages=!1),l()},fetchFiles:async function(){this.loading=!0,this.rows=[];const e=await this.getOrCreateIndex();this.indexCursors=e.cursors.reverse(),await this.loadNextPage(0,()=>{}),await this.$refs.infScroll.setIndex(0),await this.$refs.infScroll.poll(),this.loadMoreAutomatically=!1,this.loading=!1},loadIndexPage:async function(e){const l=await Q.listObjects(this.selectedBucket,`.r2-explorer/emails/${this.selectedFolder}/`,"/",e.cursor);if(l.data.objects){const r=l.data.objects.filter(t=>!t.key.endsWith("/")).map(t=>{const a=new Date(Number.parseInt(t.customMetadata.timestamp));return{...t,sender:t.customMetadata.from_name||t.customMetadata.from_address,subject:t.customMetadata.subject,has_attachments:t.customMetadata.has_attachments==="true",read:t.customMetadata.read,lastModified:ye(a),timestamp:Number.parseInt(t.customMetadata.timestamp)}});for(const t of r.reverse())this.rows.push(t)}}},unmounted(){clearInterval(this.timeInterval),this.timeInterval=null},mounted(){this.timeInterval=setInterval(()=>{this.fetchFiles()},3e5)},created(){this.fetchFiles()},setup(){return{mainStore:we()}}}),Ce={class:""},Se={class:"full-width q-my-lg"},Ne={class:"flex items-center justify-center"},Ie={class:"q-mb-md"},Pe={class:"text-left"},Be={class:"flex column"},je={class:"flex"},Fe={class:"mobile-title"},Ee={class:"mobile-last-modified mobile-subject"},Te={class:"email-subject mobile-subject"},$e={key:0,class:"full-width q-my-lg"},qe={class:"flex items-center justify-center"},Qe={key:0,class:"row justify-center q-my-md"},De={class:"row justify-center q-my-md"};function Le(e,l,r,t,a,d){return v(),x(pe,{class:""},{default:n(()=>[u("div",Ce,[m(ke,{ref:"infScroll",disable:e.loadMoreAutomatically,onLoad:e.loadNextPage,offset:250,debounce:100},{loading:n(()=>[u("div",De,[m(xe,{color:"primary",size:"40px"})])]),default:n(()=>[m(he,{ref:"table",rows:e.rows,columns:e.columns,"row-key":"name",loading:e.loading,"hide-pagination":!0,"rows-per-page-options":[0],flat:!0,"table-class":"email-list",onRowClick:e.rowClick},{loading:n(()=>[u("div",Se,[u("h6",Ne,[m(V,{color:"primary",size:"xl"})])])]),"body-cell":n(i=>[m(S,{props:i,class:k(e.rowClass(i))},{default:n(()=>[M(w(i.value),1)]),_:2},1032,["props","class"])]),header:n(()=>[u("tr",Ie,[u("th",Pe,[m(me,{color:"green",icon:"refresh",loading:e.loading,onClick:e.fetchFiles},{loading:n(()=>[m(V,{color:"white"})]),_:1},8,["loading","onClick"])])])]),"body-cell-sender":n(i=>[m(S,{props:i,class:k(["email-sender",e.rowClass(i)])},{default:n(()=>[u("div",Be,[u("div",je,[u("div",Fe,w(i.value),1),u("div",Ee,[M(w(i.row.lastModified)+" ",1),i.row.has_attachments?(v(),x(C,{key:0,name:"attachment",size:"sm",color:"black"})):T("",!0)])]),u("div",Te,w(i.row.subject),1)])]),_:2},1032,["props","class"])]),"body-cell-subject":n(i=>[m(S,{props:i,class:k(["email-subject",e.rowClass(i)])},{default:n(()=>[M(w(i.value),1)]),_:2},1032,["props","class"])]),"no-data":n(()=>[e.loading?T("",!0):(v(),U("div",$e,[u("h6",qe,[m(C,{name:"alternate_email",color:"orange",size:"lg"}),l[0]||(l[0]=M(" This bucket doesn't have Emails "))])]))]),"body-cell-has_attachments":n(i=>[m(S,{props:i,class:k(e.rowClass(i))},{default:n(()=>[i.row.has_attachments?(v(),x(C,{key:0,name:"attachment",size:"sm",color:"black"})):(v(),x(C,{key:1,size:"sm",color:"white"}))]),_:2},1032,["props","class"])]),_:1},8,["rows","columns","loading","onRowClick"]),e.hasMorePages?T("",!0):(v(),U("div",Qe,l[1]||(l[1]=[u("span",null,"No more emails to load",-1)])))]),_:1},8,["disable","onLoad"])])]),_:1})}var Ye=de(Me,[["render",Le]]);export{Ye as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.email-read{background-color:#f3f7f9;color:gray}.email-unread{font-weight:500}.email-sender{width:200px;overflow-x:hidden;white-space:nowrap;flex-shrink:0;text-overflow:ellipsis;.mobile-subject {display: none;} @media (max-width: 992px) {width: 100%; height: auto !important; .mobile-subject {display: block;} .mobile-title {font-size: 18px;} .mobile-last-modified {margin-right: 0; margin-left: auto; align-self: end;} .email-subject {font-size: 14px; max-width: 100%;}}}.email-subject{overflow-x:hidden;white-space:nowrap;flex-grow:1;text-overflow:ellipsis}.email-list table,.email-list tbody,.email-list thead{width:100%;display:block}.email-list thead{th {border: 0; &:hover {border: 0;}}}.email-list td{vertical-align:middle!important;@media (max-width: 992px){&:not(.email-sender){display:none}}}.email-list tbody tr{display:flex;width:100%;justify-content:center;//width: 100%;//display: block;&:hover{box-shadow:0 2px 2px -2px gray;z-index:10}}
|