UNPKG

adaptorex

Version:

Connect all your live interactive storytelling devices and software

2 lines (1 loc) 10.2 kB
import{E as ne,u as ie,r as E,c as U,a as ue,b as re,d as r,o as u,e as a,f as j,g as ce,w as p,F as w,h as $,l as h,G as de,m as J,i as k,t as m,H as G,j as b,k as M,P as y,I as ve,v as me,B as I,C as fe,_ as pe,J as he,K as _e,q as Ce,p as be,D as ge,L as xe}from"./index-BpVbOCok.js";import{_ as De}from"./FoldOut-DMTy7aLC.js";const S=O=>(he("data-v-8ac7b2fe"),O=O(),_e(),O),we={class:"is-scroll-container is-flex is-flex-direction-column has-background-purple-5 p-4"},ke=S(()=>a("h1",{class:"title is-5 is-uppercase"},"Collections",-1)),Me={class:"p-1"},ye={class:"level is-interactive"},Ie={class:"level-left ml-1"},Oe={class:"level-item"},Te={class:"subtitle"},Ne={class:"level-right"},Ee={class:"level-item is-danger"},$e=["onClick"],Se={class:"level-item"},Le=["onClick"],Re={class:"collection-table-container"},Ue={key:0,class:"table is-striped is-bordered"},Be={colspan:"100%",class:"has-background-light p-2"},Ae={class:"is-flex is-justify-content-flex-start"},Fe={class:"checkbox"},Ve=S(()=>a("span",{class:"ml-1 mr-2"},"Show Metadata",-1)),je=S(()=>a("th",{class:"actions-cell has-background-light"},[a("div",{class:"is-flex is-align-items-center"},"actions")],-1)),Je=["onClick"],Ge={class:"is-flex is-align-items-center is-unselectable"},Ke={class:"actions-cell has-background-white"},Pe={class:"buttons"},qe=["onClick"],He=["onClick"],We=["onClick"],Ye={class:"has-text-lines-5"},ze={key:1,class:"button is-loading is-fullwidth"},Qe={key:2,class:"m-3 content"},Xe={class:"has-text-pre-wrap",for:"value"},Ze=S(()=>a("div",{class:"is-flex-grow-1"},null,-1)),et={__name:"GameCollections",setup(O){const c=ie(),L=["_id","created_at","modified_at","created_by","modified_by","created_with","modified_with","sessions"],B={DANGER:"is-danger",WARNING:"is-warning"},i={INPUT:"input",MULTILINE:"multiline",FORM:"form"};c.dispatch("collections/getAll");const T=E(!1),g=E(!0),_=E("");function K(t){_.value===t?g.value=!g.value:(_.value=t,g.value=!0)}function P(t){return!C.value[t]||!_.value?C.value[t]:[...C.value[t]].sort((e,l)=>{const n=(e[_.value]??"").toString().toUpperCase(),o=(l[_.value]??"").toString().toUpperCase();return g.value?n.localeCompare(o):o.localeCompare(n)})}const q=U(()=>c.state.collections.names),C=U(()=>c.state.collections.documents),x=U(()=>c.state.collections.schema),A={visible:!1,onConfirm:void 0,onDismiss:()=>s.value.visible=!1,title:"...",text:"...",confirmButtonText:"Confirm",dismissButtonText:"Cancel",style:"is-info",mode:"",value:void 0,originValue:void 0,editable:!1},s=E({...A});function d(t){s.value=Object.assign(s.value,A,{visible:!0,originValue:t?.value||""},t)}function H(t){return{title:"Delete Collection",text:`Do you really want do delete the Collection ${t}?`,confirmButtonText:`Delete ${t}`,style:B.DANGER,onConfirm:()=>oe(t)}}function R(t,e,l="view"){const n={collection:t,value:l==="view"?JSON.stringify(e,null,2):F(e),mode:l==="view"?i.MULTILINE:i.FORM,editable:l!=="view"};switch(l){case"view":return{...n,title:"View Document",text:`View Document ${e._id}${e.name?` (${e.name})`:""} in Collection ${t}`,confirmButtonText:"Copy to Clipboard",onConfirm:()=>se(t,e)};case"edit":return{...n,title:"Update Document",text:`Update Document ${e._id}${e.name?` (${e.name})`:""} in Collection ${t}`,confirmButtonText:"Update",onConfirm:()=>ee(t,e)};case"archive":return{title:"Remove Document",text:`Are you sure you want to remove the document ${e._id}? The document will be moved to the archive.`,confirmButtonText:"Remove",style:B.WARNING,onConfirm:()=>te(t,e._id)};default:return n}}function W(t){return{title:`Create Document in ${t.toUpperCase()}`,text:`Create new Document in Collection ${t}`,collection:t,value:z(t),confirmButtonText:"Create",mode:i.FORM,editable:!0,onConfirm:()=>Z(s.value.collection,s.value.value)}}function Y(){return{title:"New Collection",text:"Give your new Collection a name.",confirmButtonText:"Create",onConfirm:()=>ae(),mode:i.INPUT}}function z(t){const e=be.cloneDeep(x.value[t]),l=Object.assign(e,{required:Object.keys(x.value[t].properties)}),n=ge(l);return F(n)}function F(t){return Object.keys(t).filter(e=>!L.includes(e)).reduce((e,l)=>Object.assign(e,{[l]:t[l]}),{})}function V(t){return L.includes(t)}function Q(t,e){if(typeof e=="string")try{e=JSON.parse(e)}catch(l){const n=xe("ERROR.JSONCONVERT",{error:l.toString()});c.dispatch("adaptor/addLog",{type:"error",message:n});return}return L.forEach(l=>{l in t&&(e[l]=t[l])}),e}function X(t){c.dispatch("collections/getDocuments",{collection:t})}function Z(t,e){console.log("createDocument",t,e),c.dispatch("collections/createDocument",{collection:t,document:e}).then(()=>d({visible:!1}))}function ee(t,e){const l=e._id,n=Q(e,s.value.value);n&&c.dispatch("collections/updateDocument",{collection:t,id:l,data:n}).then(()=>d({visible:!1}))}function te(t,e){c.dispatch("collections/archiveDocument",{collection:t,document:e}).then(()=>d({visible:!1}))}function se(t,e){const l=JSON.stringify(e,null,2);navigator.clipboard.writeText(l).then(()=>{c.dispatch("adaptor/addLog",{type:"success",message:`Document from ${t} copied to clipboard`})}).catch(n=>{c.dispatch("adaptor/addLog",{type:"error",message:`Failed to copy document: ${n}`})}),d({visible:!1})}function ae(){c.dispatch("collections/createCollection",{name:s.value.value}).then(()=>d({visible:!1}))}function oe(t){c.dispatch("collections/deleteCollection",{collection:t}).then(()=>d({visible:!1}))}function N(t){if(t!==s.value.mode)if(t===i.FORM)try{let e=JSON.parse(s.value.value);s.value.mode=i.FORM,s.value.value=e}catch(e){c.dispatch("adaptor/addLog",{type:"error",message:`${e}`})}else s.value.mode=i.MULTILINE,s.value.originValue=s.value.value,s.value.value=JSON.stringify(s.value.value,null,2)}function le(t,e){return e==="created_at"||e==="modified_at"?Ce(t):t??""}return(t,e)=>{const l=ue("Icon"),n=re("permission");return u(),r(w,null,[a("div",we,[ke,(u(!0),r(w,null,$(q.value,o=>(u(),j(De,{key:o,class:"has-background-white has-border m-2",onOnOpen:v=>X(o)},{header:h(()=>[a("div",Me,[a("nav",ye,[a("div",Ie,[a("div",Oe,[a("p",Te,m(o),1)])]),a("div",Ne,[p((u(),r("p",Ee,[a("a",{class:"has-text-danger",onClick:b(v=>d(H(o)),["stop"])}," Delete Collection ",8,$e)])),[[n,M(y).DELETE_COLLECTION,"hide"]]),p((u(),r("p",Se,[a("a",{class:"button is-success",onClick:b(v=>d(W(o)),["stop"])},"Add Document",8,Le)])),[[n,M(y).CREATE_ITEM]])])])])]),default:h(()=>[a("div",Re,[C.value[o]&&C.value[o].length>0?(u(),r("table",Ue,[a("thead",null,[a("tr",null,[a("th",Be,[a("div",Ae,[a("label",Fe,[Ve,p(a("input",{"onUpdate:modelValue":e[0]||(e[0]=v=>T.value=v),type:"checkbox"},null,512),[[de,T.value]])])])])]),a("tr",null,[je,(u(!0),r(w,null,$(x.value[o].properties,(v,f)=>p((u(),r("th",{key:`${o}_key_${f}`,class:"is-clickable",onClick:D=>K(f)},[a("p",Ge,[J(m(f)+" ",1),k(l,{icon:_.value===f?g.value?"arrow-down":"arrow-up":"minus",class:"ml-2"},null,8,["icon"])])],8,Je)),[[G,!V(f)||T.value]])),128))])]),a("tbody",null,[(u(!0),r(w,null,$(P(o),v=>(u(),r("tr",{key:v._id},[a("td",Ke,[a("div",Pe,[a("a",{class:"button is-small is-rounded is-light",onClick:b(f=>d(R(o,v,"view")),["stop"])},[k(l,{class:"has-text-dark",icon:"file",tooltip:"View Document"})],8,qe),p((u(),r("a",{class:"button is-small is-rounded is-light",onClick:b(f=>d(R(o,v,"edit")),["stop"])},[k(l,{class:"has-text-dark",icon:"edit",tooltip:"Edit Document"})],8,He)),[[n,M(y).EDIT_ITEMS]]),p((u(),r("a",{class:"button is-small is-rounded is-light",onClick:b(f=>d(R(o,v,"archive")),["stop"])},[k(l,{class:"has-text-dark",icon:"trash-2",tooltip:"Remove Document"})],8,We)),[[n,M(y).ARCHIVE_ITEMS]])])]),(u(!0),r(w,null,$(x.value[o].properties,(f,D)=>p((u(),r("td",{key:`${v._id}_${D}`},[a("span",Ye,m(le(v?.[D],D)),1)])),[[G,!V(D)||T.value]])),128))]))),128))])])):C.value[o]?(u(),r("span",Qe,"Collection "+m(o)+" has no Items.",1)):(u(),r("a",ze,"Loading"))])]),_:2},1032,["onOnOpen"]))),128)),p((u(),r("section",null,[a("button",{class:"button is-dark m-2",onClick:e[1]||(e[1]=b(o=>d(Y()),["stop"]))},"New Collection")])),[[n,M(y).CREATE_COLLECTION]])]),s.value.visible?(u(),j(pe,{key:0,modal:s.value,"css-classes":[s.value.style],onCloseModal:e[11]||(e[11]=o=>s.value.visible=!1)},ve({header:h(()=>[J(m(s.value.title),1)]),footer:h(()=>[a("button",{class:I(["button m-1",s.value.style]),onClick:e[9]||(e[9]=(...o)=>s.value.onConfirm&&s.value.onConfirm(...o))},m(s.value.confirmButtonText),3),a("button",{class:"button m-1",onClick:e[10]||(e[10]=(...o)=>s.value.onDismiss&&s.value.onDismiss(...o))},m(s.value.dismissButtonText),1),Ze]),_:2},[s.value.mode===i.INPUT?{name:"default",fn:h(()=>[a("label",Xe,m(s.value.text),1),p(a("input",{"onUpdate:modelValue":e[2]||(e[2]=o=>s.value.value=o),class:"input",type:"text",name:"value"},null,512),[[me,s.value.value]])]),key:"0"}:s.value.mode===i.MULTILINE?{name:"default",fn:h(()=>[a("label",{for:"value"},m(s.value.text),1),a("div",{class:"is-flex is-justify-content-flex-end"},[a("div",{class:"mode-switcher"},[a("button",{class:I(["mode-button",{"is-active":s.value.mode===i.FORM}]),onClick:e[3]||(e[3]=o=>N(i.FORM))}," Form ",2),a("button",{class:I(["mode-button",{"is-active":s.value.mode===i.MULTILINE}]),onClick:e[4]||(e[4]=o=>N(i.MULTILINE))}," JSON ",2)])]),a("pre",{class:"has-text-black",contenteditable:s.value.editable,onInput:e[5]||(e[5]=o=>s.value.value=o.target.textContent)},m(s.value.originValue),41,["contenteditable"])]),key:"1"}:s.value.mode===i.FORM?{name:"default",fn:h(()=>[a("label",{for:"value"},m(s.value.text),1),a("div",{class:"is-flex is-justify-content-flex-end"},[a("div",{class:"mode-switcher"},[a("button",{class:I(["mode-button",{"is-active":s.value.mode===i.FORM}]),onClick:e[6]||(e[6]=o=>N(i.FORM))}," Form ",2),a("button",{class:I(["mode-button",{"is-active":s.value.mode===i.MULTILINE}]),onClick:e[7]||(e[7]=o=>N(i.MULTILINE))}," JSON ",2)])]),k(fe,{data:s.value.value,schema:x.value[s.value.collection],"show-controls":!1,onDataChanged:e[8]||(e[8]=o=>s.value.value=o)},null,8,["data","schema"])]),key:"2"}:{name:"default",fn:h(()=>[a("label",{for:"value"},m(s.value.text),1)]),key:"3"}]),1032,["modal","css-classes"])):ce("",!0)],64)}}},at=ne(et,[["__scopeId","data-v-8ac7b2fe"]]);export{at as default};