openc3-cosmos-tool-bucketexplorer 5.16.1 → 5.16.2
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1bd79ede7b18dd425018e6c13afda727192680f238f77cbe035f36f5cb08907
|
4
|
+
data.tar.gz: 491a6bfe59161de10d1d1561a80ca4efad1a4e341f21625c137743c74a68850e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d32e4154646fdf5a25343fd469ca8c1dd7645e62608a1962e045c7983154fb89c9e7fd2820a59c7c19f6114b2f1b02d79e0dabfd99083a2b7d4a171147029f5a
|
7
|
+
data.tar.gz: '0685e6909b1b30b9c822f8bb9cdca09cca4835ced5ab28b848b9f2979314b1f9240ce5ef982ca0a2b724f03c92edf8b994fee07fab40152d791948e12d333540'
|
@@ -1,2 +1,2 @@
|
|
1
|
-
(self["webpackChunk_openc3_cosmos_tool_bucketexplorer"]=self["webpackChunk_openc3_cosmos_tool_bucketexplorer"]||[]).push([[970],{3970:(n,e,t)=>{"use strict";function l(){var n="/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",e="6329343b9ff837ee108f1cd6f67c4f2fd6d29784",t=new Function("return this")(),o="__coverage__",i={path:"/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",statementMap:{0:{start:{line:1,column:13},end:{line:9,column:1}},1:{start:{line:1,column:39},end:{line:1,column:43}},2:{start:{line:1,column:47},end:{line:1,column:59}},3:{start:{line:1,column:60},end:{line:8,column:3180}},4:{start:{line:1,column:355},end:{line:1,column:645}},5:{start:{line:1,column:459},end:{line:1,column:484}},6:{start:{line:1,column:484},end:{line:1,column:515}},7:{start:{line:1,column:857},end:{line:1,column:1147}},8:{start:{line:1,column:961},end:{line:1,column:986}},9:{start:{line:1,column:986},end:{line:1,column:1017}},10:{start:{line:1,column:1536},end:{line:1,column:1550}},11:{start:{line:8,column:134},end:{line:8,column:1155}},12:{start:{line:8,column:1103},end:{line:8,column:1115}},13:{start:{line:8,column:1208},end:{line:8,column:1315}},14:{start:{line:8,column:1357},end:{line:8,column:1449}},15:{start:{line:8,column:1493},end:{line:8,column:1886}},16:{start:{line:8,column:1625},end:{line:8,column:1659}},17:{start:{line:8,column:1817},end:{line:8,column:1849}},18:{start:{line:8,column:2011},end:{line:8,column:2035}},19:{start:{line:8,column:2575},end:{line:8,column:2597}},20:{start:{line:8,column:2804},end:{line:8,column:2832}},21:{start:{line:8,column:3037},end:{line:8,column:3061}},22:{start:{line:8,column:3061},end:{line:8,column:3105}},23:{start:{line:10,column:22},end:{line:10,column:24}}},fnMap:{0:{name:"render",decl:{start:{line:1,column:22},end:{line:1,column:28}},loc:{start:{line:1,column:30},end:{line:9,column:1}},line:1},1:{name:"(anonymous_1)",decl:{start:{line:1,column:332},end:{line:1,column:333}},loc:{start:{line:1,column:354},end:{line:1,column:646}},line:1},2:{name:"(anonymous_2)",decl:{start:{line:1,column:442},end:{line:1,column:443}},loc:{start:{line:1,column:458},end:{line:1,column:516}},line:1},3:{name:"(anonymous_3)",decl:{start:{line:1,column:834},end:{line:1,column:835}},loc:{start:{line:1,column:856},end:{line:1,column:1148}},line:1},4:{name:"(anonymous_4)",decl:{start:{line:1,column:944},end:{line:1,column:945}},loc:{start:{line:1,column:960},end:{line:1,column:1018}},line:1},5:{name:"(anonymous_5)",decl:{start:{line:1,column:1520},end:{line:1,column:1521}},loc:{start:{line:1,column:1535},end:{line:1,column:1551}},line:1},6:{name:"(anonymous_6)",decl:{start:{line:8,column:123},end:{line:8,column:124}},loc:{start:{line:8,column:133},end:{line:8,column:1156}},line:8},7:{name:"(anonymous_7)",decl:{start:{line:8,column:1087},end:{line:8,column:1088}},loc:{start:{line:8,column:1102},end:{line:8,column:1116}},line:8},8:{name:"(anonymous_8)",decl:{start:{line:8,column:1189},end:{line:8,column:1190}},loc:{start:{line:8,column:1207},end:{line:8,column:1316}},line:8},9:{name:"(anonymous_9)",decl:{start:{line:8,column:1338},end:{line:8,column:1339}},loc:{start:{line:8,column:1356},end:{line:8,column:1450}},line:8},10:{name:"(anonymous_10)",decl:{start:{line:8,column:1474},end:{line:8,column:1475}},loc:{start:{line:8,column:1492},end:{line:8,column:1887}},line:8},11:{name:"(anonymous_11)",decl:{start:{line:8,column:1608},end:{line:8,column:1609}},loc:{start:{line:8,column:1624},end:{line:8,column:1660}},line:8},12:{name:"(anonymous_12)",decl:{start:{line:8,column:1800},end:{line:8,column:1801}},loc:{start:{line:8,column:1816},end:{line:8,column:1850}},line:8},13:{name:"(anonymous_13)",decl:{start:{line:8,column:1995},end:{line:8,column:1996}},loc:{start:{line:8,column:2010},end:{line:8,column:2036}},line:8},14:{name:"(anonymous_14)",decl:{start:{line:8,column:2559},end:{line:8,column:2560}},loc:{start:{line:8,column:2574},end:{line:8,column:2598}},line:8},15:{name:"(anonymous_15)",decl:{start:{line:8,column:2787},end:{line:8,column:2788}},loc:{start:{line:8,column:2803},end:{line:8,column:2833}},line:8},16:{name:"(anonymous_16)",decl:{start:{line:8,column:3020},end:{line:8,column:3021}},loc:{start:{line:8,column:3036},end:{line:8,column:3106}},line:8}},branchMap:{0:{loc:{start:{line:1,column:664},end:{line:1,column:1162}},type:"cond-expr",locations:[{start:{line:1,column:691},end:{line:1,column:1153}},{start:{line:1,column:1154},end:{line:1,column:1162}}],line:1},1:{loc:{start:{line:8,column:769},end:{line:8,column:1150}},type:"cond-expr",locations:[{start:{line:8,column:793},end:{line:8,column:1141}},{start:{line:8,column:1142},end:{line:8,column:1150}}],line:8},2:{loc:{start:{line:8,column:1392},end:{line:8,column:1435}},type:"cond-expr",locations:[{start:{line:8,column:1404},end:{line:8,column:1430}},{start:{line:8,column:1433},end:{line:8,column:1435}}],line:8},3:{loc:{start:{line:8,column:1501},end:{line:8,column:1701}},type:"cond-expr",locations:[{start:{line:8,column:1528},end:{line:8,column:1692}},{start:{line:8,column:1693},end:{line:8,column:1701}}],line:8},4:{loc:{start:{line:8,column:1714},end:{line:8,column:1885}},type:"cond-expr",locations:[{start:{line:8,column:1741},end:{line:8,column:1876}},{start:{line:8,column:1877},end:{line:8,column:1885}}],line:8}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},b:{0:[0,0],1:[0,0],2:[0,0],3:[0,0],4:[0,0]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"6329343b9ff837ee108f1cd6f67c4f2fd6d29784"},a=t[o]||(t[o]={});a[n]&&a[n].hash===e||(a[n]=i);var s=a[n];return l=function(){return s},s}t.r(e),t.d(e,{default:()=>$}),l(),l().s[0]++;var o=function(){l().f[0]++;var n=(l().s[1]++,this),e=(l().s[2]++,n._self._c);return l().s[3]++,e("div",[e("top-bar",{attrs:{title:n.title}}),n._v(" "),e("v-card",{attrs:{width:"100%"}},[e("div",{staticStyle:{"padding-left":"5px","padding-top":"5px"}},[e("span",{staticClass:"ma-2 font-size"},[n._v("Buckets:")]),n._v(" "),n._l(n.buckets,(function(t,o){return l().f[1]++,l().s[4]++,e("v-chip",{key:o,staticClass:"ma-2",attrs:{color:"primary"},on:{click:function(e){return l().f[2]++,l().s[5]++,e.stopPropagation(),l().s[6]++,n.selectBucket(t)}}},[e("v-avatar",{attrs:{left:""}},[e("v-icon",[n._v("mdi-bucket")])],1),n._v("\n "+n._s(t)+"\n ")],1)}))],2),n._v(" "),0!==n.volumes.length?(l().b[0][0]++,e("div",{staticStyle:{"padding-left":"5px"}},[e("span",{staticClass:"ma-2 font-size"},[n._v("Volumes:")]),n._v(" "),n._l(n.volumes,(function(t,o){return l().f[3]++,l().s[7]++,e("v-chip",{key:o,staticClass:"ma-2",attrs:{color:"primary"},on:{click:function(e){return l().f[4]++,l().s[8]++,e.stopPropagation(),l().s[9]++,n.selectVolume(t)}}},[e("v-avatar",{attrs:{left:""}},[e("v-icon",[n._v("mdi-folder")])],1),n._v("\n "+n._s(t)+"\n ")],1)}))],2)):(l().b[0][1]++,n._e()),n._v(" "),e("v-card-title",{staticStyle:{"padding-top":"0px"}},[n._v("\n "+n._s(n.root)+" Files\n "),e("v-spacer"),n._v(" "),e("v-text-field",{staticClass:"search",attrs:{label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",outlined:"",dense:"","single-line":"","hide-details":""},model:{value:n.search,callback:function(e){l().f[5]++,l().s[10]++,n.search=e},expression:"search"}})],1),n._v(" "),e("v-data-table",{attrs:{headers:n.headers,items:n.files,search:n.search,"items-per-page":1e3,"footer-props":{showFirstLastPage:!0,itemsPerPageOptions:[1e3],firstIcon:"mdi-page-first",lastIcon:"mdi-page-last",prevIcon:"mdi-chevron-left",nextIcon:"mdi-chevron-right"},"calculate-widths":"","multi-sort":"",dense:""},on:{"click:row":n.fileClick},scopedSlots:n._u([{key:"top",fn:function(){return l().f[6]++,l().s[11]++,[e("v-row",{staticClass:"ma-0",staticStyle:{"background-color":"var(--color-background-surface-header)"}},[e("v-btn",{attrs:{icon:""}},[e("v-icon",{on:{click:n.backArrow}},[n._v("mdi-chevron-left-box-outline")])],1),n._v(" "),e("span",{staticClass:".text-body-1 ma-2 font-size",attrs:{"data-test":"file-path"}},[n._v("/"+n._s(n.path))]),n._v(" "),e("v-spacer"),n._v(" "),e("div",{staticClass:"pa-1 font-size"},[n._v("\n Folder Size: "+n._s(n.folderTotal)+"\n "),e("span",{staticClass:"small-font-size"},[n._v("(not recursive)")])]),n._v(" "),e("v-spacer"),n._v(" "),"bucket"===n.mode?(l().b[1][0]++,e("div",{staticStyle:{display:"flex"}},[e("span",{staticClass:"pa-1 font-size"},[n._v("Upload File")]),n._v(" "),e("v-file-input",{staticClass:"file-input",attrs:{"hide-input":"","hide-details":"","prepend-icon":"mdi-upload","data-test":"upload-file"},model:{value:n.file,callback:function(e){l().f[7]++,l().s[12]++,n.file=e},expression:"file"}})],1)):(l().b[1][1]++,n._e())],1)]},proxy:!0},{key:"item.name",fn:function({item:t}){return l().f[8]++,l().s[13]++,[e("v-icon",{staticClass:"mr-2"},[n._v(n._s(t.icon))]),n._v(n._s(t.name)+"\n ")]}},{key:"item.size",fn:function({item:e}){return l().f[9]++,l().s[14]++,[n._v("\n "+n._s(e.size?(l().b[2][0]++,e.size.toLocaleString()):(l().b[2][1]++,""))+"\n ")]}},{key:"item.action",fn:function({item:t}){return l().f[10]++,l().s[15]++,["mdi-file"===t.icon?(l().b[3][0]++,e("v-icon",{staticClass:"mr-3",attrs:{"data-test":"download-file"},on:{click:function(e){return l().f[11]++,l().s[16]++,n.downloadFile(t.name)}}},[n._v("mdi-download-box")])):(l().b[3][1]++,n._e()),n._v(" "),"mdi-file"===t.icon?(l().b[4][0]++,e("v-icon",{attrs:{"data-test":"delete-file"},on:{click:function(e){return l().f[12]++,l().s[17]++,n.deleteFile(t.name)}}},[n._v("mdi-delete")])):(l().b[4][1]++,n._e())]}}])})],1),n._v(" "),e("v-dialog",{attrs:{"max-width":"600"},model:{value:n.uploadPathDialog,callback:function(e){l().f[13]++,l().s[18]++,n.uploadPathDialog=e},expression:"uploadPathDialog"}},[e("v-card",[e("v-system-bar",[e("v-spacer"),n._v(" "),e("span",[n._v(" Upload Path ")]),n._v(" "),e("v-spacer")],1),n._v(" "),e("v-card-text",[e("div",{staticClass:"mx-1"},[e("v-row",{staticClass:"my-2"},[e("span",[n._v("This file path can be modified. New directories will be\n automatically created.")]),n._v(" "),e("v-text-field",{attrs:{"hide-details":"",label:"File Path","data-test":"upload-file-path"},model:{value:n.uploadFilePath,callback:function(e){l().f[14]++,l().s[19]++,n.uploadFilePath=e},expression:"uploadFilePath"}})],1),n._v(" "),e("v-row",[e("v-spacer"),n._v(" "),e("v-btn",{staticClass:"mx-2",attrs:{outlined:"","data-test":"upload-file-cancel-btn"},on:{click:function(e){l().f[15]++,l().s[20]++,n.uploadPathDialog=!1}}},[n._v("\n Cancel\n ")]),n._v(" "),e("v-btn",{staticClass:"mx-2",attrs:{color:"primary",type:"submit","data-test":"upload-file-submit-btn"},on:{click:function(e){return l().f[16]++,l().s[21]++,e.preventDefault(),l().s[22]++,n.uploadFile.apply(null,arguments)}}},[n._v("\n Upload\n ")])],1)],1)])],1)],1)],1)},i=(l().s[23]++,[]),a=(t(9375),t(8605),t(2482),t(7067),t(4147),t(2682),t(785),t(8357),t(6196),t(821),t(6554),t(8472),t(7404),t(5803),t(3912),t(7010),t(7182),t(3165),t(4541),t(4397),t(1412),t(1883),t(7905),function(){var n=this,e=n._self._c;return e("mounting-portal",{attrs:{"mount-to":"#openc3-menu",append:""}},[e("v-row",{attrs:{"no-gutters":""}},[e("v-col",{attrs:{"align-self":"end"}},[e("span",{staticClass:"app-title mr-2"},[n._v(n._s(n.title))])])],1),n._v(" "),e("v-row",{staticClass:"flex-nowrap",attrs:{dense:""}},n._l(n.menus,(function(t,l){return e("v-menu",{key:l,ref:"topmenu",refInFor:!0,attrs:{"offset-y":""},scopedSlots:n._u([{key:"activator",fn:function({on:l,attrs:o}){return[e("v-btn",n._g(n._b({staticClass:"mx-1 menu-button",attrs:{outlined:"","data-test":n.formatDT(`${n.title} ${t.label}`)}},"v-btn",o,!1),l),[e("span",{domProps:{textContent:n._s(t.label)}}),n._v(" "),e("v-icon",{staticClass:"myicon",attrs:{right:""}},[n._v(" mdi-menu-down ")])],1)]}}],null,!0)},[n._v(" "),e("v-list",[e("v-radio-group",{staticClass:"ma-0 pa-0",attrs:{value:t.radioGroup,"hide-details":"",dense:""}},[n._l(t.items,(function(l,o){return[l.divider?e("v-divider",{key:o}):l.subMenu&&l.subMenu.length>0?e("div",{key:o},[e("v-menu",{key:n.k,attrs:{"open-on-hover":"","offset-x":"",bottom:""},scopedSlots:n._u([{key:"activator",fn:function({on:t,attrs:i}){return[e("v-list-item",n._g(n._b({key:o,attrs:{disabled:l.disabled}},"v-list-item",i,!1),t),[l.icon?e("v-list-item-icon",[e("v-icon",{attrs:{disabled:l.disabled}},[n._v(n._s(l.icon))])],1):n._e(),n._v(" "),l.radio||l.checkbox?n._e():e("v-list-item-title",{style:"cursor: pointer;"+(l.disabled?"opacity: 0.2":"")},[n._v(n._s(l.label)+"\n ")]),n._v(" "),e("v-icon",[n._v(" mdi-chevron-right ")])],1)]}}],null,!0)},[n._v(" "),e("v-list",n._l(l.subMenu,(function(t,l){return e("v-list-item",{key:l,on:{click:function(e){return n.subMenuClick(t)}}},[t.icon?e("v-list-item-icon",[e("v-icon",[n._v(n._s(t.icon))])],1):n._e(),n._v(" "),e("v-list-item-title",[n._v(n._s(t.label))])],1)})),1)],1)],1):e("v-list-item",{key:o,attrs:{disabled:l.disabled,"data-test":n.formatDT(`${n.title} ${t.label} ${l.label}`)},on:{click:function(n){return l.command(l)}}},[l.radio?e("v-list-item-action",[e("v-radio",{attrs:{color:"secondary",label:l.label,value:l.label}})],1):n._e(),n._v(" "),l.checkbox?e("v-list-item-action",[e("v-checkbox",{attrs:{color:"secondary",label:l.label},model:{value:l.checked,callback:function(e){n.$set(l,"checked",e)},expression:"option.checked"}})],1):n._e(),n._v(" "),l.icon?e("v-list-item-icon",[e("v-icon",{attrs:{disabled:l.disabled}},[n._v(n._s(l.icon))])],1):n._e(),n._v(" "),l.radio||l.checkbox?n._e():e("v-list-item-title",{style:"cursor: pointer;"+(l.disabled?"opacity: 0.2":"")},[n._v(n._s(l.label))])],1)]}))],2)],1)],1)})),1)],1)}),s=[];t(4293),t(8715);const c={props:{menus:{type:Array,default:function(){return[]}},title:{type:String,default:""}},methods:{formatDT:function(n){return n.replaceAll(" ","-").toLowerCase()},subMenuClick(n){n.command(n),this.$refs.topmenu[0].isActive=!1}},mounted(){document.title=this.title}},r=c;t(1e3);var u=t(2401),d=(0,u.A)(r,a,s,!1,null,"57d4fdd2",null);const m=d.exports;var A=t(4625),p=t(1649);const h=new p["default"],f=A.A.create({baseURL:location.origin,timeout:6e4,params:{}});f.interceptors.response.use((n=>n),(n=>{if(n.response){var e,t,l,o,i;if(401===n.response.status&&OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity,!0).then((function(n){n&&OpenC3Auth.setTokens()})),n.response.config.headers["Ignore-Errors"]&&n.response.config.headers["Ignore-Errors"].includes(n.response.status.toString()))return Promise.reject(n);let s=`HTTP ${n.response.status} - `;if(null!==(e=n.response)&&void 0!==e&&e.statusText&&(s+=`${n.response.statusText} `),null!==(t=n.response)&&void 0!==t&&null!==(t=t.config)&&void 0!==t&&t.data&&(s+=`${n.response.config.data} `),null!==(l=n.response)&&void 0!==l&&null!==(l=l.data)&&void 0!==l&&l.message)s+=`${n.response.data.message}`;else if(null!==(o=n.response)&&void 0!==o&&null!==(o=o.data)&&void 0!==o&&o.exception)s+=`${n.response.data.exception}`;else if(null!==(i=n.response)&&void 0!==i&&null!==(i=i.data)&&void 0!==i&&null!==(i=i.error)&&void 0!==i&&i.message)n.response.data.error.class&&(s+=`${n.response.data.error.class} `),s+=`${n.response.data.error.message}`;else{var a;s+=`${null===(a=n.response)||void 0===a?void 0:a.data}`}throw h.$notify&&h.$notify.serious({title:"Network error",body:s}),n}throw n}));const v=f,C=async function(n,e,{data:t,params:l={},headers:o,noAuth:i=!1,noScope:a=!1}={}){if(!i){try{let n=await OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity);n&&OpenC3Auth.setTokens()}catch(s){OpenC3Auth.login()}o["Authorization"]=localStorage.openc3Token}return a||l["scope"]||(l["scope"]=window.openc3Scope),v({method:n,url:e,data:t,params:l,headers:o})},b={Accept:"application/json"},_={...b,"Content-Type":"application/json"},g={get:function(n,{params:e,headers:t=b,noScope:l,noAuth:o}={}){return C("get",n,{params:e,headers:t,noScope:l,noAuth:o})},put:function(n,{data:e,params:t,headers:l=_,noScope:o,noAuth:i}={}){return C("put",n,{data:e,params:t,headers:l,noScope:o,noAuth:i})},post:function(n,{data:e,params:t,headers:l=_,noScope:o,noAuth:i}={}){return C("post",n,{data:e,params:t,headers:l,noScope:o,noAuth:i})},delete:function(n,{params:e,headers:t=b,noScope:l,noAuth:o}={}){return C("delete",n,{params:e,headers:t,noScope:l,noAuth:o})}};function y(){var n="/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",e="f499b2f27c44367f7e64f8df7e0877cd56593464",t=new Function("return this")(),l="__coverage__",o={path:"/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",statementMap:{0:{start:{line:11,column:4},end:{line:28,column:5}},1:{start:{line:32,column:6},end:{line:34,column:25}},2:{start:{line:33,column:26},end:{line:33,column:51}},3:{start:{line:38,column:4},end:{line:40,column:6}},4:{start:{line:39,column:6},end:{line:39,column:34}},5:{start:{line:41,column:4},end:{line:43,column:6}},6:{start:{line:42,column:6},end:{line:42,column:34}},7:{start:{line:44,column:4},end:{line:57,column:5}},8:{start:{line:45,column:18},end:{line:45,column:52}},9:{start:{line:46,column:6},end:{line:55,column:7}},10:{start:{line:47,column:8},end:{line:47,column:28}},11:{start:{line:49,column:8},end:{line:49,column:34}},12:{start:{line:50,column:8},end:{line:50,column:44}},13:{start:{line:52,column:8},end:{line:52,column:28}},14:{start:{line:53,column:8},end:{line:53,column:28}},15:{start:{line:54,column:8},end:{line:54,column:44}},16:{start:{line:56,column:6},end:{line:56,column:24}},17:{start:{line:62,column:6},end:{line:62,column:36}},18:{start:{line:62,column:30},end:{line:62,column:36}},19:{start:{line:63,column:6},end:{line:63,column:59}},20:{start:{line:64,column:6},end:{line:64,column:34}},21:{start:{line:69,column:6},end:{line:74,column:8}},22:{start:{line:75,column:6},end:{line:75,column:24}},23:{start:{line:78,column:6},end:{line:78,column:38}},24:{start:{line:78,column:32},end:{line:78,column:38}},25:{start:{line:79,column:6},end:{line:79,column:26}},26:{start:{line:80,column:6},end:{line:80,column:24}},27:{start:{line:81,column:6},end:{line:81,column:20}},28:{start:{line:82,column:6},end:{line:82,column:19}},29:{start:{line:85,column:6},end:{line:85,column:38}},30:{start:{line:85,column:32},end:{line:85,column:38}},31:{start:{line:86,column:6},end:{line:86,column:26}},32:{start:{line:87,column:6},end:{line:87,column:24}},33:{start:{line:88,column:6},end:{line:88,column:20}},34:{start:{line:89,column:6},end:{line:89,column:19}},35:{start:{line:93,column:6},end:{line:93,column:34}},36:{start:{line:93,column:28},end:{line:93,column:34}},37:{start:{line:94,column:18},end:{line:94,column:38}},38:{start:{line:95,column:6},end:{line:95,column:60}},39:{start:{line:98,column:6},end:{line:100,column:7}},40:{start:{line:99,column:8},end:{line:99,column:24}},41:{start:{line:101,column:6},end:{line:101,column:19}},42:{start:{line:104,column:6},end:{line:112,column:7}},43:{start:{line:105,column:8},end:{line:110,column:9}},44:{start:{line:107,column:10},end:{line:107,column:32}},45:{start:{line:109,column:10},end:{line:109,column:39}},46:{start:{line:111,column:8},end:{line:111,column:21}},47:{start:{line:115,column:17},end:{line:115,column:40}},48:{start:{line:116,column:16},end:{line:116,column:26}},49:{start:{line:117,column:6},end:{line:120,column:7}},50:{start:{line:118,column:8},end:{line:118,column:29}},51:{start:{line:119,column:8},end:{line:119,column:28}},52:{start:{line:121,column:6},end:{line:153,column:10}},53:{start:{line:127,column:21},end:{line:127,column:25}},54:{start:{line:128,column:10},end:{line:141,column:11}},55:{start:{line:129,column:12},end:{line:129,column:36}},56:{start:{line:132,column:32},end:{line:132,column:67}},57:{start:{line:134,column:31},end:{line:134,column:65}},58:{start:{line:136,column:12},end:{line:138,column:13}},59:{start:{line:136,column:25},end:{line:136,column:26}},60:{start:{line:137,column:14},end:{line:137,column:55}},61:{start:{line:139,column:25},end:{line:139,column:47}},62:{start:{line:140,column:12},end:{line:140,column:44}},63:{start:{line:143,column:23},end:{line:143,column:50}},64:{start:{line:144,column:10},end:{line:144,column:26}},65:{start:{line:145,column:10},end:{line:145,column:49}},66:{start:{line:146,column:10},end:{line:146,column:22}},67:{start:{line:150,column:10},end:{line:152,column:12}},68:{start:{line:156,column:6},end:{line:156,column:35}},69:{start:{line:158,column:6},end:{line:160,column:7}},70:{start:{line:159,column:8},end:{line:159,column:58}},71:{start:{line:163,column:41},end:{line:167,column:7}},72:{start:{line:170,column:23},end:{line:173,column:8}},73:{start:{line:174,column:6},end:{line:174,column:22}},74:{start:{line:175,column:6},end:{line:175,column:77}},75:{start:{line:176,column:6},end:{line:176,column:24}},76:{start:{line:179,column:17},end:{line:179,column:40}},77:{start:{line:180,column:6},end:{line:182,column:7}},78:{start:{line:181,column:8},end:{line:181,column:28}},79:{start:{line:183,column:6},end:{line:199,column:10}},80:{start:{line:189,column:10},end:{line:195,column:11}},81:{start:{line:198,column:10},end:{line:198,column:28}},82:{start:{line:202,column:17},end:{line:202,column:40}},83:{start:{line:203,column:6},end:{line:205,column:7}},84:{start:{line:204,column:8},end:{line:204,column:28}},85:{start:{line:206,column:6},end:{line:237,column:10}},86:{start:{line:212,column:10},end:{line:214,column:12}},87:{start:{line:213,column:12},end:{line:213,column:55}},88:{start:{line:215,column:10},end:{line:224,column:11}},89:{start:{line:217,column:14},end:{line:222,column:15}},90:{start:{line:227,column:10},end:{line:227,column:25}},91:{start:{line:228,column:10},end:{line:236,column:11}},92:{start:{line:229,column:12},end:{line:231,column:14}},93:{start:{line:233,column:12},end:{line:235,column:14}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:10,column:2},end:{line:10,column:3}},loc:{start:{line:10,column:9},end:{line:29,column:3}},line:10},1:{name:"(anonymous_1)",decl:{start:{line:31,column:4},end:{line:31,column:5}},loc:{start:{line:31,column:18},end:{line:35,column:5}},line:31},2:{name:"(anonymous_2)",decl:{start:{line:33,column:16},end:{line:33,column:17}},loc:{start:{line:33,column:26},end:{line:33,column:51}},line:33},3:{name:"(anonymous_3)",decl:{start:{line:37,column:2},end:{line:37,column:3}},loc:{start:{line:37,column:12},end:{line:58,column:3}},line:37},4:{name:"(anonymous_4)",decl:{start:{line:38,column:48},end:{line:38,column:49}},loc:{start:{line:38,column:62},end:{line:40,column:5}},line:38},5:{name:"(anonymous_5)",decl:{start:{line:41,column:48},end:{line:41,column:49}},loc:{start:{line:41,column:62},end:{line:43,column:5}},line:41},6:{name:"(anonymous_6)",decl:{start:{line:61,column:10},end:{line:61,column:11}},loc:{start:{line:61,column:28},end:{line:65,column:5}},line:61},7:{name:"(anonymous_7)",decl:{start:{line:68,column:4},end:{line:68,column:5}},loc:{start:{line:68,column:13},end:{line:76,column:5}},line:68},8:{name:"(anonymous_8)",decl:{start:{line:77,column:4},end:{line:77,column:5}},loc:{start:{line:77,column:25},end:{line:83,column:5}},line:77},9:{name:"(anonymous_9)",decl:{start:{line:84,column:4},end:{line:84,column:5}},loc:{start:{line:84,column:25},end:{line:90,column:5}},line:84},10:{name:"(anonymous_10)",decl:{start:{line:91,column:4},end:{line:91,column:5}},loc:{start:{line:91,column:16},end:{line:102,column:5}},line:91},11:{name:"(anonymous_11)",decl:{start:{line:103,column:4},end:{line:103,column:5}},loc:{start:{line:103,column:21},end:{line:113,column:5}},line:103},12:{name:"(anonymous_12)",decl:{start:{line:114,column:4},end:{line:114,column:5}},loc:{start:{line:114,column:27},end:{line:154,column:5}},line:114},13:{name:"(anonymous_13)",decl:{start:{line:126,column:14},end:{line:126,column:15}},loc:{start:{line:126,column:28},end:{line:147,column:9}},line:126},14:{name:"(anonymous_14)",decl:{start:{line:149,column:15},end:{line:149,column:16}},loc:{start:{line:149,column:29},end:{line:153,column:9}},line:149},15:{name:"(anonymous_15)",decl:{start:{line:155,column:4},end:{line:155,column:5}},loc:{start:{line:155,column:23},end:{line:177,column:5}},line:155},16:{name:"(anonymous_16)",decl:{start:{line:178,column:4},end:{line:178,column:5}},loc:{start:{line:178,column:25},end:{line:200,column:5}},line:178},17:{name:"(anonymous_17)",decl:{start:{line:188,column:14},end:{line:188,column:15}},loc:{start:{line:188,column:26},end:{line:196,column:9}},line:188},18:{name:"(anonymous_18)",decl:{start:{line:197,column:14},end:{line:197,column:15}},loc:{start:{line:197,column:28},end:{line:199,column:9}},line:197},19:{name:"(anonymous_19)",decl:{start:{line:201,column:4},end:{line:201,column:5}},loc:{start:{line:201,column:18},end:{line:238,column:5}},line:201},20:{name:"(anonymous_20)",decl:{start:{line:211,column:14},end:{line:211,column:15}},loc:{start:{line:211,column:28},end:{line:225,column:9}},line:211},21:{name:"(anonymous_21)",decl:{start:{line:212,column:44},end:{line:212,column:45}},loc:{start:{line:212,column:56},end:{line:214,column:11}},line:212},22:{name:"(anonymous_22)",decl:{start:{line:216,column:33},end:{line:216,column:34}},loc:{start:{line:216,column:43},end:{line:223,column:13}},line:216},23:{name:"(anonymous_23)",decl:{start:{line:226,column:15},end:{line:226,column:16}},loc:{start:{line:226,column:29},end:{line:237,column:9}},line:226}},branchMap:{0:{loc:{start:{line:33,column:31},end:{line:33,column:50}},type:"cond-expr",locations:[{start:{line:33,column:40},end:{line:33,column:46}},{start:{line:33,column:49},end:{line:33,column:50}}],line:33},1:{loc:{start:{line:44,column:4},end:{line:57,column:5}},type:"if",locations:[{start:{line:44,column:4},end:{line:57,column:5}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:44},2:{loc:{start:{line:46,column:6},end:{line:55,column:7}},type:"if",locations:[{start:{line:46,column:6},end:{line:55,column:7}},{start:{line:51,column:13},end:{line:55,column:7}}],line:46},3:{loc:{start:{line:62,column:6},end:{line:62,column:36}},type:"if",locations:[{start:{line:62,column:6},end:{line:62,column:36}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:62},4:{loc:{start:{line:78,column:6},end:{line:78,column:38}},type:"if",locations:[{start:{line:78,column:6},end:{line:78,column:38}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:78},5:{loc:{start:{line:85,column:6},end:{line:85,column:38}},type:"if",locations:[{start:{line:85,column:6},end:{line:85,column:38}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:85},6:{loc:{start:{line:93,column:6},end:{line:93,column:34}},type:"if",locations:[{start:{line:93,column:6},end:{line:93,column:34}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:93},7:{loc:{start:{line:98,column:6},end:{line:100,column:7}},type:"if",locations:[{start:{line:98,column:6},end:{line:100,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:98},8:{loc:{start:{line:104,column:6},end:{line:112,column:7}},type:"if",locations:[{start:{line:104,column:6},end:{line:112,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:104},9:{loc:{start:{line:105,column:8},end:{line:110,column:9}},type:"if",locations:[{start:{line:105,column:8},end:{line:110,column:9}},{start:{line:108,column:15},end:{line:110,column:9}}],line:105},10:{loc:{start:{line:117,column:6},end:{line:120,column:7}},type:"if",locations:[{start:{line:117,column:6},end:{line:120,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:117},11:{loc:{start:{line:128,column:10},end:{line:141,column:11}},type:"if",locations:[{start:{line:128,column:10},end:{line:141,column:11}},{start:{line:130,column:17},end:{line:141,column:11}}],line:128},12:{loc:{start:{line:158,column:6},end:{line:160,column:7}},type:"if",locations:[{start:{line:158,column:6},end:{line:160,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:158},13:{loc:{start:{line:180,column:6},end:{line:182,column:7}},type:"if",locations:[{start:{line:180,column:6},end:{line:182,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:180},14:{loc:{start:{line:203,column:6},end:{line:205,column:7}},type:"if",locations:[{start:{line:203,column:6},end:{line:205,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:203},15:{loc:{start:{line:228,column:10},end:{line:236,column:11}},type:"if",locations:[{start:{line:228,column:10},end:{line:236,column:11}},{start:{line:232,column:17},end:{line:236,column:11}}],line:228}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0,24:0,25:0,26:0,27:0,28:0,29:0,30:0,31:0,32:0,33:0,34:0,35:0,36:0,37:0,38:0,39:0,40:0,41:0,42:0,43:0,44:0,45:0,46:0,47:0,48:0,49:0,50:0,51:0,52:0,53:0,54:0,55:0,56:0,57:0,58:0,59:0,60:0,61:0,62:0,63:0,64:0,65:0,66:0,67:0,68:0,69:0,70:0,71:0,72:0,73:0,74:0,75:0,76:0,77:0,78:0,79:0,80:0,81:0,82:0,83:0,84:0,85:0,86:0,87:0,88:0,89:0,90:0,91:0,92:0,93:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0},b:{0:[0,0],1:[0,0],2:[0,0],3:[0,0],4:[0,0],5:[0,0],6:[0,0],7:[0,0],8:[0,0],9:[0,0],10:[0,0],11:[0,0],12:[0,0],13:[0,0],14:[0,0],15:[0,0]},inputSourceMap:{version:3,sources:["BucketExplorer.vue"],names:[],mappings:";AA6LA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"BucketExplorer.vue",sourceRoot:"src/tools/BucketExplorer",sourcesContent:['\x3c!--\n# Copyright 2023 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n--\x3e\n\n<template>\n <div>\n <top-bar :title="title" />\n <v-card width="100%">\n <div style="padding-left: 5px; padding-top: 5px">\n <span class="ma-2 font-size">Buckets:</span>\n <v-chip\n v-for="(bucket, index) in buckets"\n :key="index"\n color="primary"\n class="ma-2"\n @click.stop="selectBucket(bucket)"\n >\n <v-avatar left>\n <v-icon>mdi-bucket</v-icon>\n </v-avatar>\n {{ bucket }}\n </v-chip>\n </div>\n <div style="padding-left: 5px" v-if="volumes.length !== 0">\n <span class="ma-2 font-size">Volumes:</span>\n <v-chip\n v-for="(volume, index) in volumes"\n :key="index"\n color="primary"\n class="ma-2"\n @click.stop="selectVolume(volume)"\n >\n <v-avatar left>\n <v-icon>mdi-folder</v-icon>\n </v-avatar>\n {{ volume }}\n </v-chip>\n </div>\n <v-card-title style="padding-top: 0px">\n {{ root }} Files\n <v-spacer />\n <v-text-field\n v-model="search"\n label="Search"\n prepend-inner-icon="mdi-magnify"\n clearable\n outlined\n dense\n single-line\n hide-details\n class="search"\n />\n </v-card-title>\n <v-data-table\n :headers="headers"\n :items="files"\n :search="search"\n :items-per-page="1000"\n :footer-props="{\n showFirstLastPage: true,\n itemsPerPageOptions: [1000],\n firstIcon: \'mdi-page-first\',\n lastIcon: \'mdi-page-last\',\n prevIcon: \'mdi-chevron-left\',\n nextIcon: \'mdi-chevron-right\',\n }"\n @click:row="fileClick"\n calculate-widths\n multi-sort\n dense\n >\n <template v-slot:top>\n <v-row\n class="ma-0"\n style="background-color: var(--color-background-surface-header)"\n >\n <v-btn icon>\n <v-icon @click="backArrow">mdi-chevron-left-box-outline</v-icon>\n </v-btn>\n <span class=".text-body-1 ma-2 font-size" data-test="file-path"\n >/{{ path }}</span\n >\n <v-spacer />\n <div class="pa-1 font-size">\n Folder Size: {{ folderTotal }}\n <span class="small-font-size">(not recursive)</span>\n </div>\n\n <v-spacer />\n <div style="display: flex" v-if="mode === \'bucket\'">\n <span class="pa-1 font-size">Upload File</span>\n <v-file-input\n v-model="file"\n hide-input\n hide-details\n class="file-input"\n prepend-icon="mdi-upload"\n data-test="upload-file"\n />\n </div>\n </v-row>\n </template>\n <template v-slot:item.name="{ item }">\n <v-icon class="mr-2">{{ item.icon }}</v-icon\n >{{ item.name }}\n </template>\n <template v-slot:item.size="{ item }">\n {{ item.size ? item.size.toLocaleString() : \'\' }}\n </template>\n <template v-slot:item.action="{ item }">\n <v-icon\n class="mr-3"\n v-if="item.icon === \'mdi-file\'"\n @click="downloadFile(item.name)"\n data-test="download-file"\n >mdi-download-box</v-icon\n >\n <v-icon\n v-if="item.icon === \'mdi-file\'"\n @click="deleteFile(item.name)"\n data-test="delete-file"\n >mdi-delete</v-icon\n >\n </template>\n </v-data-table>\n </v-card>\n <v-dialog v-model="uploadPathDialog" max-width="600">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Upload Path </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class="mx-1">\n <v-row class="my-2">\n <span\n >This file path can be modified. New directories will be\n automatically created.</span\n >\n <v-text-field\n v-model="uploadFilePath"\n hide-details\n label="File Path"\n data-test="upload-file-path"\n />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click="uploadPathDialog = false"\n outlined\n class="mx-2"\n data-test="upload-file-cancel-btn"\n >\n Cancel\n </v-btn>\n <v-btn\n @click.prevent="uploadFile"\n class="mx-2"\n color="primary"\n type="submit"\n data-test="upload-file-submit-btn"\n >\n Upload\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport TopBar from \'@openc3/tool-common/src/components/TopBar\'\nimport Api from \'@openc3/tool-common/src/services/api\'\nimport axios from \'axios\'\n\nexport default {\n components: {\n TopBar,\n },\n data() {\n return {\n title: \'Bucket Explorer\',\n search: \'\',\n root: \'\',\n mode: \'bucket\',\n buckets: [],\n volumes: [],\n uploadPathDialog: false,\n path: \'\',\n file: null,\n files: [],\n headers: [\n { text: \'Name\', value: \'name\' },\n { text: \'Size\', value: \'size\' },\n { text: \'Modified Date\', value: \'modified\' },\n { text: \'Action\', value: \'action\' },\n ],\n }\n },\n computed: {\n folderTotal() {\n return this.files\n .reduce((a, b) => a + (b.size ? b.size : 0), 0)\n .toLocaleString()\n },\n },\n created() {\n Api.get(\'/openc3-api/storage/buckets\').then((response) => {\n this.buckets = response.data\n })\n Api.get(\'/openc3-api/storage/volumes\').then((response) => {\n this.volumes = response.data\n })\n if (this.$route.params.path) {\n let parts = this.$route.params.path.split(\'/\')\n if (parts[0] === \'\') {\n this.mode = \'volume\'\n // Prepend the slash to note this is a volume not a bucket\n this.root = `/${parts[1]}`\n this.path = parts.slice(2).join(\'/\')\n } else {\n this.mode = \'bucket\'\n this.root = parts[0]\n this.path = parts.slice(1).join(\'/\')\n }\n this.updateFiles()\n }\n },\n watch: {\n // This is the upload function that is activated when the file gets set\n file: async function () {\n if (this.file === null) return\n this.uploadFilePath = `${this.path}${this.file.name}`\n this.uploadPathDialog = true\n },\n },\n methods: {\n update() {\n this.$router.push({\n name: \'Bucket Explorer\',\n params: {\n path: `${this.root}/${this.path}`,\n },\n })\n this.updateFiles()\n },\n selectBucket(bucket) {\n if (this.root === bucket) return\n this.mode = \'bucket\'\n this.root = bucket\n this.path = \'\'\n this.update()\n },\n selectVolume(volume) {\n if (this.root === volume) return\n this.mode = \'volume\'\n this.root = volume\n this.path = \'\'\n this.update()\n },\n backArrow() {\n // Nothing to do if we\'re at the root so return\n if (this.path === \'\') return\n let parts = this.path.split(\'/\')\n this.path = parts.slice(0, parts.length - 2).join(\'/\')\n // Only append the last slash if we\'re not at the root\n // The root is 2 because it\'s the path before clicking back\n if (parts.length > 2) {\n this.path += \'/\'\n }\n this.update()\n },\n fileClick(event) {\n if (event.icon === \'mdi-folder\') {\n if (this.root === \'\') {\n // initial root click\n this.root = event.name\n } else {\n this.path += `${event.name}/`\n }\n this.update()\n }\n },\n downloadFile(filename) {\n let root = this.root.toUpperCase()\n let api = \'download\'\n if (this.mode === \'volume\') {\n api = \'download_file\'\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/${api}/${encodeURIComponent(\n this.path,\n )}${filename}?${this.mode}=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n .then((response) => {\n let href = null\n if (this.mode === \'bucket\') {\n href = response.data.url\n } else {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array])\n href = URL.createObjectURL(blob)\n }\n // Make a link and then \'click\' on it to start the download\n const link = document.createElement(\'a\')\n link.href = href\n link.setAttribute(\'download\', filename)\n link.click()\n })\n\n .catch((response) => {\n this.$notify.caution({\n title: `Unable to download file ${this.path}${filename} from bucket ${this.root}`,\n })\n })\n },\n async uploadFile() {\n this.uploadPathDialog = false\n // Ensure they didn\'t slap a \'/\' at the beginning\n if (this.uploadFilePath.startsWith(\'/\')) {\n this.uploadFilePath = this.uploadFilePath.slice(1)\n }\n\n // Reassign data to presignedRequest for readability\n const { data: presignedRequest } = await Api.get(\n `/openc3-api/storage/upload/${encodeURIComponent(\n this.uploadFilePath,\n )}?bucket=OPENC3_${this.root.toUpperCase()}_BUCKET`,\n )\n // This pushes the file into storage by using the fields in the presignedRequest\n // See storage_controller.rb get_presigned_request()\n const response = await axios({\n ...presignedRequest,\n data: this.file,\n })\n this.file = null\n this.path = this.uploadFilePath.split(\'/\').slice(0, -1).join(\'/\') + \'/\'\n this.updateFiles()\n },\n deleteFile(filename) {\n let root = this.root.toUpperCase()\n if (this.mode === \'volume\') {\n root = root.slice(1)\n }\n this.$dialog\n .confirm(`Are you sure you want to delete: ${filename}`, {\n okText: \'Delete\',\n cancelText: \'Cancel\',\n })\n .then((dialog) => {\n return Api.delete(\n `/openc3-api/storage/delete/${encodeURIComponent(\n this.path,\n )}${filename}?${\n this.mode\n }=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n })\n .then((response) => {\n this.updateFiles()\n })\n },\n updateFiles() {\n let root = this.root.toUpperCase()\n if (this.mode === \'volume\') {\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/files/OPENC3_${root}_${this.mode.toUpperCase()}/${\n this.path\n }`,\n )\n .then((response) => {\n this.files = response.data[0].map((bucket) => {\n return { name: bucket, icon: \'mdi-folder\' }\n })\n this.files = this.files.concat(\n response.data[1].map((item) => {\n return {\n name: item.name,\n icon: \'mdi-file\',\n size: item.size,\n modified: item.modified,\n }\n }),\n )\n })\n .catch((response) => {\n this.files = []\n if (response.data.message) {\n this.$notify.caution({\n title: response.data.message,\n })\n } else {\n this.$notify.caution({\n title: response.message,\n })\n }\n })\n },\n },\n}\n<\/script>\n\n<style scoped>\n.font-size {\n font-size: 1rem;\n}\n.small-font-size {\n font-size: 0.8rem;\n}\n.file-input {\n padding-top: 0px;\n margin-top: 0px;\n}\n</style>\n']},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"f499b2f27c44367f7e64f8df7e0877cd56593464"},i=t[l]||(t[l]={});i[n]&&i[n].hash===e||(i[n]=o);var a=i[n];return y=function(){return a},a}y();const k={components:{TopBar:m},data(){return y().f[0]++,y().s[0]++,{title:"Bucket Explorer",search:"",root:"",mode:"bucket",buckets:[],volumes:[],uploadPathDialog:!1,path:"",file:null,files:[],headers:[{text:"Name",value:"name"},{text:"Size",value:"size"},{text:"Modified Date",value:"modified"},{text:"Action",value:"action"}]}},computed:{folderTotal(){return y().f[1]++,y().s[1]++,this.files.reduce(((n,e)=>(y().f[2]++,y().s[2]++,n+(e.size?(y().b[0][0]++,e.size):(y().b[0][1]++,0)))),0).toLocaleString()}},created(){if(y().f[3]++,y().s[3]++,g.get("/openc3-api/storage/buckets").then((n=>{y().f[4]++,y().s[4]++,this.buckets=n.data})),y().s[5]++,g.get("/openc3-api/storage/volumes").then((n=>{y().f[5]++,y().s[6]++,this.volumes=n.data})),y().s[7]++,this.$route.params.path){y().b[1][0]++;let n=(y().s[8]++,this.$route.params.path.split("/"));y().s[9]++,""===n[0]?(y().b[2][0]++,y().s[10]++,this.mode="volume",y().s[11]++,this.root=`/${n[1]}`,y().s[12]++,this.path=n.slice(2).join("/")):(y().b[2][1]++,y().s[13]++,this.mode="bucket",y().s[14]++,this.root=n[0],y().s[15]++,this.path=n.slice(1).join("/")),y().s[16]++,this.updateFiles()}else y().b[1][1]++},watch:{file:async function(){if(y().f[6]++,y().s[17]++,null===this.file)return y().b[3][0]++,void y().s[18]++;y().b[3][1]++,y().s[19]++,this.uploadFilePath=`${this.path}${this.file.name}`,y().s[20]++,this.uploadPathDialog=!0}},methods:{update(){y().f[7]++,y().s[21]++,this.$router.push({name:"Bucket Explorer",params:{path:`${this.root}/${this.path}`}}),y().s[22]++,this.updateFiles()},selectBucket(n){if(y().f[8]++,y().s[23]++,this.root===n)return y().b[4][0]++,void y().s[24]++;y().b[4][1]++,y().s[25]++,this.mode="bucket",y().s[26]++,this.root=n,y().s[27]++,this.path="",y().s[28]++,this.update()},selectVolume(n){if(y().f[9]++,y().s[29]++,this.root===n)return y().b[5][0]++,void y().s[30]++;y().b[5][1]++,y().s[31]++,this.mode="volume",y().s[32]++,this.root=n,y().s[33]++,this.path="",y().s[34]++,this.update()},backArrow(){if(y().f[10]++,y().s[35]++,""===this.path)return y().b[6][0]++,void y().s[36]++;y().b[6][1]++;let n=(y().s[37]++,this.path.split("/"));y().s[38]++,this.path=n.slice(0,n.length-2).join("/"),y().s[39]++,n.length>2?(y().b[7][0]++,y().s[40]++,this.path+="/"):y().b[7][1]++,y().s[41]++,this.update()},fileClick(n){y().f[11]++,y().s[42]++,"mdi-folder"===n.icon?(y().b[8][0]++,y().s[43]++,""===this.root?(y().b[9][0]++,y().s[44]++,this.root=n.name):(y().b[9][1]++,y().s[45]++,this.path+=`${n.name}/`),y().s[46]++,this.update()):y().b[8][1]++},downloadFile(n){y().f[12]++;let e=(y().s[47]++,this.root.toUpperCase()),t=(y().s[48]++,"download");y().s[49]++,"volume"===this.mode?(y().b[10][0]++,y().s[50]++,t="download_file",y().s[51]++,e=e.slice(1)):y().b[10][1]++,y().s[52]++,g.get(`/openc3-api/storage/${t}/${encodeURIComponent(this.path)}${n}?${this.mode}=OPENC3_${e}_${this.mode.toUpperCase()}`).then((e=>{y().f[13]++;let t=(y().s[53]++,null);if(y().s[54]++,"bucket"===this.mode)y().b[11][0]++,y().s[55]++,t=e.data.url;else{y().b[11][1]++;const n=(y().s[56]++,window.atob(e.data.contents)),l=(y().s[57]++,new Uint8Array(n.length));y().s[58]++;for(let e=(y().s[59]++,0);e<n.length;++e)y().s[60]++,l[e]=n.charCodeAt(e);const o=(y().s[61]++,new Blob([l]));y().s[62]++,t=URL.createObjectURL(o)}const l=(y().s[63]++,document.createElement("a"));y().s[64]++,l.href=t,y().s[65]++,l.setAttribute("download",n),y().s[66]++,l.click()})).catch((e=>{y().f[14]++,y().s[67]++,this.$notify.caution({title:`Unable to download file ${this.path}${n} from bucket ${this.root}`})}))},async uploadFile(){y().f[15]++,y().s[68]++,this.uploadPathDialog=!1,y().s[69]++,this.uploadFilePath.startsWith("/")?(y().b[12][0]++,y().s[70]++,this.uploadFilePath=this.uploadFilePath.slice(1)):y().b[12][1]++;const{data:n}=(y().s[71]++,await g.get(`/openc3-api/storage/upload/${encodeURIComponent(this.uploadFilePath)}?bucket=OPENC3_${this.root.toUpperCase()}_BUCKET`));y().s[72]++,await(0,A.A)({...n,data:this.file});y().s[73]++,this.file=null,y().s[74]++,this.path=this.uploadFilePath.split("/").slice(0,-1).join("/")+"/",y().s[75]++,this.updateFiles()},deleteFile(n){y().f[16]++;let e=(y().s[76]++,this.root.toUpperCase());y().s[77]++,"volume"===this.mode?(y().b[13][0]++,y().s[78]++,e=e.slice(1)):y().b[13][1]++,y().s[79]++,this.$dialog.confirm(`Are you sure you want to delete: ${n}`,{okText:"Delete",cancelText:"Cancel"}).then((t=>(y().f[17]++,y().s[80]++,g.delete(`/openc3-api/storage/delete/${encodeURIComponent(this.path)}${n}?${this.mode}=OPENC3_${e}_${this.mode.toUpperCase()}`)))).then((n=>{y().f[18]++,y().s[81]++,this.updateFiles()}))},updateFiles(){y().f[19]++;let n=(y().s[82]++,this.root.toUpperCase());y().s[83]++,"volume"===this.mode?(y().b[14][0]++,y().s[84]++,n=n.slice(1)):y().b[14][1]++,y().s[85]++,g.get(`/openc3-api/storage/files/OPENC3_${n}_${this.mode.toUpperCase()}/${this.path}`).then((n=>{y().f[20]++,y().s[86]++,this.files=n.data[0].map((n=>(y().f[21]++,y().s[87]++,{name:n,icon:"mdi-folder"}))),y().s[88]++,this.files=this.files.concat(n.data[1].map((n=>(y().f[22]++,y().s[89]++,{name:n.name,icon:"mdi-file",size:n.size,modified:n.modified}))))})).catch((n=>{y().f[23]++,y().s[90]++,this.files=[],y().s[91]++,n.data.message?(y().b[15][0]++,y().s[92]++,this.$notify.caution({title:n.data.message})):(y().b[15][1]++,y().s[93]++,this.$notify.caution({title:n.message}))}))}}},x=k;t(1398);var w=(0,u.A)(x,o,i,!1,null,"2ae0d14e",null);const $=w.exports},3534:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>c});var l=t(6758),o=t.n(l),i=t(935),a=t.n(i),s=a()(o());s.push([n.id,".font-size[data-v-2ae0d14e]{font-size:1rem}.small-font-size[data-v-2ae0d14e]{font-size:.8rem}.file-input[data-v-2ae0d14e]{padding-top:0;margin-top:0}",""]);const c=s},9808:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>c});var l=t(6758),o=t.n(l),i=t(935),a=t.n(i),s=a()(o());s.push([n.id,".app-title[data-v-57d4fdd2]{font-size:2rem}.menu-button[data-v-57d4fdd2]{border-color:var(--color-border-interactive-muted)!important;background-color:var(--color-background-base-default)!important;padding-right:3px!important}span.v-btn__content span[data-v-57d4fdd2]{padding-right:5px}.myicon[data-v-57d4fdd2]{background-color:var(--color-background-surface-selected);border:1px solid currentColor;border-radius:3px;height:36px!important;width:36px!important}.v-list[data-v-57d4fdd2] .v-label{margin-left:5px}.v-list-item__icon[data-v-57d4fdd2]{margin-right:15px!important}.v-list-item__title[data-v-57d4fdd2]{color:#fff}",""]);const c=s},1398:(n,e,t)=>{var l=t(3534);l.__esModule&&(l=l.default),"string"===typeof l&&(l=[[n.id,l,""]]),l.locals&&(n.exports=l.locals);var o=t(4825).A;o("2b6de4e2",l,!0,{sourceMap:!1,shadowMode:!1})},1e3:(n,e,t)=>{var l=t(9808);l.__esModule&&(l=l.default),"string"===typeof l&&(l=[[n.id,l,""]]),l.locals&&(n.exports=l.locals);var o=t(4825).A;o("7de62207",l,!0,{sourceMap:!1,shadowMode:!1})}}]);
|
1
|
+
(self["webpackChunk_openc3_cosmos_tool_bucketexplorer"]=self["webpackChunk_openc3_cosmos_tool_bucketexplorer"]||[]).push([[970],{3970:(n,e,t)=>{"use strict";function l(){var n="/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",e="6329343b9ff837ee108f1cd6f67c4f2fd6d29784",t=new Function("return this")(),o="__coverage__",i={path:"/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",statementMap:{0:{start:{line:1,column:13},end:{line:9,column:1}},1:{start:{line:1,column:39},end:{line:1,column:43}},2:{start:{line:1,column:47},end:{line:1,column:59}},3:{start:{line:1,column:60},end:{line:8,column:3180}},4:{start:{line:1,column:355},end:{line:1,column:645}},5:{start:{line:1,column:459},end:{line:1,column:484}},6:{start:{line:1,column:484},end:{line:1,column:515}},7:{start:{line:1,column:857},end:{line:1,column:1147}},8:{start:{line:1,column:961},end:{line:1,column:986}},9:{start:{line:1,column:986},end:{line:1,column:1017}},10:{start:{line:1,column:1536},end:{line:1,column:1550}},11:{start:{line:8,column:134},end:{line:8,column:1155}},12:{start:{line:8,column:1103},end:{line:8,column:1115}},13:{start:{line:8,column:1208},end:{line:8,column:1315}},14:{start:{line:8,column:1357},end:{line:8,column:1449}},15:{start:{line:8,column:1493},end:{line:8,column:1886}},16:{start:{line:8,column:1625},end:{line:8,column:1659}},17:{start:{line:8,column:1817},end:{line:8,column:1849}},18:{start:{line:8,column:2011},end:{line:8,column:2035}},19:{start:{line:8,column:2575},end:{line:8,column:2597}},20:{start:{line:8,column:2804},end:{line:8,column:2832}},21:{start:{line:8,column:3037},end:{line:8,column:3061}},22:{start:{line:8,column:3061},end:{line:8,column:3105}},23:{start:{line:10,column:22},end:{line:10,column:24}}},fnMap:{0:{name:"render",decl:{start:{line:1,column:22},end:{line:1,column:28}},loc:{start:{line:1,column:30},end:{line:9,column:1}},line:1},1:{name:"(anonymous_1)",decl:{start:{line:1,column:332},end:{line:1,column:333}},loc:{start:{line:1,column:354},end:{line:1,column:646}},line:1},2:{name:"(anonymous_2)",decl:{start:{line:1,column:442},end:{line:1,column:443}},loc:{start:{line:1,column:458},end:{line:1,column:516}},line:1},3:{name:"(anonymous_3)",decl:{start:{line:1,column:834},end:{line:1,column:835}},loc:{start:{line:1,column:856},end:{line:1,column:1148}},line:1},4:{name:"(anonymous_4)",decl:{start:{line:1,column:944},end:{line:1,column:945}},loc:{start:{line:1,column:960},end:{line:1,column:1018}},line:1},5:{name:"(anonymous_5)",decl:{start:{line:1,column:1520},end:{line:1,column:1521}},loc:{start:{line:1,column:1535},end:{line:1,column:1551}},line:1},6:{name:"(anonymous_6)",decl:{start:{line:8,column:123},end:{line:8,column:124}},loc:{start:{line:8,column:133},end:{line:8,column:1156}},line:8},7:{name:"(anonymous_7)",decl:{start:{line:8,column:1087},end:{line:8,column:1088}},loc:{start:{line:8,column:1102},end:{line:8,column:1116}},line:8},8:{name:"(anonymous_8)",decl:{start:{line:8,column:1189},end:{line:8,column:1190}},loc:{start:{line:8,column:1207},end:{line:8,column:1316}},line:8},9:{name:"(anonymous_9)",decl:{start:{line:8,column:1338},end:{line:8,column:1339}},loc:{start:{line:8,column:1356},end:{line:8,column:1450}},line:8},10:{name:"(anonymous_10)",decl:{start:{line:8,column:1474},end:{line:8,column:1475}},loc:{start:{line:8,column:1492},end:{line:8,column:1887}},line:8},11:{name:"(anonymous_11)",decl:{start:{line:8,column:1608},end:{line:8,column:1609}},loc:{start:{line:8,column:1624},end:{line:8,column:1660}},line:8},12:{name:"(anonymous_12)",decl:{start:{line:8,column:1800},end:{line:8,column:1801}},loc:{start:{line:8,column:1816},end:{line:8,column:1850}},line:8},13:{name:"(anonymous_13)",decl:{start:{line:8,column:1995},end:{line:8,column:1996}},loc:{start:{line:8,column:2010},end:{line:8,column:2036}},line:8},14:{name:"(anonymous_14)",decl:{start:{line:8,column:2559},end:{line:8,column:2560}},loc:{start:{line:8,column:2574},end:{line:8,column:2598}},line:8},15:{name:"(anonymous_15)",decl:{start:{line:8,column:2787},end:{line:8,column:2788}},loc:{start:{line:8,column:2803},end:{line:8,column:2833}},line:8},16:{name:"(anonymous_16)",decl:{start:{line:8,column:3020},end:{line:8,column:3021}},loc:{start:{line:8,column:3036},end:{line:8,column:3106}},line:8}},branchMap:{0:{loc:{start:{line:1,column:664},end:{line:1,column:1162}},type:"cond-expr",locations:[{start:{line:1,column:691},end:{line:1,column:1153}},{start:{line:1,column:1154},end:{line:1,column:1162}}],line:1},1:{loc:{start:{line:8,column:769},end:{line:8,column:1150}},type:"cond-expr",locations:[{start:{line:8,column:793},end:{line:8,column:1141}},{start:{line:8,column:1142},end:{line:8,column:1150}}],line:8},2:{loc:{start:{line:8,column:1392},end:{line:8,column:1435}},type:"cond-expr",locations:[{start:{line:8,column:1404},end:{line:8,column:1430}},{start:{line:8,column:1433},end:{line:8,column:1435}}],line:8},3:{loc:{start:{line:8,column:1501},end:{line:8,column:1701}},type:"cond-expr",locations:[{start:{line:8,column:1528},end:{line:8,column:1692}},{start:{line:8,column:1693},end:{line:8,column:1701}}],line:8},4:{loc:{start:{line:8,column:1714},end:{line:8,column:1885}},type:"cond-expr",locations:[{start:{line:8,column:1741},end:{line:8,column:1876}},{start:{line:8,column:1877},end:{line:8,column:1885}}],line:8}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0},b:{0:[0,0],1:[0,0],2:[0,0],3:[0,0],4:[0,0]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"6329343b9ff837ee108f1cd6f67c4f2fd6d29784"},s=t[o]||(t[o]={});s[n]&&s[n].hash===e||(s[n]=i);var a=s[n];return l=function(){return a},a}t.r(e),t.d(e,{default:()=>$}),l(),l().s[0]++;var o=function(){l().f[0]++;var n=(l().s[1]++,this),e=(l().s[2]++,n._self._c);return l().s[3]++,e("div",[e("top-bar",{attrs:{title:n.title}}),n._v(" "),e("v-card",{attrs:{width:"100%"}},[e("div",{staticStyle:{"padding-left":"5px","padding-top":"5px"}},[e("span",{staticClass:"ma-2 font-size"},[n._v("Buckets:")]),n._v(" "),n._l(n.buckets,(function(t,o){return l().f[1]++,l().s[4]++,e("v-chip",{key:o,staticClass:"ma-2",attrs:{color:"primary"},on:{click:function(e){return l().f[2]++,l().s[5]++,e.stopPropagation(),l().s[6]++,n.selectBucket(t)}}},[e("v-avatar",{attrs:{left:""}},[e("v-icon",[n._v("mdi-bucket")])],1),n._v("\n "+n._s(t)+"\n ")],1)}))],2),n._v(" "),0!==n.volumes.length?(l().b[0][0]++,e("div",{staticStyle:{"padding-left":"5px"}},[e("span",{staticClass:"ma-2 font-size"},[n._v("Volumes:")]),n._v(" "),n._l(n.volumes,(function(t,o){return l().f[3]++,l().s[7]++,e("v-chip",{key:o,staticClass:"ma-2",attrs:{color:"primary"},on:{click:function(e){return l().f[4]++,l().s[8]++,e.stopPropagation(),l().s[9]++,n.selectVolume(t)}}},[e("v-avatar",{attrs:{left:""}},[e("v-icon",[n._v("mdi-folder")])],1),n._v("\n "+n._s(t)+"\n ")],1)}))],2)):(l().b[0][1]++,n._e()),n._v(" "),e("v-card-title",{staticStyle:{"padding-top":"0px"}},[n._v("\n "+n._s(n.root)+" Files\n "),e("v-spacer"),n._v(" "),e("v-text-field",{staticClass:"search",attrs:{label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",outlined:"",dense:"","single-line":"","hide-details":""},model:{value:n.search,callback:function(e){l().f[5]++,l().s[10]++,n.search=e},expression:"search"}})],1),n._v(" "),e("v-data-table",{attrs:{headers:n.headers,items:n.files,search:n.search,"items-per-page":1e3,"footer-props":{showFirstLastPage:!0,itemsPerPageOptions:[1e3],firstIcon:"mdi-page-first",lastIcon:"mdi-page-last",prevIcon:"mdi-chevron-left",nextIcon:"mdi-chevron-right"},"calculate-widths":"","multi-sort":"",dense:""},on:{"click:row":n.fileClick},scopedSlots:n._u([{key:"top",fn:function(){return l().f[6]++,l().s[11]++,[e("v-row",{staticClass:"ma-0",staticStyle:{"background-color":"var(--color-background-surface-header)"}},[e("v-btn",{attrs:{icon:""}},[e("v-icon",{on:{click:n.backArrow}},[n._v("mdi-chevron-left-box-outline")])],1),n._v(" "),e("span",{staticClass:".text-body-1 ma-2 font-size",attrs:{"data-test":"file-path"}},[n._v("/"+n._s(n.path))]),n._v(" "),e("v-spacer"),n._v(" "),e("div",{staticClass:"pa-1 font-size"},[n._v("\n Folder Size: "+n._s(n.folderTotal)+"\n "),e("span",{staticClass:"small-font-size"},[n._v("(not recursive)")])]),n._v(" "),e("v-spacer"),n._v(" "),"bucket"===n.mode?(l().b[1][0]++,e("div",{staticStyle:{display:"flex"}},[e("span",{staticClass:"pa-1 font-size"},[n._v("Upload File")]),n._v(" "),e("v-file-input",{staticClass:"file-input",attrs:{"hide-input":"","hide-details":"","prepend-icon":"mdi-upload","data-test":"upload-file"},model:{value:n.file,callback:function(e){l().f[7]++,l().s[12]++,n.file=e},expression:"file"}})],1)):(l().b[1][1]++,n._e())],1)]},proxy:!0},{key:"item.name",fn:function({item:t}){return l().f[8]++,l().s[13]++,[e("v-icon",{staticClass:"mr-2"},[n._v(n._s(t.icon))]),n._v(n._s(t.name)+"\n ")]}},{key:"item.size",fn:function({item:e}){return l().f[9]++,l().s[14]++,[n._v("\n "+n._s(e.size?(l().b[2][0]++,e.size.toLocaleString()):(l().b[2][1]++,""))+"\n ")]}},{key:"item.action",fn:function({item:t}){return l().f[10]++,l().s[15]++,["mdi-file"===t.icon?(l().b[3][0]++,e("v-icon",{staticClass:"mr-3",attrs:{"data-test":"download-file"},on:{click:function(e){return l().f[11]++,l().s[16]++,n.downloadFile(t.name)}}},[n._v("mdi-download-box")])):(l().b[3][1]++,n._e()),n._v(" "),"mdi-file"===t.icon?(l().b[4][0]++,e("v-icon",{attrs:{"data-test":"delete-file"},on:{click:function(e){return l().f[12]++,l().s[17]++,n.deleteFile(t.name)}}},[n._v("mdi-delete")])):(l().b[4][1]++,n._e())]}}])})],1),n._v(" "),e("v-dialog",{attrs:{"max-width":"600"},model:{value:n.uploadPathDialog,callback:function(e){l().f[13]++,l().s[18]++,n.uploadPathDialog=e},expression:"uploadPathDialog"}},[e("v-card",[e("v-system-bar",[e("v-spacer"),n._v(" "),e("span",[n._v(" Upload Path ")]),n._v(" "),e("v-spacer")],1),n._v(" "),e("v-card-text",[e("div",{staticClass:"mx-1"},[e("v-row",{staticClass:"my-2"},[e("span",[n._v("This file path can be modified. New directories will be\n automatically created.")]),n._v(" "),e("v-text-field",{attrs:{"hide-details":"",label:"File Path","data-test":"upload-file-path"},model:{value:n.uploadFilePath,callback:function(e){l().f[14]++,l().s[19]++,n.uploadFilePath=e},expression:"uploadFilePath"}})],1),n._v(" "),e("v-row",[e("v-spacer"),n._v(" "),e("v-btn",{staticClass:"mx-2",attrs:{outlined:"","data-test":"upload-file-cancel-btn"},on:{click:function(e){l().f[15]++,l().s[20]++,n.uploadPathDialog=!1}}},[n._v("\n Cancel\n ")]),n._v(" "),e("v-btn",{staticClass:"mx-2",attrs:{color:"primary",type:"submit","data-test":"upload-file-submit-btn"},on:{click:function(e){return l().f[16]++,l().s[21]++,e.preventDefault(),l().s[22]++,n.uploadFile.apply(null,arguments)}}},[n._v("\n Upload\n ")])],1)],1)])],1)],1)],1)},i=(l().s[23]++,[]),s=(t(9375),t(8605),t(2482),t(7067),t(4147),t(2682),t(785),t(8357),t(6196),t(821),t(6554),t(8472),t(7404),t(5803),t(3912),t(7010),t(7182),t(3165),t(4541),t(4397),t(1412),t(1883),t(7905),function(){var n=this,e=n._self._c;return e("mounting-portal",{attrs:{"mount-to":"#openc3-menu",append:""}},[e("v-row",{attrs:{"no-gutters":""}},[e("v-col",{attrs:{"align-self":"end"}},[e("span",{staticClass:"app-title mr-2"},[n._v(n._s(n.title))])])],1),n._v(" "),e("v-row",{staticClass:"flex-nowrap",attrs:{dense:""}},n._l(n.menus,(function(t,l){return e("v-menu",{key:l,ref:"topmenu",refInFor:!0,attrs:{"offset-y":""},scopedSlots:n._u([{key:"activator",fn:function({on:l,attrs:o}){return[e("v-btn",n._g(n._b({staticClass:"mx-1 menu-button",attrs:{outlined:"","data-test":n.formatDT(`${n.title} ${t.label}`)}},"v-btn",o,!1),l),[e("span",{domProps:{textContent:n._s(t.label)}}),n._v(" "),e("v-icon",{staticClass:"myicon",attrs:{right:""}},[n._v(" mdi-menu-down ")])],1)]}}],null,!0)},[n._v(" "),e("v-list",[e("v-radio-group",{staticClass:"ma-0 pa-0",attrs:{value:t.radioGroup,"hide-details":"",dense:""}},[n._l(t.items,(function(l,o){return[l.divider?e("v-divider",{key:o}):l.subMenu&&l.subMenu.length>0?e("div",{key:o},[e("v-menu",{key:n.k,attrs:{"open-on-hover":"","offset-x":"",bottom:""},scopedSlots:n._u([{key:"activator",fn:function({on:t,attrs:i}){return[e("v-list-item",n._g(n._b({key:o,attrs:{disabled:l.disabled}},"v-list-item",i,!1),t),[l.icon?e("v-list-item-icon",[e("v-icon",{attrs:{disabled:l.disabled}},[n._v(n._s(l.icon))])],1):n._e(),n._v(" "),l.radio||l.checkbox?n._e():e("v-list-item-title",{style:"cursor: pointer;"+(l.disabled?"opacity: 0.2":"")},[n._v(n._s(l.label)+"\n ")]),n._v(" "),e("v-icon",[n._v(" mdi-chevron-right ")])],1)]}}],null,!0)},[n._v(" "),e("v-list",n._l(l.subMenu,(function(t,l){return e("v-list-item",{key:l,on:{click:function(e){return n.subMenuClick(t)}}},[t.icon?e("v-list-item-icon",[e("v-icon",[n._v(n._s(t.icon))])],1):n._e(),n._v(" "),e("v-list-item-title",[n._v(n._s(t.label))])],1)})),1)],1)],1):e("v-list-item",{key:o,attrs:{disabled:l.disabled,"data-test":n.formatDT(`${n.title} ${t.label} ${l.label}`)},on:{click:function(n){return l.command(l)}}},[l.radio?e("v-list-item-action",[e("v-radio",{attrs:{color:"secondary",label:l.label,value:l.label}})],1):n._e(),n._v(" "),l.checkbox?e("v-list-item-action",[e("v-checkbox",{attrs:{color:"secondary",label:l.label},model:{value:l.checked,callback:function(e){n.$set(l,"checked",e)},expression:"option.checked"}})],1):n._e(),n._v(" "),l.icon?e("v-list-item-icon",[e("v-icon",{attrs:{disabled:l.disabled}},[n._v(n._s(l.icon))])],1):n._e(),n._v(" "),l.radio||l.checkbox?n._e():e("v-list-item-title",{style:"cursor: pointer;"+(l.disabled?"opacity: 0.2":"")},[n._v(n._s(l.label))])],1)]}))],2)],1)],1)})),1)],1)}),a=[];t(4293),t(8715);const c={props:{menus:{type:Array,default:function(){return[]}},title:{type:String,default:""}},methods:{formatDT:function(n){return n.replaceAll(" ","-").toLowerCase()},subMenuClick(n){n.command(n),this.$refs.topmenu[0].isActive=!1}},mounted(){document.title=this.title}},r=c;t(1e3);var u=t(2401),d=(0,u.A)(r,s,a,!1,null,"57d4fdd2",null);const m=d.exports;var A=t(4625),p=t(1649);const h=new p["default"],f=A.A.create({baseURL:location.origin,timeout:6e4,params:{}});f.interceptors.response.use((n=>n),(n=>{if(n.response){var e,t,l,o,i;if(401===n.response.status&&OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity,!0).then((function(n){n&&OpenC3Auth.setTokens()})),n.response.config.headers["Ignore-Errors"]&&n.response.config.headers["Ignore-Errors"].includes(n.response.status.toString()))return Promise.reject(n);let a=`HTTP ${n.response.status} - `;if(null!==(e=n.response)&&void 0!==e&&e.statusText&&(a+=`${n.response.statusText} `),null!==(t=n.response)&&void 0!==t&&null!==(t=t.config)&&void 0!==t&&t.data&&(a+=`${n.response.config.data} `),null!==(l=n.response)&&void 0!==l&&null!==(l=l.data)&&void 0!==l&&l.message)a+=`${n.response.data.message}`;else if(null!==(o=n.response)&&void 0!==o&&null!==(o=o.data)&&void 0!==o&&o.exception)a+=`${n.response.data.exception}`;else if(null!==(i=n.response)&&void 0!==i&&null!==(i=i.data)&&void 0!==i&&null!==(i=i.error)&&void 0!==i&&i.message)n.response.data.error.class&&(a+=`${n.response.data.error.class} `),a+=`${n.response.data.error.message}`;else{var s;a+=`${null===(s=n.response)||void 0===s?void 0:s.data}`}throw h.$notify&&h.$notify.serious({title:"Network error",body:a}),n}throw n}));const v=f,C=async function(n,e,{data:t,params:l={},headers:o,noAuth:i=!1,noScope:s=!1,onUploadProgress:a={}}={}){if(!i){try{let n=await OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity);n&&OpenC3Auth.setTokens()}catch(c){OpenC3Auth.login()}o["Authorization"]=localStorage.openc3Token}return s||l["scope"]||(l["scope"]=window.openc3Scope),v({method:n,url:e,data:t,params:l,headers:o,onUploadProgress:a})},b={Accept:"application/json"},_={...b,"Content-Type":"application/json"},g={get:function(n,{params:e,headers:t=b,noScope:l,noAuth:o,onUploadProgress:i}={}){return C("get",n,{params:e,headers:t,noScope:l,noAuth:o,onUploadProgress:i})},put:function(n,{data:e,params:t,headers:l=_,noScope:o,noAuth:i,onUploadProgress:s}={}){return C("put",n,{data:e,params:t,headers:l,noScope:o,noAuth:i,onUploadProgress:s})},post:function(n,{data:e,params:t,headers:l=_,noScope:o,noAuth:i,onUploadProgress:s}={}){return C("post",n,{data:e,params:t,headers:l,noScope:o,noAuth:i,onUploadProgress:s})},delete:function(n,{params:e,headers:t=b,noScope:l,noAuth:o,onUploadProgress:i}={}){return C("delete",n,{params:e,headers:t,noScope:l,noAuth:o,onUploadProgress:i})}};function y(){var n="/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",e="f499b2f27c44367f7e64f8df7e0877cd56593464",t=new Function("return this")(),l="__coverage__",o={path:"/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",statementMap:{0:{start:{line:11,column:4},end:{line:28,column:5}},1:{start:{line:32,column:6},end:{line:34,column:25}},2:{start:{line:33,column:26},end:{line:33,column:51}},3:{start:{line:38,column:4},end:{line:40,column:6}},4:{start:{line:39,column:6},end:{line:39,column:34}},5:{start:{line:41,column:4},end:{line:43,column:6}},6:{start:{line:42,column:6},end:{line:42,column:34}},7:{start:{line:44,column:4},end:{line:57,column:5}},8:{start:{line:45,column:18},end:{line:45,column:52}},9:{start:{line:46,column:6},end:{line:55,column:7}},10:{start:{line:47,column:8},end:{line:47,column:28}},11:{start:{line:49,column:8},end:{line:49,column:34}},12:{start:{line:50,column:8},end:{line:50,column:44}},13:{start:{line:52,column:8},end:{line:52,column:28}},14:{start:{line:53,column:8},end:{line:53,column:28}},15:{start:{line:54,column:8},end:{line:54,column:44}},16:{start:{line:56,column:6},end:{line:56,column:24}},17:{start:{line:62,column:6},end:{line:62,column:36}},18:{start:{line:62,column:30},end:{line:62,column:36}},19:{start:{line:63,column:6},end:{line:63,column:59}},20:{start:{line:64,column:6},end:{line:64,column:34}},21:{start:{line:69,column:6},end:{line:74,column:8}},22:{start:{line:75,column:6},end:{line:75,column:24}},23:{start:{line:78,column:6},end:{line:78,column:38}},24:{start:{line:78,column:32},end:{line:78,column:38}},25:{start:{line:79,column:6},end:{line:79,column:26}},26:{start:{line:80,column:6},end:{line:80,column:24}},27:{start:{line:81,column:6},end:{line:81,column:20}},28:{start:{line:82,column:6},end:{line:82,column:19}},29:{start:{line:85,column:6},end:{line:85,column:38}},30:{start:{line:85,column:32},end:{line:85,column:38}},31:{start:{line:86,column:6},end:{line:86,column:26}},32:{start:{line:87,column:6},end:{line:87,column:24}},33:{start:{line:88,column:6},end:{line:88,column:20}},34:{start:{line:89,column:6},end:{line:89,column:19}},35:{start:{line:93,column:6},end:{line:93,column:34}},36:{start:{line:93,column:28},end:{line:93,column:34}},37:{start:{line:94,column:18},end:{line:94,column:38}},38:{start:{line:95,column:6},end:{line:95,column:60}},39:{start:{line:98,column:6},end:{line:100,column:7}},40:{start:{line:99,column:8},end:{line:99,column:24}},41:{start:{line:101,column:6},end:{line:101,column:19}},42:{start:{line:104,column:6},end:{line:112,column:7}},43:{start:{line:105,column:8},end:{line:110,column:9}},44:{start:{line:107,column:10},end:{line:107,column:32}},45:{start:{line:109,column:10},end:{line:109,column:39}},46:{start:{line:111,column:8},end:{line:111,column:21}},47:{start:{line:115,column:17},end:{line:115,column:40}},48:{start:{line:116,column:16},end:{line:116,column:26}},49:{start:{line:117,column:6},end:{line:120,column:7}},50:{start:{line:118,column:8},end:{line:118,column:29}},51:{start:{line:119,column:8},end:{line:119,column:28}},52:{start:{line:121,column:6},end:{line:153,column:10}},53:{start:{line:127,column:21},end:{line:127,column:25}},54:{start:{line:128,column:10},end:{line:141,column:11}},55:{start:{line:129,column:12},end:{line:129,column:36}},56:{start:{line:132,column:32},end:{line:132,column:67}},57:{start:{line:134,column:31},end:{line:134,column:65}},58:{start:{line:136,column:12},end:{line:138,column:13}},59:{start:{line:136,column:25},end:{line:136,column:26}},60:{start:{line:137,column:14},end:{line:137,column:55}},61:{start:{line:139,column:25},end:{line:139,column:47}},62:{start:{line:140,column:12},end:{line:140,column:44}},63:{start:{line:143,column:23},end:{line:143,column:50}},64:{start:{line:144,column:10},end:{line:144,column:26}},65:{start:{line:145,column:10},end:{line:145,column:49}},66:{start:{line:146,column:10},end:{line:146,column:22}},67:{start:{line:150,column:10},end:{line:152,column:12}},68:{start:{line:156,column:6},end:{line:156,column:35}},69:{start:{line:158,column:6},end:{line:160,column:7}},70:{start:{line:159,column:8},end:{line:159,column:58}},71:{start:{line:163,column:41},end:{line:167,column:7}},72:{start:{line:170,column:23},end:{line:173,column:8}},73:{start:{line:174,column:6},end:{line:174,column:22}},74:{start:{line:175,column:6},end:{line:175,column:77}},75:{start:{line:176,column:6},end:{line:176,column:24}},76:{start:{line:179,column:17},end:{line:179,column:40}},77:{start:{line:180,column:6},end:{line:182,column:7}},78:{start:{line:181,column:8},end:{line:181,column:28}},79:{start:{line:183,column:6},end:{line:199,column:10}},80:{start:{line:189,column:10},end:{line:195,column:11}},81:{start:{line:198,column:10},end:{line:198,column:28}},82:{start:{line:202,column:17},end:{line:202,column:40}},83:{start:{line:203,column:6},end:{line:205,column:7}},84:{start:{line:204,column:8},end:{line:204,column:28}},85:{start:{line:206,column:6},end:{line:237,column:10}},86:{start:{line:212,column:10},end:{line:214,column:12}},87:{start:{line:213,column:12},end:{line:213,column:55}},88:{start:{line:215,column:10},end:{line:224,column:11}},89:{start:{line:217,column:14},end:{line:222,column:15}},90:{start:{line:227,column:10},end:{line:227,column:25}},91:{start:{line:228,column:10},end:{line:236,column:11}},92:{start:{line:229,column:12},end:{line:231,column:14}},93:{start:{line:233,column:12},end:{line:235,column:14}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:10,column:2},end:{line:10,column:3}},loc:{start:{line:10,column:9},end:{line:29,column:3}},line:10},1:{name:"(anonymous_1)",decl:{start:{line:31,column:4},end:{line:31,column:5}},loc:{start:{line:31,column:18},end:{line:35,column:5}},line:31},2:{name:"(anonymous_2)",decl:{start:{line:33,column:16},end:{line:33,column:17}},loc:{start:{line:33,column:26},end:{line:33,column:51}},line:33},3:{name:"(anonymous_3)",decl:{start:{line:37,column:2},end:{line:37,column:3}},loc:{start:{line:37,column:12},end:{line:58,column:3}},line:37},4:{name:"(anonymous_4)",decl:{start:{line:38,column:48},end:{line:38,column:49}},loc:{start:{line:38,column:62},end:{line:40,column:5}},line:38},5:{name:"(anonymous_5)",decl:{start:{line:41,column:48},end:{line:41,column:49}},loc:{start:{line:41,column:62},end:{line:43,column:5}},line:41},6:{name:"(anonymous_6)",decl:{start:{line:61,column:10},end:{line:61,column:11}},loc:{start:{line:61,column:28},end:{line:65,column:5}},line:61},7:{name:"(anonymous_7)",decl:{start:{line:68,column:4},end:{line:68,column:5}},loc:{start:{line:68,column:13},end:{line:76,column:5}},line:68},8:{name:"(anonymous_8)",decl:{start:{line:77,column:4},end:{line:77,column:5}},loc:{start:{line:77,column:25},end:{line:83,column:5}},line:77},9:{name:"(anonymous_9)",decl:{start:{line:84,column:4},end:{line:84,column:5}},loc:{start:{line:84,column:25},end:{line:90,column:5}},line:84},10:{name:"(anonymous_10)",decl:{start:{line:91,column:4},end:{line:91,column:5}},loc:{start:{line:91,column:16},end:{line:102,column:5}},line:91},11:{name:"(anonymous_11)",decl:{start:{line:103,column:4},end:{line:103,column:5}},loc:{start:{line:103,column:21},end:{line:113,column:5}},line:103},12:{name:"(anonymous_12)",decl:{start:{line:114,column:4},end:{line:114,column:5}},loc:{start:{line:114,column:27},end:{line:154,column:5}},line:114},13:{name:"(anonymous_13)",decl:{start:{line:126,column:14},end:{line:126,column:15}},loc:{start:{line:126,column:28},end:{line:147,column:9}},line:126},14:{name:"(anonymous_14)",decl:{start:{line:149,column:15},end:{line:149,column:16}},loc:{start:{line:149,column:29},end:{line:153,column:9}},line:149},15:{name:"(anonymous_15)",decl:{start:{line:155,column:4},end:{line:155,column:5}},loc:{start:{line:155,column:23},end:{line:177,column:5}},line:155},16:{name:"(anonymous_16)",decl:{start:{line:178,column:4},end:{line:178,column:5}},loc:{start:{line:178,column:25},end:{line:200,column:5}},line:178},17:{name:"(anonymous_17)",decl:{start:{line:188,column:14},end:{line:188,column:15}},loc:{start:{line:188,column:26},end:{line:196,column:9}},line:188},18:{name:"(anonymous_18)",decl:{start:{line:197,column:14},end:{line:197,column:15}},loc:{start:{line:197,column:28},end:{line:199,column:9}},line:197},19:{name:"(anonymous_19)",decl:{start:{line:201,column:4},end:{line:201,column:5}},loc:{start:{line:201,column:18},end:{line:238,column:5}},line:201},20:{name:"(anonymous_20)",decl:{start:{line:211,column:14},end:{line:211,column:15}},loc:{start:{line:211,column:28},end:{line:225,column:9}},line:211},21:{name:"(anonymous_21)",decl:{start:{line:212,column:44},end:{line:212,column:45}},loc:{start:{line:212,column:56},end:{line:214,column:11}},line:212},22:{name:"(anonymous_22)",decl:{start:{line:216,column:33},end:{line:216,column:34}},loc:{start:{line:216,column:43},end:{line:223,column:13}},line:216},23:{name:"(anonymous_23)",decl:{start:{line:226,column:15},end:{line:226,column:16}},loc:{start:{line:226,column:29},end:{line:237,column:9}},line:226}},branchMap:{0:{loc:{start:{line:33,column:31},end:{line:33,column:50}},type:"cond-expr",locations:[{start:{line:33,column:40},end:{line:33,column:46}},{start:{line:33,column:49},end:{line:33,column:50}}],line:33},1:{loc:{start:{line:44,column:4},end:{line:57,column:5}},type:"if",locations:[{start:{line:44,column:4},end:{line:57,column:5}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:44},2:{loc:{start:{line:46,column:6},end:{line:55,column:7}},type:"if",locations:[{start:{line:46,column:6},end:{line:55,column:7}},{start:{line:51,column:13},end:{line:55,column:7}}],line:46},3:{loc:{start:{line:62,column:6},end:{line:62,column:36}},type:"if",locations:[{start:{line:62,column:6},end:{line:62,column:36}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:62},4:{loc:{start:{line:78,column:6},end:{line:78,column:38}},type:"if",locations:[{start:{line:78,column:6},end:{line:78,column:38}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:78},5:{loc:{start:{line:85,column:6},end:{line:85,column:38}},type:"if",locations:[{start:{line:85,column:6},end:{line:85,column:38}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:85},6:{loc:{start:{line:93,column:6},end:{line:93,column:34}},type:"if",locations:[{start:{line:93,column:6},end:{line:93,column:34}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:93},7:{loc:{start:{line:98,column:6},end:{line:100,column:7}},type:"if",locations:[{start:{line:98,column:6},end:{line:100,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:98},8:{loc:{start:{line:104,column:6},end:{line:112,column:7}},type:"if",locations:[{start:{line:104,column:6},end:{line:112,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:104},9:{loc:{start:{line:105,column:8},end:{line:110,column:9}},type:"if",locations:[{start:{line:105,column:8},end:{line:110,column:9}},{start:{line:108,column:15},end:{line:110,column:9}}],line:105},10:{loc:{start:{line:117,column:6},end:{line:120,column:7}},type:"if",locations:[{start:{line:117,column:6},end:{line:120,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:117},11:{loc:{start:{line:128,column:10},end:{line:141,column:11}},type:"if",locations:[{start:{line:128,column:10},end:{line:141,column:11}},{start:{line:130,column:17},end:{line:141,column:11}}],line:128},12:{loc:{start:{line:158,column:6},end:{line:160,column:7}},type:"if",locations:[{start:{line:158,column:6},end:{line:160,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:158},13:{loc:{start:{line:180,column:6},end:{line:182,column:7}},type:"if",locations:[{start:{line:180,column:6},end:{line:182,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:180},14:{loc:{start:{line:203,column:6},end:{line:205,column:7}},type:"if",locations:[{start:{line:203,column:6},end:{line:205,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:203},15:{loc:{start:{line:228,column:10},end:{line:236,column:11}},type:"if",locations:[{start:{line:228,column:10},end:{line:236,column:11}},{start:{line:232,column:17},end:{line:236,column:11}}],line:228}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0,24:0,25:0,26:0,27:0,28:0,29:0,30:0,31:0,32:0,33:0,34:0,35:0,36:0,37:0,38:0,39:0,40:0,41:0,42:0,43:0,44:0,45:0,46:0,47:0,48:0,49:0,50:0,51:0,52:0,53:0,54:0,55:0,56:0,57:0,58:0,59:0,60:0,61:0,62:0,63:0,64:0,65:0,66:0,67:0,68:0,69:0,70:0,71:0,72:0,73:0,74:0,75:0,76:0,77:0,78:0,79:0,80:0,81:0,82:0,83:0,84:0,85:0,86:0,87:0,88:0,89:0,90:0,91:0,92:0,93:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0},b:{0:[0,0],1:[0,0],2:[0,0],3:[0,0],4:[0,0],5:[0,0],6:[0,0],7:[0,0],8:[0,0],9:[0,0],10:[0,0],11:[0,0],12:[0,0],13:[0,0],14:[0,0],15:[0,0]},inputSourceMap:{version:3,sources:["BucketExplorer.vue"],names:[],mappings:";AA6LA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"BucketExplorer.vue",sourceRoot:"src/tools/BucketExplorer",sourcesContent:['\x3c!--\n# Copyright 2023 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n--\x3e\n\n<template>\n <div>\n <top-bar :title="title" />\n <v-card width="100%">\n <div style="padding-left: 5px; padding-top: 5px">\n <span class="ma-2 font-size">Buckets:</span>\n <v-chip\n v-for="(bucket, index) in buckets"\n :key="index"\n color="primary"\n class="ma-2"\n @click.stop="selectBucket(bucket)"\n >\n <v-avatar left>\n <v-icon>mdi-bucket</v-icon>\n </v-avatar>\n {{ bucket }}\n </v-chip>\n </div>\n <div style="padding-left: 5px" v-if="volumes.length !== 0">\n <span class="ma-2 font-size">Volumes:</span>\n <v-chip\n v-for="(volume, index) in volumes"\n :key="index"\n color="primary"\n class="ma-2"\n @click.stop="selectVolume(volume)"\n >\n <v-avatar left>\n <v-icon>mdi-folder</v-icon>\n </v-avatar>\n {{ volume }}\n </v-chip>\n </div>\n <v-card-title style="padding-top: 0px">\n {{ root }} Files\n <v-spacer />\n <v-text-field\n v-model="search"\n label="Search"\n prepend-inner-icon="mdi-magnify"\n clearable\n outlined\n dense\n single-line\n hide-details\n class="search"\n />\n </v-card-title>\n <v-data-table\n :headers="headers"\n :items="files"\n :search="search"\n :items-per-page="1000"\n :footer-props="{\n showFirstLastPage: true,\n itemsPerPageOptions: [1000],\n firstIcon: \'mdi-page-first\',\n lastIcon: \'mdi-page-last\',\n prevIcon: \'mdi-chevron-left\',\n nextIcon: \'mdi-chevron-right\',\n }"\n @click:row="fileClick"\n calculate-widths\n multi-sort\n dense\n >\n <template v-slot:top>\n <v-row\n class="ma-0"\n style="background-color: var(--color-background-surface-header)"\n >\n <v-btn icon>\n <v-icon @click="backArrow">mdi-chevron-left-box-outline</v-icon>\n </v-btn>\n <span class=".text-body-1 ma-2 font-size" data-test="file-path"\n >/{{ path }}</span\n >\n <v-spacer />\n <div class="pa-1 font-size">\n Folder Size: {{ folderTotal }}\n <span class="small-font-size">(not recursive)</span>\n </div>\n\n <v-spacer />\n <div style="display: flex" v-if="mode === \'bucket\'">\n <span class="pa-1 font-size">Upload File</span>\n <v-file-input\n v-model="file"\n hide-input\n hide-details\n class="file-input"\n prepend-icon="mdi-upload"\n data-test="upload-file"\n />\n </div>\n </v-row>\n </template>\n <template v-slot:item.name="{ item }">\n <v-icon class="mr-2">{{ item.icon }}</v-icon\n >{{ item.name }}\n </template>\n <template v-slot:item.size="{ item }">\n {{ item.size ? item.size.toLocaleString() : \'\' }}\n </template>\n <template v-slot:item.action="{ item }">\n <v-icon\n class="mr-3"\n v-if="item.icon === \'mdi-file\'"\n @click="downloadFile(item.name)"\n data-test="download-file"\n >mdi-download-box</v-icon\n >\n <v-icon\n v-if="item.icon === \'mdi-file\'"\n @click="deleteFile(item.name)"\n data-test="delete-file"\n >mdi-delete</v-icon\n >\n </template>\n </v-data-table>\n </v-card>\n <v-dialog v-model="uploadPathDialog" max-width="600">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Upload Path </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class="mx-1">\n <v-row class="my-2">\n <span\n >This file path can be modified. New directories will be\n automatically created.</span\n >\n <v-text-field\n v-model="uploadFilePath"\n hide-details\n label="File Path"\n data-test="upload-file-path"\n />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click="uploadPathDialog = false"\n outlined\n class="mx-2"\n data-test="upload-file-cancel-btn"\n >\n Cancel\n </v-btn>\n <v-btn\n @click.prevent="uploadFile"\n class="mx-2"\n color="primary"\n type="submit"\n data-test="upload-file-submit-btn"\n >\n Upload\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport TopBar from \'@openc3/tool-common/src/components/TopBar\'\nimport Api from \'@openc3/tool-common/src/services/api\'\nimport axios from \'axios\'\n\nexport default {\n components: {\n TopBar,\n },\n data() {\n return {\n title: \'Bucket Explorer\',\n search: \'\',\n root: \'\',\n mode: \'bucket\',\n buckets: [],\n volumes: [],\n uploadPathDialog: false,\n path: \'\',\n file: null,\n files: [],\n headers: [\n { text: \'Name\', value: \'name\' },\n { text: \'Size\', value: \'size\' },\n { text: \'Modified Date\', value: \'modified\' },\n { text: \'Action\', value: \'action\' },\n ],\n }\n },\n computed: {\n folderTotal() {\n return this.files\n .reduce((a, b) => a + (b.size ? b.size : 0), 0)\n .toLocaleString()\n },\n },\n created() {\n Api.get(\'/openc3-api/storage/buckets\').then((response) => {\n this.buckets = response.data\n })\n Api.get(\'/openc3-api/storage/volumes\').then((response) => {\n this.volumes = response.data\n })\n if (this.$route.params.path) {\n let parts = this.$route.params.path.split(\'/\')\n if (parts[0] === \'\') {\n this.mode = \'volume\'\n // Prepend the slash to note this is a volume not a bucket\n this.root = `/${parts[1]}`\n this.path = parts.slice(2).join(\'/\')\n } else {\n this.mode = \'bucket\'\n this.root = parts[0]\n this.path = parts.slice(1).join(\'/\')\n }\n this.updateFiles()\n }\n },\n watch: {\n // This is the upload function that is activated when the file gets set\n file: async function () {\n if (this.file === null) return\n this.uploadFilePath = `${this.path}${this.file.name}`\n this.uploadPathDialog = true\n },\n },\n methods: {\n update() {\n this.$router.push({\n name: \'Bucket Explorer\',\n params: {\n path: `${this.root}/${this.path}`,\n },\n })\n this.updateFiles()\n },\n selectBucket(bucket) {\n if (this.root === bucket) return\n this.mode = \'bucket\'\n this.root = bucket\n this.path = \'\'\n this.update()\n },\n selectVolume(volume) {\n if (this.root === volume) return\n this.mode = \'volume\'\n this.root = volume\n this.path = \'\'\n this.update()\n },\n backArrow() {\n // Nothing to do if we\'re at the root so return\n if (this.path === \'\') return\n let parts = this.path.split(\'/\')\n this.path = parts.slice(0, parts.length - 2).join(\'/\')\n // Only append the last slash if we\'re not at the root\n // The root is 2 because it\'s the path before clicking back\n if (parts.length > 2) {\n this.path += \'/\'\n }\n this.update()\n },\n fileClick(event) {\n if (event.icon === \'mdi-folder\') {\n if (this.root === \'\') {\n // initial root click\n this.root = event.name\n } else {\n this.path += `${event.name}/`\n }\n this.update()\n }\n },\n downloadFile(filename) {\n let root = this.root.toUpperCase()\n let api = \'download\'\n if (this.mode === \'volume\') {\n api = \'download_file\'\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/${api}/${encodeURIComponent(\n this.path,\n )}${filename}?${this.mode}=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n .then((response) => {\n let href = null\n if (this.mode === \'bucket\') {\n href = response.data.url\n } else {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array])\n href = URL.createObjectURL(blob)\n }\n // Make a link and then \'click\' on it to start the download\n const link = document.createElement(\'a\')\n link.href = href\n link.setAttribute(\'download\', filename)\n link.click()\n })\n\n .catch((response) => {\n this.$notify.caution({\n title: `Unable to download file ${this.path}${filename} from bucket ${this.root}`,\n })\n })\n },\n async uploadFile() {\n this.uploadPathDialog = false\n // Ensure they didn\'t slap a \'/\' at the beginning\n if (this.uploadFilePath.startsWith(\'/\')) {\n this.uploadFilePath = this.uploadFilePath.slice(1)\n }\n\n // Reassign data to presignedRequest for readability\n const { data: presignedRequest } = await Api.get(\n `/openc3-api/storage/upload/${encodeURIComponent(\n this.uploadFilePath,\n )}?bucket=OPENC3_${this.root.toUpperCase()}_BUCKET`,\n )\n // This pushes the file into storage by using the fields in the presignedRequest\n // See storage_controller.rb get_presigned_request()\n const response = await axios({\n ...presignedRequest,\n data: this.file,\n })\n this.file = null\n this.path = this.uploadFilePath.split(\'/\').slice(0, -1).join(\'/\') + \'/\'\n this.updateFiles()\n },\n deleteFile(filename) {\n let root = this.root.toUpperCase()\n if (this.mode === \'volume\') {\n root = root.slice(1)\n }\n this.$dialog\n .confirm(`Are you sure you want to delete: ${filename}`, {\n okText: \'Delete\',\n cancelText: \'Cancel\',\n })\n .then((dialog) => {\n return Api.delete(\n `/openc3-api/storage/delete/${encodeURIComponent(\n this.path,\n )}${filename}?${\n this.mode\n }=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n })\n .then((response) => {\n this.updateFiles()\n })\n },\n updateFiles() {\n let root = this.root.toUpperCase()\n if (this.mode === \'volume\') {\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/files/OPENC3_${root}_${this.mode.toUpperCase()}/${\n this.path\n }`,\n )\n .then((response) => {\n this.files = response.data[0].map((bucket) => {\n return { name: bucket, icon: \'mdi-folder\' }\n })\n this.files = this.files.concat(\n response.data[1].map((item) => {\n return {\n name: item.name,\n icon: \'mdi-file\',\n size: item.size,\n modified: item.modified,\n }\n }),\n )\n })\n .catch((response) => {\n this.files = []\n if (response.data.message) {\n this.$notify.caution({\n title: response.data.message,\n })\n } else {\n this.$notify.caution({\n title: response.message,\n })\n }\n })\n },\n },\n}\n<\/script>\n\n<style scoped>\n.font-size {\n font-size: 1rem;\n}\n.small-font-size {\n font-size: 0.8rem;\n}\n.file-input {\n padding-top: 0px;\n margin-top: 0px;\n}\n</style>\n']},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"f499b2f27c44367f7e64f8df7e0877cd56593464"},i=t[l]||(t[l]={});i[n]&&i[n].hash===e||(i[n]=o);var s=i[n];return y=function(){return s},s}y();const k={components:{TopBar:m},data(){return y().f[0]++,y().s[0]++,{title:"Bucket Explorer",search:"",root:"",mode:"bucket",buckets:[],volumes:[],uploadPathDialog:!1,path:"",file:null,files:[],headers:[{text:"Name",value:"name"},{text:"Size",value:"size"},{text:"Modified Date",value:"modified"},{text:"Action",value:"action"}]}},computed:{folderTotal(){return y().f[1]++,y().s[1]++,this.files.reduce(((n,e)=>(y().f[2]++,y().s[2]++,n+(e.size?(y().b[0][0]++,e.size):(y().b[0][1]++,0)))),0).toLocaleString()}},created(){if(y().f[3]++,y().s[3]++,g.get("/openc3-api/storage/buckets").then((n=>{y().f[4]++,y().s[4]++,this.buckets=n.data})),y().s[5]++,g.get("/openc3-api/storage/volumes").then((n=>{y().f[5]++,y().s[6]++,this.volumes=n.data})),y().s[7]++,this.$route.params.path){y().b[1][0]++;let n=(y().s[8]++,this.$route.params.path.split("/"));y().s[9]++,""===n[0]?(y().b[2][0]++,y().s[10]++,this.mode="volume",y().s[11]++,this.root=`/${n[1]}`,y().s[12]++,this.path=n.slice(2).join("/")):(y().b[2][1]++,y().s[13]++,this.mode="bucket",y().s[14]++,this.root=n[0],y().s[15]++,this.path=n.slice(1).join("/")),y().s[16]++,this.updateFiles()}else y().b[1][1]++},watch:{file:async function(){if(y().f[6]++,y().s[17]++,null===this.file)return y().b[3][0]++,void y().s[18]++;y().b[3][1]++,y().s[19]++,this.uploadFilePath=`${this.path}${this.file.name}`,y().s[20]++,this.uploadPathDialog=!0}},methods:{update(){y().f[7]++,y().s[21]++,this.$router.push({name:"Bucket Explorer",params:{path:`${this.root}/${this.path}`}}),y().s[22]++,this.updateFiles()},selectBucket(n){if(y().f[8]++,y().s[23]++,this.root===n)return y().b[4][0]++,void y().s[24]++;y().b[4][1]++,y().s[25]++,this.mode="bucket",y().s[26]++,this.root=n,y().s[27]++,this.path="",y().s[28]++,this.update()},selectVolume(n){if(y().f[9]++,y().s[29]++,this.root===n)return y().b[5][0]++,void y().s[30]++;y().b[5][1]++,y().s[31]++,this.mode="volume",y().s[32]++,this.root=n,y().s[33]++,this.path="",y().s[34]++,this.update()},backArrow(){if(y().f[10]++,y().s[35]++,""===this.path)return y().b[6][0]++,void y().s[36]++;y().b[6][1]++;let n=(y().s[37]++,this.path.split("/"));y().s[38]++,this.path=n.slice(0,n.length-2).join("/"),y().s[39]++,n.length>2?(y().b[7][0]++,y().s[40]++,this.path+="/"):y().b[7][1]++,y().s[41]++,this.update()},fileClick(n){y().f[11]++,y().s[42]++,"mdi-folder"===n.icon?(y().b[8][0]++,y().s[43]++,""===this.root?(y().b[9][0]++,y().s[44]++,this.root=n.name):(y().b[9][1]++,y().s[45]++,this.path+=`${n.name}/`),y().s[46]++,this.update()):y().b[8][1]++},downloadFile(n){y().f[12]++;let e=(y().s[47]++,this.root.toUpperCase()),t=(y().s[48]++,"download");y().s[49]++,"volume"===this.mode?(y().b[10][0]++,y().s[50]++,t="download_file",y().s[51]++,e=e.slice(1)):y().b[10][1]++,y().s[52]++,g.get(`/openc3-api/storage/${t}/${encodeURIComponent(this.path)}${n}?${this.mode}=OPENC3_${e}_${this.mode.toUpperCase()}`).then((e=>{y().f[13]++;let t=(y().s[53]++,null);if(y().s[54]++,"bucket"===this.mode)y().b[11][0]++,y().s[55]++,t=e.data.url;else{y().b[11][1]++;const n=(y().s[56]++,window.atob(e.data.contents)),l=(y().s[57]++,new Uint8Array(n.length));y().s[58]++;for(let e=(y().s[59]++,0);e<n.length;++e)y().s[60]++,l[e]=n.charCodeAt(e);const o=(y().s[61]++,new Blob([l]));y().s[62]++,t=URL.createObjectURL(o)}const l=(y().s[63]++,document.createElement("a"));y().s[64]++,l.href=t,y().s[65]++,l.setAttribute("download",n),y().s[66]++,l.click()})).catch((e=>{y().f[14]++,y().s[67]++,this.$notify.caution({title:`Unable to download file ${this.path}${n} from bucket ${this.root}`})}))},async uploadFile(){y().f[15]++,y().s[68]++,this.uploadPathDialog=!1,y().s[69]++,this.uploadFilePath.startsWith("/")?(y().b[12][0]++,y().s[70]++,this.uploadFilePath=this.uploadFilePath.slice(1)):y().b[12][1]++;const{data:n}=(y().s[71]++,await g.get(`/openc3-api/storage/upload/${encodeURIComponent(this.uploadFilePath)}?bucket=OPENC3_${this.root.toUpperCase()}_BUCKET`));y().s[72]++,await(0,A.A)({...n,data:this.file});y().s[73]++,this.file=null,y().s[74]++,this.path=this.uploadFilePath.split("/").slice(0,-1).join("/")+"/",y().s[75]++,this.updateFiles()},deleteFile(n){y().f[16]++;let e=(y().s[76]++,this.root.toUpperCase());y().s[77]++,"volume"===this.mode?(y().b[13][0]++,y().s[78]++,e=e.slice(1)):y().b[13][1]++,y().s[79]++,this.$dialog.confirm(`Are you sure you want to delete: ${n}`,{okText:"Delete",cancelText:"Cancel"}).then((t=>(y().f[17]++,y().s[80]++,g.delete(`/openc3-api/storage/delete/${encodeURIComponent(this.path)}${n}?${this.mode}=OPENC3_${e}_${this.mode.toUpperCase()}`)))).then((n=>{y().f[18]++,y().s[81]++,this.updateFiles()}))},updateFiles(){y().f[19]++;let n=(y().s[82]++,this.root.toUpperCase());y().s[83]++,"volume"===this.mode?(y().b[14][0]++,y().s[84]++,n=n.slice(1)):y().b[14][1]++,y().s[85]++,g.get(`/openc3-api/storage/files/OPENC3_${n}_${this.mode.toUpperCase()}/${this.path}`).then((n=>{y().f[20]++,y().s[86]++,this.files=n.data[0].map((n=>(y().f[21]++,y().s[87]++,{name:n,icon:"mdi-folder"}))),y().s[88]++,this.files=this.files.concat(n.data[1].map((n=>(y().f[22]++,y().s[89]++,{name:n.name,icon:"mdi-file",size:n.size,modified:n.modified}))))})).catch((n=>{y().f[23]++,y().s[90]++,this.files=[],y().s[91]++,n.data.message?(y().b[15][0]++,y().s[92]++,this.$notify.caution({title:n.data.message})):(y().b[15][1]++,y().s[93]++,this.$notify.caution({title:n.message}))}))}}},x=k;t(1398);var w=(0,u.A)(x,o,i,!1,null,"2ae0d14e",null);const $=w.exports},3534:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>c});var l=t(6758),o=t.n(l),i=t(935),s=t.n(i),a=s()(o());a.push([n.id,".font-size[data-v-2ae0d14e]{font-size:1rem}.small-font-size[data-v-2ae0d14e]{font-size:.8rem}.file-input[data-v-2ae0d14e]{padding-top:0;margin-top:0}",""]);const c=a},9808:(n,e,t)=>{"use strict";t.r(e),t.d(e,{default:()=>c});var l=t(6758),o=t.n(l),i=t(935),s=t.n(i),a=s()(o());a.push([n.id,".app-title[data-v-57d4fdd2]{font-size:2rem}.menu-button[data-v-57d4fdd2]{border-color:var(--color-border-interactive-muted)!important;background-color:var(--color-background-base-default)!important;padding-right:3px!important}span.v-btn__content span[data-v-57d4fdd2]{padding-right:5px}.myicon[data-v-57d4fdd2]{background-color:var(--color-background-surface-selected);border:1px solid currentColor;border-radius:3px;height:36px!important;width:36px!important}.v-list[data-v-57d4fdd2] .v-label{margin-left:5px}.v-list-item__icon[data-v-57d4fdd2]{margin-right:15px!important}.v-list-item__title[data-v-57d4fdd2]{color:#fff}",""]);const c=a},1398:(n,e,t)=>{var l=t(3534);l.__esModule&&(l=l.default),"string"===typeof l&&(l=[[n.id,l,""]]),l.locals&&(n.exports=l.locals);var o=t(4825).A;o("2b6de4e2",l,!0,{sourceMap:!1,shadowMode:!1})},1e3:(n,e,t)=>{var l=t(9808);l.__esModule&&(l=l.default),"string"===typeof l&&(l=[[n.id,l,""]]),l.locals&&(n.exports=l.locals);var o=t(4825).A;o("7de62207",l,!0,{sourceMap:!1,shadowMode:!1})}}]);
|
2
2
|
//# sourceMappingURL=970.js.map
|