diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 2db0393f..a84b7c22 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -37,9 +37,9 @@ android {
else -> 0
}
- val vCode = 217
+ val vCode = 220
versionCode = vCode - singleAbiNum
- versionName = "1.2.28"
+ versionName = "1.2.29"
ndk {
//noinspection ChromeOsAbiSupport
diff --git a/app/src/main/resources/web/assets/AIChatView-46541959.js b/app/src/main/resources/web/assets/AIChatView-81429749.js
similarity index 95%
rename from app/src/main/resources/web/assets/AIChatView-46541959.js
rename to app/src/main/resources/web/assets/AIChatView-81429749.js
index 494c27aa..8df6b9f5 100644
--- a/app/src/main/resources/web/assets/AIChatView-46541959.js
+++ b/app/src/main/resources/web/assets/AIChatView-81429749.js
@@ -1,4 +1,4 @@
-import{d as Z,e as ee,u as te,D as ae,r,s as se,f as ne,g as oe,i as B,aQ as ie,U as Q,O as le,P as R,Q as ce,R as de,c as u,a as s,p as h,H as f,j as l,x as re,a$ as ue,b0 as pe,b1 as _e,o as c,F as ve,J as me,t as p,b2 as I,k as N,S as he,m as $,Y as K,h as z,b3 as F,v as fe,ap as y,l as m,b4 as ye,at as ge,b5 as Ce,A as be,B as ke,_ as Ae}from"./index-f62f2ff2.js";import{g as G,M as we}from"./splitpanes.es-2b477659.js";import{u as Me}from"./markdown-737d43fa.js";const Ie=g=>(be("data-v-511dc1cd"),g=g(),ke(),g),$e={class:"page-container"},xe={class:"main"},Te={key:0,class:"date"},De={class:"chat-title"},Le={class:"name"},Se={class:"time"},Ve={class:"menu-items"},He=["onClick","disabled"],Be={slot:"headline"},Qe={key:2,class:"chat-title"},Re={class:"name"},Ne={class:"time"},Ke=["innerHTML"],ze={key:0,class:"chat-item replying"},Fe={class:"chat-title"},Ge={class:"name"},Ue=["innerHTML"],qe=["placeholder","onKeydown"],Pe={class:"btns"},je=["onClick"],Ee=Ie(()=>s("md-ripple",null,null,-1)),Je=Z({__name:"AIChatView",setup(g){const U=ee(),{t:q}=te(),P=ae(),d=r(P.params.id),i=r(""),_=r([]),C=r(!1),b=r(""),A=r(""),{app:j,urlTokenKey:E}=se(ne()),x=r(),{render:k}=Me(j,E);function w(){return d.value==="create"}function J(e,t){let n=!1;if(t==0)n=!0;else{const o=t>0?_.value[t-1]:null;o!=null&&I(o.createdAt)!==I(e.createdAt)&&(n=!0)}return n}w()||oe({handle:async(e,t)=>{if(t)re(q(t),"error");else{const n=[];n.push({...e.aiChat,md:await k(e.aiChat.content)});for(const o of e.aiChats)n.push({...o,md:await k(o.content)});_.value=n,await Q(),L()}},document:ue,variables:()=>({id:d.value,query:`parent_id:${d.value} sort:created_at-asc`}),appApi:!0});const{mutate:T,onDone:O}=B({document:pe,appApi:!0});function D(){!i.value||C.value||T({id:w()?"":d.value,message:i.value,isMe:!0})}O(async e=>{var n;const t=e.data.createAIChat;if(t){for(const v of t)(n=_.value)==null||n.push({...v,md:await k(v.content)});w()&&(d.value=t[0].id,ie(U,`/aichats/${d.value}`)),i.value="",C.value=!C.value,b.value="",A.value='',await Q(),L()}});function L(){const e=x.value;e&&(e.scrollTop=e.scrollHeight)}const M=r(""),{mutate:Y,loading:W}=B({document:_e,options:{update:e=>{var n,o;e.evict({id:e.identify({__typename:"AIChat",id:M.value})});const t=(n=_.value)==null?void 0:n.findIndex(v=>v.id===M.value);t!==null&&((o=_.value)==null||o.splice(t,1))}},appApi:!0});function X(e){M.value=e,Y({query:`ids:${e}`})}const S=async e=>{e.parentId===d.value&&(b.value+=e.content,A.value=await k(b.value+''),e.finishReason==="stop"&&T({id:d.value,message:b.value,isMe:!1}))};return le(()=>{R.on("ai_chat_replied",S)}),ce(()=>{R.off("ai_chat_replied",S)}),(e,t)=>{const n=ye,o=ge,v=Ce,V=de("tooltip");return c(),u("div",$e,[s("div",xe,[h(l(we),{class:"chat-container",horizontal:""},{default:f(()=>[h(l(G),{size:"80"},{default:f(()=>[s("div",{class:"chat-items",ref_key:"scrollContainer",ref:x},[(c(!0),u(ve,null,me(_.value,(a,H)=>(c(),u("div",{key:a.id,class:"chat-item"},[J(a,H)?(c(),u("div",Te,p(l(I)(a.createdAt)),1)):N("",!0),H>0?(c(),he(o,{key:1},{content:f(()=>[s("div",Ve,[s("md-menu-item",{onClick:Oe=>X(a.id),disabled:l(W)},[s("div",Be,p(e.$t("delete_message")),1)],8,He)])]),default:f(()=>[s("div",De,[s("span",Le,p(e.$t(a.isMe?"me":"ai")),1),$((c(),u("span",Se,[z(p(l(F)(a.createdAt)),1)])),[[V,l(K)(a.createdAt)]]),h(n,{class:"bi bi-more"})])]),_:2},1024)):(c(),u("div",Qe,[s("span",Re,p(e.$t(a.isMe?"me":"ai")),1),$((c(),u("span",Ne,[z(p(l(F)(a.createdAt)),1)])),[[V,l(K)(a.createdAt)]])])),s("div",{class:"chat-content md-container",innerHTML:a.md},null,8,Ke)]))),128)),C.value?(c(),u("div",ze,[s("div",Fe,[s("span",Ge,p(e.$t("ai")),1)]),s("div",{class:"chat-content md-container",innerHTML:A.value},null,8,Ue)])):N("",!0)],512)]),_:1}),h(l(G),{class:"chat-input",size:"12",style:{"min-height":"80px"}},{default:f(()=>[$(s("md-outlined-text-field",{class:"textarea",type:"textarea","onUpdate:modelValue":t[0]||(t[0]=a=>i.value=a),autocomplete:"off",placeholder:e.$t("chat_input_hint"),onKeydown:[y(m(D,["exact","prevent"]),["enter"]),t[1]||(t[1]=y(m(a=>i.value+=`
+import{d as Z,e as ee,u as te,D as ae,r,s as se,f as ne,g as oe,i as B,aQ as ie,U as Q,O as le,P as R,Q as ce,R as de,c as u,a as s,p as h,H as f,j as l,x as re,a$ as ue,b0 as pe,b1 as _e,o as c,F as ve,J as me,t as p,b2 as I,k as N,S as he,m as $,Y as K,h as z,b3 as F,v as fe,ap as y,l as m,b4 as ye,at as ge,b5 as Ce,A as be,B as ke,_ as Ae}from"./index-0c42270c.js";import{g as G,M as we}from"./splitpanes.es-7e8a6fea.js";import{u as Me}from"./markdown-fa9038b1.js";const Ie=g=>(be("data-v-511dc1cd"),g=g(),ke(),g),$e={class:"page-container"},xe={class:"main"},Te={key:0,class:"date"},De={class:"chat-title"},Le={class:"name"},Se={class:"time"},Ve={class:"menu-items"},He=["onClick","disabled"],Be={slot:"headline"},Qe={key:2,class:"chat-title"},Re={class:"name"},Ne={class:"time"},Ke=["innerHTML"],ze={key:0,class:"chat-item replying"},Fe={class:"chat-title"},Ge={class:"name"},Ue=["innerHTML"],qe=["placeholder","onKeydown"],Pe={class:"btns"},je=["onClick"],Ee=Ie(()=>s("md-ripple",null,null,-1)),Je=Z({__name:"AIChatView",setup(g){const U=ee(),{t:q}=te(),P=ae(),d=r(P.params.id),i=r(""),_=r([]),C=r(!1),b=r(""),A=r(""),{app:j,urlTokenKey:E}=se(ne()),x=r(),{render:k}=Me(j,E);function w(){return d.value==="create"}function J(e,t){let n=!1;if(t==0)n=!0;else{const o=t>0?_.value[t-1]:null;o!=null&&I(o.createdAt)!==I(e.createdAt)&&(n=!0)}return n}w()||oe({handle:async(e,t)=>{if(t)re(q(t),"error");else{const n=[];n.push({...e.aiChat,md:await k(e.aiChat.content)});for(const o of e.aiChats)n.push({...o,md:await k(o.content)});_.value=n,await Q(),L()}},document:ue,variables:()=>({id:d.value,query:`parent_id:${d.value} sort:created_at-asc`}),appApi:!0});const{mutate:T,onDone:O}=B({document:pe,appApi:!0});function D(){!i.value||C.value||T({id:w()?"":d.value,message:i.value,isMe:!0})}O(async e=>{var n;const t=e.data.createAIChat;if(t){for(const v of t)(n=_.value)==null||n.push({...v,md:await k(v.content)});w()&&(d.value=t[0].id,ie(U,`/aichats/${d.value}`)),i.value="",C.value=!C.value,b.value="",A.value='',await Q(),L()}});function L(){const e=x.value;e&&(e.scrollTop=e.scrollHeight)}const M=r(""),{mutate:Y,loading:W}=B({document:_e,options:{update:e=>{var n,o;e.evict({id:e.identify({__typename:"AIChat",id:M.value})});const t=(n=_.value)==null?void 0:n.findIndex(v=>v.id===M.value);t!==null&&((o=_.value)==null||o.splice(t,1))}},appApi:!0});function X(e){M.value=e,Y({query:`ids:${e}`})}const S=async e=>{e.parentId===d.value&&(b.value+=e.content,A.value=await k(b.value+''),e.finishReason==="stop"&&T({id:d.value,message:b.value,isMe:!1}))};return le(()=>{R.on("ai_chat_replied",S)}),ce(()=>{R.off("ai_chat_replied",S)}),(e,t)=>{const n=ye,o=ge,v=Ce,V=de("tooltip");return c(),u("div",$e,[s("div",xe,[h(l(we),{class:"chat-container",horizontal:""},{default:f(()=>[h(l(G),{size:"80"},{default:f(()=>[s("div",{class:"chat-items",ref_key:"scrollContainer",ref:x},[(c(!0),u(ve,null,me(_.value,(a,H)=>(c(),u("div",{key:a.id,class:"chat-item"},[J(a,H)?(c(),u("div",Te,p(l(I)(a.createdAt)),1)):N("",!0),H>0?(c(),he(o,{key:1},{content:f(()=>[s("div",Ve,[s("md-menu-item",{onClick:Oe=>X(a.id),disabled:l(W)},[s("div",Be,p(e.$t("delete_message")),1)],8,He)])]),default:f(()=>[s("div",De,[s("span",Le,p(e.$t(a.isMe?"me":"ai")),1),$((c(),u("span",Se,[z(p(l(F)(a.createdAt)),1)])),[[V,l(K)(a.createdAt)]]),h(n,{class:"bi bi-more"})])]),_:2},1024)):(c(),u("div",Qe,[s("span",Re,p(e.$t(a.isMe?"me":"ai")),1),$((c(),u("span",Ne,[z(p(l(F)(a.createdAt)),1)])),[[V,l(K)(a.createdAt)]])])),s("div",{class:"chat-content md-container",innerHTML:a.md},null,8,Ke)]))),128)),C.value?(c(),u("div",ze,[s("div",Fe,[s("span",Ge,p(e.$t("ai")),1)]),s("div",{class:"chat-content md-container",innerHTML:A.value},null,8,Ue)])):N("",!0)],512)]),_:1}),h(l(G),{class:"chat-input",size:"12",style:{"min-height":"80px"}},{default:f(()=>[$(s("md-outlined-text-field",{class:"textarea",type:"textarea","onUpdate:modelValue":t[0]||(t[0]=a=>i.value=a),autocomplete:"off",placeholder:e.$t("chat_input_hint"),onKeydown:[y(m(D,["exact","prevent"]),["enter"]),t[1]||(t[1]=y(m(a=>i.value+=`
`,["shift","exact","prevent"]),["enter"])),t[2]||(t[2]=y(m(a=>i.value+=`
`,["ctrl","exact","prevent"]),["enter"])),t[3]||(t[3]=y(m(a=>i.value+=`
`,["alt","exact","prevent"]),["enter"])),t[4]||(t[4]=y(m(a=>i.value+=`
diff --git a/app/src/main/resources/web/assets/AIChatsRootView-1a9d7e4e.js b/app/src/main/resources/web/assets/AIChatsRootView-9d2a06a5.js
similarity index 91%
rename from app/src/main/resources/web/assets/AIChatsRootView-1a9d7e4e.js
rename to app/src/main/resources/web/assets/AIChatsRootView-9d2a06a5.js
index 071d63bb..0c304dd4 100644
--- a/app/src/main/resources/web/assets/AIChatsRootView-1a9d7e4e.js
+++ b/app/src/main/resources/web/assets/AIChatsRootView-9d2a06a5.js
@@ -1 +1 @@
-import{_ as A}from"./TagFilter.vuevuetypescriptsetuptruelang-9b4a0b6e.js";import{o as p,c as _,a as e,d as k,r as M,u as L,i as V,b6 as x,an as G,g as I,x as D,b7 as N,U as S,ao as C,m as w,v as Z,j as t,n as B,ap as K,t as m,D as P,e as Q,E as R,G as z,R as E,p as i,H as $,h as F,l as b,I as H,C as U,a2 as j}from"./index-f62f2ff2.js";import{g as y,M as J}from"./splitpanes.es-2b477659.js";import{u as O,a as W}from"./vee-validate.esm-65abdaa1.js";import"./EditValueModal-d57e85f6.js";const X={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Y=e("path",{fill:"currentColor",d:"m9.25 22l-.4-3.2q-.325-.125-.613-.3t-.562-.375L4.7 19.375l-2.75-4.75l2.575-1.95Q4.5 12.5 4.5 12.337v-.674q0-.163.025-.338L1.95 9.375l2.75-4.75l2.975 1.25q.275-.2.575-.375t.6-.3l.4-3.2h5.5l.4 3.2q.325.125.613.3t.562.375l2.975-1.25l2.75 4.75l-2.575 1.95q.025.175.025.338v.674q0 .163-.05.338l2.575 1.95l-2.75 4.75l-2.95-1.25q-.275.2-.575.375t-.6.3l-.4 3.2h-5.5Zm2.8-6.5q1.45 0 2.475-1.025T15.55 12q0-1.45-1.025-2.475T12.05 8.5q-1.475 0-2.488 1.025T8.55 12q0 1.45 1.012 2.475T12.05 15.5Zm0-2q-.625 0-1.063-.438T10.55 12q0-.625.438-1.063t1.062-.437q.625 0 1.063.438T13.55 12q0 .625-.438 1.063t-1.062.437ZM12 12Zm-1 8h1.975l.35-2.65q.775-.2 1.438-.588t1.212-.937l2.475 1.025l.975-1.7l-2.15-1.625q.125-.35.175-.737T17.5 12q0-.4-.05-.787t-.175-.738l2.15-1.625l-.975-1.7l-2.475 1.05q-.55-.575-1.212-.962t-1.438-.588L13 4h-1.975l-.35 2.65q-.775.2-1.437.588t-1.213.937L5.55 7.15l-.975 1.7l2.15 1.6q-.125.375-.175.75t-.05.8q0 .4.05.775t.175.75l-2.15 1.625l.975 1.7l2.475-1.05q.55.575 1.213.963t1.437.587L11 20Z"},null,-1),tt=[Y];function et(h,r){return p(),_("svg",X,tt)}const ot={name:"material-symbols-settings-outline",render:et},st=e("div",{slot:"headline"},"ChatGPT",-1),at={slot:"content"},nt=["label","error","error-text"],lt={slot:"actions"},it=["disabled"],rt=k({__name:"AIChatConfigModal",props:{value:{type:String}},setup(h){const r=h,{handleSubmit:v}=O(),c=M(),{t:f}=L(),{mutate:q,loading:u,onDone:T}=V({document:x,options:{update:()=>{}},appApi:!0}),{value:a,resetField:g,errorMessage:d}=W("inputValue",G());a.value=r.value??"",a.value||g(),I({handle:(s,o)=>{o?D(f(o),"error"):s&&(a.value=s.aiChatConfig.chatGPTApiKey)},document:N,variables:null,appApi:!0}),(async()=>{var s;await S(),(s=c.value)==null||s.focus()})();const l=v(()=>{q({chatGPTApiKey:a.value??""})});return T(()=>{C()}),(s,o)=>(p(),_("md-dialog",null,[st,e("div",at,[w(e("md-outlined-text-field",{ref_key:"input",ref:c,label:s.$t("api_key"),class:"form-control","onUpdate:modelValue":o[0]||(o[0]=n=>B(a)?a.value=n:null),onKeyup:o[1]||(o[1]=K((...n)=>t(l)&&t(l)(...n),["enter"])),error:t(d),"error-text":t(d)?s.$t(t(d)):""},null,40,nt),[[Z,t(a)]])]),e("div",lt,[e("md-outlined-button",{value:"cancel",onClick:o[2]||(o[2]=(...n)=>t(C)&&t(C)(...n))},m(s.$t("cancel")),1),e("md-filled-button",{value:"save",disabled:t(u),onClick:o[3]||(o[3]=(...n)=>t(l)&&t(l)(...n)),autofocus:""},m(s.$t("save")),9,it)])]))}}),ct={class:"page-container"},ut={class:"sidebar"},dt={class:"nav-title"},pt=["onClick"],_t=e("md-ripple",null,null,-1),mt={class:"nav"},ht=["onClick"],vt={class:"main"},Tt=k({__name:"AIChatsRootView",setup(h){const r=P(),v=Q(),c=R(r.query);function f(){U(v,"/aichats")}function q(){j(rt)}return(u,T)=>{const a=ot,g=A,d=z("router-view"),l=E("tooltip");return p(),_("div",ct,[i(t(J),null,{default:$(()=>[i(t(y),{size:"20","min-size":"10"},{default:$(()=>[e("div",ut,[e("h2",dt,[F(m(u.$t("page_title.aichats"))+" ",1),w((p(),_("button",{class:"icon-button",onClick:b(q,["prevent"])},[_t,i(a)],8,pt)),[[l,u.$t("config")]])]),e("ul",mt,[e("li",{onClick:b(f,["prevent"]),class:H({active:t(r).path==="/aichats"&&!t(c)})},m(u.$t("all")),11,ht)]),i(g,{type:"AI_CHAT",selected:t(c)},null,8,["selected"])])]),_:1}),i(t(y),null,{default:$(()=>[e("div",vt,[i(d)])]),_:1})]),_:1})])}}});export{Tt as default};
+import{_ as A}from"./TagFilter.vuevuetypescriptsetuptruelang-12e262c1.js";import{o as p,c as _,a as e,d as k,r as M,u as L,i as V,b6 as x,an as G,g as I,x as D,b7 as N,U as S,ao as C,m as w,v as Z,j as t,n as B,ap as K,t as m,D as P,e as Q,E as R,G as z,R as E,p as i,H as $,h as F,l as b,I as H,C as U,a2 as j}from"./index-0c42270c.js";import{g as y,M as J}from"./splitpanes.es-7e8a6fea.js";import{u as O,a as W}from"./vee-validate.esm-ca78f26f.js";import"./EditValueModal-c22a5b2d.js";const X={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Y=e("path",{fill:"currentColor",d:"m9.25 22l-.4-3.2q-.325-.125-.613-.3t-.562-.375L4.7 19.375l-2.75-4.75l2.575-1.95Q4.5 12.5 4.5 12.337v-.674q0-.163.025-.338L1.95 9.375l2.75-4.75l2.975 1.25q.275-.2.575-.375t.6-.3l.4-3.2h5.5l.4 3.2q.325.125.613.3t.562.375l2.975-1.25l2.75 4.75l-2.575 1.95q.025.175.025.338v.674q0 .163-.05.338l2.575 1.95l-2.75 4.75l-2.95-1.25q-.275.2-.575.375t-.6.3l-.4 3.2h-5.5Zm2.8-6.5q1.45 0 2.475-1.025T15.55 12q0-1.45-1.025-2.475T12.05 8.5q-1.475 0-2.488 1.025T8.55 12q0 1.45 1.012 2.475T12.05 15.5Zm0-2q-.625 0-1.063-.438T10.55 12q0-.625.438-1.063t1.062-.437q.625 0 1.063.438T13.55 12q0 .625-.438 1.063t-1.062.437ZM12 12Zm-1 8h1.975l.35-2.65q.775-.2 1.438-.588t1.212-.937l2.475 1.025l.975-1.7l-2.15-1.625q.125-.35.175-.737T17.5 12q0-.4-.05-.787t-.175-.738l2.15-1.625l-.975-1.7l-2.475 1.05q-.55-.575-1.212-.962t-1.438-.588L13 4h-1.975l-.35 2.65q-.775.2-1.437.588t-1.213.937L5.55 7.15l-.975 1.7l2.15 1.6q-.125.375-.175.75t-.05.8q0 .4.05.775t.175.75l-2.15 1.625l.975 1.7l2.475-1.05q.55.575 1.213.963t1.437.587L11 20Z"},null,-1),tt=[Y];function et(h,r){return p(),_("svg",X,tt)}const ot={name:"material-symbols-settings-outline",render:et},st=e("div",{slot:"headline"},"ChatGPT",-1),at={slot:"content"},nt=["label","error","error-text"],lt={slot:"actions"},it=["disabled"],rt=k({__name:"AIChatConfigModal",props:{value:{type:String}},setup(h){const r=h,{handleSubmit:v}=O(),c=M(),{t:f}=L(),{mutate:q,loading:u,onDone:T}=V({document:x,options:{update:()=>{}},appApi:!0}),{value:a,resetField:g,errorMessage:d}=W("inputValue",G());a.value=r.value??"",a.value||g(),I({handle:(s,o)=>{o?D(f(o),"error"):s&&(a.value=s.aiChatConfig.chatGPTApiKey)},document:N,variables:null,appApi:!0}),(async()=>{var s;await S(),(s=c.value)==null||s.focus()})();const l=v(()=>{q({chatGPTApiKey:a.value??""})});return T(()=>{C()}),(s,o)=>(p(),_("md-dialog",null,[st,e("div",at,[w(e("md-outlined-text-field",{ref_key:"input",ref:c,label:s.$t("api_key"),class:"form-control","onUpdate:modelValue":o[0]||(o[0]=n=>B(a)?a.value=n:null),onKeyup:o[1]||(o[1]=K((...n)=>t(l)&&t(l)(...n),["enter"])),error:t(d),"error-text":t(d)?s.$t(t(d)):""},null,40,nt),[[Z,t(a)]])]),e("div",lt,[e("md-outlined-button",{value:"cancel",onClick:o[2]||(o[2]=(...n)=>t(C)&&t(C)(...n))},m(s.$t("cancel")),1),e("md-filled-button",{value:"save",disabled:t(u),onClick:o[3]||(o[3]=(...n)=>t(l)&&t(l)(...n)),autofocus:""},m(s.$t("save")),9,it)])]))}}),ct={class:"page-container"},ut={class:"sidebar"},dt={class:"nav-title"},pt=["onClick"],_t=e("md-ripple",null,null,-1),mt={class:"nav"},ht=["onClick"],vt={class:"main"},Tt=k({__name:"AIChatsRootView",setup(h){const r=P(),v=Q(),c=R(r.query);function f(){U(v,"/aichats")}function q(){j(rt)}return(u,T)=>{const a=ot,g=A,d=z("router-view"),l=E("tooltip");return p(),_("div",ct,[i(t(J),null,{default:$(()=>[i(t(y),{size:"20","min-size":"10"},{default:$(()=>[e("div",ut,[e("h2",dt,[F(m(u.$t("page_title.aichats"))+" ",1),w((p(),_("button",{class:"icon-button",onClick:b(q,["prevent"])},[_t,i(a)],8,pt)),[[l,u.$t("config")]])]),e("ul",mt,[e("li",{onClick:b(f,["prevent"]),class:H({active:t(r).path==="/aichats"&&!t(c)})},m(u.$t("all")),11,ht)]),i(g,{type:"AI_CHAT",selected:t(c)},null,8,["selected"])])]),_:1}),i(t(y),null,{default:$(()=>[e("div",vt,[i(d)])]),_:1})]),_:1})])}}});export{Tt as default};
diff --git a/app/src/main/resources/web/assets/AIChatsView-2665297a.js b/app/src/main/resources/web/assets/AIChatsView-2decde9e.js
similarity index 93%
rename from app/src/main/resources/web/assets/AIChatsView-2665297a.js
rename to app/src/main/resources/web/assets/AIChatsView-2decde9e.js
index c8f2b4ea..c77c82cc 100644
--- a/app/src/main/resources/web/assets/AIChatsView-2665297a.js
+++ b/app/src/main/resources/web/assets/AIChatsView-2decde9e.js
@@ -1,4 +1,4 @@
-import{c as fe,u as ve,_ as ke,a as be,b as $e}from"./list-45297bd9.js";import{d as Ce,e as ye,r as k,u as Ae,K as Te,L as we,D as Ie,M as qe,N as De,w as Se,O as Ve,P as b,Q as Qe,R as Re,c as o,a as t,p as c,j as s,F as T,m as _,l as u,k as q,t as d,H as Ue,J as K,S as Be,T as Me,U as Ne,b1 as Le,x as Fe,b8 as He,C as j,W as E,o as n,v as ze,I as Pe,aR as Ge,Y as J,h as O,Z as W,$ as Ke,a0 as je,a1 as Ee,b9 as Y,a2 as Z,ab as Je,ac as Oe,a3 as We,ad as Ye,a4 as Ze,a5 as Xe,a6 as xe}from"./index-f62f2ff2.js";import{_ as et}from"./Breadcrumb-ebe74d39.js";import{u as tt,a as at}from"./tags-06583423.js";import"./vee-validate.esm-65abdaa1.js";const st={class:"v-toolbar"},lt=t("md-ripple",null,null,-1),nt=t("md-ripple",null,null,-1),ot=["onClick"],dt={class:"filters"},ct=["label"],it={class:"form-label"},ut=["label","selected","onClick"],rt={class:"buttons"},_t=["onClick"],pt={class:"table-responsive"},ht={class:"table"},mt=["checked","indeterminate"],gt=t("th",null,"ID",-1),ft=t("th",null,null,-1),vt=["onClick"],kt=["checked"],bt=["onClick"],$t={class:"nowrap"},Ct={class:"action-btns"},yt=["onClick"],At=t("md-ripple",null,null,-1),Tt=["onClick"],wt=t("md-ripple",null,null,-1),It={class:"nowrap"},qt={class:"nowrap"},Dt={key:0},St={colspan:"7"},Vt={class:"no-data-placeholder"},$=50,Ft=Ce({__name:"AIChatsView",setup(Qt){var H,z;const D=ye(),p=k([]),S=k(),{t:X}=Ae(),i=Te({text:"",tags:[]}),r=we.AI_CHAT,V=Ie().query,C=k(parseInt(((H=V.page)==null?void 0:H.toString())??"1")),h=k(qe(((z=V.q)==null?void 0:z.toString())??"")),y=k(""),{tags:A}=tt(r,h,i,async e=>{e.push({name:"parent_id",op:"",value:""}),y.value=Me(e),await Ne(),ne()}),{addToTags:x}=at(r,p,A),{deleteItems:ee}=fe(Le,()=>{I()},p),{allChecked:Q,realAllChecked:w,selectRealAll:te,allCheckedAlertVisible:ae,clearSelection:R,toggleAllChecked:U,toggleItemChecked:B,toggleRow:se,total:m,checked:M}=ve(p),{loading:le,load:ne,refetch:I}=De({handle:(e,l)=>{l?Fe(X(l),"error"):e&&(p.value=e.aiChats.map(v=>({...v,checked:!1})),m.value=e.aiChatCount)},document:He,variables:()=>({offset:(C.value-1)*$,limit:$,query:y.value}),appApi:!0});Se(C,e=>{j(D,`/aichats?page=${e}&q=${E(h.value)}`)});function oe(e){i.tags.includes(e)?je(i.tags,l=>l.id===e.id):i.tags.push(e)}function de(){h.value=Ee(i),N(),S.value.dismiss()}function N(){j(D,`/aichats?q=${E(h.value)}`)}const L=e=>{e.type===r&&(R(),I())},F=e=>{e.type===r&&I()};Ve(()=>{b.on("item_tags_updated",F),b.on("items_tags_updated",L)}),Qe(()=>{b.off("item_tags_updated",F),b.off("items_tags_updated",L)});function ce(e){Y(`/aichats/${e.id}`)}function ie(){Y("/aichats/create")}function ue(e){Z(Oe,{id:e.id,name:e.id,gql:Je`
+import{c as fe,u as ve,_ as ke,a as be,b as $e}from"./list-183f8357.js";import{d as Ce,e as ye,r as k,u as Ae,K as Te,L as we,D as Ie,M as qe,N as De,w as Se,O as Ve,P as b,Q as Qe,R as Re,c as o,a as t,p as c,j as s,F as T,m as _,l as u,k as q,t as d,H as Ue,J as K,S as Be,T as Me,U as Ne,b1 as Le,x as Fe,b8 as He,C as j,W as E,o as n,v as ze,I as Pe,aR as Ge,Y as J,h as O,Z as W,$ as Ke,a0 as je,a1 as Ee,b9 as Y,a2 as Z,ab as Je,ac as Oe,a3 as We,ad as Ye,a4 as Ze,a5 as Xe,a6 as xe}from"./index-0c42270c.js";import{_ as et}from"./Breadcrumb-f52b6c6b.js";import{u as tt,a as at}from"./tags-bf0f6db9.js";import"./vee-validate.esm-ca78f26f.js";const st={class:"v-toolbar"},lt=t("md-ripple",null,null,-1),nt=t("md-ripple",null,null,-1),ot=["onClick"],dt={class:"filters"},ct=["label"],it={class:"form-label"},ut=["label","selected","onClick"],rt={class:"buttons"},_t=["onClick"],pt={class:"table-responsive"},ht={class:"table"},mt=["checked","indeterminate"],gt=t("th",null,"ID",-1),ft=t("th",null,null,-1),vt=["onClick"],kt=["checked"],bt=["onClick"],$t={class:"nowrap"},Ct={class:"action-btns"},yt=["onClick"],At=t("md-ripple",null,null,-1),Tt=["onClick"],wt=t("md-ripple",null,null,-1),It={class:"nowrap"},qt={class:"nowrap"},Dt={key:0},St={colspan:"7"},Vt={class:"no-data-placeholder"},$=50,Ft=Ce({__name:"AIChatsView",setup(Qt){var H,z;const D=ye(),p=k([]),S=k(),{t:X}=Ae(),i=Te({text:"",tags:[]}),r=we.AI_CHAT,V=Ie().query,C=k(parseInt(((H=V.page)==null?void 0:H.toString())??"1")),h=k(qe(((z=V.q)==null?void 0:z.toString())??"")),y=k(""),{tags:A}=tt(r,h,i,async e=>{e.push({name:"parent_id",op:"",value:""}),y.value=Me(e),await Ne(),ne()}),{addToTags:x}=at(r,p,A),{deleteItems:ee}=fe(Le,()=>{I()},p),{allChecked:Q,realAllChecked:w,selectRealAll:te,allCheckedAlertVisible:ae,clearSelection:R,toggleAllChecked:U,toggleItemChecked:B,toggleRow:se,total:m,checked:M}=ve(p),{loading:le,load:ne,refetch:I}=De({handle:(e,l)=>{l?Fe(X(l),"error"):e&&(p.value=e.aiChats.map(v=>({...v,checked:!1})),m.value=e.aiChatCount)},document:He,variables:()=>({offset:(C.value-1)*$,limit:$,query:y.value}),appApi:!0});Se(C,e=>{j(D,`/aichats?page=${e}&q=${E(h.value)}`)});function oe(e){i.tags.includes(e)?je(i.tags,l=>l.id===e.id):i.tags.push(e)}function de(){h.value=Ee(i),N(),S.value.dismiss()}function N(){j(D,`/aichats?q=${E(h.value)}`)}const L=e=>{e.type===r&&(R(),I())},F=e=>{e.type===r&&I()};Ve(()=>{b.on("item_tags_updated",F),b.on("items_tags_updated",L)}),Qe(()=>{b.off("item_tags_updated",F),b.off("items_tags_updated",L)});function ce(e){Y(`/aichats/${e.id}`)}function ie(){Y("/aichats/create")}function ue(e){Z(Oe,{id:e.id,name:e.id,gql:Je`
mutation DeleteAIChat($query: String!) {
deleteAIChats(query: $query)
}
diff --git a/app/src/main/resources/web/assets/AppsRootView-6c309c18.js b/app/src/main/resources/web/assets/AppsRootView-fab2d856.js
similarity index 93%
rename from app/src/main/resources/web/assets/AppsRootView-6c309c18.js
rename to app/src/main/resources/web/assets/AppsRootView-fab2d856.js
index 14e377e1..26e1bebc 100644
--- a/app/src/main/resources/web/assets/AppsRootView-6c309c18.js
+++ b/app/src/main/resources/web/assets/AppsRootView-fab2d856.js
@@ -1 +1 @@
-import{d as k,D as $,e as g,G as w,c as p,p as o,H as n,j as t,o as r,a as e,t as i,l as _,I as u,F as B,J as z,C as d}from"./index-f62f2ff2.js";import{g as m,M}from"./splitpanes.es-2b477659.js";const S={class:"page-container"},V={class:"sidebar"},D={class:"nav-title"},F={class:"nav"},N=["onClick"],R=["onClick"],b={class:"main"},I=k({__name:"AppsRootView",setup(j){const l=$(),c=g(),h=l.params.type;function v(s){d(c,`/apps/${s}`)}const f=["user","system"];function y(){d(c,"/apps")}return(s,A)=>{const C=w("router-view");return r(),p("div",S,[o(t(M),null,{default:n(()=>[o(t(m),{size:"20","min-size":"10"},{default:n(()=>[e("div",V,[e("h2",D,i(s.$t("page_title.apps")),1),e("ul",F,[e("li",{onClick:_(y,["prevent"]),class:u({active:t(l).path==="/apps"})},i(s.$t("all")),11,N),(r(),p(B,null,z(f,a=>e("li",{key:a,onClick:_(E=>v(a),["prevent"]),class:u({active:a===t(h)})},i(s.$t(`app_type.${a}`)),11,R)),64))])])]),_:1}),o(t(m),null,{default:n(()=>[e("div",b,[o(C)])]),_:1})]),_:1})])}}});export{I as default};
+import{d as k,D as $,e as g,G as w,c as p,p as o,H as n,j as t,o as r,a as e,t as i,l as _,I as u,F as B,J as z,C as d}from"./index-0c42270c.js";import{g as m,M}from"./splitpanes.es-7e8a6fea.js";const S={class:"page-container"},V={class:"sidebar"},D={class:"nav-title"},F={class:"nav"},N=["onClick"],R=["onClick"],b={class:"main"},I=k({__name:"AppsRootView",setup(j){const l=$(),c=g(),h=l.params.type;function v(s){d(c,`/apps/${s}`)}const f=["user","system"];function y(){d(c,"/apps")}return(s,A)=>{const C=w("router-view");return r(),p("div",S,[o(t(M),null,{default:n(()=>[o(t(m),{size:"20","min-size":"10"},{default:n(()=>[e("div",V,[e("h2",D,i(s.$t("page_title.apps")),1),e("ul",F,[e("li",{onClick:_(y,["prevent"]),class:u({active:t(l).path==="/apps"})},i(s.$t("all")),11,N),(r(),p(B,null,z(f,a=>e("li",{key:a,onClick:_(E=>v(a),["prevent"]),class:u({active:a===t(h)})},i(s.$t(`app_type.${a}`)),11,R)),64))])])]),_:1}),o(t(m),null,{default:n(()=>[e("div",b,[o(C)])]),_:1})]),_:1})])}}});export{I as default};
diff --git a/app/src/main/resources/web/assets/AppsView-4f3757c0.js b/app/src/main/resources/web/assets/AppsView-79ed36fe.js
similarity index 96%
rename from app/src/main/resources/web/assets/AppsView-4f3757c0.js
rename to app/src/main/resources/web/assets/AppsView-79ed36fe.js
index f7e5df7e..e8649754 100644
--- a/app/src/main/resources/web/assets/AppsView-4f3757c0.js
+++ b/app/src/main/resources/web/assets/AppsView-79ed36fe.js
@@ -1 +1 @@
-import{u as ye,_ as $e,a as be,b as we}from"./list-45297bd9.js";import{d as Ce,ae as Se,e as Ae,r as k,u as De,s as Ie,f as Ve,K as Te,af as Ue,L as qe,D as Qe,M as Be,ag as Fe,T as J,g as Le,w as Pe,i as ze,N as Me,O as Re,P as O,Q as Ne,R as Ge,c as i,a as e,p as r,j as l,m as p,l as f,k as T,h as U,t as a,H as Ke,F as W,J as xe,S as je,x as Ee,ah as He,ai as Je,C as S,W as A,aj as Oe,ak as We,o,v as Ye,I as Ze,z as Xe,Y,Z,$ as et,al as tt,am as st,a5 as lt,ad as nt}from"./index-f62f2ff2.js";import{_ as at}from"./Breadcrumb-ebe74d39.js";function ot(D,I){const g=D.findIndex(y=>y.id===I);g!==-1&&D.splice(g,1)}const it={class:"v-toolbar"},dt=e("md-ripple",null,null,-1),ct=["onClick"],ut=e("md-ripple",null,null,-1),rt={class:"filters"},pt={class:"form-row"},_t=["label"],ht={class:"buttons"},ft=["onClick"],mt={class:"table-responsive"},kt={class:"table"},vt=["checked","indeterminate"],gt=e("th",null,null,-1),yt=e("th",null,null,-1),$t=["onClick"],bt=["checked"],wt=["src"],Ct={class:"v-center"},St={class:"nowrap"},At={class:"action-btns"},Dt={key:0,indeterminate:"",class:"spinner-sm"},It=["onClick"],Vt=e("md-ripple",null,null,-1),Tt=["onClick"],Ut=e("md-ripple",null,null,-1),qt={class:"nowrap"},Qt={class:"nowrap"},Bt={class:"nowrap"},Ft={class:"nowrap"},Lt={key:0},Pt={colspan:"8"},zt={class:"no-data-placeholder"},v=50,Gt=Ce({__name:"AppsView",setup(D){var j,E;const{input:I,upload:g,uploadChanged:y}=Se(),$=Ae(),d=k([]),q=k(),{t:X}=De(),{app:ee,urlTokenKey:V}=Ie(Ve()),b=Te({text:"",tags:[]}),{allChecked:Q,realAllChecked:B,selectRealAll:te,allCheckedAlertVisible:se,clearSelection:F,toggleAllChecked:L,toggleItemChecked:P,toggleRow:le,total:m,checked:z}=ye(d),{downloadItems:ne}=Ue(V,qe.PACKAGE,d,F,"apps.zip"),{downloadFile:ae}=tt(V),M=Qe(),R=M.query,w=k(parseInt(((j=R.page)==null?void 0:j.toString())??"1")),c=k(Be(((E=R.q)==null?void 0:E.toString())??"")),N=Fe(c.value),_=M.params.type;_&&N.push({name:"type",op:"",value:_});const G=k(J(N)),oe=()=>{g(ee.value.downloadsDir)},{loading:ie}=Le({handle:(t,n)=>{n?Ee(X(n),"error"):t&&(d.value=t.packages.map(u=>({...u,checked:!1,icon:He(V.value,"pkgicon://"+u.id)})),m.value=t.packageCount)},document:Je,variables:()=>({offset:(w.value-1)*v,limit:v,query:G.value}),appApi:!0});Pe(w,t=>{_?S($,`/apps/${_}?page=${t}&q=${A(c.value)}`):S($,`/apps?page=${t}&q=${A(c.value)}`)});function de(){const t=[];b.text&&t.push({name:"text",op:"",value:b.text}),c.value=J(t),K(),q.value.dismiss()}function K(){_?S($,`/apps/${_}?q=${A(c.value)}`):S($,`/apps?q=${A(c.value)}`)}const{mutate:ce,onDone:ue}=ze({document:Oe,appApi:!0});function re(t){ue(()=>{t.isUninstalling=!0}),ce({id:t.id})}const{loading:pe,load:_e,refetch:he}=Me({handle:(t,n)=>{if(t)for(const u of t.packageStatuses)u.exist||ot(d.value,u.id)},document:We,variables:()=>({ids:d.value.filter(t=>t.isUninstalling).map(t=>t.id)}),appApi:!0}),x=t=>{t.status};return Re(()=>{O.on("upload_task_done",x);let t=!0;setInterval(()=>{d.value.some(n=>n.isUninstalling)&&!pe.value&&(t?(_e(),t=!1):he())},1e3)}),Ne(()=>{O.off("upload_task_done",x)}),(t,n)=>{const u=at,H=st,fe=$e,me=be,ke=lt,ve=nt,ge=we,h=Ge("tooltip");return o(),i(W,null,[e("div",it,[r(u,{current:()=>`${t.$t("page_title.apps")} (${l(m)})`},null,8,["current"]),l(z)?p((o(),i("button",{key:0,class:"icon-button",onClick:n[0]||(n[0]=f(s=>l(ne)(l(B),G.value),["stop"]))},[dt,r(H)])),[[h,t.$t("download")]]):T("",!0),e("button",{class:"icon-button",onClick:f(oe,["stop"]),style:{display:"none"}},[ut,U(" "+a(t.$t("install")),1)],8,ct),r(fe,{ref_key:"searchInputRef",ref:q,modelValue:c.value,"onUpdate:modelValue":n[2]||(n[2]=s=>c.value=s),search:K},{filters:Ke(()=>[e("div",rt,[e("div",pt,[p(e("md-outlined-text-field",{label:t.$t("keywords"),"onUpdate:modelValue":n[1]||(n[1]=s=>b.text=s),"keyup.enter":"applyAndDoSearch"},null,8,_t),[[Ye,b.text]])]),e("div",ht,[e("md-filled-button",{onClick:f(de,["stop"])},a(t.$t("search")),9,ft)])])]),_:1},8,["modelValue"])]),r(me,{limit:v,total:l(m),"all-checked-alert-visible":l(se),"real-all-checked":l(B),"select-real-all":l(te),"clear-selection":l(F)},null,8,["total","all-checked-alert-visible","real-all-checked","select-real-all","clear-selection"]),e("div",mt,[e("table",kt,[e("thead",null,[e("tr",null,[e("th",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:n[3]||(n[3]=(...s)=>l(L)&&l(L)(...s)),checked:l(Q),indeterminate:!l(Q)&&l(z)},null,40,vt)]),gt,e("th",null,a(t.$t("name")),1),yt,e("th",null,a(t.$t("size")),1),e("th",null,a(t.$t("type")),1),e("th",null,a(t.$t("installed_at")),1),e("th",null,a(t.$t("updated_at")),1)])]),e("tbody",null,[(o(!0),i(W,null,xe(d.value,s=>(o(),i("tr",{key:s.id,class:Ze({selected:s.checked}),onClick:f(C=>l(le)(s),["stop"])},[e("td",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:n[4]||(n[4]=(...C)=>l(P)&&l(P)(...C)),checked:s.checked},null,40,bt)]),e("td",null,[e("img",{width:"50",height:"50",src:s.icon},null,8,wt)]),e("td",null,[e("strong",Ct,a(s.name)+" ("+a(s.version)+")",1),r(ke,{id:s.id,raw:s},null,8,["id","raw"])]),e("td",St,[e("div",At,[s.isUninstalling?p((o(),i("md-circular-progress",Dt,null,512)),[[h,t.$t("uninstalling")]]):p((o(),i("button",{key:1,class:"icon-button",onClick:f(C=>re(s),["stop"])},[Vt,r(ve)],8,It)),[[h,t.$t("uninstall")]]),p((o(),i("button",{class:"icon-button",onClick:f(C=>l(ae)(s.path,`${s.name.replace(" ","")}-${s.id}.apk`),["stop"])},[Ut,r(H)],8,Tt)),[[h,t.$t("download")]])])]),e("td",qt,a(l(Xe)(s.size)),1),e("td",Qt,a(t.$t("app_type."+s.type)),1),e("td",Bt,[p((o(),i("span",null,[U(a(l(Z)(s.installedAt)),1)])),[[h,l(Y)(s.installedAt)]])]),e("td",Ft,[p((o(),i("span",null,[U(a(l(Z)(s.updatedAt)),1)])),[[h,l(Y)(s.updatedAt)]])])],10,$t))),128))]),d.value.length?T("",!0):(o(),i("tfoot",Lt,[e("tr",null,[e("td",Pt,[e("div",zt,a(t.$t(l(et)(l(ie)))),1)])])]))])]),l(m)>v?(o(),je(ge,{key:0,modelValue:w.value,"onUpdate:modelValue":n[5]||(n[5]=s=>w.value=s),total:l(m),limit:v},null,8,["modelValue","total"])):T("",!0),e("input",{ref_key:"fileInput",ref:I,style:{display:"none"},type:"file",accept:".apk",multiple:"",onChange:n[6]||(n[6]=(...s)=>l(y)&&l(y)(...s))},null,544)],64)}}});export{Gt as default};
+import{u as ye,_ as $e,a as be,b as we}from"./list-183f8357.js";import{d as Ce,ae as Se,e as Ae,r as k,u as De,s as Ie,f as Ve,K as Te,af as Ue,L as qe,D as Qe,M as Be,ag as Fe,T as J,g as Le,w as Pe,i as ze,N as Me,O as Re,P as O,Q as Ne,R as Ge,c as i,a as e,p as r,j as l,m as p,l as f,k as T,h as U,t as a,H as Ke,F as W,J as xe,S as je,x as Ee,ah as He,ai as Je,C as S,W as A,aj as Oe,ak as We,o,v as Ye,I as Ze,z as Xe,Y,Z,$ as et,al as tt,am as st,a5 as lt,ad as nt}from"./index-0c42270c.js";import{_ as at}from"./Breadcrumb-f52b6c6b.js";function ot(D,I){const g=D.findIndex(y=>y.id===I);g!==-1&&D.splice(g,1)}const it={class:"v-toolbar"},dt=e("md-ripple",null,null,-1),ct=["onClick"],ut=e("md-ripple",null,null,-1),rt={class:"filters"},pt={class:"form-row"},_t=["label"],ht={class:"buttons"},ft=["onClick"],mt={class:"table-responsive"},kt={class:"table"},vt=["checked","indeterminate"],gt=e("th",null,null,-1),yt=e("th",null,null,-1),$t=["onClick"],bt=["checked"],wt=["src"],Ct={class:"v-center"},St={class:"nowrap"},At={class:"action-btns"},Dt={key:0,indeterminate:"",class:"spinner-sm"},It=["onClick"],Vt=e("md-ripple",null,null,-1),Tt=["onClick"],Ut=e("md-ripple",null,null,-1),qt={class:"nowrap"},Qt={class:"nowrap"},Bt={class:"nowrap"},Ft={class:"nowrap"},Lt={key:0},Pt={colspan:"8"},zt={class:"no-data-placeholder"},v=50,Gt=Ce({__name:"AppsView",setup(D){var j,E;const{input:I,upload:g,uploadChanged:y}=Se(),$=Ae(),d=k([]),q=k(),{t:X}=De(),{app:ee,urlTokenKey:V}=Ie(Ve()),b=Te({text:"",tags:[]}),{allChecked:Q,realAllChecked:B,selectRealAll:te,allCheckedAlertVisible:se,clearSelection:F,toggleAllChecked:L,toggleItemChecked:P,toggleRow:le,total:m,checked:z}=ye(d),{downloadItems:ne}=Ue(V,qe.PACKAGE,d,F,"apps.zip"),{downloadFile:ae}=tt(V),M=Qe(),R=M.query,w=k(parseInt(((j=R.page)==null?void 0:j.toString())??"1")),c=k(Be(((E=R.q)==null?void 0:E.toString())??"")),N=Fe(c.value),_=M.params.type;_&&N.push({name:"type",op:"",value:_});const G=k(J(N)),oe=()=>{g(ee.value.downloadsDir)},{loading:ie}=Le({handle:(t,n)=>{n?Ee(X(n),"error"):t&&(d.value=t.packages.map(u=>({...u,checked:!1,icon:He(V.value,"pkgicon://"+u.id)})),m.value=t.packageCount)},document:Je,variables:()=>({offset:(w.value-1)*v,limit:v,query:G.value}),appApi:!0});Pe(w,t=>{_?S($,`/apps/${_}?page=${t}&q=${A(c.value)}`):S($,`/apps?page=${t}&q=${A(c.value)}`)});function de(){const t=[];b.text&&t.push({name:"text",op:"",value:b.text}),c.value=J(t),K(),q.value.dismiss()}function K(){_?S($,`/apps/${_}?q=${A(c.value)}`):S($,`/apps?q=${A(c.value)}`)}const{mutate:ce,onDone:ue}=ze({document:Oe,appApi:!0});function re(t){ue(()=>{t.isUninstalling=!0}),ce({id:t.id})}const{loading:pe,load:_e,refetch:he}=Me({handle:(t,n)=>{if(t)for(const u of t.packageStatuses)u.exist||ot(d.value,u.id)},document:We,variables:()=>({ids:d.value.filter(t=>t.isUninstalling).map(t=>t.id)}),appApi:!0}),x=t=>{t.status};return Re(()=>{O.on("upload_task_done",x);let t=!0;setInterval(()=>{d.value.some(n=>n.isUninstalling)&&!pe.value&&(t?(_e(),t=!1):he())},1e3)}),Ne(()=>{O.off("upload_task_done",x)}),(t,n)=>{const u=at,H=st,fe=$e,me=be,ke=lt,ve=nt,ge=we,h=Ge("tooltip");return o(),i(W,null,[e("div",it,[r(u,{current:()=>`${t.$t("page_title.apps")} (${l(m)})`},null,8,["current"]),l(z)?p((o(),i("button",{key:0,class:"icon-button",onClick:n[0]||(n[0]=f(s=>l(ne)(l(B),G.value),["stop"]))},[dt,r(H)])),[[h,t.$t("download")]]):T("",!0),e("button",{class:"icon-button",onClick:f(oe,["stop"]),style:{display:"none"}},[ut,U(" "+a(t.$t("install")),1)],8,ct),r(fe,{ref_key:"searchInputRef",ref:q,modelValue:c.value,"onUpdate:modelValue":n[2]||(n[2]=s=>c.value=s),search:K},{filters:Ke(()=>[e("div",rt,[e("div",pt,[p(e("md-outlined-text-field",{label:t.$t("keywords"),"onUpdate:modelValue":n[1]||(n[1]=s=>b.text=s),"keyup.enter":"applyAndDoSearch"},null,8,_t),[[Ye,b.text]])]),e("div",ht,[e("md-filled-button",{onClick:f(de,["stop"])},a(t.$t("search")),9,ft)])])]),_:1},8,["modelValue"])]),r(me,{limit:v,total:l(m),"all-checked-alert-visible":l(se),"real-all-checked":l(B),"select-real-all":l(te),"clear-selection":l(F)},null,8,["total","all-checked-alert-visible","real-all-checked","select-real-all","clear-selection"]),e("div",mt,[e("table",kt,[e("thead",null,[e("tr",null,[e("th",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:n[3]||(n[3]=(...s)=>l(L)&&l(L)(...s)),checked:l(Q),indeterminate:!l(Q)&&l(z)},null,40,vt)]),gt,e("th",null,a(t.$t("name")),1),yt,e("th",null,a(t.$t("size")),1),e("th",null,a(t.$t("type")),1),e("th",null,a(t.$t("installed_at")),1),e("th",null,a(t.$t("updated_at")),1)])]),e("tbody",null,[(o(!0),i(W,null,xe(d.value,s=>(o(),i("tr",{key:s.id,class:Ze({selected:s.checked}),onClick:f(C=>l(le)(s),["stop"])},[e("td",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:n[4]||(n[4]=(...C)=>l(P)&&l(P)(...C)),checked:s.checked},null,40,bt)]),e("td",null,[e("img",{width:"50",height:"50",src:s.icon},null,8,wt)]),e("td",null,[e("strong",Ct,a(s.name)+" ("+a(s.version)+")",1),r(ke,{id:s.id,raw:s},null,8,["id","raw"])]),e("td",St,[e("div",At,[s.isUninstalling?p((o(),i("md-circular-progress",Dt,null,512)),[[h,t.$t("uninstalling")]]):p((o(),i("button",{key:1,class:"icon-button",onClick:f(C=>re(s),["stop"])},[Vt,r(ve)],8,It)),[[h,t.$t("uninstall")]]),p((o(),i("button",{class:"icon-button",onClick:f(C=>l(ae)(s.path,`${s.name.replace(" ","")}-${s.id}.apk`),["stop"])},[Ut,r(H)],8,Tt)),[[h,t.$t("download")]])])]),e("td",qt,a(l(Xe)(s.size)),1),e("td",Qt,a(t.$t("app_type."+s.type)),1),e("td",Bt,[p((o(),i("span",null,[U(a(l(Z)(s.installedAt)),1)])),[[h,l(Y)(s.installedAt)]])]),e("td",Ft,[p((o(),i("span",null,[U(a(l(Z)(s.updatedAt)),1)])),[[h,l(Y)(s.updatedAt)]])])],10,$t))),128))]),d.value.length?T("",!0):(o(),i("tfoot",Lt,[e("tr",null,[e("td",Pt,[e("div",zt,a(t.$t(l(et)(l(ie)))),1)])])]))])]),l(m)>v?(o(),je(ge,{key:0,modelValue:w.value,"onUpdate:modelValue":n[5]||(n[5]=s=>w.value=s),total:l(m),limit:v},null,8,["modelValue","total"])):T("",!0),e("input",{ref_key:"fileInput",ref:I,style:{display:"none"},type:"file",accept:".apk",multiple:"",onChange:n[6]||(n[6]=(...s)=>l(y)&&l(y)(...s))},null,544)],64)}}});export{Gt as default};
diff --git a/app/src/main/resources/web/assets/AudiosRootView-7d6b2e65.js b/app/src/main/resources/web/assets/AudiosRootView-1ba1658f.js
similarity index 70%
rename from app/src/main/resources/web/assets/AudiosRootView-7d6b2e65.js
rename to app/src/main/resources/web/assets/AudiosRootView-1ba1658f.js
index de167f74..0e49dea7 100644
--- a/app/src/main/resources/web/assets/AudiosRootView-7d6b2e65.js
+++ b/app/src/main/resources/web/assets/AudiosRootView-1ba1658f.js
@@ -1 +1 @@
-import{_ as g}from"./TagFilter.vuevuetypescriptsetuptruelang-9b4a0b6e.js";import{_ as k}from"./BucketFilter.vuevuetypescriptsetuptruelang-9dafd033.js";import{d as C,D as w,e as y,az as z,G as B,c as D,p as s,H as o,j as e,o as I,a,t as d,l as $,I as b,C as A}from"./index-f62f2ff2.js";import{g as u,M}from"./splitpanes.es-2b477659.js";import"./EditValueModal-d57e85f6.js";import"./vee-validate.esm-65abdaa1.js";const N={class:"page-container"},S={class:"sidebar"},V={class:"nav-title"},O={class:"nav"},R=["onClick"],U={class:"main"},Q=C({__name:"AudiosRootView",setup(j){var r,_;const n=w(),m=y(),i=z(n.query),c=((r=i.find(t=>t.name==="tag"))==null?void 0:r.value)??"",l=((_=i.find(t=>t.name==="bucket_id"))==null?void 0:_.value)??"";function p(){A(m,"/audios")}return(t,q)=>{const f=k,h=g,v=B("router-view");return I(),D("div",N,[s(e(M),null,{default:o(()=>[s(e(u),{size:"20","min-size":"10"},{default:o(()=>[a("aside",S,[a("h2",V,d(t.$t("page_title.audios")),1),a("ul",O,[a("li",{onClick:$(p,["prevent"]),class:b({active:e(n).path==="/audios"&&!e(c)&&!e(l)})},d(t.$t("all")),11,R),s(f,{type:"AUDIO",selected:e(l)},null,8,["selected"])]),s(h,{type:"AUDIO",selected:e(c)},null,8,["selected"])])]),_:1}),s(e(u),null,{default:o(()=>[a("main",U,[s(v)])]),_:1})]),_:1})])}}});export{Q as default};
+import{_ as g}from"./TagFilter.vuevuetypescriptsetuptruelang-12e262c1.js";import{_ as k}from"./BucketFilter.vuevuetypescriptsetuptruelang-f7ab6958.js";import{d as C,D as w,e as y,az as z,G as B,c as D,p as s,H as o,j as e,o as I,a,t as d,l as $,I as b,C as A}from"./index-0c42270c.js";import{g as u,M}from"./splitpanes.es-7e8a6fea.js";import"./EditValueModal-c22a5b2d.js";import"./vee-validate.esm-ca78f26f.js";const N={class:"page-container"},S={class:"sidebar"},V={class:"nav-title"},O={class:"nav"},R=["onClick"],U={class:"main"},Q=C({__name:"AudiosRootView",setup(j){var r,_;const n=w(),m=y(),i=z(n.query),c=((r=i.find(t=>t.name==="tag"))==null?void 0:r.value)??"",l=((_=i.find(t=>t.name==="bucket_id"))==null?void 0:_.value)??"";function p(){A(m,"/audios")}return(t,q)=>{const f=k,h=g,v=B("router-view");return I(),D("div",N,[s(e(M),null,{default:o(()=>[s(e(u),{size:"20","min-size":"10"},{default:o(()=>[a("aside",S,[a("h2",V,d(t.$t("page_title.audios")),1),a("ul",O,[a("li",{onClick:$(p,["prevent"]),class:b({active:e(n).path==="/audios"&&!e(c)&&!e(l)})},d(t.$t("all")),11,R),s(f,{type:"AUDIO",selected:e(l)},null,8,["selected"])]),s(h,{type:"AUDIO",selected:e(c)},null,8,["selected"])])]),_:1}),s(e(u),null,{default:o(()=>[a("main",U,[s(v)])]),_:1})]),_:1})])}}});export{Q as default};
diff --git a/app/src/main/resources/web/assets/AudiosView-dd82950e.js b/app/src/main/resources/web/assets/AudiosView-6a234a76.js
similarity index 96%
rename from app/src/main/resources/web/assets/AudiosView-dd82950e.js
rename to app/src/main/resources/web/assets/AudiosView-6a234a76.js
index f9f015c3..aca6a222 100644
--- a/app/src/main/resources/web/assets/AudiosView-dd82950e.js
+++ b/app/src/main/resources/web/assets/AudiosView-6a234a76.js
@@ -1 +1 @@
-import{u as Le,_ as Qe,a as ze,b as Fe}from"./list-45297bd9.js";import{o as l,c as a,a as e,i as ae,aK as He,u as ie,P as k,x as de,r as D,aL as Ue,d as Ne,e as Ge,s as Ke,f as xe,K as Oe,L as je,D as We,M as Je,aB as Xe,af as Ye,aA as et,N as tt,w as ot,O as st,Q as nt,R as lt,p as d,j as o,F as E,m as f,l as m,k as Q,H as at,t as g,J as oe,S as it,T as dt,U as ct,aM as ut,C as se,W as ne,v as rt,I as _t,aF as pt,a9 as mt,z as ht,$ as ft,A as gt,B as vt,al as yt,as as kt,aG as bt,a0 as $t,a1 as Tt,a2 as qt,a3 as Ct,ad as wt,am as It,a4 as At,a5 as St,a6 as Dt,_ as Vt}from"./index-f62f2ff2.js";import{_ as Bt}from"./upload-rounded-886d7dcb.js";import{_ as Rt}from"./Breadcrumb-ebe74d39.js";import{u as Mt,a as Pt}from"./tags-06583423.js";import"./vee-validate.esm-65abdaa1.js";const Zt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Et=e("path",{fill:"currentColor",d:"M9.5 9.325v5.35q0 .6.525.875t1.025-.05l4.15-2.65q.475-.275.475-.85t-.475-.85L11.05 8.5q-.5-.325-1.025-.05t-.525.875ZM12 22q-2.075 0-3.9-.788t-3.175-2.137q-1.35-1.35-2.137-3.175T2 12q0-2.075.788-3.9t2.137-3.175q1.35-1.35 3.175-2.137T12 2q2.075 0 3.9.788t3.175 2.137q1.35 1.35 2.138 3.175T22 12q0 2.075-.788 3.9t-2.137 3.175q-1.35 1.35-3.175 2.138T12 22Zm0-10Zm0 8q3.325 0 5.663-2.337T20 12q0-3.325-2.337-5.663T12 4Q8.675 4 6.337 6.337T4 12q0 3.325 2.337 5.663T12 20Z"},null,-1),Lt=[Et];function Qt(c,v){return l(),a("svg",Zt,Lt)}const zt={name:"material-symbols-play-circle-outline-rounded",render:Qt},Ft={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Ht=e("path",{fill:"currentColor",d:"M10 16q.425 0 .713-.288T11 15V8.975q0-.425-.288-.7T10 8q-.425 0-.713.288T9 9v6.025q0 .425.288.7T10 16Zm4 0q.425 0 .713-.288T15 15V8.975q0-.425-.288-.7T14 8q-.425 0-.713.288T13 9v6.025q0 .425.288.7T14 16Zm-2 6q-2.075 0-3.9-.788t-3.175-2.137q-1.35-1.35-2.137-3.175T2 12q0-2.075.788-3.9t2.137-3.175q1.35-1.35 3.175-2.137T12 2q2.075 0 3.9.788t3.175 2.137q1.35 1.35 2.138 3.175T22 12q0 2.075-.788 3.9t-2.137 3.175q-1.35 1.35-3.175 2.138T12 22Zm0-10Zm0 8q3.325 0 5.663-2.337T20 12q0-3.325-2.337-5.663T12 4Q8.675 4 6.337 6.337T4 12q0 3.325 2.337 5.663T12 20Z"},null,-1),Ut=[Ht];function Nt(c,v){return l(),a("svg",Ft,Ut)}const Gt={name:"material-symbols-pause-circle-outline-rounded",render:Nt},Kt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},xt=e("path",{fill:"currentColor",d:"M3 16v-2h7v2H3Zm0-4v-2h11v2H3Zm0-4V6h11v2H3Zm13 12v-4h-4v-2h4v-4h2v4h4v2h-4v4h-2Z"},null,-1),Ot=[xt];function jt(c,v){return l(),a("svg",Kt,Ot)}const Wt={name:"material-symbols-playlist-add",render:jt};function le(c,v,u=500){const r=c.cloneNode(!0),p=c.getBoundingClientRect(),w=v.getBoundingClientRect();r.style.position="absolute",r.style.top=p.top+"px",r.style.left=p.left+"px",r.style.opacity=1,document.body.appendChild(r);let b=0;function T(_){b||(b=_);const q=_-b,i=Math.min(q/u,1);r.style.top=p.top+(w.top-p.top)*i+"px",r.style.left=p.left+(w.left-p.left)*i+"px",i<1?requestAnimationFrame(T):document.body.removeChild(r)}requestAnimationFrame(T)}const Jt=(c,v)=>{const{mutate:u,loading:r,onDone:p}=ae({document:He,appApi:!0}),{t:w}=ie();return p(()=>{k.emit("refetch_app"),v()}),{loading:r,addItemsToPlaylist:(b,T,_)=>{let q=_;if(!T){const V=c.value.filter(C=>C.checked);if(V.length===0){de(w("select_first"),"error");return}q=`ids:${V.map(C=>C.id).join(",")}`}const i=b.target,z=document.getElementById("quick-audio");le(i,z),u({query:q})},addToPlaylist:(b,T)=>{const _=b.target,q=document.getElementById("quick-audio");le(_,q),u({query:`ids:${T.id}`})}}},Xt=()=>{const c=D(""),{mutate:v,loading:u,onDone:r}=ae({document:Ue,appApi:!0});return r(()=>{k.emit("play_audio")}),{loading:u,playPath:c,play:p=>{c.value=p.path,v({path:p.path})},pause:()=>{k.emit("pause_audio")}}},h=c=>(gt("data-v-8a476041"),c=c(),vt(),c),Yt={class:"v-toolbar"},eo=h(()=>e("md-ripple",null,null,-1)),to=h(()=>e("md-ripple",null,null,-1)),oo=h(()=>e("md-ripple",null,null,-1)),so=h(()=>e("md-ripple",null,null,-1)),no=["onClick"],lo=h(()=>e("md-ripple",null,null,-1)),ao={class:"filters"},io=["label"],co={class:"form-label"},uo=["label","selected","onClick"],ro={class:"buttons"},_o=["onClick"],po={class:"table-responsive"},mo={class:"table"},ho=["checked","indeterminate"],fo=h(()=>e("th",null,"ID",-1)),go=h(()=>e("th",null,null,-1)),vo={class:"artist"},yo=["onClick"],ko=["checked"],bo={class:"title"},$o={class:"nowrap"},To={class:"action-btns"},qo=["onClick"],Co=h(()=>e("md-ripple",null,null,-1)),wo=["onClick"],Io=h(()=>e("md-ripple",null,null,-1)),Ao=["onClick"],So=h(()=>e("md-ripple",null,null,-1)),Do=["onClick"],Vo=h(()=>e("md-ripple",null,null,-1)),Bo={key:0,indeterminate:"",class:"spinner-sm"},Ro=h(()=>e("md-ripple",null,null,-1)),Mo=["onClick"],Po=h(()=>e("md-ripple",null,null,-1)),Zo={class:"nowrap"},Eo={class:"nowrap"},Lo={key:0},Qo={colspan:"8"},zo={class:"no-data-placeholder"},P=50,Fo=Ne({__name:"AudiosView",setup(c){var W,J;const v=Ge(),u=D([]),r=D(),{t:p}=ie(),{app:w,urlTokenKey:b,audioPlaying:T}=Ke(xe()),_=Oe({text:"",tags:[]}),q=t=>{var n;return T.value&&((n=w.value)==null?void 0:n.audioCurrent)===t.path},i=je.AUDIO,V=We().query,C=D(parseInt(((W=V.page)==null?void 0:W.toString())??"1")),I=D(Je(((J=V.q)==null?void 0:J.toString())??"")),A=D(""),{tags:Z}=Mt(i,I,_,async t=>{A.value=dt(t),await ct(),Ce()}),{addToTags:ce}=Pt(i,u,Z),{deleteItems:ue,deleteItem:re}=Xe(),{allChecked:F,realAllChecked:B,selectRealAll:_e,allCheckedAlertVisible:pe,clearSelection:R,toggleAllChecked:H,toggleRow:me,toggleItemChecked:U,total:S,checked:N}=Le(u),{downloadItems:he}=Ye(b,i,u,R,"audios.zip"),{downloadFile:fe}=yt(b),{addItemsToPlaylist:ge,addToPlaylist:ve}=Jt(u,R),ye=et(),{play:ke,playPath:be,loading:$e,pause:Te}=Xt(),{loading:qe,load:Ce,refetch:L}=tt({handle:(t,n)=>{n?de(p(n),"error"):t&&(u.value=t.audios.map(M=>({...M,checked:!1})),S.value=t.audioCount)},document:ut,variables:()=>({offset:(C.value-1)*P,limit:P,query:A.value}),appApi:!0});ot(C,t=>{se(v,`/audios?page=${t}&q=${ne(I.value)}`)});function we(){ye.push("/files"),kt(bt,{message:p("upload_audios")})}function Ie(t){_.tags.includes(t)?$t(_.tags,n=>n.id===t.id):_.tags.push(t)}function Ae(){I.value=Tt(_),G(),r.value.dismiss()}function G(){se(v,`/audios?q=${ne(I.value)}`)}const K=t=>{t.type===i&&(R(),L())},x=t=>{t.type===i&&L()},O=t=>{t.type===i&&(R(),L())},j=()=>{S.value--};st(()=>{k.on("item_tags_updated",x),k.on("items_tags_updated",K),k.on("media_item_deleted",j),k.on("media_items_deleted",O)}),nt(()=>{k.off("item_tags_updated",x),k.off("items_tags_updated",K),k.off("media_item_deleted",j),k.off("media_items_deleted",O)});function Se(t){qt(Ct,{type:i,tags:Z.value,item:{key:t.id,title:t.title,size:t.size},selected:Z.value.filter(n=>t.tags.some(M=>M.id===n.id))})}return(t,n)=>{const M=Rt,X=wt,Y=It,ee=Wt,te=At,De=Bt,Ve=Qe,Be=ze,Re=St,Me=Gt,Pe=zt,Ze=Dt,Ee=Fe,y=lt("tooltip");return l(),a(E,null,[e("div",Yt,[d(M,{current:()=>`${t.$t("page_title.audios")} (${o(S)})`},null,8,["current"]),o(N)?(l(),a(E,{key:0},[f((l(),a("button",{class:"icon-button",onClick:n[0]||(n[0]=m(s=>o(ue)(o(i),u.value,o(B),A.value),["stop"]))},[eo,d(X)])),[[y,t.$t("delete")]]),f((l(),a("button",{class:"icon-button",onClick:n[1]||(n[1]=m(s=>o(he)(o(B),A.value),["stop"]))},[to,d(Y)])),[[y,t.$t("download")]]),f((l(),a("button",{class:"icon-button",onClick:n[2]||(n[2]=m(s=>o(ge)(s,o(B),A.value),["stop"]))},[oo,d(ee)])),[[y,t.$t("add_to_playlist")]]),f((l(),a("button",{class:"icon-button",onClick:n[3]||(n[3]=m(s=>o(ce)(o(B),A.value),["stop"]))},[so,d(te)])),[[y,t.$t("add_to_tags")]])],64)):Q("",!0),f((l(),a("button",{class:"icon-button",onClick:m(we,["stop"])},[lo,d(De)],8,no)),[[y,t.$t("upload")]]),d(Ve,{ref_key:"searchInputRef",ref:r,modelValue:I.value,"onUpdate:modelValue":n[5]||(n[5]=s=>I.value=s),search:G},{filters:at(()=>[e("div",ao,[f(e("md-outlined-text-field",{label:t.$t("keywords"),"onUpdate:modelValue":n[4]||(n[4]=s=>_.text=s),"keyup.enter":"applyAndDoSearch"},null,8,io),[[rt,_.text]]),e("label",co,g(t.$t("tags")),1),e("md-chip-set",null,[(l(!0),a(E,null,oe(o(Z),s=>(l(),a("md-filter-chip",{key:s.id,label:s.name,selected:_.tags.includes(s),onClick:$=>Ie(s)},null,8,uo))),128))]),e("div",ro,[e("md-filled-button",{onClick:m(Ae,["stop"])},g(t.$t("search")),9,_o)])])]),_:1},8,["modelValue"])]),d(Be,{limit:P,total:o(S),"all-checked-alert-visible":o(pe),"real-all-checked":o(B),"select-real-all":o(_e),"clear-selection":o(R)},null,8,["total","all-checked-alert-visible","real-all-checked","select-real-all","clear-selection"]),e("div",po,[e("table",mo,[e("thead",null,[e("tr",null,[e("th",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:n[6]||(n[6]=(...s)=>o(H)&&o(H)(...s)),checked:o(F),indeterminate:!o(F)&&o(N)},null,40,ho)]),fo,e("th",null,g(t.$t("name")),1),go,e("th",vo,g(t.$t("artist")),1),e("th",null,g(t.$t("tags")),1),e("th",null,g(t.$t("duration")),1),e("th",null,g(t.$t("file_size")),1)])]),e("tbody",null,[(l(!0),a(E,null,oe(u.value,s=>(l(),a("tr",{key:s.id,class:_t({selected:s.checked}),onClick:m($=>o(me)(s),["stop"])},[e("td",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:n[7]||(n[7]=(...$)=>o(U)&&o(U)(...$)),checked:s.checked},null,40,ko)]),e("td",null,[d(Re,{id:s.id,raw:s},null,8,["id","raw"])]),e("td",bo,g(s.title),1),e("td",$o,[e("div",To,[f((l(),a("button",{class:"icon-button",onClick:m($=>o(re)(o(i),s),["stop"])},[Co,d(X)],8,qo)),[[y,t.$t("delete")]]),f((l(),a("button",{class:"icon-button",onClick:m($=>o(fe)(s.path,o(pt)(s.path).replace(" ","-")),["stop"])},[Io,d(Y)],8,wo)),[[y,t.$t("download")]]),f((l(),a("button",{class:"icon-button",onClick:m($=>o(ve)($,s),["stop"])},[So,d(ee)],8,Ao)),[[y,t.$t("add_to_playlist")]]),f((l(),a("button",{class:"icon-button",onClick:m($=>Se(s),["stop"])},[Vo,d(te)],8,Do)),[[y,t.$t("add_to_tags")]]),o($e)&&s.path===o(be)?(l(),a("md-circular-progress",Bo)):q(s)?f((l(),a("button",{key:1,class:"icon-button",onClick:n[8]||(n[8]=m($=>o(Te)(),["stop"]))},[Ro,d(Me)])),[[y,t.$t("pause")]]):f((l(),a("button",{key:2,class:"icon-button",onClick:m($=>o(ke)(s),["stop"])},[Po,d(Pe)],8,Mo)),[[y,t.$t("play")]])])]),e("td",null,g(s.artist),1),e("td",null,[d(Ze,{tags:s.tags,type:o(i)},null,8,["tags","type"])]),e("td",Zo,g(o(mt)(s.duration)),1),e("td",Eo,g(o(ht)(s.size)),1)],10,yo))),128))]),u.value.length?Q("",!0):(l(),a("tfoot",Lo,[e("tr",null,[e("td",Qo,[e("div",zo,g(t.$t(o(ft)(o(qe),o(w).permissions,"WRITE_EXTERNAL_STORAGE"))),1)])])]))])]),o(S)>P?(l(),it(Ee,{key:0,modelValue:C.value,"onUpdate:modelValue":n[9]||(n[9]=s=>C.value=s),total:o(S),limit:P},null,8,["modelValue","total"])):Q("",!0)],64)}}});const Oo=Vt(Fo,[["__scopeId","data-v-8a476041"]]);export{Oo as default};
+import{u as Le,_ as Qe,a as ze,b as Fe}from"./list-183f8357.js";import{o as l,c as a,a as e,i as ae,aK as He,u as ie,P as k,x as de,r as D,aL as Ue,d as Ne,e as Ge,s as Ke,f as xe,K as Oe,L as je,D as We,M as Je,aB as Xe,af as Ye,aA as et,N as tt,w as ot,O as st,Q as nt,R as lt,p as d,j as o,F as E,m as f,l as m,k as Q,H as at,t as g,J as oe,S as it,T as dt,U as ct,aM as ut,C as se,W as ne,v as rt,I as _t,aF as pt,a9 as mt,z as ht,$ as ft,A as gt,B as vt,al as yt,as as kt,aG as bt,a0 as $t,a1 as Tt,a2 as qt,a3 as Ct,ad as wt,am as It,a4 as At,a5 as St,a6 as Dt,_ as Vt}from"./index-0c42270c.js";import{_ as Bt}from"./upload-rounded-8f0af5aa.js";import{_ as Rt}from"./Breadcrumb-f52b6c6b.js";import{u as Mt,a as Pt}from"./tags-bf0f6db9.js";import"./vee-validate.esm-ca78f26f.js";const Zt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Et=e("path",{fill:"currentColor",d:"M9.5 9.325v5.35q0 .6.525.875t1.025-.05l4.15-2.65q.475-.275.475-.85t-.475-.85L11.05 8.5q-.5-.325-1.025-.05t-.525.875ZM12 22q-2.075 0-3.9-.788t-3.175-2.137q-1.35-1.35-2.137-3.175T2 12q0-2.075.788-3.9t2.137-3.175q1.35-1.35 3.175-2.137T12 2q2.075 0 3.9.788t3.175 2.137q1.35 1.35 2.138 3.175T22 12q0 2.075-.788 3.9t-2.137 3.175q-1.35 1.35-3.175 2.138T12 22Zm0-10Zm0 8q3.325 0 5.663-2.337T20 12q0-3.325-2.337-5.663T12 4Q8.675 4 6.337 6.337T4 12q0 3.325 2.337 5.663T12 20Z"},null,-1),Lt=[Et];function Qt(c,v){return l(),a("svg",Zt,Lt)}const zt={name:"material-symbols-play-circle-outline-rounded",render:Qt},Ft={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Ht=e("path",{fill:"currentColor",d:"M10 16q.425 0 .713-.288T11 15V8.975q0-.425-.288-.7T10 8q-.425 0-.713.288T9 9v6.025q0 .425.288.7T10 16Zm4 0q.425 0 .713-.288T15 15V8.975q0-.425-.288-.7T14 8q-.425 0-.713.288T13 9v6.025q0 .425.288.7T14 16Zm-2 6q-2.075 0-3.9-.788t-3.175-2.137q-1.35-1.35-2.137-3.175T2 12q0-2.075.788-3.9t2.137-3.175q1.35-1.35 3.175-2.137T12 2q2.075 0 3.9.788t3.175 2.137q1.35 1.35 2.138 3.175T22 12q0 2.075-.788 3.9t-2.137 3.175q-1.35 1.35-3.175 2.138T12 22Zm0-10Zm0 8q3.325 0 5.663-2.337T20 12q0-3.325-2.337-5.663T12 4Q8.675 4 6.337 6.337T4 12q0 3.325 2.337 5.663T12 20Z"},null,-1),Ut=[Ht];function Nt(c,v){return l(),a("svg",Ft,Ut)}const Gt={name:"material-symbols-pause-circle-outline-rounded",render:Nt},Kt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},xt=e("path",{fill:"currentColor",d:"M3 16v-2h7v2H3Zm0-4v-2h11v2H3Zm0-4V6h11v2H3Zm13 12v-4h-4v-2h4v-4h2v4h4v2h-4v4h-2Z"},null,-1),Ot=[xt];function jt(c,v){return l(),a("svg",Kt,Ot)}const Wt={name:"material-symbols-playlist-add",render:jt};function le(c,v,u=500){const r=c.cloneNode(!0),p=c.getBoundingClientRect(),w=v.getBoundingClientRect();r.style.position="absolute",r.style.top=p.top+"px",r.style.left=p.left+"px",r.style.opacity=1,document.body.appendChild(r);let b=0;function T(_){b||(b=_);const q=_-b,i=Math.min(q/u,1);r.style.top=p.top+(w.top-p.top)*i+"px",r.style.left=p.left+(w.left-p.left)*i+"px",i<1?requestAnimationFrame(T):document.body.removeChild(r)}requestAnimationFrame(T)}const Jt=(c,v)=>{const{mutate:u,loading:r,onDone:p}=ae({document:He,appApi:!0}),{t:w}=ie();return p(()=>{k.emit("refetch_app"),v()}),{loading:r,addItemsToPlaylist:(b,T,_)=>{let q=_;if(!T){const V=c.value.filter(C=>C.checked);if(V.length===0){de(w("select_first"),"error");return}q=`ids:${V.map(C=>C.id).join(",")}`}const i=b.target,z=document.getElementById("quick-audio");le(i,z),u({query:q})},addToPlaylist:(b,T)=>{const _=b.target,q=document.getElementById("quick-audio");le(_,q),u({query:`ids:${T.id}`})}}},Xt=()=>{const c=D(""),{mutate:v,loading:u,onDone:r}=ae({document:Ue,appApi:!0});return r(()=>{k.emit("play_audio")}),{loading:u,playPath:c,play:p=>{c.value=p.path,v({path:p.path})},pause:()=>{k.emit("pause_audio")}}},h=c=>(gt("data-v-8a476041"),c=c(),vt(),c),Yt={class:"v-toolbar"},eo=h(()=>e("md-ripple",null,null,-1)),to=h(()=>e("md-ripple",null,null,-1)),oo=h(()=>e("md-ripple",null,null,-1)),so=h(()=>e("md-ripple",null,null,-1)),no=["onClick"],lo=h(()=>e("md-ripple",null,null,-1)),ao={class:"filters"},io=["label"],co={class:"form-label"},uo=["label","selected","onClick"],ro={class:"buttons"},_o=["onClick"],po={class:"table-responsive"},mo={class:"table"},ho=["checked","indeterminate"],fo=h(()=>e("th",null,"ID",-1)),go=h(()=>e("th",null,null,-1)),vo={class:"artist"},yo=["onClick"],ko=["checked"],bo={class:"title"},$o={class:"nowrap"},To={class:"action-btns"},qo=["onClick"],Co=h(()=>e("md-ripple",null,null,-1)),wo=["onClick"],Io=h(()=>e("md-ripple",null,null,-1)),Ao=["onClick"],So=h(()=>e("md-ripple",null,null,-1)),Do=["onClick"],Vo=h(()=>e("md-ripple",null,null,-1)),Bo={key:0,indeterminate:"",class:"spinner-sm"},Ro=h(()=>e("md-ripple",null,null,-1)),Mo=["onClick"],Po=h(()=>e("md-ripple",null,null,-1)),Zo={class:"nowrap"},Eo={class:"nowrap"},Lo={key:0},Qo={colspan:"8"},zo={class:"no-data-placeholder"},P=50,Fo=Ne({__name:"AudiosView",setup(c){var W,J;const v=Ge(),u=D([]),r=D(),{t:p}=ie(),{app:w,urlTokenKey:b,audioPlaying:T}=Ke(xe()),_=Oe({text:"",tags:[]}),q=t=>{var n;return T.value&&((n=w.value)==null?void 0:n.audioCurrent)===t.path},i=je.AUDIO,V=We().query,C=D(parseInt(((W=V.page)==null?void 0:W.toString())??"1")),I=D(Je(((J=V.q)==null?void 0:J.toString())??"")),A=D(""),{tags:Z}=Mt(i,I,_,async t=>{A.value=dt(t),await ct(),Ce()}),{addToTags:ce}=Pt(i,u,Z),{deleteItems:ue,deleteItem:re}=Xe(),{allChecked:F,realAllChecked:B,selectRealAll:_e,allCheckedAlertVisible:pe,clearSelection:R,toggleAllChecked:H,toggleRow:me,toggleItemChecked:U,total:S,checked:N}=Le(u),{downloadItems:he}=Ye(b,i,u,R,"audios.zip"),{downloadFile:fe}=yt(b),{addItemsToPlaylist:ge,addToPlaylist:ve}=Jt(u,R),ye=et(),{play:ke,playPath:be,loading:$e,pause:Te}=Xt(),{loading:qe,load:Ce,refetch:L}=tt({handle:(t,n)=>{n?de(p(n),"error"):t&&(u.value=t.audios.map(M=>({...M,checked:!1})),S.value=t.audioCount)},document:ut,variables:()=>({offset:(C.value-1)*P,limit:P,query:A.value}),appApi:!0});ot(C,t=>{se(v,`/audios?page=${t}&q=${ne(I.value)}`)});function we(){ye.push("/files"),kt(bt,{message:p("upload_audios")})}function Ie(t){_.tags.includes(t)?$t(_.tags,n=>n.id===t.id):_.tags.push(t)}function Ae(){I.value=Tt(_),G(),r.value.dismiss()}function G(){se(v,`/audios?q=${ne(I.value)}`)}const K=t=>{t.type===i&&(R(),L())},x=t=>{t.type===i&&L()},O=t=>{t.type===i&&(R(),L())},j=()=>{S.value--};st(()=>{k.on("item_tags_updated",x),k.on("items_tags_updated",K),k.on("media_item_deleted",j),k.on("media_items_deleted",O)}),nt(()=>{k.off("item_tags_updated",x),k.off("items_tags_updated",K),k.off("media_item_deleted",j),k.off("media_items_deleted",O)});function Se(t){qt(Ct,{type:i,tags:Z.value,item:{key:t.id,title:t.title,size:t.size},selected:Z.value.filter(n=>t.tags.some(M=>M.id===n.id))})}return(t,n)=>{const M=Rt,X=wt,Y=It,ee=Wt,te=At,De=Bt,Ve=Qe,Be=ze,Re=St,Me=Gt,Pe=zt,Ze=Dt,Ee=Fe,y=lt("tooltip");return l(),a(E,null,[e("div",Yt,[d(M,{current:()=>`${t.$t("page_title.audios")} (${o(S)})`},null,8,["current"]),o(N)?(l(),a(E,{key:0},[f((l(),a("button",{class:"icon-button",onClick:n[0]||(n[0]=m(s=>o(ue)(o(i),u.value,o(B),A.value),["stop"]))},[eo,d(X)])),[[y,t.$t("delete")]]),f((l(),a("button",{class:"icon-button",onClick:n[1]||(n[1]=m(s=>o(he)(o(B),A.value),["stop"]))},[to,d(Y)])),[[y,t.$t("download")]]),f((l(),a("button",{class:"icon-button",onClick:n[2]||(n[2]=m(s=>o(ge)(s,o(B),A.value),["stop"]))},[oo,d(ee)])),[[y,t.$t("add_to_playlist")]]),f((l(),a("button",{class:"icon-button",onClick:n[3]||(n[3]=m(s=>o(ce)(o(B),A.value),["stop"]))},[so,d(te)])),[[y,t.$t("add_to_tags")]])],64)):Q("",!0),f((l(),a("button",{class:"icon-button",onClick:m(we,["stop"])},[lo,d(De)],8,no)),[[y,t.$t("upload")]]),d(Ve,{ref_key:"searchInputRef",ref:r,modelValue:I.value,"onUpdate:modelValue":n[5]||(n[5]=s=>I.value=s),search:G},{filters:at(()=>[e("div",ao,[f(e("md-outlined-text-field",{label:t.$t("keywords"),"onUpdate:modelValue":n[4]||(n[4]=s=>_.text=s),"keyup.enter":"applyAndDoSearch"},null,8,io),[[rt,_.text]]),e("label",co,g(t.$t("tags")),1),e("md-chip-set",null,[(l(!0),a(E,null,oe(o(Z),s=>(l(),a("md-filter-chip",{key:s.id,label:s.name,selected:_.tags.includes(s),onClick:$=>Ie(s)},null,8,uo))),128))]),e("div",ro,[e("md-filled-button",{onClick:m(Ae,["stop"])},g(t.$t("search")),9,_o)])])]),_:1},8,["modelValue"])]),d(Be,{limit:P,total:o(S),"all-checked-alert-visible":o(pe),"real-all-checked":o(B),"select-real-all":o(_e),"clear-selection":o(R)},null,8,["total","all-checked-alert-visible","real-all-checked","select-real-all","clear-selection"]),e("div",po,[e("table",mo,[e("thead",null,[e("tr",null,[e("th",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:n[6]||(n[6]=(...s)=>o(H)&&o(H)(...s)),checked:o(F),indeterminate:!o(F)&&o(N)},null,40,ho)]),fo,e("th",null,g(t.$t("name")),1),go,e("th",vo,g(t.$t("artist")),1),e("th",null,g(t.$t("tags")),1),e("th",null,g(t.$t("duration")),1),e("th",null,g(t.$t("file_size")),1)])]),e("tbody",null,[(l(!0),a(E,null,oe(u.value,s=>(l(),a("tr",{key:s.id,class:_t({selected:s.checked}),onClick:m($=>o(me)(s),["stop"])},[e("td",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:n[7]||(n[7]=(...$)=>o(U)&&o(U)(...$)),checked:s.checked},null,40,ko)]),e("td",null,[d(Re,{id:s.id,raw:s},null,8,["id","raw"])]),e("td",bo,g(s.title),1),e("td",$o,[e("div",To,[f((l(),a("button",{class:"icon-button",onClick:m($=>o(re)(o(i),s),["stop"])},[Co,d(X)],8,qo)),[[y,t.$t("delete")]]),f((l(),a("button",{class:"icon-button",onClick:m($=>o(fe)(s.path,o(pt)(s.path).replace(" ","-")),["stop"])},[Io,d(Y)],8,wo)),[[y,t.$t("download")]]),f((l(),a("button",{class:"icon-button",onClick:m($=>o(ve)($,s),["stop"])},[So,d(ee)],8,Ao)),[[y,t.$t("add_to_playlist")]]),f((l(),a("button",{class:"icon-button",onClick:m($=>Se(s),["stop"])},[Vo,d(te)],8,Do)),[[y,t.$t("add_to_tags")]]),o($e)&&s.path===o(be)?(l(),a("md-circular-progress",Bo)):q(s)?f((l(),a("button",{key:1,class:"icon-button",onClick:n[8]||(n[8]=m($=>o(Te)(),["stop"]))},[Ro,d(Me)])),[[y,t.$t("pause")]]):f((l(),a("button",{key:2,class:"icon-button",onClick:m($=>o(ke)(s),["stop"])},[Po,d(Pe)],8,Mo)),[[y,t.$t("play")]])])]),e("td",null,g(s.artist),1),e("td",null,[d(Ze,{tags:s.tags,type:o(i)},null,8,["tags","type"])]),e("td",Zo,g(o(mt)(s.duration)),1),e("td",Eo,g(o(ht)(s.size)),1)],10,yo))),128))]),u.value.length?Q("",!0):(l(),a("tfoot",Lo,[e("tr",null,[e("td",Qo,[e("div",zo,g(t.$t(o(ft)(o(qe),o(w).permissions,"WRITE_EXTERNAL_STORAGE"))),1)])])]))])]),o(S)>P?(l(),it(Ee,{key:0,modelValue:C.value,"onUpdate:modelValue":n[9]||(n[9]=s=>C.value=s),total:o(S),limit:P},null,8,["modelValue","total"])):Q("",!0)],64)}}});const Oo=Vt(Fo,[["__scopeId","data-v-8a476041"]]);export{Oo as default};
diff --git a/app/src/main/resources/web/assets/Breadcrumb-ebe74d39.js b/app/src/main/resources/web/assets/Breadcrumb-f52b6c6b.js
similarity index 81%
rename from app/src/main/resources/web/assets/Breadcrumb-ebe74d39.js
rename to app/src/main/resources/web/assets/Breadcrumb-f52b6c6b.js
index 21ab437e..2b94128f 100644
--- a/app/src/main/resources/web/assets/Breadcrumb-ebe74d39.js
+++ b/app/src/main/resources/web/assets/Breadcrumb-f52b6c6b.js
@@ -1 +1 @@
-import{d as _,e as l,o as n,c as s,F as d,J as p,a as r,t as o,j as f,bR as h,l as m,h as g,bO as y,C as v,_ as b}from"./index-f62f2ff2.js";const k={class:"breadcrumb"},B=["onClick"],C={class:"active"},S=_({__name:"Breadcrumb",props:{current:{type:[String,Function]},paths:{type:Array,default:()=>[]}},setup(e){const c=e,u=l();function i(t){v(u,t)}return(t,$)=>(n(),s("ol",k,[(n(!0),s(d,null,p(c.paths,a=>(n(),s("li",{key:a},[r("a",{href:"#",onClick:m(x=>i(a),["prevent"])},o(t.$t(`page_title.${f(h)(a)}`)),9,B)]))),128)),r("li",C,[g(o(typeof e.current=="function"?e.current():e.current),1),y(t.$slots,"current",{},void 0,!0)])]))}});const N=b(S,[["__scopeId","data-v-938402da"]]);export{N as _};
+import{d as _,e as l,o as n,c as s,F as d,J as p,a as r,t as o,j as f,bR as h,l as m,h as g,bO as y,C as v,_ as b}from"./index-0c42270c.js";const k={class:"breadcrumb"},B=["onClick"],C={class:"active"},S=_({__name:"Breadcrumb",props:{current:{type:[String,Function]},paths:{type:Array,default:()=>[]}},setup(e){const c=e,u=l();function i(t){v(u,t)}return(t,$)=>(n(),s("ol",k,[(n(!0),s(d,null,p(c.paths,a=>(n(),s("li",{key:a},[r("a",{href:"#",onClick:m(x=>i(a),["prevent"])},o(t.$t(`page_title.${f(h)(a)}`)),9,B)]))),128)),r("li",C,[g(o(typeof e.current=="function"?e.current():e.current),1),y(t.$slots,"current",{},void 0,!0)])]))}});const N=b(S,[["__scopeId","data-v-938402da"]]);export{N as _};
diff --git a/app/src/main/resources/web/assets/BucketFilter.vuevuetypescriptsetuptruelang-9dafd033.js b/app/src/main/resources/web/assets/BucketFilter.vuevuetypescriptsetuptruelang-f7ab6958.js
similarity index 93%
rename from app/src/main/resources/web/assets/BucketFilter.vuevuetypescriptsetuptruelang-9dafd033.js
rename to app/src/main/resources/web/assets/BucketFilter.vuevuetypescriptsetuptruelang-f7ab6958.js
index a1dd6c74..59fd16dc 100644
--- a/app/src/main/resources/web/assets/BucketFilter.vuevuetypescriptsetuptruelang-9dafd033.js
+++ b/app/src/main/resources/web/assets/BucketFilter.vuevuetypescriptsetuptruelang-f7ab6958.js
@@ -1 +1 @@
-import{d as _,u as k,e as v,r as I,g as B,x as g,aJ as h,O as C,P as n,Q as D,o as l,c as u,J as S,l as b,I as q,t as m,F as M,T as Q,C as x,W as A}from"./index-f62f2ff2.js";const E=["onClick"],$=_({__name:"BucketFilter",props:{type:{type:String,required:!0},selected:{type:String,required:!0}},setup(i){const a=i,{t:p}=k(),f=v(),o=I([]),{refetch:d}=B({handle:(e,s)=>{s?g(p(s),"error"):e&&(o.value=e.mediaBuckets)},document:h,variables:{type:a.type},appApi:!0});function y(e){const s=Q([{name:"bucket_id",op:"",value:e.id}]);x(f,`/${{AUDIO:"audios",IMAGE:"images",VIDEO:"videos"}[a.type]}?q=${A(s)}`)}const r=e=>{e.type===a.type&&d()},c=e=>{e.item.bucketId&&e.type===a.type&&d()};return C(()=>{n.on("media_items_deleted",r),n.on("media_item_deleted",c)}),D(()=>{n.off("media_items_deleted",r),n.off("media_item_deleted",c)}),(e,s)=>(l(!0),u(M,null,S(o.value,t=>(l(),u("li",{key:t.id,onClick:b(F=>y(t),["prevent"]),class:q({active:i.selected&&t.id===i.selected})},m(t.name)+" ("+m(t.itemCount)+")",11,E))),128))}});export{$ as _};
+import{d as _,u as k,e as v,r as I,g as B,x as g,aJ as h,O as C,P as n,Q as D,o as l,c as u,J as S,l as b,I as q,t as m,F as M,T as Q,C as x,W as A}from"./index-0c42270c.js";const E=["onClick"],$=_({__name:"BucketFilter",props:{type:{type:String,required:!0},selected:{type:String,required:!0}},setup(i){const a=i,{t:p}=k(),f=v(),o=I([]),{refetch:d}=B({handle:(e,s)=>{s?g(p(s),"error"):e&&(o.value=e.mediaBuckets)},document:h,variables:{type:a.type},appApi:!0});function y(e){const s=Q([{name:"bucket_id",op:"",value:e.id}]);x(f,`/${{AUDIO:"audios",IMAGE:"images",VIDEO:"videos"}[a.type]}?q=${A(s)}`)}const r=e=>{e.type===a.type&&d()},c=e=>{e.item.bucketId&&e.type===a.type&&d()};return C(()=>{n.on("media_items_deleted",r),n.on("media_item_deleted",c)}),D(()=>{n.off("media_items_deleted",r),n.off("media_item_deleted",c)}),(e,s)=>(l(!0),u(M,null,S(o.value,t=>(l(),u("li",{key:t.id,onClick:b(F=>y(t),["prevent"]),class:q({active:i.selected&&t.id===i.selected})},m(t.name)+" ("+m(t.itemCount)+")",11,E))),128))}});export{$ as _};
diff --git a/app/src/main/resources/web/assets/CallsRootView-07c41008.js b/app/src/main/resources/web/assets/CallsRootView-df2ef363.js
similarity index 74%
rename from app/src/main/resources/web/assets/CallsRootView-07c41008.js
rename to app/src/main/resources/web/assets/CallsRootView-df2ef363.js
index 9b197553..2187c2f2 100644
--- a/app/src/main/resources/web/assets/CallsRootView-07c41008.js
+++ b/app/src/main/resources/web/assets/CallsRootView-df2ef363.js
@@ -1 +1 @@
-import{_ as $}from"./TagFilter.vuevuetypescriptsetuptruelang-9b4a0b6e.js";import{d as w,D as B,e as N,E as z,G as L,c as p,p as a,H as l,j as e,o as m,a as s,t as i,l as d,I as u,F as M,J as S,C as f}from"./index-f62f2ff2.js";import{g as h,M as T}from"./splitpanes.es-2b477659.js";import"./EditValueModal-d57e85f6.js";import"./vee-validate.esm-65abdaa1.js";const V={class:"page-container"},D={class:"sidebar"},E={class:"nav-title"},F={class:"nav"},R=["onClick"],b=["onClick"],j={class:"main"},K=w({__name:"CallsRootView",setup(q){const n=B(),c=N(),r=n.params.type,_=r?"":z(n.query);function v(t){f(c,`/calls/${t}`)}const g=["incoming","outgoing","missed"];function C(){f(c,"/calls")}return(t,A)=>{const y=$,k=L("router-view");return m(),p("div",V,[a(e(T),null,{default:l(()=>[a(e(h),{size:"20","min-size":"10"},{default:l(()=>[s("div",D,[s("h2",E,i(t.$t("page_title.calls")),1),s("ul",F,[s("li",{onClick:d(C,["prevent"]),class:u({active:e(n).path==="/calls"&&!e(_)})},i(t.$t("all")),11,R),(m(),p(M,null,S(g,o=>s("li",{key:o,onClick:d(G=>v(o),["prevent"]),class:u({active:o===e(r)})},i(t.$t(`call_type.${o}`)),11,b)),64))]),a(y,{type:"CALL",selected:e(_)},null,8,["selected"])])]),_:1}),a(e(h),null,{default:l(()=>[s("div",j,[a(k)])]),_:1})]),_:1})])}}});export{K as default};
+import{_ as $}from"./TagFilter.vuevuetypescriptsetuptruelang-12e262c1.js";import{d as w,D as B,e as N,E as z,G as L,c as p,p as a,H as l,j as e,o as m,a as s,t as i,l as d,I as u,F as M,J as S,C as f}from"./index-0c42270c.js";import{g as h,M as T}from"./splitpanes.es-7e8a6fea.js";import"./EditValueModal-c22a5b2d.js";import"./vee-validate.esm-ca78f26f.js";const V={class:"page-container"},D={class:"sidebar"},E={class:"nav-title"},F={class:"nav"},R=["onClick"],b=["onClick"],j={class:"main"},K=w({__name:"CallsRootView",setup(q){const n=B(),c=N(),r=n.params.type,_=r?"":z(n.query);function v(t){f(c,`/calls/${t}`)}const g=["incoming","outgoing","missed"];function C(){f(c,"/calls")}return(t,A)=>{const y=$,k=L("router-view");return m(),p("div",V,[a(e(T),null,{default:l(()=>[a(e(h),{size:"20","min-size":"10"},{default:l(()=>[s("div",D,[s("h2",E,i(t.$t("page_title.calls")),1),s("ul",F,[s("li",{onClick:d(C,["prevent"]),class:u({active:e(n).path==="/calls"&&!e(_)})},i(t.$t("all")),11,R),(m(),p(M,null,S(g,o=>s("li",{key:o,onClick:d(G=>v(o),["prevent"]),class:u({active:o===e(r)})},i(t.$t(`call_type.${o}`)),11,b)),64))]),a(y,{type:"CALL",selected:e(_)},null,8,["selected"])])]),_:1}),a(e(h),null,{default:l(()=>[s("div",j,[a(k)])]),_:1})]),_:1})])}}});export{K as default};
diff --git a/app/src/main/resources/web/assets/CallsView-441198f9.js b/app/src/main/resources/web/assets/CallsView-d07d93e5.js
similarity index 94%
rename from app/src/main/resources/web/assets/CallsView-441198f9.js
rename to app/src/main/resources/web/assets/CallsView-d07d93e5.js
index bd2cc203..997722a7 100644
--- a/app/src/main/resources/web/assets/CallsView-441198f9.js
+++ b/app/src/main/resources/web/assets/CallsView-d07d93e5.js
@@ -1,4 +1,4 @@
-import{c as be,u as Ce,_ as Te,a as we,b as qe}from"./list-45297bd9.js";import{d as Se,e as Ae,s as De,f as Ve,r as k,u as Le,K as Ie,L as Re,D as Me,M as Qe,N as Ue,w as Be,O as Ne,P as y,Q as Ge,i as ze,R as Ee,c as i,a as t,p as d,j as l,F as S,m as p,l as _,k as R,H as Fe,t as n,J as W,S as He,T as Y,U as je,a7 as Ke,x as Oe,a8 as Pe,C as A,W as D,q as xe,o,v as Je,I as We,a9 as Ye,Y as Ze,h as Xe,Z as et,$ as tt,a2 as Z,a3 as st,a0 as lt,aa as at,ab as nt,ac as ot,ad as it,a4 as ct,a5 as dt,a6 as ut}from"./index-f62f2ff2.js";import{_ as rt}from"./call-outline-rounded-79a3fba5.js";import{_ as pt}from"./Breadcrumb-ebe74d39.js";import{u as _t,a as mt}from"./tags-06583423.js";import"./vee-validate.esm-65abdaa1.js";const ht={class:"v-toolbar"},ft=t("md-ripple",null,null,-1),gt=t("md-ripple",null,null,-1),vt={class:"filters"},kt=["label"],yt={class:"form-label"},$t=["label","selected","onClick"],bt={class:"buttons"},Ct=["onClick"],Tt={class:"table-responsive"},wt={class:"table"},qt=["checked","indeterminate"],St=t("th",null,"ID",-1),At=t("th",null,null,-1),Dt=["onClick"],Vt=["checked"],Lt={class:"v-center"},It={class:"nowrap"},Rt={class:"action-btns"},Mt=["onClick"],Qt=t("md-ripple",null,null,-1),Ut={key:0,indeterminate:"",class:"spinner-sm"},Bt=["onClick"],Nt=t("md-ripple",null,null,-1),Gt=["onClick"],zt=t("md-ripple",null,null,-1),Et={class:"nowrap"},Ft={class:"nowrap"},Ht={class:"nowrap"},jt={key:0},Kt={colspan:"10"},Ot={class:"no-data-placeholder"},b=50,es=Se({__name:"CallsView",setup(Pt){var O,P;const C=Ae(),{app:X}=De(Ve()),m=k([]),M=k(),{t:Q}=Le(),c=Ie({text:"",tags:[]}),u=Re.CALL,U=Me(),B=U.query,T=k(parseInt(((O=B.page)==null?void 0:O.toString())??"1")),r=k(Qe(((P=B.q)==null?void 0:P.toString())??"")),w=k(""),{tags:q}=_t(u,r,c,async e=>{f&&e.push({name:"type",op:"",value:ie[f].toString()}),w.value=Y(e),await je(),oe()}),{addToTags:ee}=mt(u,m,q),{deleteItems:te}=be(Ke,()=>{L(),I(),y.emit("refetch_tags",u)},m),{allChecked:N,realAllChecked:V,selectRealAll:se,allCheckedAlertVisible:le,clearSelection:L,toggleAllChecked:G,toggleItemChecked:z,toggleRow:ae,total:h,checked:E}=Ce(m),{loading:ne,load:oe,refetch:I}=Ue({handle:(e,a)=>{a?Oe(Q(a),"error"):e&&(m.value=e.calls.map($=>({...$,checked:!1})),h.value=e.callCount)},document:Pe,variables:()=>({offset:(T.value-1)*b,limit:b,query:w.value}),appApi:!0}),f=U.params.type,ie={incoming:1,outgoing:2,missed:3};Be(T,e=>{f?A(C,`/calls/${f}?page=${e}&q=${D(r.value)}`):A(C,`/calls?page=${e}&q=${D(r.value)}`)});function ce(e){Z(st,{type:u,tags:q.value,item:{key:e.id,title:"",size:0},selected:q.value.filter(a=>e.tags.some($=>$.id===a.id))})}function de(e){c.tags.includes(e)?lt(c.tags,a=>a.id===e.id):c.tags.push(e)}function ue(){const e=[];for(const a of c.tags)e.push({name:"tag",op:"",value:at.kebabCase(a.name)});c.text&&e.push({name:"text",op:"",value:c.text}),r.value=Y(e),F(),M.value.dismiss()}function F(){f?A(C,`/calls/${f}?q=${D(r.value)}`):A(C,`/calls?q=${D(r.value)}`)}const H=e=>{e.type===u&&(L(),I())},j=e=>{e.type===u&&I()};Ne(()=>{y.on("item_tags_updated",j),y.on("items_tags_updated",H)}),Ge(()=>{y.off("item_tags_updated",j),y.off("items_tags_updated",H)});function re(e){if(!e)return"";const a=[];return e.isp&&a.push(Q("phone_isp_type."+e.isp)),e.city===e.province?a.push(e.city):a.push(`${e.province}${e.city}`),a.join(", ")}const K=k(""),{mutate:pe,loading:_e}=ze({document:xe,appApi:!0});function me(e){K.value=e.id,pe({number:e.number})}function he(e){Z(ot,{id:e.id,name:e.id,gql:nt`
+import{c as be,u as Ce,_ as Te,a as we,b as qe}from"./list-183f8357.js";import{d as Se,e as Ae,s as De,f as Ve,r as k,u as Le,K as Ie,L as Re,D as Me,M as Qe,N as Ue,w as Be,O as Ne,P as y,Q as Ge,i as ze,R as Ee,c as i,a as t,p as d,j as l,F as S,m as p,l as _,k as R,H as Fe,t as n,J as W,S as He,T as Y,U as je,a7 as Ke,x as Oe,a8 as Pe,C as A,W as D,q as xe,o,v as Je,I as We,a9 as Ye,Y as Ze,h as Xe,Z as et,$ as tt,a2 as Z,a3 as st,a0 as lt,aa as at,ab as nt,ac as ot,ad as it,a4 as ct,a5 as dt,a6 as ut}from"./index-0c42270c.js";import{_ as rt}from"./call-outline-rounded-00415545.js";import{_ as pt}from"./Breadcrumb-f52b6c6b.js";import{u as _t,a as mt}from"./tags-bf0f6db9.js";import"./vee-validate.esm-ca78f26f.js";const ht={class:"v-toolbar"},ft=t("md-ripple",null,null,-1),gt=t("md-ripple",null,null,-1),vt={class:"filters"},kt=["label"],yt={class:"form-label"},$t=["label","selected","onClick"],bt={class:"buttons"},Ct=["onClick"],Tt={class:"table-responsive"},wt={class:"table"},qt=["checked","indeterminate"],St=t("th",null,"ID",-1),At=t("th",null,null,-1),Dt=["onClick"],Vt=["checked"],Lt={class:"v-center"},It={class:"nowrap"},Rt={class:"action-btns"},Mt=["onClick"],Qt=t("md-ripple",null,null,-1),Ut={key:0,indeterminate:"",class:"spinner-sm"},Bt=["onClick"],Nt=t("md-ripple",null,null,-1),Gt=["onClick"],zt=t("md-ripple",null,null,-1),Et={class:"nowrap"},Ft={class:"nowrap"},Ht={class:"nowrap"},jt={key:0},Kt={colspan:"10"},Ot={class:"no-data-placeholder"},b=50,es=Se({__name:"CallsView",setup(Pt){var O,P;const C=Ae(),{app:X}=De(Ve()),m=k([]),M=k(),{t:Q}=Le(),c=Ie({text:"",tags:[]}),u=Re.CALL,U=Me(),B=U.query,T=k(parseInt(((O=B.page)==null?void 0:O.toString())??"1")),r=k(Qe(((P=B.q)==null?void 0:P.toString())??"")),w=k(""),{tags:q}=_t(u,r,c,async e=>{f&&e.push({name:"type",op:"",value:ie[f].toString()}),w.value=Y(e),await je(),oe()}),{addToTags:ee}=mt(u,m,q),{deleteItems:te}=be(Ke,()=>{L(),I(),y.emit("refetch_tags",u)},m),{allChecked:N,realAllChecked:V,selectRealAll:se,allCheckedAlertVisible:le,clearSelection:L,toggleAllChecked:G,toggleItemChecked:z,toggleRow:ae,total:h,checked:E}=Ce(m),{loading:ne,load:oe,refetch:I}=Ue({handle:(e,a)=>{a?Oe(Q(a),"error"):e&&(m.value=e.calls.map($=>({...$,checked:!1})),h.value=e.callCount)},document:Pe,variables:()=>({offset:(T.value-1)*b,limit:b,query:w.value}),appApi:!0}),f=U.params.type,ie={incoming:1,outgoing:2,missed:3};Be(T,e=>{f?A(C,`/calls/${f}?page=${e}&q=${D(r.value)}`):A(C,`/calls?page=${e}&q=${D(r.value)}`)});function ce(e){Z(st,{type:u,tags:q.value,item:{key:e.id,title:"",size:0},selected:q.value.filter(a=>e.tags.some($=>$.id===a.id))})}function de(e){c.tags.includes(e)?lt(c.tags,a=>a.id===e.id):c.tags.push(e)}function ue(){const e=[];for(const a of c.tags)e.push({name:"tag",op:"",value:at.kebabCase(a.name)});c.text&&e.push({name:"text",op:"",value:c.text}),r.value=Y(e),F(),M.value.dismiss()}function F(){f?A(C,`/calls/${f}?q=${D(r.value)}`):A(C,`/calls?q=${D(r.value)}`)}const H=e=>{e.type===u&&(L(),I())},j=e=>{e.type===u&&I()};Ne(()=>{y.on("item_tags_updated",j),y.on("items_tags_updated",H)}),Ge(()=>{y.off("item_tags_updated",j),y.off("items_tags_updated",H)});function re(e){if(!e)return"";const a=[];return e.isp&&a.push(Q("phone_isp_type."+e.isp)),e.city===e.province?a.push(e.city):a.push(`${e.province}${e.city}`),a.join(", ")}const K=k(""),{mutate:pe,loading:_e}=ze({document:xe,appApi:!0});function me(e){K.value=e.id,pe({number:e.number})}function he(e){Z(ot,{id:e.id,name:e.id,gql:nt`
mutation DeleteCall($query: String!) {
deleteCalls(query: $query)
}
diff --git a/app/src/main/resources/web/assets/ContactsRootView-f2e48655.js b/app/src/main/resources/web/assets/ContactsRootView-78887ad1.js
similarity index 69%
rename from app/src/main/resources/web/assets/ContactsRootView-f2e48655.js
rename to app/src/main/resources/web/assets/ContactsRootView-78887ad1.js
index 14375b42..6145a2af 100644
--- a/app/src/main/resources/web/assets/ContactsRootView-f2e48655.js
+++ b/app/src/main/resources/web/assets/ContactsRootView-78887ad1.js
@@ -1 +1 @@
-import{_ as m}from"./TagFilter.vuevuetypescriptsetuptruelang-9b4a0b6e.js";import{d as u,D as f,e as h,E as v,G as C,c as g,p as t,H as a,j as e,o as w,a as s,t as i,l as N,I as k,C as T}from"./index-f62f2ff2.js";import{g as l,M as y}from"./splitpanes.es-2b477659.js";import"./EditValueModal-d57e85f6.js";import"./vee-validate.esm-65abdaa1.js";const z={class:"page-container"},B={class:"sidebar"},M={class:"nav-title"},S={class:"nav"},V=["onClick"],$={class:"main"},A=u({__name:"ContactsRootView",setup(D){const o=f(),r=h(),n=v(o.query);function _(){T(r,"/contacts")}return(c,E)=>{const p=m,d=C("router-view");return w(),g("div",z,[t(e(y),null,{default:a(()=>[t(e(l),{size:"20","min-size":"10"},{default:a(()=>[s("div",B,[s("h2",M,i(c.$t("page_title.contacts")),1),s("ul",S,[s("li",{onClick:N(_,["prevent"]),class:k({active:e(o).path==="/contacts"&&!e(n)})},i(c.$t("all")),11,V)]),t(p,{type:"CONTACT",selected:e(n)},null,8,["selected"])])]),_:1}),t(e(l),null,{default:a(()=>[s("div",$,[t(d)])]),_:1})]),_:1})])}}});export{A as default};
+import{_ as m}from"./TagFilter.vuevuetypescriptsetuptruelang-12e262c1.js";import{d as u,D as f,e as h,E as v,G as C,c as g,p as t,H as a,j as e,o as w,a as s,t as i,l as N,I as k,C as T}from"./index-0c42270c.js";import{g as l,M as y}from"./splitpanes.es-7e8a6fea.js";import"./EditValueModal-c22a5b2d.js";import"./vee-validate.esm-ca78f26f.js";const z={class:"page-container"},B={class:"sidebar"},M={class:"nav-title"},S={class:"nav"},V=["onClick"],$={class:"main"},A=u({__name:"ContactsRootView",setup(D){const o=f(),r=h(),n=v(o.query);function _(){T(r,"/contacts")}return(c,E)=>{const p=m,d=C("router-view");return w(),g("div",z,[t(e(y),null,{default:a(()=>[t(e(l),{size:"20","min-size":"10"},{default:a(()=>[s("div",B,[s("h2",M,i(c.$t("page_title.contacts")),1),s("ul",S,[s("li",{onClick:N(_,["prevent"]),class:k({active:e(o).path==="/contacts"&&!e(n)})},i(c.$t("all")),11,V)]),t(p,{type:"CONTACT",selected:e(n)},null,8,["selected"])])]),_:1}),t(e(l),null,{default:a(()=>[s("div",$,[t(d)])]),_:1})]),_:1})])}}});export{A as default};
diff --git a/app/src/main/resources/web/assets/ContactsView-fbe22ecb.js b/app/src/main/resources/web/assets/ContactsView-0a79638e.js
similarity index 98%
rename from app/src/main/resources/web/assets/ContactsView-fbe22ecb.js
rename to app/src/main/resources/web/assets/ContactsView-0a79638e.js
index b30e6a80..06b391d6 100644
--- a/app/src/main/resources/web/assets/ContactsView-fbe22ecb.js
+++ b/app/src/main/resources/web/assets/ContactsView-0a79638e.js
@@ -1,4 +1,4 @@
-import{c as Je,u as Pe,_ as We,a as Ye,b as Xe}from"./list-45297bd9.js";import{o,c as n,a as e,d as de,r as I,an as Ne,ao as j,U as qe,t as u,m,v as f,j as i,n as et,ap as tt,_ as Ve,K as Te,u as Ue,i as se,aq as fe,ar as be,k as T,p as h,F as v,J as b,H as ae,as as lt,ad as Ie,at as ot,e as nt,s as st,f as at,L as dt,D as it,M as ut,N as rt,g as ct,w as _t,O as pt,P as G,Q as mt,R as ht,l as B,S as vt,T as ft,au as bt,x as $e,av as $t,aw as yt,C as ye,W as ge,a2 as te,q as gt,I as kt,ax as Ct,h as ke,Y as wt,Z as Nt,$ as qt,A as Vt,B as Tt,a1 as Ut,a3 as It,ay as Ce,a0 as St,ab as At,ac as Dt,am as Lt,a4 as Mt,a5 as Ft,a6 as xt}from"./index-f62f2ff2.js";import{_ as Rt}from"./call-outline-rounded-79a3fba5.js";import{_ as Bt}from"./Breadcrumb-ebe74d39.js";import{u as Se,a as Ae}from"./vee-validate.esm-65abdaa1.js";import{u as Qt,a as Zt}from"./tags-06583423.js";const zt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Ot=e("path",{fill:"currentColor",d:"m19.3 8.925l-4.25-4.2l1.4-1.4q.575-.575 1.413-.575t1.412.575l1.4 1.4q.575.575.6 1.388t-.55 1.387L19.3 8.925ZM17.85 10.4L7.25 21H3v-4.25l10.6-10.6l4.25 4.25Z"},null,-1),jt=[Ot];function Et(g,$){return o(),n("svg",zt,jt)}const Gt={name:"material-symbols-edit",render:Et},Ht={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Kt=e("path",{fill:"currentColor",d:"M6.7 11.7q-.275-.275-.275-.7t.275-.7l4.6-4.6q.15-.15.325-.212T12 5.425q.2 0 .375.063t.325.212l4.6 4.6q.275.275.288.688t-.288.712q-.275.275-.7.275t-.7-.275L12 7.825L8.1 11.7q-.275.275-.688.288T6.7 11.7Zm0 6q-.275-.275-.275-.7t.275-.7l4.6-4.6q.15-.15.325-.212t.375-.063q.2 0 .375.063t.325.212l4.6 4.6q.275.275.288.688t-.288.712q-.275.275-.7.275t-.7-.275L12 13.825L8.1 17.7q-.275.275-.688.288T6.7 17.7Z"},null,-1),Jt=[Kt];function Pt(g,$){return o(),n("svg",Ht,Jt)}const Wt={name:"material-symbols-keyboard-double-arrow-up-rounded",render:Pt},Yt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Xt=e("path",{fill:"currentColor",d:"M12 12.575q-.2 0-.375-.062T11.3 12.3L6.7 7.7q-.275-.275-.288-.688T6.7 6.3q.275-.275.7-.275t.7.275l3.9 3.875L15.9 6.3q.275-.275.688-.287t.712.287q.275.275.275.7t-.275.7l-4.6 4.6q-.15.15-.325.213t-.375.062Zm0 6q-.2 0-.375-.062T11.3 18.3l-4.6-4.6q-.275-.275-.288-.687T6.7 12.3q.275-.275.7-.275t.7.275l3.9 3.875l3.9-3.875q.275-.275.688-.288t.712.288q.275.275.275.7t-.275.7l-4.6 4.6q-.15.15-.325.213t-.375.062Z"},null,-1),el=[Xt];function tl(g,$){return o(),n("svg",Yt,el)}const ll={name:"material-symbols-keyboard-double-arrow-down-rounded",render:tl};function H(g){return Array.from({length:g},($,Q)=>Q+1).concat(-1)}const W={phoneNumberTypes:H(20),emailTypes:H(4),addressTypes:H(3),eventTypes:H(3),imTypes:H(8),websiteTypes:H(7)},ol={slot:"headline"},nl={slot:"content"},sl=["error","error-text"],al={slot:"actions"},dl=de({__name:"PromptModal",props:{do:{type:Function,required:!0},title:{type:String,required:!0},value:{type:String}},setup(g){const $=g,{handleSubmit:Q}=Se(),d=I(),{value:C,resetField:M,errorMessage:w}=Ae("inputValue",Ne().required()),k=Q(()=>{$.do(C.value??""),j()});return C.value=$.value,$.value||M(),(async()=>{var A;await qe(),(A=d.value)==null||A.focus()})(),(A,q)=>(o(),n("md-dialog",null,[e("div",ol,u(g.title),1),e("div",nl,[m(e("md-outlined-text-field",{ref_key:"inputRef",ref:d,class:"form-control",error:i(w),"error-text":i(w)?A.$t(i(w)):"","onUpdate:modelValue":q[0]||(q[0]=N=>et(C)?C.value=N:null),onKeyup:q[1]||(q[1]=tt((...N)=>i(k)&&i(k)(...N),["enter"]))},null,40,sl),[[f,i(C)]])]),e("div",al,[e("md-outlined-button",{value:"cancel",onClick:q[2]||(q[2]=(...N)=>i(j)&&i(j)(...N))},u(A.$t("cancel")),1),e("md-filled-button",{value:"ok",onClick:q[3]||(q[3]=(...N)=>i(k)&&i(k)(...N)),autofocus:""},u(A.$t("ok")),1)])]))}});const il=Ve(dl,[["__scopeId","data-v-f510d520"]]),ul={slot:"headline"},rl={slot:"content"},cl={class:"form-label"},_l={class:"form-row"},pl=["label"],ml=["label"],hl=["label"],vl={key:1,class:"v-center"},fl=e("md-ripple",null,null,-1),bl={key:0,class:"form-row"},$l=["label"],yl=["label"],gl={class:"v-center"},kl=e("md-ripple",null,null,-1),Cl={class:"form-label"},wl=["onUpdate:modelValue","onChange"],Nl=["value"],ql={slot:"headline"},Vl=["placeholder","onUpdate:modelValue"],Tl={class:"v-center"},Ul=["onClick"],Il=e("md-ripple",null,null,-1),Sl={key:1,class:"form-label"},Al=["onUpdate:modelValue","onChange"],Dl=["value"],Ll={slot:"headline"},Ml=["label","onUpdate:modelValue"],Fl={class:"v-center"},xl=["onClick"],Rl=e("md-ripple",null,null,-1),Bl={key:2,class:"form-label"},Ql=["onUpdate:modelValue","onChange"],Zl=["value"],zl={slot:"headline"},Ol=["label","onUpdate:modelValue"],jl={class:"v-center"},El=["onClick"],Gl=e("md-ripple",null,null,-1),Hl={key:3,class:"form-label"},Kl=["onUpdate:modelValue","onChange"],Jl=["value"],Pl={slot:"headline"},Wl=["placeholder","onUpdate:modelValue"],Yl={class:"v-center"},Xl=["onClick"],eo=e("md-ripple",null,null,-1),to={key:4,class:"form-label"},lo=["onUpdate:modelValue","onChange"],oo=["value"],no={slot:"headline"},so=["placeholder","onUpdate:modelValue"],ao={class:"v-center"},io=["onClick"],uo=e("md-ripple",null,null,-1),ro={class:"form-row",style:{display:"block",position:"relative"}},co={class:"menu-items"},_o=["onClick"],po={slot:"headline"},mo=["onClick"],ho={slot:"headline"},vo=["onClick"],fo={slot:"headline"},bo=["onClick"],$o={slot:"headline"},yo=["onClick"],go={slot:"headline"},ko={class:"form-row"},Co=["label"],wo={slot:"actions"},No=["disabled"],we=de({__name:"EditContactModal",props:{data:{type:Object},sources:{type:Array},done:{type:Function,required:!0}},setup(g){const $=g,{handleSubmit:Q}=Se(),d=Te({firstName:"",middleName:"",lastName:"",prefix:"",suffix:"",nickname:"",organization:null,notes:"",source:"",starred:0,phoneNumbers:[],emails:[],addresses:[],websites:[],events:[],ims:[],groupIds:[]}),C=I(!1),{t:M}=Ue(),{mutate:w,loading:k,onDone:A}=se({document:fe`
+import{c as Je,u as Pe,_ as We,a as Ye,b as Xe}from"./list-183f8357.js";import{o,c as n,a as e,d as de,r as I,an as Ne,ao as j,U as qe,t as u,m,v as f,j as i,n as et,ap as tt,_ as Ve,K as Te,u as Ue,i as se,aq as fe,ar as be,k as T,p as h,F as v,J as b,H as ae,as as lt,ad as Ie,at as ot,e as nt,s as st,f as at,L as dt,D as it,M as ut,N as rt,g as ct,w as _t,O as pt,P as G,Q as mt,R as ht,l as B,S as vt,T as ft,au as bt,x as $e,av as $t,aw as yt,C as ye,W as ge,a2 as te,q as gt,I as kt,ax as Ct,h as ke,Y as wt,Z as Nt,$ as qt,A as Vt,B as Tt,a1 as Ut,a3 as It,ay as Ce,a0 as St,ab as At,ac as Dt,am as Lt,a4 as Mt,a5 as Ft,a6 as xt}from"./index-0c42270c.js";import{_ as Rt}from"./call-outline-rounded-00415545.js";import{_ as Bt}from"./Breadcrumb-f52b6c6b.js";import{u as Se,a as Ae}from"./vee-validate.esm-ca78f26f.js";import{u as Qt,a as Zt}from"./tags-bf0f6db9.js";const zt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Ot=e("path",{fill:"currentColor",d:"m19.3 8.925l-4.25-4.2l1.4-1.4q.575-.575 1.413-.575t1.412.575l1.4 1.4q.575.575.6 1.388t-.55 1.387L19.3 8.925ZM17.85 10.4L7.25 21H3v-4.25l10.6-10.6l4.25 4.25Z"},null,-1),jt=[Ot];function Et(g,$){return o(),n("svg",zt,jt)}const Gt={name:"material-symbols-edit",render:Et},Ht={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Kt=e("path",{fill:"currentColor",d:"M6.7 11.7q-.275-.275-.275-.7t.275-.7l4.6-4.6q.15-.15.325-.212T12 5.425q.2 0 .375.063t.325.212l4.6 4.6q.275.275.288.688t-.288.712q-.275.275-.7.275t-.7-.275L12 7.825L8.1 11.7q-.275.275-.688.288T6.7 11.7Zm0 6q-.275-.275-.275-.7t.275-.7l4.6-4.6q.15-.15.325-.212t.375-.063q.2 0 .375.063t.325.212l4.6 4.6q.275.275.288.688t-.288.712q-.275.275-.7.275t-.7-.275L12 13.825L8.1 17.7q-.275.275-.688.288T6.7 17.7Z"},null,-1),Jt=[Kt];function Pt(g,$){return o(),n("svg",Ht,Jt)}const Wt={name:"material-symbols-keyboard-double-arrow-up-rounded",render:Pt},Yt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Xt=e("path",{fill:"currentColor",d:"M12 12.575q-.2 0-.375-.062T11.3 12.3L6.7 7.7q-.275-.275-.288-.688T6.7 6.3q.275-.275.7-.275t.7.275l3.9 3.875L15.9 6.3q.275-.275.688-.287t.712.287q.275.275.275.7t-.275.7l-4.6 4.6q-.15.15-.325.213t-.375.062Zm0 6q-.2 0-.375-.062T11.3 18.3l-4.6-4.6q-.275-.275-.288-.687T6.7 12.3q.275-.275.7-.275t.7.275l3.9 3.875l3.9-3.875q.275-.275.688-.288t.712.288q.275.275.275.7t-.275.7l-4.6 4.6q-.15.15-.325.213t-.375.062Z"},null,-1),el=[Xt];function tl(g,$){return o(),n("svg",Yt,el)}const ll={name:"material-symbols-keyboard-double-arrow-down-rounded",render:tl};function H(g){return Array.from({length:g},($,Q)=>Q+1).concat(-1)}const W={phoneNumberTypes:H(20),emailTypes:H(4),addressTypes:H(3),eventTypes:H(3),imTypes:H(8),websiteTypes:H(7)},ol={slot:"headline"},nl={slot:"content"},sl=["error","error-text"],al={slot:"actions"},dl=de({__name:"PromptModal",props:{do:{type:Function,required:!0},title:{type:String,required:!0},value:{type:String}},setup(g){const $=g,{handleSubmit:Q}=Se(),d=I(),{value:C,resetField:M,errorMessage:w}=Ae("inputValue",Ne().required()),k=Q(()=>{$.do(C.value??""),j()});return C.value=$.value,$.value||M(),(async()=>{var A;await qe(),(A=d.value)==null||A.focus()})(),(A,q)=>(o(),n("md-dialog",null,[e("div",ol,u(g.title),1),e("div",nl,[m(e("md-outlined-text-field",{ref_key:"inputRef",ref:d,class:"form-control",error:i(w),"error-text":i(w)?A.$t(i(w)):"","onUpdate:modelValue":q[0]||(q[0]=N=>et(C)?C.value=N:null),onKeyup:q[1]||(q[1]=tt((...N)=>i(k)&&i(k)(...N),["enter"]))},null,40,sl),[[f,i(C)]])]),e("div",al,[e("md-outlined-button",{value:"cancel",onClick:q[2]||(q[2]=(...N)=>i(j)&&i(j)(...N))},u(A.$t("cancel")),1),e("md-filled-button",{value:"ok",onClick:q[3]||(q[3]=(...N)=>i(k)&&i(k)(...N)),autofocus:""},u(A.$t("ok")),1)])]))}});const il=Ve(dl,[["__scopeId","data-v-f510d520"]]),ul={slot:"headline"},rl={slot:"content"},cl={class:"form-label"},_l={class:"form-row"},pl=["label"],ml=["label"],hl=["label"],vl={key:1,class:"v-center"},fl=e("md-ripple",null,null,-1),bl={key:0,class:"form-row"},$l=["label"],yl=["label"],gl={class:"v-center"},kl=e("md-ripple",null,null,-1),Cl={class:"form-label"},wl=["onUpdate:modelValue","onChange"],Nl=["value"],ql={slot:"headline"},Vl=["placeholder","onUpdate:modelValue"],Tl={class:"v-center"},Ul=["onClick"],Il=e("md-ripple",null,null,-1),Sl={key:1,class:"form-label"},Al=["onUpdate:modelValue","onChange"],Dl=["value"],Ll={slot:"headline"},Ml=["label","onUpdate:modelValue"],Fl={class:"v-center"},xl=["onClick"],Rl=e("md-ripple",null,null,-1),Bl={key:2,class:"form-label"},Ql=["onUpdate:modelValue","onChange"],Zl=["value"],zl={slot:"headline"},Ol=["label","onUpdate:modelValue"],jl={class:"v-center"},El=["onClick"],Gl=e("md-ripple",null,null,-1),Hl={key:3,class:"form-label"},Kl=["onUpdate:modelValue","onChange"],Jl=["value"],Pl={slot:"headline"},Wl=["placeholder","onUpdate:modelValue"],Yl={class:"v-center"},Xl=["onClick"],eo=e("md-ripple",null,null,-1),to={key:4,class:"form-label"},lo=["onUpdate:modelValue","onChange"],oo=["value"],no={slot:"headline"},so=["placeholder","onUpdate:modelValue"],ao={class:"v-center"},io=["onClick"],uo=e("md-ripple",null,null,-1),ro={class:"form-row",style:{display:"block",position:"relative"}},co={class:"menu-items"},_o=["onClick"],po={slot:"headline"},mo=["onClick"],ho={slot:"headline"},vo=["onClick"],fo={slot:"headline"},bo=["onClick"],$o={slot:"headline"},yo=["onClick"],go={slot:"headline"},ko={class:"form-row"},Co=["label"],wo={slot:"actions"},No=["disabled"],we=de({__name:"EditContactModal",props:{data:{type:Object},sources:{type:Array},done:{type:Function,required:!0}},setup(g){const $=g,{handleSubmit:Q}=Se(),d=Te({firstName:"",middleName:"",lastName:"",prefix:"",suffix:"",nickname:"",organization:null,notes:"",source:"",starred:0,phoneNumbers:[],emails:[],addresses:[],websites:[],events:[],ims:[],groupIds:[]}),C=I(!1),{t:M}=Ue(),{mutate:w,loading:k,onDone:A}=se({document:fe`
mutation createContact($input: ContactInput!) {
createContact(input: $input) {
...ContactFragment
diff --git a/app/src/main/resources/web/assets/DeviceInfoView-9d38adba.js b/app/src/main/resources/web/assets/DeviceInfoView-c84a4cf1.js
similarity index 96%
rename from app/src/main/resources/web/assets/DeviceInfoView-9d38adba.js
rename to app/src/main/resources/web/assets/DeviceInfoView-c84a4cf1.js
index fb0cc4d5..4f434fbf 100644
--- a/app/src/main/resources/web/assets/DeviceInfoView-9d38adba.js
+++ b/app/src/main/resources/web/assets/DeviceInfoView-c84a4cf1.js
@@ -1 +1 @@
-import{_ as V}from"./Breadcrumb-ebe74d39.js";import{d as $,u as I,r as p,g as A,R as D,c as l,a,p as w,t as o,F as r,J as i,x as N,a9 as T,bx as B,o as t,m as y,j as d,Y as m,h as u,Z as f,_ as j}from"./index-f62f2ff2.js";const x={class:"page-container"},F={class:"main"},E={class:"v-toolbar"},L={class:"panel-container"},Q={class:"grid"},S={class:"g-col-6 g-col-md-4"},C={class:"card"},G={class:"card-body"},J={class:"card-title"},P={class:"card-text"},R={class:"key-value"},Y={class:"key"},Z={class:"value"},q={key:0,class:"time"},z={class:"g-col-6 g-col-md-4"},H={class:"card"},K={class:"card-body"},M={class:"card-title"},O={class:"card-text"},U={class:"key-value"},W={class:"key"},X={class:"value"},ee={key:0,class:"time"},ae={class:"g-col-6 g-col-md-4"},se={class:"card"},le={class:"card-body"},te={class:"card-title"},oe={class:"card-text"},ce={class:"key-value"},ne={class:"key"},re={class:"value"},ie={key:0,class:"time"},de=$({__name:"DeviceInfoView",setup(ue){const{t:_}=I(),b=p([]),g=p([]),k=p([]);return A({handle:(n,h)=>{if(h)N(_(h),"error");else{const s=n.deviceInfo;b.value=[{label:"device_name",value:s.deviceName},{label:"model",value:s.model},{label:"manufacturer",value:s.manufacturer},{label:"device",value:s.device},{label:"board",value:s.board},{label:"hardware",value:s.hardware},{label:"brand",value:s.buildBrand},{label:"build_fingerprint",value:s.fingerprint}],s.phoneNumbers.length>0&&b.value.push({label:"phone_number",value:s.phoneNumbers.map(e=>e.name+" "+e.number)}),g.value=[{label:"android_version",value:s.releaseBuildVersion+" ("+s.sdkVersion+")"},{label:"security_patch",value:s.securityPatch},{label:"bootloader",value:s.bootloader},{label:"build_number",value:s.displayVersion},{label:"baseband",value:s.radioVersion},{label:"java_vm",value:s.javaVmVersion},{label:"kernel",value:s.kernelVersion},{label:"opengl_es",value:s.glEsVersion},{label:"uptime",value:T(s.uptime/1e3)}];const c=n.battery;k.value=[{label:"health",value:_(`battery_health.${c.health}`)},{label:"remaining",value:`${c.level}%`},{label:"status",value:_(`battery_status.${c.status}`)},{label:"power_source",value:_(`battery_plugged.${c.plugged}`)},{label:"technology",value:c.technology},{label:"temperature",value:`${c.temperature} ℃`},{label:"voltage",value:`${c.voltage} mV`},{label:"capacity",value:c.capacity+" mAh"}]}},document:B,appApi:!0}),(n,h)=>{const s=V,c=D("tooltip");return t(),l("div",x,[a("div",F,[a("div",E,[w(s,{current:()=>n.$t("device_info")},null,8,["current"])]),a("div",L,[a("div",Q,[a("div",S,[a("section",C,[a("div",G,[a("h5",J,o(n.$t("device")),1),a("p",P,[(t(!0),l(r,null,i(b.value,e=>(t(),l("div",R,[a("div",Y,o(n.$t(e.label)),1),a("div",Z,[e.isTime?y((t(),l("span",q,[u(o(d(f)(e.value)),1)])),[[c,d(m)(e.value)]]):Array.isArray(e.value)?(t(!0),l(r,{key:1},i(e.value,v=>(t(),l("div",null,o(v),1))),256)):(t(),l(r,{key:2},[u(o(e.value),1)],64))])]))),256))])])])]),a("div",z,[a("section",H,[a("div",K,[a("h5",M,o(n.$t("system")),1),a("p",O,[(t(!0),l(r,null,i(g.value,e=>(t(),l("div",U,[a("div",W,o(n.$t(e.label)),1),a("div",X,[e.isTime?y((t(),l("span",ee,[u(o(d(f)(e.value)),1)])),[[c,d(m)(e.value)]]):Array.isArray(e.value)?(t(!0),l(r,{key:1},i(e.value,v=>(t(),l("div",null,o(v),1))),256)):(t(),l(r,{key:2},[u(o(e.value),1)],64))])]))),256))])])])]),a("div",ae,[a("section",se,[a("div",le,[a("h5",te,o(n.$t("battery")),1),a("p",oe,[(t(!0),l(r,null,i(k.value,e=>(t(),l("div",ce,[a("div",ne,o(n.$t(e.label)),1),a("div",re,[e.isTime?y((t(),l("span",ie,[u(o(d(f)(e.value)),1)])),[[c,d(m)(e.value)]]):Array.isArray(e.value)?(t(!0),l(r,{key:1},i(e.value,v=>(t(),l("div",null,o(v),1))),256)):(t(),l(r,{key:2},[u(o(e.value),1)],64))])]))),256))])])])])])])])])}}});const be=j(de,[["__scopeId","data-v-c9cf5e1a"]]);export{be as default};
+import{_ as V}from"./Breadcrumb-f52b6c6b.js";import{d as $,u as I,r as p,g as A,R as D,c as l,a,p as w,t as o,F as r,J as i,x as N,a9 as T,bx as B,o as t,m as y,j as d,Y as m,h as u,Z as f,_ as j}from"./index-0c42270c.js";const x={class:"page-container"},F={class:"main"},E={class:"v-toolbar"},L={class:"panel-container"},Q={class:"grid"},S={class:"g-col-6 g-col-md-4"},C={class:"card"},G={class:"card-body"},J={class:"card-title"},P={class:"card-text"},R={class:"key-value"},Y={class:"key"},Z={class:"value"},q={key:0,class:"time"},z={class:"g-col-6 g-col-md-4"},H={class:"card"},K={class:"card-body"},M={class:"card-title"},O={class:"card-text"},U={class:"key-value"},W={class:"key"},X={class:"value"},ee={key:0,class:"time"},ae={class:"g-col-6 g-col-md-4"},se={class:"card"},le={class:"card-body"},te={class:"card-title"},oe={class:"card-text"},ce={class:"key-value"},ne={class:"key"},re={class:"value"},ie={key:0,class:"time"},de=$({__name:"DeviceInfoView",setup(ue){const{t:_}=I(),b=p([]),g=p([]),k=p([]);return A({handle:(n,h)=>{if(h)N(_(h),"error");else{const s=n.deviceInfo;b.value=[{label:"device_name",value:s.deviceName},{label:"model",value:s.model},{label:"manufacturer",value:s.manufacturer},{label:"device",value:s.device},{label:"board",value:s.board},{label:"hardware",value:s.hardware},{label:"brand",value:s.buildBrand},{label:"build_fingerprint",value:s.fingerprint}],s.phoneNumbers.length>0&&b.value.push({label:"phone_number",value:s.phoneNumbers.map(e=>e.name+" "+e.number)}),g.value=[{label:"android_version",value:s.releaseBuildVersion+" ("+s.sdkVersion+")"},{label:"security_patch",value:s.securityPatch},{label:"bootloader",value:s.bootloader},{label:"build_number",value:s.displayVersion},{label:"baseband",value:s.radioVersion},{label:"java_vm",value:s.javaVmVersion},{label:"kernel",value:s.kernelVersion},{label:"opengl_es",value:s.glEsVersion},{label:"uptime",value:T(s.uptime/1e3)}];const c=n.battery;k.value=[{label:"health",value:_(`battery_health.${c.health}`)},{label:"remaining",value:`${c.level}%`},{label:"status",value:_(`battery_status.${c.status}`)},{label:"power_source",value:_(`battery_plugged.${c.plugged}`)},{label:"technology",value:c.technology},{label:"temperature",value:`${c.temperature} ℃`},{label:"voltage",value:`${c.voltage} mV`},{label:"capacity",value:c.capacity+" mAh"}]}},document:B,appApi:!0}),(n,h)=>{const s=V,c=D("tooltip");return t(),l("div",x,[a("div",F,[a("div",E,[w(s,{current:()=>n.$t("device_info")},null,8,["current"])]),a("div",L,[a("div",Q,[a("div",S,[a("section",C,[a("div",G,[a("h5",J,o(n.$t("device")),1),a("p",P,[(t(!0),l(r,null,i(b.value,e=>(t(),l("div",R,[a("div",Y,o(n.$t(e.label)),1),a("div",Z,[e.isTime?y((t(),l("span",q,[u(o(d(f)(e.value)),1)])),[[c,d(m)(e.value)]]):Array.isArray(e.value)?(t(!0),l(r,{key:1},i(e.value,v=>(t(),l("div",null,o(v),1))),256)):(t(),l(r,{key:2},[u(o(e.value),1)],64))])]))),256))])])])]),a("div",z,[a("section",H,[a("div",K,[a("h5",M,o(n.$t("system")),1),a("p",O,[(t(!0),l(r,null,i(g.value,e=>(t(),l("div",U,[a("div",W,o(n.$t(e.label)),1),a("div",X,[e.isTime?y((t(),l("span",ee,[u(o(d(f)(e.value)),1)])),[[c,d(m)(e.value)]]):Array.isArray(e.value)?(t(!0),l(r,{key:1},i(e.value,v=>(t(),l("div",null,o(v),1))),256)):(t(),l(r,{key:2},[u(o(e.value),1)],64))])]))),256))])])])]),a("div",ae,[a("section",se,[a("div",le,[a("h5",te,o(n.$t("battery")),1),a("p",oe,[(t(!0),l(r,null,i(k.value,e=>(t(),l("div",ce,[a("div",ne,o(n.$t(e.label)),1),a("div",re,[e.isTime?y((t(),l("span",ie,[u(o(d(f)(e.value)),1)])),[[c,d(m)(e.value)]]):Array.isArray(e.value)?(t(!0),l(r,{key:1},i(e.value,v=>(t(),l("div",null,o(v),1))),256)):(t(),l(r,{key:2},[u(o(e.value),1)],64))])]))),256))])])])])])])])])}}});const be=j(de,[["__scopeId","data-v-c9cf5e1a"]]);export{be as default};
diff --git a/app/src/main/resources/web/assets/DevicesView-4dc23f17.js b/app/src/main/resources/web/assets/DevicesView-b0613c32.js
similarity index 92%
rename from app/src/main/resources/web/assets/DevicesView-4dc23f17.js
rename to app/src/main/resources/web/assets/DevicesView-b0613c32.js
index 858029bc..16f6467f 100644
--- a/app/src/main/resources/web/assets/DevicesView-4dc23f17.js
+++ b/app/src/main/resources/web/assets/DevicesView-b0613c32.js
@@ -1,4 +1,4 @@
-import{d as y,u as A,r as C,g as F,x as N,ab as r,c2 as p,R as I,c as o,a as e,p as m,t,F as M,J as q,o as i,l as _,m as v,j as d,Y as h,h as $,Z as f,a2 as D,ac as B,i as E,a5 as T}from"./index-f62f2ff2.js";import{_ as S}from"./Breadcrumb-ebe74d39.js";import{E as j}from"./EditValueModal-d57e85f6.js";import"./vee-validate.esm-65abdaa1.js";const J={class:"page-container"},L={class:"main"},O={class:"table-responsive"},Q={class:"table"},R=e("th",null,"ID",-1),U={class:"actions one"},Y=["onClick"],Z={class:"nowrap"},z={class:"nowrap"},G={class:"actions one"},H=["onClick"],ee=y({__name:"DevicesView",setup(K){const{t:s}=A(),c=C([]);F({handle:(n,l)=>{l?N(s(l),"error"):c.value=[...n.devices]},document:r`
+import{d as y,u as A,r as C,g as F,x as N,ab as r,c2 as p,R as I,c as o,a as e,p as m,t,F as M,J as q,o as i,l as _,m as v,j as d,Y as h,h as $,Z as f,a2 as D,ac as B,i as E,a5 as T}from"./index-0c42270c.js";import{_ as S}from"./Breadcrumb-f52b6c6b.js";import{E as j}from"./EditValueModal-c22a5b2d.js";import"./vee-validate.esm-ca78f26f.js";const J={class:"page-container"},L={class:"main"},O={class:"table-responsive"},Q={class:"table"},R=e("th",null,"ID",-1),U={class:"actions one"},Y=["onClick"],Z={class:"nowrap"},z={class:"nowrap"},G={class:"actions one"},H=["onClick"],ee=y({__name:"DevicesView",setup(K){const{t:s}=A(),c=C([]);F({handle:(n,l)=>{l?N(s(l),"error"):c.value=[...n.devices]},document:r`
query {
devices {
...DeviceFragment
diff --git a/app/src/main/resources/web/assets/EditToolbar.vuevuetypescriptsetuptruelang-60d4e984.js b/app/src/main/resources/web/assets/EditToolbar.vuevuetypescriptsetuptruelang-c9962942.js
similarity index 92%
rename from app/src/main/resources/web/assets/EditToolbar.vuevuetypescriptsetuptruelang-60d4e984.js
rename to app/src/main/resources/web/assets/EditToolbar.vuevuetypescriptsetuptruelang-c9962942.js
index a3fe3ab3..8c16afbd 100644
--- a/app/src/main/resources/web/assets/EditToolbar.vuevuetypescriptsetuptruelang-60d4e984.js
+++ b/app/src/main/resources/web/assets/EditToolbar.vuevuetypescriptsetuptruelang-c9962942.js
@@ -1 +1 @@
-import{d as b,r as m,o,c as l,a as r,F as v,J as p,I as y,t as c}from"./index-f62f2ff2.js";const f={class:"v-toolbar"},g={class:"v-tabs"},h=["onClick"],k=["disabled"],F=b({__name:"EditToolbar",props:{modelValue:{type:Number,default:0},save:{type:Function},loading:{type:Boolean},tabs:{type:Array,default:()=>[]}},emits:["update:modelValue"],setup(e,{emit:d}){const n=m(e.modelValue);function u(t){n.value=t,d("update:modelValue",t)}return(t,i)=>(o(),l("div",f,[r("ul",g,[(o(!0),l(v,null,p(e.tabs,(a,s)=>(o(),l("li",{key:s,onClick:V=>u(s),class:y({active:n.value===s})},c(a.startsWith("t:")?t.$t(a.slice(2)):a),11,h))),128))]),r("button",{type:"button",disabled:e.loading,class:"btn right-actions",onClick:i[0]||(i[0]=(...a)=>e.save&&e.save(...a))},c(t.$t(e.loading?"saving":"save")),9,k)]))}});export{F as _};
+import{d as b,r as m,o,c as l,a as r,F as v,J as p,I as y,t as c}from"./index-0c42270c.js";const f={class:"v-toolbar"},g={class:"v-tabs"},h=["onClick"],k=["disabled"],F=b({__name:"EditToolbar",props:{modelValue:{type:Number,default:0},save:{type:Function},loading:{type:Boolean},tabs:{type:Array,default:()=>[]}},emits:["update:modelValue"],setup(e,{emit:d}){const n=m(e.modelValue);function u(t){n.value=t,d("update:modelValue",t)}return(t,i)=>(o(),l("div",f,[r("ul",g,[(o(!0),l(v,null,p(e.tabs,(a,s)=>(o(),l("li",{key:s,onClick:V=>u(s),class:y({active:n.value===s})},c(a.startsWith("t:")?t.$t(a.slice(2)):a),11,h))),128))]),r("button",{type:"button",disabled:e.loading,class:"btn right-actions",onClick:i[0]||(i[0]=(...a)=>e.save&&e.save(...a))},c(t.$t(e.loading?"saving":"save")),9,k)]))}});export{F as _};
diff --git a/app/src/main/resources/web/assets/EditValueModal-d57e85f6.js b/app/src/main/resources/web/assets/EditValueModal-c22a5b2d.js
similarity index 91%
rename from app/src/main/resources/web/assets/EditValueModal-d57e85f6.js
rename to app/src/main/resources/web/assets/EditValueModal-c22a5b2d.js
index cf701a6f..48cae9f5 100644
--- a/app/src/main/resources/web/assets/EditValueModal-d57e85f6.js
+++ b/app/src/main/resources/web/assets/EditValueModal-c22a5b2d.js
@@ -1 +1 @@
-import{d as h,r as V,an as b,U as k,ao as p,o as x,c as E,a as n,t as u,m as F,v as M,j as t,n as S,ap as q,_ as w}from"./index-f62f2ff2.js";import{u as B,a as C}from"./vee-validate.esm-65abdaa1.js";const D={slot:"headline"},R={slot:"content"},$=["placeholder","error","error-text"],K={slot:"actions"},T=["disabled"],U=h({__name:"EditValueModal",props:{getVariables:{type:Function,required:!0},title:{type:String,required:!0},placeholder:{type:String},value:{type:String},mutation:{type:Function,required:!0},done:{type:Function}},setup(r){const s=r,{handleSubmit:v}=B(),c=V(),{mutate:m,loading:f,onDone:_}=s.mutation(),{value:o,resetField:y,errorMessage:d}=C("inputValue",b().required());o.value=s.value??"",o.value||y();function g(){p()}(async()=>{var e;await k(),(e=c.value)==null||e.focus()})();const i=v(()=>{m(s.getVariables(o.value??""))});return _(()=>{var e;(e=s.done)==null||e.call(this,o.value),p()}),(e,a)=>(x(),E("md-dialog",null,[n("div",D,u(r.title),1),n("div",R,[F(n("md-outlined-text-field",{ref_key:"inputRef",ref:c,placeholder:r.placeholder,"onUpdate:modelValue":a[0]||(a[0]=l=>S(o)?o.value=l:null),onKeyup:a[1]||(a[1]=q((...l)=>t(i)&&t(i)(...l),["enter"])),error:t(d),"error-text":t(d)?e.$t(t(d)):""},null,40,$),[[M,t(o)]])]),n("div",K,[n("md-outlined-button",{value:"cancel",onClick:g},u(e.$t("cancel")),1),n("md-filled-button",{value:"save",disabled:t(f),onClick:a[2]||(a[2]=(...l)=>t(i)&&t(i)(...l)),autofocus:""},u(e.$t("save")),9,T)])]))}});const I=w(U,[["__scopeId","data-v-ed4da307"]]);export{I as E};
+import{d as h,r as V,an as b,U as k,ao as p,o as x,c as E,a as n,t as u,m as F,v as M,j as t,n as S,ap as q,_ as w}from"./index-0c42270c.js";import{u as B,a as C}from"./vee-validate.esm-ca78f26f.js";const D={slot:"headline"},R={slot:"content"},$=["placeholder","error","error-text"],K={slot:"actions"},T=["disabled"],U=h({__name:"EditValueModal",props:{getVariables:{type:Function,required:!0},title:{type:String,required:!0},placeholder:{type:String},value:{type:String},mutation:{type:Function,required:!0},done:{type:Function}},setup(r){const s=r,{handleSubmit:v}=B(),c=V(),{mutate:m,loading:f,onDone:_}=s.mutation(),{value:o,resetField:y,errorMessage:d}=C("inputValue",b().required());o.value=s.value??"",o.value||y();function g(){p()}(async()=>{var e;await k(),(e=c.value)==null||e.focus()})();const i=v(()=>{m(s.getVariables(o.value??""))});return _(()=>{var e;(e=s.done)==null||e.call(this,o.value),p()}),(e,a)=>(x(),E("md-dialog",null,[n("div",D,u(r.title),1),n("div",R,[F(n("md-outlined-text-field",{ref_key:"inputRef",ref:c,placeholder:r.placeholder,"onUpdate:modelValue":a[0]||(a[0]=l=>S(o)?o.value=l:null),onKeyup:a[1]||(a[1]=q((...l)=>t(i)&&t(i)(...l),["enter"])),error:t(d),"error-text":t(d)?e.$t(t(d)):""},null,40,$),[[M,t(o)]])]),n("div",K,[n("md-outlined-button",{value:"cancel",onClick:g},u(e.$t("cancel")),1),n("md-filled-button",{value:"save",disabled:t(f),onClick:a[2]||(a[2]=(...l)=>t(i)&&t(i)(...l)),autofocus:""},u(e.$t("save")),9,T)])]))}});const I=w(U,[["__scopeId","data-v-ed4da307"]]);export{I as E};
diff --git a/app/src/main/resources/web/assets/FeedEntryView-711970c4.js b/app/src/main/resources/web/assets/FeedEntryView-21a66b88.js
similarity index 95%
rename from app/src/main/resources/web/assets/FeedEntryView-711970c4.js
rename to app/src/main/resources/web/assets/FeedEntryView-21a66b88.js
index db8df449..672c5c40 100644
--- a/app/src/main/resources/web/assets/FeedEntryView-711970c4.js
+++ b/app/src/main/resources/web/assets/FeedEntryView-21a66b88.js
@@ -1 +1 @@
-import{_ as P}from"./print-outline-rounded-5fefda7f.js";import{o as s,c as o,a,d as Y,u as W,D as X,r as _,s as ee,f as te,g as A,i as ne,O as se,P as r,Q as oe,R as ae,t as q,S as ie,j as g,k as I,F as ce,J as le,m as u,l as b,p,x as Q,cl as de,aS as _e,cm as re,a5 as ue,Z as pe,A as me,B as he,a2 as ve,a3 as ye,a4 as Te,_ as fe}from"./index-f62f2ff2.js";import{u as qe}from"./markdown-737d43fa.js";const ge={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},be=a("path",{fill:"currentColor",d:"M5 21q-.825 0-1.413-.588T3 19V5q0-.825.588-1.413T5 3h6q.425 0 .713.288T12 4q0 .425-.288.713T11 5H5v14h14v-6q0-.425.288-.713T20 12q.425 0 .713.288T21 13v6q0 .825-.588 1.413T19 21H5Zm4-6q-.275-.275-.275-.7T9 13.6L17.6 5H15q-.425 0-.713-.288T14 4q0-.425.288-.713T15 3h5q.425 0 .713.288T21 4v5q0 .425-.288.713T20 10q-.425 0-.713-.288T19 9V6.4l-8.625 8.625q-.275.275-.675.275T9 15Z"},null,-1),we=[be];function ke(i,c){return s(),o("svg",ge,we)}const Ce={name:"material-symbols-open-in-new-rounded",render:ke},$e={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Ee=a("path",{fill:"currentColor",d:"M15.375 19.25q-.525.25-.95-.038T14 18.275q0-.25.163-.487t.412-.363q1.575-.75 2.5-2.225T18 11.95q0-1.125-.425-2.187T16.25 7.8L16 7.55V9q0 .425-.288.713T15 10q-.425 0-.713-.288T14 9V5q0-.425.288-.713T15 4h4q.425 0 .713.288T20 5q0 .425-.288.713T19 6h-1.75l.4.35q1.225 1.225 1.788 2.663T20 11.95q0 2.4-1.25 4.363t-3.375 2.937ZM5 20q-.425 0-.713-.288T4 19q0-.425.288-.713T5 18h1.75l-.4-.35q-1.225-1.225-1.788-2.663T4 12.05q0-2.4 1.25-4.362T8.625 4.75q.525-.25.95.038t.425.937q0 .25-.163.488t-.412.362q-1.575.75-2.5 2.225T6 12.05q0 1.125.425 2.188T7.75 16.2l.25.25V15q0-.425.288-.713T9 14q.425 0 .713.288T10 15v4q0 .425-.288.713T9 20H5Z"},null,-1),Fe=[Ee];function Ve(i,c){return s(),o("svg",$e,Fe)}const Me={name:"material-symbols-sync-rounded",render:Ve},h=i=>(me("data-v-5b41a86a"),i=i(),he(),i),Le={class:"container"},De={class:"title"},He={class:"subtitle v-center"},Be={key:1,class:"author"},Se=["onClick"],xe=h(()=>a("md-ripple",null,null,-1)),Ae={key:2,indeterminate:"",class:"spinner-sm"},Ie=["disabled","onClick"],Qe=h(()=>a("md-ripple",null,null,-1)),Ze=["href"],Ne={class:"icon-button"},Re=h(()=>a("md-ripple",null,null,-1)),Ge=["onClick"],Ue=h(()=>a("md-ripple",null,null,-1)),je=["innerHTML"],m="FEED_ENTRY",ze=Y({__name:"FeedEntryView",setup(i){const{t:c}=W(),Z=X(),w=_(Z.params.id),n=_(),v=_(""),y=_(),{app:N,urlTokenKey:R}=ee(te()),{render:k}=qe(N,R),{refetch:C}=A({handle:async(e,t)=>{t?Q(c(t),"error"):(n.value=e.feedEntry,v.value=await k(e.feedEntry.content||e.feedEntry.description))},document:de,variables:()=>({id:w.value}),appApi:!0});A({handle:(e,t)=>{t?Q(c(t),"error"):e&&(y.value=e.tags)},document:_e,variables:{type:m},appApi:!0});const G=()=>{window.print()};function U(){var e,t;ve(ye,{type:m,tags:y.value,item:{key:(e=n.value)==null?void 0:e.id,title:"",size:0},selected:(t=y.value)==null?void 0:t.filter(T=>{var l;return(l=n.value)==null?void 0:l.tags.some(f=>f.id===T.id)})})}const{mutate:j,loading:$,onDone:z}=ne({document:re,appApi:!0});z(async e=>{const t=e.data;n.value=t.syncFeedContent,v.value=await k(t.syncFeedContent.content||t.syncFeedContent.description)});const J=()=>{j({id:w.value})},E=e=>{e.type===m&&C()},F=e=>{e.type===m&&C()};return se(()=>{r.on("item_tags_updated",F),r.on("items_tags_updated",E)}),oe(()=>{r.off("item_tags_updated",F),r.off("items_tags_updated",E)}),(e,t)=>{var V,M,L,D,H,B,S;const T=ue,l=Te,f=Me,K=Ce,O=P,d=ae("tooltip");return s(),o("div",Le,[a("h2",De,q((V=n.value)==null?void 0:V.title),1),a("div",He,[(M=n.value)!=null&&M.publishedAt?(s(),ie(T,{key:0,class:"time",id:g(pe)((L=n.value)==null?void 0:L.publishedAt),raw:n.value},null,8,["id","raw"])):I("",!0),(D=n.value)!=null&&D.author?(s(),o("span",Be,q((H=n.value)==null?void 0:H.author),1)):I("",!0),(s(!0),o(ce,null,le((B=n.value)==null?void 0:B.tags,x=>(s(),o("span",{key:x.id,class:"badge"},q(x.name),1))),128)),u((s(),o("button",{class:"icon-button",onClick:b(U,["prevent"]),style:{"margin-inline-start":"8px"}},[xe,p(l)],8,Se)),[[d,e.$t("add_to_tags")]]),g($)?(s(),o("md-circular-progress",Ae)):u((s(),o("button",{key:3,class:"icon-button btn-icon",disabled:g($),onClick:b(J,["prevent"])},[Qe,p(f)],8,Ie)),[[d,e.$t("sync_content")]]),u((s(),o("a",{href:(S=n.value)==null?void 0:S.url,target:"_blank"},[a("button",Ne,[Re,p(K)])],8,Ze)),[[d,e.$t("view_original_article")]]),u((s(),o("button",{class:"icon-button",onClick:b(G,["prevent"])},[Ue,p(O)],8,Ge)),[[d,e.$t("print")]])]),a("div",{class:"md-container",innerHTML:v.value},null,8,je)])}}});const Pe=fe(ze,[["__scopeId","data-v-5b41a86a"]]);export{Pe as default};
+import{_ as P}from"./print-outline-rounded-5f50c8a6.js";import{o as s,c as o,a,d as Y,u as W,D as X,r as _,s as ee,f as te,g as A,i as ne,O as se,P as r,Q as oe,R as ae,t as q,S as ie,j as g,k as I,F as ce,J as le,m as u,l as b,p,x as Q,cl as de,aS as _e,cm as re,a5 as ue,Z as pe,A as me,B as he,a2 as ve,a3 as ye,a4 as Te,_ as fe}from"./index-0c42270c.js";import{u as qe}from"./markdown-fa9038b1.js";const ge={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},be=a("path",{fill:"currentColor",d:"M5 21q-.825 0-1.413-.588T3 19V5q0-.825.588-1.413T5 3h6q.425 0 .713.288T12 4q0 .425-.288.713T11 5H5v14h14v-6q0-.425.288-.713T20 12q.425 0 .713.288T21 13v6q0 .825-.588 1.413T19 21H5Zm4-6q-.275-.275-.275-.7T9 13.6L17.6 5H15q-.425 0-.713-.288T14 4q0-.425.288-.713T15 3h5q.425 0 .713.288T21 4v5q0 .425-.288.713T20 10q-.425 0-.713-.288T19 9V6.4l-8.625 8.625q-.275.275-.675.275T9 15Z"},null,-1),we=[be];function ke(i,c){return s(),o("svg",ge,we)}const Ce={name:"material-symbols-open-in-new-rounded",render:ke},$e={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Ee=a("path",{fill:"currentColor",d:"M15.375 19.25q-.525.25-.95-.038T14 18.275q0-.25.163-.487t.412-.363q1.575-.75 2.5-2.225T18 11.95q0-1.125-.425-2.187T16.25 7.8L16 7.55V9q0 .425-.288.713T15 10q-.425 0-.713-.288T14 9V5q0-.425.288-.713T15 4h4q.425 0 .713.288T20 5q0 .425-.288.713T19 6h-1.75l.4.35q1.225 1.225 1.788 2.663T20 11.95q0 2.4-1.25 4.363t-3.375 2.937ZM5 20q-.425 0-.713-.288T4 19q0-.425.288-.713T5 18h1.75l-.4-.35q-1.225-1.225-1.788-2.663T4 12.05q0-2.4 1.25-4.362T8.625 4.75q.525-.25.95.038t.425.937q0 .25-.163.488t-.412.362q-1.575.75-2.5 2.225T6 12.05q0 1.125.425 2.188T7.75 16.2l.25.25V15q0-.425.288-.713T9 14q.425 0 .713.288T10 15v4q0 .425-.288.713T9 20H5Z"},null,-1),Fe=[Ee];function Ve(i,c){return s(),o("svg",$e,Fe)}const Me={name:"material-symbols-sync-rounded",render:Ve},h=i=>(me("data-v-5b41a86a"),i=i(),he(),i),Le={class:"container"},De={class:"title"},He={class:"subtitle v-center"},Be={key:1,class:"author"},Se=["onClick"],xe=h(()=>a("md-ripple",null,null,-1)),Ae={key:2,indeterminate:"",class:"spinner-sm"},Ie=["disabled","onClick"],Qe=h(()=>a("md-ripple",null,null,-1)),Ze=["href"],Ne={class:"icon-button"},Re=h(()=>a("md-ripple",null,null,-1)),Ge=["onClick"],Ue=h(()=>a("md-ripple",null,null,-1)),je=["innerHTML"],m="FEED_ENTRY",ze=Y({__name:"FeedEntryView",setup(i){const{t:c}=W(),Z=X(),w=_(Z.params.id),n=_(),v=_(""),y=_(),{app:N,urlTokenKey:R}=ee(te()),{render:k}=qe(N,R),{refetch:C}=A({handle:async(e,t)=>{t?Q(c(t),"error"):(n.value=e.feedEntry,v.value=await k(e.feedEntry.content||e.feedEntry.description))},document:de,variables:()=>({id:w.value}),appApi:!0});A({handle:(e,t)=>{t?Q(c(t),"error"):e&&(y.value=e.tags)},document:_e,variables:{type:m},appApi:!0});const G=()=>{window.print()};function U(){var e,t;ve(ye,{type:m,tags:y.value,item:{key:(e=n.value)==null?void 0:e.id,title:"",size:0},selected:(t=y.value)==null?void 0:t.filter(T=>{var l;return(l=n.value)==null?void 0:l.tags.some(f=>f.id===T.id)})})}const{mutate:j,loading:$,onDone:z}=ne({document:re,appApi:!0});z(async e=>{const t=e.data;n.value=t.syncFeedContent,v.value=await k(t.syncFeedContent.content||t.syncFeedContent.description)});const J=()=>{j({id:w.value})},E=e=>{e.type===m&&C()},F=e=>{e.type===m&&C()};return se(()=>{r.on("item_tags_updated",F),r.on("items_tags_updated",E)}),oe(()=>{r.off("item_tags_updated",F),r.off("items_tags_updated",E)}),(e,t)=>{var V,M,L,D,H,B,S;const T=ue,l=Te,f=Me,K=Ce,O=P,d=ae("tooltip");return s(),o("div",Le,[a("h2",De,q((V=n.value)==null?void 0:V.title),1),a("div",He,[(M=n.value)!=null&&M.publishedAt?(s(),ie(T,{key:0,class:"time",id:g(pe)((L=n.value)==null?void 0:L.publishedAt),raw:n.value},null,8,["id","raw"])):I("",!0),(D=n.value)!=null&&D.author?(s(),o("span",Be,q((H=n.value)==null?void 0:H.author),1)):I("",!0),(s(!0),o(ce,null,le((B=n.value)==null?void 0:B.tags,x=>(s(),o("span",{key:x.id,class:"badge"},q(x.name),1))),128)),u((s(),o("button",{class:"icon-button",onClick:b(U,["prevent"]),style:{"margin-inline-start":"8px"}},[xe,p(l)],8,Se)),[[d,e.$t("add_to_tags")]]),g($)?(s(),o("md-circular-progress",Ae)):u((s(),o("button",{key:3,class:"icon-button btn-icon",disabled:g($),onClick:b(J,["prevent"])},[Qe,p(f)],8,Ie)),[[d,e.$t("sync_content")]]),u((s(),o("a",{href:(S=n.value)==null?void 0:S.url,target:"_blank"},[a("button",Ne,[Re,p(K)])],8,Ze)),[[d,e.$t("view_original_article")]]),u((s(),o("button",{class:"icon-button",onClick:b(G,["prevent"])},[Ue,p(O)],8,Ge)),[[d,e.$t("print")]])]),a("div",{class:"md-container",innerHTML:v.value},null,8,je)])}}});const Pe=fe(ze,[["__scopeId","data-v-5b41a86a"]]);export{Pe as default};
diff --git a/app/src/main/resources/web/assets/FeedsRootView-c5553a66.js b/app/src/main/resources/web/assets/FeedsRootView-20f8d202.js
similarity index 95%
rename from app/src/main/resources/web/assets/FeedsRootView-c5553a66.js
rename to app/src/main/resources/web/assets/FeedsRootView-20f8d202.js
index 438c10eb..bd4bb32a 100644
--- a/app/src/main/resources/web/assets/FeedsRootView-c5553a66.js
+++ b/app/src/main/resources/web/assets/FeedsRootView-20f8d202.js
@@ -1 +1 @@
-import{a as ae,_ as le}from"./TagFilter.vuevuetypescriptsetuptruelang-9b4a0b6e.js";import{d as N,r as y,i as D,c9 as ie,an as P,U,ao as V,o as g,c as C,a as t,t as i,m as q,v as j,j as e,n as H,ap as J,h as I,_ as de,ca as ce,u as re,e as ue,D as pe,E as _e,cb as fe,g as me,cc as ve,x as T,G as he,R as be,p as w,H as L,cd as $e,ce as ke,cf as ge,F as G,J as S,l as B,I as z,bJ as K,a2 as R,T as Ce,C as E,W as ye,aH as Fe,cg as xe,ac as we}from"./index-f62f2ff2.js";import{g as O,M as Me}from"./splitpanes.es-2b477659.js";import{u as W,a as Y}from"./vee-validate.esm-65abdaa1.js";import"./EditValueModal-d57e85f6.js";const Ae={slot:"headline"},Ve={slot:"content"},De={class:"form-row"},Le=["label","error","error-text"],Re={class:"form-row"},Ee={class:"form-check-label"},Ne=["checked"],qe={slot:"actions"},Ie=["disabled"],Qe=N({__name:"AddFeedModal",props:{done:{type:Function}},setup(M){const d=M,{handleSubmit:b}=W(),f=y(),c=y(!1);function $(o){c.value=o.target.checked}const{mutate:m,loading:F,onDone:k}=D({document:ie,appApi:!0}),{value:l,resetField:v,errorMessage:r}=Y("inputValue",P().required());v();function x(){V()}(async()=>{var o;await U(),(o=f.value)==null||o.focus()})();const p=b(()=>{m({url:l.value??"",fetchContent:c.value})});return k(()=>{var o;(o=d.done)==null||o.call(this),V()}),(o,n)=>(g(),C("md-dialog",null,[t("div",Ae,i(o.$t("add_subscription")),1),t("div",Ve,[t("div",De,[q(t("md-outlined-text-field",{ref_key:"inputRef",ref:f,label:o.$t("rss_url"),"onUpdate:modelValue":n[0]||(n[0]=u=>H(l)?l.value=u:null),onKeyup:n[1]||(n[1]=J((...u)=>e(p)&&e(p)(...u),["enter"])),error:e(r),"error-text":e(r)?o.$t(e(r)):""},null,40,Le),[[j,e(l)]])]),t("div",Re,[t("label",Ee,[t("md-checkbox",{"touch-target":"wrapper",onChange:$,checked:c.value},null,40,Ne),I(" "+i(o.$t("fetch_content_automatically")),1)])])]),t("div",qe,[t("md-outlined-button",{value:"cancel",onClick:x},i(o.$t("cancel")),1),t("md-filled-button",{value:"save",disabled:e(F),onClick:n[2]||(n[2]=(...u)=>e(p)&&e(p)(...u)),autofocus:""},i(o.$t("save")),9,Ie)])]))}});const Te=de(Qe,[["__scopeId","data-v-cd35ee4b"]]),Ge={slot:"headline"},Se={slot:"content"},Be={class:"form-label"},ze={class:"form-row"},Ke=["label","error","error-text"],Oe={class:"form-row"},Pe={class:"form-check-label"},Ue=["checked"],je={slot:"actions"},He=["disabled"],Je=N({__name:"FeedModal",props:{data:{type:Object}},setup(M){var x,p;const d=M,{handleSubmit:b}=W(),f=y(),c=y(!1);function $(o){c.value=o.target.checked}const{mutate:m,loading:F,onDone:k}=D({document:ce,appApi:!0}),{value:l,errorMessage:v}=Y("inputValue",P().required());l.value=((x=d.data)==null?void 0:x.name)??"",c.value=((p=d.data)==null?void 0:p.fetchContent)??!1,(async()=>{var o;await U(),(o=f.value)==null||o.focus()})();const r=b(()=>{var o;m({id:(o=d.data)==null?void 0:o.id,name:l.value,fetchContent:c.value})});return k(()=>{V()}),(o,n)=>{var u;return g(),C("md-dialog",null,[t("div",Ge,i(o.$t("update_subscription")),1),t("div",Se,[t("div",Be,i((u=M.data)==null?void 0:u.url),1),t("div",ze,[q(t("md-outlined-text-field",{ref_key:"inputRef",ref:f,class:"form-control",label:o.$t("name"),error:e(v),"error-text":e(v)?o.$t(e(v)):"","onUpdate:modelValue":n[0]||(n[0]=_=>H(l)?l.value=_:null),onKeyup:n[1]||(n[1]=J((..._)=>e(r)&&e(r)(..._),["enter"]))},null,40,Ke),[[j,e(l)]])]),t("div",Oe,[t("label",Pe,[t("md-checkbox",{"touch-target":"wrapper",onChange:$,checked:c.value},null,40,Ue),I(" "+i(o.$t("fetch_content_automatically")),1)])])]),t("div",je,[t("md-outlined-button",{value:"cancel",onClick:n[2]||(n[2]=(..._)=>e(V)&&e(V)(..._))},i(o.$t("cancel")),1),t("md-filled-button",{value:"save",disabled:e(F),onClick:n[3]||(n[3]=(..._)=>e(r)&&e(r)(..._)),autofocus:""},i(o.$t("save")),9,He)])])}}}),We={class:"page-container"},Ye={class:"sidebar"},Xe={class:"nav-title"},Ze={style:{position:"relative"}},et=t("md-ripple",null,null,-1),tt=["open"],ot=["onClick"],nt={slot:"headline"},st={class:"nav"},at=["onClick"],lt=["onClick","onContextmenu"],it={class:"main"},_t=N({__name:"FeedsRootView",setup(M){const{t:d}=re(),b=ue(),f=y([]),c=[{text:"add_subscription",click:x},{text:"import_opml_file",click:_},{text:"export_opml_file",click:X}],$=y(!1),m=pe(),F=_e(m.query),k=fe(m.query),l=y(),{refetch:v}=me({handle:(s,a)=>{a?T(d(a),"error"):s&&(f.value=s.feeds)},document:$e,appApi:!0});function r(s){const a=s.target.files;if(!a)return;const A=new FileReader;A.addEventListener("load",()=>{n({content:A.result})},!1),A.readAsText(a[0])}function x(){R(Te,{done:()=>{v()}})}const{mutate:p,onDone:o}=D({document:ke,appApi:!0});o(s=>{ve(s.data.exportFeeds,"application/xml","feeds.xml")});const{mutate:n,onDone:u}=D({document:ge,appApi:!0});u(()=>{T(d("imported")),v()});function _(){l.value.value="",l.value.click()}function X(){p()}function Z(s){const a=Ce([{name:"feed",op:"",value:K(s.name)}]);E(b,`/feeds?q=${ye(a)}`)}function ee(s,a){s.preventDefault(),Fe({x:s.x,y:s.y,items:[{label:d("edit"),onClick:()=>{R(Je,{data:a})}},{label:d("delete"),onClick:()=>{R(we,{id:a.id,name:a.name,gql:xe,appApi:!0,typeName:"Feed",done:()=>{E(b,"/feeds")}})}}]})}function te(){E(b,"/feeds")}return(s,a)=>{const A=ae,oe=le,ne=he("router-view"),se=be("tooltip");return g(),C("div",We,[w(e(Me),null,{default:L(()=>[w(e(O),{size:"20","min-size":"10"},{default:L(()=>[t("div",Ye,[t("h2",Xe,[I(i(s.$t("page_title.feeds"))+" ",1),t("div",Ze,[q((g(),C("button",{class:"icon-button",id:"add-feed-ref",onClick:a[0]||(a[0]=()=>$.value=!0)},[et,w(A)])),[[se,e(d)("add_subscription")]]),t("md-menu",{anchor:"add-feed-ref",positioning:"fixed","stay-open-on-focusout":"",quick:"",open:$.value,onClosed:a[1]||(a[1]=()=>$.value=!1)},[(g(),C(G,null,S(c,h=>t("md-menu-item",{onClick:h.click},[t("div",nt,i(s.$t(h.text)),1)],8,ot)),64))],40,tt)])]),t("ul",st,[t("li",{onClick:B(te,["prevent"]),class:z({active:e(m).path==="/feeds"&&!e(F)&&!e(k)})},i(s.$t("all")),11,at),(g(!0),C(G,null,S(f.value,h=>(g(),C("li",{onClick:B(Q=>Z(h),["stop","prevent"]),onContextmenu:Q=>ee(Q,h),class:z({active:e(m).params.feedId===h.id||e(k)&&e(K)(h.name)===e(k)})},i(h.name),43,lt))),256))]),w(oe,{type:"FEED_ENTRY",selected:e(F)},null,8,["selected"])])]),_:1}),w(e(O),null,{default:L(()=>[t("div",it,[w(ne)])]),_:1})]),_:1}),t("input",{ref_key:"fileInput",ref:l,style:{display:"none"},accept:".xml",type:"file",onChange:r},null,544)])}}});export{_t as default};
+import{a as ae,_ as le}from"./TagFilter.vuevuetypescriptsetuptruelang-12e262c1.js";import{d as N,r as y,i as D,c9 as ie,an as P,U,ao as V,o as g,c as C,a as t,t as i,m as q,v as j,j as e,n as H,ap as J,h as I,_ as de,ca as ce,u as re,e as ue,D as pe,E as _e,cb as fe,g as me,cc as ve,x as T,G as he,R as be,p as w,H as L,cd as $e,ce as ke,cf as ge,F as G,J as S,l as B,I as z,bJ as K,a2 as R,T as Ce,C as E,W as ye,aH as Fe,cg as xe,ac as we}from"./index-0c42270c.js";import{g as O,M as Me}from"./splitpanes.es-7e8a6fea.js";import{u as W,a as Y}from"./vee-validate.esm-ca78f26f.js";import"./EditValueModal-c22a5b2d.js";const Ae={slot:"headline"},Ve={slot:"content"},De={class:"form-row"},Le=["label","error","error-text"],Re={class:"form-row"},Ee={class:"form-check-label"},Ne=["checked"],qe={slot:"actions"},Ie=["disabled"],Qe=N({__name:"AddFeedModal",props:{done:{type:Function}},setup(M){const d=M,{handleSubmit:b}=W(),f=y(),c=y(!1);function $(o){c.value=o.target.checked}const{mutate:m,loading:F,onDone:k}=D({document:ie,appApi:!0}),{value:l,resetField:v,errorMessage:r}=Y("inputValue",P().required());v();function x(){V()}(async()=>{var o;await U(),(o=f.value)==null||o.focus()})();const p=b(()=>{m({url:l.value??"",fetchContent:c.value})});return k(()=>{var o;(o=d.done)==null||o.call(this),V()}),(o,n)=>(g(),C("md-dialog",null,[t("div",Ae,i(o.$t("add_subscription")),1),t("div",Ve,[t("div",De,[q(t("md-outlined-text-field",{ref_key:"inputRef",ref:f,label:o.$t("rss_url"),"onUpdate:modelValue":n[0]||(n[0]=u=>H(l)?l.value=u:null),onKeyup:n[1]||(n[1]=J((...u)=>e(p)&&e(p)(...u),["enter"])),error:e(r),"error-text":e(r)?o.$t(e(r)):""},null,40,Le),[[j,e(l)]])]),t("div",Re,[t("label",Ee,[t("md-checkbox",{"touch-target":"wrapper",onChange:$,checked:c.value},null,40,Ne),I(" "+i(o.$t("fetch_content_automatically")),1)])])]),t("div",qe,[t("md-outlined-button",{value:"cancel",onClick:x},i(o.$t("cancel")),1),t("md-filled-button",{value:"save",disabled:e(F),onClick:n[2]||(n[2]=(...u)=>e(p)&&e(p)(...u)),autofocus:""},i(o.$t("save")),9,Ie)])]))}});const Te=de(Qe,[["__scopeId","data-v-cd35ee4b"]]),Ge={slot:"headline"},Se={slot:"content"},Be={class:"form-label"},ze={class:"form-row"},Ke=["label","error","error-text"],Oe={class:"form-row"},Pe={class:"form-check-label"},Ue=["checked"],je={slot:"actions"},He=["disabled"],Je=N({__name:"FeedModal",props:{data:{type:Object}},setup(M){var x,p;const d=M,{handleSubmit:b}=W(),f=y(),c=y(!1);function $(o){c.value=o.target.checked}const{mutate:m,loading:F,onDone:k}=D({document:ce,appApi:!0}),{value:l,errorMessage:v}=Y("inputValue",P().required());l.value=((x=d.data)==null?void 0:x.name)??"",c.value=((p=d.data)==null?void 0:p.fetchContent)??!1,(async()=>{var o;await U(),(o=f.value)==null||o.focus()})();const r=b(()=>{var o;m({id:(o=d.data)==null?void 0:o.id,name:l.value,fetchContent:c.value})});return k(()=>{V()}),(o,n)=>{var u;return g(),C("md-dialog",null,[t("div",Ge,i(o.$t("update_subscription")),1),t("div",Se,[t("div",Be,i((u=M.data)==null?void 0:u.url),1),t("div",ze,[q(t("md-outlined-text-field",{ref_key:"inputRef",ref:f,class:"form-control",label:o.$t("name"),error:e(v),"error-text":e(v)?o.$t(e(v)):"","onUpdate:modelValue":n[0]||(n[0]=_=>H(l)?l.value=_:null),onKeyup:n[1]||(n[1]=J((..._)=>e(r)&&e(r)(..._),["enter"]))},null,40,Ke),[[j,e(l)]])]),t("div",Oe,[t("label",Pe,[t("md-checkbox",{"touch-target":"wrapper",onChange:$,checked:c.value},null,40,Ue),I(" "+i(o.$t("fetch_content_automatically")),1)])])]),t("div",je,[t("md-outlined-button",{value:"cancel",onClick:n[2]||(n[2]=(..._)=>e(V)&&e(V)(..._))},i(o.$t("cancel")),1),t("md-filled-button",{value:"save",disabled:e(F),onClick:n[3]||(n[3]=(..._)=>e(r)&&e(r)(..._)),autofocus:""},i(o.$t("save")),9,He)])])}}}),We={class:"page-container"},Ye={class:"sidebar"},Xe={class:"nav-title"},Ze={style:{position:"relative"}},et=t("md-ripple",null,null,-1),tt=["open"],ot=["onClick"],nt={slot:"headline"},st={class:"nav"},at=["onClick"],lt=["onClick","onContextmenu"],it={class:"main"},_t=N({__name:"FeedsRootView",setup(M){const{t:d}=re(),b=ue(),f=y([]),c=[{text:"add_subscription",click:x},{text:"import_opml_file",click:_},{text:"export_opml_file",click:X}],$=y(!1),m=pe(),F=_e(m.query),k=fe(m.query),l=y(),{refetch:v}=me({handle:(s,a)=>{a?T(d(a),"error"):s&&(f.value=s.feeds)},document:$e,appApi:!0});function r(s){const a=s.target.files;if(!a)return;const A=new FileReader;A.addEventListener("load",()=>{n({content:A.result})},!1),A.readAsText(a[0])}function x(){R(Te,{done:()=>{v()}})}const{mutate:p,onDone:o}=D({document:ke,appApi:!0});o(s=>{ve(s.data.exportFeeds,"application/xml","feeds.xml")});const{mutate:n,onDone:u}=D({document:ge,appApi:!0});u(()=>{T(d("imported")),v()});function _(){l.value.value="",l.value.click()}function X(){p()}function Z(s){const a=Ce([{name:"feed",op:"",value:K(s.name)}]);E(b,`/feeds?q=${ye(a)}`)}function ee(s,a){s.preventDefault(),Fe({x:s.x,y:s.y,items:[{label:d("edit"),onClick:()=>{R(Je,{data:a})}},{label:d("delete"),onClick:()=>{R(we,{id:a.id,name:a.name,gql:xe,appApi:!0,typeName:"Feed",done:()=>{E(b,"/feeds")}})}}]})}function te(){E(b,"/feeds")}return(s,a)=>{const A=ae,oe=le,ne=he("router-view"),se=be("tooltip");return g(),C("div",We,[w(e(Me),null,{default:L(()=>[w(e(O),{size:"20","min-size":"10"},{default:L(()=>[t("div",Ye,[t("h2",Xe,[I(i(s.$t("page_title.feeds"))+" ",1),t("div",Ze,[q((g(),C("button",{class:"icon-button",id:"add-feed-ref",onClick:a[0]||(a[0]=()=>$.value=!0)},[et,w(A)])),[[se,e(d)("add_subscription")]]),t("md-menu",{anchor:"add-feed-ref",positioning:"fixed","stay-open-on-focusout":"",quick:"",open:$.value,onClosed:a[1]||(a[1]=()=>$.value=!1)},[(g(),C(G,null,S(c,h=>t("md-menu-item",{onClick:h.click},[t("div",nt,i(s.$t(h.text)),1)],8,ot)),64))],40,tt)])]),t("ul",st,[t("li",{onClick:B(te,["prevent"]),class:z({active:e(m).path==="/feeds"&&!e(F)&&!e(k)})},i(s.$t("all")),11,at),(g(!0),C(G,null,S(f.value,h=>(g(),C("li",{onClick:B(Q=>Z(h),["stop","prevent"]),onContextmenu:Q=>ee(Q,h),class:z({active:e(m).params.feedId===h.id||e(k)&&e(K)(h.name)===e(k)})},i(h.name),43,lt))),256))]),w(oe,{type:"FEED_ENTRY",selected:e(F)},null,8,["selected"])])]),_:1}),w(e(O),null,{default:L(()=>[t("div",it,[w(ne)])]),_:1})]),_:1}),t("input",{ref_key:"fileInput",ref:l,style:{display:"none"},accept:".xml",type:"file",onChange:r},null,544)])}}});export{_t as default};
diff --git a/app/src/main/resources/web/assets/FeedsView-8b639e3b.js b/app/src/main/resources/web/assets/FeedsView-171091b5.js
similarity index 95%
rename from app/src/main/resources/web/assets/FeedsView-8b639e3b.js
rename to app/src/main/resources/web/assets/FeedsView-171091b5.js
index 2b64596c..c08f8d2c 100644
--- a/app/src/main/resources/web/assets/FeedsView-8b639e3b.js
+++ b/app/src/main/resources/web/assets/FeedsView-171091b5.js
@@ -1,4 +1,4 @@
-import{c as ke,u as ye,_ as be,a as $e,b as Ce}from"./list-45297bd9.js";import{d as we,e as Te,r as _,u as Fe,K as Ee,L as Se,D as qe,M as Ae,N as Ve,g as De,w as Ie,O as Qe,P as f,Q as Ue,i as Le,R as Me,c as d,a as t,p as h,j as l,F as I,m as C,l as m,k as Q,t as c,H as Ne,J as X,S as Re,ch as Be,x as N,ci as Ge,ag as He,bJ as ee,T as ze,U as Ye,cj as je,C as te,W as se,ck as Je,o,v as Ke,I as Pe,ax as xe,Y as Oe,h as We,Z as Ze,$ as Xe,a2 as le,ab as et,ac as tt,a3 as st,a0 as lt,a1 as at,aY as nt,ad as ot,a4 as dt,a6 as it}from"./index-f62f2ff2.js";import{_ as ct}from"./Breadcrumb-ebe74d39.js";import{a as ut}from"./tags-06583423.js";import"./vee-validate.esm-65abdaa1.js";const rt={class:"v-toolbar"},pt=t("md-ripple",null,null,-1),_t=t("md-ripple",null,null,-1),ft=["disabled","onClick"],ht={class:"filters"},mt=["label"],gt={class:"form-label"},vt=["label","selected","onClick"],kt={class:"buttons"},yt=["onClick"],bt={class:"table-responsive"},$t={class:"table"},Ct=["checked","indeterminate"],wt=t("th",null,null,-1),Tt=t("th",null,null,-1),Ft=["onClick"],Et=["checked"],St=["src"],qt={style:{"min-width":"200px"}},At=["href","onClick"],Vt={class:"nowrap"},Dt={class:"action-btns"},It=["onClick"],Qt=t("md-ripple",null,null,-1),Ut=["onClick"],Lt=t("md-ripple",null,null,-1),Mt={class:"nowrap"},Nt={class:"nowrap"},Rt={key:0},Bt={colspan:"7"},Gt={class:"no-data-placeholder"},S=50,xt=we({__name:"FeedsView",setup(Ht){var W,Z;const R=Te(),g=_([]),B=_(),{t:U}=Fe(),i=Ee({text:"",feeds:[],tags:[]}),r=Se.FEED_ENTRY,G=qe().query,q=_(parseInt(((W=G.page)==null?void 0:W.toString())??"1")),w=_([]),ae=_([]),v=_(Ae(((Z=G.q)==null?void 0:Z.toString())??"")),A=_(""),{addToTags:ne}=ut(r,g,w),{deleteItems:oe}=ke(Be,()=>{D(),M(),g.value.some(e=>e.tags.length)&&f.emit("refetch_tags",r)},g),V=_(!1),{allChecked:H,realAllChecked:L,selectRealAll:de,allCheckedAlertVisible:ie,clearSelection:D,toggleAllChecked:z,toggleItemChecked:Y,toggleRow:ce,total:k,checked:j}=ye(g),{loading:ue,load:re,refetch:M}=Ve({handle:(e,a)=>{a?N(U(a),"error"):e&&(g.value=e.feedEntries.map(p=>({...p,checked:!1})),k.value=e.feedEntryCount)},document:Ge,variables:()=>({offset:(q.value-1)*S,limit:S,query:A.value}),appApi:!0});function pe(e){le(tt,{id:e.id,name:e.title,gql:et`
+import{c as ke,u as ye,_ as be,a as $e,b as Ce}from"./list-183f8357.js";import{d as we,e as Te,r as _,u as Fe,K as Ee,L as Se,D as qe,M as Ae,N as Ve,g as De,w as Ie,O as Qe,P as f,Q as Ue,i as Le,R as Me,c as d,a as t,p as h,j as l,F as I,m as C,l as m,k as Q,t as c,H as Ne,J as X,S as Re,ch as Be,x as N,ci as Ge,ag as He,bJ as ee,T as ze,U as Ye,cj as je,C as te,W as se,ck as Je,o,v as Ke,I as Pe,ax as xe,Y as Oe,h as We,Z as Ze,$ as Xe,a2 as le,ab as et,ac as tt,a3 as st,a0 as lt,a1 as at,aY as nt,ad as ot,a4 as dt,a6 as it}from"./index-0c42270c.js";import{_ as ct}from"./Breadcrumb-f52b6c6b.js";import{a as ut}from"./tags-bf0f6db9.js";import"./vee-validate.esm-ca78f26f.js";const rt={class:"v-toolbar"},pt=t("md-ripple",null,null,-1),_t=t("md-ripple",null,null,-1),ft=["disabled","onClick"],ht={class:"filters"},mt=["label"],gt={class:"form-label"},vt=["label","selected","onClick"],kt={class:"buttons"},yt=["onClick"],bt={class:"table-responsive"},$t={class:"table"},Ct=["checked","indeterminate"],wt=t("th",null,null,-1),Tt=t("th",null,null,-1),Ft=["onClick"],Et=["checked"],St=["src"],qt={style:{"min-width":"200px"}},At=["href","onClick"],Vt={class:"nowrap"},Dt={class:"action-btns"},It=["onClick"],Qt=t("md-ripple",null,null,-1),Ut=["onClick"],Lt=t("md-ripple",null,null,-1),Mt={class:"nowrap"},Nt={class:"nowrap"},Rt={key:0},Bt={colspan:"7"},Gt={class:"no-data-placeholder"},S=50,xt=we({__name:"FeedsView",setup(Ht){var W,Z;const R=Te(),g=_([]),B=_(),{t:U}=Fe(),i=Ee({text:"",feeds:[],tags:[]}),r=Se.FEED_ENTRY,G=qe().query,q=_(parseInt(((W=G.page)==null?void 0:W.toString())??"1")),w=_([]),ae=_([]),v=_(Ae(((Z=G.q)==null?void 0:Z.toString())??"")),A=_(""),{addToTags:ne}=ut(r,g,w),{deleteItems:oe}=ke(Be,()=>{D(),M(),g.value.some(e=>e.tags.length)&&f.emit("refetch_tags",r)},g),V=_(!1),{allChecked:H,realAllChecked:L,selectRealAll:de,allCheckedAlertVisible:ie,clearSelection:D,toggleAllChecked:z,toggleItemChecked:Y,toggleRow:ce,total:k,checked:j}=ye(g),{loading:ue,load:re,refetch:M}=Ve({handle:(e,a)=>{a?N(U(a),"error"):e&&(g.value=e.feedEntries.map(p=>({...p,checked:!1})),k.value=e.feedEntryCount)},document:Ge,variables:()=>({offset:(q.value-1)*S,limit:S,query:A.value}),appApi:!0});function pe(e){le(tt,{id:e.id,name:e.title,gql:et`
mutation deleteFeedEntry($query: String!) {
deleteFeedEntries(query: $query)
}
diff --git a/app/src/main/resources/web/assets/FilesRecentView-d638e349.js b/app/src/main/resources/web/assets/FilesRecentView-760365b8.js
similarity index 96%
rename from app/src/main/resources/web/assets/FilesRecentView-d638e349.js
rename to app/src/main/resources/web/assets/FilesRecentView-760365b8.js
index e7d6604d..3cce4a3b 100644
--- a/app/src/main/resources/web/assets/FilesRecentView-d638e349.js
+++ b/app/src/main/resources/web/assets/FilesRecentView-760365b8.js
@@ -1 +1 @@
-import{d as W,u as X,r as b,f as j,s as q,bq as H,i as P,aC as Q,R as Z,c as a,a as l,p as V,m as Y,l as F,k as i,h as m,t as d,j as o,F as w,J as ee,al as te,bg as se,o as n,I as oe,bh as ae,bi as ne,ax as le,Z as ce,z as ie,$ as de,A as re,B as ue,bk as pe,bm as R,ah as S,bn as g,aH as _e,am as he,bp as me,_ as ke}from"./index-f62f2ff2.js";import{_ as ve}from"./Breadcrumb-ebe74d39.js";const be=p=>(re("data-v-e2791d49"),p=p(),ue(),p),we={class:"v-toolbar"},ge={class:"right-actions"},ye=["onClick"],fe=be(()=>l("md-ripple",null,null,-1)),Ce={class:"form-check-label"},Ie=["checked"],De={class:"panel-container"},Te={key:0,class:"file-items"},Ve=["onClick","onDblclick","onContextmenu"],Fe=["checked"],Re=["src"],Se={class:"title"},Ee={style:{"font-size":"0.75rem"}},xe={key:1,class:"no-data-placeholder"},$e={key:0,class:"file-item-info"},Ae=W({__name:"FilesRecentView",setup(p){const{t:k}=X(),E=b([]),u=b(!1),y=j(),{app:f,urlTokenKey:_}=q(y),{loading:x,files:r}=H(_),{downloadFile:C,downloadDir:$,downloadFiles:A}=te(_),{view:I}=me(E,(e,t)=>{y.lightbox={sources:e,index:t,visible:!0}}),h=b(null),{mutate:N,onDone:B}=P({document:se,appApi:!0});B(e=>{A(e.data.setTempValue.key),r.value.forEach(t=>{t.checked=!1})});const D=()=>{const e=[];return r.value.forEach(t=>{t.checked&&e.push({path:t.path})}),e};function z(e){u.value=e.target.checked}const M=()=>{N({key:pe(),value:JSON.stringify(D())})},L=Q(()=>D().length>0);function O(e){if(u.value){e.checked=!e.checked;return}h.value=e}function U(e){R(e.name)?window.open(S(_.value,e.path),"_blank"):g(e.name)?I(r.value,e):C(e.path)}function G(e,t){e.preventDefault();let c;t.isDir?c=[{label:k("download"),onClick:()=>{$(t.path)}}]:(c=[],(R(t.name)||g(t.name))&&c.push({label:k("open"),onClick:()=>{g(t.name)?I(r.value,t):window.open(S(_.value,t.path),"_blank")}}),c.push({label:k("download"),onClick:()=>{C(t.path)}})),_e({x:e.x,y:e.y,items:c})}return(e,t)=>{const c=ve,J=he,K=Z("tooltip");return n(),a(w,null,[l("div",we,[V(c,{current:e.$t("recent_files")},null,8,["current"]),l("div",ge,[u.value&&L.value?Y((n(),a("button",{key:0,class:"icon-button",onClick:F(M,["stop"])},[fe,V(J)],8,ye)),[[K,e.$t("download")]]):i("",!0),l("label",Ce,[l("md-checkbox",{"touch-target":"wrapper",onChange:z,checked:u.value},null,40,Ie),m(d(e.$t("select_mode")),1)])])]),l("div",De,[o(f).permissions.includes("WRITE_EXTERNAL_STORAGE")?(n(),a("div",Te,[(n(!0),a(w,null,ee(o(r),s=>{var T;return n(),a("div",{key:s.path,class:oe(["file-item",{active:((T=h.value)==null?void 0:T.path)===s.path}]),onClick:v=>O(s),onDblclick:F(v=>U(s),["prevent"]),onContextmenu:v=>G(v,s)},[u.value?(n(),a("md-checkbox",{key:0,"touch-target":"wrapper",checked:s.checked},null,8,Fe)):i("",!0),o(ae)(s.name)||o(ne)(s.name)?(n(),a("img",{key:1,src:o(le)(s.fileId)+"&w=50&h=50",width:"50",height:"50"},null,8,Re)):i("",!0),l("div",Se,[m(d(s.name)+" ",1),l("div",Ee,[m(d(o(ce)(s.updatedAt)),1),s.isDir?i("",!0):(n(),a(w,{key:0},[m(", "+d(o(ie)(s.size)),1)],64))])])],42,Ve)}),128))])):i("",!0),o(r).length===0?(n(),a("div",xe,d(e.$t(o(de)(o(x),o(f).permissions,"WRITE_EXTERNAL_STORAGE"))),1)):i("",!0)]),h.value?(n(),a("div",$e,d(e.$t("path"))+": "+d(h.value.path),1)):i("",!0)],64)}}});const ze=ke(Ae,[["__scopeId","data-v-e2791d49"]]);export{ze as default};
+import{d as W,u as X,r as b,f as j,s as q,bq as H,i as P,aC as Q,R as Z,c as a,a as l,p as V,m as Y,l as F,k as i,h as m,t as d,j as o,F as w,J as ee,al as te,bg as se,o as n,I as oe,bh as ae,bi as ne,ax as le,Z as ce,z as ie,$ as de,A as re,B as ue,bk as pe,bm as R,ah as S,bn as g,aH as _e,am as he,bp as me,_ as ke}from"./index-0c42270c.js";import{_ as ve}from"./Breadcrumb-f52b6c6b.js";const be=p=>(re("data-v-e2791d49"),p=p(),ue(),p),we={class:"v-toolbar"},ge={class:"right-actions"},ye=["onClick"],fe=be(()=>l("md-ripple",null,null,-1)),Ce={class:"form-check-label"},Ie=["checked"],De={class:"panel-container"},Te={key:0,class:"file-items"},Ve=["onClick","onDblclick","onContextmenu"],Fe=["checked"],Re=["src"],Se={class:"title"},Ee={style:{"font-size":"0.75rem"}},xe={key:1,class:"no-data-placeholder"},$e={key:0,class:"file-item-info"},Ae=W({__name:"FilesRecentView",setup(p){const{t:k}=X(),E=b([]),u=b(!1),y=j(),{app:f,urlTokenKey:_}=q(y),{loading:x,files:r}=H(_),{downloadFile:C,downloadDir:$,downloadFiles:A}=te(_),{view:I}=me(E,(e,t)=>{y.lightbox={sources:e,index:t,visible:!0}}),h=b(null),{mutate:N,onDone:B}=P({document:se,appApi:!0});B(e=>{A(e.data.setTempValue.key),r.value.forEach(t=>{t.checked=!1})});const D=()=>{const e=[];return r.value.forEach(t=>{t.checked&&e.push({path:t.path})}),e};function z(e){u.value=e.target.checked}const M=()=>{N({key:pe(),value:JSON.stringify(D())})},L=Q(()=>D().length>0);function O(e){if(u.value){e.checked=!e.checked;return}h.value=e}function U(e){R(e.name)?window.open(S(_.value,e.path),"_blank"):g(e.name)?I(r.value,e):C(e.path)}function G(e,t){e.preventDefault();let c;t.isDir?c=[{label:k("download"),onClick:()=>{$(t.path)}}]:(c=[],(R(t.name)||g(t.name))&&c.push({label:k("open"),onClick:()=>{g(t.name)?I(r.value,t):window.open(S(_.value,t.path),"_blank")}}),c.push({label:k("download"),onClick:()=>{C(t.path)}})),_e({x:e.x,y:e.y,items:c})}return(e,t)=>{const c=ve,J=he,K=Z("tooltip");return n(),a(w,null,[l("div",we,[V(c,{current:e.$t("recent_files")},null,8,["current"]),l("div",ge,[u.value&&L.value?Y((n(),a("button",{key:0,class:"icon-button",onClick:F(M,["stop"])},[fe,V(J)],8,ye)),[[K,e.$t("download")]]):i("",!0),l("label",Ce,[l("md-checkbox",{"touch-target":"wrapper",onChange:z,checked:u.value},null,40,Ie),m(d(e.$t("select_mode")),1)])])]),l("div",De,[o(f).permissions.includes("WRITE_EXTERNAL_STORAGE")?(n(),a("div",Te,[(n(!0),a(w,null,ee(o(r),s=>{var T;return n(),a("div",{key:s.path,class:oe(["file-item",{active:((T=h.value)==null?void 0:T.path)===s.path}]),onClick:v=>O(s),onDblclick:F(v=>U(s),["prevent"]),onContextmenu:v=>G(v,s)},[u.value?(n(),a("md-checkbox",{key:0,"touch-target":"wrapper",checked:s.checked},null,8,Fe)):i("",!0),o(ae)(s.name)||o(ne)(s.name)?(n(),a("img",{key:1,src:o(le)(s.fileId)+"&w=50&h=50",width:"50",height:"50"},null,8,Re)):i("",!0),l("div",Se,[m(d(s.name)+" ",1),l("div",Ee,[m(d(o(ce)(s.updatedAt)),1),s.isDir?i("",!0):(n(),a(w,{key:0},[m(", "+d(o(ie)(s.size)),1)],64))])])],42,Ve)}),128))])):i("",!0),o(r).length===0?(n(),a("div",xe,d(e.$t(o(de)(o(x),o(f).permissions,"WRITE_EXTERNAL_STORAGE"))),1)):i("",!0)]),h.value?(n(),a("div",$e,d(e.$t("path"))+": "+d(h.value.path),1)):i("",!0)],64)}}});const ze=ke(Ae,[["__scopeId","data-v-e2791d49"]]);export{ze as default};
diff --git a/app/src/main/resources/web/assets/FilesRootView-29f6b306.js b/app/src/main/resources/web/assets/FilesRootView-a1781340.js
similarity index 91%
rename from app/src/main/resources/web/assets/FilesRootView-29f6b306.js
rename to app/src/main/resources/web/assets/FilesRootView-a1781340.js
index 788c1d12..832cf6cd 100644
--- a/app/src/main/resources/web/assets/FilesRootView-29f6b306.js
+++ b/app/src/main/resources/web/assets/FilesRootView-a1781340.js
@@ -1 +1 @@
-import{d as y,D as b,e as w,s as B,f as S,G as V,c as l,p as c,H as m,j as e,o as p,a as t,t as n,l as o,I as i,k as z,F as D,J as F,C as $}from"./index-f62f2ff2.js";import{g as k,M}from"./splitpanes.es-2b477659.js";const N={class:"page-container"},P={class:"sidebar"},R={class:"nav-title"},T={class:"nav"},j=["onClick"],E=["onClick"],G={class:"main"},q=y({__name:"FilesRootView",setup(H){const d=b(),f=w(),{app:C}=B(S()),u=d.params.type;function r(s){$(f,`/files/${s}`)}function h(){$(f,"/files")}return(s,a)=>{const g=V("router-view");return p(),l("div",N,[c(e(M),null,{default:m(()=>[c(e(k),{size:"20","min-size":"10"},{default:m(()=>[t("div",P,[t("h2",R,n(s.$t("page_title.files")),1),t("ul",T,[t("li",{onClick:a[0]||(a[0]=o(v=>r("recent"),["prevent"])),class:i({active:e(d).path==="/files/recent"})},n(s.$t("recents")),3),t("li",{onClick:o(h,["prevent"]),class:i({active:e(d).path==="/files"})},n(s.$t("internal_storage")),11,j),e(C).sdcardPath?(p(),l("li",{key:0,onClick:a[1]||(a[1]=o(v=>r("sdcard"),["prevent"])),class:i({active:e(u)==="sdcard"})},n(s.$t("sdcard")),3)):z("",!0),(p(!0),l(D,null,F(e(C).usbDiskPaths,(v,_)=>(p(),l("li",{onClick:o(I=>r(`usb${_+1}`),["prevent"]),class:i({active:e(u)===`usb${_+1}`})},n(s.$t("usb_storage")+" "+(_+1)),11,E))),256)),t("li",{onClick:a[2]||(a[2]=o(v=>r("app"),["prevent"])),class:i({active:e(u)==="app"})},n(s.$t("app_name")),3)])])]),_:1}),c(e(k),null,{default:m(()=>[t("div",G,[c(g)])]),_:1})]),_:1})])}}});export{q as default};
+import{d as y,D as b,e as w,s as B,f as S,G as V,c as l,p as c,H as m,j as e,o as p,a as t,t as n,l as o,I as i,k as z,F as D,J as F,C as $}from"./index-0c42270c.js";import{g as k,M}from"./splitpanes.es-7e8a6fea.js";const N={class:"page-container"},P={class:"sidebar"},R={class:"nav-title"},T={class:"nav"},j=["onClick"],E=["onClick"],G={class:"main"},q=y({__name:"FilesRootView",setup(H){const d=b(),f=w(),{app:C}=B(S()),u=d.params.type;function r(s){$(f,`/files/${s}`)}function h(){$(f,"/files")}return(s,a)=>{const g=V("router-view");return p(),l("div",N,[c(e(M),null,{default:m(()=>[c(e(k),{size:"20","min-size":"10"},{default:m(()=>[t("div",P,[t("h2",R,n(s.$t("page_title.files")),1),t("ul",T,[t("li",{onClick:a[0]||(a[0]=o(v=>r("recent"),["prevent"])),class:i({active:e(d).path==="/files/recent"})},n(s.$t("recents")),3),t("li",{onClick:o(h,["prevent"]),class:i({active:e(d).path==="/files"})},n(s.$t("internal_storage")),11,j),e(C).sdcardPath?(p(),l("li",{key:0,onClick:a[1]||(a[1]=o(v=>r("sdcard"),["prevent"])),class:i({active:e(u)==="sdcard"})},n(s.$t("sdcard")),3)):z("",!0),(p(!0),l(D,null,F(e(C).usbDiskPaths,(v,_)=>(p(),l("li",{onClick:o(I=>r(`usb${_+1}`),["prevent"]),class:i({active:e(u)===`usb${_+1}`})},n(s.$t("usb_storage")+" "+(_+1)),11,E))),256)),t("li",{onClick:a[2]||(a[2]=o(v=>r("app"),["prevent"])),class:i({active:e(u)==="app"})},n(s.$t("app_name")),3)])])]),_:1}),c(e(k),null,{default:m(()=>[t("div",G,[c(g)])]),_:1})]),_:1})])}}});export{q as default};
diff --git a/app/src/main/resources/web/assets/FilesView-6a0c28d6.js b/app/src/main/resources/web/assets/FilesView-8eb4e330.js
similarity index 97%
rename from app/src/main/resources/web/assets/FilesView-6a0c28d6.js
rename to app/src/main/resources/web/assets/FilesView-8eb4e330.js
index c6424247..66b93419 100644
--- a/app/src/main/resources/web/assets/FilesView-6a0c28d6.js
+++ b/app/src/main/resources/web/assets/FilesView-8eb4e330.js
@@ -1 +1 @@
-import{o as i,c,a as l,d as dt,u as _t,r as M,D as pt,M as mt,ag as ht,e as bt,s as ve,f as ft,ba as vt,bb as kt,bc as yt,bd as gt,be as Tt,bf as Ct,ae as ke,i as qt,aC as Dt,w as wt,O as $t,P as H,Q as St,R as It,p as m,F as k,m as T,l as V,k as h,h as C,t as p,j as n,H as E,al as Mt,bg as Vt,at as Et,J,S as K,I as Ft,bh as xt,bi as Bt,ax as Zt,Z as At,z as y,$ as Ht,A as Pt,B as zt,bj as Lt,bk as Nt,a2 as P,bl as ye,bm as ge,ah as Te,bn as X,aH as Ce,ad as Rt,am as Ut,bo as Wt,bp as Ot,_ as Qt}from"./index-f62f2ff2.js";import{_ as jt}from"./refresh-rounded-0b456afc.js";import{_ as Gt}from"./Breadcrumb-ebe74d39.js";import{g as qe,M as Jt}from"./splitpanes.es-2b477659.js";import{E as De}from"./EditValueModal-d57e85f6.js";import"./vee-validate.esm-65abdaa1.js";const Kt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Xt=l("path",{fill:"currentColor",d:"M8 18H4q-.425 0-.713-.288T3 17q0-.425.288-.713T4 16h4q.425 0 .713.288T9 17q0 .425-.288.713T8 18ZM20 8H4q-.425 0-.713-.288T3 7q0-.425.288-.713T4 6h16q.425 0 .713.288T21 7q0 .425-.288.713T20 8Zm-6 5H4q-.425 0-.713-.288T3 12q0-.425.288-.713T4 11h10q.425 0 .713.288T15 12q0 .425-.288.713T14 13Z"},null,-1),Yt=[Xt];function es(f,o){return i(),c("svg",Kt,Yt)}const ts={name:"material-symbols-sort-rounded",render:es},ss={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},os=l("path",{fill:"currentColor",d:"M19.6 21.6L12 14l-2.35 2.35q.2.375.275.8T10 18q0 1.65-1.175 2.825T6 22q-1.65 0-2.825-1.175T2 18q0-1.65 1.175-2.825T6 14q.425 0 .85.075t.8.275L10 12L7.65 9.65q-.375.2-.8.275T6 10q-1.65 0-2.825-1.175T2 6q0-1.65 1.175-2.825T6 2q1.65 0 2.825 1.175T10 6q0 .425-.075.85t-.275.8L21.6 19.6q.425.425.425 1t-.425 1q-.425.425-1 .425t-1-.425ZM15 11l-2-2l6.6-6.6q.425-.425 1-.425t1 .425q.425.425.425 1t-.425 1L15 11ZM6 8q.825 0 1.413-.588T8 6q0-.825-.588-1.413T6 4q-.825 0-1.413.588T4 6q0 .825.588 1.413T6 8Zm6 4.5q.225 0 .363-.138T12.5 12q0-.225-.138-.363T12 11.5q-.225 0-.363.138T11.5 12q0 .225.138.363T12 12.5ZM6 20q.825 0 1.413-.588T8 18q0-.825-.588-1.413T6 16q-.825 0-1.413.588T4 18q0 .825.588 1.413T6 20Z"},null,-1),ns=[os];function ls(f,o){return i(),c("svg",ss,ns)}const as={name:"material-symbols-content-cut-rounded",render:ls},is={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},cs=l("path",{fill:"currentColor",d:"M9 18q-.825 0-1.413-.588T7 16V4q0-.825.588-1.413T9 2h9q.825 0 1.413.588T20 4v12q0 .825-.588 1.413T18 18H9Zm0-2h9V4H9v12Zm-4 6q-.825 0-1.413-.588T3 20V7q0-.425.288-.713T4 6q.425 0 .713.288T5 7v13h10q.425 0 .713.288T16 21q0 .425-.288.713T15 22H5ZM9 4v12V4Z"},null,-1),rs=[cs];function us(f,o){return i(),c("svg",is,rs)}const ds={name:"material-symbols-content-copy-outline-rounded",render:us},q=f=>(Pt("data-v-a8beb100"),f=f(),zt(),f),_s={class:"v-toolbar"},ps={class:"right-actions"},ms=q(()=>l("md-ripple",null,null,-1)),hs=q(()=>l("md-ripple",null,null,-1)),bs=["onClick"],fs=q(()=>l("md-ripple",null,null,-1)),vs=["onClick"],ks=q(()=>l("md-ripple",null,null,-1)),ys={class:"form-check"},gs={class:"form-check-label"},Ts=["checked"],Cs={class:"form-check"},qs={class:"form-check-label"},Ds=["checked"],ws=q(()=>l("md-ripple",null,null,-1)),$s={class:"icon-button btn-sort"},Ss=q(()=>l("md-ripple",null,null,-1)),Is={class:"menu-items"},Ms=["onClick","selected"],Vs={slot:"headline"},Es={class:"file-items"},Fs=["onClick","onDblclick","onContextmenu"],xs=["checked"],Bs=["src"],Zs={class:"title"},As={style:{"font-size":"0.75rem"}},Hs=["onContextmenu"],Ps={key:0,class:"no-files"},zs={key:0,class:"file-item-info"},Ls=dt({__name:"FilesView",setup(f){var me,he,be,fe;const{t:o}=_t(),we=M([]),Y=pt(),$e=Y.query,d=Y.params.type,ee=M(mt(((me=$e.q)==null?void 0:me.toString())??"")),z=ht(ee.value),v=M(((he=z.find(e=>e.name==="path"))==null?void 0:he.value)??"");let F=((be=z.find(e=>e.name==="dir"))==null?void 0:be.value)??"";F||(((fe=z.find(t=>t.name==="isDir"))==null?void 0:fe.value)==="1"?F=v.value:F=v.value.substring(0,v.value.lastIndexOf("/")));const Se=M(F),Ie=[{label:"sort_by.date_asc",value:"DATE_ASC"},{label:"sort_by.date_desc",value:"DATE_DESC"},{label:"sort_by.size_asc",value:"SIZE_ASC"},{label:"sort_by.size_desc",value:"SIZE_DESC"},{label:"sort_by.name_asc",value:"NAME_ASC"},{label:"sort_by.name_desc",value:"NAME_DESC"}],D=M(!1),te=bt(),{fileShowHidden:w,fileSortBy:L}=ve(te),se=ft(),{app:$,urlTokenKey:S,selectedFiles:Me}=ve(se);let x=$.value.internalStoragePath;d&&(d==="sdcard"?x=$.value.sdcardPath:d.startsWith("usb")?x=$.value.usbDiskPaths[parseInt(d.substring(3))-1]:d==="app"&&(x=$.value.externalFilesDir));const{loading:Ve,panels:_,currentDir:B,refetch:N}=vt(S,x,Se.value,L),{createPath:Ee,createVariables:Fe,createMutation:xe}=kt(S,_),{renameValue:Be,renamePath:Ze,renameDone:Ae,renameMutation:He,renameVariables:Pe}=yt(_),{internal:oe,sdcard:ne,usb:ze,refetch:R}=gt(),{onDeleted:U}=Lt(_,B,R),{downloadFile:le,downloadDir:Le,downloadFiles:Ne}=Mt(S),{view:W}=Ot(we,(e,t)=>{se.lightbox={sources:e,index:t,visible:!0}}),{selectedItem:Z,select:Re}=Tt(B,d,ee,te),{canPaste:ae,copy:O,cut:ie,paste:Q}=Ct(Me,N,R),{input:Ue,upload:ce,uploadChanged:re}=ke(),{input:We,upload:ue,uploadChanged:de}=ke(),{mutate:Oe,onDone:Qe}=qt({document:Vt,appApi:!0});Qe(e=>{Ne(e.data.setTempValue.key),_.value.forEach(t=>{t.items.forEach(s=>{s.checked=!1})})});const I=()=>{const e=[];return _.value.forEach(t=>{t.items.forEach(s=>{s.checked&&(s.panel=t,e.push(s))})}),e};function je(e){D.value=e.target.checked}function Ge(e){w.value=e.target.checked}const Je=()=>{Oe({key:Nt(),value:JSON.stringify(I().map(e=>({path:e.path})))})},Ke=Dt(()=>I().length>0),Xe=()=>{P(ye,{files:I(),onDone:U})};v.value&&wt(()=>_.value.length,()=>{if(_.value.length>0&&v.value){const t=_.value[_.value.length-1].items.find(s=>s.path===v.value);t&&(Z.value=t,v.value="")}});function Ye(){var e,t,s,r;if(d){if(d==="sdcard")return`${o("sdcard")} (${o("storage_free_total",{free:y(((e=ne.value)==null?void 0:e.freeBytes)??0),total:y(((t=ne.value)==null?void 0:t.totalBytes)??0)})})`;if(d==="app")return o("app_name");if(d.startsWith("usb")){const A=parseInt(d.substring(3)),b=ze.value[A-1];return`${o("usb_storage")} ${A} (${o("storage_free_total",{free:y((b==null?void 0:b.freeBytes)??0),total:y((b==null?void 0:b.totalBytes)??0)})})`}}return`${o("page_title.files")} (${o("storage_free_total",{free:y(((s=oe.value)==null?void 0:s.freeBytes)??0),total:y(((r=oe.value)==null?void 0:r.totalBytes)??0)})})`}function et(e,t){if(D.value){t.checked=!t.checked;return}Re(e,t)}function tt(e,t){L.value=t,e.close()}function st(){N(B.value)}function ot(e,t){t.isDir||(ge(t.name)?window.open(Te(S.value,t.path),"_blank"):X(t.name)?W(w?e.items:e.items.filter(s=>!s.name.startsWith(".")),t):le(t.path))}function nt(e,t){e.preventDefault();const s=[{label:o("create_folder"),onClick:()=>{Ee.value=t,P(De,{title:o("name"),placeholder:o("name"),mutation:xe,getVariables:Fe})}},{label:o("upload_files"),onClick:()=>{ce(t)}},{label:o("upload_folder"),onClick:()=>{ue(t)}}];ae()&&s.push({label:o("paste"),onClick:()=>{Q(t)}}),Ce({x:e.x,y:e.y,items:s})}function lt(e,t,s){e.preventDefault();let r;s.isDir?r=[{label:o("upload_files"),onClick:()=>{ce(s.path)}},{label:o("upload_folder"),onClick:()=>{ue(s.path)}},{label:o("download"),onClick:()=>{Le(s.path)}}]:(r=[],(ge(s.name)||X(s.name))&&r.push({label:o("open"),onClick:()=>{X(s.name)?W(t.items,s):window.open(Te(S.value,s.path),"_blank")}}),r.push({label:o("download"),onClick:()=>{le(s.path)}})),r.push({label:o("duplicate"),onClick:()=>{O([s]),Q(t.dir)}}),r.push({label:o("cut"),onClick:()=>{s.panel=t,ie([s])}}),r.push({label:o("copy"),onClick:()=>{O([s])}}),s.isDir&&ae()&&r.push({label:o("paste"),onClick:()=>{Q(s.path)}}),r=[...r,{label:o("rename"),onClick:()=>{Be.value=s.name,Ze.value=s.path,P(De,{title:o("rename"),placeholder:o("name"),value:s.name,mutation:He,getVariables:Pe,done:Ae})}},{label:o("delete"),onClick:()=>{P(ye,{files:[s],onDone:U})}}],Ce({x:e.x,y:e.y,items:r})}const _e=e=>{e.status==="done"&&setTimeout(()=>{N(e.dir),R()},1e3)},pe=e=>{U([e.item])};return $t(()=>{H.on("upload_task_done",_e),H.on("file_deleted",pe)}),St(()=>{H.off("upload_task_done",_e),H.off("file_deleted",pe)}),(e,t)=>{const s=Gt,r=ds,A=as,b=Rt,at=Ut,it=jt,ct=ts,rt=Et,ut=Wt,g=It("tooltip");return i(),c(k,null,[l("div",_s,[m(s,{current:Ye}),l("div",ps,[D.value&&Ke.value?(i(),c(k,{key:0},[T((i(),c("button",{class:"icon-button",onClick:t[0]||(t[0]=V(()=>n(O)(I()),["stop"]))},[ms,m(r)])),[[g,e.$t("copy")]]),T((i(),c("button",{class:"icon-button",onClick:t[1]||(t[1]=V(()=>n(ie)(I()),["stop"]))},[hs,m(A)])),[[g,e.$t("cut")]]),T((i(),c("button",{class:"icon-button",onClick:V(Xe,["stop"])},[fs,m(b)],8,bs)),[[g,e.$t("delete")]]),T((i(),c("button",{class:"icon-button",onClick:V(Je,["stop"])},[ks,m(at)],8,vs)),[[g,e.$t("download")]])],64)):h("",!0),l("div",ys,[l("label",gs,[l("md-checkbox",{"touch-target":"wrapper",onChange:je,checked:D.value},null,40,Ts),C(" "+p(e.$t("select_mode")),1)])]),l("div",Cs,[l("label",qs,[l("md-checkbox",{"touch-target":"wrapper",onChange:Ge,checked:n(w)},null,40,Ds),C(p(e.$t("show_hidden")),1)])]),T((i(),c("button",{class:"icon-button btn-refresh",onClick:st},[ws,m(it)])),[[g,e.$t("refresh")]]),m(rt,null,{content:E(u=>[l("div",Is,[(i(),c(k,null,J(Ie,a=>l("md-menu-item",{onClick:j=>tt(u,a.value),selected:a.value===n(L)},[l("div",Vs,p(e.$t(a.label)),1)],8,Ms)),64))])]),default:E(()=>[T((i(),c("button",$s,[Ss,m(ct)])),[[g,e.$t("sort")]])]),_:1})])]),m(n(Jt),{class:"panel-container"},{default:E(()=>[(i(!0),c(k,null,J(n(_),u=>(i(),K(n(qe),{key:u.dir},{default:E(()=>[l("div",Es,[(i(!0),c(k,null,J(u.items,a=>{var j;return i(),c(k,{key:a.path},[!a.name.startsWith(".")||n(w)?(i(),c("div",{key:0,class:Ft(["file-item",{active:(n(B)+"/").startsWith(a.path+"/")||((j=n(Z))==null?void 0:j.path)===a.path}]),onClick:G=>et(u,a),onDblclick:V(G=>ot(u,a),["prevent"]),onContextmenu:G=>lt(G,u,a)},[D.value?(i(),c("md-checkbox",{key:0,"touch-target":"wrapper",checked:a.checked},null,8,xs)):h("",!0),a.isDir?(i(),K(ut,{key:1})):h("",!0),n(xt)(a.name)||n(Bt)(a.name)?(i(),c("img",{key:2,src:n(Zt)(a.fileId)+"&w=50&h=50",width:"50",height:"50"},null,8,Bs)):h("",!0),l("div",Zs,[C(p(a.name)+" ",1),l("div",As,[C(p(n(At)(a.updatedAt)),1),a.isDir?h("",!0):(i(),c(k,{key:0},[C(", "+p(n(y)(a.size)),1)],64))])])],42,Fs)):h("",!0)],64)}),128)),l("div",{class:"empty",onContextmenu:a=>nt(a,u.dir)},[u.items.filter(a=>!a.name.startsWith(".")||n(w)).length===0?(i(),c("div",Ps,p(e.$t("no_files")),1)):h("",!0)],40,Hs)])]),_:2},1024))),128)),n(_).length===0?(i(),K(n(qe),{key:0,class:"no-data-placeholder"},{default:E(()=>[C(p(e.$t(n(Ht)(n(Ve),n($).permissions,"WRITE_EXTERNAL_STORAGE"))),1)]),_:1})):h("",!0)]),_:1}),n(Z)?(i(),c("div",zs,p(e.$t("path"))+": "+p(n(Z).path),1)):h("",!0),l("input",{ref_key:"fileInput",ref:Ue,style:{display:"none"},type:"file",multiple:"",onChange:t[2]||(t[2]=(...u)=>n(re)&&n(re)(...u))},null,544),l("input",{ref_key:"dirFileInput",ref:We,style:{display:"none"},type:"file",multiple:"",webkitdirectory:"",mozdirectory:"",directory:"",onChange:t[3]||(t[3]=(...u)=>n(de)&&n(de)(...u))},null,544)],64)}}});const js=Qt(Ls,[["__scopeId","data-v-a8beb100"]]);export{js as default};
+import{o as i,c,a as l,d as dt,u as _t,r as M,D as pt,M as mt,ag as ht,e as bt,s as ve,f as ft,ba as vt,bb as kt,bc as yt,bd as gt,be as Tt,bf as Ct,ae as ke,i as qt,aC as Dt,w as wt,O as $t,P as H,Q as St,R as It,p as m,F as k,m as T,l as V,k as h,h as C,t as p,j as n,H as E,al as Mt,bg as Vt,at as Et,J,S as K,I as Ft,bh as xt,bi as Bt,ax as Zt,Z as At,z as y,$ as Ht,A as Pt,B as zt,bj as Lt,bk as Nt,a2 as P,bl as ye,bm as ge,ah as Te,bn as X,aH as Ce,ad as Rt,am as Ut,bo as Wt,bp as Ot,_ as Qt}from"./index-0c42270c.js";import{_ as jt}from"./refresh-rounded-aea8467d.js";import{_ as Gt}from"./Breadcrumb-f52b6c6b.js";import{g as qe,M as Jt}from"./splitpanes.es-7e8a6fea.js";import{E as De}from"./EditValueModal-c22a5b2d.js";import"./vee-validate.esm-ca78f26f.js";const Kt={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},Xt=l("path",{fill:"currentColor",d:"M8 18H4q-.425 0-.713-.288T3 17q0-.425.288-.713T4 16h4q.425 0 .713.288T9 17q0 .425-.288.713T8 18ZM20 8H4q-.425 0-.713-.288T3 7q0-.425.288-.713T4 6h16q.425 0 .713.288T21 7q0 .425-.288.713T20 8Zm-6 5H4q-.425 0-.713-.288T3 12q0-.425.288-.713T4 11h10q.425 0 .713.288T15 12q0 .425-.288.713T14 13Z"},null,-1),Yt=[Xt];function es(f,o){return i(),c("svg",Kt,Yt)}const ts={name:"material-symbols-sort-rounded",render:es},ss={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},os=l("path",{fill:"currentColor",d:"M19.6 21.6L12 14l-2.35 2.35q.2.375.275.8T10 18q0 1.65-1.175 2.825T6 22q-1.65 0-2.825-1.175T2 18q0-1.65 1.175-2.825T6 14q.425 0 .85.075t.8.275L10 12L7.65 9.65q-.375.2-.8.275T6 10q-1.65 0-2.825-1.175T2 6q0-1.65 1.175-2.825T6 2q1.65 0 2.825 1.175T10 6q0 .425-.075.85t-.275.8L21.6 19.6q.425.425.425 1t-.425 1q-.425.425-1 .425t-1-.425ZM15 11l-2-2l6.6-6.6q.425-.425 1-.425t1 .425q.425.425.425 1t-.425 1L15 11ZM6 8q.825 0 1.413-.588T8 6q0-.825-.588-1.413T6 4q-.825 0-1.413.588T4 6q0 .825.588 1.413T6 8Zm6 4.5q.225 0 .363-.138T12.5 12q0-.225-.138-.363T12 11.5q-.225 0-.363.138T11.5 12q0 .225.138.363T12 12.5ZM6 20q.825 0 1.413-.588T8 18q0-.825-.588-1.413T6 16q-.825 0-1.413.588T4 18q0 .825.588 1.413T6 20Z"},null,-1),ns=[os];function ls(f,o){return i(),c("svg",ss,ns)}const as={name:"material-symbols-content-cut-rounded",render:ls},is={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"},cs=l("path",{fill:"currentColor",d:"M9 18q-.825 0-1.413-.588T7 16V4q0-.825.588-1.413T9 2h9q.825 0 1.413.588T20 4v12q0 .825-.588 1.413T18 18H9Zm0-2h9V4H9v12Zm-4 6q-.825 0-1.413-.588T3 20V7q0-.425.288-.713T4 6q.425 0 .713.288T5 7v13h10q.425 0 .713.288T16 21q0 .425-.288.713T15 22H5ZM9 4v12V4Z"},null,-1),rs=[cs];function us(f,o){return i(),c("svg",is,rs)}const ds={name:"material-symbols-content-copy-outline-rounded",render:us},q=f=>(Pt("data-v-a8beb100"),f=f(),zt(),f),_s={class:"v-toolbar"},ps={class:"right-actions"},ms=q(()=>l("md-ripple",null,null,-1)),hs=q(()=>l("md-ripple",null,null,-1)),bs=["onClick"],fs=q(()=>l("md-ripple",null,null,-1)),vs=["onClick"],ks=q(()=>l("md-ripple",null,null,-1)),ys={class:"form-check"},gs={class:"form-check-label"},Ts=["checked"],Cs={class:"form-check"},qs={class:"form-check-label"},Ds=["checked"],ws=q(()=>l("md-ripple",null,null,-1)),$s={class:"icon-button btn-sort"},Ss=q(()=>l("md-ripple",null,null,-1)),Is={class:"menu-items"},Ms=["onClick","selected"],Vs={slot:"headline"},Es={class:"file-items"},Fs=["onClick","onDblclick","onContextmenu"],xs=["checked"],Bs=["src"],Zs={class:"title"},As={style:{"font-size":"0.75rem"}},Hs=["onContextmenu"],Ps={key:0,class:"no-files"},zs={key:0,class:"file-item-info"},Ls=dt({__name:"FilesView",setup(f){var me,he,be,fe;const{t:o}=_t(),we=M([]),Y=pt(),$e=Y.query,d=Y.params.type,ee=M(mt(((me=$e.q)==null?void 0:me.toString())??"")),z=ht(ee.value),v=M(((he=z.find(e=>e.name==="path"))==null?void 0:he.value)??"");let F=((be=z.find(e=>e.name==="dir"))==null?void 0:be.value)??"";F||(((fe=z.find(t=>t.name==="isDir"))==null?void 0:fe.value)==="1"?F=v.value:F=v.value.substring(0,v.value.lastIndexOf("/")));const Se=M(F),Ie=[{label:"sort_by.date_asc",value:"DATE_ASC"},{label:"sort_by.date_desc",value:"DATE_DESC"},{label:"sort_by.size_asc",value:"SIZE_ASC"},{label:"sort_by.size_desc",value:"SIZE_DESC"},{label:"sort_by.name_asc",value:"NAME_ASC"},{label:"sort_by.name_desc",value:"NAME_DESC"}],D=M(!1),te=bt(),{fileShowHidden:w,fileSortBy:L}=ve(te),se=ft(),{app:$,urlTokenKey:S,selectedFiles:Me}=ve(se);let x=$.value.internalStoragePath;d&&(d==="sdcard"?x=$.value.sdcardPath:d.startsWith("usb")?x=$.value.usbDiskPaths[parseInt(d.substring(3))-1]:d==="app"&&(x=$.value.externalFilesDir));const{loading:Ve,panels:_,currentDir:B,refetch:N}=vt(S,x,Se.value,L),{createPath:Ee,createVariables:Fe,createMutation:xe}=kt(S,_),{renameValue:Be,renamePath:Ze,renameDone:Ae,renameMutation:He,renameVariables:Pe}=yt(_),{internal:oe,sdcard:ne,usb:ze,refetch:R}=gt(),{onDeleted:U}=Lt(_,B,R),{downloadFile:le,downloadDir:Le,downloadFiles:Ne}=Mt(S),{view:W}=Ot(we,(e,t)=>{se.lightbox={sources:e,index:t,visible:!0}}),{selectedItem:Z,select:Re}=Tt(B,d,ee,te),{canPaste:ae,copy:O,cut:ie,paste:Q}=Ct(Me,N,R),{input:Ue,upload:ce,uploadChanged:re}=ke(),{input:We,upload:ue,uploadChanged:de}=ke(),{mutate:Oe,onDone:Qe}=qt({document:Vt,appApi:!0});Qe(e=>{Ne(e.data.setTempValue.key),_.value.forEach(t=>{t.items.forEach(s=>{s.checked=!1})})});const I=()=>{const e=[];return _.value.forEach(t=>{t.items.forEach(s=>{s.checked&&(s.panel=t,e.push(s))})}),e};function je(e){D.value=e.target.checked}function Ge(e){w.value=e.target.checked}const Je=()=>{Oe({key:Nt(),value:JSON.stringify(I().map(e=>({path:e.path})))})},Ke=Dt(()=>I().length>0),Xe=()=>{P(ye,{files:I(),onDone:U})};v.value&&wt(()=>_.value.length,()=>{if(_.value.length>0&&v.value){const t=_.value[_.value.length-1].items.find(s=>s.path===v.value);t&&(Z.value=t,v.value="")}});function Ye(){var e,t,s,r;if(d){if(d==="sdcard")return`${o("sdcard")} (${o("storage_free_total",{free:y(((e=ne.value)==null?void 0:e.freeBytes)??0),total:y(((t=ne.value)==null?void 0:t.totalBytes)??0)})})`;if(d==="app")return o("app_name");if(d.startsWith("usb")){const A=parseInt(d.substring(3)),b=ze.value[A-1];return`${o("usb_storage")} ${A} (${o("storage_free_total",{free:y((b==null?void 0:b.freeBytes)??0),total:y((b==null?void 0:b.totalBytes)??0)})})`}}return`${o("page_title.files")} (${o("storage_free_total",{free:y(((s=oe.value)==null?void 0:s.freeBytes)??0),total:y(((r=oe.value)==null?void 0:r.totalBytes)??0)})})`}function et(e,t){if(D.value){t.checked=!t.checked;return}Re(e,t)}function tt(e,t){L.value=t,e.close()}function st(){N(B.value)}function ot(e,t){t.isDir||(ge(t.name)?window.open(Te(S.value,t.path),"_blank"):X(t.name)?W(w?e.items:e.items.filter(s=>!s.name.startsWith(".")),t):le(t.path))}function nt(e,t){e.preventDefault();const s=[{label:o("create_folder"),onClick:()=>{Ee.value=t,P(De,{title:o("name"),placeholder:o("name"),mutation:xe,getVariables:Fe})}},{label:o("upload_files"),onClick:()=>{ce(t)}},{label:o("upload_folder"),onClick:()=>{ue(t)}}];ae()&&s.push({label:o("paste"),onClick:()=>{Q(t)}}),Ce({x:e.x,y:e.y,items:s})}function lt(e,t,s){e.preventDefault();let r;s.isDir?r=[{label:o("upload_files"),onClick:()=>{ce(s.path)}},{label:o("upload_folder"),onClick:()=>{ue(s.path)}},{label:o("download"),onClick:()=>{Le(s.path)}}]:(r=[],(ge(s.name)||X(s.name))&&r.push({label:o("open"),onClick:()=>{X(s.name)?W(t.items,s):window.open(Te(S.value,s.path),"_blank")}}),r.push({label:o("download"),onClick:()=>{le(s.path)}})),r.push({label:o("duplicate"),onClick:()=>{O([s]),Q(t.dir)}}),r.push({label:o("cut"),onClick:()=>{s.panel=t,ie([s])}}),r.push({label:o("copy"),onClick:()=>{O([s])}}),s.isDir&&ae()&&r.push({label:o("paste"),onClick:()=>{Q(s.path)}}),r=[...r,{label:o("rename"),onClick:()=>{Be.value=s.name,Ze.value=s.path,P(De,{title:o("rename"),placeholder:o("name"),value:s.name,mutation:He,getVariables:Pe,done:Ae})}},{label:o("delete"),onClick:()=>{P(ye,{files:[s],onDone:U})}}],Ce({x:e.x,y:e.y,items:r})}const _e=e=>{e.status==="done"&&setTimeout(()=>{N(e.dir),R()},1e3)},pe=e=>{U([e.item])};return $t(()=>{H.on("upload_task_done",_e),H.on("file_deleted",pe)}),St(()=>{H.off("upload_task_done",_e),H.off("file_deleted",pe)}),(e,t)=>{const s=Gt,r=ds,A=as,b=Rt,at=Ut,it=jt,ct=ts,rt=Et,ut=Wt,g=It("tooltip");return i(),c(k,null,[l("div",_s,[m(s,{current:Ye}),l("div",ps,[D.value&&Ke.value?(i(),c(k,{key:0},[T((i(),c("button",{class:"icon-button",onClick:t[0]||(t[0]=V(()=>n(O)(I()),["stop"]))},[ms,m(r)])),[[g,e.$t("copy")]]),T((i(),c("button",{class:"icon-button",onClick:t[1]||(t[1]=V(()=>n(ie)(I()),["stop"]))},[hs,m(A)])),[[g,e.$t("cut")]]),T((i(),c("button",{class:"icon-button",onClick:V(Xe,["stop"])},[fs,m(b)],8,bs)),[[g,e.$t("delete")]]),T((i(),c("button",{class:"icon-button",onClick:V(Je,["stop"])},[ks,m(at)],8,vs)),[[g,e.$t("download")]])],64)):h("",!0),l("div",ys,[l("label",gs,[l("md-checkbox",{"touch-target":"wrapper",onChange:je,checked:D.value},null,40,Ts),C(" "+p(e.$t("select_mode")),1)])]),l("div",Cs,[l("label",qs,[l("md-checkbox",{"touch-target":"wrapper",onChange:Ge,checked:n(w)},null,40,Ds),C(p(e.$t("show_hidden")),1)])]),T((i(),c("button",{class:"icon-button btn-refresh",onClick:st},[ws,m(it)])),[[g,e.$t("refresh")]]),m(rt,null,{content:E(u=>[l("div",Is,[(i(),c(k,null,J(Ie,a=>l("md-menu-item",{onClick:j=>tt(u,a.value),selected:a.value===n(L)},[l("div",Vs,p(e.$t(a.label)),1)],8,Ms)),64))])]),default:E(()=>[T((i(),c("button",$s,[Ss,m(ct)])),[[g,e.$t("sort")]])]),_:1})])]),m(n(Jt),{class:"panel-container"},{default:E(()=>[(i(!0),c(k,null,J(n(_),u=>(i(),K(n(qe),{key:u.dir},{default:E(()=>[l("div",Es,[(i(!0),c(k,null,J(u.items,a=>{var j;return i(),c(k,{key:a.path},[!a.name.startsWith(".")||n(w)?(i(),c("div",{key:0,class:Ft(["file-item",{active:(n(B)+"/").startsWith(a.path+"/")||((j=n(Z))==null?void 0:j.path)===a.path}]),onClick:G=>et(u,a),onDblclick:V(G=>ot(u,a),["prevent"]),onContextmenu:G=>lt(G,u,a)},[D.value?(i(),c("md-checkbox",{key:0,"touch-target":"wrapper",checked:a.checked},null,8,xs)):h("",!0),a.isDir?(i(),K(ut,{key:1})):h("",!0),n(xt)(a.name)||n(Bt)(a.name)?(i(),c("img",{key:2,src:n(Zt)(a.fileId)+"&w=50&h=50",width:"50",height:"50"},null,8,Bs)):h("",!0),l("div",Zs,[C(p(a.name)+" ",1),l("div",As,[C(p(n(At)(a.updatedAt)),1),a.isDir?h("",!0):(i(),c(k,{key:0},[C(", "+p(n(y)(a.size)),1)],64))])])],42,Fs)):h("",!0)],64)}),128)),l("div",{class:"empty",onContextmenu:a=>nt(a,u.dir)},[u.items.filter(a=>!a.name.startsWith(".")||n(w)).length===0?(i(),c("div",Ps,p(e.$t("no_files")),1)):h("",!0)],40,Hs)])]),_:2},1024))),128)),n(_).length===0?(i(),K(n(qe),{key:0,class:"no-data-placeholder"},{default:E(()=>[C(p(e.$t(n(Ht)(n(Ve),n($).permissions,"WRITE_EXTERNAL_STORAGE"))),1)]),_:1})):h("",!0)]),_:1}),n(Z)?(i(),c("div",zs,p(e.$t("path"))+": "+p(n(Z).path),1)):h("",!0),l("input",{ref_key:"fileInput",ref:Ue,style:{display:"none"},type:"file",multiple:"",onChange:t[2]||(t[2]=(...u)=>n(re)&&n(re)(...u))},null,544),l("input",{ref_key:"dirFileInput",ref:We,style:{display:"none"},type:"file",multiple:"",webkitdirectory:"",mozdirectory:"",directory:"",onChange:t[3]||(t[3]=(...u)=>n(de)&&n(de)(...u))},null,544)],64)}}});const js=Qt(Ls,[["__scopeId","data-v-a8beb100"]]);export{js as default};
diff --git a/app/src/main/resources/web/assets/HomeView-fd3ca4d3.js b/app/src/main/resources/web/assets/HomeView-2a97ac79.js
similarity index 97%
rename from app/src/main/resources/web/assets/HomeView-fd3ca4d3.js
rename to app/src/main/resources/web/assets/HomeView-2a97ac79.js
index 4bda1395..5bd2311a 100644
--- a/app/src/main/resources/web/assets/HomeView-fd3ca4d3.js
+++ b/app/src/main/resources/web/assets/HomeView-2a97ac79.js
@@ -1 +1 @@
-import{b as M,o as d,c,a as e,d as L,u as E,e as F,s as B,r as m,f as O,i as j,w as A,g as P,h as v,t as o,j as _,k as h,l,F as w,m as Q,v as Z,n as z,p as D,q as R,x as U,y as J,z as S,A as K,B as W,C as X,_ as Y}from"./index-f62f2ff2.js";import{u as x}from"./vee-validate.esm-65abdaa1.js";function ee(i,p){for(var u,r=-1,g=i.length;++r(K("data-v-1ff7fdfe"),i=i(),W(),i),ie={class:"page-container"},re={class:"main"},de={class:"grid"},ce={class:"g-col-lg-6 g-col-md-12"},ue={class:"card"},ve={class:"card-body"},pe={class:"card-title"},fe={key:0,class:"total-bytes"},me={class:"stats-items"},_e={class:"g-col-lg-6 g-col-md-12"},he={class:"card"},ge={class:"card-body"},$e={class:"card-title"},be={class:"stats-items"},ke={class:"g-col-lg-6 g-col-md-12"},Ce={class:"card"},ye={class:"card-body"},Te={class:"card-title"},qe={class:"stats-items"},we={class:"g-col-lg-6 g-col-md-12"},Be={class:"card"},Se={class:"card-body"},Ve={class:"card-title"},He={class:"stats-items"},Ne={class:"g-col-lg-6 g-col-md-12"},Ge={class:"card"},Ie={class:"card-body"},Me={class:"card-title"},Le={class:"form-row"},Ee=["label","error","error-text"],Fe=["onClick"],Oe=ae(()=>e("md-ripple",null,null,-1)),je=["onClick","disabled"],Ae=L({__name:"HomeView",setup(i){const{t:p}=E();x();const u=F(),{callNumber:r}=B(u),g=m(!1),{app:f}=B(O()),C=m(-1),y=m(-1),T=m(-1),$=m(-1),k=m(-1);function H(){navigator.clipboard.readText().then(t=>{r.value=t})}const{mutate:N,loading:G}=j({document:R,appApi:!0}),I=()=>{if(!r.value){g.value=!0;return}N({number:r.value})};A(r,()=>{g.value=!1}),P({handle:(t,s)=>{if(s)U(p(s),"error");else if(t){C.value=t.messageCount,y.value=t.contactCount,T.value=t.callCount,$.value=t.storageStats.internal.totalBytes,k.value=t.storageStats.internal.freeBytes;const b=t.storageStats.sdcard;b&&($.value+=b.totalBytes,k.value+=b.freeBytes);const n=t.storageStats.usb;n.length&&($.value+=V(n,q=>q.totalBytes),k.value+=V(n,q=>q.freeBytes))}},document:J,variables:null,appApi:!0});function a(t){X(u,t)}return(t,s)=>{const b=le;return d(),c("div",ie,[e("div",re,[e("div",de,[e("div",ce,[e("section",ue,[e("div",ve,[e("h5",pe,[v(o(t.$t("storage")),1),$.value>=0?(d(),c("span",fe,o(t.$t("storage_free_total",{free:_(S)(k.value),total:_(S)($.value)})),1)):h("",!0)]),e("p",me,[e("a",{href:"#",onClick:s[0]||(s[0]=l(n=>a("/images"),["prevent"]))},o(t.$t("images")),1),e("a",{href:"#",onClick:s[1]||(s[1]=l(n=>a("/audios"),["prevent"]))},o(t.$t("audios")),1),e("a",{href:"#",onClick:s[2]||(s[2]=l(n=>a("/videos"),["prevent"]))},o(t.$t("videos")),1),e("a",{href:"#",onClick:s[3]||(s[3]=l(n=>a("/files"),["prevent"]))},o(t.$t("files")),1),e("a",{href:"#",onClick:s[4]||(s[4]=l(n=>a("/apps"),["prevent"]))},o(t.$t("apps")),1)])])])]),e("div",_e,[e("section",he,[e("div",ge,[e("h5",$e,o(t.$t("work")),1),e("p",be,[e("a",{href:"#",onClick:s[5]||(s[5]=l(n=>a("/notes"),["prevent"]))},o(t.$t("page_title.notes")),1),e("a",{style:{display:"none"},href:"#",onClick:s[6]||(s[6]=l(n=>a("/books"),["prevent"]))},o(t.$t("page_title.books")),1),e("a",{href:"#",onClick:s[7]||(s[7]=l(n=>a("/feeds"),["prevent"]))},o(t.$t("page_title.feeds")),1)])])])]),e("div",ke,[e("section",Ce,[e("div",ye,[e("h5",Te,o(t.$t("social")),1),e("p",qe,[_(f).channel!=="GOOGLE"?(d(),c("a",{key:0,href:"#",onClick:s[8]||(s[8]=l(n=>a("/messages"),["prevent"]))},[v(o(t.$t("messages")),1),C.value>=0?(d(),c(w,{key:0},[v("("+o(C.value)+")",1)],64)):h("",!0)])):h("",!0),e("a",{href:"#",onClick:s[9]||(s[9]=l(n=>a("/contacts"),["prevent"]))},[v(o(t.$t("contacts")),1),y.value>=0?(d(),c(w,{key:0},[v("("+o(y.value)+")",1)],64)):h("",!0)]),_(f).channel!=="GOOGLE"?(d(),c("a",{key:1,href:"#",onClick:s[10]||(s[10]=l(n=>a("/calls"),["prevent"]))},[v(o(t.$t("calls")),1),T.value>=0?(d(),c(w,{key:0},[v("("+o(T.value)+")",1)],64)):h("",!0)])):h("",!0)])])])]),e("div",we,[e("section",Be,[e("div",Se,[e("h5",Ve,o(t.$t("tools")),1),e("p",He,[e("a",{href:"#",onClick:s[11]||(s[11]=l(n=>a("/json-viewer"),["prevent"]))},o(t.$t("json_viewer")),1),e("a",{href:"#",onClick:s[12]||(s[12]=l(n=>a("/qrcode-generator"),["prevent"]))},o(t.$t("qrcode_generator")),1),e("a",{href:"#",onClick:s[13]||(s[13]=l(n=>a("/screen-mirror"),["prevent"]))},o(t.$t("screen_mirror")),1),e("a",{href:"#",onClick:s[14]||(s[14]=l(n=>a("/device-info"),["prevent"]))},o(t.$t("device_info")),1)])])])]),e("div",Ne,[e("section",Ge,[e("div",Ie,[e("h5",Me,o(t.$t("call_phone")),1),e("p",Le,[Q(e("md-outlined-text-field",{type:"tel",label:t.$t("phone_number"),class:"form-control flex-3","onUpdate:modelValue":s[15]||(s[15]=n=>z(r)?r.value=n:null),error:g.value,"error-text":t.$t("valid.required")},[e("button",{class:"icon-button",slot:"trailing-icon",onClick:l(H,["prevent"])},[Oe,D(b)],8,Fe)],8,Ee),[[Z,_(r)]]),e("md-filled-button",{class:"btn-lg",onClick:l(I,["prevent"]),disabled:_(G)},o(t.$t("call")),9,je)])])])])])])])}}});const Ze=Y(Ae,[["__scopeId","data-v-1ff7fdfe"]]);export{Ze as default};
+import{b as M,o as d,c,a as e,d as L,u as E,e as F,s as B,r as m,f as O,i as j,w as A,g as P,h as v,t as o,j as _,k as h,l,F as w,m as Q,v as Z,n as z,p as D,q as R,x as U,y as J,z as S,A as K,B as W,C as X,_ as Y}from"./index-0c42270c.js";import{u as x}from"./vee-validate.esm-ca78f26f.js";function ee(i,p){for(var u,r=-1,g=i.length;++r(K("data-v-1ff7fdfe"),i=i(),W(),i),ie={class:"page-container"},re={class:"main"},de={class:"grid"},ce={class:"g-col-lg-6 g-col-md-12"},ue={class:"card"},ve={class:"card-body"},pe={class:"card-title"},fe={key:0,class:"total-bytes"},me={class:"stats-items"},_e={class:"g-col-lg-6 g-col-md-12"},he={class:"card"},ge={class:"card-body"},$e={class:"card-title"},be={class:"stats-items"},ke={class:"g-col-lg-6 g-col-md-12"},Ce={class:"card"},ye={class:"card-body"},Te={class:"card-title"},qe={class:"stats-items"},we={class:"g-col-lg-6 g-col-md-12"},Be={class:"card"},Se={class:"card-body"},Ve={class:"card-title"},He={class:"stats-items"},Ne={class:"g-col-lg-6 g-col-md-12"},Ge={class:"card"},Ie={class:"card-body"},Me={class:"card-title"},Le={class:"form-row"},Ee=["label","error","error-text"],Fe=["onClick"],Oe=ae(()=>e("md-ripple",null,null,-1)),je=["onClick","disabled"],Ae=L({__name:"HomeView",setup(i){const{t:p}=E();x();const u=F(),{callNumber:r}=B(u),g=m(!1),{app:f}=B(O()),C=m(-1),y=m(-1),T=m(-1),$=m(-1),k=m(-1);function H(){navigator.clipboard.readText().then(t=>{r.value=t})}const{mutate:N,loading:G}=j({document:R,appApi:!0}),I=()=>{if(!r.value){g.value=!0;return}N({number:r.value})};A(r,()=>{g.value=!1}),P({handle:(t,s)=>{if(s)U(p(s),"error");else if(t){C.value=t.messageCount,y.value=t.contactCount,T.value=t.callCount,$.value=t.storageStats.internal.totalBytes,k.value=t.storageStats.internal.freeBytes;const b=t.storageStats.sdcard;b&&($.value+=b.totalBytes,k.value+=b.freeBytes);const n=t.storageStats.usb;n.length&&($.value+=V(n,q=>q.totalBytes),k.value+=V(n,q=>q.freeBytes))}},document:J,variables:null,appApi:!0});function a(t){X(u,t)}return(t,s)=>{const b=le;return d(),c("div",ie,[e("div",re,[e("div",de,[e("div",ce,[e("section",ue,[e("div",ve,[e("h5",pe,[v(o(t.$t("storage")),1),$.value>=0?(d(),c("span",fe,o(t.$t("storage_free_total",{free:_(S)(k.value),total:_(S)($.value)})),1)):h("",!0)]),e("p",me,[e("a",{href:"#",onClick:s[0]||(s[0]=l(n=>a("/images"),["prevent"]))},o(t.$t("images")),1),e("a",{href:"#",onClick:s[1]||(s[1]=l(n=>a("/audios"),["prevent"]))},o(t.$t("audios")),1),e("a",{href:"#",onClick:s[2]||(s[2]=l(n=>a("/videos"),["prevent"]))},o(t.$t("videos")),1),e("a",{href:"#",onClick:s[3]||(s[3]=l(n=>a("/files"),["prevent"]))},o(t.$t("files")),1),e("a",{href:"#",onClick:s[4]||(s[4]=l(n=>a("/apps"),["prevent"]))},o(t.$t("apps")),1)])])])]),e("div",_e,[e("section",he,[e("div",ge,[e("h5",$e,o(t.$t("work")),1),e("p",be,[e("a",{href:"#",onClick:s[5]||(s[5]=l(n=>a("/notes"),["prevent"]))},o(t.$t("page_title.notes")),1),e("a",{style:{display:"none"},href:"#",onClick:s[6]||(s[6]=l(n=>a("/books"),["prevent"]))},o(t.$t("page_title.books")),1),e("a",{href:"#",onClick:s[7]||(s[7]=l(n=>a("/feeds"),["prevent"]))},o(t.$t("page_title.feeds")),1)])])])]),e("div",ke,[e("section",Ce,[e("div",ye,[e("h5",Te,o(t.$t("social")),1),e("p",qe,[_(f).channel!=="GOOGLE"?(d(),c("a",{key:0,href:"#",onClick:s[8]||(s[8]=l(n=>a("/messages"),["prevent"]))},[v(o(t.$t("messages")),1),C.value>=0?(d(),c(w,{key:0},[v("("+o(C.value)+")",1)],64)):h("",!0)])):h("",!0),e("a",{href:"#",onClick:s[9]||(s[9]=l(n=>a("/contacts"),["prevent"]))},[v(o(t.$t("contacts")),1),y.value>=0?(d(),c(w,{key:0},[v("("+o(y.value)+")",1)],64)):h("",!0)]),_(f).channel!=="GOOGLE"?(d(),c("a",{key:1,href:"#",onClick:s[10]||(s[10]=l(n=>a("/calls"),["prevent"]))},[v(o(t.$t("calls")),1),T.value>=0?(d(),c(w,{key:0},[v("("+o(T.value)+")",1)],64)):h("",!0)])):h("",!0)])])])]),e("div",we,[e("section",Be,[e("div",Se,[e("h5",Ve,o(t.$t("tools")),1),e("p",He,[e("a",{href:"#",onClick:s[11]||(s[11]=l(n=>a("/json-viewer"),["prevent"]))},o(t.$t("json_viewer")),1),e("a",{href:"#",onClick:s[12]||(s[12]=l(n=>a("/qrcode-generator"),["prevent"]))},o(t.$t("qrcode_generator")),1),e("a",{href:"#",onClick:s[13]||(s[13]=l(n=>a("/screen-mirror"),["prevent"]))},o(t.$t("screen_mirror")),1),e("a",{href:"#",onClick:s[14]||(s[14]=l(n=>a("/device-info"),["prevent"]))},o(t.$t("device_info")),1)])])])]),e("div",Ne,[e("section",Ge,[e("div",Ie,[e("h5",Me,o(t.$t("call_phone")),1),e("p",Le,[Q(e("md-outlined-text-field",{type:"tel",label:t.$t("phone_number"),class:"form-control flex-3","onUpdate:modelValue":s[15]||(s[15]=n=>z(r)?r.value=n:null),error:g.value,"error-text":t.$t("valid.required")},[e("button",{class:"icon-button",slot:"trailing-icon",onClick:l(H,["prevent"])},[Oe,D(b)],8,Fe)],8,Ee),[[Z,_(r)]]),e("md-filled-button",{class:"btn-lg",onClick:l(I,["prevent"]),disabled:_(G)},o(t.$t("call")),9,je)])])])])])])])}}});const Ze=Y(Ae,[["__scopeId","data-v-1ff7fdfe"]]);export{Ze as default};
diff --git a/app/src/main/resources/web/assets/ImagesRootView-9817355a.js b/app/src/main/resources/web/assets/ImagesRootView-c23380b9.js
similarity index 70%
rename from app/src/main/resources/web/assets/ImagesRootView-9817355a.js
rename to app/src/main/resources/web/assets/ImagesRootView-c23380b9.js
index 626e4159..0fa1e2f6 100644
--- a/app/src/main/resources/web/assets/ImagesRootView-9817355a.js
+++ b/app/src/main/resources/web/assets/ImagesRootView-c23380b9.js
@@ -1 +1 @@
-import{_ as g}from"./TagFilter.vuevuetypescriptsetuptruelang-9b4a0b6e.js";import{_ as k}from"./BucketFilter.vuevuetypescriptsetuptruelang-9dafd033.js";import{d as C,D as w,e as y,az as I,G as M,c as z,p as s,H as o,j as e,o as B,a,t as m,l as $,I as b,C as E}from"./index-f62f2ff2.js";import{g as d,M as G}from"./splitpanes.es-2b477659.js";import"./EditValueModal-d57e85f6.js";import"./vee-validate.esm-65abdaa1.js";const N={class:"page-container"},S={class:"sidebar"},V={class:"nav-title"},A={class:"nav"},D=["onClick"],R={class:"main"},F=C({__name:"ImagesRootView",setup(j){var r,_;const n=w(),u=y(),i=I(n.query),c=((r=i.find(t=>t.name==="tag"))==null?void 0:r.value)??"",l=((_=i.find(t=>t.name==="bucket_id"))==null?void 0:_.value)??"";function p(){E(u,"/images")}return(t,q)=>{const f=k,h=g,v=M("router-view");return B(),z("div",N,[s(e(G),null,{default:o(()=>[s(e(d),{size:"20","min-size":"10"},{default:o(()=>[a("div",S,[a("h2",V,m(t.$t("page_title.images")),1),a("ul",A,[a("li",{onClick:$(p,["prevent"]),class:b({active:e(n).path==="/images"&&!e(c)&&!e(l)})},m(t.$t("all")),11,D),s(f,{type:"IMAGE",selected:e(l)},null,8,["selected"])]),s(h,{type:"IMAGE",selected:e(c)},null,8,["selected"])])]),_:1}),s(e(d),null,{default:o(()=>[a("div",R,[s(v)])]),_:1})]),_:1})])}}});export{F as default};
+import{_ as g}from"./TagFilter.vuevuetypescriptsetuptruelang-12e262c1.js";import{_ as k}from"./BucketFilter.vuevuetypescriptsetuptruelang-f7ab6958.js";import{d as C,D as w,e as y,az as I,G as M,c as z,p as s,H as o,j as e,o as B,a,t as m,l as $,I as b,C as E}from"./index-0c42270c.js";import{g as d,M as G}from"./splitpanes.es-7e8a6fea.js";import"./EditValueModal-c22a5b2d.js";import"./vee-validate.esm-ca78f26f.js";const N={class:"page-container"},S={class:"sidebar"},V={class:"nav-title"},A={class:"nav"},D=["onClick"],R={class:"main"},F=C({__name:"ImagesRootView",setup(j){var r,_;const n=w(),u=y(),i=I(n.query),c=((r=i.find(t=>t.name==="tag"))==null?void 0:r.value)??"",l=((_=i.find(t=>t.name==="bucket_id"))==null?void 0:_.value)??"";function p(){E(u,"/images")}return(t,q)=>{const f=k,h=g,v=M("router-view");return B(),z("div",N,[s(e(G),null,{default:o(()=>[s(e(d),{size:"20","min-size":"10"},{default:o(()=>[a("div",S,[a("h2",V,m(t.$t("page_title.images")),1),a("ul",A,[a("li",{onClick:$(p,["prevent"]),class:b({active:e(n).path==="/images"&&!e(c)&&!e(l)})},m(t.$t("all")),11,D),s(f,{type:"IMAGE",selected:e(l)},null,8,["selected"])]),s(h,{type:"IMAGE",selected:e(c)},null,8,["selected"])])]),_:1}),s(e(d),null,{default:o(()=>[a("div",R,[s(v)])]),_:1})]),_:1})])}}});export{F as default};
diff --git a/app/src/main/resources/web/assets/ImagesView-dfb10746.js b/app/src/main/resources/web/assets/ImagesView-62eb11b2.js
similarity index 95%
rename from app/src/main/resources/web/assets/ImagesView-dfb10746.js
rename to app/src/main/resources/web/assets/ImagesView-62eb11b2.js
index b1127579..0ea31368 100644
--- a/app/src/main/resources/web/assets/ImagesView-dfb10746.js
+++ b/app/src/main/resources/web/assets/ImagesView-62eb11b2.js
@@ -1 +1 @@
-import{u as Ue,_ as Be,a as qe,b as Ne}from"./list-45297bd9.js";import{d as xe,aA as He,e as Le,r as V,u as Qe,f as Ge,s as Ke,K as Oe,L as We,D as Pe,M as Xe,aB as je,af as Je,aC as Ye,N as Ze,w as et,O as tt,P as v,Q as st,R as ot,c as n,a as s,p as c,j as t,F as S,m,l as u,k,S as N,H as lt,J as x,t as r,T as at,U as nt,x as it,aD as dt,aE as ct,C as ce,W as ue,o as a,v as ut,z as _e,I as _t,ax as re,aF as M,$ as pe,A as rt,B as pt,al as mt,a2 as ht,a3 as gt,a0 as ft,a1 as vt,as as kt,aG as yt,aH as bt,ad as wt,am as Ct,a4 as $t,a5 as Tt,a6 as It,_ as Vt}from"./index-f62f2ff2.js";import{_ as St}from"./upload-rounded-886d7dcb.js";import{_ as Dt,a as At}from"./grid-view-outline-rounded-dfcff43e.js";import{_ as Rt}from"./Breadcrumb-ebe74d39.js";import{u as zt,a as Et}from"./tags-06583423.js";import"./vee-validate.esm-65abdaa1.js";const _=A=>(rt("data-v-c7fa60b1"),A=A(),pt(),A),Ft={class:"v-toolbar"},Mt=_(()=>s("md-ripple",null,null,-1)),Ut=_(()=>s("md-ripple",null,null,-1)),Bt=_(()=>s("md-ripple",null,null,-1)),qt=["onClick"],Nt=_(()=>s("md-ripple",null,null,-1)),xt=["onClick"],Ht=_(()=>s("md-ripple",null,null,-1)),Lt={class:"filters"},Qt=["label"],Gt={class:"form-label"},Kt=["label","selected","onClick"],Ot={class:"buttons"},Wt=["onClick"],Pt={key:0,class:"image-container",style:{"margin-bottom":"24px"}},Xt=["onClick","onContextmenu"],jt=["src"],Jt={class:"duration"},Yt={key:1,class:"table-responsive"},Zt={class:"table"},es=["checked","indeterminate"],ts=_(()=>s("th",null,"ID",-1)),ss=_(()=>s("th",null,null,-1)),os=_(()=>s("th",null,null,-1)),ls=["onClick"],as=["checked"],ns=["src","onClick"],is={class:"nowrap"},ds={class:"action-btns"},cs=["onClick"],us=_(()=>s("md-ripple",null,null,-1)),_s=["onClick"],rs=_(()=>s("md-ripple",null,null,-1)),ps=["onClick"],ms=_(()=>s("md-ripple",null,null,-1)),hs={class:"nowrap"},gs={key:0},fs={colspan:"7"},vs={class:"no-data-placeholder"},ks={key:2,class:"no-data-placeholder"},D=48,ys=xe({__name:"ImagesView",setup(A){var ae,ne;const me=He(),i=Le(),h=V([]),H=V(),{t:C}=Qe(),L=Ge(),{app:Q,urlTokenKey:U}=Ke(L),g=Oe({text:"",tags:[]}),d=We.IMAGE,G=Pe().query,$=V(parseInt(((ae=G.page)==null?void 0:ae.toString())??"1")),y=V(Xe(((ne=G.q)==null?void 0:ne.toString())??"")),T=V(""),{tags:R}=zt(d,y,g,async e=>{T.value=at(e),await nt(),be()}),{addToTags:he}=Et(d,h,R),{deleteItems:ge,deleteItem:K}=je(),{allChecked:O,realAllChecked:z,selectRealAll:fe,allCheckedAlertVisible:ve,clearSelection:E,toggleAllChecked:W,toggleItemChecked:P,toggleRow:ke,total:b,checked:X}=Ue(h),{downloadItems:ye}=Je(U,d,h,E,"images.zip"),{downloadFile:j}=mt(U),B=Ye(()=>h.value.map(e=>({src:re(e.fileId),name:M(e.path),duration:0,size:e.size,path:e.path,type:d,data:e})));function J(e){L.lightbox={sources:B.value,index:e,visible:!0}}function Y(e){ht(gt,{type:d,tags:R.value,item:{key:e.id,title:e.title,size:e.size},selected:R.value.filter(l=>e.tags.some(w=>w.id===l.id))})}const{loading:Z,load:be,refetch:q}=Ze({handle:async(e,l)=>{if(l)it(C(l),"error");else if(e){const w=[];for(const I of e.images)w.push({...I,checked:!1,fileId:dt(U.value,I.path)});h.value=w,b.value=e.imageCount}},document:ct,variables:()=>({offset:($.value-1)*D,limit:D,query:T.value}),appApi:!0});function we(){ce(i,`/images?page=${$.value}&q=${ue(y.value)}`)}et($,()=>{we()});function Ce(e){g.tags.includes(e)?ft(g.tags,l=>l.id===e.id):g.tags.push(e)}function $e(){y.value=vt(g),ee(),H.value.dismiss()}function ee(){ce(i,`/images?q=${ue(y.value)}`)}function Te(){i.imageViewType==="grid"?i.imageViewType="list":i.imageViewType="grid"}function Ie(){me.push("/files"),kt(yt,{message:C("upload_images")})}function Ve(e,l){e.preventDefault(),bt({x:e.x,y:e.y,items:[{label:C("add_to_tags"),onClick:()=>{Y(l)}},{label:C("download"),onClick:()=>{j(l.path,M(l.path).replace(" ","-"))}},{label:C("delete"),onClick:()=>{K(d,l)}}]})}const te=e=>{e.type===d&&(E(),q())},se=e=>{e.type===d&&q()},oe=e=>{e.type===d&&(E(),q())},le=()=>{b.value--};return tt(()=>{v.on("item_tags_updated",se),v.on("items_tags_updated",te),v.on("media_item_deleted",le),v.on("media_items_deleted",oe)}),st(()=>{v.off("item_tags_updated",se),v.off("items_tags_updated",te),v.off("media_item_deleted",le),v.off("media_items_deleted",oe)}),(e,l)=>{const w=Rt,I=wt,ie=Ct,de=$t,Se=Dt,De=At,Ae=St,Re=Be,ze=qe,Ee=Tt,Fe=It,Me=Ne,f=ot("tooltip");return a(),n(S,null,[s("div",Ft,[c(w,{current:()=>`${e.$t("page_title.images")} (${t(b)})`},null,8,["current"]),t(X)&&t(i).imageViewType==="list"?(a(),n(S,{key:0},[m((a(),n("button",{class:"icon-button",onClick:l[0]||(l[0]=u(o=>t(ge)(t(d),h.value,t(z),T.value),["stop"]))},[Mt,c(I)])),[[f,e.$t("delete")]]),m((a(),n("button",{class:"icon-button",onClick:l[1]||(l[1]=u(o=>t(ye)(t(z),T.value),["stop"]))},[Ut,c(ie)])),[[f,e.$t("download")]]),m((a(),n("button",{class:"icon-button",onClick:l[2]||(l[2]=u(o=>t(he)(t(z),T.value),["stop"]))},[Bt,c(de)])),[[f,e.$t("add_to_tags")]])],64)):k("",!0),m((a(),n("button",{class:"icon-button",onClick:u(Te,["stop"])},[Nt,t(i).imageViewType==="list"?(a(),N(Se,{key:0})):k("",!0),t(i).imageViewType==="grid"?(a(),N(De,{key:1})):k("",!0)],8,qt)),[[f,e.$t(t(i).imageViewType==="list"?"view_as_grid":"view_as_list")]]),m((a(),n("button",{class:"icon-button",onClick:u(Ie,["prevent"])},[Ht,c(Ae)],8,xt)),[[f,e.$t("upload")]]),c(Re,{ref_key:"searchInputRef",ref:H,modelValue:y.value,"onUpdate:modelValue":l[4]||(l[4]=o=>y.value=o),search:ee},{filters:lt(()=>[s("div",Lt,[m(s("md-outlined-text-field",{label:e.$t("keywords"),"onUpdate:modelValue":l[3]||(l[3]=o=>g.text=o),"keyup.enter":"applyAndDoSearch"},null,8,Qt),[[ut,g.text]]),s("label",Gt,r(e.$t("tags")),1),s("md-chip-set",null,[(a(!0),n(S,null,x(t(R),o=>(a(),n("md-filter-chip",{key:o.id,label:o.name,selected:g.tags.includes(o),onClick:F=>Ce(o)},null,8,Kt))),128))]),s("div",Ot,[s("md-filled-button",{onClick:u($e,["stop"])},r(e.$t("search")),9,Wt)])])]),_:1},8,["modelValue"])]),t(i).imageViewType==="grid"?(a(),n("div",Pt,[(a(!0),n(S,null,x(B.value,(o,F)=>(a(),n("div",{class:"item",onClick:p=>J(F),onContextmenu:p=>Ve(p,o.data)},[s("img",{class:"image",src:o.src+"&w=300&h=300"},null,8,jt),s("span",Jt,r(t(_e)(o.size)),1)],40,Xt))),256))])):k("",!0),c(ze,{limit:D,total:t(b),"all-checked-alert-visible":t(ve),"real-all-checked":t(z),"select-real-all":t(fe),"clear-selection":t(E)},null,8,["total","all-checked-alert-visible","real-all-checked","select-real-all","clear-selection"]),t(i).imageViewType==="list"?(a(),n("div",Yt,[s("table",Zt,[s("thead",null,[s("tr",null,[s("th",null,[s("md-checkbox",{"touch-target":"wrapper",onChange:l[5]||(l[5]=(...o)=>t(W)&&t(W)(...o)),checked:t(O),indeterminate:!t(O)&&t(X)},null,40,es)]),ts,ss,s("th",null,r(e.$t("name")),1),os,s("th",null,r(e.$t("tags")),1),s("th",null,r(e.$t("file_size")),1)])]),s("tbody",null,[(a(!0),n(S,null,x(h.value,(o,F)=>(a(),n("tr",{key:o.id,class:_t({selected:o.checked}),onClick:u(p=>t(ke)(o),["stop"])},[s("td",null,[s("md-checkbox",{"touch-target":"wrapper",onChange:l[6]||(l[6]=(...p)=>t(P)&&t(P)(...p)),checked:o.checked},null,40,as)]),s("td",null,[c(Ee,{id:o.id,raw:o},null,8,["id","raw"])]),s("td",null,[s("img",{src:t(re)(o.fileId)+"&w=300&h=300",width:"50",height:"50",onClick:u(p=>J(F),["stop"]),style:{cursor:"pointer"}},null,8,ns)]),s("td",null,r(t(M)(o.path)),1),s("td",is,[s("div",ds,[m((a(),n("button",{class:"icon-button",onClick:u(p=>t(K)(t(d),o),["stop"])},[us,c(I)],8,cs)),[[f,e.$t("delete")]]),m((a(),n("button",{class:"icon-button",onClick:u(p=>t(j)(o.path,t(M)(o.path).replace(" ","-")),["stop"])},[rs,c(ie)],8,_s)),[[f,e.$t("download")]]),m((a(),n("button",{class:"icon-button",onClick:u(p=>Y(o),["stop"])},[ms,c(de)],8,ps)),[[f,e.$t("add_to_tags")]])])]),s("td",null,[c(Fe,{tags:o.tags,type:t(d)},null,8,["tags","type"])]),s("td",hs,r(t(_e)(o.size)),1)],10,ls))),128))]),h.value.length?k("",!0):(a(),n("tfoot",gs,[s("tr",null,[s("td",fs,[s("div",vs,r(e.$t(t(pe)(t(Z),t(Q).permissions,"WRITE_EXTERNAL_STORAGE"))),1)])])]))])])):k("",!0),t(i).imageViewType==="grid"&&B.value.length===0?(a(),n("div",ks,r(e.$t(t(pe)(t(Z),t(Q).permissions,"WRITE_EXTERNAL_STORAGE"))),1)):k("",!0),t(b)>D?(a(),N(Me,{key:3,modelValue:$.value,"onUpdate:modelValue":l[7]||(l[7]=o=>$.value=o),total:t(b),limit:D},null,8,["modelValue","total"])):k("",!0)],64)}}});const Ds=Vt(ys,[["__scopeId","data-v-c7fa60b1"]]);export{Ds as default};
+import{u as Ue,_ as Be,a as qe,b as Ne}from"./list-183f8357.js";import{d as xe,aA as He,e as Le,r as V,u as Qe,f as Ge,s as Ke,K as Oe,L as We,D as Pe,M as Xe,aB as je,af as Je,aC as Ye,N as Ze,w as et,O as tt,P as v,Q as st,R as ot,c as n,a as s,p as c,j as t,F as S,m,l as u,k,S as N,H as lt,J as x,t as r,T as at,U as nt,x as it,aD as dt,aE as ct,C as ce,W as ue,o as a,v as ut,z as _e,I as _t,ax as re,aF as M,$ as pe,A as rt,B as pt,al as mt,a2 as ht,a3 as gt,a0 as ft,a1 as vt,as as kt,aG as yt,aH as bt,ad as wt,am as Ct,a4 as $t,a5 as Tt,a6 as It,_ as Vt}from"./index-0c42270c.js";import{_ as St}from"./upload-rounded-8f0af5aa.js";import{_ as Dt,a as At}from"./grid-view-outline-rounded-600c49fd.js";import{_ as Rt}from"./Breadcrumb-f52b6c6b.js";import{u as zt,a as Et}from"./tags-bf0f6db9.js";import"./vee-validate.esm-ca78f26f.js";const _=A=>(rt("data-v-c7fa60b1"),A=A(),pt(),A),Ft={class:"v-toolbar"},Mt=_(()=>s("md-ripple",null,null,-1)),Ut=_(()=>s("md-ripple",null,null,-1)),Bt=_(()=>s("md-ripple",null,null,-1)),qt=["onClick"],Nt=_(()=>s("md-ripple",null,null,-1)),xt=["onClick"],Ht=_(()=>s("md-ripple",null,null,-1)),Lt={class:"filters"},Qt=["label"],Gt={class:"form-label"},Kt=["label","selected","onClick"],Ot={class:"buttons"},Wt=["onClick"],Pt={key:0,class:"image-container",style:{"margin-bottom":"24px"}},Xt=["onClick","onContextmenu"],jt=["src"],Jt={class:"duration"},Yt={key:1,class:"table-responsive"},Zt={class:"table"},es=["checked","indeterminate"],ts=_(()=>s("th",null,"ID",-1)),ss=_(()=>s("th",null,null,-1)),os=_(()=>s("th",null,null,-1)),ls=["onClick"],as=["checked"],ns=["src","onClick"],is={class:"nowrap"},ds={class:"action-btns"},cs=["onClick"],us=_(()=>s("md-ripple",null,null,-1)),_s=["onClick"],rs=_(()=>s("md-ripple",null,null,-1)),ps=["onClick"],ms=_(()=>s("md-ripple",null,null,-1)),hs={class:"nowrap"},gs={key:0},fs={colspan:"7"},vs={class:"no-data-placeholder"},ks={key:2,class:"no-data-placeholder"},D=48,ys=xe({__name:"ImagesView",setup(A){var ae,ne;const me=He(),i=Le(),h=V([]),H=V(),{t:C}=Qe(),L=Ge(),{app:Q,urlTokenKey:U}=Ke(L),g=Oe({text:"",tags:[]}),d=We.IMAGE,G=Pe().query,$=V(parseInt(((ae=G.page)==null?void 0:ae.toString())??"1")),y=V(Xe(((ne=G.q)==null?void 0:ne.toString())??"")),T=V(""),{tags:R}=zt(d,y,g,async e=>{T.value=at(e),await nt(),be()}),{addToTags:he}=Et(d,h,R),{deleteItems:ge,deleteItem:K}=je(),{allChecked:O,realAllChecked:z,selectRealAll:fe,allCheckedAlertVisible:ve,clearSelection:E,toggleAllChecked:W,toggleItemChecked:P,toggleRow:ke,total:b,checked:X}=Ue(h),{downloadItems:ye}=Je(U,d,h,E,"images.zip"),{downloadFile:j}=mt(U),B=Ye(()=>h.value.map(e=>({src:re(e.fileId),name:M(e.path),duration:0,size:e.size,path:e.path,type:d,data:e})));function J(e){L.lightbox={sources:B.value,index:e,visible:!0}}function Y(e){ht(gt,{type:d,tags:R.value,item:{key:e.id,title:e.title,size:e.size},selected:R.value.filter(l=>e.tags.some(w=>w.id===l.id))})}const{loading:Z,load:be,refetch:q}=Ze({handle:async(e,l)=>{if(l)it(C(l),"error");else if(e){const w=[];for(const I of e.images)w.push({...I,checked:!1,fileId:dt(U.value,I.path)});h.value=w,b.value=e.imageCount}},document:ct,variables:()=>({offset:($.value-1)*D,limit:D,query:T.value}),appApi:!0});function we(){ce(i,`/images?page=${$.value}&q=${ue(y.value)}`)}et($,()=>{we()});function Ce(e){g.tags.includes(e)?ft(g.tags,l=>l.id===e.id):g.tags.push(e)}function $e(){y.value=vt(g),ee(),H.value.dismiss()}function ee(){ce(i,`/images?q=${ue(y.value)}`)}function Te(){i.imageViewType==="grid"?i.imageViewType="list":i.imageViewType="grid"}function Ie(){me.push("/files"),kt(yt,{message:C("upload_images")})}function Ve(e,l){e.preventDefault(),bt({x:e.x,y:e.y,items:[{label:C("add_to_tags"),onClick:()=>{Y(l)}},{label:C("download"),onClick:()=>{j(l.path,M(l.path).replace(" ","-"))}},{label:C("delete"),onClick:()=>{K(d,l)}}]})}const te=e=>{e.type===d&&(E(),q())},se=e=>{e.type===d&&q()},oe=e=>{e.type===d&&(E(),q())},le=()=>{b.value--};return tt(()=>{v.on("item_tags_updated",se),v.on("items_tags_updated",te),v.on("media_item_deleted",le),v.on("media_items_deleted",oe)}),st(()=>{v.off("item_tags_updated",se),v.off("items_tags_updated",te),v.off("media_item_deleted",le),v.off("media_items_deleted",oe)}),(e,l)=>{const w=Rt,I=wt,ie=Ct,de=$t,Se=Dt,De=At,Ae=St,Re=Be,ze=qe,Ee=Tt,Fe=It,Me=Ne,f=ot("tooltip");return a(),n(S,null,[s("div",Ft,[c(w,{current:()=>`${e.$t("page_title.images")} (${t(b)})`},null,8,["current"]),t(X)&&t(i).imageViewType==="list"?(a(),n(S,{key:0},[m((a(),n("button",{class:"icon-button",onClick:l[0]||(l[0]=u(o=>t(ge)(t(d),h.value,t(z),T.value),["stop"]))},[Mt,c(I)])),[[f,e.$t("delete")]]),m((a(),n("button",{class:"icon-button",onClick:l[1]||(l[1]=u(o=>t(ye)(t(z),T.value),["stop"]))},[Ut,c(ie)])),[[f,e.$t("download")]]),m((a(),n("button",{class:"icon-button",onClick:l[2]||(l[2]=u(o=>t(he)(t(z),T.value),["stop"]))},[Bt,c(de)])),[[f,e.$t("add_to_tags")]])],64)):k("",!0),m((a(),n("button",{class:"icon-button",onClick:u(Te,["stop"])},[Nt,t(i).imageViewType==="list"?(a(),N(Se,{key:0})):k("",!0),t(i).imageViewType==="grid"?(a(),N(De,{key:1})):k("",!0)],8,qt)),[[f,e.$t(t(i).imageViewType==="list"?"view_as_grid":"view_as_list")]]),m((a(),n("button",{class:"icon-button",onClick:u(Ie,["prevent"])},[Ht,c(Ae)],8,xt)),[[f,e.$t("upload")]]),c(Re,{ref_key:"searchInputRef",ref:H,modelValue:y.value,"onUpdate:modelValue":l[4]||(l[4]=o=>y.value=o),search:ee},{filters:lt(()=>[s("div",Lt,[m(s("md-outlined-text-field",{label:e.$t("keywords"),"onUpdate:modelValue":l[3]||(l[3]=o=>g.text=o),"keyup.enter":"applyAndDoSearch"},null,8,Qt),[[ut,g.text]]),s("label",Gt,r(e.$t("tags")),1),s("md-chip-set",null,[(a(!0),n(S,null,x(t(R),o=>(a(),n("md-filter-chip",{key:o.id,label:o.name,selected:g.tags.includes(o),onClick:F=>Ce(o)},null,8,Kt))),128))]),s("div",Ot,[s("md-filled-button",{onClick:u($e,["stop"])},r(e.$t("search")),9,Wt)])])]),_:1},8,["modelValue"])]),t(i).imageViewType==="grid"?(a(),n("div",Pt,[(a(!0),n(S,null,x(B.value,(o,F)=>(a(),n("div",{class:"item",onClick:p=>J(F),onContextmenu:p=>Ve(p,o.data)},[s("img",{class:"image",src:o.src+"&w=300&h=300"},null,8,jt),s("span",Jt,r(t(_e)(o.size)),1)],40,Xt))),256))])):k("",!0),c(ze,{limit:D,total:t(b),"all-checked-alert-visible":t(ve),"real-all-checked":t(z),"select-real-all":t(fe),"clear-selection":t(E)},null,8,["total","all-checked-alert-visible","real-all-checked","select-real-all","clear-selection"]),t(i).imageViewType==="list"?(a(),n("div",Yt,[s("table",Zt,[s("thead",null,[s("tr",null,[s("th",null,[s("md-checkbox",{"touch-target":"wrapper",onChange:l[5]||(l[5]=(...o)=>t(W)&&t(W)(...o)),checked:t(O),indeterminate:!t(O)&&t(X)},null,40,es)]),ts,ss,s("th",null,r(e.$t("name")),1),os,s("th",null,r(e.$t("tags")),1),s("th",null,r(e.$t("file_size")),1)])]),s("tbody",null,[(a(!0),n(S,null,x(h.value,(o,F)=>(a(),n("tr",{key:o.id,class:_t({selected:o.checked}),onClick:u(p=>t(ke)(o),["stop"])},[s("td",null,[s("md-checkbox",{"touch-target":"wrapper",onChange:l[6]||(l[6]=(...p)=>t(P)&&t(P)(...p)),checked:o.checked},null,40,as)]),s("td",null,[c(Ee,{id:o.id,raw:o},null,8,["id","raw"])]),s("td",null,[s("img",{src:t(re)(o.fileId)+"&w=300&h=300",width:"50",height:"50",onClick:u(p=>J(F),["stop"]),style:{cursor:"pointer"}},null,8,ns)]),s("td",null,r(t(M)(o.path)),1),s("td",is,[s("div",ds,[m((a(),n("button",{class:"icon-button",onClick:u(p=>t(K)(t(d),o),["stop"])},[us,c(I)],8,cs)),[[f,e.$t("delete")]]),m((a(),n("button",{class:"icon-button",onClick:u(p=>t(j)(o.path,t(M)(o.path).replace(" ","-")),["stop"])},[rs,c(ie)],8,_s)),[[f,e.$t("download")]]),m((a(),n("button",{class:"icon-button",onClick:u(p=>Y(o),["stop"])},[ms,c(de)],8,ps)),[[f,e.$t("add_to_tags")]])])]),s("td",null,[c(Fe,{tags:o.tags,type:t(d)},null,8,["tags","type"])]),s("td",hs,r(t(_e)(o.size)),1)],10,ls))),128))]),h.value.length?k("",!0):(a(),n("tfoot",gs,[s("tr",null,[s("td",fs,[s("div",vs,r(e.$t(t(pe)(t(Z),t(Q).permissions,"WRITE_EXTERNAL_STORAGE"))),1)])])]))])])):k("",!0),t(i).imageViewType==="grid"&&B.value.length===0?(a(),n("div",ks,r(e.$t(t(pe)(t(Z),t(Q).permissions,"WRITE_EXTERNAL_STORAGE"))),1)):k("",!0),t(b)>D?(a(),N(Me,{key:3,modelValue:$.value,"onUpdate:modelValue":l[7]||(l[7]=o=>$.value=o),total:t(b),limit:D},null,8,["modelValue","total"])):k("",!0)],64)}}});const Ds=Vt(ys,[["__scopeId","data-v-c7fa60b1"]]);export{Ds as default};
diff --git a/app/src/main/resources/web/assets/JsonViewerView-eed04b71.js b/app/src/main/resources/web/assets/JsonViewerView-d31927f1.js
similarity index 96%
rename from app/src/main/resources/web/assets/JsonViewerView-eed04b71.js
rename to app/src/main/resources/web/assets/JsonViewerView-d31927f1.js
index e55dbc2a..73704129 100644
--- a/app/src/main/resources/web/assets/JsonViewerView-eed04b71.js
+++ b/app/src/main/resources/web/assets/JsonViewerView-d31927f1.js
@@ -1 +1 @@
-import{br as n,d as b,r as d,O as T,P as _,Q as S,o as f,c as k,a as l,p as r,I as E,s as w,e as D,w as C,l as j,t as x,H as v,j as p,n as R,S as H,k as O,_ as A}from"./index-f62f2ff2.js";import{_ as B}from"./MonacoEditor.vuevuetypescriptsetuptruelang-87724a30.js";import{_ as J}from"./Breadcrumb-ebe74d39.js";import{g as y,M as q}from"./splitpanes.es-2b477659.js";const z=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$/,I={name:"JsonString",props:{jsonValue:{type:String,required:!0}},data(){return{expand:!0,canExtend:!1}},mounted(){this.$refs.itemRef.offsetHeight>this.$refs.holderRef.offsetHeight&&(this.canExtend=!0)},methods:{toggle(){this.expand=!this.expand}},render(){let e=this.jsonValue;const t=z.test(e);let s;return this.expand?(s={class:{"jv-item":!0,"jv-string":!0},ref:"itemRef"},t?(e=`${e}`,s.innerHTML=`"${e.toString()}"`):s.innerText=`"${e.toString()}"`):s={class:{"jv-ellipsis":!0},onClick:this.toggle,innerText:"..."},n("span",{},[this.canExtend&&n("span",{class:{"jv-toggle":!0,open:this.expand},onClick:this.toggle}),n("span",{class:{"jv-holder-node":!0},ref:"holderRef"}),n("span",s)])}},M={props:{jsonValue:{type:Object,default:null}},setup(e){return()=>n("span",{class:{"jv-item":!0,"jv-undefined":!0},innerText:e.jsonValue===null?"null":"undefined"})}},L={props:{jsonValue:{type:Number,required:!0}},setup(e){const t=Number.isInteger(e.jsonValue);return()=>n("span",{class:{"jv-item":!0,"jv-number":!0,"jv-number-integer":t,"jv-number-float":!t},innerText:e.jsonValue.toString()})}},P={props:{jsonValue:Boolean},setup(e){return()=>n("span",{class:{"jv-item":!0,"jv-boolean":!0},innerText:e.jsonValue.toString()})}},Z={name:"JsonObject",props:{jsonValue:{type:Object,required:!0},expandDepth:{type:Number,default:1},keyName:{type:String,default:""},depth:{type:Number,default:0},expand:Boolean},data(){return{value:{}}},computed:{ordered(){const e={};return Object.keys(this.value).sort().forEach(t=>{e[t]=this.value[t]}),e}},watch:{jsonValue(e){this.setValue(e)}},mounted(){this.setValue(this.jsonValue)},methods:{setValue(e){setTimeout(()=>{this.value=e},0)},toggle(){this.$emit("update:expand",!this.expand),this.dispatchEvent()},dispatchEvent(){try{this.$el.dispatchEvent(new Event("resized"))}catch{}}},render(){const e=[];this.keyName||e.push(n("span",{class:{"jv-toggle":!0,open:!!this.expand},onClick:this.toggle})),e.push(n("span",{class:{"jv-item":!0,"jv-object":!0},innerText:"{"}));const t=Object.keys(this.value).length;if(t>0&&e.push(n("span",{class:{"jv-ellipsis":!0},onClick:this.toggle,innerText:t===1?"1 prop":`${t} props`})),this.expand){for(const s in this.ordered)if(this.ordered.hasOwnProperty(s)){const a=this.ordered[s];e.push(n(m,{key:s,style:{display:this.expand?void 0:"none"},keyName:s,expandDepth:this.expandDepth,depth:this.depth+1,value:a}))}}return e.push(n("span",{class:{"jv-item":!0,"jv-object":!0},innerText:"}"})),n("span",e)}},F={name:"JsonArray",props:{jsonValue:{type:Array,required:!0},expandDepth:{type:Number,default:1},keyName:{type:String,default:""},depth:{type:Number,default:0},expand:Boolean},data(){return{value:[]}},watch:{jsonValue(e){this.setValue(e)}},mounted(){this.setValue(this.jsonValue)},methods:{setValue(e,t=0){t===0&&(this.value=[]),setTimeout(()=>{e.length>t&&(this.value.push(e[t]),this.setValue(e,t+1))},0)},toggle(){this.$emit("update:expand",!this.expand);try{this.$el.dispatchEvent(new Event("resized"))}catch{}}},render(){const e=[];this.keyName||e.push(n("span",{class:{"jv-toggle":!0,open:!!this.expand},onClick:this.toggle})),e.push(n("span",{class:{"jv-item":!0,"jv-array":!0},innerText:"["}));const t=this.value.length;return t>0&&e.push(n("span",{class:{"jv-ellipsis":!0},onClick:this.toggle,innerText:t==1?"1 item":`${t} items`})),this.expand&&this.value.forEach((s,a)=>{e.push(n(m,{key:a,style:{display:this.expand?void 0:"none"},expandDepth:this.expandDepth,depth:this.depth+1,value:s}))}),e.push(n("span",{class:{"jv-item":!0,"jv-array":!0},innerText:"]"})),n("span",e)}},K={props:{jsonValue:{type:Function,required:!0}},setup(e){return()=>n("span",{class:{"jv-item":!0,"jv-function":!0},attrs:{title:e.jsonValue.toString()},innerHTML:"<function>"})}},U={props:{jsonValue:{type:Date,required:!0}},setup(e){const t=e.jsonValue;return()=>n("span",{class:{"jv-item":!0,"jv-string":!0},innerText:`"${t.toLocaleString()}"`})}},G=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$/,Q={name:"JsonString",props:{jsonValue:{type:RegExp,required:!0}},data(){return{expand:!0,canExtend:!1}},mounted(){this.$refs.itemRef.offsetHeight>this.$refs.holderRef.offsetHeight&&(this.canExtend=!0)},methods:{toggle(){this.expand=!this.expand}},render(){let e=this.jsonValue;const t=G.test(e);let s;return this.expand?(s={class:{"jv-item":!0,"jv-string":!0},ref:"itemRef"},t?(e=`${e}`,s.innerHTML=`${e.toString()}`):s.innerText=`${e.toString()}`):s={class:{"jv-ellipsis":!0},onClick:this.toggle,innerText:"..."},n("span",{},[this.canExtend&&n("span",{class:{"jv-toggle":!0,open:this.expand},onClick:this.toggle}),n("span",{class:{"jv-holder-node":!0},ref:"holderRef"}),n("span",s)])}};const m={name:"JsonBox",props:{value:{type:[Object,Array,String,Number,Boolean,Function,Date],default:null},expandDepth:{type:Number,default:1},keyName:{type:String,default:""},depth:{type:Number,default:0}},data(){return{expand:!0}},mounted(){this.expand=!(this.depth>=this.expandDepth)},methods:{toggle(){this.expand=!this.expand;try{this.$el.dispatchEvent(new Event("resized"))}catch{}}},render(){let e;this.value===null||this.value===void 0?e=M:Array.isArray(this.value)?e=F:Object.prototype.toString.call(this.value)==="[object Date]"?e=U:typeof this.value=="object"?e=Z:typeof this.value=="number"?e=L:typeof this.value=="string"?e=I:typeof this.value=="boolean"?e=P:typeof this.value=="function"&&(e=K),this.value&&this.value.constructor===RegExp&&(e=Q);let t=!1;if(this.keyName&&this.value){if(Array.isArray(this.value)&&this.value.length)t=!0;else if(typeof this.value=="object"){const a=Object.prototype.toString.call(this.value);!["[]","[object Date]"].includes(a)&&Object.keys(this.value).length&&(t=!0)}}const s=[];return t&&s.push(n("span",{class:{"jv-toggle":!0,open:this.expand},onClick:this.toggle})),this.keyName&&s.push(n("span",{class:{"jv-key":!0},onClick:()=>{console.log(this.keyName)},innerText:`${this.keyName}:`})),s.push(n(e,{class:{"jv-push":!0},jsonValue:this.value,keyName:this.keyName,depth:this.depth,expand:this.expand,expandDepth:this.expandDepth,"onUpdate:expand":a=>{this.expand=a}})),n("div",{class:{"jv-node":!0,"jv-key-node":!!this.keyName&&!t,toggle:t}},s)}},W={class:"jv-code"},X=b({__name:"json-viewer",props:{value:{type:[Object,Array,String,Number,Boolean,Function],required:!0},expandDepth:{type:Number,default:1}},setup(e){const t=d("light"),s=()=>{t.value=document.documentElement.classList[0]==="dark"?"dark":"light"};return T(()=>{_.on("color_mode_changed",s)}),S(()=>{_.off("color_mode_changed",s)}),(a,h)=>{const u=m;return f(),k("div",{class:E(["jv-container",t.value])},[l("div",W,[r(u,{value:e.value,"expand-depth":e.expandDepth},null,8,["value","expand-depth"])])],2)}}});const Y={class:"page-container"},ee={class:"main"},te={class:"v-toolbar"},se=b({__name:"JsonViewerView",setup(e){const{json:t}=w(D()),s=d(null),a=d(1),h=d(1),u=()=>{try{const o=JSON.parse(t.value);s.value=o}catch(o){console.error(o)}};C(t,u),u();function g(o){o?a.value=1e3:a.value=1,h.value++}return(o,i)=>{const V=J,$=B,N=X;return f(),k("div",Y,[l("div",ee,[l("div",te,[r(V,{current:()=>o.$t("json_viewer")},null,8,["current"]),l("md-outlined-button",{onClick:i[0]||(i[0]=j(c=>g(!0),["prevent"]))},x(o.$t("expand_all")),1),l("md-outlined-button",{onClick:i[1]||(i[1]=j(c=>g(!1),["prevent"]))},x(o.$t("collapse_all")),1)]),r(p(q),{class:"panel-container"},{default:v(()=>[r(p(y),null,{default:v(()=>[r($,{language:"json",modelValue:p(t),"onUpdate:modelValue":i[2]||(i[2]=c=>R(t)?t.value=c:null)},null,8,["modelValue"])]),_:1}),r(p(y),null,{default:v(()=>[s.value?(f(),H(N,{value:s.value,"expand-depth":a.value,key:h.value},null,8,["value","expand-depth"])):O("",!0)]),_:1})]),_:1})])])}}});const re=A(se,[["__scopeId","data-v-862c219a"]]);export{re as default};
+import{br as n,d as b,r as d,O as T,P as _,Q as S,o as f,c as k,a as l,p as r,I as E,s as w,e as D,w as C,l as j,t as x,H as v,j as p,n as R,S as H,k as O,_ as A}from"./index-0c42270c.js";import{_ as B}from"./MonacoEditor.vuevuetypescriptsetuptruelang-aab104b3.js";import{_ as J}from"./Breadcrumb-f52b6c6b.js";import{g as y,M as q}from"./splitpanes.es-7e8a6fea.js";const z=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$/,I={name:"JsonString",props:{jsonValue:{type:String,required:!0}},data(){return{expand:!0,canExtend:!1}},mounted(){this.$refs.itemRef.offsetHeight>this.$refs.holderRef.offsetHeight&&(this.canExtend=!0)},methods:{toggle(){this.expand=!this.expand}},render(){let e=this.jsonValue;const t=z.test(e);let s;return this.expand?(s={class:{"jv-item":!0,"jv-string":!0},ref:"itemRef"},t?(e=`${e}`,s.innerHTML=`"${e.toString()}"`):s.innerText=`"${e.toString()}"`):s={class:{"jv-ellipsis":!0},onClick:this.toggle,innerText:"..."},n("span",{},[this.canExtend&&n("span",{class:{"jv-toggle":!0,open:this.expand},onClick:this.toggle}),n("span",{class:{"jv-holder-node":!0},ref:"holderRef"}),n("span",s)])}},M={props:{jsonValue:{type:Object,default:null}},setup(e){return()=>n("span",{class:{"jv-item":!0,"jv-undefined":!0},innerText:e.jsonValue===null?"null":"undefined"})}},L={props:{jsonValue:{type:Number,required:!0}},setup(e){const t=Number.isInteger(e.jsonValue);return()=>n("span",{class:{"jv-item":!0,"jv-number":!0,"jv-number-integer":t,"jv-number-float":!t},innerText:e.jsonValue.toString()})}},P={props:{jsonValue:Boolean},setup(e){return()=>n("span",{class:{"jv-item":!0,"jv-boolean":!0},innerText:e.jsonValue.toString()})}},Z={name:"JsonObject",props:{jsonValue:{type:Object,required:!0},expandDepth:{type:Number,default:1},keyName:{type:String,default:""},depth:{type:Number,default:0},expand:Boolean},data(){return{value:{}}},computed:{ordered(){const e={};return Object.keys(this.value).sort().forEach(t=>{e[t]=this.value[t]}),e}},watch:{jsonValue(e){this.setValue(e)}},mounted(){this.setValue(this.jsonValue)},methods:{setValue(e){setTimeout(()=>{this.value=e},0)},toggle(){this.$emit("update:expand",!this.expand),this.dispatchEvent()},dispatchEvent(){try{this.$el.dispatchEvent(new Event("resized"))}catch{}}},render(){const e=[];this.keyName||e.push(n("span",{class:{"jv-toggle":!0,open:!!this.expand},onClick:this.toggle})),e.push(n("span",{class:{"jv-item":!0,"jv-object":!0},innerText:"{"}));const t=Object.keys(this.value).length;if(t>0&&e.push(n("span",{class:{"jv-ellipsis":!0},onClick:this.toggle,innerText:t===1?"1 prop":`${t} props`})),this.expand){for(const s in this.ordered)if(this.ordered.hasOwnProperty(s)){const a=this.ordered[s];e.push(n(m,{key:s,style:{display:this.expand?void 0:"none"},keyName:s,expandDepth:this.expandDepth,depth:this.depth+1,value:a}))}}return e.push(n("span",{class:{"jv-item":!0,"jv-object":!0},innerText:"}"})),n("span",e)}},F={name:"JsonArray",props:{jsonValue:{type:Array,required:!0},expandDepth:{type:Number,default:1},keyName:{type:String,default:""},depth:{type:Number,default:0},expand:Boolean},data(){return{value:[]}},watch:{jsonValue(e){this.setValue(e)}},mounted(){this.setValue(this.jsonValue)},methods:{setValue(e,t=0){t===0&&(this.value=[]),setTimeout(()=>{e.length>t&&(this.value.push(e[t]),this.setValue(e,t+1))},0)},toggle(){this.$emit("update:expand",!this.expand);try{this.$el.dispatchEvent(new Event("resized"))}catch{}}},render(){const e=[];this.keyName||e.push(n("span",{class:{"jv-toggle":!0,open:!!this.expand},onClick:this.toggle})),e.push(n("span",{class:{"jv-item":!0,"jv-array":!0},innerText:"["}));const t=this.value.length;return t>0&&e.push(n("span",{class:{"jv-ellipsis":!0},onClick:this.toggle,innerText:t==1?"1 item":`${t} items`})),this.expand&&this.value.forEach((s,a)=>{e.push(n(m,{key:a,style:{display:this.expand?void 0:"none"},expandDepth:this.expandDepth,depth:this.depth+1,value:s}))}),e.push(n("span",{class:{"jv-item":!0,"jv-array":!0},innerText:"]"})),n("span",e)}},K={props:{jsonValue:{type:Function,required:!0}},setup(e){return()=>n("span",{class:{"jv-item":!0,"jv-function":!0},attrs:{title:e.jsonValue.toString()},innerHTML:"<function>"})}},U={props:{jsonValue:{type:Date,required:!0}},setup(e){const t=e.jsonValue;return()=>n("span",{class:{"jv-item":!0,"jv-string":!0},innerText:`"${t.toLocaleString()}"`})}},G=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$/,Q={name:"JsonString",props:{jsonValue:{type:RegExp,required:!0}},data(){return{expand:!0,canExtend:!1}},mounted(){this.$refs.itemRef.offsetHeight>this.$refs.holderRef.offsetHeight&&(this.canExtend=!0)},methods:{toggle(){this.expand=!this.expand}},render(){let e=this.jsonValue;const t=G.test(e);let s;return this.expand?(s={class:{"jv-item":!0,"jv-string":!0},ref:"itemRef"},t?(e=`${e}`,s.innerHTML=`${e.toString()}`):s.innerText=`${e.toString()}`):s={class:{"jv-ellipsis":!0},onClick:this.toggle,innerText:"..."},n("span",{},[this.canExtend&&n("span",{class:{"jv-toggle":!0,open:this.expand},onClick:this.toggle}),n("span",{class:{"jv-holder-node":!0},ref:"holderRef"}),n("span",s)])}};const m={name:"JsonBox",props:{value:{type:[Object,Array,String,Number,Boolean,Function,Date],default:null},expandDepth:{type:Number,default:1},keyName:{type:String,default:""},depth:{type:Number,default:0}},data(){return{expand:!0}},mounted(){this.expand=!(this.depth>=this.expandDepth)},methods:{toggle(){this.expand=!this.expand;try{this.$el.dispatchEvent(new Event("resized"))}catch{}}},render(){let e;this.value===null||this.value===void 0?e=M:Array.isArray(this.value)?e=F:Object.prototype.toString.call(this.value)==="[object Date]"?e=U:typeof this.value=="object"?e=Z:typeof this.value=="number"?e=L:typeof this.value=="string"?e=I:typeof this.value=="boolean"?e=P:typeof this.value=="function"&&(e=K),this.value&&this.value.constructor===RegExp&&(e=Q);let t=!1;if(this.keyName&&this.value){if(Array.isArray(this.value)&&this.value.length)t=!0;else if(typeof this.value=="object"){const a=Object.prototype.toString.call(this.value);!["[]","[object Date]"].includes(a)&&Object.keys(this.value).length&&(t=!0)}}const s=[];return t&&s.push(n("span",{class:{"jv-toggle":!0,open:this.expand},onClick:this.toggle})),this.keyName&&s.push(n("span",{class:{"jv-key":!0},onClick:()=>{console.log(this.keyName)},innerText:`${this.keyName}:`})),s.push(n(e,{class:{"jv-push":!0},jsonValue:this.value,keyName:this.keyName,depth:this.depth,expand:this.expand,expandDepth:this.expandDepth,"onUpdate:expand":a=>{this.expand=a}})),n("div",{class:{"jv-node":!0,"jv-key-node":!!this.keyName&&!t,toggle:t}},s)}},W={class:"jv-code"},X=b({__name:"json-viewer",props:{value:{type:[Object,Array,String,Number,Boolean,Function],required:!0},expandDepth:{type:Number,default:1}},setup(e){const t=d("light"),s=()=>{t.value=document.documentElement.classList[0]==="dark"?"dark":"light"};return T(()=>{_.on("color_mode_changed",s)}),S(()=>{_.off("color_mode_changed",s)}),(a,h)=>{const u=m;return f(),k("div",{class:E(["jv-container",t.value])},[l("div",W,[r(u,{value:e.value,"expand-depth":e.expandDepth},null,8,["value","expand-depth"])])],2)}}});const Y={class:"page-container"},ee={class:"main"},te={class:"v-toolbar"},se=b({__name:"JsonViewerView",setup(e){const{json:t}=w(D()),s=d(null),a=d(1),h=d(1),u=()=>{try{const o=JSON.parse(t.value);s.value=o}catch(o){console.error(o)}};C(t,u),u();function g(o){o?a.value=1e3:a.value=1,h.value++}return(o,i)=>{const V=J,$=B,N=X;return f(),k("div",Y,[l("div",ee,[l("div",te,[r(V,{current:()=>o.$t("json_viewer")},null,8,["current"]),l("md-outlined-button",{onClick:i[0]||(i[0]=j(c=>g(!0),["prevent"]))},x(o.$t("expand_all")),1),l("md-outlined-button",{onClick:i[1]||(i[1]=j(c=>g(!1),["prevent"]))},x(o.$t("collapse_all")),1)]),r(p(q),{class:"panel-container"},{default:v(()=>[r(p(y),null,{default:v(()=>[r($,{language:"json",modelValue:p(t),"onUpdate:modelValue":i[2]||(i[2]=c=>R(t)?t.value=c:null)},null,8,["modelValue"])]),_:1}),r(p(y),null,{default:v(()=>[s.value?(f(),H(N,{value:s.value,"expand-depth":a.value,key:h.value},null,8,["value","expand-depth"])):O("",!0)]),_:1})]),_:1})])])}}});const re=A(se,[["__scopeId","data-v-862c219a"]]);export{re as default};
diff --git a/app/src/main/resources/web/assets/LoginView-c629b4b1.js b/app/src/main/resources/web/assets/LoginView-49618539.js
similarity index 98%
rename from app/src/main/resources/web/assets/LoginView-c629b4b1.js
rename to app/src/main/resources/web/assets/LoginView-49618539.js
index be3840ec..c2a28407 100644
--- a/app/src/main/resources/web/assets/LoginView-c629b4b1.js
+++ b/app/src/main/resources/web/assets/LoginView-49618539.js
@@ -1 +1 @@
-import{d as J,r as h,u as G,an as Y,cn as Q,co as X,cp as Z,cq as ee,cr as se,cs as ne,ct as te,aY as oe,cu as N,c as A,a as p,p as re,t as g,m as E,aV as x,l as ie,j as d,n as ae,ap as le,v as ue,k as $,h as ce,F as de,cv as me,o as T,cw as fe,_ as we}from"./index-f62f2ff2.js";import{u as ve,a as be}from"./vee-validate.esm-65abdaa1.js";function M(n){let t=n;if(typeof t>"u"){if(typeof navigator>"u"||!navigator)return"";t=navigator.userAgent||""}return t.toLowerCase()}function L(n,t){try{return new RegExp(n,"g").exec(t)}catch{return null}}function W(){if(typeof navigator>"u"||!navigator||!navigator.userAgentData)return!1;const t=navigator.userAgentData.brands;return!!(t&&t.length)}function pe(n,t){const o=L(`(${n})((?:\\/|\\s|:)([0-9|\\.|_]+))`,t);return o?o[3]:""}function I(n){return n.replace(/_/g,".")}function V(n,t){let o=null,e="-1";return n.some(r=>{const a=L(`(${r.test})((?:\\/|\\s|:)([0-9|\\.|_]+))?`,t);return!a||r.brand?!1:(o=r,e=a[3]||"-1",r.versionAlias?e=r.versionAlias:r.versionTest&&(e=pe(r.versionTest.toLowerCase(),t)||e),e=I(e),!0)}),{preset:o,version:e}}function _(n,t){const o={brand:"",version:"-1"};return n.some(e=>{const r=D(t,e);return r?(o.brand=e.id,o.version=e.versionAlias||r.version,o.version!=="-1"):!1}),o}function D(n,t){return n.find(o=>L(`${t.test}`,o.brand.toLowerCase()))}const P=[{test:"phantomjs",id:"phantomjs"},{test:"whale",id:"whale"},{test:"edgios|edge|edg",id:"edge"},{test:"msie|trident|windows phone",id:"ie",versionTest:"iemobile|msie|rv"},{test:"miuibrowser",id:"miui browser"},{test:"samsungbrowser",id:"samsung internet"},{test:"samsung",id:"samsung internet",versionTest:"version"},{test:"chrome|crios",id:"chrome"},{test:"firefox|fxios",id:"firefox"},{test:"android",id:"android browser",versionTest:"version"},{test:"safari|iphone|ipad|ipod",id:"safari",versionTest:"version"}],F=[{test:"(?=.*applewebkit/(53[0-7]|5[0-2]|[0-4]))(?=.*\\schrome)",id:"chrome",versionTest:"chrome"},{test:"chromium",id:"chrome"},{test:"whale",id:"chrome",versionAlias:"-1",brand:!0}],R=[{test:"applewebkit",id:"webkit",versionTest:"applewebkit|safari"}],O=[{test:"(?=(iphone|ipad))(?!(.*version))",id:"webview"},{test:"(?=(android|iphone|ipad))(?=.*(naver|daum|; wv))",id:"webview"},{test:"webview",id:"webview"}],U=[{test:"windows phone",id:"windows phone"},{test:"windows 2000",id:"window",versionAlias:"5.0"},{test:"windows nt",id:"window"},{test:"win32|windows",id:"window"},{test:"iphone|ipad|ipod",id:"ios",versionTest:"iphone os|cpu os"},{test:"macos|macintel|mac os x",id:"mac"},{test:"android|linux armv81",id:"android"},{test:"tizen",id:"tizen"},{test:"webos|web0s",id:"webos"}];function H(n){return!!V(O,n).preset}function ge(n){const t=M(n),o=!!/mobi/g.exec(t),e={name:"unknown",version:"-1",majorVersion:-1,webview:H(t),chromium:!1,chromiumVersion:"-1",webkit:!1,webkitVersion:"-1"},r={name:"unknown",version:"-1",majorVersion:-1},{preset:a,version:w}=V(P,t),{preset:s,version:l}=V(U,t),b=V(F,t);if(e.chromium=!!b.preset,e.chromiumVersion=b.version,!e.chromium){const m=V(R,t);e.webkit=!!m.preset,e.webkitVersion=m.version}return s&&(r.name=s.id,r.version=l,r.majorVersion=parseInt(l,10)),a&&(e.name=a.id,e.version=w,e.webview&&r.name==="ios"&&e.name!=="safari"&&(e.webview=!1)),e.majorVersion=parseInt(e.version,10),{browser:e,os:r,isMobile:o,isHints:!1}}function K(n){const t=navigator.userAgentData,o=[...t.brands],e=n&&n.fullVersionList,r=t.mobile||!1,a=o[0],w=(n&&n.platform||t.platform||navigator.platform).toLowerCase(),s={name:a.brand,version:a.version,majorVersion:-1,webkit:!1,webkitVersion:"-1",chromium:!1,chromiumVersion:"-1",webview:!!_(O,o).brand||H(M())},l={name:"unknown",version:"-1",majorVersion:-1};s.webkit=!s.chromium&&R.some(i=>D(o,i));const b=_(F,o);if(s.chromium=!!b.brand,s.chromiumVersion=b.version,!s.chromium){const i=_(R,o);s.webkit=!!i.brand,s.webkitVersion=i.version}const m=U.find(i=>new RegExp(`${i.test}`,"g").exec(w));if(l.name=m?m.id:"",n&&(l.version=n.platformVersion),e&&e.length){const i=_(P,e);s.name=i.brand||s.name,s.version=i.version||s.version}else{const i=_(P,o);s.name=i.brand||s.name,s.version=i.brand&&n?n.uaFullVersion:i.version}return s.webkit&&(l.name=r?"ios":"mac"),l.name==="ios"&&s.webview&&(s.version="-1"),l.version=I(l.version),s.version=I(s.version),l.majorVersion=parseInt(l.version,10),s.majorVersion=parseInt(s.version,10),{browser:s,os:l,isMobile:r,isHints:!0}}async function he(){if(W()){const n=await navigator.userAgentData.getHighEntropyValues(["architecture","model","platform","platformVersion","uaFullVersion","fullVersionList"]);return K(n)}return _e()}function _e(n){return typeof n>"u"&&W()?K():ge(n)}const Ve={class:"header"},ye={class:"login-block"},ke=["label","error","error-text"],Se=["disabled"],Ae={key:0,class:"tips"},Ee=J({__name:"LoginView",setup(n){const{handleSubmit:t,isSubmitting:o}=ve(),e=h(!1),r=h(!0),a=h(!1),w=h("");let s;const l=window.location.protocol==="http:"?!1:!window.navigator.userAgentData,{t:b}=G(),{value:m,errorMessage:i}=be("password",Y().required()),B=h(!1);async function q(){const c=await fetch(`${N()}/init`,{method:"POST",headers:me()});if(c.status===403){e.value=!0,r.value=!0,w.value="web_access_disabled";return}r.value=!1;const f=await c.text();f?(m.value=f,B.value=!1):B.value=!0}q();const y=t(async()=>{const c=localStorage.getItem("client_id");s=new WebSocket(`${Q()}?cid=${c}&auth=1`);const f=m.value??"",k=X(f),v=Z(k);w.value="",e.value=!1,s.onopen=async()=>{o.value=!0;const u=await he(),S=ee(v,JSON.stringify({password:k,browserName:u.browser.name,browserVersion:u.browser.version,osName:u.os.name,osVersion:u.os.version,isMobile:u.isMobile}));s.send(se(S))},s.onmessage=async u=>{var C;const S=ne(v,te(await u.data.arrayBuffer())),j=JSON.parse(S);j.status==="PENDING"?a.value=!0:(localStorage.setItem("auth_token",j.token),s.close(),window.location.href=((C=oe.currentRoute.value.query.redirect)==null?void 0:C.toString())??"/")},s.onclose=async u=>{if(!(u.reason==="abort"||u.reason==="OK")){if(o.value=!1,e.value=!0,a.value=!1,!u.reason&&(await fetch(`${N()}/health_check`)).status===200){w.value="failed_connect_ws";return}w.value=`login.${u.reason?u.reason:"failed"}`}},window.setTimeout(function(){s.readyState!==1&&s.close(3001,"timeout")},2e3)});function z(){a.value=!1,e.value=!1,o.value=!1,s.close(3001,"abort")}return(c,f)=>{const k=fe;return T(),A(de,null,[p("header",Ve,[re(k,{"logged-in":!1})]),p("h1",null,g(c.$t("app_name")),1),p("div",ye,[E(p("form",{onSubmit:f[2]||(f[2]=ie((...v)=>d(y)&&d(y)(...v),["prevent"]))},[E(p("div",{class:"alert alert-danger",role:"alert"},g(w.value?c.$t(w.value):""),513),[[x,e.value]]),B.value?E((T(),A("md-outlined-text-field",{key:0,label:d(b)("password"),"onUpdate:modelValue":f[0]||(f[0]=v=>ae(m)?m.value=v:null),onKeydown:f[1]||(f[1]=le((...v)=>d(y)&&d(y)(...v),["enter"])),type:"password",class:"form-control",error:d(i),"error-text":d(i)?c.$t(d(i)):""},null,40,ke)),[[ue,d(m)]]):$("",!0),r.value?$("",!0):(T(),A("md-filled-button",{key:1,disabled:d(o)},g(c.$t(d(o)?"logging_in":"log_in")),9,Se))],544),[[x,!a.value]]),E(p("div",null,[ce(g(c.$t("login.to_continue"))+" ",1),p("md-outlined-button",{onClick:z},g(c.$t("cancel")),1)],512),[[x,a.value]])]),d(l)?(T(),A("div",Ae,g(c.$t("browser_warning")),1)):$("",!0)],64)}}});const xe=we(Ee,[["__scopeId","data-v-da05a7d0"]]);export{xe as default};
+import{d as J,r as h,u as G,an as Y,cn as Q,co as X,cp as Z,cq as ee,cr as se,cs as ne,ct as te,aY as oe,cu as N,c as A,a as p,p as re,t as g,m as E,aV as x,l as ie,j as d,n as ae,ap as le,v as ue,k as $,h as ce,F as de,cv as me,o as T,cw as fe,_ as we}from"./index-0c42270c.js";import{u as ve,a as be}from"./vee-validate.esm-ca78f26f.js";function M(n){let t=n;if(typeof t>"u"){if(typeof navigator>"u"||!navigator)return"";t=navigator.userAgent||""}return t.toLowerCase()}function L(n,t){try{return new RegExp(n,"g").exec(t)}catch{return null}}function W(){if(typeof navigator>"u"||!navigator||!navigator.userAgentData)return!1;const t=navigator.userAgentData.brands;return!!(t&&t.length)}function pe(n,t){const o=L(`(${n})((?:\\/|\\s|:)([0-9|\\.|_]+))`,t);return o?o[3]:""}function I(n){return n.replace(/_/g,".")}function V(n,t){let o=null,e="-1";return n.some(r=>{const a=L(`(${r.test})((?:\\/|\\s|:)([0-9|\\.|_]+))?`,t);return!a||r.brand?!1:(o=r,e=a[3]||"-1",r.versionAlias?e=r.versionAlias:r.versionTest&&(e=pe(r.versionTest.toLowerCase(),t)||e),e=I(e),!0)}),{preset:o,version:e}}function _(n,t){const o={brand:"",version:"-1"};return n.some(e=>{const r=D(t,e);return r?(o.brand=e.id,o.version=e.versionAlias||r.version,o.version!=="-1"):!1}),o}function D(n,t){return n.find(o=>L(`${t.test}`,o.brand.toLowerCase()))}const P=[{test:"phantomjs",id:"phantomjs"},{test:"whale",id:"whale"},{test:"edgios|edge|edg",id:"edge"},{test:"msie|trident|windows phone",id:"ie",versionTest:"iemobile|msie|rv"},{test:"miuibrowser",id:"miui browser"},{test:"samsungbrowser",id:"samsung internet"},{test:"samsung",id:"samsung internet",versionTest:"version"},{test:"chrome|crios",id:"chrome"},{test:"firefox|fxios",id:"firefox"},{test:"android",id:"android browser",versionTest:"version"},{test:"safari|iphone|ipad|ipod",id:"safari",versionTest:"version"}],F=[{test:"(?=.*applewebkit/(53[0-7]|5[0-2]|[0-4]))(?=.*\\schrome)",id:"chrome",versionTest:"chrome"},{test:"chromium",id:"chrome"},{test:"whale",id:"chrome",versionAlias:"-1",brand:!0}],R=[{test:"applewebkit",id:"webkit",versionTest:"applewebkit|safari"}],O=[{test:"(?=(iphone|ipad))(?!(.*version))",id:"webview"},{test:"(?=(android|iphone|ipad))(?=.*(naver|daum|; wv))",id:"webview"},{test:"webview",id:"webview"}],U=[{test:"windows phone",id:"windows phone"},{test:"windows 2000",id:"window",versionAlias:"5.0"},{test:"windows nt",id:"window"},{test:"win32|windows",id:"window"},{test:"iphone|ipad|ipod",id:"ios",versionTest:"iphone os|cpu os"},{test:"macos|macintel|mac os x",id:"mac"},{test:"android|linux armv81",id:"android"},{test:"tizen",id:"tizen"},{test:"webos|web0s",id:"webos"}];function H(n){return!!V(O,n).preset}function ge(n){const t=M(n),o=!!/mobi/g.exec(t),e={name:"unknown",version:"-1",majorVersion:-1,webview:H(t),chromium:!1,chromiumVersion:"-1",webkit:!1,webkitVersion:"-1"},r={name:"unknown",version:"-1",majorVersion:-1},{preset:a,version:w}=V(P,t),{preset:s,version:l}=V(U,t),b=V(F,t);if(e.chromium=!!b.preset,e.chromiumVersion=b.version,!e.chromium){const m=V(R,t);e.webkit=!!m.preset,e.webkitVersion=m.version}return s&&(r.name=s.id,r.version=l,r.majorVersion=parseInt(l,10)),a&&(e.name=a.id,e.version=w,e.webview&&r.name==="ios"&&e.name!=="safari"&&(e.webview=!1)),e.majorVersion=parseInt(e.version,10),{browser:e,os:r,isMobile:o,isHints:!1}}function K(n){const t=navigator.userAgentData,o=[...t.brands],e=n&&n.fullVersionList,r=t.mobile||!1,a=o[0],w=(n&&n.platform||t.platform||navigator.platform).toLowerCase(),s={name:a.brand,version:a.version,majorVersion:-1,webkit:!1,webkitVersion:"-1",chromium:!1,chromiumVersion:"-1",webview:!!_(O,o).brand||H(M())},l={name:"unknown",version:"-1",majorVersion:-1};s.webkit=!s.chromium&&R.some(i=>D(o,i));const b=_(F,o);if(s.chromium=!!b.brand,s.chromiumVersion=b.version,!s.chromium){const i=_(R,o);s.webkit=!!i.brand,s.webkitVersion=i.version}const m=U.find(i=>new RegExp(`${i.test}`,"g").exec(w));if(l.name=m?m.id:"",n&&(l.version=n.platformVersion),e&&e.length){const i=_(P,e);s.name=i.brand||s.name,s.version=i.version||s.version}else{const i=_(P,o);s.name=i.brand||s.name,s.version=i.brand&&n?n.uaFullVersion:i.version}return s.webkit&&(l.name=r?"ios":"mac"),l.name==="ios"&&s.webview&&(s.version="-1"),l.version=I(l.version),s.version=I(s.version),l.majorVersion=parseInt(l.version,10),s.majorVersion=parseInt(s.version,10),{browser:s,os:l,isMobile:r,isHints:!0}}async function he(){if(W()){const n=await navigator.userAgentData.getHighEntropyValues(["architecture","model","platform","platformVersion","uaFullVersion","fullVersionList"]);return K(n)}return _e()}function _e(n){return typeof n>"u"&&W()?K():ge(n)}const Ve={class:"header"},ye={class:"login-block"},ke=["label","error","error-text"],Se=["disabled"],Ae={key:0,class:"tips"},Ee=J({__name:"LoginView",setup(n){const{handleSubmit:t,isSubmitting:o}=ve(),e=h(!1),r=h(!0),a=h(!1),w=h("");let s;const l=window.location.protocol==="http:"?!1:!window.navigator.userAgentData,{t:b}=G(),{value:m,errorMessage:i}=be("password",Y().required()),B=h(!1);async function q(){const c=await fetch(`${N()}/init`,{method:"POST",headers:me()});if(c.status===403){e.value=!0,r.value=!0,w.value="web_access_disabled";return}r.value=!1;const f=await c.text();f?(m.value=f,B.value=!1):B.value=!0}q();const y=t(async()=>{const c=localStorage.getItem("client_id");s=new WebSocket(`${Q()}?cid=${c}&auth=1`);const f=m.value??"",k=X(f),v=Z(k);w.value="",e.value=!1,s.onopen=async()=>{o.value=!0;const u=await he(),S=ee(v,JSON.stringify({password:k,browserName:u.browser.name,browserVersion:u.browser.version,osName:u.os.name,osVersion:u.os.version,isMobile:u.isMobile}));s.send(se(S))},s.onmessage=async u=>{var C;const S=ne(v,te(await u.data.arrayBuffer())),j=JSON.parse(S);j.status==="PENDING"?a.value=!0:(localStorage.setItem("auth_token",j.token),s.close(),window.location.href=((C=oe.currentRoute.value.query.redirect)==null?void 0:C.toString())??"/")},s.onclose=async u=>{if(!(u.reason==="abort"||u.reason==="OK")){if(o.value=!1,e.value=!0,a.value=!1,!u.reason&&(await fetch(`${N()}/health_check`)).status===200){w.value="failed_connect_ws";return}w.value=`login.${u.reason?u.reason:"failed"}`}},window.setTimeout(function(){s.readyState!==1&&s.close(3001,"timeout")},2e3)});function z(){a.value=!1,e.value=!1,o.value=!1,s.close(3001,"abort")}return(c,f)=>{const k=fe;return T(),A(de,null,[p("header",Ve,[re(k,{"logged-in":!1})]),p("h1",null,g(c.$t("app_name")),1),p("div",ye,[E(p("form",{onSubmit:f[2]||(f[2]=ie((...v)=>d(y)&&d(y)(...v),["prevent"]))},[E(p("div",{class:"alert alert-danger",role:"alert"},g(w.value?c.$t(w.value):""),513),[[x,e.value]]),B.value?E((T(),A("md-outlined-text-field",{key:0,label:d(b)("password"),"onUpdate:modelValue":f[0]||(f[0]=v=>ae(m)?m.value=v:null),onKeydown:f[1]||(f[1]=le((...v)=>d(y)&&d(y)(...v),["enter"])),type:"password",class:"form-control",error:d(i),"error-text":d(i)?c.$t(d(i)):""},null,40,ke)),[[ue,d(m)]]):$("",!0),r.value?$("",!0):(T(),A("md-filled-button",{key:1,disabled:d(o)},g(c.$t(d(o)?"logging_in":"log_in")),9,Se))],544),[[x,!a.value]]),E(p("div",null,[ce(g(c.$t("login.to_continue"))+" ",1),p("md-outlined-button",{onClick:z},g(c.$t("cancel")),1)],512),[[x,a.value]])]),d(l)?(T(),A("div",Ae,g(c.$t("browser_warning")),1)):$("",!0)],64)}}});const xe=we(Ee,[["__scopeId","data-v-da05a7d0"]]);export{xe as default};
diff --git a/app/src/main/resources/web/assets/MessagesRootView-3dc6eaa3.js b/app/src/main/resources/web/assets/MessagesRootView-6bf338f4.js
similarity index 75%
rename from app/src/main/resources/web/assets/MessagesRootView-3dc6eaa3.js
rename to app/src/main/resources/web/assets/MessagesRootView-6bf338f4.js
index 7b20e77d..d7ee28e6 100644
--- a/app/src/main/resources/web/assets/MessagesRootView-3dc6eaa3.js
+++ b/app/src/main/resources/web/assets/MessagesRootView-6bf338f4.js
@@ -1 +1 @@
-import{_ as $}from"./TagFilter.vuevuetypescriptsetuptruelang-9b4a0b6e.js";import{d as w,D as M,e as S,E as B,G as N,c as p,p as a,H as i,j as e,o as m,a as s,t as c,l as d,I as u,F as z,J as T,C as f}from"./index-f62f2ff2.js";import{g,M as V}from"./splitpanes.es-2b477659.js";import"./EditValueModal-d57e85f6.js";import"./vee-validate.esm-65abdaa1.js";const b={class:"page-container"},D={class:"sidebar"},E={class:"nav-title"},F={class:"nav"},R=["onClick"],j=["onClick"],q={class:"main"},K=w({__name:"MessagesRootView",setup(x){const n=M(),l=S(),r=n.params.type,_=r?"":B(n.query);function h(t){f(l,`/messages/${t}`)}const v=["inbox","sent","drafts"];function y(){f(l,"/messages")}return(t,G)=>{const C=$,k=N("router-view");return m(),p("div",b,[a(e(V),null,{default:i(()=>[a(e(g),{size:"20","min-size":"10"},{default:i(()=>[s("div",D,[s("h2",E,c(t.$t("page_title.messages")),1),s("ul",F,[s("li",{onClick:d(y,["prevent"]),class:u({active:e(n).path==="/messages"&&!e(_)})},c(t.$t("all")),11,R),(m(),p(z,null,T(v,o=>s("li",{key:o,onClick:d(H=>h(o),["prevent"]),class:u({active:o===e(r)})},c(t.$t(`message_type.${o}`)),11,j)),64))]),a(C,{type:"SMS",selected:e(_)},null,8,["selected"])])]),_:1}),a(e(g),null,{default:i(()=>[s("div",q,[a(k)])]),_:1})]),_:1})])}}});export{K as default};
+import{_ as $}from"./TagFilter.vuevuetypescriptsetuptruelang-12e262c1.js";import{d as w,D as M,e as S,E as B,G as N,c as p,p as a,H as i,j as e,o as m,a as s,t as c,l as d,I as u,F as z,J as T,C as f}from"./index-0c42270c.js";import{g,M as V}from"./splitpanes.es-7e8a6fea.js";import"./EditValueModal-c22a5b2d.js";import"./vee-validate.esm-ca78f26f.js";const b={class:"page-container"},D={class:"sidebar"},E={class:"nav-title"},F={class:"nav"},R=["onClick"],j=["onClick"],q={class:"main"},K=w({__name:"MessagesRootView",setup(x){const n=M(),l=S(),r=n.params.type,_=r?"":B(n.query);function h(t){f(l,`/messages/${t}`)}const v=["inbox","sent","drafts"];function y(){f(l,"/messages")}return(t,G)=>{const C=$,k=N("router-view");return m(),p("div",b,[a(e(V),null,{default:i(()=>[a(e(g),{size:"20","min-size":"10"},{default:i(()=>[s("div",D,[s("h2",E,c(t.$t("page_title.messages")),1),s("ul",F,[s("li",{onClick:d(y,["prevent"]),class:u({active:e(n).path==="/messages"&&!e(_)})},c(t.$t("all")),11,R),(m(),p(z,null,T(v,o=>s("li",{key:o,onClick:d(H=>h(o),["prevent"]),class:u({active:o===e(r)})},c(t.$t(`message_type.${o}`)),11,j)),64))]),a(C,{type:"SMS",selected:e(_)},null,8,["selected"])])]),_:1}),a(e(g),null,{default:i(()=>[s("div",q,[a(k)])]),_:1})]),_:1})])}}});export{K as default};
diff --git a/app/src/main/resources/web/assets/MessagesView-acae6a6e.js b/app/src/main/resources/web/assets/MessagesView-5e09032c.js
similarity index 95%
rename from app/src/main/resources/web/assets/MessagesView-acae6a6e.js
rename to app/src/main/resources/web/assets/MessagesView-5e09032c.js
index 63a4b660..9d6b85e1 100644
--- a/app/src/main/resources/web/assets/MessagesView-acae6a6e.js
+++ b/app/src/main/resources/web/assets/MessagesView-5e09032c.js
@@ -1 +1 @@
-import{u as ue,_ as _e,a as pe,b as me}from"./list-45297bd9.js";import{d as he,e as ge,s as fe,f as ke,r as g,u as ve,K as ye,L as be,D as $e,M as Te,N as Ce,w as Se,O as we,P as $,Q as Ve,R as De,c as d,a as e,p as r,j as a,m as T,l as C,k as M,H as Me,t as o,F as q,J as G,S as qe,T as Ae,U as Re,x as Ie,V as Le,C as S,W as w,o as n,v as Ue,I as Be,X as Qe,Y as He,h as Ne,Z as Fe,$ as ze,a0 as xe,a1 as Ee,a2 as Ke,a3 as Pe,a4 as je,a5 as Ge,a6 as Je}from"./index-f62f2ff2.js";import{_ as Oe}from"./Breadcrumb-ebe74d39.js";import{u as We,a as Xe}from"./tags-06583423.js";import"./vee-validate.esm-65abdaa1.js";const Ye={class:"v-toolbar"},Ze=e("md-ripple",null,null,-1),et={class:"filters"},tt=["label"],st={class:"form-label"},at=["label","selected","onClick"],lt={class:"buttons"},ot=["onClick"],nt={class:"table-responsive"},dt={class:"table"},ct=["checked","indeterminate"],it=e("th",null,"ID",-1),rt=e("th",null,null,-1),ut=["onClick"],_t=["checked"],pt=["innerHTML"],mt={class:"nowrap"},ht={class:"action-btns"},gt=["onClick"],ft=e("md-ripple",null,null,-1),kt={class:"nowrap"},vt={class:"nowrap"},yt={class:"nowrap"},bt={key:0},$t={colspan:"8"},Tt={class:"no-data-placeholder"},f=50,qt=he({__name:"MessagesView",setup(Ct){var K,P;const k=ge(),{app:J}=fe(ke()),p=g([]),A=g(),{t:O}=ve(),c=ye({text:"",tags:[]}),u=be.SMS,R=$e(),I=R.query,v=g(parseInt(((K=I.page)==null?void 0:K.toString())??"1")),i=g(Te(((P=I.q)==null?void 0:P.toString())??"")),V=g(""),{tags:y}=We(u,i,c,async t=>{_&&t.push({name:"type",op:"",value:se[_].toString()}),V.value=Ae(t),await Re(),te()}),{addToTags:W}=Xe(u,p,y),{allChecked:L,realAllChecked:U,selectRealAll:X,allCheckedAlertVisible:Y,clearSelection:B,toggleAllChecked:Q,toggleItemChecked:H,toggleRow:Z,total:m,checked:N}=ue(p),{loading:ee,load:te,refetch:F}=Ce({handle:(t,l)=>{l?Ie(O(l),"error"):t&&(p.value=t.messages.map(h=>({...h,checked:!1})),m.value=t.messageCount)},document:Le,variables:()=>({offset:(v.value-1)*f,limit:f,query:V.value}),appApi:!0}),_=R.params.type,se={inbox:1,sent:2,drafts:3,outbox:4};Se(v,t=>{_?S(k,`/messages/${_}?page=${t}&q=${w(i.value)}`):S(k,`/messages?page=${t}&q=${w(i.value)}`)});function ae(t){c.tags.includes(t)?xe(c.tags,l=>l.id===t.id):c.tags.push(t)}function le(){i.value=Ee(c),z(),A.value.dismiss()}function oe(t){Ke(Pe,{type:u,tags:y.value,item:{key:t.id,title:"",size:0},selected:y.value.filter(l=>t.tags.some(h=>h.id===l.id))})}function z(){_?S(k,`/messages/${_}?q=${w(i.value)}`):S(k,`/messages?q=${w(i.value)}`)}const x=t=>{t.type===u&&(B(),F())},E=t=>{t.type===u&&F()};return we(()=>{$.on("item_tags_updated",E),$.on("items_tags_updated",x)}),Ve(()=>{$.off("item_tags_updated",E),$.off("items_tags_updated",x)}),(t,l)=>{const h=Oe,j=je,ne=_e,de=pe,ce=Ge,ie=Je,re=me,D=De("tooltip");return n(),d(q,null,[e("div",Ye,[r(h,{current:()=>`${t.$t("page_title.messages")} (${a(m)})`},null,8,["current"]),a(N)?T((n(),d("button",{key:0,class:"icon-button",onClick:l[0]||(l[0]=C(s=>a(W)(a(U),V.value),["stop"]))},[Ze,r(j)])),[[D,t.$t("add_to_tags")]]):M("",!0),r(ne,{ref_key:"searchInputRef",ref:A,modelValue:i.value,"onUpdate:modelValue":l[2]||(l[2]=s=>i.value=s),search:z},{filters:Me(()=>[e("div",et,[T(e("md-outlined-text-field",{label:t.$t("keywords"),"onUpdate:modelValue":l[1]||(l[1]=s=>c.text=s),"keyup.enter":"applyAndDoSearch"},null,8,tt),[[Ue,c.text]]),e("label",st,o(t.$t("tags")),1),e("md-chip-set",null,[(n(!0),d(q,null,G(a(y),s=>(n(),d("md-filter-chip",{key:s.id,label:s.name,selected:c.tags.includes(s),onClick:b=>ae(s)},null,8,at))),128))]),e("div",lt,[e("md-filled-button",{onClick:C(le,["stop"])},o(t.$t("search")),9,ot)])])]),_:1},8,["modelValue"])]),r(de,{limit:f,total:a(m),"all-checked-alert-visible":a(Y),"real-all-checked":a(U),"select-real-all":a(X),"clear-selection":a(B)},null,8,["total","all-checked-alert-visible","real-all-checked","select-real-all","clear-selection"]),e("div",nt,[e("table",dt,[e("thead",null,[e("tr",null,[e("th",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:l[3]||(l[3]=(...s)=>a(Q)&&a(Q)(...s)),checked:a(L),indeterminate:!a(L)&&a(N)},null,40,ct)]),it,e("th",null,o(t.$t("content")),1),rt,e("th",null,o(t.$t("sms_address")),1),e("th",null,o(t.$t("type")),1),e("th",null,o(t.$t("tags")),1),e("th",null,o(t.$t("time")),1)])]),e("tbody",null,[(n(!0),d(q,null,G(p.value,s=>(n(),d("tr",{key:s.id,class:Be({selected:s.checked}),onClick:C(b=>a(Z)(s),["stop"])},[e("td",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:l[4]||(l[4]=(...b)=>a(H)&&a(H)(...b)),checked:s.checked},null,40,_t)]),e("td",null,[r(ce,{id:s.id,raw:s},null,8,["id","raw"])]),e("td",{innerHTML:a(Qe)(s.body)},null,8,pt),e("td",mt,[e("div",ht,[T((n(),d("button",{class:"icon-button",onClick:C(b=>oe(s),["stop"])},[ft,r(j)],8,gt)),[[D,t.$t("add_to_tags")]])])]),e("td",kt,o(s.address),1),e("td",vt,o(t.$t(`message_type.${s.type}`)),1),e("td",null,[r(ie,{tags:s.tags,type:a(u)},null,8,["tags","type"])]),e("td",yt,[T((n(),d("span",null,[Ne(o(a(Fe)(s.date)),1)])),[[D,a(He)(s.date)]])])],10,ut))),128))]),p.value.length?M("",!0):(n(),d("tfoot",bt,[e("tr",null,[e("td",$t,[e("div",Tt,o(t.$t(a(ze)(a(ee),a(J).permissions,"READ_SMS"))),1)])])]))])]),a(m)>f?(n(),qe(re,{key:0,modelValue:v.value,"onUpdate:modelValue":l[5]||(l[5]=s=>v.value=s),total:a(m),limit:f},null,8,["modelValue","total"])):M("",!0)],64)}}});export{qt as default};
+import{u as ue,_ as _e,a as pe,b as me}from"./list-183f8357.js";import{d as he,e as ge,s as fe,f as ke,r as g,u as ve,K as ye,L as be,D as $e,M as Te,N as Ce,w as Se,O as we,P as $,Q as Ve,R as De,c as d,a as e,p as r,j as a,m as T,l as C,k as M,H as Me,t as o,F as q,J as G,S as qe,T as Ae,U as Re,x as Ie,V as Le,C as S,W as w,o as n,v as Ue,I as Be,X as Qe,Y as He,h as Ne,Z as Fe,$ as ze,a0 as xe,a1 as Ee,a2 as Ke,a3 as Pe,a4 as je,a5 as Ge,a6 as Je}from"./index-0c42270c.js";import{_ as Oe}from"./Breadcrumb-f52b6c6b.js";import{u as We,a as Xe}from"./tags-bf0f6db9.js";import"./vee-validate.esm-ca78f26f.js";const Ye={class:"v-toolbar"},Ze=e("md-ripple",null,null,-1),et={class:"filters"},tt=["label"],st={class:"form-label"},at=["label","selected","onClick"],lt={class:"buttons"},ot=["onClick"],nt={class:"table-responsive"},dt={class:"table"},ct=["checked","indeterminate"],it=e("th",null,"ID",-1),rt=e("th",null,null,-1),ut=["onClick"],_t=["checked"],pt=["innerHTML"],mt={class:"nowrap"},ht={class:"action-btns"},gt=["onClick"],ft=e("md-ripple",null,null,-1),kt={class:"nowrap"},vt={class:"nowrap"},yt={class:"nowrap"},bt={key:0},$t={colspan:"8"},Tt={class:"no-data-placeholder"},f=50,qt=he({__name:"MessagesView",setup(Ct){var K,P;const k=ge(),{app:J}=fe(ke()),p=g([]),A=g(),{t:O}=ve(),c=ye({text:"",tags:[]}),u=be.SMS,R=$e(),I=R.query,v=g(parseInt(((K=I.page)==null?void 0:K.toString())??"1")),i=g(Te(((P=I.q)==null?void 0:P.toString())??"")),V=g(""),{tags:y}=We(u,i,c,async t=>{_&&t.push({name:"type",op:"",value:se[_].toString()}),V.value=Ae(t),await Re(),te()}),{addToTags:W}=Xe(u,p,y),{allChecked:L,realAllChecked:U,selectRealAll:X,allCheckedAlertVisible:Y,clearSelection:B,toggleAllChecked:Q,toggleItemChecked:H,toggleRow:Z,total:m,checked:N}=ue(p),{loading:ee,load:te,refetch:F}=Ce({handle:(t,l)=>{l?Ie(O(l),"error"):t&&(p.value=t.messages.map(h=>({...h,checked:!1})),m.value=t.messageCount)},document:Le,variables:()=>({offset:(v.value-1)*f,limit:f,query:V.value}),appApi:!0}),_=R.params.type,se={inbox:1,sent:2,drafts:3,outbox:4};Se(v,t=>{_?S(k,`/messages/${_}?page=${t}&q=${w(i.value)}`):S(k,`/messages?page=${t}&q=${w(i.value)}`)});function ae(t){c.tags.includes(t)?xe(c.tags,l=>l.id===t.id):c.tags.push(t)}function le(){i.value=Ee(c),z(),A.value.dismiss()}function oe(t){Ke(Pe,{type:u,tags:y.value,item:{key:t.id,title:"",size:0},selected:y.value.filter(l=>t.tags.some(h=>h.id===l.id))})}function z(){_?S(k,`/messages/${_}?q=${w(i.value)}`):S(k,`/messages?q=${w(i.value)}`)}const x=t=>{t.type===u&&(B(),F())},E=t=>{t.type===u&&F()};return we(()=>{$.on("item_tags_updated",E),$.on("items_tags_updated",x)}),Ve(()=>{$.off("item_tags_updated",E),$.off("items_tags_updated",x)}),(t,l)=>{const h=Oe,j=je,ne=_e,de=pe,ce=Ge,ie=Je,re=me,D=De("tooltip");return n(),d(q,null,[e("div",Ye,[r(h,{current:()=>`${t.$t("page_title.messages")} (${a(m)})`},null,8,["current"]),a(N)?T((n(),d("button",{key:0,class:"icon-button",onClick:l[0]||(l[0]=C(s=>a(W)(a(U),V.value),["stop"]))},[Ze,r(j)])),[[D,t.$t("add_to_tags")]]):M("",!0),r(ne,{ref_key:"searchInputRef",ref:A,modelValue:i.value,"onUpdate:modelValue":l[2]||(l[2]=s=>i.value=s),search:z},{filters:Me(()=>[e("div",et,[T(e("md-outlined-text-field",{label:t.$t("keywords"),"onUpdate:modelValue":l[1]||(l[1]=s=>c.text=s),"keyup.enter":"applyAndDoSearch"},null,8,tt),[[Ue,c.text]]),e("label",st,o(t.$t("tags")),1),e("md-chip-set",null,[(n(!0),d(q,null,G(a(y),s=>(n(),d("md-filter-chip",{key:s.id,label:s.name,selected:c.tags.includes(s),onClick:b=>ae(s)},null,8,at))),128))]),e("div",lt,[e("md-filled-button",{onClick:C(le,["stop"])},o(t.$t("search")),9,ot)])])]),_:1},8,["modelValue"])]),r(de,{limit:f,total:a(m),"all-checked-alert-visible":a(Y),"real-all-checked":a(U),"select-real-all":a(X),"clear-selection":a(B)},null,8,["total","all-checked-alert-visible","real-all-checked","select-real-all","clear-selection"]),e("div",nt,[e("table",dt,[e("thead",null,[e("tr",null,[e("th",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:l[3]||(l[3]=(...s)=>a(Q)&&a(Q)(...s)),checked:a(L),indeterminate:!a(L)&&a(N)},null,40,ct)]),it,e("th",null,o(t.$t("content")),1),rt,e("th",null,o(t.$t("sms_address")),1),e("th",null,o(t.$t("type")),1),e("th",null,o(t.$t("tags")),1),e("th",null,o(t.$t("time")),1)])]),e("tbody",null,[(n(!0),d(q,null,G(p.value,s=>(n(),d("tr",{key:s.id,class:Be({selected:s.checked}),onClick:C(b=>a(Z)(s),["stop"])},[e("td",null,[e("md-checkbox",{"touch-target":"wrapper",onChange:l[4]||(l[4]=(...b)=>a(H)&&a(H)(...b)),checked:s.checked},null,40,_t)]),e("td",null,[r(ce,{id:s.id,raw:s},null,8,["id","raw"])]),e("td",{innerHTML:a(Qe)(s.body)},null,8,pt),e("td",mt,[e("div",ht,[T((n(),d("button",{class:"icon-button",onClick:C(b=>oe(s),["stop"])},[ft,r(j)],8,gt)),[[D,t.$t("add_to_tags")]])])]),e("td",kt,o(s.address),1),e("td",vt,o(t.$t(`message_type.${s.type}`)),1),e("td",null,[r(ie,{tags:s.tags,type:a(u)},null,8,["tags","type"])]),e("td",yt,[T((n(),d("span",null,[Ne(o(a(Fe)(s.date)),1)])),[[D,a(He)(s.date)]])])],10,ut))),128))]),p.value.length?M("",!0):(n(),d("tfoot",bt,[e("tr",null,[e("td",$t,[e("div",Tt,o(t.$t(a(ze)(a(ee),a(J).permissions,"READ_SMS"))),1)])])]))])]),a(m)>f?(n(),qe(re,{key:0,modelValue:v.value,"onUpdate:modelValue":l[5]||(l[5]=s=>v.value=s),total:a(m),limit:f},null,8,["modelValue","total"])):M("",!0)],64)}}});export{qt as default};
diff --git a/app/src/main/resources/web/assets/MonacoEditor.vuevuetypescriptsetuptruelang-87724a30.js b/app/src/main/resources/web/assets/MonacoEditor.vuevuetypescriptsetuptruelang-aab104b3.js
similarity index 99%
rename from app/src/main/resources/web/assets/MonacoEditor.vuevuetypescriptsetuptruelang-87724a30.js
rename to app/src/main/resources/web/assets/MonacoEditor.vuevuetypescriptsetuptruelang-aab104b3.js
index 02b26e53..45773e41 100644
--- a/app/src/main/resources/web/assets/MonacoEditor.vuevuetypescriptsetuptruelang-87724a30.js
+++ b/app/src/main/resources/web/assets/MonacoEditor.vuevuetypescriptsetuptruelang-aab104b3.js
@@ -1,4 +1,4 @@
-var c6=Object.defineProperty;var d6=(o,e,t)=>e in o?c6(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Zt=(o,e,t)=>(d6(o,typeof e!="symbol"?e+"":e,t),t);import{bV as me,d as h6,bW as u6,aC as g6,bC as f6,r as p6,O as D2,w as kb,P as x2,Q as m6,o as _6,c as b6,bP as v6}from"./index-f62f2ff2.js";globalThis&&globalThis.__awaiter;let C6=typeof document<"u"&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;function w6(o,e){let t;return e.length===0?t=o:t=o.replace(/\{(\d+)\}/g,(i,n)=>{const s=n[0],r=e[s];let a=i;return typeof r=="string"?a=r:(typeof r=="number"||typeof r=="boolean"||r===void 0||r===null)&&(a=String(r)),a}),C6&&(t="["+t.replace(/[aouei]/g,"$&$&")+"]"),t}function f(o,e,...t){return w6(e,t)}var ES;const mp="en";let Iv=!1,Ev=!1,U0=!1,d4=!1,mE=!1,_E=!1,h4=!1,Ib,$0=mp,S6,Zo;const di=typeof self=="object"?self:typeof global=="object"?global:{};let Rn;typeof di.vscode<"u"&&typeof di.vscode.process<"u"?Rn=di.vscode.process:typeof process<"u"&&(Rn=process);const y6=typeof((ES=Rn==null?void 0:Rn.versions)===null||ES===void 0?void 0:ES.electron)=="string",L6=y6&&(Rn==null?void 0:Rn.type)==="renderer";if(typeof navigator=="object"&&!L6)Zo=navigator.userAgent,Iv=Zo.indexOf("Windows")>=0,Ev=Zo.indexOf("Macintosh")>=0,_E=(Zo.indexOf("Macintosh")>=0||Zo.indexOf("iPad")>=0||Zo.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,U0=Zo.indexOf("Linux")>=0,h4=(Zo==null?void 0:Zo.indexOf("Mobi"))>=0,mE=!0,f({key:"ensureLoaderPluginIsLoaded",comment:["{Locked}"]},"_"),Ib=mp,$0=Ib;else if(typeof Rn=="object"){Iv=Rn.platform==="win32",Ev=Rn.platform==="darwin",U0=Rn.platform==="linux",U0&&Rn.env.SNAP&&Rn.env.SNAP_REVISION,Rn.env.CI||Rn.env.BUILD_ARTIFACTSTAGINGDIRECTORY,Ib=mp,$0=mp;const o=Rn.env.VSCODE_NLS_CONFIG;if(o)try{const e=JSON.parse(o),t=e.availableLanguages["*"];Ib=e.locale,$0=t||mp,S6=e._translationsConfigFile}catch{}d4=!0}else console.error("Unable to resolve platform.");const Qi=Iv,Ke=Ev,hn=U0,ur=d4,Kc=mE,D6=mE&&typeof di.importScripts=="function",ga=_E,x6=h4,fa=Zo,k6=$0,I6=typeof di.postMessage=="function"&&!di.importScripts,u4=(()=>{if(I6){const o=[];di.addEventListener("message",t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let i=0,n=o.length;i{const i=++e;o.push({id:i,callback:t}),di.postMessage({vscodeScheduleAsyncWork:i},"*")}}return o=>setTimeout(o)})(),Ps=Ev||_E?2:Iv?1:3;let k2=!0,I2=!1;function g4(){if(!I2){I2=!0;const o=new Uint8Array(2);o[0]=1,o[1]=2,k2=new Uint16Array(o.buffer)[0]===512+1}return k2}const f4=!!(fa&&fa.indexOf("Chrome")>=0),E6=!!(fa&&fa.indexOf("Firefox")>=0),T6=!!(!f4&&fa&&fa.indexOf("Safari")>=0),N6=!!(fa&&fa.indexOf("Edg/")>=0);fa&&fa.indexOf("Android")>=0;var it;(function(o){function e(v){return v&&typeof v=="object"&&typeof v[Symbol.iterator]=="function"}o.is=e;const t=Object.freeze([]);function i(){return t}o.empty=i;function*n(v){yield v}o.single=n;function s(v){return e(v)?v:n(v)}o.wrap=s;function r(v){return v||t}o.from=r;function a(v){return!v||v[Symbol.iterator]().next().done===!0}o.isEmpty=a;function l(v){return v[Symbol.iterator]().next().value}o.first=l;function c(v,b){for(const C of v)if(b(C))return!0;return!1}o.some=c;function d(v,b){for(const C of v)if(b(C))return C}o.find=d;function*h(v,b){for(const C of v)b(C)&&(yield C)}o.filter=h;function*u(v,b){let C=0;for(const S of v)yield b(S,C++)}o.map=u;function*g(...v){for(const b of v)for(const C of b)yield C}o.concat=g;function p(v,b,C){let S=C;for(const x of v)S=b(S,x);return S}o.reduce=p;function*m(v,b,C=v.length){for(b<0&&(b+=v.length),C<0?C+=v.length:C>v.length&&(C=v.length);b{n||(n=!0,this._remove(i))}}shift(){if(this._first!==bi.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==bi.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==bi.Undefined&&e.next!==bi.Undefined){const t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===bi.Undefined&&e.next===bi.Undefined?(this._first=bi.Undefined,this._last=bi.Undefined):e.next===bi.Undefined?(this._last=this._last.prev,this._last.next=bi.Undefined):e.prev===bi.Undefined&&(this._first=this._first.next,this._first.prev=bi.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==bi.Undefined;)yield e.element,e=e.next}}const p4="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";function M6(o=""){let e="(-?\\d*\\.\\d\\w*)|([^";for(const t of p4)o.indexOf(t)>=0||(e+="\\"+t);return e+="\\s]+)",new RegExp(e,"g")}const bE=M6();function m4(o){let e=bE;if(o&&o instanceof RegExp)if(o.global)e=o;else{let t="g";o.ignoreCase&&(t+="i"),o.multiline&&(t+="m"),o.unicode&&(t+="u"),e=new RegExp(o.source,t)}return e.lastIndex=0,e}const _4=new ln;_4.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function _m(o,e,t,i,n){if(n||(n=it.first(_4)),t.length>n.maxLen){let c=o-n.maxLen/2;return c<0?c=0:i+=c,t=t.substring(c,o+n.maxLen/2),_m(o,e,t,i,n)}const s=Date.now(),r=o-1-i;let a=-1,l=null;for(let c=1;!(Date.now()-s>=n.timeBudget);c++){const d=r-n.windowSize*c;e.lastIndex=Math.max(0,d);const h=A6(e,t,r,a);if(!h&&l||(l=h,d<=0))break;a=d}if(l){const c={word:l[0],startColumn:i+1+l.index,endColumn:i+1+l.index+l[0].length};return e.lastIndex=0,c}return null}function A6(o,e,t,i){let n;for(;n=o.exec(e);){const s=n.index||0;if(s<=t&&o.lastIndex>=t)return n;if(i>0&&s>i)return null}return null}function Zs(o,e=0){return o[o.length-(1+e)]}function R6(o){if(o.length===0)throw new Error("Invalid tail call");return[o.slice(0,o.length-1),o[o.length-1]]}function Bn(o,e,t=(i,n)=>i===n){if(o===e)return!0;if(!o||!e||o.length!==e.length)return!1;for(let i=0,n=o.length;it(o[i],e))}function O6(o,e){let t=0,i=o-1;for(;t<=i;){const n=(t+i)/2|0,s=e(n);if(s<0)t=n+1;else if(s>0)i=n-1;else return n}return-(t+1)}function b4(o,e){let t=0,i=o.length;if(i===0)return 0;for(;t=e.length)throw new TypeError("invalid index");const i=e[Math.floor(e.length*Math.random())],n=[],s=[],r=[];for(const a of e){const l=t(a,i);l<0?n.push(a):l>0?s.push(a):r.push(a)}return o!!e)}function T2(o){let e=0;for(let t=0;t0}function Dc(o,e=t=>t){const t=new Set;return o.filter(i=>{const n=e(i);return t.has(n)?!1:(t.add(n),!0)})}function C4(o,e){const t=F6(o,e);if(t!==-1)return o[t]}function F6(o,e){for(let t=o.length-1;t>=0;t--){const i=o[t];if(e(i))return t}return-1}function w4(o,e){return o.length>0?o[0]:e}function Mn(o,e){let t=typeof e=="number"?o:0;typeof e=="number"?t=o:(t=0,e=o);const i=[];if(t<=e)for(let n=t;ne;n--)i.push(n);return i}function L1(o,e,t){const i=o.slice(0,e),n=o.slice(e);return i.concat(t,n)}function TS(o,e){const t=o.indexOf(e);t>-1&&(o.splice(t,1),o.unshift(e))}function Eb(o,e){const t=o.indexOf(e);t>-1&&(o.splice(t,1),o.push(e))}function N2(o,e){for(const t of e)o.push(t)}function vE(o){return Array.isArray(o)?o:[o]}function B6(o,e,t){const i=S4(o,e),n=o.length,s=t.length;o.length=n+s;for(let r=n-1;r>=i;r--)o[r+s]=o[r];for(let r=0;r0}o.isGreaterThan=t;function i(n){return n===0}o.isNeitherLessOrGreaterThan=i,o.greaterThan=1,o.lessThan=-1,o.neitherLessOrGreaterThan=0})(jL||(jL={}));function Vp(o,e){return(t,i)=>e(o(t),o(i))}const W6=(o,e)=>o-e;function y4(o,e){if(o.length===0)return;let t=o[0];for(let i=1;i0&&(t=n)}return t}function V6(o,e){if(o.length===0)return;let t=o[0];for(let i=1;i=0&&(t=n)}return t}function H6(o,e){return y4(o,(t,i)=>-e(t,i))}class Eg{constructor(e){this.items=e,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(e){let t=this.firstIdx;for(;t=0&&e(this.items[t]);)t--;const i=t===this.lastIdx?null:this.items.slice(t+1,this.lastIdx+1);return this.lastIdx=t,i}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const e=this.items[this.firstIdx];return this.firstIdx++,e}takeCount(e){const t=this.items.slice(this.firstIdx,this.firstIdx+e);return this.firstIdx+=e,t}}class aa{constructor(e){this.iterate=e}toArray(){const e=[];return this.iterate(t=>(e.push(t),!0)),e}filter(e){return new aa(t=>this.iterate(i=>e(i)?t(i):!0))}map(e){return new aa(t=>this.iterate(i=>t(e(i))))}findLast(e){let t;return this.iterate(i=>(e(i)&&(t=i),!0)),t}findLastMaxBy(e){let t,i=!0;return this.iterate(n=>((i||jL.isGreaterThan(e(n,t)))&&(i=!1,t=n),!0)),t}}aa.empty=new aa(o=>{});function Wn(o){return typeof o=="string"}function Xn(o){return typeof o=="object"&&o!==null&&!Array.isArray(o)&&!(o instanceof RegExp)&&!(o instanceof Date)}function z6(o){const e=Object.getPrototypeOf(Uint8Array);return typeof o=="object"&&o instanceof e}function xc(o){return typeof o=="number"&&!isNaN(o)}function A2(o){return!!o&&typeof o[Symbol.iterator]=="function"}function L4(o){return o===!0||o===!1}function us(o){return typeof o>"u"}function U6(o){return!Ms(o)}function Ms(o){return us(o)||o===null}function _t(o,e){if(!o)throw new Error(e?`Unexpected type, expected '${e}'`:"Unexpected type")}function Fu(o){if(Ms(o))throw new Error("Assertion Failed: argument is undefined or null");return o}function Tv(o){return typeof o=="function"}function $6(o,e){const t=Math.min(o.length,e.length);for(let i=0;i{e[t]=i&&typeof i=="object"?qa(i):i}),e}function K6(o){if(!o||typeof o!="object")return o;const e=[o];for(;e.length>0;){const t=e.shift();Object.freeze(t);for(const i in t)if(D4.call(t,i)){const n=t[i];typeof n=="object"&&!Object.isFrozen(n)&&!z6(n)&&e.push(n)}}return o}const D4=Object.prototype.hasOwnProperty;function x4(o,e){return KL(o,e,new Set)}function KL(o,e,t){if(Ms(o))return o;const i=e(o);if(typeof i<"u")return i;if(Array.isArray(o)){const n=[];for(const s of o)n.push(KL(s,e,t));return n}if(Xn(o)){if(t.has(o))throw new Error("Cannot clone recursive data-structure");t.add(o);const n={};for(const s in o)D4.call(o,s)&&(n[s]=KL(o[s],e,t));return t.delete(o),n}return o}function B_(o,e,t=!0){return Xn(o)?(Xn(e)&&Object.keys(e).forEach(i=>{i in o?t&&(Xn(o[i])&&Xn(e[i])?B_(o[i],e[i],t):o[i]=e[i]):o[i]=e[i]}),o):e}function so(o,e){if(o===e)return!0;if(o==null||e===null||e===void 0||typeof o!=typeof e||typeof o!="object"||Array.isArray(o)!==Array.isArray(e))return!1;let t,i;if(Array.isArray(o)){if(o.length!==e.length)return!1;for(t=0;tfunction(){const s=Array.prototype.slice.call(arguments,0);return e(n,s)},i={};for(const n of o)i[n]=t(n);return i}const _n={tabSize:4,indentSize:4,insertSpaces:!0,detectIndentation:!0,trimAutoWhitespace:!0,largeFileOptimizations:!0,bracketPairColorizationOptions:{enabled:!0,independentColorPoolPerBracketType:!1}},Vl=8;class k4{constructor(e){this._values=e}hasChanged(e){return this._values[e]}}class I4{constructor(){this.stableMinimapLayoutInput=null,this.stableFitMaxMinimapScale=0,this.stableFitRemainingWidth=0}}class Jt{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}applyUpdate(e,t){return D1(e,t)}compute(e,t,i){return i}}class Hp{constructor(e,t){this.newValue=e,this.didChange=t}}function D1(o,e){if(typeof o!="object"||typeof e!="object"||!o||!e)return new Hp(e,o!==e);if(Array.isArray(o)||Array.isArray(e)){const i=Array.isArray(o)&&Array.isArray(e)&&Bn(o,e);return new Hp(e,!i)}let t=!1;for(const i in e)if(e.hasOwnProperty(i)){const n=D1(o[i],e[i]);n.didChange&&(o[i]=n.newValue,t=!0)}return new Hp(o,t)}class _f{constructor(e){this.schema=void 0,this.id=e,this.name="_never_",this.defaultValue=void 0}applyUpdate(e,t){return D1(e,t)}validate(e){return this.defaultValue}}class bf{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}applyUpdate(e,t){return D1(e,t)}validate(e){return typeof e>"u"?this.defaultValue:e}compute(e,t,i){return i}}function Le(o,e){return typeof o>"u"?e:o==="false"?!1:!!o}class ct extends bf{constructor(e,t,i,n=void 0){typeof n<"u"&&(n.type="boolean",n.default=i),super(e,t,i,n)}validate(e){return Le(e,this.defaultValue)}}function qL(o,e,t,i){if(typeof o>"u")return e;let n=parseInt(o,10);return isNaN(n)?e:(n=Math.max(t,n),n=Math.min(i,n),n|0)}class Lt extends bf{static clampedInt(e,t,i,n){return qL(e,t,i,n)}constructor(e,t,i,n,s,r=void 0){typeof r<"u"&&(r.type="integer",r.default=i,r.minimum=n,r.maximum=s),super(e,t,i,r),this.minimum=n,this.maximum=s}validate(e){return Lt.clampedInt(e,this.defaultValue,this.minimum,this.maximum)}}class Xr extends bf{static clamp(e,t,i){return ei?i:e}static float(e,t){if(typeof e=="number")return e;if(typeof e>"u")return t;const i=parseFloat(e);return isNaN(i)?t:i}constructor(e,t,i,n,s){typeof s<"u"&&(s.type="number",s.default=i),super(e,t,i,s),this.validationFn=n}validate(e){return this.validationFn(Xr.float(e,this.defaultValue))}}class ds extends bf{static string(e,t){return typeof e!="string"?t:e}constructor(e,t,i,n=void 0){typeof n<"u"&&(n.type="string",n.default=i),super(e,t,i,n)}validate(e){return ds.string(e,this.defaultValue)}}function Di(o,e,t){return typeof o!="string"||t.indexOf(o)===-1?e:o}class ai extends bf{constructor(e,t,i,n,s=void 0){typeof s<"u"&&(s.type="string",s.enum=n,s.default=i),super(e,t,i,s),this._allowedValues=n}validate(e){return Di(e,this.defaultValue,this._allowedValues)}}class Tb extends Jt{constructor(e,t,i,n,s,r,a=void 0){typeof a<"u"&&(a.type="string",a.enum=s,a.default=n),super(e,t,i,a),this._allowedValues=s,this._convert=r}validate(e){return typeof e!="string"?this.defaultValue:this._allowedValues.indexOf(e)===-1?this.defaultValue:this._convert(e)}}function Z6(o){switch(o){case"none":return 0;case"keep":return 1;case"brackets":return 2;case"advanced":return 3;case"full":return 4}}class Y6 extends Jt{constructor(){super(2,"accessibilitySupport",0,{type:"string",enum:["auto","on","off"],enumDescriptions:[f("accessibilitySupport.auto","Use platform APIs to detect when a Screen Reader is attached"),f("accessibilitySupport.on","Optimize for usage with a Screen Reader"),f("accessibilitySupport.off","Assume a screen reader is not attached")],default:"auto",tags:["accessibility"],description:f("accessibilitySupport","Controls if the UI should run in a mode where it is optimized for screen readers.")})}validate(e){switch(e){case"auto":return 0;case"off":return 1;case"on":return 2}return this.defaultValue}compute(e,t,i){return i===0?e.accessibilitySupport:i}}class Q6 extends Jt{constructor(){const e={insertSpace:!0,ignoreEmptyLines:!0};super(20,"comments",e,{"editor.comments.insertSpace":{type:"boolean",default:e.insertSpace,description:f("comments.insertSpace","Controls whether a space character is inserted when commenting.")},"editor.comments.ignoreEmptyLines":{type:"boolean",default:e.ignoreEmptyLines,description:f("comments.ignoreEmptyLines","Controls if empty lines should be ignored with toggle, add or remove actions for line comments.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{insertSpace:Le(t.insertSpace,this.defaultValue.insertSpace),ignoreEmptyLines:Le(t.ignoreEmptyLines,this.defaultValue.ignoreEmptyLines)}}}function X6(o){switch(o){case"blink":return 1;case"smooth":return 2;case"phase":return 3;case"expand":return 4;case"solid":return 5}}var Gi;(function(o){o[o.Line=1]="Line",o[o.Block=2]="Block",o[o.Underline=3]="Underline",o[o.LineThin=4]="LineThin",o[o.BlockOutline=5]="BlockOutline",o[o.UnderlineThin=6]="UnderlineThin"})(Gi||(Gi={}));function J6(o){switch(o){case"line":return Gi.Line;case"block":return Gi.Block;case"underline":return Gi.Underline;case"line-thin":return Gi.LineThin;case"block-outline":return Gi.BlockOutline;case"underline-thin":return Gi.UnderlineThin}}class eW extends _f{constructor(){super(135)}compute(e,t,i){const n=["monaco-editor"];return t.get(36)&&n.push(t.get(36)),e.extraEditorClassName&&n.push(e.extraEditorClassName),t.get(70)==="default"?n.push("mouse-default"):t.get(70)==="copy"&&n.push("mouse-copy"),t.get(105)&&n.push("showUnused"),t.get(133)&&n.push("showDeprecated"),n.join(" ")}}class tW extends ct{constructor(){super(34,"emptySelectionClipboard",!0,{description:f("emptySelectionClipboard","Controls whether copying without a selection copies the current line.")})}compute(e,t,i){return i&&e.emptySelectionClipboard}}class iW extends Jt{constructor(){const e={cursorMoveOnType:!0,seedSearchStringFromSelection:"always",autoFindInSelection:"never",globalFindClipboard:!1,addExtraSpaceOnTop:!0,loop:!0};super(38,"find",e,{"editor.find.cursorMoveOnType":{type:"boolean",default:e.cursorMoveOnType,description:f("find.cursorMoveOnType","Controls whether the cursor should jump to find matches while typing.")},"editor.find.seedSearchStringFromSelection":{type:"string",enum:["never","always","selection"],default:e.seedSearchStringFromSelection,enumDescriptions:[f("editor.find.seedSearchStringFromSelection.never","Never seed search string from the editor selection."),f("editor.find.seedSearchStringFromSelection.always","Always seed search string from the editor selection, including word at cursor position."),f("editor.find.seedSearchStringFromSelection.selection","Only seed search string from the editor selection.")],description:f("find.seedSearchStringFromSelection","Controls whether the search string in the Find Widget is seeded from the editor selection.")},"editor.find.autoFindInSelection":{type:"string",enum:["never","always","multiline"],default:e.autoFindInSelection,enumDescriptions:[f("editor.find.autoFindInSelection.never","Never turn on Find in Selection automatically (default)."),f("editor.find.autoFindInSelection.always","Always turn on Find in Selection automatically."),f("editor.find.autoFindInSelection.multiline","Turn on Find in Selection automatically when multiple lines of content are selected.")],description:f("find.autoFindInSelection","Controls the condition for turning on Find in Selection automatically.")},"editor.find.globalFindClipboard":{type:"boolean",default:e.globalFindClipboard,description:f("find.globalFindClipboard","Controls whether the Find Widget should read or modify the shared find clipboard on macOS."),included:Ke},"editor.find.addExtraSpaceOnTop":{type:"boolean",default:e.addExtraSpaceOnTop,description:f("find.addExtraSpaceOnTop","Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.")},"editor.find.loop":{type:"boolean",default:e.loop,description:f("find.loop","Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{cursorMoveOnType:Le(t.cursorMoveOnType,this.defaultValue.cursorMoveOnType),seedSearchStringFromSelection:typeof e.seedSearchStringFromSelection=="boolean"?e.seedSearchStringFromSelection?"always":"never":Di(t.seedSearchStringFromSelection,this.defaultValue.seedSearchStringFromSelection,["never","always","selection"]),autoFindInSelection:typeof e.autoFindInSelection=="boolean"?e.autoFindInSelection?"always":"never":Di(t.autoFindInSelection,this.defaultValue.autoFindInSelection,["never","always","multiline"]),globalFindClipboard:Le(t.globalFindClipboard,this.defaultValue.globalFindClipboard),addExtraSpaceOnTop:Le(t.addExtraSpaceOnTop,this.defaultValue.addExtraSpaceOnTop),loop:Le(t.loop,this.defaultValue.loop)}}}class As extends Jt{constructor(){super(48,"fontLigatures",As.OFF,{anyOf:[{type:"boolean",description:f("fontLigatures","Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.")},{type:"string",description:f("fontFeatureSettings","Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.")}],description:f("fontLigaturesGeneral","Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property."),default:!1})}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e==="false"?As.OFF:e==="true"?As.ON:e:e?As.ON:As.OFF}}As.OFF='"liga" off, "calt" off';As.ON='"liga" on, "calt" on';class or extends Jt{constructor(){super(51,"fontVariations",or.OFF,{anyOf:[{type:"boolean",description:f("fontVariations","Enables/Disables the translation from font-weight to font-variation-settings. Change this to a string for fine-grained control of the 'font-variation-settings' CSS property.")},{type:"string",description:f("fontVariationSettings","Explicit 'font-variation-settings' CSS property. A boolean can be passed instead if one only needs to translate font-weight to font-variation-settings.")}],description:f("fontVariationsGeneral","Configures font variations. Can be either a boolean to enable/disable the translation from font-weight to font-variation-settings or a string for the value of the CSS 'font-variation-settings' property."),default:!1})}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e==="false"?or.OFF:e==="true"?or.TRANSLATE:e:e?or.TRANSLATE:or.OFF}compute(e,t,i){return e.fontInfo.fontVariationSettings}}or.OFF="normal";or.TRANSLATE="translate";class nW extends _f{constructor(){super(47)}compute(e,t,i){return e.fontInfo}}class sW extends bf{constructor(){super(49,"fontSize",ps.fontSize,{type:"number",minimum:6,maximum:100,default:ps.fontSize,description:f("fontSize","Controls the font size in pixels.")})}validate(e){const t=Xr.float(e,this.defaultValue);return t===0?ps.fontSize:Xr.clamp(t,6,100)}compute(e,t,i){return e.fontInfo.fontSize}}class Ur extends Jt{constructor(){super(50,"fontWeight",ps.fontWeight,{anyOf:[{type:"number",minimum:Ur.MINIMUM_VALUE,maximum:Ur.MAXIMUM_VALUE,errorMessage:f("fontWeightErrorMessage",'Only "normal" and "bold" keywords or numbers between 1 and 1000 are allowed.')},{type:"string",pattern:"^(normal|bold|1000|[1-9][0-9]{0,2})$"},{enum:Ur.SUGGESTION_VALUES}],default:ps.fontWeight,description:f("fontWeight",'Controls the font weight. Accepts "normal" and "bold" keywords or numbers between 1 and 1000.')})}validate(e){return e==="normal"||e==="bold"?e:String(Lt.clampedInt(e,ps.fontWeight,Ur.MINIMUM_VALUE,Ur.MAXIMUM_VALUE))}}Ur.SUGGESTION_VALUES=["normal","bold","100","200","300","400","500","600","700","800","900"];Ur.MINIMUM_VALUE=1;Ur.MAXIMUM_VALUE=1e3;class oW extends Jt{constructor(){const e={multiple:"peek",multipleDefinitions:"peek",multipleTypeDefinitions:"peek",multipleDeclarations:"peek",multipleImplementations:"peek",multipleReferences:"peek",alternativeDefinitionCommand:"editor.action.goToReferences",alternativeTypeDefinitionCommand:"editor.action.goToReferences",alternativeDeclarationCommand:"editor.action.goToReferences",alternativeImplementationCommand:"",alternativeReferenceCommand:""},t={type:"string",enum:["peek","gotoAndPeek","goto"],default:e.multiple,enumDescriptions:[f("editor.gotoLocation.multiple.peek","Show Peek view of the results (default)"),f("editor.gotoLocation.multiple.gotoAndPeek","Go to the primary result and show a Peek view"),f("editor.gotoLocation.multiple.goto","Go to the primary result and enable Peek-less navigation to others")]},i=["","editor.action.referenceSearch.trigger","editor.action.goToReferences","editor.action.peekImplementation","editor.action.goToImplementation","editor.action.peekTypeDefinition","editor.action.goToTypeDefinition","editor.action.peekDeclaration","editor.action.revealDeclaration","editor.action.peekDefinition","editor.action.revealDefinitionAside","editor.action.revealDefinition"];super(55,"gotoLocation",e,{"editor.gotoLocation.multiple":{deprecationMessage:f("editor.gotoLocation.multiple.deprecated","This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.")},"editor.gotoLocation.multipleDefinitions":Object.assign({description:f("editor.editor.gotoLocation.multipleDefinitions","Controls the behavior the 'Go to Definition'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleTypeDefinitions":Object.assign({description:f("editor.editor.gotoLocation.multipleTypeDefinitions","Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleDeclarations":Object.assign({description:f("editor.editor.gotoLocation.multipleDeclarations","Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleImplementations":Object.assign({description:f("editor.editor.gotoLocation.multipleImplemenattions","Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleReferences":Object.assign({description:f("editor.editor.gotoLocation.multipleReferences","Controls the behavior the 'Go to References'-command when multiple target locations exist.")},t),"editor.gotoLocation.alternativeDefinitionCommand":{type:"string",default:e.alternativeDefinitionCommand,enum:i,description:f("alternativeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Definition' is the current location.")},"editor.gotoLocation.alternativeTypeDefinitionCommand":{type:"string",default:e.alternativeTypeDefinitionCommand,enum:i,description:f("alternativeTypeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.")},"editor.gotoLocation.alternativeDeclarationCommand":{type:"string",default:e.alternativeDeclarationCommand,enum:i,description:f("alternativeDeclarationCommand","Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.")},"editor.gotoLocation.alternativeImplementationCommand":{type:"string",default:e.alternativeImplementationCommand,enum:i,description:f("alternativeImplementationCommand","Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.")},"editor.gotoLocation.alternativeReferenceCommand":{type:"string",default:e.alternativeReferenceCommand,enum:i,description:f("alternativeReferenceCommand","Alternative command id that is being executed when the result of 'Go to Reference' is the current location.")}})}validate(e){var t,i,n,s,r;if(!e||typeof e!="object")return this.defaultValue;const a=e;return{multiple:Di(a.multiple,this.defaultValue.multiple,["peek","gotoAndPeek","goto"]),multipleDefinitions:(t=a.multipleDefinitions)!==null&&t!==void 0?t:Di(a.multipleDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleTypeDefinitions:(i=a.multipleTypeDefinitions)!==null&&i!==void 0?i:Di(a.multipleTypeDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleDeclarations:(n=a.multipleDeclarations)!==null&&n!==void 0?n:Di(a.multipleDeclarations,"peek",["peek","gotoAndPeek","goto"]),multipleImplementations:(s=a.multipleImplementations)!==null&&s!==void 0?s:Di(a.multipleImplementations,"peek",["peek","gotoAndPeek","goto"]),multipleReferences:(r=a.multipleReferences)!==null&&r!==void 0?r:Di(a.multipleReferences,"peek",["peek","gotoAndPeek","goto"]),alternativeDefinitionCommand:ds.string(a.alternativeDefinitionCommand,this.defaultValue.alternativeDefinitionCommand),alternativeTypeDefinitionCommand:ds.string(a.alternativeTypeDefinitionCommand,this.defaultValue.alternativeTypeDefinitionCommand),alternativeDeclarationCommand:ds.string(a.alternativeDeclarationCommand,this.defaultValue.alternativeDeclarationCommand),alternativeImplementationCommand:ds.string(a.alternativeImplementationCommand,this.defaultValue.alternativeImplementationCommand),alternativeReferenceCommand:ds.string(a.alternativeReferenceCommand,this.defaultValue.alternativeReferenceCommand)}}}class rW extends Jt{constructor(){const e={enabled:!0,delay:300,sticky:!0,above:!0};super(57,"hover",e,{"editor.hover.enabled":{type:"boolean",default:e.enabled,description:f("hover.enabled","Controls whether the hover is shown.")},"editor.hover.delay":{type:"number",default:e.delay,minimum:0,maximum:1e4,description:f("hover.delay","Controls the delay in milliseconds after which the hover is shown.")},"editor.hover.sticky":{type:"boolean",default:e.sticky,description:f("hover.sticky","Controls whether the hover should remain visible when mouse is moved over it.")},"editor.hover.above":{type:"boolean",default:e.above,description:f("hover.above","Prefer showing hovers above the line, if there's space.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Le(t.enabled,this.defaultValue.enabled),delay:Lt.clampedInt(t.delay,this.defaultValue.delay,0,1e4),sticky:Le(t.sticky,this.defaultValue.sticky),above:Le(t.above,this.defaultValue.above)}}}class ag extends _f{constructor(){super(138)}compute(e,t,i){return ag.computeLayout(t,{memory:e.memory,outerWidth:e.outerWidth,outerHeight:e.outerHeight,isDominatedByLongLines:e.isDominatedByLongLines,lineHeight:e.fontInfo.lineHeight,viewLineCount:e.viewLineCount,lineNumbersDigitCount:e.lineNumbersDigitCount,typicalHalfwidthCharacterWidth:e.fontInfo.typicalHalfwidthCharacterWidth,maxDigitWidth:e.fontInfo.maxDigitWidth,pixelRatio:e.pixelRatio})}static computeContainedMinimapLineCount(e){const t=e.height/e.lineHeight,i=Math.floor(e.paddingTop/e.lineHeight);let n=Math.floor(e.paddingBottom/e.lineHeight);e.scrollBeyondLastLine&&(n=Math.max(n,t-1));const s=(i+e.viewLineCount+n)/(e.pixelRatio*e.height),r=Math.floor(e.viewLineCount/s);return{typicalViewportLineCount:t,extraLinesBeforeFirstLine:i,extraLinesBeyondLastLine:n,desiredRatio:s,minimapLineCount:r}}static _computeMinimapLayout(e,t){const i=e.outerWidth,n=e.outerHeight,s=e.pixelRatio;if(!e.minimap.enabled)return{renderMinimap:0,minimapLeft:0,minimapWidth:0,minimapHeightIsEditorHeight:!1,minimapIsSampling:!1,minimapScale:1,minimapLineHeight:1,minimapCanvasInnerWidth:0,minimapCanvasInnerHeight:Math.floor(s*n),minimapCanvasOuterWidth:0,minimapCanvasOuterHeight:n};const r=t.stableMinimapLayoutInput,a=r&&e.outerHeight===r.outerHeight&&e.lineHeight===r.lineHeight&&e.typicalHalfwidthCharacterWidth===r.typicalHalfwidthCharacterWidth&&e.pixelRatio===r.pixelRatio&&e.scrollBeyondLastLine===r.scrollBeyondLastLine&&e.paddingTop===r.paddingTop&&e.paddingBottom===r.paddingBottom&&e.minimap.enabled===r.minimap.enabled&&e.minimap.side===r.minimap.side&&e.minimap.size===r.minimap.size&&e.minimap.showSlider===r.minimap.showSlider&&e.minimap.renderCharacters===r.minimap.renderCharacters&&e.minimap.maxColumn===r.minimap.maxColumn&&e.minimap.scale===r.minimap.scale&&e.verticalScrollbarWidth===r.verticalScrollbarWidth&&e.isViewportWrapping===r.isViewportWrapping,l=e.lineHeight,c=e.typicalHalfwidthCharacterWidth,d=e.scrollBeyondLastLine,h=e.minimap.renderCharacters;let u=s>=2?Math.round(e.minimap.scale*2):e.minimap.scale;const g=e.minimap.maxColumn,p=e.minimap.size,m=e.minimap.side,_=e.verticalScrollbarWidth,v=e.viewLineCount,b=e.remainingWidth,C=e.isViewportWrapping,S=h?2:3;let x=Math.floor(s*n);const E=x/s;let L=!1,D=!1,k=S*u,R=u/s,P=1;if(p==="fill"||p==="fit"){const{typicalViewportLineCount:je,extraLinesBeforeFirstLine:Ie,extraLinesBeyondLastLine:Qe,desiredRatio:Xe,minimapLineCount:fe}=ag.computeContainedMinimapLineCount({viewLineCount:v,scrollBeyondLastLine:d,paddingTop:e.paddingTop,paddingBottom:e.paddingBottom,height:n,lineHeight:l,pixelRatio:s});if(v/fe>1)L=!0,D=!0,u=1,k=1,R=u/s;else{let yt=!1,ws=u+1;if(p==="fit"){const zi=Math.ceil((Ie+v+Qe)*k);C&&a&&b<=t.stableFitRemainingWidth?(yt=!0,ws=t.stableFitMaxMinimapScale):yt=zi>x}if(p==="fill"||yt){L=!0;const zi=u;k=Math.min(l*s,Math.max(1,Math.floor(1/Xe))),C&&a&&b<=t.stableFitRemainingWidth&&(ws=t.stableFitMaxMinimapScale),u=Math.min(ws,Math.max(1,Math.floor(k/S))),u>zi&&(P=Math.min(2,u/zi)),R=u/s/P,x=Math.ceil(Math.max(je,Ie+v+Qe)*k),C?(t.stableMinimapLayoutInput=e,t.stableFitRemainingWidth=b,t.stableFitMaxMinimapScale=u):(t.stableMinimapLayoutInput=null,t.stableFitRemainingWidth=0)}}}const B=Math.floor(g*R),z=Math.min(B,Math.max(0,Math.floor((b-_-2)*R/(c+R)))+Vl);let ne=Math.floor(s*z);const ue=ne/s;ne=Math.floor(ne*P);const ye=h?1:2,Fe=m==="left"?0:i-z-_;return{renderMinimap:ye,minimapLeft:Fe,minimapWidth:z,minimapHeightIsEditorHeight:L,minimapIsSampling:D,minimapScale:u,minimapLineHeight:k,minimapCanvasInnerWidth:ne,minimapCanvasInnerHeight:x,minimapCanvasOuterWidth:ue,minimapCanvasOuterHeight:E}}static computeLayout(e,t){const i=t.outerWidth|0,n=t.outerHeight|0,s=t.lineHeight|0,r=t.lineNumbersDigitCount|0,a=t.typicalHalfwidthCharacterWidth,l=t.maxDigitWidth,c=t.pixelRatio,d=t.viewLineCount,h=e.get(130),u=h==="inherit"?e.get(129):h,g=u==="inherit"?e.get(125):u,p=e.get(128),m=t.isDominatedByLongLines,_=e.get(54),v=e.get(64).renderType!==0,b=e.get(65),C=e.get(99),S=e.get(80),x=e.get(69),E=e.get(97),L=E.verticalScrollbarSize,D=E.verticalHasArrows,k=E.arrowSize,R=E.horizontalScrollbarSize,P=e.get(40),B=e.get(104)!=="never";let z=e.get(62);P&&B&&(z+=16);let ne=0;if(v){const El=Math.max(r,b);ne=Math.round(El*l)}let ue=0;_&&(ue=s);let ye=0,Fe=ye+ue,je=Fe+ne,Ie=je+z;const Qe=i-ue-ne-z;let Xe=!1,fe=!1,Se=-1;u==="inherit"&&m?(Xe=!0,fe=!0):g==="on"||g==="bounded"?fe=!0:g==="wordWrapColumn"&&(Se=p);const yt=ag._computeMinimapLayout({outerWidth:i,outerHeight:n,lineHeight:s,typicalHalfwidthCharacterWidth:a,pixelRatio:c,scrollBeyondLastLine:C,paddingTop:S.top,paddingBottom:S.bottom,minimap:x,verticalScrollbarWidth:L,viewLineCount:d,remainingWidth:Qe,isViewportWrapping:fe},t.memory||new I4);yt.renderMinimap!==0&&yt.minimapLeft===0&&(ye+=yt.minimapWidth,Fe+=yt.minimapWidth,je+=yt.minimapWidth,Ie+=yt.minimapWidth);const ws=Qe-yt.minimapWidth,zi=Math.max(1,Math.floor((ws-L-2)/a)),Ko=D?k:0;return fe&&(Se=Math.max(1,zi),g==="bounded"&&(Se=Math.min(Se,p))),{width:i,height:n,glyphMarginLeft:ye,glyphMarginWidth:ue,lineNumbersLeft:Fe,lineNumbersWidth:ne,decorationsLeft:je,decorationsWidth:z,contentLeft:Ie,contentWidth:ws,minimap:yt,viewportColumn:zi,isWordWrapMinified:Xe,isViewportWrapping:fe,wrappingColumn:Se,verticalScrollbarWidth:L,horizontalScrollbarHeight:R,overviewRuler:{top:Ko,width:L,height:n-2*Ko,right:0}}}}class aW extends Jt{constructor(){super(132,"wrappingStrategy","simple",{"editor.wrappingStrategy":{enumDescriptions:[f("wrappingStrategy.simple","Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width."),f("wrappingStrategy.advanced","Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.")],type:"string",enum:["simple","advanced"],default:"simple",description:f("wrappingStrategy","Controls the algorithm that computes wrapping points. Note that when in accessibility mode, advanced will be used for the best experience.")}})}validate(e){return Di(e,"simple",["simple","advanced"])}compute(e,t,i){return t.get(2)===2?"advanced":i}}class lW extends Jt{constructor(){const e={enabled:!0};super(61,"lightbulb",e,{"editor.lightbulb.enabled":{type:"boolean",default:e.enabled,description:f("codeActions","Enables the Code Action lightbulb in the editor.")}})}validate(e){return!e||typeof e!="object"?this.defaultValue:{enabled:Le(e.enabled,this.defaultValue.enabled)}}}class cW extends Jt{constructor(){const e={enabled:!1,maxLineCount:5};super(109,"stickyScroll",e,{"editor.stickyScroll.enabled":{type:"boolean",default:e.enabled,description:f("editor.stickyScroll","Shows the nested current scopes during the scroll at the top of the editor.")},"editor.stickyScroll.maxLineCount":{type:"number",default:e.maxLineCount,minimum:1,maximum:10,description:f("editor.stickyScroll.","Defines the maximum number of sticky lines to show.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Le(t.enabled,this.defaultValue.enabled),maxLineCount:Lt.clampedInt(t.maxLineCount,this.defaultValue.maxLineCount,1,10)}}}class dW extends Jt{constructor(){const e={enabled:"on",fontSize:0,fontFamily:"",padding:!1};super(134,"inlayHints",e,{"editor.inlayHints.enabled":{type:"string",default:e.enabled,description:f("inlayHints.enable","Enables the inlay hints in the editor."),enum:["on","onUnlessPressed","offUnlessPressed","off"],markdownEnumDescriptions:[f("editor.inlayHints.on","Inlay hints are enabled"),f("editor.inlayHints.onUnlessPressed","Inlay hints are showing by default and hide when holding {0}",Ke?"Ctrl+Option":"Ctrl+Alt"),f("editor.inlayHints.offUnlessPressed","Inlay hints are hidden by default and show when holding {0}",Ke?"Ctrl+Option":"Ctrl+Alt"),f("editor.inlayHints.off","Inlay hints are disabled")]},"editor.inlayHints.fontSize":{type:"number",default:e.fontSize,markdownDescription:f("inlayHints.fontSize","Controls font size of inlay hints in the editor. As default the {0} is used when the configured value is less than {1} or greater than the editor font size.","`#editor.fontSize#`","`5`")},"editor.inlayHints.fontFamily":{type:"string",default:e.fontFamily,markdownDescription:f("inlayHints.fontFamily","Controls font family of inlay hints in the editor. When set to empty, the {0} is used.","`#editor.fontFamily#`")},"editor.inlayHints.padding":{type:"boolean",default:e.padding,description:f("inlayHints.padding","Enables the padding around the inlay hints in the editor.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return typeof t.enabled=="boolean"&&(t.enabled=t.enabled?"on":"off"),{enabled:Di(t.enabled,this.defaultValue.enabled,["on","off","offUnlessPressed","onUnlessPressed"]),fontSize:Lt.clampedInt(t.fontSize,this.defaultValue.fontSize,0,100),fontFamily:ds.string(t.fontFamily,this.defaultValue.fontFamily),padding:Le(t.padding,this.defaultValue.padding)}}}class hW extends Jt{constructor(){super(62,"lineDecorationsWidth",10)}validate(e){return typeof e=="string"&&/^\d+(\.\d+)?ch$/.test(e)?-parseFloat(e.substring(0,e.length-2)):Lt.clampedInt(e,this.defaultValue,0,1e3)}compute(e,t,i){return i<0?Lt.clampedInt(-i*e.fontInfo.typicalHalfwidthCharacterWidth,this.defaultValue,0,1e3):i}}class uW extends Xr{constructor(){super(63,"lineHeight",ps.lineHeight,e=>Xr.clamp(e,0,150),{markdownDescription:f("lineHeight",`Controls the line height.
+var c6=Object.defineProperty;var d6=(o,e,t)=>e in o?c6(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Zt=(o,e,t)=>(d6(o,typeof e!="symbol"?e+"":e,t),t);import{bV as me,d as h6,bW as u6,aC as g6,bC as f6,r as p6,O as D2,w as kb,P as x2,Q as m6,o as _6,c as b6,bP as v6}from"./index-0c42270c.js";globalThis&&globalThis.__awaiter;let C6=typeof document<"u"&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;function w6(o,e){let t;return e.length===0?t=o:t=o.replace(/\{(\d+)\}/g,(i,n)=>{const s=n[0],r=e[s];let a=i;return typeof r=="string"?a=r:(typeof r=="number"||typeof r=="boolean"||r===void 0||r===null)&&(a=String(r)),a}),C6&&(t="["+t.replace(/[aouei]/g,"$&$&")+"]"),t}function f(o,e,...t){return w6(e,t)}var ES;const mp="en";let Iv=!1,Ev=!1,U0=!1,d4=!1,mE=!1,_E=!1,h4=!1,Ib,$0=mp,S6,Zo;const di=typeof self=="object"?self:typeof global=="object"?global:{};let Rn;typeof di.vscode<"u"&&typeof di.vscode.process<"u"?Rn=di.vscode.process:typeof process<"u"&&(Rn=process);const y6=typeof((ES=Rn==null?void 0:Rn.versions)===null||ES===void 0?void 0:ES.electron)=="string",L6=y6&&(Rn==null?void 0:Rn.type)==="renderer";if(typeof navigator=="object"&&!L6)Zo=navigator.userAgent,Iv=Zo.indexOf("Windows")>=0,Ev=Zo.indexOf("Macintosh")>=0,_E=(Zo.indexOf("Macintosh")>=0||Zo.indexOf("iPad")>=0||Zo.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,U0=Zo.indexOf("Linux")>=0,h4=(Zo==null?void 0:Zo.indexOf("Mobi"))>=0,mE=!0,f({key:"ensureLoaderPluginIsLoaded",comment:["{Locked}"]},"_"),Ib=mp,$0=Ib;else if(typeof Rn=="object"){Iv=Rn.platform==="win32",Ev=Rn.platform==="darwin",U0=Rn.platform==="linux",U0&&Rn.env.SNAP&&Rn.env.SNAP_REVISION,Rn.env.CI||Rn.env.BUILD_ARTIFACTSTAGINGDIRECTORY,Ib=mp,$0=mp;const o=Rn.env.VSCODE_NLS_CONFIG;if(o)try{const e=JSON.parse(o),t=e.availableLanguages["*"];Ib=e.locale,$0=t||mp,S6=e._translationsConfigFile}catch{}d4=!0}else console.error("Unable to resolve platform.");const Qi=Iv,Ke=Ev,hn=U0,ur=d4,Kc=mE,D6=mE&&typeof di.importScripts=="function",ga=_E,x6=h4,fa=Zo,k6=$0,I6=typeof di.postMessage=="function"&&!di.importScripts,u4=(()=>{if(I6){const o=[];di.addEventListener("message",t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let i=0,n=o.length;i{const i=++e;o.push({id:i,callback:t}),di.postMessage({vscodeScheduleAsyncWork:i},"*")}}return o=>setTimeout(o)})(),Ps=Ev||_E?2:Iv?1:3;let k2=!0,I2=!1;function g4(){if(!I2){I2=!0;const o=new Uint8Array(2);o[0]=1,o[1]=2,k2=new Uint16Array(o.buffer)[0]===512+1}return k2}const f4=!!(fa&&fa.indexOf("Chrome")>=0),E6=!!(fa&&fa.indexOf("Firefox")>=0),T6=!!(!f4&&fa&&fa.indexOf("Safari")>=0),N6=!!(fa&&fa.indexOf("Edg/")>=0);fa&&fa.indexOf("Android")>=0;var it;(function(o){function e(v){return v&&typeof v=="object"&&typeof v[Symbol.iterator]=="function"}o.is=e;const t=Object.freeze([]);function i(){return t}o.empty=i;function*n(v){yield v}o.single=n;function s(v){return e(v)?v:n(v)}o.wrap=s;function r(v){return v||t}o.from=r;function a(v){return!v||v[Symbol.iterator]().next().done===!0}o.isEmpty=a;function l(v){return v[Symbol.iterator]().next().value}o.first=l;function c(v,b){for(const C of v)if(b(C))return!0;return!1}o.some=c;function d(v,b){for(const C of v)if(b(C))return C}o.find=d;function*h(v,b){for(const C of v)b(C)&&(yield C)}o.filter=h;function*u(v,b){let C=0;for(const S of v)yield b(S,C++)}o.map=u;function*g(...v){for(const b of v)for(const C of b)yield C}o.concat=g;function p(v,b,C){let S=C;for(const x of v)S=b(S,x);return S}o.reduce=p;function*m(v,b,C=v.length){for(b<0&&(b+=v.length),C<0?C+=v.length:C>v.length&&(C=v.length);b{n||(n=!0,this._remove(i))}}shift(){if(this._first!==bi.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==bi.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==bi.Undefined&&e.next!==bi.Undefined){const t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===bi.Undefined&&e.next===bi.Undefined?(this._first=bi.Undefined,this._last=bi.Undefined):e.next===bi.Undefined?(this._last=this._last.prev,this._last.next=bi.Undefined):e.prev===bi.Undefined&&(this._first=this._first.next,this._first.prev=bi.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==bi.Undefined;)yield e.element,e=e.next}}const p4="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";function M6(o=""){let e="(-?\\d*\\.\\d\\w*)|([^";for(const t of p4)o.indexOf(t)>=0||(e+="\\"+t);return e+="\\s]+)",new RegExp(e,"g")}const bE=M6();function m4(o){let e=bE;if(o&&o instanceof RegExp)if(o.global)e=o;else{let t="g";o.ignoreCase&&(t+="i"),o.multiline&&(t+="m"),o.unicode&&(t+="u"),e=new RegExp(o.source,t)}return e.lastIndex=0,e}const _4=new ln;_4.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function _m(o,e,t,i,n){if(n||(n=it.first(_4)),t.length>n.maxLen){let c=o-n.maxLen/2;return c<0?c=0:i+=c,t=t.substring(c,o+n.maxLen/2),_m(o,e,t,i,n)}const s=Date.now(),r=o-1-i;let a=-1,l=null;for(let c=1;!(Date.now()-s>=n.timeBudget);c++){const d=r-n.windowSize*c;e.lastIndex=Math.max(0,d);const h=A6(e,t,r,a);if(!h&&l||(l=h,d<=0))break;a=d}if(l){const c={word:l[0],startColumn:i+1+l.index,endColumn:i+1+l.index+l[0].length};return e.lastIndex=0,c}return null}function A6(o,e,t,i){let n;for(;n=o.exec(e);){const s=n.index||0;if(s<=t&&o.lastIndex>=t)return n;if(i>0&&s>i)return null}return null}function Zs(o,e=0){return o[o.length-(1+e)]}function R6(o){if(o.length===0)throw new Error("Invalid tail call");return[o.slice(0,o.length-1),o[o.length-1]]}function Bn(o,e,t=(i,n)=>i===n){if(o===e)return!0;if(!o||!e||o.length!==e.length)return!1;for(let i=0,n=o.length;it(o[i],e))}function O6(o,e){let t=0,i=o-1;for(;t<=i;){const n=(t+i)/2|0,s=e(n);if(s<0)t=n+1;else if(s>0)i=n-1;else return n}return-(t+1)}function b4(o,e){let t=0,i=o.length;if(i===0)return 0;for(;t=e.length)throw new TypeError("invalid index");const i=e[Math.floor(e.length*Math.random())],n=[],s=[],r=[];for(const a of e){const l=t(a,i);l<0?n.push(a):l>0?s.push(a):r.push(a)}return o!!e)}function T2(o){let e=0;for(let t=0;t0}function Dc(o,e=t=>t){const t=new Set;return o.filter(i=>{const n=e(i);return t.has(n)?!1:(t.add(n),!0)})}function C4(o,e){const t=F6(o,e);if(t!==-1)return o[t]}function F6(o,e){for(let t=o.length-1;t>=0;t--){const i=o[t];if(e(i))return t}return-1}function w4(o,e){return o.length>0?o[0]:e}function Mn(o,e){let t=typeof e=="number"?o:0;typeof e=="number"?t=o:(t=0,e=o);const i=[];if(t<=e)for(let n=t;ne;n--)i.push(n);return i}function L1(o,e,t){const i=o.slice(0,e),n=o.slice(e);return i.concat(t,n)}function TS(o,e){const t=o.indexOf(e);t>-1&&(o.splice(t,1),o.unshift(e))}function Eb(o,e){const t=o.indexOf(e);t>-1&&(o.splice(t,1),o.push(e))}function N2(o,e){for(const t of e)o.push(t)}function vE(o){return Array.isArray(o)?o:[o]}function B6(o,e,t){const i=S4(o,e),n=o.length,s=t.length;o.length=n+s;for(let r=n-1;r>=i;r--)o[r+s]=o[r];for(let r=0;r0}o.isGreaterThan=t;function i(n){return n===0}o.isNeitherLessOrGreaterThan=i,o.greaterThan=1,o.lessThan=-1,o.neitherLessOrGreaterThan=0})(jL||(jL={}));function Vp(o,e){return(t,i)=>e(o(t),o(i))}const W6=(o,e)=>o-e;function y4(o,e){if(o.length===0)return;let t=o[0];for(let i=1;i0&&(t=n)}return t}function V6(o,e){if(o.length===0)return;let t=o[0];for(let i=1;i=0&&(t=n)}return t}function H6(o,e){return y4(o,(t,i)=>-e(t,i))}class Eg{constructor(e){this.items=e,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(e){let t=this.firstIdx;for(;t=0&&e(this.items[t]);)t--;const i=t===this.lastIdx?null:this.items.slice(t+1,this.lastIdx+1);return this.lastIdx=t,i}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const e=this.items[this.firstIdx];return this.firstIdx++,e}takeCount(e){const t=this.items.slice(this.firstIdx,this.firstIdx+e);return this.firstIdx+=e,t}}class aa{constructor(e){this.iterate=e}toArray(){const e=[];return this.iterate(t=>(e.push(t),!0)),e}filter(e){return new aa(t=>this.iterate(i=>e(i)?t(i):!0))}map(e){return new aa(t=>this.iterate(i=>t(e(i))))}findLast(e){let t;return this.iterate(i=>(e(i)&&(t=i),!0)),t}findLastMaxBy(e){let t,i=!0;return this.iterate(n=>((i||jL.isGreaterThan(e(n,t)))&&(i=!1,t=n),!0)),t}}aa.empty=new aa(o=>{});function Wn(o){return typeof o=="string"}function Xn(o){return typeof o=="object"&&o!==null&&!Array.isArray(o)&&!(o instanceof RegExp)&&!(o instanceof Date)}function z6(o){const e=Object.getPrototypeOf(Uint8Array);return typeof o=="object"&&o instanceof e}function xc(o){return typeof o=="number"&&!isNaN(o)}function A2(o){return!!o&&typeof o[Symbol.iterator]=="function"}function L4(o){return o===!0||o===!1}function us(o){return typeof o>"u"}function U6(o){return!Ms(o)}function Ms(o){return us(o)||o===null}function _t(o,e){if(!o)throw new Error(e?`Unexpected type, expected '${e}'`:"Unexpected type")}function Fu(o){if(Ms(o))throw new Error("Assertion Failed: argument is undefined or null");return o}function Tv(o){return typeof o=="function"}function $6(o,e){const t=Math.min(o.length,e.length);for(let i=0;i{e[t]=i&&typeof i=="object"?qa(i):i}),e}function K6(o){if(!o||typeof o!="object")return o;const e=[o];for(;e.length>0;){const t=e.shift();Object.freeze(t);for(const i in t)if(D4.call(t,i)){const n=t[i];typeof n=="object"&&!Object.isFrozen(n)&&!z6(n)&&e.push(n)}}return o}const D4=Object.prototype.hasOwnProperty;function x4(o,e){return KL(o,e,new Set)}function KL(o,e,t){if(Ms(o))return o;const i=e(o);if(typeof i<"u")return i;if(Array.isArray(o)){const n=[];for(const s of o)n.push(KL(s,e,t));return n}if(Xn(o)){if(t.has(o))throw new Error("Cannot clone recursive data-structure");t.add(o);const n={};for(const s in o)D4.call(o,s)&&(n[s]=KL(o[s],e,t));return t.delete(o),n}return o}function B_(o,e,t=!0){return Xn(o)?(Xn(e)&&Object.keys(e).forEach(i=>{i in o?t&&(Xn(o[i])&&Xn(e[i])?B_(o[i],e[i],t):o[i]=e[i]):o[i]=e[i]}),o):e}function so(o,e){if(o===e)return!0;if(o==null||e===null||e===void 0||typeof o!=typeof e||typeof o!="object"||Array.isArray(o)!==Array.isArray(e))return!1;let t,i;if(Array.isArray(o)){if(o.length!==e.length)return!1;for(t=0;tfunction(){const s=Array.prototype.slice.call(arguments,0);return e(n,s)},i={};for(const n of o)i[n]=t(n);return i}const _n={tabSize:4,indentSize:4,insertSpaces:!0,detectIndentation:!0,trimAutoWhitespace:!0,largeFileOptimizations:!0,bracketPairColorizationOptions:{enabled:!0,independentColorPoolPerBracketType:!1}},Vl=8;class k4{constructor(e){this._values=e}hasChanged(e){return this._values[e]}}class I4{constructor(){this.stableMinimapLayoutInput=null,this.stableFitMaxMinimapScale=0,this.stableFitRemainingWidth=0}}class Jt{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}applyUpdate(e,t){return D1(e,t)}compute(e,t,i){return i}}class Hp{constructor(e,t){this.newValue=e,this.didChange=t}}function D1(o,e){if(typeof o!="object"||typeof e!="object"||!o||!e)return new Hp(e,o!==e);if(Array.isArray(o)||Array.isArray(e)){const i=Array.isArray(o)&&Array.isArray(e)&&Bn(o,e);return new Hp(e,!i)}let t=!1;for(const i in e)if(e.hasOwnProperty(i)){const n=D1(o[i],e[i]);n.didChange&&(o[i]=n.newValue,t=!0)}return new Hp(o,t)}class _f{constructor(e){this.schema=void 0,this.id=e,this.name="_never_",this.defaultValue=void 0}applyUpdate(e,t){return D1(e,t)}validate(e){return this.defaultValue}}class bf{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}applyUpdate(e,t){return D1(e,t)}validate(e){return typeof e>"u"?this.defaultValue:e}compute(e,t,i){return i}}function Le(o,e){return typeof o>"u"?e:o==="false"?!1:!!o}class ct extends bf{constructor(e,t,i,n=void 0){typeof n<"u"&&(n.type="boolean",n.default=i),super(e,t,i,n)}validate(e){return Le(e,this.defaultValue)}}function qL(o,e,t,i){if(typeof o>"u")return e;let n=parseInt(o,10);return isNaN(n)?e:(n=Math.max(t,n),n=Math.min(i,n),n|0)}class Lt extends bf{static clampedInt(e,t,i,n){return qL(e,t,i,n)}constructor(e,t,i,n,s,r=void 0){typeof r<"u"&&(r.type="integer",r.default=i,r.minimum=n,r.maximum=s),super(e,t,i,r),this.minimum=n,this.maximum=s}validate(e){return Lt.clampedInt(e,this.defaultValue,this.minimum,this.maximum)}}class Xr extends bf{static clamp(e,t,i){return ei?i:e}static float(e,t){if(typeof e=="number")return e;if(typeof e>"u")return t;const i=parseFloat(e);return isNaN(i)?t:i}constructor(e,t,i,n,s){typeof s<"u"&&(s.type="number",s.default=i),super(e,t,i,s),this.validationFn=n}validate(e){return this.validationFn(Xr.float(e,this.defaultValue))}}class ds extends bf{static string(e,t){return typeof e!="string"?t:e}constructor(e,t,i,n=void 0){typeof n<"u"&&(n.type="string",n.default=i),super(e,t,i,n)}validate(e){return ds.string(e,this.defaultValue)}}function Di(o,e,t){return typeof o!="string"||t.indexOf(o)===-1?e:o}class ai extends bf{constructor(e,t,i,n,s=void 0){typeof s<"u"&&(s.type="string",s.enum=n,s.default=i),super(e,t,i,s),this._allowedValues=n}validate(e){return Di(e,this.defaultValue,this._allowedValues)}}class Tb extends Jt{constructor(e,t,i,n,s,r,a=void 0){typeof a<"u"&&(a.type="string",a.enum=s,a.default=n),super(e,t,i,a),this._allowedValues=s,this._convert=r}validate(e){return typeof e!="string"?this.defaultValue:this._allowedValues.indexOf(e)===-1?this.defaultValue:this._convert(e)}}function Z6(o){switch(o){case"none":return 0;case"keep":return 1;case"brackets":return 2;case"advanced":return 3;case"full":return 4}}class Y6 extends Jt{constructor(){super(2,"accessibilitySupport",0,{type:"string",enum:["auto","on","off"],enumDescriptions:[f("accessibilitySupport.auto","Use platform APIs to detect when a Screen Reader is attached"),f("accessibilitySupport.on","Optimize for usage with a Screen Reader"),f("accessibilitySupport.off","Assume a screen reader is not attached")],default:"auto",tags:["accessibility"],description:f("accessibilitySupport","Controls if the UI should run in a mode where it is optimized for screen readers.")})}validate(e){switch(e){case"auto":return 0;case"off":return 1;case"on":return 2}return this.defaultValue}compute(e,t,i){return i===0?e.accessibilitySupport:i}}class Q6 extends Jt{constructor(){const e={insertSpace:!0,ignoreEmptyLines:!0};super(20,"comments",e,{"editor.comments.insertSpace":{type:"boolean",default:e.insertSpace,description:f("comments.insertSpace","Controls whether a space character is inserted when commenting.")},"editor.comments.ignoreEmptyLines":{type:"boolean",default:e.ignoreEmptyLines,description:f("comments.ignoreEmptyLines","Controls if empty lines should be ignored with toggle, add or remove actions for line comments.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{insertSpace:Le(t.insertSpace,this.defaultValue.insertSpace),ignoreEmptyLines:Le(t.ignoreEmptyLines,this.defaultValue.ignoreEmptyLines)}}}function X6(o){switch(o){case"blink":return 1;case"smooth":return 2;case"phase":return 3;case"expand":return 4;case"solid":return 5}}var Gi;(function(o){o[o.Line=1]="Line",o[o.Block=2]="Block",o[o.Underline=3]="Underline",o[o.LineThin=4]="LineThin",o[o.BlockOutline=5]="BlockOutline",o[o.UnderlineThin=6]="UnderlineThin"})(Gi||(Gi={}));function J6(o){switch(o){case"line":return Gi.Line;case"block":return Gi.Block;case"underline":return Gi.Underline;case"line-thin":return Gi.LineThin;case"block-outline":return Gi.BlockOutline;case"underline-thin":return Gi.UnderlineThin}}class eW extends _f{constructor(){super(135)}compute(e,t,i){const n=["monaco-editor"];return t.get(36)&&n.push(t.get(36)),e.extraEditorClassName&&n.push(e.extraEditorClassName),t.get(70)==="default"?n.push("mouse-default"):t.get(70)==="copy"&&n.push("mouse-copy"),t.get(105)&&n.push("showUnused"),t.get(133)&&n.push("showDeprecated"),n.join(" ")}}class tW extends ct{constructor(){super(34,"emptySelectionClipboard",!0,{description:f("emptySelectionClipboard","Controls whether copying without a selection copies the current line.")})}compute(e,t,i){return i&&e.emptySelectionClipboard}}class iW extends Jt{constructor(){const e={cursorMoveOnType:!0,seedSearchStringFromSelection:"always",autoFindInSelection:"never",globalFindClipboard:!1,addExtraSpaceOnTop:!0,loop:!0};super(38,"find",e,{"editor.find.cursorMoveOnType":{type:"boolean",default:e.cursorMoveOnType,description:f("find.cursorMoveOnType","Controls whether the cursor should jump to find matches while typing.")},"editor.find.seedSearchStringFromSelection":{type:"string",enum:["never","always","selection"],default:e.seedSearchStringFromSelection,enumDescriptions:[f("editor.find.seedSearchStringFromSelection.never","Never seed search string from the editor selection."),f("editor.find.seedSearchStringFromSelection.always","Always seed search string from the editor selection, including word at cursor position."),f("editor.find.seedSearchStringFromSelection.selection","Only seed search string from the editor selection.")],description:f("find.seedSearchStringFromSelection","Controls whether the search string in the Find Widget is seeded from the editor selection.")},"editor.find.autoFindInSelection":{type:"string",enum:["never","always","multiline"],default:e.autoFindInSelection,enumDescriptions:[f("editor.find.autoFindInSelection.never","Never turn on Find in Selection automatically (default)."),f("editor.find.autoFindInSelection.always","Always turn on Find in Selection automatically."),f("editor.find.autoFindInSelection.multiline","Turn on Find in Selection automatically when multiple lines of content are selected.")],description:f("find.autoFindInSelection","Controls the condition for turning on Find in Selection automatically.")},"editor.find.globalFindClipboard":{type:"boolean",default:e.globalFindClipboard,description:f("find.globalFindClipboard","Controls whether the Find Widget should read or modify the shared find clipboard on macOS."),included:Ke},"editor.find.addExtraSpaceOnTop":{type:"boolean",default:e.addExtraSpaceOnTop,description:f("find.addExtraSpaceOnTop","Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.")},"editor.find.loop":{type:"boolean",default:e.loop,description:f("find.loop","Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{cursorMoveOnType:Le(t.cursorMoveOnType,this.defaultValue.cursorMoveOnType),seedSearchStringFromSelection:typeof e.seedSearchStringFromSelection=="boolean"?e.seedSearchStringFromSelection?"always":"never":Di(t.seedSearchStringFromSelection,this.defaultValue.seedSearchStringFromSelection,["never","always","selection"]),autoFindInSelection:typeof e.autoFindInSelection=="boolean"?e.autoFindInSelection?"always":"never":Di(t.autoFindInSelection,this.defaultValue.autoFindInSelection,["never","always","multiline"]),globalFindClipboard:Le(t.globalFindClipboard,this.defaultValue.globalFindClipboard),addExtraSpaceOnTop:Le(t.addExtraSpaceOnTop,this.defaultValue.addExtraSpaceOnTop),loop:Le(t.loop,this.defaultValue.loop)}}}class As extends Jt{constructor(){super(48,"fontLigatures",As.OFF,{anyOf:[{type:"boolean",description:f("fontLigatures","Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.")},{type:"string",description:f("fontFeatureSettings","Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.")}],description:f("fontLigaturesGeneral","Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property."),default:!1})}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e==="false"?As.OFF:e==="true"?As.ON:e:e?As.ON:As.OFF}}As.OFF='"liga" off, "calt" off';As.ON='"liga" on, "calt" on';class or extends Jt{constructor(){super(51,"fontVariations",or.OFF,{anyOf:[{type:"boolean",description:f("fontVariations","Enables/Disables the translation from font-weight to font-variation-settings. Change this to a string for fine-grained control of the 'font-variation-settings' CSS property.")},{type:"string",description:f("fontVariationSettings","Explicit 'font-variation-settings' CSS property. A boolean can be passed instead if one only needs to translate font-weight to font-variation-settings.")}],description:f("fontVariationsGeneral","Configures font variations. Can be either a boolean to enable/disable the translation from font-weight to font-variation-settings or a string for the value of the CSS 'font-variation-settings' property."),default:!1})}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e==="false"?or.OFF:e==="true"?or.TRANSLATE:e:e?or.TRANSLATE:or.OFF}compute(e,t,i){return e.fontInfo.fontVariationSettings}}or.OFF="normal";or.TRANSLATE="translate";class nW extends _f{constructor(){super(47)}compute(e,t,i){return e.fontInfo}}class sW extends bf{constructor(){super(49,"fontSize",ps.fontSize,{type:"number",minimum:6,maximum:100,default:ps.fontSize,description:f("fontSize","Controls the font size in pixels.")})}validate(e){const t=Xr.float(e,this.defaultValue);return t===0?ps.fontSize:Xr.clamp(t,6,100)}compute(e,t,i){return e.fontInfo.fontSize}}class Ur extends Jt{constructor(){super(50,"fontWeight",ps.fontWeight,{anyOf:[{type:"number",minimum:Ur.MINIMUM_VALUE,maximum:Ur.MAXIMUM_VALUE,errorMessage:f("fontWeightErrorMessage",'Only "normal" and "bold" keywords or numbers between 1 and 1000 are allowed.')},{type:"string",pattern:"^(normal|bold|1000|[1-9][0-9]{0,2})$"},{enum:Ur.SUGGESTION_VALUES}],default:ps.fontWeight,description:f("fontWeight",'Controls the font weight. Accepts "normal" and "bold" keywords or numbers between 1 and 1000.')})}validate(e){return e==="normal"||e==="bold"?e:String(Lt.clampedInt(e,ps.fontWeight,Ur.MINIMUM_VALUE,Ur.MAXIMUM_VALUE))}}Ur.SUGGESTION_VALUES=["normal","bold","100","200","300","400","500","600","700","800","900"];Ur.MINIMUM_VALUE=1;Ur.MAXIMUM_VALUE=1e3;class oW extends Jt{constructor(){const e={multiple:"peek",multipleDefinitions:"peek",multipleTypeDefinitions:"peek",multipleDeclarations:"peek",multipleImplementations:"peek",multipleReferences:"peek",alternativeDefinitionCommand:"editor.action.goToReferences",alternativeTypeDefinitionCommand:"editor.action.goToReferences",alternativeDeclarationCommand:"editor.action.goToReferences",alternativeImplementationCommand:"",alternativeReferenceCommand:""},t={type:"string",enum:["peek","gotoAndPeek","goto"],default:e.multiple,enumDescriptions:[f("editor.gotoLocation.multiple.peek","Show Peek view of the results (default)"),f("editor.gotoLocation.multiple.gotoAndPeek","Go to the primary result and show a Peek view"),f("editor.gotoLocation.multiple.goto","Go to the primary result and enable Peek-less navigation to others")]},i=["","editor.action.referenceSearch.trigger","editor.action.goToReferences","editor.action.peekImplementation","editor.action.goToImplementation","editor.action.peekTypeDefinition","editor.action.goToTypeDefinition","editor.action.peekDeclaration","editor.action.revealDeclaration","editor.action.peekDefinition","editor.action.revealDefinitionAside","editor.action.revealDefinition"];super(55,"gotoLocation",e,{"editor.gotoLocation.multiple":{deprecationMessage:f("editor.gotoLocation.multiple.deprecated","This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.")},"editor.gotoLocation.multipleDefinitions":Object.assign({description:f("editor.editor.gotoLocation.multipleDefinitions","Controls the behavior the 'Go to Definition'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleTypeDefinitions":Object.assign({description:f("editor.editor.gotoLocation.multipleTypeDefinitions","Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleDeclarations":Object.assign({description:f("editor.editor.gotoLocation.multipleDeclarations","Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleImplementations":Object.assign({description:f("editor.editor.gotoLocation.multipleImplemenattions","Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleReferences":Object.assign({description:f("editor.editor.gotoLocation.multipleReferences","Controls the behavior the 'Go to References'-command when multiple target locations exist.")},t),"editor.gotoLocation.alternativeDefinitionCommand":{type:"string",default:e.alternativeDefinitionCommand,enum:i,description:f("alternativeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Definition' is the current location.")},"editor.gotoLocation.alternativeTypeDefinitionCommand":{type:"string",default:e.alternativeTypeDefinitionCommand,enum:i,description:f("alternativeTypeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.")},"editor.gotoLocation.alternativeDeclarationCommand":{type:"string",default:e.alternativeDeclarationCommand,enum:i,description:f("alternativeDeclarationCommand","Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.")},"editor.gotoLocation.alternativeImplementationCommand":{type:"string",default:e.alternativeImplementationCommand,enum:i,description:f("alternativeImplementationCommand","Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.")},"editor.gotoLocation.alternativeReferenceCommand":{type:"string",default:e.alternativeReferenceCommand,enum:i,description:f("alternativeReferenceCommand","Alternative command id that is being executed when the result of 'Go to Reference' is the current location.")}})}validate(e){var t,i,n,s,r;if(!e||typeof e!="object")return this.defaultValue;const a=e;return{multiple:Di(a.multiple,this.defaultValue.multiple,["peek","gotoAndPeek","goto"]),multipleDefinitions:(t=a.multipleDefinitions)!==null&&t!==void 0?t:Di(a.multipleDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleTypeDefinitions:(i=a.multipleTypeDefinitions)!==null&&i!==void 0?i:Di(a.multipleTypeDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleDeclarations:(n=a.multipleDeclarations)!==null&&n!==void 0?n:Di(a.multipleDeclarations,"peek",["peek","gotoAndPeek","goto"]),multipleImplementations:(s=a.multipleImplementations)!==null&&s!==void 0?s:Di(a.multipleImplementations,"peek",["peek","gotoAndPeek","goto"]),multipleReferences:(r=a.multipleReferences)!==null&&r!==void 0?r:Di(a.multipleReferences,"peek",["peek","gotoAndPeek","goto"]),alternativeDefinitionCommand:ds.string(a.alternativeDefinitionCommand,this.defaultValue.alternativeDefinitionCommand),alternativeTypeDefinitionCommand:ds.string(a.alternativeTypeDefinitionCommand,this.defaultValue.alternativeTypeDefinitionCommand),alternativeDeclarationCommand:ds.string(a.alternativeDeclarationCommand,this.defaultValue.alternativeDeclarationCommand),alternativeImplementationCommand:ds.string(a.alternativeImplementationCommand,this.defaultValue.alternativeImplementationCommand),alternativeReferenceCommand:ds.string(a.alternativeReferenceCommand,this.defaultValue.alternativeReferenceCommand)}}}class rW extends Jt{constructor(){const e={enabled:!0,delay:300,sticky:!0,above:!0};super(57,"hover",e,{"editor.hover.enabled":{type:"boolean",default:e.enabled,description:f("hover.enabled","Controls whether the hover is shown.")},"editor.hover.delay":{type:"number",default:e.delay,minimum:0,maximum:1e4,description:f("hover.delay","Controls the delay in milliseconds after which the hover is shown.")},"editor.hover.sticky":{type:"boolean",default:e.sticky,description:f("hover.sticky","Controls whether the hover should remain visible when mouse is moved over it.")},"editor.hover.above":{type:"boolean",default:e.above,description:f("hover.above","Prefer showing hovers above the line, if there's space.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Le(t.enabled,this.defaultValue.enabled),delay:Lt.clampedInt(t.delay,this.defaultValue.delay,0,1e4),sticky:Le(t.sticky,this.defaultValue.sticky),above:Le(t.above,this.defaultValue.above)}}}class ag extends _f{constructor(){super(138)}compute(e,t,i){return ag.computeLayout(t,{memory:e.memory,outerWidth:e.outerWidth,outerHeight:e.outerHeight,isDominatedByLongLines:e.isDominatedByLongLines,lineHeight:e.fontInfo.lineHeight,viewLineCount:e.viewLineCount,lineNumbersDigitCount:e.lineNumbersDigitCount,typicalHalfwidthCharacterWidth:e.fontInfo.typicalHalfwidthCharacterWidth,maxDigitWidth:e.fontInfo.maxDigitWidth,pixelRatio:e.pixelRatio})}static computeContainedMinimapLineCount(e){const t=e.height/e.lineHeight,i=Math.floor(e.paddingTop/e.lineHeight);let n=Math.floor(e.paddingBottom/e.lineHeight);e.scrollBeyondLastLine&&(n=Math.max(n,t-1));const s=(i+e.viewLineCount+n)/(e.pixelRatio*e.height),r=Math.floor(e.viewLineCount/s);return{typicalViewportLineCount:t,extraLinesBeforeFirstLine:i,extraLinesBeyondLastLine:n,desiredRatio:s,minimapLineCount:r}}static _computeMinimapLayout(e,t){const i=e.outerWidth,n=e.outerHeight,s=e.pixelRatio;if(!e.minimap.enabled)return{renderMinimap:0,minimapLeft:0,minimapWidth:0,minimapHeightIsEditorHeight:!1,minimapIsSampling:!1,minimapScale:1,minimapLineHeight:1,minimapCanvasInnerWidth:0,minimapCanvasInnerHeight:Math.floor(s*n),minimapCanvasOuterWidth:0,minimapCanvasOuterHeight:n};const r=t.stableMinimapLayoutInput,a=r&&e.outerHeight===r.outerHeight&&e.lineHeight===r.lineHeight&&e.typicalHalfwidthCharacterWidth===r.typicalHalfwidthCharacterWidth&&e.pixelRatio===r.pixelRatio&&e.scrollBeyondLastLine===r.scrollBeyondLastLine&&e.paddingTop===r.paddingTop&&e.paddingBottom===r.paddingBottom&&e.minimap.enabled===r.minimap.enabled&&e.minimap.side===r.minimap.side&&e.minimap.size===r.minimap.size&&e.minimap.showSlider===r.minimap.showSlider&&e.minimap.renderCharacters===r.minimap.renderCharacters&&e.minimap.maxColumn===r.minimap.maxColumn&&e.minimap.scale===r.minimap.scale&&e.verticalScrollbarWidth===r.verticalScrollbarWidth&&e.isViewportWrapping===r.isViewportWrapping,l=e.lineHeight,c=e.typicalHalfwidthCharacterWidth,d=e.scrollBeyondLastLine,h=e.minimap.renderCharacters;let u=s>=2?Math.round(e.minimap.scale*2):e.minimap.scale;const g=e.minimap.maxColumn,p=e.minimap.size,m=e.minimap.side,_=e.verticalScrollbarWidth,v=e.viewLineCount,b=e.remainingWidth,C=e.isViewportWrapping,S=h?2:3;let x=Math.floor(s*n);const E=x/s;let L=!1,D=!1,k=S*u,R=u/s,P=1;if(p==="fill"||p==="fit"){const{typicalViewportLineCount:je,extraLinesBeforeFirstLine:Ie,extraLinesBeyondLastLine:Qe,desiredRatio:Xe,minimapLineCount:fe}=ag.computeContainedMinimapLineCount({viewLineCount:v,scrollBeyondLastLine:d,paddingTop:e.paddingTop,paddingBottom:e.paddingBottom,height:n,lineHeight:l,pixelRatio:s});if(v/fe>1)L=!0,D=!0,u=1,k=1,R=u/s;else{let yt=!1,ws=u+1;if(p==="fit"){const zi=Math.ceil((Ie+v+Qe)*k);C&&a&&b<=t.stableFitRemainingWidth?(yt=!0,ws=t.stableFitMaxMinimapScale):yt=zi>x}if(p==="fill"||yt){L=!0;const zi=u;k=Math.min(l*s,Math.max(1,Math.floor(1/Xe))),C&&a&&b<=t.stableFitRemainingWidth&&(ws=t.stableFitMaxMinimapScale),u=Math.min(ws,Math.max(1,Math.floor(k/S))),u>zi&&(P=Math.min(2,u/zi)),R=u/s/P,x=Math.ceil(Math.max(je,Ie+v+Qe)*k),C?(t.stableMinimapLayoutInput=e,t.stableFitRemainingWidth=b,t.stableFitMaxMinimapScale=u):(t.stableMinimapLayoutInput=null,t.stableFitRemainingWidth=0)}}}const B=Math.floor(g*R),z=Math.min(B,Math.max(0,Math.floor((b-_-2)*R/(c+R)))+Vl);let ne=Math.floor(s*z);const ue=ne/s;ne=Math.floor(ne*P);const ye=h?1:2,Fe=m==="left"?0:i-z-_;return{renderMinimap:ye,minimapLeft:Fe,minimapWidth:z,minimapHeightIsEditorHeight:L,minimapIsSampling:D,minimapScale:u,minimapLineHeight:k,minimapCanvasInnerWidth:ne,minimapCanvasInnerHeight:x,minimapCanvasOuterWidth:ue,minimapCanvasOuterHeight:E}}static computeLayout(e,t){const i=t.outerWidth|0,n=t.outerHeight|0,s=t.lineHeight|0,r=t.lineNumbersDigitCount|0,a=t.typicalHalfwidthCharacterWidth,l=t.maxDigitWidth,c=t.pixelRatio,d=t.viewLineCount,h=e.get(130),u=h==="inherit"?e.get(129):h,g=u==="inherit"?e.get(125):u,p=e.get(128),m=t.isDominatedByLongLines,_=e.get(54),v=e.get(64).renderType!==0,b=e.get(65),C=e.get(99),S=e.get(80),x=e.get(69),E=e.get(97),L=E.verticalScrollbarSize,D=E.verticalHasArrows,k=E.arrowSize,R=E.horizontalScrollbarSize,P=e.get(40),B=e.get(104)!=="never";let z=e.get(62);P&&B&&(z+=16);let ne=0;if(v){const El=Math.max(r,b);ne=Math.round(El*l)}let ue=0;_&&(ue=s);let ye=0,Fe=ye+ue,je=Fe+ne,Ie=je+z;const Qe=i-ue-ne-z;let Xe=!1,fe=!1,Se=-1;u==="inherit"&&m?(Xe=!0,fe=!0):g==="on"||g==="bounded"?fe=!0:g==="wordWrapColumn"&&(Se=p);const yt=ag._computeMinimapLayout({outerWidth:i,outerHeight:n,lineHeight:s,typicalHalfwidthCharacterWidth:a,pixelRatio:c,scrollBeyondLastLine:C,paddingTop:S.top,paddingBottom:S.bottom,minimap:x,verticalScrollbarWidth:L,viewLineCount:d,remainingWidth:Qe,isViewportWrapping:fe},t.memory||new I4);yt.renderMinimap!==0&&yt.minimapLeft===0&&(ye+=yt.minimapWidth,Fe+=yt.minimapWidth,je+=yt.minimapWidth,Ie+=yt.minimapWidth);const ws=Qe-yt.minimapWidth,zi=Math.max(1,Math.floor((ws-L-2)/a)),Ko=D?k:0;return fe&&(Se=Math.max(1,zi),g==="bounded"&&(Se=Math.min(Se,p))),{width:i,height:n,glyphMarginLeft:ye,glyphMarginWidth:ue,lineNumbersLeft:Fe,lineNumbersWidth:ne,decorationsLeft:je,decorationsWidth:z,contentLeft:Ie,contentWidth:ws,minimap:yt,viewportColumn:zi,isWordWrapMinified:Xe,isViewportWrapping:fe,wrappingColumn:Se,verticalScrollbarWidth:L,horizontalScrollbarHeight:R,overviewRuler:{top:Ko,width:L,height:n-2*Ko,right:0}}}}class aW extends Jt{constructor(){super(132,"wrappingStrategy","simple",{"editor.wrappingStrategy":{enumDescriptions:[f("wrappingStrategy.simple","Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width."),f("wrappingStrategy.advanced","Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.")],type:"string",enum:["simple","advanced"],default:"simple",description:f("wrappingStrategy","Controls the algorithm that computes wrapping points. Note that when in accessibility mode, advanced will be used for the best experience.")}})}validate(e){return Di(e,"simple",["simple","advanced"])}compute(e,t,i){return t.get(2)===2?"advanced":i}}class lW extends Jt{constructor(){const e={enabled:!0};super(61,"lightbulb",e,{"editor.lightbulb.enabled":{type:"boolean",default:e.enabled,description:f("codeActions","Enables the Code Action lightbulb in the editor.")}})}validate(e){return!e||typeof e!="object"?this.defaultValue:{enabled:Le(e.enabled,this.defaultValue.enabled)}}}class cW extends Jt{constructor(){const e={enabled:!1,maxLineCount:5};super(109,"stickyScroll",e,{"editor.stickyScroll.enabled":{type:"boolean",default:e.enabled,description:f("editor.stickyScroll","Shows the nested current scopes during the scroll at the top of the editor.")},"editor.stickyScroll.maxLineCount":{type:"number",default:e.maxLineCount,minimum:1,maximum:10,description:f("editor.stickyScroll.","Defines the maximum number of sticky lines to show.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Le(t.enabled,this.defaultValue.enabled),maxLineCount:Lt.clampedInt(t.maxLineCount,this.defaultValue.maxLineCount,1,10)}}}class dW extends Jt{constructor(){const e={enabled:"on",fontSize:0,fontFamily:"",padding:!1};super(134,"inlayHints",e,{"editor.inlayHints.enabled":{type:"string",default:e.enabled,description:f("inlayHints.enable","Enables the inlay hints in the editor."),enum:["on","onUnlessPressed","offUnlessPressed","off"],markdownEnumDescriptions:[f("editor.inlayHints.on","Inlay hints are enabled"),f("editor.inlayHints.onUnlessPressed","Inlay hints are showing by default and hide when holding {0}",Ke?"Ctrl+Option":"Ctrl+Alt"),f("editor.inlayHints.offUnlessPressed","Inlay hints are hidden by default and show when holding {0}",Ke?"Ctrl+Option":"Ctrl+Alt"),f("editor.inlayHints.off","Inlay hints are disabled")]},"editor.inlayHints.fontSize":{type:"number",default:e.fontSize,markdownDescription:f("inlayHints.fontSize","Controls font size of inlay hints in the editor. As default the {0} is used when the configured value is less than {1} or greater than the editor font size.","`#editor.fontSize#`","`5`")},"editor.inlayHints.fontFamily":{type:"string",default:e.fontFamily,markdownDescription:f("inlayHints.fontFamily","Controls font family of inlay hints in the editor. When set to empty, the {0} is used.","`#editor.fontFamily#`")},"editor.inlayHints.padding":{type:"boolean",default:e.padding,description:f("inlayHints.padding","Enables the padding around the inlay hints in the editor.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return typeof t.enabled=="boolean"&&(t.enabled=t.enabled?"on":"off"),{enabled:Di(t.enabled,this.defaultValue.enabled,["on","off","offUnlessPressed","onUnlessPressed"]),fontSize:Lt.clampedInt(t.fontSize,this.defaultValue.fontSize,0,100),fontFamily:ds.string(t.fontFamily,this.defaultValue.fontFamily),padding:Le(t.padding,this.defaultValue.padding)}}}class hW extends Jt{constructor(){super(62,"lineDecorationsWidth",10)}validate(e){return typeof e=="string"&&/^\d+(\.\d+)?ch$/.test(e)?-parseFloat(e.substring(0,e.length-2)):Lt.clampedInt(e,this.defaultValue,0,1e3)}compute(e,t,i){return i<0?Lt.clampedInt(-i*e.fontInfo.typicalHalfwidthCharacterWidth,this.defaultValue,0,1e3):i}}class uW extends Xr{constructor(){super(63,"lineHeight",ps.lineHeight,e=>Xr.clamp(e,0,150),{markdownDescription:f("lineHeight",`Controls the line height.
- Use 0 to automatically compute the line height from the font size.
- Values between 0 and 8 will be used as a multiplier with the font size.
- Values greater than or equal to 8 will be used as effective values.`)})}compute(e,t,i){return e.fontInfo.lineHeight}}class gW extends Jt{constructor(){const e={enabled:!0,size:"proportional",side:"right",showSlider:"mouseover",autohide:!1,renderCharacters:!0,maxColumn:120,scale:1};super(69,"minimap",e,{"editor.minimap.enabled":{type:"boolean",default:e.enabled,description:f("minimap.enabled","Controls whether the minimap is shown.")},"editor.minimap.autohide":{type:"boolean",default:e.autohide,description:f("minimap.autohide","Controls whether the minimap is hidden automatically.")},"editor.minimap.size":{type:"string",enum:["proportional","fill","fit"],enumDescriptions:[f("minimap.size.proportional","The minimap has the same size as the editor contents (and might scroll)."),f("minimap.size.fill","The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling)."),f("minimap.size.fit","The minimap will shrink as necessary to never be larger than the editor (no scrolling).")],default:e.size,description:f("minimap.size","Controls the size of the minimap.")},"editor.minimap.side":{type:"string",enum:["left","right"],default:e.side,description:f("minimap.side","Controls the side where to render the minimap.")},"editor.minimap.showSlider":{type:"string",enum:["always","mouseover"],default:e.showSlider,description:f("minimap.showSlider","Controls when the minimap slider is shown.")},"editor.minimap.scale":{type:"number",default:e.scale,minimum:1,maximum:3,enum:[1,2,3],description:f("minimap.scale","Scale of content drawn in the minimap: 1, 2 or 3.")},"editor.minimap.renderCharacters":{type:"boolean",default:e.renderCharacters,description:f("minimap.renderCharacters","Render the actual characters on a line as opposed to color blocks.")},"editor.minimap.maxColumn":{type:"number",default:e.maxColumn,description:f("minimap.maxColumn","Limit the width of the minimap to render at most a certain number of columns.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Le(t.enabled,this.defaultValue.enabled),autohide:Le(t.autohide,this.defaultValue.autohide),size:Di(t.size,this.defaultValue.size,["proportional","fill","fit"]),side:Di(t.side,this.defaultValue.side,["right","left"]),showSlider:Di(t.showSlider,this.defaultValue.showSlider,["always","mouseover"]),renderCharacters:Le(t.renderCharacters,this.defaultValue.renderCharacters),scale:Lt.clampedInt(t.scale,1,1,3),maxColumn:Lt.clampedInt(t.maxColumn,this.defaultValue.maxColumn,1,1e4)}}}function fW(o){return o==="ctrlCmd"?Ke?"metaKey":"ctrlKey":"altKey"}class pW extends Jt{constructor(){super(80,"padding",{top:0,bottom:0},{"editor.padding.top":{type:"number",default:0,minimum:0,maximum:1e3,description:f("padding.top","Controls the amount of space between the top edge of the editor and the first line.")},"editor.padding.bottom":{type:"number",default:0,minimum:0,maximum:1e3,description:f("padding.bottom","Controls the amount of space between the bottom edge of the editor and the last line.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{top:Lt.clampedInt(t.top,0,0,1e3),bottom:Lt.clampedInt(t.bottom,0,0,1e3)}}}class mW extends Jt{constructor(){const e={enabled:!0,cycle:!0};super(81,"parameterHints",e,{"editor.parameterHints.enabled":{type:"boolean",default:e.enabled,description:f("parameterHints.enabled","Enables a pop-up that shows parameter documentation and type information as you type.")},"editor.parameterHints.cycle":{type:"boolean",default:e.cycle,description:f("parameterHints.cycle","Controls whether the parameter hints menu cycles or closes when reaching the end of the list.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Le(t.enabled,this.defaultValue.enabled),cycle:Le(t.cycle,this.defaultValue.cycle)}}}class _W extends _f{constructor(){super(136)}compute(e,t,i){return e.pixelRatio}}class bW extends Jt{constructor(){const e={other:"on",comments:"off",strings:"off"},t=[{type:"boolean"},{type:"string",enum:["on","inline","off"],enumDescriptions:[f("on","Quick suggestions show inside the suggest widget"),f("inline","Quick suggestions show as ghost text"),f("off","Quick suggestions are disabled")]}];super(84,"quickSuggestions",e,{type:"object",additionalProperties:!1,properties:{strings:{anyOf:t,default:e.strings,description:f("quickSuggestions.strings","Enable quick suggestions inside strings.")},comments:{anyOf:t,default:e.comments,description:f("quickSuggestions.comments","Enable quick suggestions inside comments.")},other:{anyOf:t,default:e.other,description:f("quickSuggestions.other","Enable quick suggestions outside of strings and comments.")}},default:e,markdownDescription:f("quickSuggestions","Controls whether suggestions should automatically show up while typing. This can be controlled for typing in comments, strings, and other code. Quick suggestion can be configured to show as ghost text or with the suggest widget. Also be aware of the '{0}'-setting which controls if suggestions are triggered by special characters.","#editor.suggestOnTriggerCharacters#")}),this.defaultValue=e}validate(e){if(typeof e=="boolean"){const c=e?"on":"off";return{comments:c,strings:c,other:c}}if(!e||typeof e!="object")return this.defaultValue;const{other:t,comments:i,strings:n}=e,s=["on","inline","off"];let r,a,l;return typeof t=="boolean"?r=t?"on":"off":r=Di(t,this.defaultValue.other,s),typeof i=="boolean"?a=i?"on":"off":a=Di(i,this.defaultValue.comments,s),typeof n=="boolean"?l=n?"on":"off":l=Di(n,this.defaultValue.strings,s),{other:r,comments:a,strings:l}}}class vW extends Jt{constructor(){super(64,"lineNumbers",{renderType:1,renderFn:null},{type:"string",enum:["off","on","relative","interval"],enumDescriptions:[f("lineNumbers.off","Line numbers are not rendered."),f("lineNumbers.on","Line numbers are rendered as absolute number."),f("lineNumbers.relative","Line numbers are rendered as distance in lines to cursor position."),f("lineNumbers.interval","Line numbers are rendered every 10 lines.")],default:"on",description:f("lineNumbers","Controls the display of line numbers.")})}validate(e){let t=this.defaultValue.renderType,i=this.defaultValue.renderFn;return typeof e<"u"&&(typeof e=="function"?(t=4,i=e):e==="interval"?t=3:e==="relative"?t=2:e==="on"?t=1:t=0),{renderType:t,renderFn:i}}}function Nv(o){const e=o.get(92);return e==="editable"?o.get(86):e!=="on"}class CW extends Jt{constructor(){const e=[],t={type:"number",description:f("rulers.size","Number of monospace characters at which this editor ruler will render.")};super(96,"rulers",e,{type:"array",items:{anyOf:[t,{type:["object"],properties:{column:t,color:{type:"string",description:f("rulers.color","Color of this editor ruler."),format:"color-hex"}}}]},default:e,description:f("rulers","Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.")})}validate(e){if(Array.isArray(e)){const t=[];for(const i of e)if(typeof i=="number")t.push({column:Lt.clampedInt(i,0,0,1e4),color:null});else if(i&&typeof i=="object"){const n=i;t.push({column:Lt.clampedInt(n.column,0,0,1e4),color:n.color})}return t.sort((i,n)=>i.column-n.column),t}return this.defaultValue}}function R2(o,e){if(typeof o!="string")return e;switch(o){case"hidden":return 2;case"visible":return 3;default:return 1}}let wW=class extends Jt{constructor(){const e={vertical:1,horizontal:1,arrowSize:11,useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,horizontalScrollbarSize:12,horizontalSliderSize:12,verticalScrollbarSize:14,verticalSliderSize:14,handleMouseWheel:!0,alwaysConsumeMouseWheel:!0,scrollByPage:!1};super(97,"scrollbar",e,{"editor.scrollbar.vertical":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[f("scrollbar.vertical.auto","The vertical scrollbar will be visible only when necessary."),f("scrollbar.vertical.visible","The vertical scrollbar will always be visible."),f("scrollbar.vertical.fit","The vertical scrollbar will always be hidden.")],default:"auto",description:f("scrollbar.vertical","Controls the visibility of the vertical scrollbar.")},"editor.scrollbar.horizontal":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[f("scrollbar.horizontal.auto","The horizontal scrollbar will be visible only when necessary."),f("scrollbar.horizontal.visible","The horizontal scrollbar will always be visible."),f("scrollbar.horizontal.fit","The horizontal scrollbar will always be hidden.")],default:"auto",description:f("scrollbar.horizontal","Controls the visibility of the horizontal scrollbar.")},"editor.scrollbar.verticalScrollbarSize":{type:"number",default:e.verticalScrollbarSize,description:f("scrollbar.verticalScrollbarSize","The width of the vertical scrollbar.")},"editor.scrollbar.horizontalScrollbarSize":{type:"number",default:e.horizontalScrollbarSize,description:f("scrollbar.horizontalScrollbarSize","The height of the horizontal scrollbar.")},"editor.scrollbar.scrollByPage":{type:"boolean",default:e.scrollByPage,description:f("scrollbar.scrollByPage","Controls whether clicks scroll by page or jump to click position.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e,i=Lt.clampedInt(t.horizontalScrollbarSize,this.defaultValue.horizontalScrollbarSize,0,1e3),n=Lt.clampedInt(t.verticalScrollbarSize,this.defaultValue.verticalScrollbarSize,0,1e3);return{arrowSize:Lt.clampedInt(t.arrowSize,this.defaultValue.arrowSize,0,1e3),vertical:R2(t.vertical,this.defaultValue.vertical),horizontal:R2(t.horizontal,this.defaultValue.horizontal),useShadows:Le(t.useShadows,this.defaultValue.useShadows),verticalHasArrows:Le(t.verticalHasArrows,this.defaultValue.verticalHasArrows),horizontalHasArrows:Le(t.horizontalHasArrows,this.defaultValue.horizontalHasArrows),handleMouseWheel:Le(t.handleMouseWheel,this.defaultValue.handleMouseWheel),alwaysConsumeMouseWheel:Le(t.alwaysConsumeMouseWheel,this.defaultValue.alwaysConsumeMouseWheel),horizontalScrollbarSize:i,horizontalSliderSize:Lt.clampedInt(t.horizontalSliderSize,i,0,1e3),verticalScrollbarSize:n,verticalSliderSize:Lt.clampedInt(t.verticalSliderSize,n,0,1e3),scrollByPage:Le(t.scrollByPage,this.defaultValue.scrollByPage)}}};const xs="inUntrustedWorkspace",Zn={allowedCharacters:"editor.unicodeHighlight.allowedCharacters",invisibleCharacters:"editor.unicodeHighlight.invisibleCharacters",nonBasicASCII:"editor.unicodeHighlight.nonBasicASCII",ambiguousCharacters:"editor.unicodeHighlight.ambiguousCharacters",includeComments:"editor.unicodeHighlight.includeComments",includeStrings:"editor.unicodeHighlight.includeStrings",allowedLocales:"editor.unicodeHighlight.allowedLocales"};class SW extends Jt{constructor(){const e={nonBasicASCII:xs,invisibleCharacters:!0,ambiguousCharacters:!0,includeComments:xs,includeStrings:!0,allowedCharacters:{},allowedLocales:{_os:!0,_vscode:!0}};super(119,"unicodeHighlight",e,{[Zn.nonBasicASCII]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,xs],default:e.nonBasicASCII,description:f("unicodeHighlight.nonBasicASCII","Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.")},[Zn.invisibleCharacters]:{restricted:!0,type:"boolean",default:e.invisibleCharacters,description:f("unicodeHighlight.invisibleCharacters","Controls whether characters that just reserve space or have no width at all are highlighted.")},[Zn.ambiguousCharacters]:{restricted:!0,type:"boolean",default:e.ambiguousCharacters,description:f("unicodeHighlight.ambiguousCharacters","Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.")},[Zn.includeComments]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,xs],default:e.includeComments,description:f("unicodeHighlight.includeComments","Controls whether characters in comments should also be subject to Unicode highlighting.")},[Zn.includeStrings]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,xs],default:e.includeStrings,description:f("unicodeHighlight.includeStrings","Controls whether characters in strings should also be subject to Unicode highlighting.")},[Zn.allowedCharacters]:{restricted:!0,type:"object",default:e.allowedCharacters,description:f("unicodeHighlight.allowedCharacters","Defines allowed characters that are not being highlighted."),additionalProperties:{type:"boolean"}},[Zn.allowedLocales]:{restricted:!0,type:"object",additionalProperties:{type:"boolean"},default:e.allowedLocales,description:f("unicodeHighlight.allowedLocales","Unicode characters that are common in allowed locales are not being highlighted.")}})}applyUpdate(e,t){let i=!1;t.allowedCharacters&&e&&(so(e.allowedCharacters,t.allowedCharacters)||(e=Object.assign(Object.assign({},e),{allowedCharacters:t.allowedCharacters}),i=!0)),t.allowedLocales&&e&&(so(e.allowedLocales,t.allowedLocales)||(e=Object.assign(Object.assign({},e),{allowedLocales:t.allowedLocales}),i=!0));const n=super.applyUpdate(e,t);return i?new Hp(n.newValue,!0):n}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{nonBasicASCII:lg(t.nonBasicASCII,xs,[!0,!1,xs]),invisibleCharacters:Le(t.invisibleCharacters,this.defaultValue.invisibleCharacters),ambiguousCharacters:Le(t.ambiguousCharacters,this.defaultValue.ambiguousCharacters),includeComments:lg(t.includeComments,xs,[!0,!1,xs]),includeStrings:lg(t.includeStrings,xs,[!0,!1,xs]),allowedCharacters:this.validateBooleanMap(e.allowedCharacters,this.defaultValue.allowedCharacters),allowedLocales:this.validateBooleanMap(e.allowedLocales,this.defaultValue.allowedLocales)}}validateBooleanMap(e,t){if(typeof e!="object"||!e)return t;const i={};for(const[n,s]of Object.entries(e))s===!0&&(i[n]=!0);return i}}class yW extends Jt{constructor(){const e={enabled:!0,mode:"subwordSmart",showToolbar:"onHover"};super(59,"inlineSuggest",e,{"editor.inlineSuggest.enabled":{type:"boolean",default:e.enabled,description:f("inlineSuggest.enabled","Controls whether to automatically show inline suggestions in the editor.")},"editor.inlineSuggest.showToolbar":{type:"string",default:e.showToolbar,enum:["always","onHover"],enumDescriptions:[f("inlineSuggest.showToolbar.always","Show the inline suggestion toolbar whenever an inline suggestion is shown."),f("inlineSuggest.showToolbar.onHover","Show the inline suggestion toolbar when hovering over an inline suggestion.")],description:f("inlineSuggest.showToolbar","Controls when to show the inline suggestion toolbar.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Le(t.enabled,this.defaultValue.enabled),mode:Di(t.mode,this.defaultValue.mode,["prefix","subword","subwordSmart"]),showToolbar:Di(t.showToolbar,this.defaultValue.showToolbar,["always","onHover"])}}}class LW extends Jt{constructor(){const e={enabled:_n.bracketPairColorizationOptions.enabled,independentColorPoolPerBracketType:_n.bracketPairColorizationOptions.independentColorPoolPerBracketType};super(12,"bracketPairColorization",e,{"editor.bracketPairColorization.enabled":{type:"boolean",default:e.enabled,markdownDescription:f("bracketPairColorization.enabled","Controls whether bracket pair colorization is enabled or not. Use {0} to override the bracket highlight colors.","`#workbench.colorCustomizations#`")},"editor.bracketPairColorization.independentColorPoolPerBracketType":{type:"boolean",default:e.independentColorPoolPerBracketType,description:f("bracketPairColorization.independentColorPoolPerBracketType","Controls whether each bracket type has its own independent color pool.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Le(t.enabled,this.defaultValue.enabled),independentColorPoolPerBracketType:Le(t.independentColorPoolPerBracketType,this.defaultValue.independentColorPoolPerBracketType)}}}class DW extends Jt{constructor(){const e={bracketPairs:!1,bracketPairsHorizontal:"active",highlightActiveBracketPair:!0,indentation:!0,highlightActiveIndentation:!0};super(13,"guides",e,{"editor.guides.bracketPairs":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[f("editor.guides.bracketPairs.true","Enables bracket pair guides."),f("editor.guides.bracketPairs.active","Enables bracket pair guides only for the active bracket pair."),f("editor.guides.bracketPairs.false","Disables bracket pair guides.")],default:e.bracketPairs,description:f("editor.guides.bracketPairs","Controls whether bracket pair guides are enabled or not.")},"editor.guides.bracketPairsHorizontal":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[f("editor.guides.bracketPairsHorizontal.true","Enables horizontal guides as addition to vertical bracket pair guides."),f("editor.guides.bracketPairsHorizontal.active","Enables horizontal guides only for the active bracket pair."),f("editor.guides.bracketPairsHorizontal.false","Disables horizontal bracket pair guides.")],default:e.bracketPairsHorizontal,description:f("editor.guides.bracketPairsHorizontal","Controls whether horizontal bracket pair guides are enabled or not.")},"editor.guides.highlightActiveBracketPair":{type:"boolean",default:e.highlightActiveBracketPair,description:f("editor.guides.highlightActiveBracketPair","Controls whether the editor should highlight the active bracket pair.")},"editor.guides.indentation":{type:"boolean",default:e.indentation,description:f("editor.guides.indentation","Controls whether the editor should render indent guides.")},"editor.guides.highlightActiveIndentation":{type:["boolean","string"],enum:[!0,"always",!1],enumDescriptions:[f("editor.guides.highlightActiveIndentation.true","Highlights the active indent guide."),f("editor.guides.highlightActiveIndentation.always","Highlights the active indent guide even if bracket guides are highlighted."),f("editor.guides.highlightActiveIndentation.false","Do not highlight the active indent guide.")],default:e.highlightActiveIndentation,description:f("editor.guides.highlightActiveIndentation","Controls whether the editor should highlight the active indent guide.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{bracketPairs:lg(t.bracketPairs,this.defaultValue.bracketPairs,[!0,!1,"active"]),bracketPairsHorizontal:lg(t.bracketPairsHorizontal,this.defaultValue.bracketPairsHorizontal,[!0,!1,"active"]),highlightActiveBracketPair:Le(t.highlightActiveBracketPair,this.defaultValue.highlightActiveBracketPair),indentation:Le(t.indentation,this.defaultValue.indentation),highlightActiveIndentation:lg(t.highlightActiveIndentation,this.defaultValue.highlightActiveIndentation,[!0,!1,"always"])}}}function lg(o,e,t){const i=t.indexOf(o);return i===-1?e:t[i]}class xW extends Jt{constructor(){const e={insertMode:"insert",filterGraceful:!0,snippetsPreventQuickSuggestions:!0,localityBonus:!1,shareSuggestSelections:!1,selectionMode:"always",showIcons:!0,showStatusBar:!1,preview:!1,previewMode:"subwordSmart",showInlineDetails:!0,showMethods:!0,showFunctions:!0,showConstructors:!0,showDeprecated:!0,matchOnWordStartOnly:!0,showFields:!0,showVariables:!0,showClasses:!0,showStructs:!0,showInterfaces:!0,showModules:!0,showProperties:!0,showEvents:!0,showOperators:!0,showUnits:!0,showValues:!0,showConstants:!0,showEnums:!0,showEnumMembers:!0,showKeywords:!0,showWords:!0,showColors:!0,showFiles:!0,showReferences:!0,showFolders:!0,showTypeParameters:!0,showSnippets:!0,showUsers:!0,showIssues:!0};super(112,"suggest",e,{"editor.suggest.insertMode":{type:"string",enum:["insert","replace"],enumDescriptions:[f("suggest.insertMode.insert","Insert suggestion without overwriting text right of the cursor."),f("suggest.insertMode.replace","Insert suggestion and overwrite text right of the cursor.")],default:e.insertMode,description:f("suggest.insertMode","Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.")},"editor.suggest.filterGraceful":{type:"boolean",default:e.filterGraceful,description:f("suggest.filterGraceful","Controls whether filtering and sorting suggestions accounts for small typos.")},"editor.suggest.localityBonus":{type:"boolean",default:e.localityBonus,description:f("suggest.localityBonus","Controls whether sorting favors words that appear close to the cursor.")},"editor.suggest.shareSuggestSelections":{type:"boolean",default:e.shareSuggestSelections,markdownDescription:f("suggest.shareSuggestSelections","Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).")},"editor.suggest.selectionMode":{type:"string",enum:["always","never","whenTriggerCharacter","whenQuickSuggestion"],enumDescriptions:[f("suggest.insertMode.always","Always select a suggestion when automatically triggering IntelliSense."),f("suggest.insertMode.never","Never select a suggestion when automatically triggering IntelliSense."),f("suggest.insertMode.whenTriggerCharacter","Select a suggestion only when triggering IntelliSense from a trigger character."),f("suggest.insertMode.whenQuickSuggestion","Select a suggestion only when triggering IntelliSense as you type.")],default:e.selectionMode,markdownDescription:f("suggest.selectionMode","Controls whether a suggestion is selected when the widget shows. Note that this only applies to automatically triggered suggestions (`#editor.quickSuggestions#` and `#editor.suggestOnTriggerCharacters#`) and that a suggestion is always selected when explicitly invoked, e.g via `Ctrl+Space`.")},"editor.suggest.snippetsPreventQuickSuggestions":{type:"boolean",default:e.snippetsPreventQuickSuggestions,description:f("suggest.snippetsPreventQuickSuggestions","Controls whether an active snippet prevents quick suggestions.")},"editor.suggest.showIcons":{type:"boolean",default:e.showIcons,description:f("suggest.showIcons","Controls whether to show or hide icons in suggestions.")},"editor.suggest.showStatusBar":{type:"boolean",default:e.showStatusBar,description:f("suggest.showStatusBar","Controls the visibility of the status bar at the bottom of the suggest widget.")},"editor.suggest.preview":{type:"boolean",default:e.preview,description:f("suggest.preview","Controls whether to preview the suggestion outcome in the editor.")},"editor.suggest.showInlineDetails":{type:"boolean",default:e.showInlineDetails,description:f("suggest.showInlineDetails","Controls whether suggest details show inline with the label or only in the details widget.")},"editor.suggest.maxVisibleSuggestions":{type:"number",deprecationMessage:f("suggest.maxVisibleSuggestions.dep","This setting is deprecated. The suggest widget can now be resized.")},"editor.suggest.filteredTypes":{type:"object",deprecationMessage:f("deprecated","This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.")},"editor.suggest.showMethods":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showMethods","When enabled IntelliSense shows `method`-suggestions.")},"editor.suggest.showFunctions":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showFunctions","When enabled IntelliSense shows `function`-suggestions.")},"editor.suggest.showConstructors":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showConstructors","When enabled IntelliSense shows `constructor`-suggestions.")},"editor.suggest.showDeprecated":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showDeprecated","When enabled IntelliSense shows `deprecated`-suggestions.")},"editor.suggest.matchOnWordStartOnly":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.matchOnWordStartOnly","When enabled IntelliSense filtering requires that the first character matches on a word start. For example, `c` on `Console` or `WebContext` but _not_ on `description`. When disabled IntelliSense will show more results but still sorts them by match quality.")},"editor.suggest.showFields":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showFields","When enabled IntelliSense shows `field`-suggestions.")},"editor.suggest.showVariables":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showVariables","When enabled IntelliSense shows `variable`-suggestions.")},"editor.suggest.showClasses":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showClasss","When enabled IntelliSense shows `class`-suggestions.")},"editor.suggest.showStructs":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showStructs","When enabled IntelliSense shows `struct`-suggestions.")},"editor.suggest.showInterfaces":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showInterfaces","When enabled IntelliSense shows `interface`-suggestions.")},"editor.suggest.showModules":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showModules","When enabled IntelliSense shows `module`-suggestions.")},"editor.suggest.showProperties":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showPropertys","When enabled IntelliSense shows `property`-suggestions.")},"editor.suggest.showEvents":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showEvents","When enabled IntelliSense shows `event`-suggestions.")},"editor.suggest.showOperators":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showOperators","When enabled IntelliSense shows `operator`-suggestions.")},"editor.suggest.showUnits":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showUnits","When enabled IntelliSense shows `unit`-suggestions.")},"editor.suggest.showValues":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showValues","When enabled IntelliSense shows `value`-suggestions.")},"editor.suggest.showConstants":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showConstants","When enabled IntelliSense shows `constant`-suggestions.")},"editor.suggest.showEnums":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showEnums","When enabled IntelliSense shows `enum`-suggestions.")},"editor.suggest.showEnumMembers":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showEnumMembers","When enabled IntelliSense shows `enumMember`-suggestions.")},"editor.suggest.showKeywords":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showKeywords","When enabled IntelliSense shows `keyword`-suggestions.")},"editor.suggest.showWords":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showTexts","When enabled IntelliSense shows `text`-suggestions.")},"editor.suggest.showColors":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showColors","When enabled IntelliSense shows `color`-suggestions.")},"editor.suggest.showFiles":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showFiles","When enabled IntelliSense shows `file`-suggestions.")},"editor.suggest.showReferences":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showReferences","When enabled IntelliSense shows `reference`-suggestions.")},"editor.suggest.showCustomcolors":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showCustomcolors","When enabled IntelliSense shows `customcolor`-suggestions.")},"editor.suggest.showFolders":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showFolders","When enabled IntelliSense shows `folder`-suggestions.")},"editor.suggest.showTypeParameters":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showTypeParameters","When enabled IntelliSense shows `typeParameter`-suggestions.")},"editor.suggest.showSnippets":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showSnippets","When enabled IntelliSense shows `snippet`-suggestions.")},"editor.suggest.showUsers":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showUsers","When enabled IntelliSense shows `user`-suggestions.")},"editor.suggest.showIssues":{type:"boolean",default:!0,markdownDescription:f("editor.suggest.showIssues","When enabled IntelliSense shows `issues`-suggestions.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{insertMode:Di(t.insertMode,this.defaultValue.insertMode,["insert","replace"]),filterGraceful:Le(t.filterGraceful,this.defaultValue.filterGraceful),snippetsPreventQuickSuggestions:Le(t.snippetsPreventQuickSuggestions,this.defaultValue.filterGraceful),localityBonus:Le(t.localityBonus,this.defaultValue.localityBonus),shareSuggestSelections:Le(t.shareSuggestSelections,this.defaultValue.shareSuggestSelections),selectionMode:Di(t.selectionMode,this.defaultValue.selectionMode,["always","never","whenQuickSuggestion","whenTriggerCharacter"]),showIcons:Le(t.showIcons,this.defaultValue.showIcons),showStatusBar:Le(t.showStatusBar,this.defaultValue.showStatusBar),preview:Le(t.preview,this.defaultValue.preview),previewMode:Di(t.previewMode,this.defaultValue.previewMode,["prefix","subword","subwordSmart"]),showInlineDetails:Le(t.showInlineDetails,this.defaultValue.showInlineDetails),showMethods:Le(t.showMethods,this.defaultValue.showMethods),showFunctions:Le(t.showFunctions,this.defaultValue.showFunctions),showConstructors:Le(t.showConstructors,this.defaultValue.showConstructors),showDeprecated:Le(t.showDeprecated,this.defaultValue.showDeprecated),matchOnWordStartOnly:Le(t.matchOnWordStartOnly,this.defaultValue.matchOnWordStartOnly),showFields:Le(t.showFields,this.defaultValue.showFields),showVariables:Le(t.showVariables,this.defaultValue.showVariables),showClasses:Le(t.showClasses,this.defaultValue.showClasses),showStructs:Le(t.showStructs,this.defaultValue.showStructs),showInterfaces:Le(t.showInterfaces,this.defaultValue.showInterfaces),showModules:Le(t.showModules,this.defaultValue.showModules),showProperties:Le(t.showProperties,this.defaultValue.showProperties),showEvents:Le(t.showEvents,this.defaultValue.showEvents),showOperators:Le(t.showOperators,this.defaultValue.showOperators),showUnits:Le(t.showUnits,this.defaultValue.showUnits),showValues:Le(t.showValues,this.defaultValue.showValues),showConstants:Le(t.showConstants,this.defaultValue.showConstants),showEnums:Le(t.showEnums,this.defaultValue.showEnums),showEnumMembers:Le(t.showEnumMembers,this.defaultValue.showEnumMembers),showKeywords:Le(t.showKeywords,this.defaultValue.showKeywords),showWords:Le(t.showWords,this.defaultValue.showWords),showColors:Le(t.showColors,this.defaultValue.showColors),showFiles:Le(t.showFiles,this.defaultValue.showFiles),showReferences:Le(t.showReferences,this.defaultValue.showReferences),showFolders:Le(t.showFolders,this.defaultValue.showFolders),showTypeParameters:Le(t.showTypeParameters,this.defaultValue.showTypeParameters),showSnippets:Le(t.showSnippets,this.defaultValue.showSnippets),showUsers:Le(t.showUsers,this.defaultValue.showUsers),showIssues:Le(t.showIssues,this.defaultValue.showIssues)}}}class kW extends Jt{constructor(){super(107,"smartSelect",{selectLeadingAndTrailingWhitespace:!0},{"editor.smartSelect.selectLeadingAndTrailingWhitespace":{description:f("selectLeadingAndTrailingWhitespace","Whether leading and trailing whitespace should always be selected."),default:!0,type:"boolean"}})}validate(e){return!e||typeof e!="object"?this.defaultValue:{selectLeadingAndTrailingWhitespace:Le(e.selectLeadingAndTrailingWhitespace,this.defaultValue.selectLeadingAndTrailingWhitespace)}}}class IW extends _f{constructor(){super(137)}compute(e,t,i){return t.get(86)?!0:e.tabFocusMode}}class EW extends Jt{constructor(){super(131,"wrappingIndent",1,{"editor.wrappingIndent":{type:"string",enum:["none","same","indent","deepIndent"],enumDescriptions:[f("wrappingIndent.none","No indentation. Wrapped lines begin at column 1."),f("wrappingIndent.same","Wrapped lines get the same indentation as the parent."),f("wrappingIndent.indent","Wrapped lines get +1 indentation toward the parent."),f("wrappingIndent.deepIndent","Wrapped lines get +2 indentation toward the parent.")],description:f("wrappingIndent","Controls the indentation of wrapped lines."),default:"same"}})}validate(e){switch(e){case"none":return 0;case"same":return 1;case"indent":return 2;case"deepIndent":return 3}return 1}compute(e,t,i){return t.get(2)===2?0:i}}class TW extends _f{constructor(){super(139)}compute(e,t,i){const n=t.get(138);return{isDominatedByLongLines:e.isDominatedByLongLines,isWordWrapMinified:n.isWordWrapMinified,isViewportWrapping:n.isViewportWrapping,wrappingColumn:n.wrappingColumn}}}class NW extends Jt{constructor(){const e={enabled:!0};super(33,"dropIntoEditor",e,{"editor.dropIntoEditor.enabled":{type:"boolean",default:e.enabled,markdownDescription:f("dropIntoEditor.enabled","Controls whether you can drag and drop a file into a text editor by holding down `shift` (instead of opening the file in an editor).")}})}validate(e){return!e||typeof e!="object"?this.defaultValue:{enabled:Le(e.enabled,this.defaultValue.enabled)}}}const MW="Consolas, 'Courier New', monospace",AW="Menlo, Monaco, 'Courier New', monospace",RW="'Droid Sans Mono', 'monospace', monospace",ps={fontFamily:Ke?AW:hn?RW:MW,fontWeight:"normal",fontSize:Ke?12:14,lineHeight:0,letterSpacing:0},Bu=[];function ee(o){return Bu[o.id]=o,o}const Dr={acceptSuggestionOnCommitCharacter:ee(new ct(0,"acceptSuggestionOnCommitCharacter",!0,{markdownDescription:f("acceptSuggestionOnCommitCharacter","Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.")})),acceptSuggestionOnEnter:ee(new ai(1,"acceptSuggestionOnEnter","on",["on","smart","off"],{markdownEnumDescriptions:["",f("acceptSuggestionOnEnterSmart","Only accept a suggestion with `Enter` when it makes a textual change."),""],markdownDescription:f("acceptSuggestionOnEnter","Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.")})),accessibilitySupport:ee(new Y6),accessibilityPageSize:ee(new Lt(3,"accessibilityPageSize",10,1,1073741824,{description:f("accessibilityPageSize","Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default."),tags:["accessibility"]})),ariaLabel:ee(new ds(4,"ariaLabel",f("editorViewAccessibleLabel","Editor content"))),autoClosingBrackets:ee(new ai(5,"autoClosingBrackets","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",f("editor.autoClosingBrackets.languageDefined","Use language configurations to determine when to autoclose brackets."),f("editor.autoClosingBrackets.beforeWhitespace","Autoclose brackets only when the cursor is to the left of whitespace."),""],description:f("autoClosingBrackets","Controls whether the editor should automatically close brackets after the user adds an opening bracket.")})),autoClosingDelete:ee(new ai(6,"autoClosingDelete","auto",["always","auto","never"],{enumDescriptions:["",f("editor.autoClosingDelete.auto","Remove adjacent closing quotes or brackets only if they were automatically inserted."),""],description:f("autoClosingDelete","Controls whether the editor should remove adjacent closing quotes or brackets when deleting.")})),autoClosingOvertype:ee(new ai(7,"autoClosingOvertype","auto",["always","auto","never"],{enumDescriptions:["",f("editor.autoClosingOvertype.auto","Type over closing quotes or brackets only if they were automatically inserted."),""],description:f("autoClosingOvertype","Controls whether the editor should type over closing quotes or brackets.")})),autoClosingQuotes:ee(new ai(8,"autoClosingQuotes","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",f("editor.autoClosingQuotes.languageDefined","Use language configurations to determine when to autoclose quotes."),f("editor.autoClosingQuotes.beforeWhitespace","Autoclose quotes only when the cursor is to the left of whitespace."),""],description:f("autoClosingQuotes","Controls whether the editor should automatically close quotes after the user adds an opening quote.")})),autoIndent:ee(new Tb(9,"autoIndent",4,"full",["none","keep","brackets","advanced","full"],Z6,{enumDescriptions:[f("editor.autoIndent.none","The editor will not insert indentation automatically."),f("editor.autoIndent.keep","The editor will keep the current line's indentation."),f("editor.autoIndent.brackets","The editor will keep the current line's indentation and honor language defined brackets."),f("editor.autoIndent.advanced","The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages."),f("editor.autoIndent.full","The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.")],description:f("autoIndent","Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.")})),automaticLayout:ee(new ct(10,"automaticLayout",!1)),autoSurround:ee(new ai(11,"autoSurround","languageDefined",["languageDefined","quotes","brackets","never"],{enumDescriptions:[f("editor.autoSurround.languageDefined","Use language configurations to determine when to automatically surround selections."),f("editor.autoSurround.quotes","Surround with quotes but not brackets."),f("editor.autoSurround.brackets","Surround with brackets but not quotes."),""],description:f("autoSurround","Controls whether the editor should automatically surround selections when typing quotes or brackets.")})),bracketPairColorization:ee(new LW),bracketPairGuides:ee(new DW),stickyTabStops:ee(new ct(110,"stickyTabStops",!1,{description:f("stickyTabStops","Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.")})),codeLens:ee(new ct(14,"codeLens",!0,{description:f("codeLens","Controls whether the editor shows CodeLens.")})),codeLensFontFamily:ee(new ds(15,"codeLensFontFamily","",{description:f("codeLensFontFamily","Controls the font family for CodeLens.")})),codeLensFontSize:ee(new Lt(16,"codeLensFontSize",0,0,100,{type:"number",default:0,minimum:0,maximum:100,markdownDescription:f("codeLensFontSize","Controls the font size in pixels for CodeLens. When set to 0, 90% of `#editor.fontSize#` is used.")})),colorDecorators:ee(new ct(17,"colorDecorators",!0,{description:f("colorDecorators","Controls whether the editor should render the inline color decorators and color picker.")})),colorDecoratorsLimit:ee(new Lt(18,"colorDecoratorsLimit",500,1,1e6,{markdownDescription:f("colorDecoratorsLimit","Controls the max number of color decorators that can be rendered in an editor at once.")})),columnSelection:ee(new ct(19,"columnSelection",!1,{description:f("columnSelection","Enable that the selection with the mouse and keys is doing column selection.")})),comments:ee(new Q6),contextmenu:ee(new ct(21,"contextmenu",!0)),copyWithSyntaxHighlighting:ee(new ct(22,"copyWithSyntaxHighlighting",!0,{description:f("copyWithSyntaxHighlighting","Controls whether syntax highlighting should be copied into the clipboard.")})),cursorBlinking:ee(new Tb(23,"cursorBlinking",1,"blink",["blink","smooth","phase","expand","solid"],X6,{description:f("cursorBlinking","Control the cursor animation style.")})),cursorSmoothCaretAnimation:ee(new ai(24,"cursorSmoothCaretAnimation","off",["off","explicit","on"],{enumDescriptions:[f("cursorSmoothCaretAnimation.off","Smooth caret animation is disabled."),f("cursorSmoothCaretAnimation.explicit","Smooth caret animation is enabled only when the user moves the cursor with an explicit gesture."),f("cursorSmoothCaretAnimation.on","Smooth caret animation is always enabled.")],description:f("cursorSmoothCaretAnimation","Controls whether the smooth caret animation should be enabled.")})),cursorStyle:ee(new Tb(25,"cursorStyle",Gi.Line,"line",["line","block","underline","line-thin","block-outline","underline-thin"],J6,{description:f("cursorStyle","Controls the cursor style.")})),cursorSurroundingLines:ee(new Lt(26,"cursorSurroundingLines",0,0,1073741824,{description:f("cursorSurroundingLines","Controls the minimal number of visible leading lines (minimum 0) and trailing lines (minimum 1) surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.")})),cursorSurroundingLinesStyle:ee(new ai(27,"cursorSurroundingLinesStyle","default",["default","all"],{enumDescriptions:[f("cursorSurroundingLinesStyle.default","`cursorSurroundingLines` is enforced only when triggered via the keyboard or API."),f("cursorSurroundingLinesStyle.all","`cursorSurroundingLines` is enforced always.")],description:f("cursorSurroundingLinesStyle","Controls when `cursorSurroundingLines` should be enforced.")})),cursorWidth:ee(new Lt(28,"cursorWidth",0,0,1073741824,{markdownDescription:f("cursorWidth","Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.")})),disableLayerHinting:ee(new ct(29,"disableLayerHinting",!1)),disableMonospaceOptimizations:ee(new ct(30,"disableMonospaceOptimizations",!1)),domReadOnly:ee(new ct(31,"domReadOnly",!1)),dragAndDrop:ee(new ct(32,"dragAndDrop",!0,{description:f("dragAndDrop","Controls whether the editor should allow moving selections via drag and drop.")})),emptySelectionClipboard:ee(new tW),dropIntoEditor:ee(new NW),stickyScroll:ee(new cW),experimentalWhitespaceRendering:ee(new ai(35,"experimentalWhitespaceRendering","svg",["svg","font","off"],{enumDescriptions:[f("experimentalWhitespaceRendering.svg","Use a new rendering method with svgs."),f("experimentalWhitespaceRendering.font","Use a new rendering method with font characters."),f("experimentalWhitespaceRendering.off","Use the stable rendering method.")],description:f("experimentalWhitespaceRendering","Controls whether whitespace is rendered with a new, experimental method.")})),extraEditorClassName:ee(new ds(36,"extraEditorClassName","")),fastScrollSensitivity:ee(new Xr(37,"fastScrollSensitivity",5,o=>o<=0?5:o,{markdownDescription:f("fastScrollSensitivity","Scrolling speed multiplier when pressing `Alt`.")})),find:ee(new iW),fixedOverflowWidgets:ee(new ct(39,"fixedOverflowWidgets",!1)),folding:ee(new ct(40,"folding",!0,{description:f("folding","Controls whether the editor has code folding enabled.")})),foldingStrategy:ee(new ai(41,"foldingStrategy","auto",["auto","indentation"],{enumDescriptions:[f("foldingStrategy.auto","Use a language-specific folding strategy if available, else the indentation-based one."),f("foldingStrategy.indentation","Use the indentation-based folding strategy.")],description:f("foldingStrategy","Controls the strategy for computing folding ranges.")})),foldingHighlight:ee(new ct(42,"foldingHighlight",!0,{description:f("foldingHighlight","Controls whether the editor should highlight folded ranges.")})),foldingImportsByDefault:ee(new ct(43,"foldingImportsByDefault",!1,{description:f("foldingImportsByDefault","Controls whether the editor automatically collapses import ranges.")})),foldingMaximumRegions:ee(new Lt(44,"foldingMaximumRegions",5e3,10,65e3,{description:f("foldingMaximumRegions","The maximum number of foldable regions. Increasing this value may result in the editor becoming less responsive when the current source has a large number of foldable regions.")})),unfoldOnClickAfterEndOfLine:ee(new ct(45,"unfoldOnClickAfterEndOfLine",!1,{description:f("unfoldOnClickAfterEndOfLine","Controls whether clicking on the empty content after a folded line will unfold the line.")})),fontFamily:ee(new ds(46,"fontFamily",ps.fontFamily,{description:f("fontFamily","Controls the font family.")})),fontInfo:ee(new nW),fontLigatures2:ee(new As),fontSize:ee(new sW),fontWeight:ee(new Ur),fontVariations:ee(new or),formatOnPaste:ee(new ct(52,"formatOnPaste",!1,{description:f("formatOnPaste","Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.")})),formatOnType:ee(new ct(53,"formatOnType",!1,{description:f("formatOnType","Controls whether the editor should automatically format the line after typing.")})),glyphMargin:ee(new ct(54,"glyphMargin",!0,{description:f("glyphMargin","Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.")})),gotoLocation:ee(new oW),hideCursorInOverviewRuler:ee(new ct(56,"hideCursorInOverviewRuler",!1,{description:f("hideCursorInOverviewRuler","Controls whether the cursor should be hidden in the overview ruler.")})),hover:ee(new rW),inDiffEditor:ee(new ct(58,"inDiffEditor",!1)),letterSpacing:ee(new Xr(60,"letterSpacing",ps.letterSpacing,o=>Xr.clamp(o,-5,20),{description:f("letterSpacing","Controls the letter spacing in pixels.")})),lightbulb:ee(new lW),lineDecorationsWidth:ee(new hW),lineHeight:ee(new uW),lineNumbers:ee(new vW),lineNumbersMinChars:ee(new Lt(65,"lineNumbersMinChars",5,1,300)),linkedEditing:ee(new ct(66,"linkedEditing",!1,{description:f("linkedEditing","Controls whether the editor has linked editing enabled. Depending on the language, related symbols such as HTML tags, are updated while editing.")})),links:ee(new ct(67,"links",!0,{description:f("links","Controls whether the editor should detect links and make them clickable.")})),matchBrackets:ee(new ai(68,"matchBrackets","always",["always","near","never"],{description:f("matchBrackets","Highlight matching brackets.")})),minimap:ee(new gW),mouseStyle:ee(new ai(70,"mouseStyle","text",["text","default","copy"])),mouseWheelScrollSensitivity:ee(new Xr(71,"mouseWheelScrollSensitivity",1,o=>o===0?1:o,{markdownDescription:f("mouseWheelScrollSensitivity","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")})),mouseWheelZoom:ee(new ct(72,"mouseWheelZoom",!1,{markdownDescription:f("mouseWheelZoom","Zoom the font of the editor when using mouse wheel and holding `Ctrl`.")})),multiCursorMergeOverlapping:ee(new ct(73,"multiCursorMergeOverlapping",!0,{description:f("multiCursorMergeOverlapping","Merge multiple cursors when they are overlapping.")})),multiCursorModifier:ee(new Tb(74,"multiCursorModifier","altKey","alt",["ctrlCmd","alt"],fW,{markdownEnumDescriptions:[f("multiCursorModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),f("multiCursorModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],markdownDescription:f({key:"multiCursorModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add multiple cursors with the mouse. The Go to Definition and Open Link mouse gestures will adapt such that they do not conflict with the [multicursor modifier](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).")})),multiCursorPaste:ee(new ai(75,"multiCursorPaste","spread",["spread","full"],{markdownEnumDescriptions:[f("multiCursorPaste.spread","Each cursor pastes a single line of the text."),f("multiCursorPaste.full","Each cursor pastes the full text.")],markdownDescription:f("multiCursorPaste","Controls pasting when the line count of the pasted text matches the cursor count.")})),multiCursorLimit:ee(new Lt(76,"multiCursorLimit",1e4,1,1e5,{markdownDescription:f("multiCursorLimit","Controls the max number of cursors that can be in an active editor at once.")})),occurrencesHighlight:ee(new ct(77,"occurrencesHighlight",!0,{description:f("occurrencesHighlight","Controls whether the editor should highlight semantic symbol occurrences.")})),overviewRulerBorder:ee(new ct(78,"overviewRulerBorder",!0,{description:f("overviewRulerBorder","Controls whether a border should be drawn around the overview ruler.")})),overviewRulerLanes:ee(new Lt(79,"overviewRulerLanes",3,0,3)),padding:ee(new pW),parameterHints:ee(new mW),peekWidgetDefaultFocus:ee(new ai(82,"peekWidgetDefaultFocus","tree",["tree","editor"],{enumDescriptions:[f("peekWidgetDefaultFocus.tree","Focus the tree when opening peek"),f("peekWidgetDefaultFocus.editor","Focus the editor when opening peek")],description:f("peekWidgetDefaultFocus","Controls whether to focus the inline editor or the tree in the peek widget.")})),definitionLinkOpensInPeek:ee(new ct(83,"definitionLinkOpensInPeek",!1,{description:f("definitionLinkOpensInPeek","Controls whether the Go to Definition mouse gesture always opens the peek widget.")})),quickSuggestions:ee(new bW),quickSuggestionsDelay:ee(new Lt(85,"quickSuggestionsDelay",10,0,1073741824,{description:f("quickSuggestionsDelay","Controls the delay in milliseconds after which quick suggestions will show up.")})),readOnly:ee(new ct(86,"readOnly",!1)),renameOnType:ee(new ct(87,"renameOnType",!1,{description:f("renameOnType","Controls whether the editor auto renames on type."),markdownDeprecationMessage:f("renameOnTypeDeprecate","Deprecated, use `editor.linkedEditing` instead.")})),renderControlCharacters:ee(new ct(88,"renderControlCharacters",!0,{description:f("renderControlCharacters","Controls whether the editor should render control characters."),restricted:!0})),renderFinalNewline:ee(new ai(89,"renderFinalNewline",hn?"dimmed":"on",["off","on","dimmed"],{description:f("renderFinalNewline","Render last line number when the file ends with a newline.")})),renderLineHighlight:ee(new ai(90,"renderLineHighlight","line",["none","gutter","line","all"],{enumDescriptions:["","","",f("renderLineHighlight.all","Highlights both the gutter and the current line.")],description:f("renderLineHighlight","Controls how the editor should render the current line highlight.")})),renderLineHighlightOnlyWhenFocus:ee(new ct(91,"renderLineHighlightOnlyWhenFocus",!1,{description:f("renderLineHighlightOnlyWhenFocus","Controls if the editor should render the current line highlight only when the editor is focused.")})),renderValidationDecorations:ee(new ai(92,"renderValidationDecorations","editable",["editable","on","off"])),renderWhitespace:ee(new ai(93,"renderWhitespace","selection",["none","boundary","selection","trailing","all"],{enumDescriptions:["",f("renderWhitespace.boundary","Render whitespace characters except for single spaces between words."),f("renderWhitespace.selection","Render whitespace characters only on selected text."),f("renderWhitespace.trailing","Render only trailing whitespace characters."),""],description:f("renderWhitespace","Controls how the editor should render whitespace characters.")})),revealHorizontalRightPadding:ee(new Lt(94,"revealHorizontalRightPadding",15,0,1e3)),roundedSelection:ee(new ct(95,"roundedSelection",!0,{description:f("roundedSelection","Controls whether selections should have rounded corners.")})),rulers:ee(new CW),scrollbar:ee(new wW),scrollBeyondLastColumn:ee(new Lt(98,"scrollBeyondLastColumn",4,0,1073741824,{description:f("scrollBeyondLastColumn","Controls the number of extra characters beyond which the editor will scroll horizontally.")})),scrollBeyondLastLine:ee(new ct(99,"scrollBeyondLastLine",!0,{description:f("scrollBeyondLastLine","Controls whether the editor will scroll beyond the last line.")})),scrollPredominantAxis:ee(new ct(100,"scrollPredominantAxis",!0,{description:f("scrollPredominantAxis","Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.")})),selectionClipboard:ee(new ct(101,"selectionClipboard",!0,{description:f("selectionClipboard","Controls whether the Linux primary clipboard should be supported."),included:hn})),selectionHighlight:ee(new ct(102,"selectionHighlight",!0,{description:f("selectionHighlight","Controls whether the editor should highlight matches similar to the selection.")})),selectOnLineNumbers:ee(new ct(103,"selectOnLineNumbers",!0)),showFoldingControls:ee(new ai(104,"showFoldingControls","mouseover",["always","never","mouseover"],{enumDescriptions:[f("showFoldingControls.always","Always show the folding controls."),f("showFoldingControls.never","Never show the folding controls and reduce the gutter size."),f("showFoldingControls.mouseover","Only show the folding controls when the mouse is over the gutter.")],description:f("showFoldingControls","Controls when the folding controls on the gutter are shown.")})),showUnused:ee(new ct(105,"showUnused",!0,{description:f("showUnused","Controls fading out of unused code.")})),showDeprecated:ee(new ct(133,"showDeprecated",!0,{description:f("showDeprecated","Controls strikethrough deprecated variables.")})),inlayHints:ee(new dW),snippetSuggestions:ee(new ai(106,"snippetSuggestions","inline",["top","bottom","inline","none"],{enumDescriptions:[f("snippetSuggestions.top","Show snippet suggestions on top of other suggestions."),f("snippetSuggestions.bottom","Show snippet suggestions below other suggestions."),f("snippetSuggestions.inline","Show snippets suggestions with other suggestions."),f("snippetSuggestions.none","Do not show snippet suggestions.")],description:f("snippetSuggestions","Controls whether snippets are shown with other suggestions and how they are sorted.")})),smartSelect:ee(new kW),smoothScrolling:ee(new ct(108,"smoothScrolling",!1,{description:f("smoothScrolling","Controls whether the editor will scroll using an animation.")})),stopRenderingLineAfter:ee(new Lt(111,"stopRenderingLineAfter",1e4,-1,1073741824)),suggest:ee(new xW),inlineSuggest:ee(new yW),suggestFontSize:ee(new Lt(113,"suggestFontSize",0,0,1e3,{markdownDescription:f("suggestFontSize","Font size for the suggest widget. When set to {0}, the value of {1} is used.","`0`","`#editor.fontSize#`")})),suggestLineHeight:ee(new Lt(114,"suggestLineHeight",0,0,1e3,{markdownDescription:f("suggestLineHeight","Line height for the suggest widget. When set to {0}, the value of {1} is used. The minimum value is 8.","`0`","`#editor.lineHeight#`")})),suggestOnTriggerCharacters:ee(new ct(115,"suggestOnTriggerCharacters",!0,{description:f("suggestOnTriggerCharacters","Controls whether suggestions should automatically show up when typing trigger characters.")})),suggestSelection:ee(new ai(116,"suggestSelection","first",["first","recentlyUsed","recentlyUsedByPrefix"],{markdownEnumDescriptions:[f("suggestSelection.first","Always select the first suggestion."),f("suggestSelection.recentlyUsed","Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently."),f("suggestSelection.recentlyUsedByPrefix","Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.")],description:f("suggestSelection","Controls how suggestions are pre-selected when showing the suggest list.")})),tabCompletion:ee(new ai(117,"tabCompletion","off",["on","off","onlySnippets"],{enumDescriptions:[f("tabCompletion.on","Tab complete will insert the best matching suggestion when pressing tab."),f("tabCompletion.off","Disable tab completions."),f("tabCompletion.onlySnippets","Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.")],description:f("tabCompletion","Enables tab completions.")})),tabIndex:ee(new Lt(118,"tabIndex",0,-1,1073741824)),unicodeHighlight:ee(new SW),unusualLineTerminators:ee(new ai(120,"unusualLineTerminators","prompt",["auto","off","prompt"],{enumDescriptions:[f("unusualLineTerminators.auto","Unusual line terminators are automatically removed."),f("unusualLineTerminators.off","Unusual line terminators are ignored."),f("unusualLineTerminators.prompt","Unusual line terminators prompt to be removed.")],description:f("unusualLineTerminators","Remove unusual line terminators that might cause problems.")})),useShadowDOM:ee(new ct(121,"useShadowDOM",!0)),useTabStops:ee(new ct(122,"useTabStops",!0,{description:f("useTabStops","Inserting and deleting whitespace follows tab stops.")})),wordBreak:ee(new ai(123,"wordBreak","normal",["normal","keepAll"],{markdownEnumDescriptions:[f("wordBreak.normal","Use the default line break rule."),f("wordBreak.keepAll","Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.")],description:f("wordBreak","Controls the word break rules used for Chinese/Japanese/Korean (CJK) text.")})),wordSeparators:ee(new ds(124,"wordSeparators",p4,{description:f("wordSeparators","Characters that will be used as word separators when doing word related navigations or operations.")})),wordWrap:ee(new ai(125,"wordWrap","off",["off","on","wordWrapColumn","bounded"],{markdownEnumDescriptions:[f("wordWrap.off","Lines will never wrap."),f("wordWrap.on","Lines will wrap at the viewport width."),f({key:"wordWrap.wordWrapColumn",comment:["- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at `#editor.wordWrapColumn#`."),f({key:"wordWrap.bounded",comment:["- viewport means the edge of the visible window size.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.")],description:f({key:"wordWrap",comment:["- 'off', 'on', 'wordWrapColumn' and 'bounded' refer to values the setting can take and should not be localized.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Controls how lines should wrap.")})),wordWrapBreakAfterCharacters:ee(new ds(126,"wordWrapBreakAfterCharacters"," })]?|/&.,;¢°′″‰℃、。。、¢,.:;?!%・・ゝゞヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻ァィゥェォャュョッー”〉》」』】〕)]}」")),wordWrapBreakBeforeCharacters:ee(new ds(127,"wordWrapBreakBeforeCharacters","([{‘“〈《「『【〔([{「£¥$£¥++")),wordWrapColumn:ee(new Lt(128,"wordWrapColumn",80,1,1073741824,{markdownDescription:f({key:"wordWrapColumn",comment:["- `editor.wordWrap` refers to a different setting and should not be localized.","- 'wordWrapColumn' and 'bounded' refer to values the different setting can take and should not be localized."]},"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.")})),wordWrapOverride1:ee(new ai(129,"wordWrapOverride1","inherit",["off","on","inherit"])),wordWrapOverride2:ee(new ai(130,"wordWrapOverride2","inherit",["off","on","inherit"])),editorClassName:ee(new eW),pixelRatio:ee(new _W),tabFocusMode:ee(new IW),layoutInfo:ee(new ag),wrappingInfo:ee(new TW),wrappingIndent:ee(new EW),wrappingStrategy:ee(new aW)};class PW{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?Tg.isErrorNoTelemetry(e)?new Tg(e.message+`
@@ -634,27 +634,27 @@ ${e.toString()}`}}class XC{constructor(e=new gw,t=!1,i,n=Wie){var s;this._servic
* Version: 0.35.0(71ac097e6155a405f6be52b0b368a04508c31e31)
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
-*-----------------------------------------------------------------------------*/var Mse=Object.defineProperty,Ase=Object.getOwnPropertyDescriptor,Rse=Object.getOwnPropertyNames,Pse=Object.prototype.hasOwnProperty,MP=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Rse(e))!Pse.call(o,n)&&n!==t&&Mse(o,n,{get:()=>e[n],enumerable:!(i=Ase(e,n))||i.enumerable});return o},Ose=(o,e,t)=>(MP(o,e,"default"),t&&MP(t,e,"default")),Pp={};Ose(Pp,lb);var c8={},iL={},d8=class{constructor(o){Zt(this,"_languageId");Zt(this,"_loadingTriggered");Zt(this,"_lazyLoadPromise");Zt(this,"_lazyLoadPromiseResolve");Zt(this,"_lazyLoadPromiseReject");this._languageId=o,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((e,t)=>{this._lazyLoadPromiseResolve=e,this._lazyLoadPromiseReject=t})}static getOrCreate(o){return iL[o]||(iL[o]=new d8(o)),iL[o]}load(){return this._loadingTriggered||(this._loadingTriggered=!0,c8[this._languageId].loader().then(o=>this._lazyLoadPromiseResolve(o),o=>this._lazyLoadPromiseReject(o))),this._lazyLoadPromise}};function be(o){const e=o.id;c8[e]=o,Pp.languages.register(o);const t=d8.getOrCreate(e);Pp.languages.registerTokensProviderFactory(e,{create:async()=>(await t.load()).language}),Pp.languages.onLanguage(e,async()=>{const i=await t.load();Pp.languages.setLanguageConfiguration(e,i.conf)})}be({id:"abap",extensions:[".abap"],aliases:["abap","ABAP"],loader:()=>me(()=>import("./abap-5fd096f7.js"),[])});be({id:"apex",extensions:[".cls"],aliases:["Apex","apex"],mimetypes:["text/x-apex-source","text/x-apex"],loader:()=>me(()=>import("./apex-0b2071d4.js"),[])});be({id:"azcli",extensions:[".azcli"],aliases:["Azure CLI","azcli"],loader:()=>me(()=>import("./azcli-190356b5.js"),[])});be({id:"bat",extensions:[".bat",".cmd"],aliases:["Batch","bat"],loader:()=>me(()=>import("./bat-8a29f90f.js"),[])});be({id:"bicep",extensions:[".bicep"],aliases:["Bicep"],loader:()=>me(()=>import("./bicep-2030a195.js"),[])});be({id:"cameligo",extensions:[".mligo"],aliases:["Cameligo"],loader:()=>me(()=>import("./cameligo-e329b2f4.js"),[])});be({id:"clojure",extensions:[".clj",".cljs",".cljc",".edn"],aliases:["clojure","Clojure"],loader:()=>me(()=>import("./clojure-bbb8ba32.js"),[])});be({id:"coffeescript",extensions:[".coffee"],aliases:["CoffeeScript","coffeescript","coffee"],mimetypes:["text/x-coffeescript","text/coffeescript"],loader:()=>me(()=>import("./coffee-acac9422.js"),[])});be({id:"c",extensions:[".c",".h"],aliases:["C","c"],loader:()=>me(()=>import("./cpp-9d6a58b0.js"),[])});be({id:"cpp",extensions:[".cpp",".cc",".cxx",".hpp",".hh",".hxx"],aliases:["C++","Cpp","cpp"],loader:()=>me(()=>import("./cpp-9d6a58b0.js"),[])});be({id:"csharp",extensions:[".cs",".csx",".cake"],aliases:["C#","csharp"],loader:()=>me(()=>import("./csharp-91d9f9d8.js"),[])});be({id:"csp",extensions:[],aliases:["CSP","csp"],loader:()=>me(()=>import("./csp-763000e4.js"),[])});be({id:"css",extensions:[".css"],aliases:["CSS","css"],mimetypes:["text/css"],loader:()=>me(()=>import("./css-d9a05d7d.js"),[])});be({id:"cypher",extensions:[".cypher",".cyp"],aliases:["Cypher","OpenCypher"],loader:()=>me(()=>import("./cypher-cba4566f.js"),[])});be({id:"dart",extensions:[".dart"],aliases:["Dart","dart"],mimetypes:["text/x-dart-source","text/x-dart"],loader:()=>me(()=>import("./dart-30a82b35.js"),[])});be({id:"dockerfile",extensions:[".dockerfile"],filenames:["Dockerfile"],aliases:["Dockerfile"],loader:()=>me(()=>import("./dockerfile-2a29d833.js"),[])});be({id:"ecl",extensions:[".ecl"],aliases:["ECL","Ecl","ecl"],loader:()=>me(()=>import("./ecl-c14b226e.js"),[])});be({id:"elixir",extensions:[".ex",".exs"],aliases:["Elixir","elixir","ex"],loader:()=>me(()=>import("./elixir-4a1aad71.js"),[])});be({id:"flow9",extensions:[".flow"],aliases:["Flow9","Flow","flow9","flow"],loader:()=>me(()=>import("./flow9-38712bd3.js"),[])});be({id:"fsharp",extensions:[".fs",".fsi",".ml",".mli",".fsx",".fsscript"],aliases:["F#","FSharp","fsharp"],loader:()=>me(()=>import("./fsharp-71c17f08.js"),[])});be({id:"freemarker2",extensions:[".ftl",".ftlh",".ftlx"],aliases:["FreeMarker2","Apache FreeMarker2"],loader:()=>me(()=>import("./freemarker2-10ca9925.js"),["assets/freemarker2-10ca9925.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"]).then(o=>o.TagAutoInterpolationDollar)});be({id:"freemarker2.tag-angle.interpolation-dollar",aliases:["FreeMarker2 (Angle/Dollar)","Apache FreeMarker2 (Angle/Dollar)"],loader:()=>me(()=>import("./freemarker2-10ca9925.js"),["assets/freemarker2-10ca9925.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"]).then(o=>o.TagAngleInterpolationDollar)});be({id:"freemarker2.tag-bracket.interpolation-dollar",aliases:["FreeMarker2 (Bracket/Dollar)","Apache FreeMarker2 (Bracket/Dollar)"],loader:()=>me(()=>import("./freemarker2-10ca9925.js"),["assets/freemarker2-10ca9925.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"]).then(o=>o.TagBracketInterpolationDollar)});be({id:"freemarker2.tag-angle.interpolation-bracket",aliases:["FreeMarker2 (Angle/Bracket)","Apache FreeMarker2 (Angle/Bracket)"],loader:()=>me(()=>import("./freemarker2-10ca9925.js"),["assets/freemarker2-10ca9925.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"]).then(o=>o.TagAngleInterpolationBracket)});be({id:"freemarker2.tag-bracket.interpolation-bracket",aliases:["FreeMarker2 (Bracket/Bracket)","Apache FreeMarker2 (Bracket/Bracket)"],loader:()=>me(()=>import("./freemarker2-10ca9925.js"),["assets/freemarker2-10ca9925.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"]).then(o=>o.TagBracketInterpolationBracket)});be({id:"freemarker2.tag-auto.interpolation-dollar",aliases:["FreeMarker2 (Auto/Dollar)","Apache FreeMarker2 (Auto/Dollar)"],loader:()=>me(()=>import("./freemarker2-10ca9925.js"),["assets/freemarker2-10ca9925.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"]).then(o=>o.TagAutoInterpolationDollar)});be({id:"freemarker2.tag-auto.interpolation-bracket",aliases:["FreeMarker2 (Auto/Bracket)","Apache FreeMarker2 (Auto/Bracket)"],loader:()=>me(()=>import("./freemarker2-10ca9925.js"),["assets/freemarker2-10ca9925.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"]).then(o=>o.TagAutoInterpolationBracket)});be({id:"go",extensions:[".go"],aliases:["Go"],loader:()=>me(()=>import("./go-81a01631.js"),[])});be({id:"graphql",extensions:[".graphql",".gql"],aliases:["GraphQL","graphql","gql"],mimetypes:["application/graphql"],loader:()=>me(()=>import("./graphql-4b2f9989.js"),[])});be({id:"handlebars",extensions:[".handlebars",".hbs"],aliases:["Handlebars","handlebars","hbs"],mimetypes:["text/x-handlebars-template"],loader:()=>me(()=>import("./handlebars-2b61f8e8.js"),["assets/handlebars-2b61f8e8.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"])});be({id:"hcl",extensions:[".tf",".tfvars",".hcl"],aliases:["Terraform","tf","HCL","hcl"],loader:()=>me(()=>import("./hcl-f5583a08.js"),[])});be({id:"html",extensions:[".html",".htm",".shtml",".xhtml",".mdoc",".jsp",".asp",".aspx",".jshtm"],aliases:["HTML","htm","html","xhtml"],mimetypes:["text/html","text/x-jshtm","text/template","text/ng-template"],loader:()=>me(()=>import("./html-e129a820.js"),["assets/html-e129a820.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"])});be({id:"ini",extensions:[".ini",".properties",".gitconfig"],filenames:["config",".gitattributes",".gitconfig",".editorconfig"],aliases:["Ini","ini"],loader:()=>me(()=>import("./ini-93327bda.js"),[])});be({id:"java",extensions:[".java",".jav"],aliases:["Java","java"],mimetypes:["text/x-java-source","text/x-java"],loader:()=>me(()=>import("./java-594fa86f.js"),[])});be({id:"javascript",extensions:[".js",".es6",".jsx",".mjs",".cjs"],firstLine:"^#!.*\\bnode",filenames:["jakefile"],aliases:["JavaScript","javascript","js"],mimetypes:["text/javascript"],loader:()=>me(()=>import("./javascript-36de10d3.js"),["assets/javascript-36de10d3.js","assets/typescript-7530e583.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"])});be({id:"julia",extensions:[".jl"],aliases:["julia","Julia"],loader:()=>me(()=>import("./julia-0007448b.js"),[])});be({id:"kotlin",extensions:[".kt",".kts"],aliases:["Kotlin","kotlin"],mimetypes:["text/x-kotlin-source","text/x-kotlin"],loader:()=>me(()=>import("./kotlin-d96111b8.js"),[])});be({id:"less",extensions:[".less"],aliases:["Less","less"],mimetypes:["text/x-less","text/less"],loader:()=>me(()=>import("./less-35bca26e.js"),[])});be({id:"lexon",extensions:[".lex"],aliases:["Lexon"],loader:()=>me(()=>import("./lexon-9e065f08.js"),[])});be({id:"lua",extensions:[".lua"],aliases:["Lua","lua"],loader:()=>me(()=>import("./lua-f5c339e1.js"),[])});be({id:"liquid",extensions:[".liquid",".html.liquid"],aliases:["Liquid","liquid"],mimetypes:["application/liquid"],loader:()=>me(()=>import("./liquid-822eb382.js"),["assets/liquid-822eb382.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"])});be({id:"m3",extensions:[".m3",".i3",".mg",".ig"],aliases:["Modula-3","Modula3","modula3","m3"],loader:()=>me(()=>import("./m3-f481ba01.js"),[])});be({id:"markdown",extensions:[".md",".markdown",".mdown",".mkdn",".mkd",".mdwn",".mdtxt",".mdtext"],aliases:["Markdown","markdown"],loader:()=>me(()=>import("./markdown-9daa6125.js"),[])});be({id:"mips",extensions:[".s"],aliases:["MIPS","MIPS-V"],mimetypes:["text/x-mips","text/mips","text/plaintext"],loader:()=>me(()=>import("./mips-9083c690.js"),[])});be({id:"msdax",extensions:[".dax",".msdax"],aliases:["DAX","MSDAX"],loader:()=>me(()=>import("./msdax-407492d3.js"),[])});be({id:"mysql",extensions:[],aliases:["MySQL","mysql"],loader:()=>me(()=>import("./mysql-58db6cae.js"),[])});be({id:"objective-c",extensions:[".m"],aliases:["Objective-C"],loader:()=>me(()=>import("./objective-c-af4e0f63.js"),[])});be({id:"pascal",extensions:[".pas",".p",".pp"],aliases:["Pascal","pas"],mimetypes:["text/x-pascal-source","text/x-pascal"],loader:()=>me(()=>import("./pascal-63b284c9.js"),[])});be({id:"pascaligo",extensions:[".ligo"],aliases:["Pascaligo","ligo"],loader:()=>me(()=>import("./pascaligo-2b3d65f2.js"),[])});be({id:"perl",extensions:[".pl"],aliases:["Perl","pl"],loader:()=>me(()=>import("./perl-b4e06d57.js"),[])});be({id:"pgsql",extensions:[],aliases:["PostgreSQL","postgres","pg","postgre"],loader:()=>me(()=>import("./pgsql-7382e5ae.js"),[])});be({id:"php",extensions:[".php",".php4",".php5",".phtml",".ctp"],aliases:["PHP","php"],mimetypes:["application/x-php"],loader:()=>me(()=>import("./php-135114d3.js"),[])});be({id:"pla",extensions:[".pla"],loader:()=>me(()=>import("./pla-745ec9ce.js"),[])});be({id:"postiats",extensions:[".dats",".sats",".hats"],aliases:["ATS","ATS/Postiats"],loader:()=>me(()=>import("./postiats-a3fe4f4c.js"),[])});be({id:"powerquery",extensions:[".pq",".pqm"],aliases:["PQ","M","Power Query","Power Query M"],loader:()=>me(()=>import("./powerquery-47747fc0.js"),[])});be({id:"powershell",extensions:[".ps1",".psm1",".psd1"],aliases:["PowerShell","powershell","ps","ps1"],loader:()=>me(()=>import("./powershell-ff3577bc.js"),[])});be({id:"proto",extensions:[".proto"],aliases:["protobuf","Protocol Buffers"],loader:()=>me(()=>import("./protobuf-6deb4a02.js"),[])});be({id:"pug",extensions:[".jade",".pug"],aliases:["Pug","Jade","jade"],loader:()=>me(()=>import("./pug-2dd33d7b.js"),[])});be({id:"python",extensions:[".py",".rpy",".pyw",".cpy",".gyp",".gypi"],aliases:["Python","py"],firstLine:"^#!/.*\\bpython[0-9.-]*\\b",loader:()=>me(()=>import("./python-ec4c56f8.js"),["assets/python-ec4c56f8.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"])});be({id:"qsharp",extensions:[".qs"],aliases:["Q#","qsharp"],loader:()=>me(()=>import("./qsharp-52d3483a.js"),[])});be({id:"r",extensions:[".r",".rhistory",".rmd",".rprofile",".rt"],aliases:["R","r"],loader:()=>me(()=>import("./r-419d1932.js"),[])});be({id:"razor",extensions:[".cshtml"],aliases:["Razor","razor"],mimetypes:["text/x-cshtml"],loader:()=>me(()=>import("./razor-661cced5.js"),["assets/razor-661cced5.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"])});be({id:"redis",extensions:[".redis"],aliases:["redis"],loader:()=>me(()=>import("./redis-48ffdd95.js"),[])});be({id:"redshift",extensions:[],aliases:["Redshift","redshift"],loader:()=>me(()=>import("./redshift-6f3b6438.js"),[])});be({id:"restructuredtext",extensions:[".rst"],aliases:["reStructuredText","restructuredtext"],loader:()=>me(()=>import("./restructuredtext-2b6de06c.js"),[])});be({id:"ruby",extensions:[".rb",".rbx",".rjs",".gemspec",".pp"],filenames:["rakefile","Gemfile"],aliases:["Ruby","rb"],loader:()=>me(()=>import("./ruby-3203ad6f.js"),[])});be({id:"rust",extensions:[".rs",".rlib"],aliases:["Rust","rust"],loader:()=>me(()=>import("./rust-db058ad8.js"),[])});be({id:"sb",extensions:[".sb"],aliases:["Small Basic","sb"],loader:()=>me(()=>import("./sb-2e6261d9.js"),[])});be({id:"scala",extensions:[".scala",".sc",".sbt"],aliases:["Scala","scala","SBT","Sbt","sbt","Dotty","dotty"],mimetypes:["text/x-scala-source","text/x-scala","text/x-sbt","text/x-dotty"],loader:()=>me(()=>import("./scala-9479f128.js"),[])});be({id:"scheme",extensions:[".scm",".ss",".sch",".rkt"],aliases:["scheme","Scheme"],loader:()=>me(()=>import("./scheme-eff94c99.js"),[])});be({id:"scss",extensions:[".scss"],aliases:["Sass","sass","scss"],mimetypes:["text/x-scss","text/scss"],loader:()=>me(()=>import("./scss-47fd4d15.js"),[])});be({id:"shell",extensions:[".sh",".bash"],aliases:["Shell","sh"],loader:()=>me(()=>import("./shell-6ce95083.js"),[])});be({id:"sol",extensions:[".sol"],aliases:["sol","solidity","Solidity"],loader:()=>me(()=>import("./solidity-05bce190.js"),[])});be({id:"aes",extensions:[".aes"],aliases:["aes","sophia","Sophia"],loader:()=>me(()=>import("./sophia-0df3b455.js"),[])});be({id:"sparql",extensions:[".rq"],aliases:["sparql","SPARQL"],loader:()=>me(()=>import("./sparql-82e631b6.js"),[])});be({id:"sql",extensions:[".sql"],aliases:["SQL"],loader:()=>me(()=>import("./sql-ba093187.js"),[])});be({id:"st",extensions:[".st",".iecst",".iecplc",".lc3lib"],aliases:["StructuredText","scl","stl"],loader:()=>me(()=>import("./st-791b0ff5.js"),[])});be({id:"swift",aliases:["Swift","swift"],extensions:[".swift"],mimetypes:["text/swift"],loader:()=>me(()=>import("./swift-4e23775b.js"),[])});be({id:"systemverilog",extensions:[".sv",".svh"],aliases:["SV","sv","SystemVerilog","systemverilog"],loader:()=>me(()=>import("./systemverilog-ad58bd79.js"),[])});be({id:"verilog",extensions:[".v",".vh"],aliases:["V","v","Verilog","verilog"],loader:()=>me(()=>import("./systemverilog-ad58bd79.js"),[])});be({id:"tcl",extensions:[".tcl"],aliases:["tcl","Tcl","tcltk","TclTk","tcl/tk","Tcl/Tk"],loader:()=>me(()=>import("./tcl-ef3a1af5.js"),[])});be({id:"twig",extensions:[".twig"],aliases:["Twig","twig"],mimetypes:["text/x-twig"],loader:()=>me(()=>import("./twig-a6c466d1.js"),[])});be({id:"typescript",extensions:[".ts",".tsx"],aliases:["TypeScript","ts","typescript"],mimetypes:["text/typescript"],loader:()=>me(()=>import("./typescript-7530e583.js"),["assets/typescript-7530e583.js","assets/index-f62f2ff2.js","assets/index-dbf96a40.css"])});be({id:"vb",extensions:[".vb"],aliases:["Visual Basic","vb"],loader:()=>me(()=>import("./vb-dc8b6e66.js"),[])});be({id:"xml",extensions:[".xml",".dtd",".ascx",".csproj",".config",".props",".targets",".wxi",".wxl",".wxs",".xaml",".svg",".svgz",".opf",".xsl"],firstLine:"(\\<\\?xml.*)|(\\